simpo-component-library 3.6.936 → 3.6.937
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/ecommerce/sections/book-appointment/book-appointment.component.mjs +270 -0
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +15 -164
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +15 -162
- package/esm2022/lib/elements/booking-cart-groups/booking-cart-groups.component.mjs +10 -12
- package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +19 -23
- package/esm2022/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.mjs +9 -72
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/simpo-component-library.mjs +4933 -5050
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/ecommerce/sections/book-appointment/book-appointment.component.d.ts +77 -0
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +8 -15
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +7 -17
- package/lib/elements/booking-cart-groups/booking-cart-groups.component.d.ts +4 -2
- package/lib/elements/schedule-video-call/schedule-video-call.component.d.ts +3 -1
- package/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.d.ts +0 -4
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/simpo-component-library-3.6.937.tgz +0 -0
- package/simpo-component-library-3.6.936.tgz +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { Component, Optional } from '@angular/core';
|
|
3
3
|
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
-
import { AppointmentBookingComponent } from '../../sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component';
|
|
5
4
|
import { AuthenticationRequiredComponent } from '../../ecommerce/sections/authentication-required/authentication-required.component';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "../../services/booking-product-cart.service";
|
|
8
7
|
import * as i2 from "../../services/storage.service";
|
|
9
8
|
import * as i3 from "@angular/material/dialog";
|
|
10
|
-
import * as i4 from "@angular/
|
|
11
|
-
import * as i5 from "@angular/
|
|
9
|
+
import * as i4 from "@angular/router";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "@angular/material/icon";
|
|
12
12
|
/**
|
|
13
13
|
* Shared "grouped booking cart" view — one section per non-empty mode (Home Visit / Video Call),
|
|
14
14
|
* each with its own Continue Booking action, since a booking can only ever be one mode. Used
|
|
@@ -17,10 +17,11 @@ import * as i5 from "@angular/material/icon";
|
|
|
17
17
|
* Booking Cart tab, so the two surfaces never show different data.
|
|
18
18
|
*/
|
|
19
19
|
export class BookingCartGroupsComponent {
|
|
20
|
-
constructor(bookingProductCartService, storageService, matDialog, dialogRef) {
|
|
20
|
+
constructor(bookingProductCartService, storageService, matDialog, router, dialogRef) {
|
|
21
21
|
this.bookingProductCartService = bookingProductCartService;
|
|
22
22
|
this.storageService = storageService;
|
|
23
23
|
this.matDialog = matDialog;
|
|
24
|
+
this.router = router;
|
|
24
25
|
this.dialogRef = dialogRef;
|
|
25
26
|
this.groups = [];
|
|
26
27
|
this.loading = true;
|
|
@@ -65,18 +66,15 @@ export class BookingCartGroupsComponent {
|
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
67
68
|
this.close();
|
|
68
|
-
|
|
69
|
-
width: '100vw', height: '100vh', maxWidth: '100vw', panelClass: 'appointment-form'
|
|
70
|
-
});
|
|
71
|
-
dialogRef.componentInstance.data = { content: { mode: group.mode } };
|
|
69
|
+
this.router.navigate(['/home-appointment'], { queryParams: { mode: group.mode } });
|
|
72
70
|
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, deps: [{ token: i1.BookingProductCartService }, { token: i2.StorageServiceService }, { token: i3.MatDialog }, { token: i3.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookingCartGroupsComponent, isStandalone: true, selector: "simpo-booking-cart-groups", ngImport: i0, template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, deps: [{ token: i1.BookingProductCartService }, { token: i2.StorageServiceService }, { token: i3.MatDialog }, { token: i4.Router }, { token: i3.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookingCartGroupsComponent, isStandalone: true, selector: "simpo-booking-cart-groups", ngImport: i0, template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
75
73
|
}
|
|
76
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, decorators: [{
|
|
77
75
|
type: Component,
|
|
78
76
|
args: [{ selector: 'simpo-booking-cart-groups', standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"] }]
|
|
79
|
-
}], ctorParameters: () => [{ type: i1.BookingProductCartService }, { type: i2.StorageServiceService }, { type: i3.MatDialog }, { type: i3.MatDialogRef, decorators: [{
|
|
77
|
+
}], ctorParameters: () => [{ type: i1.BookingProductCartService }, { type: i2.StorageServiceService }, { type: i3.MatDialog }, { type: i4.Router }, { type: i3.MatDialogRef, decorators: [{
|
|
80
78
|
type: Optional
|
|
81
79
|
}] }] });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVHQUF1RyxDQUFDO0FBQ3BKLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7O0FBUXJJOzs7Ozs7R0FNRztBQVFILE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFDbUIseUJBQW9ELEVBQ3BELGNBQXFDLEVBQ3JDLFNBQW9CLEVBQ1IsU0FBbUQ7UUFIL0QsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNSLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBUGxGLFdBQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBWSxJQUFJLENBQUM7SUFPcEIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUMvQyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ3RDLElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBdUIsRUFBRSxJQUFrQjtRQUMxRCxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUF1QjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDckYsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNqRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCO1NBQ25GLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFTLENBQUM7SUFDOUUsQ0FBQzsrR0E1RFUsMEJBQTBCO21HQUExQiwwQkFBMEIscUZDOUJ2QywyMERBb0NBLDRwRURWWSxZQUFZLDZWQUFFLGFBQWE7OzRGQUkxQiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OzBCQVluQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSwgQm9va2luZ0NhcnRNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYm9va2luZy1wcm9kdWN0LWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xuaW1wb3J0IHsgQXBwb2ludG1lbnRCb29raW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VjdGlvbnMvYXBwb2ludG1lbnQtZm9ybS9hcHBvaW50bWVudC1ib29raW5nL2FwcG9pbnRtZW50LWJvb2tpbmcvYXBwb2ludG1lbnQtYm9va2luZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zZWN0aW9ucy9hdXRoZW50aWNhdGlvbi1yZXF1aXJlZC9hdXRoZW50aWNhdGlvbi1yZXF1aXJlZC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQm9va2luZ0NhcnRHcm91cCB7XG4gIG1vZGU6IEJvb2tpbmdDYXJ0TW9kZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaXRlbXM6IE9yZGVyZWRJdGVtc1tdO1xufVxuXG4vKipcbiAqIFNoYXJlZCBcImdyb3VwZWQgYm9va2luZyBjYXJ0XCIgdmlldyDigJQgb25lIHNlY3Rpb24gcGVyIG5vbi1lbXB0eSBtb2RlIChIb21lIFZpc2l0IC8gVmlkZW8gQ2FsbCksXG4gKiBlYWNoIHdpdGggaXRzIG93biBDb250aW51ZSBCb29raW5nIGFjdGlvbiwgc2luY2UgYSBib29raW5nIGNhbiBvbmx5IGV2ZXIgYmUgb25lIG1vZGUuIFVzZWRcbiAqIGJvdGggYXMgdGhlIGhlYWRlcidzIEJvb2tpbmdzIGRyYXdlciAob3BlbmVkIHZpYSBNYXREaWFsb2csIHBhbmVsQ2xhc3MgJ3NpZGVwYW5lbC1jbGFzcycsIHNhbWVcbiAqIGNvbnZlbnRpb24gYXMgdGhlIHJlc3Qgb2YgdGhpcyBhcHAncyBzaWRlIHBhbmVscykgYW5kIGVtYmVkZGVkIGlubGluZSBpbiB0aGUgQ2FydCBwYWdlJ3NcbiAqIEJvb2tpbmcgQ2FydCB0YWIsIHNvIHRoZSB0d28gc3VyZmFjZXMgbmV2ZXIgc2hvdyBkaWZmZXJlbnQgZGF0YS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tYm9va2luZy1jYXJ0LWdyb3VwcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ib29raW5nLWNhcnQtZ3JvdXBzLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tpbmdDYXJ0R3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JvdXBzOiBCb29raW5nQ2FydEdyb3VwW10gPSBbXTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlOiBCb29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Qm9va2luZ0NhcnRHcm91cHNDb21wb25lbnQ+LFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IFtob21lVmlzaXQsIHZpZGVvQ2FsbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuZ2V0SXRlbXMoJ0hPTUVfVklTSVQnKSxcbiAgICAgIHRoaXMuYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZS5nZXRJdGVtcygnVklERU9fQ0FMTCcpLFxuICAgIF0pO1xuICAgIGNvbnN0IGdyb3VwczogQm9va2luZ0NhcnRHcm91cFtdID0gW107XG4gICAgaWYgKGhvbWVWaXNpdC5sZW5ndGgpIGdyb3Vwcy5wdXNoKHsgbW9kZTogJ0hPTUVfVklTSVQnLCB0aXRsZTogJ0hvbWUgVmlzaXQnLCBpdGVtczogaG9tZVZpc2l0IH0pO1xuICAgIGlmICh2aWRlb0NhbGwubGVuZ3RoKSBncm91cHMucHVzaCh7IG1vZGU6ICdWSURFT19DQUxMJywgdGl0bGU6ICdWaWRlbyBDYWxsJywgaXRlbXM6IHZpZGVvQ2FsbCB9KTtcbiAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGdldCBkaWFsb2dSZWZQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGlhbG9nUmVmO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlSXRlbShncm91cDogQm9va2luZ0NhcnRHcm91cCwgaXRlbTogT3JkZXJlZEl0ZW1zKSB7XG4gICAgYXdhaXQgdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLnJlbW92ZUl0ZW0oZ3JvdXAubW9kZSwgaXRlbS52YXJpZW50SWQpO1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gIH1cblxuICBicm93c2UoKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgY29udGludWVCb29raW5nKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwKSB7XG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihBdXRoZW50aWNhdGlvblJlcXVpcmVkQ29tcG9uZW50LCB7IHBhbmVsQ2xhc3M6ICdhdXRoZW50aWNhdGUnIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihBcHBvaW50bWVudEJvb2tpbmdDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnMTAwdncnLCBoZWlnaHQ6ICcxMDB2aCcsIG1heFdpZHRoOiAnMTAwdncnLCBwYW5lbENsYXNzOiAnYXBwb2ludG1lbnQtZm9ybSdcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHsgY29udGVudDogeyBtb2RlOiBncm91cC5tb2RlIH0gfSBhcyBhbnk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib29raW5nLWNhcnQtZ3JvdXBzXCIgW2NsYXNzLmJjZy1wYW5lbF09XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiY2ctaGVhZGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImJjZy10aXRsZVwiPllvdXIgQm9va2luZ3M8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJiY2ctYm9keVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1ncm91cC1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1kb3RcIiBbbmdDbGFzc109XCJncm91cC5tb2RlID09PSAnSE9NRV9WSVNJVCcgPyAnYmNnLWRvdC1ob21lJyA6ICdiY2ctZG90LXZpZGVvJ1wiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1ncm91cC10aXRsZVwiPnt7IGdyb3VwLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmNnLWdyb3VwLW1ldGFcIj57eyBncm91cC5pdGVtcy5sZW5ndGggfX0gaXRlbXt7IGdyb3VwLml0ZW1zLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXNcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiYmNnLWl0ZW0taW1nXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBbYWx0XT1cIml0ZW0uaXRlbU5hbWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctaXRlbS1pbWcgYmNnLWl0ZW0taW1nLWVtcHR5XCIgKm5nSWY9XCIhaXRlbS5pbWdVcmxcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW0tbmFtZVwiPnt7IGl0ZW0uaXRlbU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWl0ZW0tcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0oZ3JvdXAsIGl0ZW0pXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJjZy1jb250aW51ZVwiIChjbGljayk9XCJjb250aW51ZUJvb2tpbmcoZ3JvdXApXCI+Q29udGludWUgQm9va2luZzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5XCIgKm5nSWY9XCJpc0VtcHR5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJiY2ctZW1wdHktaWNvblwiPmV2ZW50X2F2YWlsYWJsZTwvbWF0LWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5LXRpdGxlXCI+WW91IGhhdmVuJ3QgYWRkZWQgYW55dGhpbmcgeWV0LjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy1lbXB0eS1zdWJcIj5UcnkgYSBwaWVjZSBhdCBob21lIG9yIG9uIGEgdmlkZW8gY2FsbCDigJQgYWRkIGl0IGhlcmUgZmlyc3QsIGJvb2sgd2hlbiB5b3UncmUgcmVhZHkuPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWJyb3dzZVwiIChjbGljayk9XCJicm93c2UoKVwiPkJyb3dzZSBjb2xsZWN0aW9uczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTXZELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7OztBQVFySTs7Ozs7O0dBTUc7QUFRSCxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQ21CLHlCQUFvRCxFQUNwRCxjQUFxQyxFQUNyQyxTQUFvQixFQUNwQixNQUFjLEVBQ0YsU0FBbUQ7UUFKL0QsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ0YsY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFSbEYsV0FBTSxHQUF1QixFQUFFLENBQUM7UUFDaEMsWUFBTyxHQUFZLElBQUksQ0FBQztJQVFwQixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQy9DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3JELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1NBQ3RELENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUF1QixFQUFFLENBQUM7UUFDdEMsSUFBSSxTQUFTLENBQUMsTUFBTTtZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDakcsSUFBSSxTQUFTLENBQUMsTUFBTTtZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUF1QixFQUFFLElBQWtCO1FBQzFELE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXVCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUNyRixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7K0dBMURVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHFGQzlCdkMsMjBEQW9DQSw0cEVEVlksWUFBWSw2VkFBRSxhQUFhOzs0RkFJMUIsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDOzswQkFhbkMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCb29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLCBCb29raW5nQ2FydE1vZGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ib29raW5nLXByb2R1Y3QtY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblJlcXVpcmVkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3NlY3Rpb25zL2F1dGhlbnRpY2F0aW9uLXJlcXVpcmVkL2F1dGhlbnRpY2F0aW9uLXJlcXVpcmVkLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBCb29raW5nQ2FydEdyb3VwIHtcbiAgbW9kZTogQm9va2luZ0NhcnRNb2RlO1xuICB0aXRsZTogc3RyaW5nO1xuICBpdGVtczogT3JkZXJlZEl0ZW1zW107XG59XG5cbi8qKlxuICogU2hhcmVkIFwiZ3JvdXBlZCBib29raW5nIGNhcnRcIiB2aWV3IOKAlCBvbmUgc2VjdGlvbiBwZXIgbm9uLWVtcHR5IG1vZGUgKEhvbWUgVmlzaXQgLyBWaWRlbyBDYWxsKSxcbiAqIGVhY2ggd2l0aCBpdHMgb3duIENvbnRpbnVlIEJvb2tpbmcgYWN0aW9uLCBzaW5jZSBhIGJvb2tpbmcgY2FuIG9ubHkgZXZlciBiZSBvbmUgbW9kZS4gVXNlZFxuICogYm90aCBhcyB0aGUgaGVhZGVyJ3MgQm9va2luZ3MgZHJhd2VyIChvcGVuZWQgdmlhIE1hdERpYWxvZywgcGFuZWxDbGFzcyAnc2lkZXBhbmVsLWNsYXNzJywgc2FtZVxuICogY29udmVudGlvbiBhcyB0aGUgcmVzdCBvZiB0aGlzIGFwcCdzIHNpZGUgcGFuZWxzKSBhbmQgZW1iZWRkZWQgaW5saW5lIGluIHRoZSBDYXJ0IHBhZ2Unc1xuICogQm9va2luZyBDYXJ0IHRhYiwgc28gdGhlIHR3byBzdXJmYWNlcyBuZXZlciBzaG93IGRpZmZlcmVudCBkYXRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby1ib29raW5nLWNhcnQtZ3JvdXBzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9ib29raW5nLWNhcnQtZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Jvb2tpbmctY2FydC1ncm91cHMuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgQm9va2luZ0NhcnRHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBncm91cHM6IEJvb2tpbmdDYXJ0R3JvdXBbXSA9IFtdO1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2U6IEJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEJvb2tpbmdDYXJ0R3JvdXBzQ29tcG9uZW50PixcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBbaG9tZVZpc2l0LCB2aWRlb0NhbGxdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLmdldEl0ZW1zKCdIT01FX1ZJU0lUJyksXG4gICAgICB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuZ2V0SXRlbXMoJ1ZJREVPX0NBTEwnKSxcbiAgICBdKTtcbiAgICBjb25zdCBncm91cHM6IEJvb2tpbmdDYXJ0R3JvdXBbXSA9IFtdO1xuICAgIGlmIChob21lVmlzaXQubGVuZ3RoKSBncm91cHMucHVzaCh7IG1vZGU6ICdIT01FX1ZJU0lUJywgdGl0bGU6ICdIb21lIFZpc2l0JywgaXRlbXM6IGhvbWVWaXNpdCB9KTtcbiAgICBpZiAodmlkZW9DYWxsLmxlbmd0aCkgZ3JvdXBzLnB1c2goeyBtb2RlOiAnVklERU9fQ0FMTCcsIHRpdGxlOiAnVmlkZW8gQ2FsbCcsIGl0ZW1zOiB2aWRlb0NhbGwgfSk7XG4gICAgdGhpcy5ncm91cHMgPSBncm91cHM7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubG9hZGluZyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBnZXQgZGlhbG9nUmVmUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ1JlZjtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZUl0ZW0oZ3JvdXA6IEJvb2tpbmdDYXJ0R3JvdXAsIGl0ZW06IE9yZGVyZWRJdGVtcykge1xuICAgIGF3YWl0IHRoaXMuYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZS5yZW1vdmVJdGVtKGdyb3VwLm1vZGUsIGl0ZW0udmFyaWVudElkKTtcbiAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgYnJvd3NlKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIGNvbnRpbnVlQm9va2luZyhncm91cDogQm9va2luZ0NhcnRHcm91cCkge1xuICAgIGlmICghdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnYXV0aGVudGljYXRlJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2hvbWUtYXBwb2ludG1lbnQnXSwgeyBxdWVyeVBhcmFtczogeyBtb2RlOiBncm91cC5tb2RlIH0gfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib29raW5nLWNhcnQtZ3JvdXBzXCIgW2NsYXNzLmJjZy1wYW5lbF09XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiY2ctaGVhZGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImJjZy10aXRsZVwiPllvdXIgQm9va2luZ3M8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJiY2ctYm9keVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1ncm91cC1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1kb3RcIiBbbmdDbGFzc109XCJncm91cC5tb2RlID09PSAnSE9NRV9WSVNJVCcgPyAnYmNnLWRvdC1ob21lJyA6ICdiY2ctZG90LXZpZGVvJ1wiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1ncm91cC10aXRsZVwiPnt7IGdyb3VwLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmNnLWdyb3VwLW1ldGFcIj57eyBncm91cC5pdGVtcy5sZW5ndGggfX0gaXRlbXt7IGdyb3VwLml0ZW1zLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXNcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiYmNnLWl0ZW0taW1nXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBbYWx0XT1cIml0ZW0uaXRlbU5hbWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctaXRlbS1pbWcgYmNnLWl0ZW0taW1nLWVtcHR5XCIgKm5nSWY9XCIhaXRlbS5pbWdVcmxcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW0tbmFtZVwiPnt7IGl0ZW0uaXRlbU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWl0ZW0tcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0oZ3JvdXAsIGl0ZW0pXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJjZy1jb250aW51ZVwiIChjbGljayk9XCJjb250aW51ZUJvb2tpbmcoZ3JvdXApXCI+Q29udGludWUgQm9va2luZzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5XCIgKm5nSWY9XCJpc0VtcHR5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJiY2ctZW1wdHktaWNvblwiPmV2ZW50X2F2YWlsYWJsZTwvbWF0LWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5LXRpdGxlXCI+WW91IGhhdmVuJ3QgYWRkZWQgYW55dGhpbmcgeWV0LjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy1lbXB0eS1zdWJcIj5UcnkgYSBwaWVjZSBhdCBob21lIG9yIG9uIGEgdmlkZW8gY2FsbCDigJQgYWRkIGl0IGhlcmUgZmlyc3QsIGJvb2sgd2hlbiB5b3UncmUgcmVhZHkuPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWJyb3dzZVwiIChjbGljayk9XCJicm93c2UoKVwiPkJyb3dzZSBjb2xsZWN0aW9uczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -6,19 +6,20 @@ import { FormsModule } from '@angular/forms';
|
|
|
6
6
|
import { MessageService } from 'primeng/api';
|
|
7
7
|
import { ColorDirective } from '../../directive/color.directive';
|
|
8
8
|
import { ToastModule } from 'primeng/toast';
|
|
9
|
-
import { AppointmentBookingComponent } from '../../sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component';
|
|
10
9
|
import * as i0 from "@angular/core";
|
|
11
10
|
import * as i1 from "@angular/material/dialog";
|
|
12
|
-
import * as i2 from "
|
|
13
|
-
import * as i3 from "
|
|
14
|
-
import * as i4 from "
|
|
15
|
-
import * as i5 from "@angular/
|
|
16
|
-
import * as i6 from "@angular/
|
|
17
|
-
import * as i7 from "
|
|
11
|
+
import * as i2 from "@angular/router";
|
|
12
|
+
import * as i3 from "primeng/api";
|
|
13
|
+
import * as i4 from "../../services/booking-product-cart.service";
|
|
14
|
+
import * as i5 from "@angular/common";
|
|
15
|
+
import * as i6 from "@angular/material/icon";
|
|
16
|
+
import * as i7 from "@angular/forms";
|
|
17
|
+
import * as i8 from "primeng/toast";
|
|
18
18
|
export class ScheduleVideoCallComponent {
|
|
19
|
-
constructor(dialogRef, matDialog, messageService, bookingProductCartService, responseData) {
|
|
19
|
+
constructor(dialogRef, matDialog, router, messageService, bookingProductCartService, responseData) {
|
|
20
20
|
this.dialogRef = dialogRef;
|
|
21
21
|
this.matDialog = matDialog;
|
|
22
|
+
this.router = router;
|
|
22
23
|
this.messageService = messageService;
|
|
23
24
|
this.bookingProductCartService = bookingProductCartService;
|
|
24
25
|
this.responseData = responseData;
|
|
@@ -178,18 +179,13 @@ export class ScheduleVideoCallComponent {
|
|
|
178
179
|
}
|
|
179
180
|
continueBooking() {
|
|
180
181
|
this.dialogRef.close();
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
height: '100vh',
|
|
188
|
-
maxWidth: '100vw',
|
|
189
|
-
panelClass: 'appointment-form'
|
|
182
|
+
this.router.navigate(['/home-appointment'], {
|
|
183
|
+
queryParams: {
|
|
184
|
+
mode: 'VIDEO_CALL',
|
|
185
|
+
prefillName: this.videoCallPayload.username,
|
|
186
|
+
prefillPhone: this.videoCallPayload.mobileNumber
|
|
187
|
+
}
|
|
190
188
|
});
|
|
191
|
-
dialogRef.componentInstance.data = { content: { mode: 'VIDEO_CALL' } };
|
|
192
|
-
dialogRef.componentInstance.prefillContact = { name: this.videoCallPayload.username, phoneNumber: this.videoCallPayload.mobileNumber };
|
|
193
189
|
}
|
|
194
190
|
selectedItems(item) {
|
|
195
191
|
item.selected = !item.selected;
|
|
@@ -200,14 +196,14 @@ export class ScheduleVideoCallComponent {
|
|
|
200
196
|
this.selectedProducts = this.selectedProducts.filter(selectedItem => selectedItem.itemName !== item.itemName);
|
|
201
197
|
}
|
|
202
198
|
}
|
|
203
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScheduleVideoCallComponent, deps: [{ token: i1.MatDialogRef }, { token: i1.MatDialog }, { token: i2.
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScheduleVideoCallComponent, isStandalone: true, selector: "simpo-schedule-video-call", providers: [MessageService], ngImport: i0, template: "<section class=\"main-section\">\r\n <p-toast key=\"Video Call Schedule\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\" class=\"bottom-right\" />\r\n <div class=\"header\">\r\n <div class=\"header-text\">See it Live on Video Call</div>\r\n <mat-icon (click)=\"goBack()\">close</mat-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"selection-header\">\r\n <h2 class=\"selection-title\">Choose Designs for Live Video Call</h2>\r\n <span class=\"selection-counter\">{{selectedProducts.length}}/{{responseData?.orderItems?.length ?\r\n responseData.orderItems.length : 0}}</span>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"product-card col-md-6 col-12\" *ngFor=\"let data of orderedItems; let i = index\">\r\n <img [src]=\"data?.imgUrl\" alt=\"product_img\">\r\n <input type=\"checkbox\" [checked]=\"data.selected\" (click)=\"selectedItems(data)\">\r\n <div class=\"product-price\">\u20B9{{data?.discountedPrice ? data?.discountedPrice : 'N/A'}}</div>\r\n <div class=\"product-name\">{{data?.itemName ? data?.itemName : 'N/A'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <button (click)=\"openScheduleCall(dialogBox)\">Schedule video call</button>\r\n </div>\r\n <ng-template #dialogBox>\r\n <div class=\"modal-content\">\r\n <div class=\"schedule-header w-100 d-flex align-items-center justify-content-end p-2\">\r\n <mat-icon (click)=\"closeDialog()\"\r\n class=\"cursor-pointer d-flex align-items-center justify-content-center f-18\">close</mat-icon>\r\n </div>\r\n <div class=\"heading-video w-100 py-2 text-center\">Live Video call at your convenience!</div>\r\n <div class=\"modal-body h-100 p-0\">\r\n <div class=\"row h-100 w-100 mt-3 video-call-container\">\r\n <div class=\"col-6\" *ngIf=\"!isMobile\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/897651c1751980487170Vdo Call.gif\" alt=\"\"\r\n class=\"w-100\">\r\n </div>\r\n <div class=\"col-6 position-relative h-100 call-details width-100\">\r\n <!-- Name Input with Validation -->\r\n <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.username\">\r\n <input type=\"text\" placeholder=\"Enter Name*\" [(ngModel)]=\"videoCallPayload.username\"\r\n (input)=\"onInputChange('username')\">\r\n </div>\r\n\r\n <!-- <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.email\">\r\n <input type=\"email\" placeholder=\"Enter Email*\" [(ngModel)]=\"videoCallPayload.email\"\r\n (input)=\"onInputChange('email')\">\r\n </div> -->\r\n\r\n <!-- Mobile Number Input with Validation -->\r\n <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.mobileNumber\">\r\n <div class=\"sub-text-call\">IN +91</div>\r\n <input type=\"number\" placeholder=\"Enter Mobile*\" [(ngModel)]=\"videoCallPayload.mobileNumber\"\r\n (input)=\"onInputChange('mobileNumber')\" (keydown.arrowUp)=\"$event.preventDefault()\"\r\n (keydown.arrowDown)=\"$event.preventDefault()\" (wheel)=\"$event.preventDefault()\">\r\n </div>\r\n\r\n\r\n <!-- Pincode Input with Validation -->\r\n <!-- <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.pincode\">\r\n <div class=\"sub-text-call d-flex justify-content-center w-12 border-unset\">\r\n <mat-icon class=\"f-18 d-flex align-items-center justify-content-center\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Enter Pin Code*\" class=\"w-88\" [(ngModel)]=\"videoCallPayload.pincode\"\r\n (input)=\"onInputChange('pincode')\">\r\n </div> -->\r\n <div class=\"language my-3\">\r\n <div class=\"mini-text mb-2\">Language Preference</div>\r\n <div class=\"language-container d-flex gap-2 flex-wrap mt-1\">\r\n <ng-container *ngFor=\"let lang of languages\">\r\n <div class=\"lang px-2 py-1 rounded cursor-pointer\"\r\n [style.background]=\"lang == selectedLang ? responseData.data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectedLang = lang\" [simpoColor]=\"responseData.data?.styles?.background?.accentColor\">\r\n {{lang}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedLang == 'Others'\">\r\n <div class=\"input-field my-3\">\r\n <input type=\"text\" placeholder=\"Enter Other Language\" [(ngModel)]=\"otherLanguage\">\r\n </div>\r\n </ng-container>\r\n <button class=\"video-btn mt-2 d-flex align-items-center justify-content-center\" *ngIf=\"!scheduled\"\r\n (click)=\"scheduleVideoCall()\" [disabled]=\"isSubmitting\">\r\n <ng-container *ngIf=\"isSubmitting\">\r\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n SCHEDULING...\r\n </ng-container>\r\n <ng-container *ngIf=\"!isSubmitting\">\r\n <mat-icon>video_call</mat-icon> \r\n SCHEDULE A VIDEO CALL\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"scheduled\">\r\n <div class=\"d-flex align-items-center justify-content-center mt-2\" style=\"color:#1E7A4B;\">\r\n <mat-icon>check_circle</mat-icon> \r\n Your video call request is saved\r\n </div>\r\n <button class=\"video-btn mt-2 d-flex align-items-center justify-content-center\"\r\n (click)=\"continueBooking()\">\r\n Continue Booking\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.main-section{width:30vw;position:relative;height:100%}@media screen and (max-width:475px){.main-section{width:100vw!important}}.header{display:flex;justify-content:space-between;padding:0 15px;height:45px;align-items:center;border-bottom:1px solid #a8aaab}.content{height:calc(100vh - 90px);overflow:scroll;padding:15px}.footer{position:absolute;bottom:0;width:100%;height:45px;align-items:center;display:flex;padding:0 25px}.footer button{background:linear-gradient(90deg,#8c6,#26b324);border:none;font-size:1rem!important;color:#fff;padding-top:7px;padding-bottom:7px;border-radius:5px;font-weight:600}.selection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.selection-title{font-size:16px;color:#495057;font-weight:400}.selection-counter{font-size:16px;color:#6c757d;font-weight:500}.product-card{position:relative}.product-card img{width:100%;height:29vh}.product-card input{position:absolute;top:10px;right:20px}.product-price{font-size:16px;font-weight:600;color:#000;margin-bottom:4px;margin-top:10px}.product-original-price{font-size:12px;color:#6c757d;text-decoration:line-through;margin-left:8px}.product-name{font-size:14px;color:#6c757d;line-height:1.3}.row{row-gap:15px}.header-text{font-size:1rem;font-weight:700}.modal-content{height:100%;border:none;border-radius:0!important}.schedule-header{border-radius:18px 18px 0 0}.heading-video{font-size:17px;font-weight:600}.heading-video,.schedule-header{background:#f6f3f9}.video-call-container{margin:0!important}.call-details{padding:3%!important}.input-field{display:flex;border-radius:12px;padding:12px;font-size:13px;background:#f6f3f9}.input-field .sub-text-call{width:20%;text-align:center;align-content:center;border-right:1px solid #bfbfbf;color:#0000008a;font-weight:700}.input-field input{width:80%;border:none;outline:none;appearance:none;margin-left:5px;background:#f6f3f9}.mini-text{font-size:13px}.lang{font-size:12px;align-content:center;background:#f6f3f9}.video-btn:disabled{opacity:.7;cursor:not-allowed}.video-btn:disabled:hover{cursor:not-allowed}.video-btn{border:unset;padding:8px;border-radius:12px;font-weight:600;color:#fff;background:#05a702;position:absolute;bottom:20px;left:10px;width:95%!important}input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:20px;height:20px;border:2px solid #ccc;border-radius:4px;outline:none;cursor:pointer;position:relative;background-color:#fff;transition:all .3s ease}input[type=checkbox]:checked{background-color:#007bff;border-color:#007bff}input[type=checkbox]:checked:after{content:\"\\2713\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:14px;font-weight:700}input[type=checkbox]:hover{border-color:#007bff;box-shadow:0 0 5px #007bff4d}.error-border{border:2px solid red!important}@media screen and (max-width:475px){.width-100{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i7.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
|
199
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScheduleVideoCallComponent, deps: [{ token: i1.MatDialogRef }, { token: i1.MatDialog }, { token: i2.Router }, { token: i3.MessageService }, { token: i4.BookingProductCartService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScheduleVideoCallComponent, isStandalone: true, selector: "simpo-schedule-video-call", providers: [MessageService], ngImport: i0, template: "<section class=\"main-section\">\r\n <p-toast key=\"Video Call Schedule\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\" class=\"bottom-right\" />\r\n <div class=\"header\">\r\n <div class=\"header-text\">See it Live on Video Call</div>\r\n <mat-icon (click)=\"goBack()\">close</mat-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"selection-header\">\r\n <h2 class=\"selection-title\">Choose Designs for Live Video Call</h2>\r\n <span class=\"selection-counter\">{{selectedProducts.length}}/{{responseData?.orderItems?.length ?\r\n responseData.orderItems.length : 0}}</span>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"product-card col-md-6 col-12\" *ngFor=\"let data of orderedItems; let i = index\">\r\n <img [src]=\"data?.imgUrl\" alt=\"product_img\">\r\n <input type=\"checkbox\" [checked]=\"data.selected\" (click)=\"selectedItems(data)\">\r\n <div class=\"product-price\">\u20B9{{data?.discountedPrice ? data?.discountedPrice : 'N/A'}}</div>\r\n <div class=\"product-name\">{{data?.itemName ? data?.itemName : 'N/A'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <button (click)=\"openScheduleCall(dialogBox)\">Schedule video call</button>\r\n </div>\r\n <ng-template #dialogBox>\r\n <div class=\"modal-content\">\r\n <div class=\"schedule-header w-100 d-flex align-items-center justify-content-end p-2\">\r\n <mat-icon (click)=\"closeDialog()\"\r\n class=\"cursor-pointer d-flex align-items-center justify-content-center f-18\">close</mat-icon>\r\n </div>\r\n <div class=\"heading-video w-100 py-2 text-center\">Live Video call at your convenience!</div>\r\n <div class=\"modal-body h-100 p-0\">\r\n <div class=\"row h-100 w-100 mt-3 video-call-container\">\r\n <div class=\"col-6\" *ngIf=\"!isMobile\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/897651c1751980487170Vdo Call.gif\" alt=\"\"\r\n class=\"w-100\">\r\n </div>\r\n <div class=\"col-6 position-relative h-100 call-details width-100\">\r\n <!-- Name Input with Validation -->\r\n <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.username\">\r\n <input type=\"text\" placeholder=\"Enter Name*\" [(ngModel)]=\"videoCallPayload.username\"\r\n (input)=\"onInputChange('username')\">\r\n </div>\r\n\r\n <!-- <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.email\">\r\n <input type=\"email\" placeholder=\"Enter Email*\" [(ngModel)]=\"videoCallPayload.email\"\r\n (input)=\"onInputChange('email')\">\r\n </div> -->\r\n\r\n <!-- Mobile Number Input with Validation -->\r\n <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.mobileNumber\">\r\n <div class=\"sub-text-call\">IN +91</div>\r\n <input type=\"number\" placeholder=\"Enter Mobile*\" [(ngModel)]=\"videoCallPayload.mobileNumber\"\r\n (input)=\"onInputChange('mobileNumber')\" (keydown.arrowUp)=\"$event.preventDefault()\"\r\n (keydown.arrowDown)=\"$event.preventDefault()\" (wheel)=\"$event.preventDefault()\">\r\n </div>\r\n\r\n\r\n <!-- Pincode Input with Validation -->\r\n <!-- <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.pincode\">\r\n <div class=\"sub-text-call d-flex justify-content-center w-12 border-unset\">\r\n <mat-icon class=\"f-18 d-flex align-items-center justify-content-center\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Enter Pin Code*\" class=\"w-88\" [(ngModel)]=\"videoCallPayload.pincode\"\r\n (input)=\"onInputChange('pincode')\">\r\n </div> -->\r\n <div class=\"language my-3\">\r\n <div class=\"mini-text mb-2\">Language Preference</div>\r\n <div class=\"language-container d-flex gap-2 flex-wrap mt-1\">\r\n <ng-container *ngFor=\"let lang of languages\">\r\n <div class=\"lang px-2 py-1 rounded cursor-pointer\"\r\n [style.background]=\"lang == selectedLang ? responseData.data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectedLang = lang\" [simpoColor]=\"responseData.data?.styles?.background?.accentColor\">\r\n {{lang}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedLang == 'Others'\">\r\n <div class=\"input-field my-3\">\r\n <input type=\"text\" placeholder=\"Enter Other Language\" [(ngModel)]=\"otherLanguage\">\r\n </div>\r\n </ng-container>\r\n <button class=\"video-btn mt-2 d-flex align-items-center justify-content-center\" *ngIf=\"!scheduled\"\r\n (click)=\"scheduleVideoCall()\" [disabled]=\"isSubmitting\">\r\n <ng-container *ngIf=\"isSubmitting\">\r\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n SCHEDULING...\r\n </ng-container>\r\n <ng-container *ngIf=\"!isSubmitting\">\r\n <mat-icon>video_call</mat-icon> \r\n SCHEDULE A VIDEO CALL\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"scheduled\">\r\n <div class=\"d-flex align-items-center justify-content-center mt-2\" style=\"color:#1E7A4B;\">\r\n <mat-icon>check_circle</mat-icon> \r\n Your video call request is saved\r\n </div>\r\n <button class=\"video-btn mt-2 d-flex align-items-center justify-content-center\"\r\n (click)=\"continueBooking()\">\r\n Continue Booking\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.main-section{width:30vw;position:relative;height:100%}@media screen and (max-width:475px){.main-section{width:100vw!important}}.header{display:flex;justify-content:space-between;padding:0 15px;height:45px;align-items:center;border-bottom:1px solid #a8aaab}.content{height:calc(100vh - 90px);overflow:scroll;padding:15px}.footer{position:absolute;bottom:0;width:100%;height:45px;align-items:center;display:flex;padding:0 25px}.footer button{background:linear-gradient(90deg,#8c6,#26b324);border:none;font-size:1rem!important;color:#fff;padding-top:7px;padding-bottom:7px;border-radius:5px;font-weight:600}.selection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.selection-title{font-size:16px;color:#495057;font-weight:400}.selection-counter{font-size:16px;color:#6c757d;font-weight:500}.product-card{position:relative}.product-card img{width:100%;height:29vh}.product-card input{position:absolute;top:10px;right:20px}.product-price{font-size:16px;font-weight:600;color:#000;margin-bottom:4px;margin-top:10px}.product-original-price{font-size:12px;color:#6c757d;text-decoration:line-through;margin-left:8px}.product-name{font-size:14px;color:#6c757d;line-height:1.3}.row{row-gap:15px}.header-text{font-size:1rem;font-weight:700}.modal-content{height:100%;border:none;border-radius:0!important}.schedule-header{border-radius:18px 18px 0 0}.heading-video{font-size:17px;font-weight:600}.heading-video,.schedule-header{background:#f6f3f9}.video-call-container{margin:0!important}.call-details{padding:3%!important}.input-field{display:flex;border-radius:12px;padding:12px;font-size:13px;background:#f6f3f9}.input-field .sub-text-call{width:20%;text-align:center;align-content:center;border-right:1px solid #bfbfbf;color:#0000008a;font-weight:700}.input-field input{width:80%;border:none;outline:none;appearance:none;margin-left:5px;background:#f6f3f9}.mini-text{font-size:13px}.lang{font-size:12px;align-content:center;background:#f6f3f9}.video-btn:disabled{opacity:.7;cursor:not-allowed}.video-btn:disabled:hover{cursor:not-allowed}.video-btn{border:unset;padding:8px;border-radius:12px;font-weight:600;color:#fff;background:#05a702;position:absolute;bottom:20px;left:10px;width:95%!important}input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:20px;height:20px;border:2px solid #ccc;border-radius:4px;outline:none;cursor:pointer;position:relative;background-color:#fff;transition:all .3s ease}input[type=checkbox]:checked{background-color:#007bff;border-color:#007bff}input[type=checkbox]:checked:after{content:\"\\2713\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:14px;font-weight:700}input[type=checkbox]:hover{border-color:#007bff;box-shadow:0 0 5px #007bff4d}.error-border{border:2px solid red!important}@media screen and (max-width:475px){.width-100{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
|
205
201
|
}
|
|
206
202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScheduleVideoCallComponent, decorators: [{
|
|
207
203
|
type: Component,
|
|
208
204
|
args: [{ selector: 'simpo-schedule-video-call', standalone: true, imports: [CommonModule, MatIconModule, FormsModule, ColorDirective, ToastModule], providers: [MessageService], template: "<section class=\"main-section\">\r\n <p-toast key=\"Video Call Schedule\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\" class=\"bottom-right\" />\r\n <div class=\"header\">\r\n <div class=\"header-text\">See it Live on Video Call</div>\r\n <mat-icon (click)=\"goBack()\">close</mat-icon>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"selection-header\">\r\n <h2 class=\"selection-title\">Choose Designs for Live Video Call</h2>\r\n <span class=\"selection-counter\">{{selectedProducts.length}}/{{responseData?.orderItems?.length ?\r\n responseData.orderItems.length : 0}}</span>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"product-card col-md-6 col-12\" *ngFor=\"let data of orderedItems; let i = index\">\r\n <img [src]=\"data?.imgUrl\" alt=\"product_img\">\r\n <input type=\"checkbox\" [checked]=\"data.selected\" (click)=\"selectedItems(data)\">\r\n <div class=\"product-price\">\u20B9{{data?.discountedPrice ? data?.discountedPrice : 'N/A'}}</div>\r\n <div class=\"product-name\">{{data?.itemName ? data?.itemName : 'N/A'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <button (click)=\"openScheduleCall(dialogBox)\">Schedule video call</button>\r\n </div>\r\n <ng-template #dialogBox>\r\n <div class=\"modal-content\">\r\n <div class=\"schedule-header w-100 d-flex align-items-center justify-content-end p-2\">\r\n <mat-icon (click)=\"closeDialog()\"\r\n class=\"cursor-pointer d-flex align-items-center justify-content-center f-18\">close</mat-icon>\r\n </div>\r\n <div class=\"heading-video w-100 py-2 text-center\">Live Video call at your convenience!</div>\r\n <div class=\"modal-body h-100 p-0\">\r\n <div class=\"row h-100 w-100 mt-3 video-call-container\">\r\n <div class=\"col-6\" *ngIf=\"!isMobile\">\r\n <img src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/897651c1751980487170Vdo Call.gif\" alt=\"\"\r\n class=\"w-100\">\r\n </div>\r\n <div class=\"col-6 position-relative h-100 call-details width-100\">\r\n <!-- Name Input with Validation -->\r\n <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.username\">\r\n <input type=\"text\" placeholder=\"Enter Name*\" [(ngModel)]=\"videoCallPayload.username\"\r\n (input)=\"onInputChange('username')\">\r\n </div>\r\n\r\n <!-- <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.email\">\r\n <input type=\"email\" placeholder=\"Enter Email*\" [(ngModel)]=\"videoCallPayload.email\"\r\n (input)=\"onInputChange('email')\">\r\n </div> -->\r\n\r\n <!-- Mobile Number Input with Validation -->\r\n <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.mobileNumber\">\r\n <div class=\"sub-text-call\">IN +91</div>\r\n <input type=\"number\" placeholder=\"Enter Mobile*\" [(ngModel)]=\"videoCallPayload.mobileNumber\"\r\n (input)=\"onInputChange('mobileNumber')\" (keydown.arrowUp)=\"$event.preventDefault()\"\r\n (keydown.arrowDown)=\"$event.preventDefault()\" (wheel)=\"$event.preventDefault()\">\r\n </div>\r\n\r\n\r\n <!-- Pincode Input with Validation -->\r\n <!-- <div class=\"input-field my-3\" [class.error-border]=\"validationErrors.pincode\">\r\n <div class=\"sub-text-call d-flex justify-content-center w-12 border-unset\">\r\n <mat-icon class=\"f-18 d-flex align-items-center justify-content-center\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Enter Pin Code*\" class=\"w-88\" [(ngModel)]=\"videoCallPayload.pincode\"\r\n (input)=\"onInputChange('pincode')\">\r\n </div> -->\r\n <div class=\"language my-3\">\r\n <div class=\"mini-text mb-2\">Language Preference</div>\r\n <div class=\"language-container d-flex gap-2 flex-wrap mt-1\">\r\n <ng-container *ngFor=\"let lang of languages\">\r\n <div class=\"lang px-2 py-1 rounded cursor-pointer\"\r\n [style.background]=\"lang == selectedLang ? responseData.data?.styles?.background?.accentColor : ''\"\r\n (click)=\"selectedLang = lang\" [simpoColor]=\"responseData.data?.styles?.background?.accentColor\">\r\n {{lang}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"selectedLang == 'Others'\">\r\n <div class=\"input-field my-3\">\r\n <input type=\"text\" placeholder=\"Enter Other Language\" [(ngModel)]=\"otherLanguage\">\r\n </div>\r\n </ng-container>\r\n <button class=\"video-btn mt-2 d-flex align-items-center justify-content-center\" *ngIf=\"!scheduled\"\r\n (click)=\"scheduleVideoCall()\" [disabled]=\"isSubmitting\">\r\n <ng-container *ngIf=\"isSubmitting\">\r\n <div class=\"spinner-border spinner-border-sm me-2\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n SCHEDULING...\r\n </ng-container>\r\n <ng-container *ngIf=\"!isSubmitting\">\r\n <mat-icon>video_call</mat-icon> \r\n SCHEDULE A VIDEO CALL\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"scheduled\">\r\n <div class=\"d-flex align-items-center justify-content-center mt-2\" style=\"color:#1E7A4B;\">\r\n <mat-icon>check_circle</mat-icon> \r\n Your video call request is saved\r\n </div>\r\n <button class=\"video-btn mt-2 d-flex align-items-center justify-content-center\"\r\n (click)=\"continueBooking()\">\r\n Continue Booking\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</section>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}.main-section{width:30vw;position:relative;height:100%}@media screen and (max-width:475px){.main-section{width:100vw!important}}.header{display:flex;justify-content:space-between;padding:0 15px;height:45px;align-items:center;border-bottom:1px solid #a8aaab}.content{height:calc(100vh - 90px);overflow:scroll;padding:15px}.footer{position:absolute;bottom:0;width:100%;height:45px;align-items:center;display:flex;padding:0 25px}.footer button{background:linear-gradient(90deg,#8c6,#26b324);border:none;font-size:1rem!important;color:#fff;padding-top:7px;padding-bottom:7px;border-radius:5px;font-weight:600}.selection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.selection-title{font-size:16px;color:#495057;font-weight:400}.selection-counter{font-size:16px;color:#6c757d;font-weight:500}.product-card{position:relative}.product-card img{width:100%;height:29vh}.product-card input{position:absolute;top:10px;right:20px}.product-price{font-size:16px;font-weight:600;color:#000;margin-bottom:4px;margin-top:10px}.product-original-price{font-size:12px;color:#6c757d;text-decoration:line-through;margin-left:8px}.product-name{font-size:14px;color:#6c757d;line-height:1.3}.row{row-gap:15px}.header-text{font-size:1rem;font-weight:700}.modal-content{height:100%;border:none;border-radius:0!important}.schedule-header{border-radius:18px 18px 0 0}.heading-video{font-size:17px;font-weight:600}.heading-video,.schedule-header{background:#f6f3f9}.video-call-container{margin:0!important}.call-details{padding:3%!important}.input-field{display:flex;border-radius:12px;padding:12px;font-size:13px;background:#f6f3f9}.input-field .sub-text-call{width:20%;text-align:center;align-content:center;border-right:1px solid #bfbfbf;color:#0000008a;font-weight:700}.input-field input{width:80%;border:none;outline:none;appearance:none;margin-left:5px;background:#f6f3f9}.mini-text{font-size:13px}.lang{font-size:12px;align-content:center;background:#f6f3f9}.video-btn:disabled{opacity:.7;cursor:not-allowed}.video-btn:disabled:hover{cursor:not-allowed}.video-btn{border:unset;padding:8px;border-radius:12px;font-weight:600;color:#fff;background:#05a702;position:absolute;bottom:20px;left:10px;width:95%!important}input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:20px;height:20px;border:2px solid #ccc;border-radius:4px;outline:none;cursor:pointer;position:relative;background-color:#fff;transition:all .3s ease}input[type=checkbox]:checked{background-color:#007bff;border-color:#007bff}input[type=checkbox]:checked:after{content:\"\\2713\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:14px;font-weight:700}input[type=checkbox]:hover{border-color:#007bff;box-shadow:0 0 5px #007bff4d}.error-border{border:2px solid red!important}@media screen and (max-width:475px){.width-100{width:100%!important}}\n"] }]
|
|
209
|
-
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i1.MatDialog }, { type: i2.
|
|
205
|
+
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i1.MatDialog }, { type: i2.Router }, { type: i3.MessageService }, { type: i4.BookingProductCartService }, { type: undefined, decorators: [{
|
|
210
206
|
type: Inject,
|
|
211
207
|
args: [MAT_DIALOG_DATA]
|
|
212
208
|
}] }] });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3NjaGVkdWxlLXZpZGVvLWNhbGwvc2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3NjaGVkdWxlLXZpZGVvLWNhbGwvc2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVHQUF1RyxDQUFDOzs7Ozs7Ozs7QUFVcEosTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNtQixTQUFtRCxFQUM1RCxTQUFvQixFQUNYLGNBQThCLEVBQzlCLHlCQUFvRCxFQUNyQyxZQUFpQjtRQUpoQyxjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUM1RCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ1gsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlC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LEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQ3hELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0FoTVUsMEJBQTBCLDhJQU0zQixlQUFlO21HQU5kLDBCQUEwQix3RUFKMUIsQ0FBQyxjQUFjLENBQUMsMEJDZjdCLDR3TUFpSFUscStGRG5HRSxZQUFZLCtQQUFFLGFBQWEsbUxBQUUsV0FBVyxpeEJBQUUsY0FBYyxnRkFBRSxXQUFXOzs0RkFLcEUsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLGFBQ3JFLENBQUMsY0FBYyxDQUFDOzswQkFVeEIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jvb2tpbmctcHJvZHVjdC1jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBvaW50bWVudEJvb2tpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZWN0aW9ucy9hcHBvaW50bWVudC1mb3JtL2FwcG9pbnRtZW50LWJvb2tpbmcvYXBwb2ludG1lbnQtYm9va2luZy9hcHBvaW50bWVudC1ib29raW5nLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXNjaGVkdWxlLXZpZGVvLWNhbGwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgRm9ybXNNb2R1bGUsIENvbG9yRGlyZWN0aXZlLCBUb2FzdE1vZHVsZV0sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZS12aWRlby1jYWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVWaWRlb0NhbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTY2hlZHVsZVZpZGVvQ2FsbENvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2U6IEJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIHJlc3BvbnNlRGF0YTogYW55LFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmRlcmVkSXRlbXMgPSB0aGlzLnJlc3BvbnNlRGF0YT8ub3JkZXJJdGVtcyB8fCBbXTtcclxuICAgIHRoaXMub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZWxlY3RlZFByb2R1Y3RzOiBhbnlbXSA9IFtdO1xyXG4gIGxhbmd1YWdlczogc3RyaW5nW10gPSBbXCJFbmdsaXNoXCIsIFwiVGVsdWd1XCIsIFwiSGluZGlcIiwgXCJUYW1pbFwiLCBcIkthbm5hZGFcIiwgXCJNYWxheWFsYW1cIiwgXCJPdGhlcnNcIl1cclxuICBzZWxlY3RlZExhbmc6IHN0cmluZyA9IHRoaXMubGFuZ3VhZ2VzWzBdO1xyXG4gIG90aGVyTGFuZ3VhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIG9yZGVyZWRJdGVtczogYW55W10gPSBbXTtcclxuICBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnb0JhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuICBvcGVuU2NoZWR1bGVDYWxsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRGl2RWxlbWVudD4pIHtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2R1Y3RzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICBkZXRhaWw6ICdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwcm9kdWN0JyxcclxuICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLm1hdERpYWxvZy5vcGVuKHRlbXBsYXRlLFxyXG4gICAgICAvLyAge3dpZHRoOic1MDBweCd9XHJcbiAgICAgIHtcclxuICAgICAgICBwYW5lbENsYXNzOiAndmlkZW8tY2FsbC1kaWFsb2cnXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIGNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5tYXREaWFsb2cuY2xvc2VBbGwoKTtcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcbiAgdmFsaWRhdGlvbkVycm9yczogYW55ID0ge1xyXG4gICAgdXNlcm5hbWU6IGZhbHNlLFxyXG4gICAgbW9iaWxlTnVtYmVyOiBmYWxzZSxcclxuICAgIHBpbmNvZGU6IGZhbHNlLFxyXG4gICAgZW1haWw6IGZhbHNlXHJcbiAgfTtcclxuICB2aWRlb0NhbGxQYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBidXNpbmVzc0lkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiXCIsXHJcbiAgICBtb2JpbGVOdW1iZXI6IFwiXCIsXHJcbiAgICAvLyBwaW5jb2RlOiBcIlwiLFxyXG4gICAgdXNlcm5hbWU6IFwiXCIsXHJcbiAgICAvLyBlbWFpbDogXCJcIixcclxuICAgIG1lc3NhZ2U6IGBgLFxyXG4gIH1cclxuICBvbklucHV0Q2hhbmdlKGZpZWxkOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvcnNbZmllbGRdKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yc1tmaWVsZF0gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgc2NoZWR1bGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVzZXRWYWxpZGF0aW9uRXJyb3JzKCkge1xyXG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0ge1xyXG4gICAgICB1c2VybmFtZTogZmFsc2UsXHJcbiAgICAgIG1vYmlsZU51bWJlcjogZmFsc2UsXHJcbiAgICAgIC8vIHBpbmNvZGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gIH1cclxuICBzY2hlZHVsZVZpZGVvQ2FsbCgpIHtcclxuICAgIGlmICh0aGlzLmlzU3VibWl0dGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gICAgbGV0IGhhc0Vycm9ycyA9IGZhbHNlO1xyXG4gICAgaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQudXNlcm5hbWU/LnRyaW0oKSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMudXNlcm5hbWUgPSB0cnVlO1xyXG4gICAgICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQubW9iaWxlTnVtYmVyKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5tb2JpbGVOdW1iZXIgPSB0cnVlO1xyXG4gICAgICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2FsbFBheWxvYWQubW9iaWxlTnVtYmVyLnRvU3RyaW5nKCkubGVuZ3RoICE9PSAxMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMubW9iaWxlTnVtYmVyID0gdHJ1ZTtcclxuICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLnBpbmNvZGUpIHtcclxuICAgIC8vICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnBpbmNvZGUgPSB0cnVlO1xyXG4gICAgLy8gICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2FsbFBheWxvYWQucGluY29kZS50b1N0cmluZygpLmxlbmd0aCAhPT0gNikge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucGluY29kZSA9IHRydWU7XHJcbiAgICAvLyAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQuZW1haWw/LnRyaW0oKSkge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25FcnJvcnMuZW1haWwgPSB0cnVlO1xyXG4gICAgLy8gICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgLy8gfSBlbHNlIGlmICghL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvLnRlc3QodGhpcy52aWRlb0NhbGxQYXlsb2FkLmVtYWlsKSkge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25FcnJvcnMuZW1haWwgPSB0cnVlO1xyXG4gICAgLy8gICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGhhc0Vycm9ycykge1xyXG4gICAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC51c2VybmFtZT8udHJpbSgpIHx8ICF0aGlzLnZpZGVvQ2FsbFBheWxvYWQubW9iaWxlTnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSBmaWxsIGFsbCB0aGUgcmVxdWlyZWQgZGV0YWlscycsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDEwKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIDEwLWRpZ2l0IG1vYmlsZSBudW1iZXInLFxyXG4gICAgICAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5waW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9PSA2KSB7XHJcbiAgICAgICAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgLy8gICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgLy8gICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAvLyAgICAgZGV0YWlsOiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgNi1kaWdpdCBwaW5jb2RlJyxcclxuICAgICAgICAvLyAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBlbHNlIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLmVtYWlsPy50cmltKCkgfHwgIS9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLy50ZXN0KHRoaXMudmlkZW9DYWxsUGF5bG9hZC5lbWFpbCkpIHtcclxuICAgICAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAvLyAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAvLyAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgIC8vICAgICBkZXRhaWw6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyxcclxuICAgICAgICAvLyAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRGVzaWduIGRvYzogVmlkZW8gQ2FsbCBuZXZlciBmYWxscyBiYWNrIHRvIGEgc3BsaXQgYm9va2luZywgYW5kIHZpZGVvLWNhbGwtZm9yLXByb2R1Y3RzXHJcbiAgICAvLyBpcyBmcmVlIGluIHYxIC0gYm90aCBlbmZvcmNlZCBzZXJ2ZXItc2lkZS4gVGhpcyBkaWFsb2cncyBqb2IgaXMganVzdCBwaWNraW5nIHdoaWNoXHJcbiAgICAvLyBwcm9kdWN0cyB0byBzaG93IGFuZCBoYW5kaW5nIG9mZiB0byB0aGUgcmVhbCB3aXphcmQgZm9yIHN0YWZmL2RhdGUvdGltZSBhbmQgY29udGFjdFxyXG4gICAgLy8gZGV0YWlscywgcmF0aGVyIHRoYW4gY3JlYXRpbmcgdGhlIGJvb2tpbmcgaXRzZWxmICh0aGVyZSdzIG5vIHN0YWZmLXBpY2tlciBoZXJlKS5cclxuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcclxuICAgIFByb21pc2UuYWxsKHRoaXMuc2VsZWN0ZWRQcm9kdWN0cy5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLmFkZE9yZGVyZWRJdGVtKCdWSURFT19DQUxMJywgaXRlbSkpKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gU3RheSBvcGVuIG9uIHRoZSBcIlNDSEVEVUxFRCBTVUNDRVNTRlVMTFlcIiBzdGF0ZSBpbnN0ZWFkIG9mIGF1dG8tY2xvc2luZyBpbnRvIHRoZVxyXG4gICAgICAgIC8vIHdpemFyZCAtIHRoZSBzaG9wcGVyIGNvbnRpbnVlcyBleHBsaWNpdGx5IHZpYSBjb250aW51ZUJvb2tpbmcoKS5cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogJ0NvdWxkIG5vdCBhZGQgcHJvZHVjdHMgdG8geW91ciB2aWRlbyBjYWxsIOKAlCBwbGVhc2UgdHJ5IGFnYWluJyxcclxuICAgICAgICAgIGtleTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29udGludWVCb29raW5nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIC8vIEFwcG9pbnRtZW50Qm9va2luZ0NvbXBvbmVudCBpc24ndCBNQVRfRElBTE9HX0RBVEEtYXdhcmUgLSBpdCdzIGRyaXZlbiBieSBwbGFpblxyXG4gICAgLy8gQElucHV0KClzIChzYW1lIGFzIHdoZW4gaXQncyBwbGFjZWQgYXMgYSBwYWdlIHNlY3Rpb24pIC0gc28gdGhleSdyZSBzZXQgZGlyZWN0bHkgb25cclxuICAgIC8vIHRoZSBjb21wb25lbnQgaW5zdGFuY2UgcmlnaHQgYWZ0ZXIgY3JlYXRpb24sIGJlZm9yZSBBbmd1bGFyJ3MgZmlyc3QgY2hhbmdlLWRldGVjdGlvblxyXG4gICAgLy8gcGFzcyBydW5zIG5nT25Jbml0LCBzYW1lIGFzIGEgbm9ybWFsIHRlbXBsYXRlIFtkYXRhXSBiaW5kaW5nIHdvdWxkLlxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihBcHBvaW50bWVudEJvb2tpbmdDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzEwMHZoJyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdhcHBvaW50bWVudC1mb3JtJ1xyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHsgY29udGVudDogeyBtb2RlOiAnVklERU9fQ0FMTCcgfSB9IGFzIGFueTtcclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5wcmVmaWxsQ29udGFjdCA9IHsgbmFtZTogdGhpcy52aWRlb0NhbGxQYXlsb2FkLnVzZXJuYW1lLCBwaG9uZU51bWJlcjogdGhpcy52aWRlb0NhbGxQYXlsb2FkLm1vYmlsZU51bWJlciB9O1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zKGl0ZW06IGFueSkge1xyXG4gICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xyXG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2R1Y3RzLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2R1Y3RzID0gdGhpcy5zZWxlY3RlZFByb2R1Y3RzLmZpbHRlcihcclxuICAgICAgICBzZWxlY3RlZEl0ZW0gPT4gc2VsZWN0ZWRJdGVtLml0ZW1OYW1lICE9PSBpdGVtLml0ZW1OYW1lXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwibWFpbi1zZWN0aW9uXCI+XHJcbiAgPHAtdG9hc3Qga2V5PVwiVmlkZW8gQ2FsbCBTY2hlZHVsZVwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiXHJcbiAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIiBjbGFzcz1cImJvdHRvbS1yaWdodFwiIC8+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci10ZXh0XCI+U2VlIGl0IExpdmUgb24gVmlkZW8gQ2FsbDwvZGl2PlxyXG4gICAgPG1hdC1pY29uIChjbGljayk9XCJnb0JhY2soKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdGlvbi1oZWFkZXJcIj5cclxuICAgICAgPGgyIGNsYXNzPVwic2VsZWN0aW9uLXRpdGxlXCI+Q2hvb3NlIERlc2lnbnMgZm9yIExpdmUgVmlkZW8gQ2FsbDwvaDI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0aW9uLWNvdW50ZXJcIj57e3NlbGVjdGVkUHJvZHVjdHMubGVuZ3RofX0ve3tyZXNwb25zZURhdGE/Lm9yZGVySXRlbXM/Lmxlbmd0aCA/XHJcbiAgICAgICAgcmVzcG9uc2VEYXRhLm9yZGVySXRlbXMubGVuZ3RoIDogMH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1jYXJkIGNvbC1tZC02IGNvbC0xMlwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG9yZGVyZWRJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJkYXRhPy5pbWdVcmxcIiBhbHQ9XCJwcm9kdWN0X2ltZ1wiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJkYXRhLnNlbGVjdGVkXCIgKGNsaWNrKT1cInNlbGVjdGVkSXRlbXMoZGF0YSlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1wcmljZVwiPuKCuXt7ZGF0YT8uZGlzY291bnRlZFByaWNlID8gZGF0YT8uZGlzY291bnRlZFByaWNlIDogJ04vQSd9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LW5hbWVcIj57e2RhdGE/Lml0ZW1OYW1lID8gZGF0YT8uaXRlbU5hbWUgOiAnTi9BJ319PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlblNjaGVkdWxlQ2FsbChkaWFsb2dCb3gpXCI+U2NoZWR1bGUgdmlkZW8gY2FsbDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjZGlhbG9nQm94PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjaGVkdWxlLWhlYWRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgcC0yXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjbG9zZURpYWxvZygpXCJcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGYtMThcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy12aWRlbyB3LTEwMCBweS0yIHRleHQtY2VudGVyXCI+TGl2ZSBWaWRlbyBjYWxsIGF0IHlvdXIgY29udmVuaWVuY2UhPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGgtMTAwIHAtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDAgdy0xMDAgbXQtMyB2aWRlby1jYWxsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzg5NzY1MWMxNzUxOTgwNDg3MTcwVmRvIENhbGwuZ2lmXCIgYWx0PVwiXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMCBjYWxsLWRldGFpbHMgd2lkdGgtMTAwXCI+XHJcbiAgICAgICAgICAgIDwhLS0gTmFtZSBJbnB1dCB3aXRoIFZhbGlkYXRpb24gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBteS0zXCIgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJ2YWxpZGF0aW9uRXJyb3JzLnVzZXJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBOYW1lKlwiIFsobmdNb2RlbCldPVwidmlkZW9DYWxsUGF5bG9hZC51c2VybmFtZVwiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgndXNlcm5hbWUnKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIG15LTNcIiBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInZhbGlkYXRpb25FcnJvcnMuZW1haWxcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBFbWFpbCpcIiBbKG5nTW9kZWwpXT1cInZpZGVvQ2FsbFBheWxvYWQuZW1haWxcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ2VtYWlsJylcIj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNb2JpbGUgTnVtYmVyIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIG15LTNcIiBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInZhbGlkYXRpb25FcnJvcnMubW9iaWxlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LWNhbGxcIj5JTiArOTE8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgTW9iaWxlKlwiIFsobmdNb2RlbCldPVwidmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ21vYmlsZU51bWJlcicpXCIgKGtleWRvd24uYXJyb3dVcCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAod2hlZWwpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSBQaW5jb2RlIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwidmFsaWRhdGlvbkVycm9ycy5waW5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LWNhbGwgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMiBib3JkZXItdW5zZXRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImYtMTggZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgUGluIENvZGUqXCIgY2xhc3M9XCJ3LTg4XCIgWyhuZ01vZGVsKV09XCJ2aWRlb0NhbGxQYXlsb2FkLnBpbmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ3BpbmNvZGUnKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYW5ndWFnZSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktdGV4dCBtYi0yXCI+TGFuZ3VhZ2UgUHJlZmVyZW5jZTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYW5ndWFnZS1jb250YWluZXIgZC1mbGV4IGdhcC0yIGZsZXgtd3JhcCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5nIG9mIGxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZyBweC0yIHB5LTEgcm91bmRlZCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwibGFuZyA9PSBzZWxlY3RlZExhbmcgPyByZXNwb25zZURhdGEuZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMYW5nID0gbGFuZ1wiIFtzaW1wb0NvbG9yXT1cInJlc3BvbnNlRGF0YS5kYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tsYW5nfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZExhbmcgPT0gJ090aGVycydcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBPdGhlciBMYW5ndWFnZVwiIFsobmdNb2RlbCldPVwib3RoZXJMYW5ndWFnZVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZpZGVvLWJ0biBtdC0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiIXNjaGVkdWxlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNjaGVkdWxlVmlkZW9DYWxsKClcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU3VibWl0dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG1lLTJcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgU0NIRURVTElORy4uLlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlkZW9fY2FsbDwvbWF0LWljb24+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICBTQ0hFRFVMRSBBIFZJREVPIENBTExcclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzY2hlZHVsZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIiBzdHlsZT1cImNvbG9yOiMxRTdBNEI7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIFlvdXIgdmlkZW8gY2FsbCByZXF1ZXN0IGlzIHNhdmVkXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZpZGVvLWJ0biBtdC0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGludWVCb29raW5nKClcIj5cclxuICAgICAgICAgICAgICAgIENvbnRpbnVlIEJvb2tpbmdcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3NlY3Rpb24+Il19
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3NjaGVkdWxlLXZpZGVvLWNhbGwvc2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3NjaGVkdWxlLXZpZGVvLWNhbGwvc2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQThCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBVzVDLE1BQU0sT0FBTywwQkFBMEI7SUFDckMsWUFDbUIsU0FBbUQsRUFDNUQsU0FBb0IsRUFDWCxNQUFjLEVBQ2QsY0FBOEIsRUFDOUIseUJBQW9ELEVBQ3JDLFlBQWlCO1FBTGhDLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzVELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDWCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDckMsaUJBQVksR0FBWixZQUFZLENBQUs7UUFTbkQscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBQzdCLGNBQVMsR0FBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQy9GLGlCQUFZLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQThCOUIscUJBQWdCLEdBQVE7WUFDdEIsUUFBUSxFQUFFLEtBQUs7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztRQUNGLHFCQUFnQixHQUFRO1lBQ3RCLFVBQVUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7WUFDcEQsWUFBWSxFQUFFLEVBQUU7WUFDaEIsZUFBZTtZQUNmLFFBQVEsRUFBRSxFQUFFO1lBQ1osYUFBYTtZQUNiLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQTtRQU1ELGNBQVMsR0FBWSxLQUFLLENBQUM7SUE5RHZCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFPRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsUUFBcUM7UUFFcEQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUN0QixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLG9DQUFvQztnQkFDNUMsR0FBRyxFQUFFLHFCQUFxQjthQUMzQixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUdELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVE7UUFDMUIsbUJBQW1CO1FBQ25CO1lBQ0UsVUFBVSxFQUFFLG1CQUFtQjtTQUNoQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQWVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsUUFBUSxFQUFFLEtBQUs7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixpQkFBaUI7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDMUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCx3Q0FBd0M7UUFDeEMsMENBQTBDO1FBQzFDLHNCQUFzQjtRQUN0QixzRUFBc0U7UUFDdEUsMENBQTBDO1FBQzFDLHNCQUFzQjtRQUN0QixJQUFJO1FBRUosOENBQThDO1FBQzlDLHdDQUF3QztRQUN4QyxzQkFBc0I7UUFDdEIsc0dBQXNHO1FBQ3RHLHdDQUF3QztRQUN4QyxzQkFBc0I7UUFDdEIsSUFBSTtRQUNKLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7b0JBQ3RCLFFBQVEsRUFBRSxNQUFNO29CQUNoQixPQUFPLEVBQUUscUJBQXFCO29CQUM5QixNQUFNLEVBQUUsc0NBQXNDO29CQUM5QyxHQUFHLEVBQUUscUJBQXFCO2lCQUMzQixDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO29CQUN0QixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsT0FBTyxFQUFFLHFCQUFxQjtvQkFDOUIsTUFBTSxFQUFFLDZDQUE2QztvQkFDckQsR0FBRyxFQUFFLHFCQUFxQjtpQkFDM0IsQ0FBQyxDQUFDO2dCQUNILHNFQUFzRTtnQkFDdEUsOEJBQThCO2dCQUM5Qix3QkFBd0I7Z0JBQ3hCLHNDQUFzQztnQkFDdEMsc0RBQXNEO2dCQUN0RCxpQ0FBaUM7Z0JBQ2pDLFFBQVE7Z0JBQ1IsSUFBSTtnQkFDSiw0SUFBNEk7Z0JBQzVJLDhCQUE4QjtnQkFDOUIsd0JBQXdCO2dCQUN4QixzQ0FBc0M7Z0JBQ3RDLG9EQUFvRDtnQkFDcEQsaUNBQWlDO2dCQUNqQyxRQUFRO2dCQUNSLElBQUk7WUFDTixDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQ3JGLHNGQUFzRjtRQUN0RixtRkFBbUY7UUFDbkYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3JILElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixtRkFBbUY7WUFDbkYsbUVBQW1FO1FBQ3JFLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixNQUFNLEVBQUUsOERBQThEO2dCQUN0RSxHQUFHLEVBQUUscUJBQXFCO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUMxQyxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtnQkFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO2FBQ2pEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDbEQsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQ3hELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0E1TFUsMEJBQTBCLG9LQU8zQixlQUFlO21HQVBkLDBCQUEwQix3RUFKMUIsQ0FBQyxjQUFjLENBQUMsMEJDZjdCLDR3TUFpSFUscStGRG5HRSxZQUFZLCtQQUFFLGFBQWEsbUxBQUUsV0FBVyxpeEJBQUUsY0FBYyxnRkFBRSxXQUFXOzs0RkFLcEUsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsV0FBVyxDQUFDLGFBQ3JFLENBQUMsY0FBYyxDQUFDOzswQkFXeEIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jvb2tpbmctcHJvZHVjdC1jYXJ0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1zY2hlZHVsZS12aWRlby1jYWxsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBDb2xvckRpcmVjdGl2ZSwgVG9hc3RNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2NoZWR1bGUtdmlkZW8tY2FsbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NjaGVkdWxlLXZpZGVvLWNhbGwuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlVmlkZW9DYWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2NoZWR1bGVWaWRlb0NhbGxDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZTogQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSxcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgcmVzcG9uc2VEYXRhOiBhbnksXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9yZGVyZWRJdGVtcyA9IHRoaXMucmVzcG9uc2VEYXRhPy5vcmRlckl0ZW1zIHx8IFtdO1xyXG4gICAgdGhpcy5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkUHJvZHVjdHM6IGFueVtdID0gW107XHJcbiAgbGFuZ3VhZ2VzOiBzdHJpbmdbXSA9IFtcIkVuZ2xpc2hcIiwgXCJUZWx1Z3VcIiwgXCJIaW5kaVwiLCBcIlRhbWlsXCIsIFwiS2FubmFkYVwiLCBcIk1hbGF5YWxhbVwiLCBcIk90aGVyc1wiXVxyXG4gIHNlbGVjdGVkTGFuZzogc3RyaW5nID0gdGhpcy5sYW5ndWFnZXNbMF07XHJcbiAgb3RoZXJMYW5ndWFnZTogc3RyaW5nID0gJyc7XHJcbiAgb3JkZXJlZEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGlzU3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdvQmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG9wZW5TY2hlZHVsZUNhbGwodGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxEaXZFbGVtZW50Pikge1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZHVjdHMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgIGRldGFpbDogJ1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHByb2R1Y3QnLFxyXG4gICAgICAgIGtleTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMubWF0RGlhbG9nLm9wZW4odGVtcGxhdGUsXHJcbiAgICAgIC8vICB7d2lkdGg6JzUwMHB4J31cclxuICAgICAge1xyXG4gICAgICAgIHBhbmVsQ2xhc3M6ICd2aWRlby1jYWxsLWRpYWxvZydcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xyXG4gIH1cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNDc1O1xyXG4gIH1cclxuICB2YWxpZGF0aW9uRXJyb3JzOiBhbnkgPSB7XHJcbiAgICB1c2VybmFtZTogZmFsc2UsXHJcbiAgICBtb2JpbGVOdW1iZXI6IGZhbHNlLFxyXG4gICAgcGluY29kZTogZmFsc2UsXHJcbiAgICBlbWFpbDogZmFsc2VcclxuICB9O1xyXG4gIHZpZGVvQ2FsbFBheWxvYWQ6IGFueSA9IHtcclxuICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCJcIixcclxuICAgIG1vYmlsZU51bWJlcjogXCJcIixcclxuICAgIC8vIHBpbmNvZGU6IFwiXCIsXHJcbiAgICB1c2VybmFtZTogXCJcIixcclxuICAgIC8vIGVtYWlsOiBcIlwiLFxyXG4gICAgbWVzc2FnZTogYGAsXHJcbiAgfVxyXG4gIG9uSW5wdXRDaGFuZ2UoZmllbGQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudmFsaWRhdGlvbkVycm9yc1tmaWVsZF0pIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzW2ZpZWxkXSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBzY2hlZHVsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZXNldFZhbGlkYXRpb25FcnJvcnMoKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSB7XHJcbiAgICAgIHVzZXJuYW1lOiBmYWxzZSxcclxuICAgICAgbW9iaWxlTnVtYmVyOiBmYWxzZSxcclxuICAgICAgLy8gcGluY29kZTogZmFsc2VcclxuICAgIH07XHJcbiAgfVxyXG4gIHNjaGVkdWxlVmlkZW9DYWxsKCkge1xyXG4gICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC51c2VybmFtZT8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy51c2VybmFtZSA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLm1vYmlsZU51bWJlciA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDEwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5tb2JpbGVOdW1iZXIgPSB0cnVlO1xyXG4gICAgICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQucGluY29kZSkge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucGluY29kZSA9IHRydWU7XHJcbiAgICAvLyAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5waW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9PSA2KSB7XHJcbiAgICAvLyAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5waW5jb2RlID0gdHJ1ZTtcclxuICAgIC8vICAgaGFzRXJyb3JzID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5lbWFpbD8udHJpbSgpKSB7XHJcbiAgICAvLyAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5lbWFpbCA9IHRydWU7XHJcbiAgICAvLyAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICAvLyB9IGVsc2UgaWYgKCEvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC8udGVzdCh0aGlzLnZpZGVvQ2FsbFBheWxvYWQuZW1haWwpKSB7XHJcbiAgICAvLyAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5lbWFpbCA9IHRydWU7XHJcbiAgICAvLyAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAoaGFzRXJyb3JzKSB7XHJcbiAgICAgIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLnVzZXJuYW1lPy50cmltKCkgfHwgIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnUGxlYXNlIGZpbGwgYWxsIHRoZSByZXF1aXJlZCBkZXRhaWxzJyxcclxuICAgICAgICAgIGtleTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy52aWRlb0NhbGxQYXlsb2FkLm1vYmlsZU51bWJlci50b1N0cmluZygpLmxlbmd0aCAhPT0gMTApIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgMTAtZGlnaXQgbW9iaWxlIG51bWJlcicsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIH0gZWxzZSBpZiAodGhpcy52aWRlb0NhbGxQYXlsb2FkLnBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggIT09IDYpIHtcclxuICAgICAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAvLyAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAvLyAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgIC8vICAgICBkZXRhaWw6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCA2LWRpZ2l0IHBpbmNvZGUnLFxyXG4gICAgICAgIC8vICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGVsc2UgaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQuZW1haWw/LnRyaW0oKSB8fCAhL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvLnRlc3QodGhpcy52aWRlb0NhbGxQYXlsb2FkLmVtYWlsKSkge1xyXG4gICAgICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIC8vICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgIC8vICAgICBzdW1tYXJ5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZScsXHJcbiAgICAgICAgLy8gICAgIGRldGFpbDogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIC8vICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXNpZ24gZG9jOiBWaWRlbyBDYWxsIG5ldmVyIGZhbGxzIGJhY2sgdG8gYSBzcGxpdCBib29raW5nLCBhbmQgdmlkZW8tY2FsbC1mb3ItcHJvZHVjdHNcclxuICAgIC8vIGlzIGZyZWUgaW4gdjEgLSBib3RoIGVuZm9yY2VkIHNlcnZlci1zaWRlLiBUaGlzIGRpYWxvZydzIGpvYiBpcyBqdXN0IHBpY2tpbmcgd2hpY2hcclxuICAgIC8vIHByb2R1Y3RzIHRvIHNob3cgYW5kIGhhbmRpbmcgb2ZmIHRvIHRoZSByZWFsIHdpemFyZCBmb3Igc3RhZmYvZGF0ZS90aW1lIGFuZCBjb250YWN0XHJcbiAgICAvLyBkZXRhaWxzLCByYXRoZXIgdGhhbiBjcmVhdGluZyB0aGUgYm9va2luZyBpdHNlbGYgKHRoZXJlJ3Mgbm8gc3RhZmYtcGlja2VyIGhlcmUpLlxyXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgUHJvbWlzZS5hbGwodGhpcy5zZWxlY3RlZFByb2R1Y3RzLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuYWRkT3JkZXJlZEl0ZW0oJ1ZJREVPX0NBTEwnLCBpdGVtKSkpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBTdGF5IG9wZW4gb24gdGhlIFwiU0NIRURVTEVEIFNVQ0NFU1NGVUxMWVwiIHN0YXRlIGluc3RlYWQgb2YgYXV0by1jbG9zaW5nIGludG8gdGhlXHJcbiAgICAgICAgLy8gd2l6YXJkIC0gdGhlIHNob3BwZXIgY29udGludWVzIGV4cGxpY2l0bHkgdmlhIGNvbnRpbnVlQm9va2luZygpLlxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgICAgZGV0YWlsOiAnQ291bGQgbm90IGFkZCBwcm9kdWN0cyB0byB5b3VyIHZpZGVvIGNhbGwg4oCUIHBsZWFzZSB0cnkgYWdhaW4nLFxyXG4gICAgICAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb250aW51ZUJvb2tpbmcoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvaG9tZS1hcHBvaW50bWVudCddLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgbW9kZTogJ1ZJREVPX0NBTEwnLFxyXG4gICAgICAgIHByZWZpbGxOYW1lOiB0aGlzLnZpZGVvQ2FsbFBheWxvYWQudXNlcm5hbWUsXHJcbiAgICAgICAgcHJlZmlsbFBob25lOiB0aGlzLnZpZGVvQ2FsbFBheWxvYWQubW9iaWxlTnVtYmVyXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zKGl0ZW06IGFueSkge1xyXG4gICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xyXG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2R1Y3RzLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2R1Y3RzID0gdGhpcy5zZWxlY3RlZFByb2R1Y3RzLmZpbHRlcihcclxuICAgICAgICBzZWxlY3RlZEl0ZW0gPT4gc2VsZWN0ZWRJdGVtLml0ZW1OYW1lICE9PSBpdGVtLml0ZW1OYW1lXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwibWFpbi1zZWN0aW9uXCI+XHJcbiAgPHAtdG9hc3Qga2V5PVwiVmlkZW8gQ2FsbCBTY2hlZHVsZVwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiXHJcbiAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIiBjbGFzcz1cImJvdHRvbS1yaWdodFwiIC8+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci10ZXh0XCI+U2VlIGl0IExpdmUgb24gVmlkZW8gQ2FsbDwvZGl2PlxyXG4gICAgPG1hdC1pY29uIChjbGljayk9XCJnb0JhY2soKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdGlvbi1oZWFkZXJcIj5cclxuICAgICAgPGgyIGNsYXNzPVwic2VsZWN0aW9uLXRpdGxlXCI+Q2hvb3NlIERlc2lnbnMgZm9yIExpdmUgVmlkZW8gQ2FsbDwvaDI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0aW9uLWNvdW50ZXJcIj57e3NlbGVjdGVkUHJvZHVjdHMubGVuZ3RofX0ve3tyZXNwb25zZURhdGE/Lm9yZGVySXRlbXM/Lmxlbmd0aCA/XHJcbiAgICAgICAgcmVzcG9uc2VEYXRhLm9yZGVySXRlbXMubGVuZ3RoIDogMH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1jYXJkIGNvbC1tZC02IGNvbC0xMlwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG9yZGVyZWRJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJkYXRhPy5pbWdVcmxcIiBhbHQ9XCJwcm9kdWN0X2ltZ1wiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJkYXRhLnNlbGVjdGVkXCIgKGNsaWNrKT1cInNlbGVjdGVkSXRlbXMoZGF0YSlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1wcmljZVwiPuKCuXt7ZGF0YT8uZGlzY291bnRlZFByaWNlID8gZGF0YT8uZGlzY291bnRlZFByaWNlIDogJ04vQSd9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LW5hbWVcIj57e2RhdGE/Lml0ZW1OYW1lID8gZGF0YT8uaXRlbU5hbWUgOiAnTi9BJ319PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlblNjaGVkdWxlQ2FsbChkaWFsb2dCb3gpXCI+U2NoZWR1bGUgdmlkZW8gY2FsbDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjZGlhbG9nQm94PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjaGVkdWxlLWhlYWRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgcC0yXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJjbG9zZURpYWxvZygpXCJcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGYtMThcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy12aWRlbyB3LTEwMCBweS0yIHRleHQtY2VudGVyXCI+TGl2ZSBWaWRlbyBjYWxsIGF0IHlvdXIgY29udmVuaWVuY2UhPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGgtMTAwIHAtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDAgdy0xMDAgbXQtMyB2aWRlby1jYWxsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzg5NzY1MWMxNzUxOTgwNDg3MTcwVmRvIENhbGwuZ2lmXCIgYWx0PVwiXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMCBjYWxsLWRldGFpbHMgd2lkdGgtMTAwXCI+XHJcbiAgICAgICAgICAgIDwhLS0gTmFtZSBJbnB1dCB3aXRoIFZhbGlkYXRpb24gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBteS0zXCIgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJ2YWxpZGF0aW9uRXJyb3JzLnVzZXJuYW1lXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBOYW1lKlwiIFsobmdNb2RlbCldPVwidmlkZW9DYWxsUGF5bG9hZC51c2VybmFtZVwiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgndXNlcm5hbWUnKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIG15LTNcIiBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInZhbGlkYXRpb25FcnJvcnMuZW1haWxcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBFbWFpbCpcIiBbKG5nTW9kZWwpXT1cInZpZGVvQ2FsbFBheWxvYWQuZW1haWxcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ2VtYWlsJylcIj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBNb2JpbGUgTnVtYmVyIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIG15LTNcIiBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInZhbGlkYXRpb25FcnJvcnMubW9iaWxlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LWNhbGxcIj5JTiArOTE8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgTW9iaWxlKlwiIFsobmdNb2RlbCldPVwidmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ21vYmlsZU51bWJlcicpXCIgKGtleWRvd24uYXJyb3dVcCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAod2hlZWwpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSBQaW5jb2RlIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwidmFsaWRhdGlvbkVycm9ycy5waW5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LWNhbGwgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMiBib3JkZXItdW5zZXRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImYtMTggZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgUGluIENvZGUqXCIgY2xhc3M9XCJ3LTg4XCIgWyhuZ01vZGVsKV09XCJ2aWRlb0NhbGxQYXlsb2FkLnBpbmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ3BpbmNvZGUnKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYW5ndWFnZSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktdGV4dCBtYi0yXCI+TGFuZ3VhZ2UgUHJlZmVyZW5jZTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYW5ndWFnZS1jb250YWluZXIgZC1mbGV4IGdhcC0yIGZsZXgtd3JhcCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5nIG9mIGxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZyBweC0yIHB5LTEgcm91bmRlZCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwibGFuZyA9PSBzZWxlY3RlZExhbmcgPyByZXNwb25zZURhdGEuZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRMYW5nID0gbGFuZ1wiIFtzaW1wb0NvbG9yXT1cInJlc3BvbnNlRGF0YS5kYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tsYW5nfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZExhbmcgPT0gJ090aGVycydcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBPdGhlciBMYW5ndWFnZVwiIFsobmdNb2RlbCldPVwib3RoZXJMYW5ndWFnZVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZpZGVvLWJ0biBtdC0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiIXNjaGVkdWxlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNjaGVkdWxlVmlkZW9DYWxsKClcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU3VibWl0dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG1lLTJcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgU0NIRURVTElORy4uLlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+dmlkZW9fY2FsbDwvbWF0LWljb24+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICBTQ0hFRFVMRSBBIFZJREVPIENBTExcclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzY2hlZHVsZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIiBzdHlsZT1cImNvbG9yOiMxRTdBNEI7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIFlvdXIgdmlkZW8gY2FsbCByZXF1ZXN0IGlzIHNhdmVkXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZpZGVvLWJ0biBtdC0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGludWVCb29raW5nKClcIj5cclxuICAgICAgICAgICAgICAgIENvbnRpbnVlIEJvb2tpbmdcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3NlY3Rpb24+Il19
|