@almatar/smart-booking-dashboard 0.0.1 → 0.0.2-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/action-card/action-card.component.mjs +3 -3
- package/esm2022/lib/components/add-note-dialog/add-note-dialog.component.mjs +3 -3
- package/esm2022/lib/components/almatar-aside/aside-back-button.service.mjs +24 -0
- package/esm2022/lib/components/almatar-aside/aside.component.mjs +123 -0
- package/esm2022/lib/components/booking-input/booking-input.component.mjs +4 -3
- package/esm2022/lib/components/cancel-dialog/cancel-dialog.component.mjs +53 -4
- package/esm2022/lib/components/data-search/data-search.component.mjs +3 -3
- package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +544 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.mjs +43 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +296 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +88 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.mjs +242 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-refundable-room/almatar-hotel-auto-cancellation-refundable-room.component.mjs +48 -0
- package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +129 -0
- package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +321 -0
- package/esm2022/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.mjs +52 -0
- package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.mjs +9 -0
- package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.mjs +7 -0
- package/esm2022/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.mjs +2 -0
- package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +448 -0
- package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.mjs +55 -0
- package/esm2022/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.mjs +48 -0
- package/esm2022/lib/components/result-panel/result-panel.component.mjs +3 -3
- package/esm2022/lib/components/shared/components/confirm-modal/confirm-modal.component.mjs +75 -0
- package/esm2022/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.mjs +46 -0
- package/esm2022/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.mjs +9 -0
- package/esm2022/lib/components/shared/interfaces/i-flight-refund-details.mjs +86 -0
- package/esm2022/lib/components/shared/models/cancel-hotel-booking.model.mjs +7 -0
- package/esm2022/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.mjs +27 -0
- package/esm2022/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.mjs +17 -0
- package/esm2022/lib/config/hotel-actions.config.mjs +21 -1
- package/esm2022/lib/models/booking.types.mjs +73 -2
- package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +25 -7
- package/esm2022/lib/services/booking.service.mjs +6 -2
- package/esm2022/lib/shared/components/currency-code-icon/currency-code-icon.component.mjs +35 -0
- package/esm2022/lib/shared/enums/brand-enums.enum.mjs +7 -0
- package/esm2022/lib/shared/environments/environment.mjs +10 -0
- package/esm2022/lib/shared/models/index.mjs +6 -0
- package/esm2022/lib/shared/modules/almatar-icon/almatar-icon.module.mjs +36 -0
- package/esm2022/lib/shared/modules/loader/loader.module.mjs +43 -0
- package/esm2022/lib/shared/pipes/exchange.pipe.mjs +49 -0
- package/esm2022/lib/shared/services/api.service.mjs +42 -0
- package/esm2022/lib/shared/services/shared.service.mjs +34 -0
- package/esm2022/lib/shared/services/translation.service.mjs +61 -0
- package/esm2022/lib/shared/services/webengage-tracking.service.mjs +28 -0
- package/esm2022/lib/shared/store/selectors/currency.selectors.mjs +9 -0
- package/fesm2022/almatar-smart-booking-dashboard.mjs +3278 -180
- package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
- package/lib/components/almatar-aside/aside-back-button.service.d.ts +11 -0
- package/lib/components/almatar-aside/aside.component.d.ts +47 -0
- package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +7 -0
- package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +97 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.d.ts +25 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +91 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.d.ts +39 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.d.ts +44 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-refundable-room/almatar-hotel-auto-cancellation-refundable-room.component.d.ts +19 -0
- package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +38 -0
- package/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.d.ts +142 -0
- package/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.d.ts +23 -0
- package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.d.ts +7 -0
- package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.d.ts +5 -0
- package/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.d.ts +252 -0
- package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.d.ts +82 -0
- package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.d.ts +21 -0
- package/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.d.ts +16 -0
- package/lib/components/shared/components/confirm-modal/confirm-modal.component.d.ts +17 -0
- package/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.d.ts +10 -0
- package/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.d.ts +7 -0
- package/lib/components/shared/interfaces/i-flight-refund-details.d.ts +73 -0
- package/lib/components/shared/models/cancel-hotel-booking.model.d.ts +6 -0
- package/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.d.ts +11 -0
- package/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.d.ts +7 -0
- package/lib/models/booking.types.d.ts +28 -0
- package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +1 -0
- package/lib/shared/components/currency-code-icon/currency-code-icon.component.d.ts +13 -0
- package/lib/shared/enums/brand-enums.enum.d.ts +5 -0
- package/lib/shared/environments/environment.d.ts +7 -0
- package/lib/shared/models/index.d.ts +11 -0
- package/lib/shared/modules/almatar-icon/almatar-icon.module.d.ts +13 -0
- package/lib/shared/modules/loader/loader.module.d.ts +13 -0
- package/lib/shared/pipes/exchange.pipe.d.ts +17 -0
- package/lib/shared/services/api.service.d.ts +43 -0
- package/lib/shared/services/shared.service.d.ts +12 -0
- package/lib/shared/services/translation.service.d.ts +17 -0
- package/lib/shared/services/webengage-tracking.service.d.ts +8 -0
- package/lib/shared/store/selectors/currency.selectors.d.ts +2 -0
- package/package.json +2 -19
- package/LICENSE +0 -21
- package/README.md +0 -132
|
@@ -9,6 +9,26 @@ export const HOTEL_ACTIONS = [
|
|
|
9
9
|
apiField: 'room_information',
|
|
10
10
|
formatter: (data) => ({ title: na(data?.room_information?.type), subtitle: na(data?.room_information?.description),
|
|
11
11
|
points: [{ label: 'Room type', value: na(data?.room_information?.type) }, { label: 'Beds', value: na(data?.room_information?.beds) }, { label: 'View', value: na(data?.room_information?.view) }, { label: 'Floor', value: na(data?.room_information?.floor) }, { label: 'Size', value: na(data?.room_information?.size) }] }) },
|
|
12
|
+
{ key: 'packages', type: 'hotel', label: 'Room Packages', subtitle: 'Rooms · Board Basis · Price', icon: 'pi pi-box',
|
|
13
|
+
apiField: 'packages',
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
formatter: (data) => {
|
|
16
|
+
const packages = data?.packages ?? data?.room_packages ?? [];
|
|
17
|
+
const totalPackages = packages.length;
|
|
18
|
+
const refundableCount = packages.filter((p) => p?.is_refundable || p?.isRefundable || p?.refundable).length;
|
|
19
|
+
return {
|
|
20
|
+
title: `${totalPackages} Package${totalPackages !== 1 ? 's' : ''}`,
|
|
21
|
+
subtitle: `${refundableCount} refundable · ${totalPackages - refundableCount} non-refundable`,
|
|
22
|
+
points: packages.length > 0 ? packages.flatMap((pkg, index) => [
|
|
23
|
+
{ label: `Package ${index + 1}`, value: na(pkg?.package_name || pkg?.packageName || pkg?.room_type) },
|
|
24
|
+
{ label: 'Board basis', value: na(pkg?.board_basis || pkg?.boardBasis || pkg?.board_type) },
|
|
25
|
+
{ label: 'Price', value: na(pkg?.room_amount || pkg?.roomAmount || pkg?.amount) },
|
|
26
|
+
{ label: 'Refundable', value: (pkg?.is_refundable || pkg?.isRefundable || pkg?.refundable) ? 'Yes' : 'No' },
|
|
27
|
+
{ label: 'Status', value: (pkg?.is_cancelled || pkg?.isCancelled || pkg?.cancelled) ? 'Cancelled' : 'Active' }
|
|
28
|
+
]) : [{ label: 'Packages', value: 'Not available' }]
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
},
|
|
12
32
|
{ key: 'checkin_checkout', type: 'hotel', label: 'Check-in / Check-out', subtitle: 'Dates · Times', icon: 'pi pi-calendar',
|
|
13
33
|
apiField: 'checkin_checkout',
|
|
14
34
|
formatter: (data) => ({ title: `${na(data?.checkin_checkout?.checkin_date)} → ${na(data?.checkin_checkout?.checkout_date)}`, subtitle: 'Stay dates and times',
|
|
@@ -50,4 +70,4 @@ export const HOTEL_ACTIONS = [
|
|
|
50
70
|
formatter: (data) => ({ title: na(data?.meals?.board_basis), subtitle: 'Meal inclusions',
|
|
51
71
|
points: [{ label: 'Board basis', value: na(data?.meals?.board_basis) }, { label: 'Breakfast', value: na(data?.meals?.breakfast) }, { label: 'Lunch', value: na(data?.meals?.lunch) }, { label: 'Dinner', value: na(data?.meals?.dinner) }] }) },
|
|
52
72
|
];
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtYWN0aW9ucy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbmZpZy9ob3RlbC1hY3Rpb25zLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSw4REFBOEQ7QUFDOUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFtQjtJQUMzQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxZQUFZO1FBQy9HLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEksTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxF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QUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCO1lBQ3RGLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtDQUNwUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBuYSA9ICh2OiBhbnkpID0+IHYgPz8gJ05vdCBhdmFpbGFibGUnO1xuXG5leHBvcnQgY29uc3QgSE9URUxfQUNUSU9OUzogQWN0aW9uQ29uZmlnW10gPSBbXG4gIHsga2V5OiAnYm9va2luZ19pbmZvJywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdCb29raW5nIE92ZXJ2aWV3Jywgc3VidGl0bGU6ICdTdW1tYXJ5IMK3IFN0YXR1cycsIGljb246ICdwaSBwaS1maWxlJyxcbiAgICBhcGlGaWVsZDogJ2Jvb2tpbmdfaW5mbycsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6IGBCb29raW5nICR7bmEoZGF0YT8uYm9va2luZ19pbmZvPy5yZWZlcmVuY2UpfWAsIHN1YnRpdGxlOiBgQ3JlYXRlZCAke25hKGRhdGE/LmJvb2tpbmdfaW5mbz8uY3JlYXRlZF9hdCl9YCxcbiAgICAgIHBvaW50czogW3sgbGFiZWw6ICdTdGF0dXMnLCB2YWx1ZTogbmEoZGF0YT8uYm9va2luZ19pbmZvPy5zdGF0dXMpIH0sIHsgbGFiZWw6ICdUb3RhbCBwYWlkJywgdmFsdWU6IG5hKGRhdGE/LmJvb2tpbmdfaW5mbz8udG90YWwpIH0sIHsgbGFiZWw6ICdTb3VyY2UnLCB2YWx1ZTogbmEoZGF0YT8uYm9va2luZ19pbmZvPy5zb3VyY2UpIH0sIHsgbGFiZWw6ICdDdXJyZW5jeScsIHZhbHVlOiBuYShkYXRhPy5ib29raW5nX2luZm8/LmN1cnJlbmN5KSB9XSB9KSB9LFxuICB7IGtleTogJ3Jvb21faW5mb3JtYXRpb24nLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ1Jvb20gSW5mb3JtYXRpb24nLCBzdWJ0aXRsZTogJ1R5cGUgwrcgQmVkcyDCtyBWaWV3JywgaWNvbjogJ3BpIHBpLWhvbWUnLFxuICAgIGFwaUZpZWxkOiAncm9vbV9pbmZvcm1hdGlvbicsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6IG5hKGRhdGE/LnJvb21faW5mb3JtYXRpb24/LnR5cGUpLCBzdWJ0aXRsZTogbmEoZGF0YT8ucm9vbV9pbmZvcm1hdGlvbj8uZGVzY3JpcHRpb24pLFxuICAgICAgcG9pbnRzOiBbeyBsYWJlbDogJ1Jvb20gdHlwZScsIHZhbHVlOiBuYShkYXRhPy5yb29tX2luZm9ybWF0aW9uPy50eXBlKSB9LCB7IGxhYmVsOiAnQmVkcycsIHZhbHVlOiBuYShkYXRhPy5yb29tX2luZm9ybWF0aW9uPy5iZWRzKSB9LCB7IGxhYmVsOiAnVmlldycsIHZhbHVlOiBuYShkYXRhPy5yb29tX2luZm9ybWF0aW9uPy52aWV3KSB9LCB7IGxhYmVsOiAnRmxvb3InLCB2YWx1ZTogbmEoZGF0YT8ucm9vbV9pbmZvcm1hdGlvbj8uZmxvb3IpIH0sIHsgbGFiZWw6ICdTaXplJywgdmFsdWU6IG5hKGRhdGE/LnJvb21faW5mb3JtYXRpb24/LnNpemUpIH1dIH0pIH0sXG4gIHsga2V5OiAnY2hlY2tpbl9jaGVja291dCcsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnQ2hlY2staW4gLyBDaGVjay1vdXQnLCBzdWJ0aXRsZTogJ0RhdGVzIMK3IFRpbWVzJywgaWNvbjogJ3BpIHBpLWNhbGVuZGFyJyxcbiAgICBhcGlGaWVsZDogJ2NoZWNraW5fY2hlY2tvdXQnLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+ICh7IHRpdGxlOiBgJHtuYShkYXRhPy5jaGVja2luX2NoZWNrb3V0Py5jaGVja2luX2RhdGUpfSDihpIgJHtuYShkYXRhPy5jaGVja2luX2NoZWNrb3V0Py5jaGVja291dF9kYXRlKX1gLCBzdWJ0aXRsZTogJ1N0YXkgZGF0ZXMgYW5kIHRpbWVzJyxcbiAgICAgIHBvaW50czogW3sgbGFiZWw6ICdDaGVjay1pbiBkYXRlJywgdmFsdWU6IG5hKGRhdGE/LmNoZWNraW5fY2hlY2tvdXQ/LmNoZWNraW5fZGF0ZSkgfSwgeyBsYWJlbDogJ0NoZWNrLWluIHRpbWUnLCB2YWx1ZTogbmEoZGF0YT8uY2hlY2tpbl9jaGVja291dD8uY2hlY2tpbl90aW1lKSB9LCB7IGxhYmVsOiAnQ2hlY2stb3V0IGRhdGUnLCB2YWx1ZTogbmEoZGF0YT8uY2hlY2tpbl9jaGVja291dD8uY2hlY2tvdXRfZGF0ZSkgfSwgeyBsYWJlbDogJ0NoZWNrLW91dCB0aW1lJywgdmFsdWU6IG5hKGRhdGE/LmNoZWNraW5fY2hlY2tvdXQ/LmNoZWNrb3V0X3RpbWUpIH0sIHsgbGFiZWw6ICdOaWdodHMnLCB2YWx1ZTogbmEoZGF0YT8uY2hlY2tpbl9jaGVja291dD8ubmlnaHRzKSB9XSB9KSB9LFxuICB7IGtleTogJ2hvdGVsX2luZm9ybWF0aW9uJywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdIb3RlbCBJbmZvcm1hdGlvbicsIHN1YnRpdGxlOiAnTmFtZSDCtyBTdGFycyDCtyBDb250YWN0JywgaWNvbjogJ3BpIHBpLWJ1aWxkaW5nJyxcbiAgICBhcGlGaWVsZDogJ2hvdGVsX2luZm9ybWF0aW9uJyxcbiAgICBmb3JtYXR0ZXI6IChkYXRhKSA9PiAoeyB0aXRsZTogbmEoZGF0YT8uaG90ZWxfaW5mb3JtYXRpb24/Lm5hbWUpLCBzdWJ0aXRsZTogYCR7bmEoZGF0YT8uaG90ZWxfaW5mb3JtYXRpb24/LnN0YXJzKX3imIUgwrcgJHtuYShkYXRhPy5ob3RlbF9pbmZvcm1hdGlvbj8uY2l0eSl9YCxcbiAgICAgIHBvaW50czogW3sgbGFiZWw6ICdIb3RlbCcsIHZhbHVlOiBuYShkYXRhPy5ob3RlbF9pbmZvcm1hdGlvbj8ubmFtZSkgfSwgeyBsYWJlbDogJ1N0YXJzJywgdmFsdWU6IG5hKGRhdGE/LmhvdGVsX2luZm9ybWF0aW9uPy5zdGFycykgfSwgeyBsYWJlbDogJ1Bob25lJywgdmFsdWU6IG5hKGRhdGE/LmhvdGVsX2luZm9ybWF0aW9uPy5waG9uZSkgfSwgeyBsYWJlbDogJ0VtYWlsJywgdmFsdWU6IG5hKGRhdGE/LmhvdGVsX2luZm9ybWF0aW9uPy5lbWFpbCkgfSwgeyBsYWJlbDogJ1dlYnNpdGUnLCB2YWx1ZTogbmEoZGF0YT8uaG90ZWxfaW5mb3JtYXRpb24/LndlYnNpdGUpIH1dIH0pIH0sXG4gIHsga2V5OiAnbG9jYXRpb25faW5mbycsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnTG9jYXRpb24gSW5mbycsIHN1YnRpdGxlOiAnQWRkcmVzcyDCtyBNYXAnLCBpY29uOiAncGkgcGktbWFwLW1hcmtlcicsXG4gICAgYXBpRmllbGQ6ICdsb2NhdGlvbl9pbmZvJyxcbiAgICBmb3JtYXR0ZXI6IChkYXRhKSA9PiAoeyB0aXRsZTogbmEoZGF0YT8ubG9jYXRpb25faW5mbz8uYWRkcmVzcyksIHN1YnRpdGxlOiBuYShkYXRhPy5sb2NhdGlvbl9pbmZvPy5jaXR5KSxcbiAgICAgIHBvaW50czogW3sgbGFiZWw6ICdBZGRyZXNzJywgdmFsdWU6IG5hKGRhdGE/LmxvY2F0aW9uX2luZm8/LmFkZHJlc3MpIH0sIHsgbGFiZWw6ICdDaXR5JywgdmFsdWU6IG5hKGRhdGE/LmxvY2F0aW9uX2luZm8/LmNpdHkpIH0sIHsgbGFiZWw6ICdDb3VudHJ5JywgdmFsdWU6IG5hKGRhdGE/LmxvY2F0aW9uX2luZm8/LmNvdW50cnkpIH0sIHsgbGFiZWw6ICdaaXAgY29kZScsIHZhbHVlOiBuYShkYXRhPy5sb2NhdGlvbl9pbmZvPy56aXApIH0sIHsgbGFiZWw6ICdMYW5kbWFyaycsIHZhbHVlOiBuYShkYXRhPy5sb2NhdGlvbl9pbmZvPy5sYW5kbWFyaykgfV0gfSkgfSxcbiAgeyBrZXk6ICdob3RlbF9hbWVuaXRpZXMnLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ0hvdGVsIEFtZW5pdGllcycsIHN1YnRpdGxlOiAnUG9vbCDCtyBHeW0gwrcgV2ktRmknLCBpY29uOiAncGkgcGktc3RhcicsXG4gICAgYXBpRmllbGQ6ICdob3RlbF9hbWVuaXRpZXMnLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+IHsgY29uc3QgYW1lbml0aWVzOiBzdHJpbmdbXSA9IGRhdGE/LmhvdGVsX2FtZW5pdGllcz8ubGlzdCA/PyBbXTsgcmV0dXJuIHsgdGl0bGU6ICdBbWVuaXRpZXMnLCBzdWJ0aXRsZTogYCR7YW1lbml0aWVzLmxlbmd0aH0gYW1lbml0aWVzIGF2YWlsYWJsZWAsIHBvaW50czogYW1lbml0aWVzLmxlbmd0aCA+IDAgPyBhbWVuaXRpZXMubWFwKChhKSA9PiAoeyBsYWJlbDogJ+KckycsIHZhbHVlOiBhIH0pKSA6IFt7IGxhYmVsOiAnQW1lbml0aWVzJywgdmFsdWU6ICdOb3QgYXZhaWxhYmxlJyB9XSB9OyB9IH0sXG4gIHsga2V5OiAnbmVhcmJ5X3BsYWNlcycsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnTmVhcmJ5IFBsYWNlcycsIHN1YnRpdGxlOiAnQWlycG9ydCDCtyBBdHRyYWN0aW9ucycsIGljb246ICdwaSBwaS1jb21wYXNzJyxcbiAgICBhcGlGaWVsZDogJ25lYXJieV9wbGFjZXMnLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4geyBjb25zdCBwbGFjZXM6IGFueVtdID0gZGF0YT8ubmVhcmJ5X3BsYWNlcz8ucGxhY2VzID8/IFtdOyByZXR1cm4geyB0aXRsZTogJ05lYXJieSBQbGFjZXMnLCBwb2ludHM6IHBsYWNlcy5sZW5ndGggPiAwID8gcGxhY2VzLmZsYXRNYXAoKHA6IGFueSkgPT4gW3sgbGFiZWw6IG5hKHA/LnR5cGUpLCB2YWx1ZTogYCR7bmEocD8ubmFtZSl9ICgke25hKHA/LmRpc3RhbmNlKX0pYCB9XSkgOiBbeyBsYWJlbDogJ1BsYWNlcycsIHZhbHVlOiAnTm90IGF2YWlsYWJsZScgfV0gfTsgfSB9LFxuICB7IGtleTogJ2V4cGVyaWVuY2VzJywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdFeHBlcmllbmNlcycsIHN1YnRpdGxlOiAnVG91cnMgwrcgQWN0aXZpdGllcycsIGljb246ICdwaSBwaS1zdGFyLWZpbGwnLFxuICAgIGFwaUZpZWxkOiAnZXhwZXJpZW5jZXMnLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4geyBjb25zdCBpdGVtczogYW55W10gPSBkYXRhPy5leHBlcmllbmNlcz8ubGlzdCA/PyBbXTsgcmV0dXJuIHsgdGl0bGU6ICdBdmFpbGFibGUgRXhwZXJpZW5jZXMnLCBwb2ludHM6IGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcy5tYXAoKGU6IGFueSkgPT4gKHsgbGFiZWw6IG5hKGU/Lm5hbWUpLCB2YWx1ZTogbmEoZT8ucHJpY2UpIH0pKSA6IFt7IGxhYmVsOiAnRXhwZXJpZW5jZXMnLCB2YWx1ZTogJ05vdCBhdmFpbGFibGUnIH1dIH07IH0gfSxcbiAgeyBrZXk6ICdwYXltZW50X3N0YXR1cycsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnUGF5bWVudCBTdGF0dXMnLCBzdWJ0aXRsZTogJ0NoYXJnZXMgwrcgUmVjZWlwdCcsIGljb246ICdwaSBwaS1jcmVkaXQtY2FyZCcsXG4gICAgYXBpRmllbGQ6ICdwYXltZW50X3N0YXR1cycsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6ICdQYXltZW50IERldGFpbHMnLCBzdWJ0aXRsZTogbmEoZGF0YT8ucGF5bWVudF9zdGF0dXM/Lm1ldGhvZCksXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnU3RhdHVzJywgdmFsdWU6IG5hKGRhdGE/LnBheW1lbnRfc3RhdHVzPy5zdGF0dXMpIH0sIHsgbGFiZWw6ICdBbW91bnQgcGFpZCcsIHZhbHVlOiBuYShkYXRhPy5wYXltZW50X3N0YXR1cz8uYW1vdW50KSB9LCB7IGxhYmVsOiAnQ3VycmVuY3knLCB2YWx1ZTogbmEoZGF0YT8ucGF5bWVudF9zdGF0dXM/LmN1cnJlbmN5KSB9LCB7IGxhYmVsOiAnVHJhbnNhY3Rpb24nLCB2YWx1ZTogbmEoZGF0YT8ucGF5bWVudF9zdGF0dXM/LnRyYW5zYWN0aW9uX2lkKSB9LCB7IGxhYmVsOiAnRGF0ZScsIHZhbHVlOiBuYShkYXRhPy5wYXltZW50X3N0YXR1cz8uZGF0ZSkgfV0gfSkgfSxcbiAgeyBrZXk6ICd3YWxsZXQnLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ1dhbGxldCAmIENyZWRpdHMnLCBzdWJ0aXRsZTogJ0JhbGFuY2UgwrcgQ2FzaGJhY2snLCBpY29uOiAncGkgcGktd2FsbGV0JyxcbiAgICBhcGlGaWVsZDogJ3dhbGxldCcsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6ICdXYWxsZXQgU3VtbWFyeScsXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnQmFsYW5jZScsIHZhbHVlOiBuYShkYXRhPy53YWxsZXQ/LmJhbGFuY2UpIH0sIHsgbGFiZWw6ICdDYXNoYmFjaycsIHZhbHVlOiBuYShkYXRhPy53YWxsZXQ/LmNhc2hiYWNrKSB9LCB7IGxhYmVsOiAnUHJvbW8gY3JlZGl0JywgdmFsdWU6IG5hKGRhdGE/LndhbGxldD8ucHJvbW9fY3JlZGl0KSB9LCB7IGxhYmVsOiAnTGFzdCB1cGRhdGVkJywgdmFsdWU6IG5hKGRhdGE/LndhbGxldD8udXBkYXRlZF9hdCkgfV0gfSkgfSxcbiAgeyBrZXk6ICdjYW5jZWxsYXRpb25fcG9saWN5JywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdDYW5jZWxsYXRpb24gUG9saWN5Jywgc3VidGl0bGU6ICdGZWVzIMK3IERlYWRsaW5lJywgaWNvbjogJ3BpIHBpLWJhbicsXG4gICAgYXBpRmllbGQ6ICdjYW5jZWxsYXRpb25fcG9saWN5JyxcbiAgICBmb3JtYXR0ZXI6IChkYXRhKSA9PiAoeyB0aXRsZTogJ0NhbmNlbGxhdGlvbiBSdWxlcycsIHN1YnRpdGxlOiBkYXRhPy5jYW5jZWxsYXRpb25fcG9saWN5Py5yZWZ1bmRhYmxlID8gJ1JlZnVuZGFibGUnIDogJ05vbi1yZWZ1bmRhYmxlJyxcbiAgICAgIHBvaW50czogW3sgbGFiZWw6ICdSZWZ1bmRhYmxlJywgdmFsdWU6IGRhdGE/LmNhbmNlbGxhdGlvbl9wb2xpY3k/LnJlZnVuZGFibGUgPyAnWWVzJyA6ICdObycgfSwgeyBsYWJlbDogJ0NhbmNlbCBmZWUnLCB2YWx1ZTogbmEoZGF0YT8uY2FuY2VsbGF0aW9uX3BvbGljeT8uZmVlKSB9LCB7IGxhYmVsOiAnRGVhZGxpbmUnLCB2YWx1ZTogbmEoZGF0YT8uY2FuY2VsbGF0aW9uX3BvbGljeT8uZGVhZGxpbmUpIH0sIHsgbGFiZWw6ICdQb2xpY3knLCB2YWx1ZTogbmEoZGF0YT8uY2FuY2VsbGF0aW9uX3BvbGljeT8uZGVzY3JpcHRpb24pIH1dLFxuICAgICAgY2FsbG91dDogeyB0eXBlOiAnd2FybmluZycsIG1lc3NhZ2U6IGRhdGE/LmNhbmNlbGxhdGlvbl9wb2xpY3k/Lndhcm5pbmcgPz8gJ0Fsd2F5cyB2ZXJpZnkgY2FuY2VsbGF0aW9uIHRlcm1zIHdpdGggdGhlIGhvdGVsLicgfSB9KSB9LFxuICB7IGtleTogJ2JyZWFrZmFzdCcsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnTWVhbHMgJiBCcmVha2Zhc3QnLCBzdWJ0aXRsZTogJ0JvYXJkIGJhc2lzJywgaWNvbjogJ3BpIHBpLWxpc3QnLFxuICAgIGFwaUZpZWxkOiAnbWVhbHMnLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+ICh7IHRpdGxlOiBuYShkYXRhPy5tZWFscz8uYm9hcmRfYmFzaXMpLCBzdWJ0aXRsZTogJ01lYWwgaW5jbHVzaW9ucycsXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnQm9hcmQgYmFzaXMnLCB2YWx1ZTogbmEoZGF0YT8ubWVhbHM/LmJvYXJkX2Jhc2lzKSB9LCB7IGxhYmVsOiAnQnJlYWtmYXN0JywgdmFsdWU6IG5hKGRhdGE/Lm1lYWxzPy5icmVha2Zhc3QpIH0sIHsgbGFiZWw6ICdMdW5jaCcsIHZhbHVlOiBuYShkYXRhPy5tZWFscz8ubHVuY2gpIH0sIHsgbGFiZWw6ICdEaW5uZXInLCB2YWx1ZTogbmEoZGF0YT8ubWVhbHM/LmRpbm5lcikgfV0gfSkgfSxcbl07XG4iXX0=
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtYWN0aW9ucy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbmZpZy9ob3RlbC1hY3Rpb25zLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSw4REFBOEQ7QUFDOUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFtQjtJQUMzQyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxZQUFZO1FBQy9HLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEksTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxF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QUFLLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDcFAsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbkNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZXMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuY29uc3QgbmEgPSAodjogYW55KSA9PiB2ID8/ICdOb3QgYXZhaWxhYmxlJztcblxuZXhwb3J0IGNvbnN0IEhPVEVMX0FDVElPTlM6IEFjdGlvbkNvbmZpZ1tdID0gW1xuICB7IGtleTogJ2Jvb2tpbmdfaW5mbycsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnQm9va2luZyBPdmVydmlldycsIHN1YnRpdGxlOiAnU3VtbWFyeSDCtyBTdGF0dXMnLCBpY29uOiAncGkgcGktZmlsZScsXG4gICAgYXBpRmllbGQ6ICdib29raW5nX2luZm8nLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+ICh7IHRpdGxlOiBgQm9va2luZyAke25hKGRhdGE/LmJvb2tpbmdfaW5mbz8ucmVmZXJlbmNlKX1gLCBzdWJ0aXRsZTogYENyZWF0ZWQgJHtuYShkYXRhPy5ib29raW5nX2luZm8/LmNyZWF0ZWRfYXQpfWAsXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnU3RhdHVzJywgdmFsdWU6IG5hKGRhdGE/LmJvb2tpbmdfaW5mbz8uc3RhdHVzKSB9LCB7IGxhYmVsOiAnVG90YWwgcGFpZCcsIHZhbHVlOiBuYShkYXRhPy5ib29raW5nX2luZm8/LnRvdGFsKSB9LCB7IGxhYmVsOiAnU291cmNlJywgdmFsdWU6IG5hKGRhdGE/LmJvb2tpbmdfaW5mbz8uc291cmNlKSB9LCB7IGxhYmVsOiAnQ3VycmVuY3knLCB2YWx1ZTogbmEoZGF0YT8uYm9va2luZ19pbmZvPy5jdXJyZW5jeSkgfV0gfSkgfSxcbiAgeyBrZXk6ICdyb29tX2luZm9ybWF0aW9uJywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdSb29tIEluZm9ybWF0aW9uJywgc3VidGl0bGU6ICdUeXBlIMK3IEJlZHMgwrcgVmlldycsIGljb246ICdwaSBwaS1ob21lJyxcbiAgICBhcGlGaWVsZDogJ3Jvb21faW5mb3JtYXRpb24nLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+ICh7IHRpdGxlOiBuYShkYXRhPy5yb29tX2luZm9ybWF0aW9uPy50eXBlKSwgc3VidGl0bGU6IG5hKGRhdGE/LnJvb21faW5mb3JtYXRpb24/LmRlc2NyaXB0aW9uKSxcbiAgICAgIHBvaW50czogW3sgbGFiZWw6ICdSb29tIHR5cGUnLCB2YWx1ZTogbmEoZGF0YT8ucm9vbV9pbmZvcm1hdGlvbj8udHlwZSkgfSwgeyBsYWJlbDogJ0JlZHMnLCB2YWx1ZTogbmEoZGF0YT8ucm9vbV9pbmZvcm1hdGlvbj8uYmVkcykgfSwgeyBsYWJlbDogJ1ZpZXcnLCB2YWx1ZTogbmEoZGF0YT8ucm9vbV9pbmZvcm1hdGlvbj8udmlldykgfSwgeyBsYWJlbDogJ0Zsb29yJywgdmFsdWU6IG5hKGRhdGE/LnJvb21faW5mb3JtYXRpb24/LmZsb29yKSB9LCB7IGxhYmVsOiAnU2l6ZScsIHZhbHVlOiBuYShkYXRhPy5yb29tX2luZm9ybWF0aW9uPy5zaXplKSB9XSB9KSB9LFxuICB7IGtleTogJ3BhY2thZ2VzJywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdSb29tIFBhY2thZ2VzJywgc3VidGl0bGU6ICdSb29tcyDCtyBCb2FyZCBCYXNpcyDCtyBQcmljZScsIGljb246ICdwaSBwaS1ib3gnLFxuICAgIGFwaUZpZWxkOiAncGFja2FnZXMnLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgcGFja2FnZXM6IGFueVtdID0gZGF0YT8ucGFja2FnZXMgPz8gZGF0YT8ucm9vbV9wYWNrYWdlcyA/PyBbXTtcbiAgICAgIGNvbnN0IHRvdGFsUGFja2FnZXMgPSBwYWNrYWdlcy5sZW5ndGg7XG4gICAgICBjb25zdCByZWZ1bmRhYmxlQ291bnQgPSBwYWNrYWdlcy5maWx0ZXIoKHA6IGFueSkgPT4gcD8uaXNfcmVmdW5kYWJsZSB8fCBwPy5pc1JlZnVuZGFibGUgfHwgcD8ucmVmdW5kYWJsZSkubGVuZ3RoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IGAke3RvdGFsUGFja2FnZXN9IFBhY2thZ2Uke3RvdGFsUGFja2FnZXMgIT09IDEgPyAncycgOiAnJ31gLFxuICAgICAgICBzdWJ0aXRsZTogYCR7cmVmdW5kYWJsZUNvdW50fSByZWZ1bmRhYmxlIMK3ICR7dG90YWxQYWNrYWdlcyAtIHJlZnVuZGFibGVDb3VudH0gbm9uLXJlZnVuZGFibGVgLFxuICAgICAgICBwb2ludHM6IHBhY2thZ2VzLmxlbmd0aCA+IDAgPyBwYWNrYWdlcy5mbGF0TWFwKChwa2c6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gW1xuICAgICAgICAgIHsgbGFiZWw6IGBQYWNrYWdlICR7aW5kZXggKyAxfWAsIHZhbHVlOiBuYShwa2c/LnBhY2thZ2VfbmFtZSB8fCBwa2c/LnBhY2thZ2VOYW1lIHx8IHBrZz8ucm9vbV90eXBlKSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdCb2FyZCBiYXNpcycsIHZhbHVlOiBuYShwa2c/LmJvYXJkX2Jhc2lzIHx8IHBrZz8uYm9hcmRCYXNpcyB8fCBwa2c/LmJvYXJkX3R5cGUpIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ1ByaWNlJywgdmFsdWU6IG5hKHBrZz8ucm9vbV9hbW91bnQgfHwgcGtnPy5yb29tQW1vdW50IHx8IHBrZz8uYW1vdW50KSB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdSZWZ1bmRhYmxlJywgdmFsdWU6IChwa2c/LmlzX3JlZnVuZGFibGUgfHwgcGtnPy5pc1JlZnVuZGFibGUgfHwgcGtnPy5yZWZ1bmRhYmxlKSA/ICdZZXMnIDogJ05vJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdTdGF0dXMnLCB2YWx1ZTogKHBrZz8uaXNfY2FuY2VsbGVkIHx8IHBrZz8uaXNDYW5jZWxsZWQgfHwgcGtnPy5jYW5jZWxsZWQpID8gJ0NhbmNlbGxlZCcgOiAnQWN0aXZlJyB9XG4gICAgICAgIF0pIDogW3sgbGFiZWw6ICdQYWNrYWdlcycsIHZhbHVlOiAnTm90IGF2YWlsYWJsZScgfV1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuICB7IGtleTogJ2NoZWNraW5fY2hlY2tvdXQnLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ0NoZWNrLWluIC8gQ2hlY2stb3V0Jywgc3VidGl0bGU6ICdEYXRlcyDCtyBUaW1lcycsIGljb246ICdwaSBwaS1jYWxlbmRhcicsXG4gICAgYXBpRmllbGQ6ICdjaGVja2luX2NoZWNrb3V0JyxcbiAgICBmb3JtYXR0ZXI6IChkYXRhKSA9PiAoeyB0aXRsZTogYCR7bmEoZGF0YT8uY2hlY2tpbl9jaGVja291dD8uY2hlY2tpbl9kYXRlKX0g4oaSICR7bmEoZGF0YT8uY2hlY2tpbl9jaGVja291dD8uY2hlY2tvdXRfZGF0ZSl9YCwgc3VidGl0bGU6ICdTdGF5IGRhdGVzIGFuZCB0aW1lcycsXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnQ2hlY2staW4gZGF0ZScsIHZhbHVlOiBuYShkYXRhPy5jaGVja2luX2NoZWNrb3V0Py5jaGVja2luX2RhdGUpIH0sIHsgbGFiZWw6ICdDaGVjay1pbiB0aW1lJywgdmFsdWU6IG5hKGRhdGE/LmNoZWNraW5fY2hlY2tvdXQ/LmNoZWNraW5fdGltZSkgfSwgeyBsYWJlbDogJ0NoZWNrLW91dCBkYXRlJywgdmFsdWU6IG5hKGRhdGE/LmNoZWNraW5fY2hlY2tvdXQ/LmNoZWNrb3V0X2RhdGUpIH0sIHsgbGFiZWw6ICdDaGVjay1vdXQgdGltZScsIHZhbHVlOiBuYShkYXRhPy5jaGVja2luX2NoZWNrb3V0Py5jaGVja291dF90aW1lKSB9LCB7IGxhYmVsOiAnTmlnaHRzJywgdmFsdWU6IG5hKGRhdGE/LmNoZWNraW5fY2hlY2tvdXQ/Lm5pZ2h0cykgfV0gfSkgfSxcbiAgeyBrZXk6ICdob3RlbF9pbmZvcm1hdGlvbicsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnSG90ZWwgSW5mb3JtYXRpb24nLCBzdWJ0aXRsZTogJ05hbWUgwrcgU3RhcnMgwrcgQ29udGFjdCcsIGljb246ICdwaSBwaS1idWlsZGluZycsXG4gICAgYXBpRmllbGQ6ICdob3RlbF9pbmZvcm1hdGlvbicsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6IG5hKGRhdGE/LmhvdGVsX2luZm9ybWF0aW9uPy5uYW1lKSwgc3VidGl0bGU6IGAke25hKGRhdGE/LmhvdGVsX2luZm9ybWF0aW9uPy5zdGFycyl94piFIMK3ICR7bmEoZGF0YT8uaG90ZWxfaW5mb3JtYXRpb24/LmNpdHkpfWAsXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnSG90ZWwnLCB2YWx1ZTogbmEoZGF0YT8uaG90ZWxfaW5mb3JtYXRpb24/Lm5hbWUpIH0sIHsgbGFiZWw6ICdTdGFycycsIHZhbHVlOiBuYShkYXRhPy5ob3RlbF9pbmZvcm1hdGlvbj8uc3RhcnMpIH0sIHsgbGFiZWw6ICdQaG9uZScsIHZhbHVlOiBuYShkYXRhPy5ob3RlbF9pbmZvcm1hdGlvbj8ucGhvbmUpIH0sIHsgbGFiZWw6ICdFbWFpbCcsIHZhbHVlOiBuYShkYXRhPy5ob3RlbF9pbmZvcm1hdGlvbj8uZW1haWwpIH0sIHsgbGFiZWw6ICdXZWJzaXRlJywgdmFsdWU6IG5hKGRhdGE/LmhvdGVsX2luZm9ybWF0aW9uPy53ZWJzaXRlKSB9XSB9KSB9LFxuICB7IGtleTogJ2xvY2F0aW9uX2luZm8nLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ0xvY2F0aW9uIEluZm8nLCBzdWJ0aXRsZTogJ0FkZHJlc3MgwrcgTWFwJywgaWNvbjogJ3BpIHBpLW1hcC1tYXJrZXInLFxuICAgIGFwaUZpZWxkOiAnbG9jYXRpb25faW5mbycsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6IG5hKGRhdGE/LmxvY2F0aW9uX2luZm8/LmFkZHJlc3MpLCBzdWJ0aXRsZTogbmEoZGF0YT8ubG9jYXRpb25faW5mbz8uY2l0eSksXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnQWRkcmVzcycsIHZhbHVlOiBuYShkYXRhPy5sb2NhdGlvbl9pbmZvPy5hZGRyZXNzKSB9LCB7IGxhYmVsOiAnQ2l0eScsIHZhbHVlOiBuYShkYXRhPy5sb2NhdGlvbl9pbmZvPy5jaXR5KSB9LCB7IGxhYmVsOiAnQ291bnRyeScsIHZhbHVlOiBuYShkYXRhPy5sb2NhdGlvbl9pbmZvPy5jb3VudHJ5KSB9LCB7IGxhYmVsOiAnWmlwIGNvZGUnLCB2YWx1ZTogbmEoZGF0YT8ubG9jYXRpb25faW5mbz8uemlwKSB9LCB7IGxhYmVsOiAnTGFuZG1hcmsnLCB2YWx1ZTogbmEoZGF0YT8ubG9jYXRpb25faW5mbz8ubGFuZG1hcmspIH1dIH0pIH0sXG4gIHsga2V5OiAnaG90ZWxfYW1lbml0aWVzJywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdIb3RlbCBBbWVuaXRpZXMnLCBzdWJ0aXRsZTogJ1Bvb2wgwrcgR3ltIMK3IFdpLUZpJywgaWNvbjogJ3BpIHBpLXN0YXInLFxuICAgIGFwaUZpZWxkOiAnaG90ZWxfYW1lbml0aWVzJyxcbiAgICBmb3JtYXR0ZXI6IChkYXRhKSA9PiB7IGNvbnN0IGFtZW5pdGllczogc3RyaW5nW10gPSBkYXRhPy5ob3RlbF9hbWVuaXRpZXM/Lmxpc3QgPz8gW107IHJldHVybiB7IHRpdGxlOiAnQW1lbml0aWVzJywgc3VidGl0bGU6IGAke2FtZW5pdGllcy5sZW5ndGh9IGFtZW5pdGllcyBhdmFpbGFibGVgLCBwb2ludHM6IGFtZW5pdGllcy5sZW5ndGggPiAwID8gYW1lbml0aWVzLm1hcCgoYSkgPT4gKHsgbGFiZWw6ICfinJMnLCB2YWx1ZTogYSB9KSkgOiBbeyBsYWJlbDogJ0FtZW5pdGllcycsIHZhbHVlOiAnTm90IGF2YWlsYWJsZScgfV0gfTsgfSB9LFxuICB7IGtleTogJ25lYXJieV9wbGFjZXMnLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ05lYXJieSBQbGFjZXMnLCBzdWJ0aXRsZTogJ0FpcnBvcnQgwrcgQXR0cmFjdGlvbnMnLCBpY29uOiAncGkgcGktY29tcGFzcycsXG4gICAgYXBpRmllbGQ6ICduZWFyYnlfcGxhY2VzJyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+IHsgY29uc3QgcGxhY2VzOiBhbnlbXSA9IGRhdGE/Lm5lYXJieV9wbGFjZXM/LnBsYWNlcyA/PyBbXTsgcmV0dXJuIHsgdGl0bGU6ICdOZWFyYnkgUGxhY2VzJywgcG9pbnRzOiBwbGFjZXMubGVuZ3RoID4gMCA/IHBsYWNlcy5mbGF0TWFwKChwOiBhbnkpID0+IFt7IGxhYmVsOiBuYShwPy50eXBlKSwgdmFsdWU6IGAke25hKHA/Lm5hbWUpfSAoJHtuYShwPy5kaXN0YW5jZSl9KWAgfV0pIDogW3sgbGFiZWw6ICdQbGFjZXMnLCB2YWx1ZTogJ05vdCBhdmFpbGFibGUnIH1dIH07IH0gfSxcbiAgeyBrZXk6ICdleHBlcmllbmNlcycsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnRXhwZXJpZW5jZXMnLCBzdWJ0aXRsZTogJ1RvdXJzIMK3IEFjdGl2aXRpZXMnLCBpY29uOiAncGkgcGktc3Rhci1maWxsJyxcbiAgICBhcGlGaWVsZDogJ2V4cGVyaWVuY2VzJyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+IHsgY29uc3QgaXRlbXM6IGFueVtdID0gZGF0YT8uZXhwZXJpZW5jZXM/Lmxpc3QgPz8gW107IHJldHVybiB7IHRpdGxlOiAnQXZhaWxhYmxlIEV4cGVyaWVuY2VzJywgcG9pbnRzOiBpdGVtcy5sZW5ndGggPiAwID8gaXRlbXMubWFwKChlOiBhbnkpID0+ICh7IGxhYmVsOiBuYShlPy5uYW1lKSwgdmFsdWU6IG5hKGU/LnByaWNlKSB9KSkgOiBbeyBsYWJlbDogJ0V4cGVyaWVuY2VzJywgdmFsdWU6ICdOb3QgYXZhaWxhYmxlJyB9XSB9OyB9IH0sXG4gIHsga2V5OiAncGF5bWVudF9zdGF0dXMnLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ1BheW1lbnQgU3RhdHVzJywgc3VidGl0bGU6ICdDaGFyZ2VzIMK3IFJlY2VpcHQnLCBpY29uOiAncGkgcGktY3JlZGl0LWNhcmQnLFxuICAgIGFwaUZpZWxkOiAncGF5bWVudF9zdGF0dXMnLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+ICh7IHRpdGxlOiAnUGF5bWVudCBEZXRhaWxzJywgc3VidGl0bGU6IG5hKGRhdGE/LnBheW1lbnRfc3RhdHVzPy5tZXRob2QpLFxuICAgICAgcG9pbnRzOiBbeyBsYWJlbDogJ1N0YXR1cycsIHZhbHVlOiBuYShkYXRhPy5wYXltZW50X3N0YXR1cz8uc3RhdHVzKSB9LCB7IGxhYmVsOiAnQW1vdW50IHBhaWQnLCB2YWx1ZTogbmEoZGF0YT8ucGF5bWVudF9zdGF0dXM/LmFtb3VudCkgfSwgeyBsYWJlbDogJ0N1cnJlbmN5JywgdmFsdWU6IG5hKGRhdGE/LnBheW1lbnRfc3RhdHVzPy5jdXJyZW5jeSkgfSwgeyBsYWJlbDogJ1RyYW5zYWN0aW9uJywgdmFsdWU6IG5hKGRhdGE/LnBheW1lbnRfc3RhdHVzPy50cmFuc2FjdGlvbl9pZCkgfSwgeyBsYWJlbDogJ0RhdGUnLCB2YWx1ZTogbmEoZGF0YT8ucGF5bWVudF9zdGF0dXM/LmRhdGUpIH1dIH0pIH0sXG4gIHsga2V5OiAnd2FsbGV0JywgdHlwZTogJ2hvdGVsJywgbGFiZWw6ICdXYWxsZXQgJiBDcmVkaXRzJywgc3VidGl0bGU6ICdCYWxhbmNlIMK3IENhc2hiYWNrJywgaWNvbjogJ3BpIHBpLXdhbGxldCcsXG4gICAgYXBpRmllbGQ6ICd3YWxsZXQnLFxuICAgIGZvcm1hdHRlcjogKGRhdGEpID0+ICh7IHRpdGxlOiAnV2FsbGV0IFN1bW1hcnknLFxuICAgICAgcG9pbnRzOiBbeyBsYWJlbDogJ0JhbGFuY2UnLCB2YWx1ZTogbmEoZGF0YT8ud2FsbGV0Py5iYWxhbmNlKSB9LCB7IGxhYmVsOiAnQ2FzaGJhY2snLCB2YWx1ZTogbmEoZGF0YT8ud2FsbGV0Py5jYXNoYmFjaykgfSwgeyBsYWJlbDogJ1Byb21vIGNyZWRpdCcsIHZhbHVlOiBuYShkYXRhPy53YWxsZXQ/LnByb21vX2NyZWRpdCkgfSwgeyBsYWJlbDogJ0xhc3QgdXBkYXRlZCcsIHZhbHVlOiBuYShkYXRhPy53YWxsZXQ/LnVwZGF0ZWRfYXQpIH1dIH0pIH0sXG4gIHsga2V5OiAnY2FuY2VsbGF0aW9uX3BvbGljeScsIHR5cGU6ICdob3RlbCcsIGxhYmVsOiAnQ2FuY2VsbGF0aW9uIFBvbGljeScsIHN1YnRpdGxlOiAnRmVlcyDCtyBEZWFkbGluZScsIGljb246ICdwaSBwaS1iYW4nLFxuICAgIGFwaUZpZWxkOiAnY2FuY2VsbGF0aW9uX3BvbGljeScsXG4gICAgZm9ybWF0dGVyOiAoZGF0YSkgPT4gKHsgdGl0bGU6ICdDYW5jZWxsYXRpb24gUnVsZXMnLCBzdWJ0aXRsZTogZGF0YT8uY2FuY2VsbGF0aW9uX3BvbGljeT8ucmVmdW5kYWJsZSA/ICdSZWZ1bmRhYmxlJyA6ICdOb24tcmVmdW5kYWJsZScsXG4gICAgICBwb2ludHM6IFt7IGxhYmVsOiAnUmVmdW5kYWJsZScsIHZhbHVlOiBkYXRhPy5jYW5jZWxsYXRpb25fcG9saWN5Py5yZWZ1bmRhYmxlID8gJ1llcycgOiAnTm8nIH0sIHsgbGFiZWw6ICdDYW5jZWwgZmVlJywgdmFsdWU6IG5hKGRhdGE/LmNhbmNlbGxhdGlvbl9wb2xpY3k/LmZlZSkgfSwgeyBsYWJlbDogJ0RlYWRsaW5lJywgdmFsdWU6IG5hKGRhdGE/LmNhbmNlbGxhdGlvbl9wb2xpY3k/LmRlYWRsaW5lKSB9LCB7IGxhYmVsOiAnUG9saWN5JywgdmFsdWU6IG5hKGRhdGE/LmNhbmNlbGxhdGlvbl9wb2xpY3k/LmRlc2NyaXB0aW9uKSB9XSxcbiAgICAgIGNhbGxvdXQ6IHsgdHlwZTogJ3dhcm5pbmcnLCBtZXNzYWdlOiBkYXRhPy5jYW5jZWxsYXRpb25fcG9saWN5Py53YXJuaW5nID8/ICdBbHdheXMgdmVyaWZ5IGNhbmNlbGxhdGlvbiB0ZXJtcyB3aXRoIHRoZSBob3RlbC4nIH0gfSkgfSxcbiAgeyBrZXk6ICdicmVha2Zhc3QnLCB0eXBlOiAnaG90ZWwnLCBsYWJlbDogJ01lYWxzICYgQnJlYWtmYXN0Jywgc3VidGl0bGU6ICdCb2FyZCBiYXNpcycsIGljb246ICdwaSBwaS1saXN0JyxcbiAgICBhcGlGaWVsZDogJ21lYWxzJyxcbiAgICBmb3JtYXR0ZXI6IChkYXRhKSA9PiAoeyB0aXRsZTogbmEoZGF0YT8ubWVhbHM/LmJvYXJkX2Jhc2lzKSwgc3VidGl0bGU6ICdNZWFsIGluY2x1c2lvbnMnLFxuICAgICAgcG9pbnRzOiBbeyBsYWJlbDogJ0JvYXJkIGJhc2lzJywgdmFsdWU6IG5hKGRhdGE/Lm1lYWxzPy5ib2FyZF9iYXNpcykgfSwgeyBsYWJlbDogJ0JyZWFrZmFzdCcsIHZhbHVlOiBuYShkYXRhPy5tZWFscz8uYnJlYWtmYXN0KSB9LCB7IGxhYmVsOiAnTHVuY2gnLCB2YWx1ZTogbmEoZGF0YT8ubWVhbHM/Lmx1bmNoKSB9LCB7IGxhYmVsOiAnRGlubmVyJywgdmFsdWU6IG5hKGRhdGE/Lm1lYWxzPy5kaW5uZXIpIH1dIH0pIH0sXG5dO1xuIl19
|
|
@@ -1,2 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Maps raw API response to IHotelBookingData interface
|
|
3
|
+
* This function handles the actual API response format from the booking endpoint
|
|
4
|
+
*/
|
|
5
|
+
export function mapToHotelBookingData(apiResponse) {
|
|
6
|
+
if (!apiResponse) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
// The actual API structure has hotel info in data.hotel[0]
|
|
10
|
+
const data = apiResponse.data || apiResponse;
|
|
11
|
+
const hotelData = data.hotel?.[0];
|
|
12
|
+
if (!hotelData) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
// Calculate number of nights from check-in and check-out dates
|
|
16
|
+
const calculateNights = (checkIn, checkOut) => {
|
|
17
|
+
if (!checkIn || !checkOut)
|
|
18
|
+
return 0;
|
|
19
|
+
const start = new Date(checkIn);
|
|
20
|
+
const end = new Date(checkOut);
|
|
21
|
+
const diffTime = Math.abs(end.getTime() - start.getTime());
|
|
22
|
+
return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
23
|
+
};
|
|
24
|
+
const numberOfNights = calculateNights(hotelData.checkIn, hotelData.checkOut);
|
|
25
|
+
// Map roomPackages to IBookingPackage format
|
|
26
|
+
const packages = (hotelData.roomPackages || []).map((pkg) => ({
|
|
27
|
+
id: pkg._id,
|
|
28
|
+
rooms: (pkg.rooms || []).map((room) => ({
|
|
29
|
+
roomId: room._id,
|
|
30
|
+
roomName: room.roomName || room.class || '',
|
|
31
|
+
roomType: room.type || room.class || '',
|
|
32
|
+
roomView: room.roomView || room.viewType || '',
|
|
33
|
+
roomBasis: room.basis || '',
|
|
34
|
+
bedType: room.bedType || '',
|
|
35
|
+
adultsNum: room.adultNum,
|
|
36
|
+
childrenNum: room.childrenNum,
|
|
37
|
+
passengers: room.passengers,
|
|
38
|
+
})),
|
|
39
|
+
cancellationPolicies: pkg.payLaterCancellationPolicies || [],
|
|
40
|
+
isRefundable: pkg.isRefundable || false,
|
|
41
|
+
refundableUntil: pkg.refundableUntil || '',
|
|
42
|
+
refundability: pkg.refundability || pkg.isRefundable,
|
|
43
|
+
cancellationPoliciesRemarks: pkg.cancellationPoliciesRemarks,
|
|
44
|
+
isCancelled: pkg.isCancelled,
|
|
45
|
+
supplier: pkg.supplier?.name || pkg.supplierName,
|
|
46
|
+
}));
|
|
47
|
+
return {
|
|
48
|
+
// Hotel Information
|
|
49
|
+
hotelId: hotelData.hotelId,
|
|
50
|
+
bookingId: data._id,
|
|
51
|
+
hotelName: hotelData.hotelName,
|
|
52
|
+
coverImage: hotelData.hotelMainImage,
|
|
53
|
+
// Check-in/Check-out dates
|
|
54
|
+
dateFrom: hotelData.checkIn,
|
|
55
|
+
dateTo: hotelData.checkOut,
|
|
56
|
+
from: hotelData.checkIn ? { _i: hotelData.checkIn } : undefined,
|
|
57
|
+
to: hotelData.checkOut ? { _i: hotelData.checkOut } : undefined,
|
|
58
|
+
// Room/Package Information
|
|
59
|
+
packages: packages,
|
|
60
|
+
rooms: hotelData.roomPackages?.length || packages.length,
|
|
61
|
+
// Duration
|
|
62
|
+
numberOfNights: numberOfNights,
|
|
63
|
+
nightNumber: numberOfNights,
|
|
64
|
+
// Times
|
|
65
|
+
checkInTime: hotelData.checkInTime,
|
|
66
|
+
checkOutTime: hotelData.checkOutTime,
|
|
67
|
+
// Pricing
|
|
68
|
+
price: hotelData.customerPrice?.amountToBeCollected || hotelData.customerPrice?.amountWithMarkeup,
|
|
69
|
+
// Preserve raw data for accessing booking_info (notes, history, etc.)
|
|
70
|
+
data: apiResponse,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvbW9kZWxzL2Jvb2tpbmcudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNENBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxXQUFnQjtJQUNwRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBVSxFQUFFO1FBQ3BFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUYs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VztLQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCb29raW5nUGFja2FnZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2ludGVyZmFjZXMvaS1hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RUeXBlID0gJ2ZsaWdodCcgfCAnaG90ZWwnO1xuXG5leHBvcnQgdHlwZSBCb29raW5nU3RhdHVzID0gJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBCb29raW5nUmVzcG9uc2Uge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBkYXRhOiBhbnk7XG4gIGVsYXBzZWRNczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIb3RlbEJvb2tpbmdEYXRhIHtcbiAgLy8gSG90ZWwgSW5mb3JtYXRpb25cbiAgaG90ZWxJZD86IHN0cmluZyB8IG51bWJlcjtcbiAgYm9va2luZ0lkPzogc3RyaW5nIHwgbnVtYmVyO1xuICBob3RlbE5hbWU/OiBzdHJpbmc7XG4gIGNvdmVySW1hZ2U/OiBzdHJpbmc7XG5cbiAgLy8gQ2hlY2staW4vQ2hlY2stb3V0IGRhdGVzXG4gIGRhdGVGcm9tPzogc3RyaW5nO1xuICBkYXRlVG8/OiBzdHJpbmc7XG4gIGZyb20/OiB7IF9pPzogc3RyaW5nIH07ICAvLyBBbHRlcm5hdGl2ZSBkYXRlIGZvcm1hdFxuICB0bz86IHsgX2k/OiBzdHJpbmcgfTsgICAgLy8gQWx0ZXJuYXRpdmUgZGF0ZSBmb3JtYXRcblxuICAvLyBSb29tL1BhY2thZ2UgSW5mb3JtYXRpb25cbiAgcGFja2FnZXM/OiBJQm9va2luZ1BhY2thZ2VbXTtcbiAgcm9vbXM/OiBudW1iZXI7XG5cbiAgLy8gRHVyYXRpb25cbiAgbnVtYmVyT2ZOaWdodHM/OiBudW1iZXI7XG4gIG5pZ2h0TnVtYmVyPzogbnVtYmVyO1xuXG4gIC8vIFRpbWVzXG4gIGNoZWNrSW5UaW1lPzogc3RyaW5nO1xuICBjaGVja091dFRpbWU/OiBzdHJpbmc7XG5cbiAgLy8gUHJpY2luZ1xuICBwcmljZT86IG51bWJlcjtcblxuICAvLyBQcmVzZXJ2ZSByYXcgZGF0YSBmb3IgYWNjZXNzaW5nIGJvb2tpbmdfaW5mbyAobm90ZXMsIGhpc3RvcnksIGV0Yy4pXG4gIGRhdGE/OiBhbnk7XG59XG5cbi8qKlxuICogTWFwcyByYXcgQVBJIHJlc3BvbnNlIHRvIElIb3RlbEJvb2tpbmdEYXRhIGludGVyZmFjZVxuICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBhY3R1YWwgQVBJIHJlc3BvbnNlIGZvcm1hdCBmcm9tIHRoZSBib29raW5nIGVuZHBvaW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0hvdGVsQm9va2luZ0RhdGEoYXBpUmVzcG9uc2U6IGFueSk6IElIb3RlbEJvb2tpbmdEYXRhIHwgbnVsbCB7XG4gIGlmICghYXBpUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRoZSBhY3R1YWwgQVBJIHN0cnVjdHVyZSBoYXMgaG90ZWwgaW5mbyBpbiBkYXRhLmhvdGVsWzBdXG4gIGNvbnN0IGRhdGEgPSBhcGlSZXNwb25zZS5kYXRhIHx8IGFwaVJlc3BvbnNlO1xuICBjb25zdCBob3RlbERhdGEgPSBkYXRhLmhvdGVsPy5bMF07XG5cbiAgaWYgKCFob3RlbERhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBudW1iZXIgb2YgbmlnaHRzIGZyb20gY2hlY2staW4gYW5kIGNoZWNrLW91dCBkYXRlc1xuICBjb25zdCBjYWxjdWxhdGVOaWdodHMgPSAoY2hlY2tJbjogc3RyaW5nLCBjaGVja091dDogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBpZiAoIWNoZWNrSW4gfHwgIWNoZWNrT3V0KSByZXR1cm4gMDtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGNoZWNrSW4pO1xuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKGNoZWNrT3V0KTtcbiAgICBjb25zdCBkaWZmVGltZSA9IE1hdGguYWJzKGVuZC5nZXRUaW1lKCkgLSBzdGFydC5nZXRUaW1lKCkpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoZGlmZlRpbWUgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICB9O1xuXG4gIGNvbnN0IG51bWJlck9mTmlnaHRzID0gY2FsY3VsYXRlTmlnaHRzKGhvdGVsRGF0YS5jaGVja0luLCBob3RlbERhdGEuY2hlY2tPdXQpO1xuXG4gIC8vIE1hcCByb29tUGFja2FnZXMgdG8gSUJvb2tpbmdQYWNrYWdlIGZvcm1hdFxuICBjb25zdCBwYWNrYWdlczogSUJvb2tpbmdQYWNrYWdlW10gPSAoaG90ZWxEYXRhLnJvb21QYWNrYWdlcyB8fCBbXSkubWFwKChwa2c6IGFueSkgPT4gKHtcbiAgICBpZDogcGtnLl9pZCxcbiAgICByb29tczogKHBrZy5yb29tcyB8fCBbXSkubWFwKChyb29tOiBhbnkpID0+ICh7XG4gICAgICByb29tSWQ6IHJvb20uX2lkLFxuICAgICAgcm9vbU5hbWU6IHJvb20ucm9vbU5hbWUgfHwgcm9vbS5jbGFzcyB8fCAnJyxcbiAgICAgIHJvb21UeXBlOiByb29tLnR5cGUgfHwgcm9vbS5jbGFzcyB8fCAnJyxcbiAgICAgIHJvb21WaWV3OiByb29tLnJvb21WaWV3IHx8IHJvb20udmlld1R5cGUgfHwgJycsXG4gICAgICByb29tQmFzaXM6IHJvb20uYmFzaXMgfHwgJycsXG4gICAgICBiZWRUeXBlOiByb29tLmJlZFR5cGUgfHwgJycsXG4gICAgICBhZHVsdHNOdW06IHJvb20uYWR1bHROdW0sXG4gICAgICBjaGlsZHJlbk51bTogcm9vbS5jaGlsZHJlbk51bSxcbiAgICAgIHBhc3NlbmdlcnM6IHJvb20ucGFzc2VuZ2VycyxcbiAgICB9KSksXG4gICAgY2FuY2VsbGF0aW9uUG9saWNpZXM6IHBrZy5wYXlMYXRlckNhbmNlbGxhdGlvblBvbGljaWVzIHx8IFtdLFxuICAgIGlzUmVmdW5kYWJsZTogcGtnLmlzUmVmdW5kYWJsZSB8fCBmYWxzZSxcbiAgICByZWZ1bmRhYmxlVW50aWw6IHBrZy5yZWZ1bmRhYmxlVW50aWwgfHwgJycsXG4gICAgcmVmdW5kYWJpbGl0eTogcGtnLnJlZnVuZGFiaWxpdHkgfHwgcGtnLmlzUmVmdW5kYWJsZSxcbiAgICBjYW5jZWxsYXRpb25Qb2xpY2llc1JlbWFya3M6IHBrZy5jYW5jZWxsYXRpb25Qb2xpY2llc1JlbWFya3MsXG4gICAgaXNDYW5jZWxsZWQ6IHBrZy5pc0NhbmNlbGxlZCxcbiAgICBzdXBwbGllcjogcGtnLnN1cHBsaWVyPy5uYW1lIHx8IHBrZy5zdXBwbGllck5hbWUsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIC8vIEhvdGVsIEluZm9ybWF0aW9uXG4gICAgaG90ZWxJZDogaG90ZWxEYXRhLmhvdGVsSWQsXG4gICAgYm9va2luZ0lkOiBkYXRhLl9pZCxcbiAgICBob3RlbE5hbWU6IGhvdGVsRGF0YS5ob3RlbE5hbWUsXG4gICAgY292ZXJJbWFnZTogaG90ZWxEYXRhLmhvdGVsTWFpbkltYWdlLFxuXG4gICAgLy8gQ2hlY2staW4vQ2hlY2stb3V0IGRhdGVzXG4gICAgZGF0ZUZyb206IGhvdGVsRGF0YS5jaGVja0luLFxuICAgIGRhdGVUbzogaG90ZWxEYXRhLmNoZWNrT3V0LFxuICAgIGZyb206IGhvdGVsRGF0YS5jaGVja0luID8geyBfaTogaG90ZWxEYXRhLmNoZWNrSW4gfSA6IHVuZGVmaW5lZCxcbiAgICB0bzogaG90ZWxEYXRhLmNoZWNrT3V0ID8geyBfaTogaG90ZWxEYXRhLmNoZWNrT3V0IH0gOiB1bmRlZmluZWQsXG5cbiAgICAvLyBSb29tL1BhY2thZ2UgSW5mb3JtYXRpb25cbiAgICBwYWNrYWdlczogcGFja2FnZXMsXG4gICAgcm9vbXM6IGhvdGVsRGF0YS5yb29tUGFja2FnZXM/Lmxlbmd0aCB8fCBwYWNrYWdlcy5sZW5ndGgsXG5cbiAgICAvLyBEdXJhdGlvblxuICAgIG51bWJlck9mTmlnaHRzOiBudW1iZXJPZk5pZ2h0cyxcbiAgICBuaWdodE51bWJlcjogbnVtYmVyT2ZOaWdodHMsXG5cbiAgICAvLyBUaW1lc1xuICAgIGNoZWNrSW5UaW1lOiBob3RlbERhdGEuY2hlY2tJblRpbWUsXG4gICAgY2hlY2tPdXRUaW1lOiBob3RlbERhdGEuY2hlY2tPdXRUaW1lLFxuXG4gICAgLy8gUHJpY2luZ1xuICAgIHByaWNlOiBob3RlbERhdGEuY3VzdG9tZXJQcmljZT8uYW1vdW50VG9CZUNvbGxlY3RlZCB8fCBob3RlbERhdGEuY3VzdG9tZXJQcmljZT8uYW1vdW50V2l0aE1hcmtldXAsXG5cbiAgICAvLyBQcmVzZXJ2ZSByYXcgZGF0YSBmb3IgYWNjZXNzaW5nIGJvb2tpbmdfaW5mbyAobm90ZXMsIGhpc3RvcnksIGV0Yy4pXG4gICAgZGF0YTogYXBpUmVzcG9uc2UsXG4gIH07XG59XG4iXX0=
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { Component, computed, inject, signal, HostListener } from '@angular/core';
|
|
2
|
-
import { LowerCasePipe } from '@angular/common';
|
|
2
|
+
import { LowerCasePipe, NgIf } from '@angular/common';
|
|
3
3
|
import { ButtonModule } from 'primeng/button';
|
|
4
4
|
import { SbdBookingService } from '../../services/booking.service';
|
|
5
5
|
import { SbdToastService } from '../../services/toast.service';
|
|
6
6
|
import { FLIGHT_ACTIONS } from '../../config/flight-actions.config';
|
|
7
7
|
import { HOTEL_ACTIONS } from '../../config/hotel-actions.config';
|
|
8
|
+
import { mapToHotelBookingData } from '../../models/booking.types';
|
|
8
9
|
import { SbdBookingInputComponent } from '../../components/booking-input/booking-input.component';
|
|
9
10
|
import { SbdWorkflowActionsComponent } from '../../components/workflow-actions/workflow-actions.component';
|
|
10
11
|
import { SbdActionGridComponent } from '../../components/action-grid/action-grid.component';
|
|
11
12
|
import { SbdCancelDialogComponent } from '../../components/cancel-dialog/cancel-dialog.component';
|
|
13
|
+
import { AlmatarHotelAutoCancellationComponent } from '../../components/hotel-cancel/almatar-hotel-auto-cancellation.component';
|
|
12
14
|
import { SbdFlightItineraryCardComponent } from '../../components/flight-itinerary-card/flight-itinerary-card.component';
|
|
15
|
+
import { SbdHotelItineraryCardComponent } from '../../components/hotel-itinerary-card/hotel-itinerary-card.component';
|
|
13
16
|
import { SbdDataSearchComponent } from '../../components/data-search/data-search.component';
|
|
14
17
|
import { SbdActionDialogComponent } from '../../components/action-dialog/action-dialog.component';
|
|
15
18
|
import { SbdAddNoteDialogComponent } from '../../components/add-note-dialog/add-note-dialog.component';
|
|
19
|
+
import { SbdHotelContentComponent } from '../../components/hotel-cancel/components/hotel-content/hotel-content.component';
|
|
16
20
|
import * as i0 from "@angular/core";
|
|
17
21
|
import * as i1 from "primeng/button";
|
|
18
22
|
export class SmartBookingDashboardComponent {
|
|
@@ -22,9 +26,9 @@ export class SmartBookingDashboardComponent {
|
|
|
22
26
|
this.product = signal('flight');
|
|
23
27
|
this.bookingId = signal('');
|
|
24
28
|
this.bookingStatus = signal('idle');
|
|
25
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
29
|
this.bookingData = signal(null);
|
|
27
30
|
this.cancelDialogOpen = signal(false);
|
|
31
|
+
this.hotelAutoCancelDialogOpen = signal(false);
|
|
28
32
|
this.actionDialogOpen = signal(false);
|
|
29
33
|
this.addNoteDialogOpen = signal(false);
|
|
30
34
|
this.selectedActionKey = signal(null);
|
|
@@ -109,9 +113,19 @@ export class SmartBookingDashboardComponent {
|
|
|
109
113
|
if (!id)
|
|
110
114
|
return;
|
|
111
115
|
this.bookingStatus.set('loading');
|
|
112
|
-
|
|
116
|
+
const fields = this.product() === 'hotel'
|
|
117
|
+
? ['booking_info', 'hotel_information', 'checkin_checkout', 'room_information']
|
|
118
|
+
: 'booking_info';
|
|
119
|
+
this.bookingService.getBooking(id, this.product(), fields).subscribe({
|
|
113
120
|
next: ({ data }) => {
|
|
114
|
-
|
|
121
|
+
// console.log('Booking data received:', data);
|
|
122
|
+
if (this.product() === 'hotel') {
|
|
123
|
+
const mappedData = mapToHotelBookingData(data);
|
|
124
|
+
this.bookingData.set(mappedData);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.bookingData.set(data);
|
|
128
|
+
}
|
|
115
129
|
this.bookingStatus.set('success');
|
|
116
130
|
},
|
|
117
131
|
error: () => {
|
|
@@ -122,7 +136,7 @@ export class SmartBookingDashboardComponent {
|
|
|
122
136
|
});
|
|
123
137
|
}
|
|
124
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartBookingDashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SmartBookingDashboardComponent, isStandalone: true, selector: "app-smart-booking-dashboard", host: { listeners: { "document:keydown": "onKeydown($event)" } }, ngImport: i0, template: "<div class=\"sbd-page\">\n\n <!-- Search bar full-width at top -->\n <div class=\"sbd-page__search\">\n <app-sbd-booking-input\n [(product)]=\"product\"\n [(bookingId)]=\"bookingId\"\n [loading]=\"bookingStatus() === 'loading'\"\n (lookup)=\"lookupBooking()\"\n />\n </div>\n\n <!-- 2-column layout -->\n <div class=\"sbd-page__content\">\n\n <!-- Left: booking context -->\n <aside class=\"sbd-page__aside\">\n\n <!-- Data search at the top of the sidebar -->\n @if (bookingStatus() === 'success') {\n <app-sbd-data-search [data]=\"bookingData()\" />\n <app-sbd-flight-itinerary-card [product]=\"product()\" [data]=\"bookingData()\" [verified]=\"dataVerified()\" />\n }\n\n <!-- Loading skeleton for aside -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:60%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:80%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:50%\"></div>\n </div>\n }\n\n </aside>\n\n <!-- Right: agent workspace -->\n <main class=\"sbd-page__main\">\n\n <!-- Error state -->\n @if (bookingStatus() === 'error') {\n <div class=\"sbd-page__error\">\n <i class=\"pi pi-exclamation-circle\"></i>\n <span>Booking not found. Double-check the ID and product type, then try again.</span>\n </div>\n }\n\n <!-- Content once loaded -->\n @if (bookingStatus() === 'success') {\n\n <!-- Quick actions -->\n <div class=\"sbd-page__quick-actions\">\n <span class=\"sbd-page__quick-label\">Quick actions</span>\n <app-sbd-workflow-actions\n [bookingId]=\"bookingId()\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n />\n </div>\n\n <!-- Action grid -->\n <app-sbd-action-grid\n [actions]=\"availableActions()\"\n [activeKey]=\"selectedActionKey()\"\n (actionSelected)=\"openAction($event)\"\n />\n\n <!-- Context: Notes + Changes tabbed -->\n <div class=\"sbd-page__context\">\n\n <!-- Tab bar -->\n <div class=\"sbd-page__context-tabs\">\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'changes'\"\n (click)=\"activeContextTab.set('changes')\">\n <i class=\"pi pi-history\"></i>\n Changes\n @if (bookingHistory().length > 0) {\n <span class=\"sbd-page__context-pill sbd-page__context-pill--changes\">{{ bookingHistory().length }}</span>\n }\n </button>\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'notes'\"\n (click)=\"activeContextTab.set('notes')\">\n <i class=\"pi pi-comments\"></i>\n Notes\n <span class=\"sbd-page__context-pill sbd-page__context-pill--notes\">{{ bookingNotes().length }}</span>\n </button>\n @if (activeContextTab() === 'notes') {\n <button pButton label=\"Add Note\" icon=\"pi pi-plus\" class=\"p-button-sm p-button-outlined sbd-page__context-add\"\n (click)=\"addNoteDialogOpen.set(true)\">\n </button>\n }\n </div>\n\n <!-- Notes tab -->\n @if (activeContextTab() === 'notes') {\n <div class=\"sbd-page__notes-list\">\n @if (bookingNotes().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-inbox\"></i> No notes yet\n </div>\n }\n @for (note of bookingNotes(); track $index) {\n <div class=\"sbd-page__note\">\n <div class=\"sbd-page__note-top\">\n <span class=\"sbd-page__note-badge sbd-page__note-badge--{{ note.action | lowercase }}\">\n {{ note.action }}\n </span>\n <span class=\"sbd-page__note-author\">\n {{ note.writtenBy?.firstName }} {{ note.writtenBy?.lastName }}\n </span>\n <span class=\"sbd-page__note-date\">{{ fmtNoteDate(note.date) }}</span>\n </div>\n <p class=\"sbd-page__note-msg\">{{ note.message }}</p>\n </div>\n }\n </div>\n }\n\n <!-- Changes tab -->\n @if (activeContextTab() === 'changes') {\n <div class=\"sbd-page__changes-groups\">\n @if (historyGroups().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-check\"></i> No changes recorded\n </div>\n }\n @for (group of historyGroups(); track group.changedAt) {\n <div class=\"sbd-page__changes-group\">\n <div class=\"sbd-page__changes-meta\">\n <i class=\"pi pi-user\"></i>\n <strong>{{ group.changedBy }}</strong>\n <span class=\"sbd-page__changes-sep\">\u00B7</span>\n <span>{{ fmtDate(group.changedAt) }}</span>\n </div>\n <table class=\"sbd-page__changes-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th><i class=\"pi pi-times-circle\"></i> Before</th>\n <th><i class=\"pi pi-check-circle\"></i> After</th>\n </tr>\n </thead>\n <tbody>\n @for (entry of group.entries; track entry.field) {\n <tr>\n <td class=\"sbd-page__changes-field\">{{ formatField(entry.field) }}</td>\n <td class=\"sbd-page__changes-old\">{{ entry.from }}</td>\n <td class=\"sbd-page__changes-new\">{{ entry.to }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n </div>\n\n }\n\n <!-- Loading skeleton for main -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:25%\"></div>\n </div>\n }\n\n </main>\n\n </div>\n\n</div>\n\n<app-sbd-cancel-dialog\n [visible]=\"cancelDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [pnrInfo]=\"cancelPnrInfo()\"\n [bookingInfo]=\"bookingData()\"\n (closed)=\"cancelDialogOpen.set(false)\"\n (confirmed)=\"bookingStatus.set('idle'); bookingData.set(null)\"\n/>\n\n<app-sbd-action-dialog\n [visible]=\"actionDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [actions]=\"availableActions()\"\n [initialKey]=\"selectedActionKey()\"\n [preloadedData]=\"bookingData()\"\n (closed)=\"actionDialogOpen.set(false)\"\n/>\n\n<app-sbd-add-note-dialog\n [visible]=\"addNoteDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n (closed)=\"addNoteDialogOpen.set(false)\"\n/>\n", styles: [".sbd-page{display:flex;flex-direction:column;gap:20px;padding:24px;max-width:1400px;min-height:100%}.sbd-page__search{width:100%}.sbd-page__error{display:flex;align-items:center;gap:10px;padding:16px 20px;background:#fef2f2;border:1px solid rgba(239,68,68,.2);border-radius:10px;color:#ef4444;font-size:13.5px;font-weight:500}.sbd-page__error i{font-size:18px}.sbd-page__content{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:start}@media (max-width: 960px){.sbd-page__content{grid-template-columns:1fr}}.sbd-page__aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px}.sbd-page__main{display:flex;flex-direction:column;gap:16px}.sbd-page__quick-actions{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-wrap:wrap}.sbd-page__quick-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;flex-shrink:0}.sbd-page__context{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.sbd-page__context-tabs{display:flex;align-items:center;border-bottom:1px solid #e2e8f0;background:#f8fafc}.sbd-page__context-add{margin-left:auto;margin-right:10px}.sbd-page__context-tab{display:flex;align-items:center;gap:7px;padding:11px 20px;font-size:13px;font-weight:600;color:#64748b;background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.sbd-page__context-tab .pi{font-size:13px}.sbd-page__context-tab:hover{color:#334155}.sbd-page__context-tab--active{color:#1e2e4a;border-bottom-color:#3b82f6;background:#fff}.sbd-page__context-pill{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px}.sbd-page__context-pill--notes{background:#e0e7ff;color:#4338ca}.sbd-page__context-pill--changes{background:#fef3c7;color:#b45309}.sbd-page__context-empty{display:flex;align-items:center;gap:8px;padding:24px 20px;font-size:13px;color:#94a3b8}.sbd-page__context-empty .pi{font-size:16px}.sbd-page__notes-list{display:flex;flex-direction:column}.sbd-page__note{padding:12px 16px;border-bottom:1px solid #f1f5f9;display:flex;flex-direction:column;gap:6px}.sbd-page__note:last-child{border-bottom:none}.sbd-page__note-top{display:flex;align-items:center;gap:8px}.sbd-page__note-badge{font-size:10px;font-weight:800;letter-spacing:.05em;padding:2px 8px;border-radius:10px;text-transform:uppercase;flex-shrink:0}.sbd-page__note-badge--general{background:#dbeafe;color:#1d4ed8}.sbd-page__note-badge--remark{background:#fef3c7;color:#b45309}.sbd-page__note-badge--feedback{background:#f3e8ff;color:#7e22ce}.sbd-page__note-author{font-size:12px;font-weight:700;color:#1e2e4a}.sbd-page__note-date{margin-left:auto;font-size:11px;color:#94a3b8;white-space:nowrap}.sbd-page__note-msg{margin:0;font-size:13px;color:#334155;line-height:1.55}.sbd-page__changes-groups{display:flex;flex-direction:column}.sbd-page__changes-group{border-bottom:1px solid #f1f5f9}.sbd-page__changes-group:last-child{border-bottom:none}.sbd-page__changes-meta{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#fafafa;border-bottom:1px solid #f1f5f9;font-size:11.5px;color:#64748b}.sbd-page__changes-meta strong{font-weight:700;color:#334155}.sbd-page__changes-meta .pi{font-size:11px;color:#94a3b8}.sbd-page__changes-sep{color:#cbd5e1}.sbd-page__changes-table{width:100%;border-collapse:collapse;font-size:12.5px}.sbd-page__changes-table thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}.sbd-page__changes-table thead th{padding:7px 14px;text-align:left;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.sbd-page__changes-table thead th .pi{margin-right:4px;font-size:10px}.sbd-page__changes-table thead th:nth-child(2){color:#dc2626}.sbd-page__changes-table thead th:nth-child(3){color:#16a34a}.sbd-page__changes-table tbody tr{border-bottom:1px solid #f1f5f9}.sbd-page__changes-table tbody tr:last-child{border-bottom:none}.sbd-page__changes-table tbody tr:hover{background:#f8fafc}.sbd-page__changes-table tbody td{padding:8px 14px;vertical-align:top;word-break:break-word}.sbd-page__changes-field{font-size:12px;font-weight:600;color:#475569;width:28%}.sbd-page__changes-old{color:#dc2626;font-weight:500;text-decoration:line-through;opacity:.8;width:36%}.sbd-page__changes-new{color:#16a34a;font-weight:700;width:36%}.sbd-page__content--loading{opacity:.6;pointer-events:none}.sbd-page__skeleton-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:12px}.sbd-page__skeleton-row{height:13px;background:#f1f5f9;border-radius:6px;animation:sbd-shimmer 1.4s ease-in-out infinite}.sbd-page__skeleton-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:8px}.sbd-page__skeleton-chip{height:56px;background:#f1f5f9;border-radius:8px;animation:sbd-shimmer 1.4s ease-in-out infinite}@keyframes sbd-shimmer{0%,to{opacity:1}50%{opacity:.45}}@keyframes sbd-fadein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: SbdBookingInputComponent, selector: "app-sbd-booking-input", inputs: ["loading", "product", "bookingId"], outputs: ["productChange", "bookingIdChange", "lookup"] }, { kind: "component", type: SbdWorkflowActionsComponent, selector: "app-sbd-workflow-actions", inputs: ["bookingId"], outputs: ["cancelBooking"] }, { kind: "component", type: SbdActionGridComponent, selector: "app-sbd-action-grid", inputs: ["actions", "activeKey", "loadingKey"], outputs: ["actionSelected"] }, { kind: "component", type: SbdCancelDialogComponent, selector: "app-sbd-cancel-dialog", inputs: ["visible", "bookingId", "product", "pnrInfo", "bookingInfo"], outputs: ["closed", "confirmed"] }, { kind: "component", type: SbdFlightItineraryCardComponent, selector: "app-sbd-flight-itinerary-card", inputs: ["data", "product", "verified"] }, { kind: "component", type: SbdDataSearchComponent, selector: "app-sbd-data-search", inputs: ["data"] }, { kind: "component", type: SbdActionDialogComponent, selector: "app-sbd-action-dialog", inputs: ["visible", "bookingId", "product", "actions", "initialKey", "preloadedData"], outputs: ["closed"] }, { kind: "component", type: SbdAddNoteDialogComponent, selector: "app-sbd-add-note-dialog", inputs: ["visible", "bookingId", "product"], outputs: ["closed"] }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SmartBookingDashboardComponent, isStandalone: true, selector: "app-smart-booking-dashboard", host: { listeners: { "document:keydown": "onKeydown($event)" } }, ngImport: i0, template: "<div class=\"sbd-page\">\n\n <!-- Search bar full-width at top -->\n <div class=\"sbd-page__search\">\n <app-sbd-booking-input\n [(product)]=\"product\"\n [(bookingId)]=\"bookingId\"\n [loading]=\"bookingStatus() === 'loading'\"\n (lookup)=\"lookupBooking()\"\n />\n </div>\n\n <!-- Hotel: Use dedicated component -->\n @if (product() === 'hotel') {\n <app-sbd-hotel-content\n [bookingData]=\"bookingData()\"\n [bookingStatus]=\"bookingStatus()\"\n [bookingId]=\"bookingId()\"\n [dataVerified]=\"dataVerified()\"\n [bookingNotes]=\"bookingNotes()\"\n [bookingHistory]=\"bookingHistory()\"\n [historyGroups]=\"historyGroups()\"\n [activeContextTab]=\"activeContextTab()\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n (addNoteRequested)=\"addNoteDialogOpen.set(true)\"\n (contextTabChanged)=\"activeContextTab.set($event)\"\n />\n }\n\n <!-- Flight: Keep original 2-column layout -->\n @if (product() === 'flight') {\n <div class=\"sbd-page__content\">\n\n <!-- Left: booking context -->\n <aside class=\"sbd-page__aside\">\n\n <!-- Data search at the top of the sidebar -->\n @if (bookingStatus() === 'success') {\n <app-sbd-data-search [data]=\"bookingData()\" />\n <app-sbd-flight-itinerary-card [product]=\"product()\" [data]=\"bookingData()\" [verified]=\"dataVerified()\" />\n }\n\n <!-- Loading skeleton for aside -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:60%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:80%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:50%\"></div>\n </div>\n }\n\n </aside>\n\n <!-- Right: agent workspace -->\n <main class=\"sbd-page__main\">\n\n <!-- Error state -->\n @if (bookingStatus() === 'error') {\n <div class=\"sbd-page__error\">\n <i class=\"pi pi-exclamation-circle\"></i>\n <span>Booking not found. Double-check the ID and product type, then try again.</span>\n </div>\n }\n\n <!-- Content once loaded -->\n @if (bookingStatus() === 'success') {\n\n <!-- Quick actions -->\n <div class=\"sbd-page__quick-actions\">\n <span class=\"sbd-page__quick-label\">Quick actions</span>\n <app-sbd-workflow-actions\n [bookingId]=\"bookingId()\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n />\n </div>\n\n <!-- Action grid -->\n <app-sbd-action-grid\n [actions]=\"availableActions()\"\n [activeKey]=\"selectedActionKey()\"\n (actionSelected)=\"openAction($event)\"\n />\n\n <!-- Context: Notes + Changes tabbed -->\n <div class=\"sbd-page__context\">\n\n <!-- Tab bar -->\n <div class=\"sbd-page__context-tabs\">\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'changes'\"\n (click)=\"activeContextTab.set('changes')\">\n <i class=\"pi pi-history\"></i>\n Changes\n @if (bookingHistory().length > 0) {\n <span class=\"sbd-page__context-pill sbd-page__context-pill--changes\">{{ bookingHistory().length }}</span>\n }\n </button>\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'notes'\"\n (click)=\"activeContextTab.set('notes')\">\n <i class=\"pi pi-comments\"></i>\n Notes\n <span class=\"sbd-page__context-pill sbd-page__context-pill--notes\">{{ bookingNotes().length }}</span>\n </button>\n @if (activeContextTab() === 'notes') {\n <button pButton label=\"Add Note\" icon=\"pi pi-plus\" class=\"p-button-sm p-button-outlined sbd-page__context-add\"\n (click)=\"addNoteDialogOpen.set(true)\">\n </button>\n }\n </div>\n\n <!-- Notes tab -->\n @if (activeContextTab() === 'notes') {\n <div class=\"sbd-page__notes-list\">\n @if (bookingNotes().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-inbox\"></i> No notes yet\n </div>\n }\n @for (note of bookingNotes(); track $index) {\n <div class=\"sbd-page__note\">\n <div class=\"sbd-page__note-top\">\n <span class=\"sbd-page__note-badge sbd-page__note-badge--{{ note.action | lowercase }}\">\n {{ note.action }}\n </span>\n <span class=\"sbd-page__note-author\">\n {{ note.writtenBy?.firstName }} {{ note.writtenBy?.lastName }}\n </span>\n <span class=\"sbd-page__note-date\">{{ fmtNoteDate(note.date) }}</span>\n </div>\n <p class=\"sbd-page__note-msg\">{{ note.message }}</p>\n </div>\n }\n </div>\n }\n\n <!-- Changes tab -->\n @if (activeContextTab() === 'changes') {\n <div class=\"sbd-page__changes-groups\">\n @if (historyGroups().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-check\"></i> No changes recorded\n </div>\n }\n @for (group of historyGroups(); track group.changedAt) {\n <div class=\"sbd-page__changes-group\">\n <div class=\"sbd-page__changes-meta\">\n <i class=\"pi pi-user\"></i>\n <strong>{{ group.changedBy }}</strong>\n <span class=\"sbd-page__changes-sep\">\u00B7</span>\n <span>{{ fmtDate(group.changedAt) }}</span>\n </div>\n <table class=\"sbd-page__changes-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th><i class=\"pi pi-times-circle\"></i> Before</th>\n <th><i class=\"pi pi-check-circle\"></i> After</th>\n </tr>\n </thead>\n <tbody>\n @for (entry of group.entries; track entry.field) {\n <tr>\n <td class=\"sbd-page__changes-field\">{{ formatField(entry.field) }}</td>\n <td class=\"sbd-page__changes-old\">{{ entry.from }}</td>\n <td class=\"sbd-page__changes-new\">{{ entry.to }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n </div>\n\n }\n\n <!-- Loading skeleton for main -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:25%\"></div>\n </div>\n }\n\n </main>\n\n </div>\n }\n\n</div>\n\n<app-sbd-cancel-dialog\n [visible]=\"cancelDialogOpen() && product() === 'flight'\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [pnrInfo]=\"cancelPnrInfo()\"\n [bookingInfo]=\"bookingData()\"\n (closed)=\"cancelDialogOpen.set(false)\"\n (confirmed)=\"bookingStatus.set('idle'); bookingData.set(null)\"\n/>\n\n<almatar-hotel-auto-cancellation\n *ngIf=\"cancelDialogOpen() && product() === 'hotel'\"\n [selectedHotelBooking]=\"bookingData()\"\n (closed)=\"cancelDialogOpen.set(false)\"\n (cancellationSuccess)=\"bookingStatus.set('idle'); bookingData.set(null)\"\n/>\n\n<app-sbd-action-dialog\n [visible]=\"actionDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [actions]=\"availableActions()\"\n [initialKey]=\"selectedActionKey()\"\n [preloadedData]=\"bookingData()\"\n (closed)=\"actionDialogOpen.set(false)\"\n/>\n\n<app-sbd-add-note-dialog\n [visible]=\"addNoteDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n (closed)=\"addNoteDialogOpen.set(false)\"\n/>\n", styles: [".sbd-page{display:flex;flex-direction:column;gap:20px;padding:24px;max-width:1400px;min-height:100%}.sbd-page__search{width:100%}.sbd-page__error{display:flex;align-items:center;gap:10px;padding:16px 20px;background:#fef2f2;border:1px solid rgba(239,68,68,.2);border-radius:10px;color:#ef4444;font-size:13.5px;font-weight:500}.sbd-page__error i{font-size:18px}.sbd-page__content{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:start}@media (max-width: 960px){.sbd-page__content{grid-template-columns:1fr}}.sbd-page__aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px}.sbd-page__main{display:flex;flex-direction:column;gap:16px}.sbd-page__quick-actions{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-wrap:wrap}.sbd-page__quick-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;flex-shrink:0}.sbd-page__context{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.sbd-page__context-tabs{display:flex;align-items:center;border-bottom:1px solid #e2e8f0;background:#f8fafc}.sbd-page__context-add{margin-left:auto;margin-right:10px}.sbd-page__context-tab{display:flex;align-items:center;gap:7px;padding:11px 20px;font-size:13px;font-weight:600;color:#64748b;background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.sbd-page__context-tab .pi{font-size:13px}.sbd-page__context-tab:hover{color:#334155}.sbd-page__context-tab--active{color:#1e2e4a;border-bottom-color:var(--sbd-primary, #3b82f6);background:#fff}.sbd-page__context-pill{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px}.sbd-page__context-pill--notes{background:#e0e7ff;color:#4338ca}.sbd-page__context-pill--changes{background:#fef3c7;color:#b45309}.sbd-page__context-empty{display:flex;align-items:center;gap:8px;padding:24px 20px;font-size:13px;color:#94a3b8}.sbd-page__context-empty .pi{font-size:16px}.sbd-page__notes-list{display:flex;flex-direction:column}.sbd-page__note{padding:12px 16px;border-bottom:1px solid #f1f5f9;display:flex;flex-direction:column;gap:6px}.sbd-page__note:last-child{border-bottom:none}.sbd-page__note-top{display:flex;align-items:center;gap:8px}.sbd-page__note-badge{font-size:10px;font-weight:800;letter-spacing:.05em;padding:2px 8px;border-radius:10px;text-transform:uppercase;flex-shrink:0}.sbd-page__note-badge--general{background:#dbeafe;color:#1d4ed8}.sbd-page__note-badge--remark{background:#fef3c7;color:#b45309}.sbd-page__note-badge--feedback{background:#f3e8ff;color:#7e22ce}.sbd-page__note-author{font-size:12px;font-weight:700;color:#1e2e4a}.sbd-page__note-date{margin-left:auto;font-size:11px;color:#94a3b8;white-space:nowrap}.sbd-page__note-msg{margin:0;font-size:13px;color:#334155;line-height:1.55}.sbd-page__changes-groups{display:flex;flex-direction:column}.sbd-page__changes-group{border-bottom:1px solid #f1f5f9}.sbd-page__changes-group:last-child{border-bottom:none}.sbd-page__changes-meta{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#fafafa;border-bottom:1px solid #f1f5f9;font-size:11.5px;color:#64748b}.sbd-page__changes-meta strong{font-weight:700;color:#334155}.sbd-page__changes-meta .pi{font-size:11px;color:#94a3b8}.sbd-page__changes-sep{color:#cbd5e1}.sbd-page__changes-table{width:100%;border-collapse:collapse;font-size:12.5px}.sbd-page__changes-table thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}.sbd-page__changes-table thead th{padding:7px 14px;text-align:left;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.sbd-page__changes-table thead th .pi{margin-right:4px;font-size:10px}.sbd-page__changes-table thead th:nth-child(2){color:#dc2626}.sbd-page__changes-table thead th:nth-child(3){color:#16a34a}.sbd-page__changes-table tbody tr{border-bottom:1px solid #f1f5f9}.sbd-page__changes-table tbody tr:last-child{border-bottom:none}.sbd-page__changes-table tbody tr:hover{background:#f8fafc}.sbd-page__changes-table tbody td{padding:8px 14px;vertical-align:top;word-break:break-word}.sbd-page__changes-field{font-size:12px;font-weight:600;color:#475569;width:28%}.sbd-page__changes-old{color:#dc2626;font-weight:500;text-decoration:line-through;opacity:.8;width:36%}.sbd-page__changes-new{color:#16a34a;font-weight:700;width:36%}.sbd-page__content--loading{opacity:.6;pointer-events:none}.sbd-page__skeleton-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:12px}.sbd-page__skeleton-row{height:13px;background:#f1f5f9;border-radius:6px;animation:sbd-shimmer 1.4s ease-in-out infinite}.sbd-page__skeleton-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:8px}.sbd-page__skeleton-chip{height:56px;background:#f1f5f9;border-radius:8px;animation:sbd-shimmer 1.4s ease-in-out infinite}@keyframes sbd-shimmer{0%,to{opacity:1}50%{opacity:.45}}@keyframes sbd-fadein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "component", type: SbdBookingInputComponent, selector: "app-sbd-booking-input", inputs: ["loading", "product", "bookingId"], outputs: ["productChange", "bookingIdChange", "lookup"] }, { kind: "component", type: SbdWorkflowActionsComponent, selector: "app-sbd-workflow-actions", inputs: ["bookingId"], outputs: ["cancelBooking"] }, { kind: "component", type: SbdActionGridComponent, selector: "app-sbd-action-grid", inputs: ["actions", "activeKey", "loadingKey"], outputs: ["actionSelected"] }, { kind: "component", type: SbdCancelDialogComponent, selector: "app-sbd-cancel-dialog", inputs: ["visible", "bookingId", "product", "pnrInfo", "bookingInfo"], outputs: ["closed", "confirmed"] }, { kind: "component", type: AlmatarHotelAutoCancellationComponent, selector: "almatar-hotel-auto-cancellation", inputs: ["selectedHotelBooking"], outputs: ["closed", "cancellationSuccess", "nonRefundableSubmitSuccess", "chatWithAgent"] }, { kind: "component", type: SbdFlightItineraryCardComponent, selector: "app-sbd-flight-itinerary-card", inputs: ["data", "product", "verified"] }, { kind: "component", type: SbdDataSearchComponent, selector: "app-sbd-data-search", inputs: ["data"] }, { kind: "component", type: SbdActionDialogComponent, selector: "app-sbd-action-dialog", inputs: ["visible", "bookingId", "product", "actions", "initialKey", "preloadedData"], outputs: ["closed"] }, { kind: "component", type: SbdAddNoteDialogComponent, selector: "app-sbd-add-note-dialog", inputs: ["visible", "bookingId", "product"], outputs: ["closed"] }, { kind: "component", type: SbdHotelContentComponent, selector: "app-sbd-hotel-content", inputs: ["bookingData", "bookingStatus", "bookingId", "dataVerified", "bookingNotes", "bookingHistory", "historyGroups", "activeContextTab"], outputs: ["cancelBooking", "addNoteRequested", "contextTabChanged"] }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
|
|
126
140
|
}
|
|
127
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartBookingDashboardComponent, decorators: [{
|
|
128
142
|
type: Component,
|
|
@@ -131,15 +145,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
131
145
|
SbdWorkflowActionsComponent,
|
|
132
146
|
SbdActionGridComponent,
|
|
133
147
|
SbdCancelDialogComponent,
|
|
148
|
+
AlmatarHotelAutoCancellationComponent,
|
|
134
149
|
SbdFlightItineraryCardComponent,
|
|
150
|
+
SbdHotelItineraryCardComponent,
|
|
135
151
|
SbdDataSearchComponent,
|
|
136
152
|
SbdActionDialogComponent,
|
|
137
153
|
SbdAddNoteDialogComponent,
|
|
154
|
+
SbdHotelContentComponent,
|
|
138
155
|
LowerCasePipe,
|
|
156
|
+
NgIf,
|
|
139
157
|
ButtonModule,
|
|
140
|
-
], template: "<div class=\"sbd-page\">\n\n <!-- Search bar full-width at top -->\n <div class=\"sbd-page__search\">\n <app-sbd-booking-input\n [(product)]=\"product\"\n [(bookingId)]=\"bookingId\"\n [loading]=\"bookingStatus() === 'loading'\"\n (lookup)=\"lookupBooking()\"\n />\n </div>\n\n <!-- 2-column layout -->\n <div class=\"sbd-page__content\">\n\n <!-- Left: booking context -->\n <aside class=\"sbd-page__aside\">\n\n <!-- Data search at the top of the sidebar -->\n @if (bookingStatus() === 'success') {\n <app-sbd-data-search [data]=\"bookingData()\" />\n <app-sbd-flight-itinerary-card [product]=\"product()\" [data]=\"bookingData()\" [verified]=\"dataVerified()\" />\n }\n\n <!-- Loading skeleton for aside -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:60%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:80%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:50%\"></div>\n </div>\n }\n\n </aside>\n\n <!-- Right: agent workspace -->\n <main class=\"sbd-page__main\">\n\n <!-- Error state -->\n @if (bookingStatus() === 'error') {\n <div class=\"sbd-page__error\">\n <i class=\"pi pi-exclamation-circle\"></i>\n <span>Booking not found. Double-check the ID and product type, then try again.</span>\n </div>\n }\n\n <!-- Content once loaded -->\n @if (bookingStatus() === 'success') {\n\n <!-- Quick actions -->\n <div class=\"sbd-page__quick-actions\">\n <span class=\"sbd-page__quick-label\">Quick actions</span>\n <app-sbd-workflow-actions\n [bookingId]=\"bookingId()\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n />\n </div>\n\n <!-- Action grid -->\n <app-sbd-action-grid\n [actions]=\"availableActions()\"\n [activeKey]=\"selectedActionKey()\"\n (actionSelected)=\"openAction($event)\"\n />\n\n <!-- Context: Notes + Changes tabbed -->\n <div class=\"sbd-page__context\">\n\n <!-- Tab bar -->\n <div class=\"sbd-page__context-tabs\">\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'changes'\"\n (click)=\"activeContextTab.set('changes')\">\n <i class=\"pi pi-history\"></i>\n Changes\n @if (bookingHistory().length > 0) {\n <span class=\"sbd-page__context-pill sbd-page__context-pill--changes\">{{ bookingHistory().length }}</span>\n }\n </button>\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'notes'\"\n (click)=\"activeContextTab.set('notes')\">\n <i class=\"pi pi-comments\"></i>\n Notes\n <span class=\"sbd-page__context-pill sbd-page__context-pill--notes\">{{ bookingNotes().length }}</span>\n </button>\n @if (activeContextTab() === 'notes') {\n <button pButton label=\"Add Note\" icon=\"pi pi-plus\" class=\"p-button-sm p-button-outlined sbd-page__context-add\"\n (click)=\"addNoteDialogOpen.set(true)\">\n </button>\n }\n </div>\n\n <!-- Notes tab -->\n @if (activeContextTab() === 'notes') {\n <div class=\"sbd-page__notes-list\">\n @if (bookingNotes().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-inbox\"></i> No notes yet\n </div>\n }\n @for (note of bookingNotes(); track $index) {\n <div class=\"sbd-page__note\">\n <div class=\"sbd-page__note-top\">\n <span class=\"sbd-page__note-badge sbd-page__note-badge--{{ note.action | lowercase }}\">\n {{ note.action }}\n </span>\n <span class=\"sbd-page__note-author\">\n {{ note.writtenBy?.firstName }} {{ note.writtenBy?.lastName }}\n </span>\n <span class=\"sbd-page__note-date\">{{ fmtNoteDate(note.date) }}</span>\n </div>\n <p class=\"sbd-page__note-msg\">{{ note.message }}</p>\n </div>\n }\n </div>\n }\n\n <!-- Changes tab -->\n @if (activeContextTab() === 'changes') {\n <div class=\"sbd-page__changes-groups\">\n @if (historyGroups().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-check\"></i> No changes recorded\n </div>\n }\n @for (group of historyGroups(); track group.changedAt) {\n <div class=\"sbd-page__changes-group\">\n <div class=\"sbd-page__changes-meta\">\n <i class=\"pi pi-user\"></i>\n <strong>{{ group.changedBy }}</strong>\n <span class=\"sbd-page__changes-sep\">\u00B7</span>\n <span>{{ fmtDate(group.changedAt) }}</span>\n </div>\n <table class=\"sbd-page__changes-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th><i class=\"pi pi-times-circle\"></i> Before</th>\n <th><i class=\"pi pi-check-circle\"></i> After</th>\n </tr>\n </thead>\n <tbody>\n @for (entry of group.entries; track entry.field) {\n <tr>\n <td class=\"sbd-page__changes-field\">{{ formatField(entry.field) }}</td>\n <td class=\"sbd-page__changes-old\">{{ entry.from }}</td>\n <td class=\"sbd-page__changes-new\">{{ entry.to }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n </div>\n\n }\n\n <!-- Loading skeleton for main -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:25%\"></div>\n </div>\n }\n\n </main>\n\n </div>\n\n</div>\n\n<app-sbd-cancel-dialog\n [visible]=\"cancelDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [pnrInfo]=\"cancelPnrInfo()\"\n [bookingInfo]=\"bookingData()\"\n (closed)=\"cancelDialogOpen.set(false)\"\n (confirmed)=\"bookingStatus.set('idle'); bookingData.set(null)\"\n/>\n\n<app-sbd-action-dialog\n [visible]=\"actionDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [actions]=\"availableActions()\"\n [initialKey]=\"selectedActionKey()\"\n [preloadedData]=\"bookingData()\"\n (closed)=\"actionDialogOpen.set(false)\"\n/>\n\n<app-sbd-add-note-dialog\n [visible]=\"addNoteDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n (closed)=\"addNoteDialogOpen.set(false)\"\n/>\n", styles: [".sbd-page{display:flex;flex-direction:column;gap:20px;padding:24px;max-width:1400px;min-height:100%}.sbd-page__search{width:100%}.sbd-page__error{display:flex;align-items:center;gap:10px;padding:16px 20px;background:#fef2f2;border:1px solid rgba(239,68,68,.2);border-radius:10px;color:#ef4444;font-size:13.5px;font-weight:500}.sbd-page__error i{font-size:18px}.sbd-page__content{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:start}@media (max-width: 960px){.sbd-page__content{grid-template-columns:1fr}}.sbd-page__aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px}.sbd-page__main{display:flex;flex-direction:column;gap:16px}.sbd-page__quick-actions{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-wrap:wrap}.sbd-page__quick-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;flex-shrink:0}.sbd-page__context{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.sbd-page__context-tabs{display:flex;align-items:center;border-bottom:1px solid #e2e8f0;background:#f8fafc}.sbd-page__context-add{margin-left:auto;margin-right:10px}.sbd-page__context-tab{display:flex;align-items:center;gap:7px;padding:11px 20px;font-size:13px;font-weight:600;color:#64748b;background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.sbd-page__context-tab .pi{font-size:13px}.sbd-page__context-tab:hover{color:#334155}.sbd-page__context-tab--active{color:#1e2e4a;border-bottom-color:#3b82f6;background:#fff}.sbd-page__context-pill{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px}.sbd-page__context-pill--notes{background:#e0e7ff;color:#4338ca}.sbd-page__context-pill--changes{background:#fef3c7;color:#b45309}.sbd-page__context-empty{display:flex;align-items:center;gap:8px;padding:24px 20px;font-size:13px;color:#94a3b8}.sbd-page__context-empty .pi{font-size:16px}.sbd-page__notes-list{display:flex;flex-direction:column}.sbd-page__note{padding:12px 16px;border-bottom:1px solid #f1f5f9;display:flex;flex-direction:column;gap:6px}.sbd-page__note:last-child{border-bottom:none}.sbd-page__note-top{display:flex;align-items:center;gap:8px}.sbd-page__note-badge{font-size:10px;font-weight:800;letter-spacing:.05em;padding:2px 8px;border-radius:10px;text-transform:uppercase;flex-shrink:0}.sbd-page__note-badge--general{background:#dbeafe;color:#1d4ed8}.sbd-page__note-badge--remark{background:#fef3c7;color:#b45309}.sbd-page__note-badge--feedback{background:#f3e8ff;color:#7e22ce}.sbd-page__note-author{font-size:12px;font-weight:700;color:#1e2e4a}.sbd-page__note-date{margin-left:auto;font-size:11px;color:#94a3b8;white-space:nowrap}.sbd-page__note-msg{margin:0;font-size:13px;color:#334155;line-height:1.55}.sbd-page__changes-groups{display:flex;flex-direction:column}.sbd-page__changes-group{border-bottom:1px solid #f1f5f9}.sbd-page__changes-group:last-child{border-bottom:none}.sbd-page__changes-meta{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#fafafa;border-bottom:1px solid #f1f5f9;font-size:11.5px;color:#64748b}.sbd-page__changes-meta strong{font-weight:700;color:#334155}.sbd-page__changes-meta .pi{font-size:11px;color:#94a3b8}.sbd-page__changes-sep{color:#cbd5e1}.sbd-page__changes-table{width:100%;border-collapse:collapse;font-size:12.5px}.sbd-page__changes-table thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}.sbd-page__changes-table thead th{padding:7px 14px;text-align:left;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.sbd-page__changes-table thead th .pi{margin-right:4px;font-size:10px}.sbd-page__changes-table thead th:nth-child(2){color:#dc2626}.sbd-page__changes-table thead th:nth-child(3){color:#16a34a}.sbd-page__changes-table tbody tr{border-bottom:1px solid #f1f5f9}.sbd-page__changes-table tbody tr:last-child{border-bottom:none}.sbd-page__changes-table tbody tr:hover{background:#f8fafc}.sbd-page__changes-table tbody td{padding:8px 14px;vertical-align:top;word-break:break-word}.sbd-page__changes-field{font-size:12px;font-weight:600;color:#475569;width:28%}.sbd-page__changes-old{color:#dc2626;font-weight:500;text-decoration:line-through;opacity:.8;width:36%}.sbd-page__changes-new{color:#16a34a;font-weight:700;width:36%}.sbd-page__content--loading{opacity:.6;pointer-events:none}.sbd-page__skeleton-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:12px}.sbd-page__skeleton-row{height:13px;background:#f1f5f9;border-radius:6px;animation:sbd-shimmer 1.4s ease-in-out infinite}.sbd-page__skeleton-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:8px}.sbd-page__skeleton-chip{height:56px;background:#f1f5f9;border-radius:8px;animation:sbd-shimmer 1.4s ease-in-out infinite}@keyframes sbd-shimmer{0%,to{opacity:1}50%{opacity:.45}}@keyframes sbd-fadein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
158
|
+
], template: "<div class=\"sbd-page\">\n\n <!-- Search bar full-width at top -->\n <div class=\"sbd-page__search\">\n <app-sbd-booking-input\n [(product)]=\"product\"\n [(bookingId)]=\"bookingId\"\n [loading]=\"bookingStatus() === 'loading'\"\n (lookup)=\"lookupBooking()\"\n />\n </div>\n\n <!-- Hotel: Use dedicated component -->\n @if (product() === 'hotel') {\n <app-sbd-hotel-content\n [bookingData]=\"bookingData()\"\n [bookingStatus]=\"bookingStatus()\"\n [bookingId]=\"bookingId()\"\n [dataVerified]=\"dataVerified()\"\n [bookingNotes]=\"bookingNotes()\"\n [bookingHistory]=\"bookingHistory()\"\n [historyGroups]=\"historyGroups()\"\n [activeContextTab]=\"activeContextTab()\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n (addNoteRequested)=\"addNoteDialogOpen.set(true)\"\n (contextTabChanged)=\"activeContextTab.set($event)\"\n />\n }\n\n <!-- Flight: Keep original 2-column layout -->\n @if (product() === 'flight') {\n <div class=\"sbd-page__content\">\n\n <!-- Left: booking context -->\n <aside class=\"sbd-page__aside\">\n\n <!-- Data search at the top of the sidebar -->\n @if (bookingStatus() === 'success') {\n <app-sbd-data-search [data]=\"bookingData()\" />\n <app-sbd-flight-itinerary-card [product]=\"product()\" [data]=\"bookingData()\" [verified]=\"dataVerified()\" />\n }\n\n <!-- Loading skeleton for aside -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:60%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:80%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:50%\"></div>\n </div>\n }\n\n </aside>\n\n <!-- Right: agent workspace -->\n <main class=\"sbd-page__main\">\n\n <!-- Error state -->\n @if (bookingStatus() === 'error') {\n <div class=\"sbd-page__error\">\n <i class=\"pi pi-exclamation-circle\"></i>\n <span>Booking not found. Double-check the ID and product type, then try again.</span>\n </div>\n }\n\n <!-- Content once loaded -->\n @if (bookingStatus() === 'success') {\n\n <!-- Quick actions -->\n <div class=\"sbd-page__quick-actions\">\n <span class=\"sbd-page__quick-label\">Quick actions</span>\n <app-sbd-workflow-actions\n [bookingId]=\"bookingId()\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n />\n </div>\n\n <!-- Action grid -->\n <app-sbd-action-grid\n [actions]=\"availableActions()\"\n [activeKey]=\"selectedActionKey()\"\n (actionSelected)=\"openAction($event)\"\n />\n\n <!-- Context: Notes + Changes tabbed -->\n <div class=\"sbd-page__context\">\n\n <!-- Tab bar -->\n <div class=\"sbd-page__context-tabs\">\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'changes'\"\n (click)=\"activeContextTab.set('changes')\">\n <i class=\"pi pi-history\"></i>\n Changes\n @if (bookingHistory().length > 0) {\n <span class=\"sbd-page__context-pill sbd-page__context-pill--changes\">{{ bookingHistory().length }}</span>\n }\n </button>\n <button class=\"sbd-page__context-tab\"\n [class.sbd-page__context-tab--active]=\"activeContextTab() === 'notes'\"\n (click)=\"activeContextTab.set('notes')\">\n <i class=\"pi pi-comments\"></i>\n Notes\n <span class=\"sbd-page__context-pill sbd-page__context-pill--notes\">{{ bookingNotes().length }}</span>\n </button>\n @if (activeContextTab() === 'notes') {\n <button pButton label=\"Add Note\" icon=\"pi pi-plus\" class=\"p-button-sm p-button-outlined sbd-page__context-add\"\n (click)=\"addNoteDialogOpen.set(true)\">\n </button>\n }\n </div>\n\n <!-- Notes tab -->\n @if (activeContextTab() === 'notes') {\n <div class=\"sbd-page__notes-list\">\n @if (bookingNotes().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-inbox\"></i> No notes yet\n </div>\n }\n @for (note of bookingNotes(); track $index) {\n <div class=\"sbd-page__note\">\n <div class=\"sbd-page__note-top\">\n <span class=\"sbd-page__note-badge sbd-page__note-badge--{{ note.action | lowercase }}\">\n {{ note.action }}\n </span>\n <span class=\"sbd-page__note-author\">\n {{ note.writtenBy?.firstName }} {{ note.writtenBy?.lastName }}\n </span>\n <span class=\"sbd-page__note-date\">{{ fmtNoteDate(note.date) }}</span>\n </div>\n <p class=\"sbd-page__note-msg\">{{ note.message }}</p>\n </div>\n }\n </div>\n }\n\n <!-- Changes tab -->\n @if (activeContextTab() === 'changes') {\n <div class=\"sbd-page__changes-groups\">\n @if (historyGroups().length === 0) {\n <div class=\"sbd-page__context-empty\">\n <i class=\"pi pi-check\"></i> No changes recorded\n </div>\n }\n @for (group of historyGroups(); track group.changedAt) {\n <div class=\"sbd-page__changes-group\">\n <div class=\"sbd-page__changes-meta\">\n <i class=\"pi pi-user\"></i>\n <strong>{{ group.changedBy }}</strong>\n <span class=\"sbd-page__changes-sep\">\u00B7</span>\n <span>{{ fmtDate(group.changedAt) }}</span>\n </div>\n <table class=\"sbd-page__changes-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th><i class=\"pi pi-times-circle\"></i> Before</th>\n <th><i class=\"pi pi-check-circle\"></i> After</th>\n </tr>\n </thead>\n <tbody>\n @for (entry of group.entries; track entry.field) {\n <tr>\n <td class=\"sbd-page__changes-field\">{{ formatField(entry.field) }}</td>\n <td class=\"sbd-page__changes-old\">{{ entry.from }}</td>\n <td class=\"sbd-page__changes-new\">{{ entry.to }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n }\n\n </div>\n\n }\n\n <!-- Loading skeleton for main -->\n @if (bookingStatus() === 'loading') {\n <div class=\"sbd-page__skeleton-card\">\n <div class=\"sbd-page__skeleton-row\" style=\"width:40%\"></div>\n <div class=\"sbd-page__skeleton-row\" style=\"width:25%\"></div>\n </div>\n }\n\n </main>\n\n </div>\n }\n\n</div>\n\n<app-sbd-cancel-dialog\n [visible]=\"cancelDialogOpen() && product() === 'flight'\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [pnrInfo]=\"cancelPnrInfo()\"\n [bookingInfo]=\"bookingData()\"\n (closed)=\"cancelDialogOpen.set(false)\"\n (confirmed)=\"bookingStatus.set('idle'); bookingData.set(null)\"\n/>\n\n<almatar-hotel-auto-cancellation\n *ngIf=\"cancelDialogOpen() && product() === 'hotel'\"\n [selectedHotelBooking]=\"bookingData()\"\n (closed)=\"cancelDialogOpen.set(false)\"\n (cancellationSuccess)=\"bookingStatus.set('idle'); bookingData.set(null)\"\n/>\n\n<app-sbd-action-dialog\n [visible]=\"actionDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n [actions]=\"availableActions()\"\n [initialKey]=\"selectedActionKey()\"\n [preloadedData]=\"bookingData()\"\n (closed)=\"actionDialogOpen.set(false)\"\n/>\n\n<app-sbd-add-note-dialog\n [visible]=\"addNoteDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [product]=\"product()\"\n (closed)=\"addNoteDialogOpen.set(false)\"\n/>\n", styles: [".sbd-page{display:flex;flex-direction:column;gap:20px;padding:24px;max-width:1400px;min-height:100%}.sbd-page__search{width:100%}.sbd-page__error{display:flex;align-items:center;gap:10px;padding:16px 20px;background:#fef2f2;border:1px solid rgba(239,68,68,.2);border-radius:10px;color:#ef4444;font-size:13.5px;font-weight:500}.sbd-page__error i{font-size:18px}.sbd-page__content{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:start}@media (max-width: 960px){.sbd-page__content{grid-template-columns:1fr}}.sbd-page__aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:20px}.sbd-page__main{display:flex;flex-direction:column;gap:16px}.sbd-page__quick-actions{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-wrap:wrap}.sbd-page__quick-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;flex-shrink:0}.sbd-page__context{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.sbd-page__context-tabs{display:flex;align-items:center;border-bottom:1px solid #e2e8f0;background:#f8fafc}.sbd-page__context-add{margin-left:auto;margin-right:10px}.sbd-page__context-tab{display:flex;align-items:center;gap:7px;padding:11px 20px;font-size:13px;font-weight:600;color:#64748b;background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.sbd-page__context-tab .pi{font-size:13px}.sbd-page__context-tab:hover{color:#334155}.sbd-page__context-tab--active{color:#1e2e4a;border-bottom-color:var(--sbd-primary, #3b82f6);background:#fff}.sbd-page__context-pill{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px}.sbd-page__context-pill--notes{background:#e0e7ff;color:#4338ca}.sbd-page__context-pill--changes{background:#fef3c7;color:#b45309}.sbd-page__context-empty{display:flex;align-items:center;gap:8px;padding:24px 20px;font-size:13px;color:#94a3b8}.sbd-page__context-empty .pi{font-size:16px}.sbd-page__notes-list{display:flex;flex-direction:column}.sbd-page__note{padding:12px 16px;border-bottom:1px solid #f1f5f9;display:flex;flex-direction:column;gap:6px}.sbd-page__note:last-child{border-bottom:none}.sbd-page__note-top{display:flex;align-items:center;gap:8px}.sbd-page__note-badge{font-size:10px;font-weight:800;letter-spacing:.05em;padding:2px 8px;border-radius:10px;text-transform:uppercase;flex-shrink:0}.sbd-page__note-badge--general{background:#dbeafe;color:#1d4ed8}.sbd-page__note-badge--remark{background:#fef3c7;color:#b45309}.sbd-page__note-badge--feedback{background:#f3e8ff;color:#7e22ce}.sbd-page__note-author{font-size:12px;font-weight:700;color:#1e2e4a}.sbd-page__note-date{margin-left:auto;font-size:11px;color:#94a3b8;white-space:nowrap}.sbd-page__note-msg{margin:0;font-size:13px;color:#334155;line-height:1.55}.sbd-page__changes-groups{display:flex;flex-direction:column}.sbd-page__changes-group{border-bottom:1px solid #f1f5f9}.sbd-page__changes-group:last-child{border-bottom:none}.sbd-page__changes-meta{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#fafafa;border-bottom:1px solid #f1f5f9;font-size:11.5px;color:#64748b}.sbd-page__changes-meta strong{font-weight:700;color:#334155}.sbd-page__changes-meta .pi{font-size:11px;color:#94a3b8}.sbd-page__changes-sep{color:#cbd5e1}.sbd-page__changes-table{width:100%;border-collapse:collapse;font-size:12.5px}.sbd-page__changes-table thead tr{background:#f8fafc;border-bottom:1px solid #e2e8f0}.sbd-page__changes-table thead th{padding:7px 14px;text-align:left;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#64748b;white-space:nowrap}.sbd-page__changes-table thead th .pi{margin-right:4px;font-size:10px}.sbd-page__changes-table thead th:nth-child(2){color:#dc2626}.sbd-page__changes-table thead th:nth-child(3){color:#16a34a}.sbd-page__changes-table tbody tr{border-bottom:1px solid #f1f5f9}.sbd-page__changes-table tbody tr:last-child{border-bottom:none}.sbd-page__changes-table tbody tr:hover{background:#f8fafc}.sbd-page__changes-table tbody td{padding:8px 14px;vertical-align:top;word-break:break-word}.sbd-page__changes-field{font-size:12px;font-weight:600;color:#475569;width:28%}.sbd-page__changes-old{color:#dc2626;font-weight:500;text-decoration:line-through;opacity:.8;width:36%}.sbd-page__changes-new{color:#16a34a;font-weight:700;width:36%}.sbd-page__content--loading{opacity:.6;pointer-events:none}.sbd-page__skeleton-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:12px}.sbd-page__skeleton-row{height:13px;background:#f1f5f9;border-radius:6px;animation:sbd-shimmer 1.4s ease-in-out infinite}.sbd-page__skeleton-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:8px}.sbd-page__skeleton-chip{height:56px;background:#f1f5f9;border-radius:8px;animation:sbd-shimmer 1.4s ease-in-out infinite}@keyframes sbd-shimmer{0%,to{opacity:1}50%{opacity:.45}}@keyframes sbd-fadein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
141
159
|
}], propDecorators: { onKeydown: [{
|
|
142
160
|
type: HostListener,
|
|
143
161
|
args: ['document:keydown', ['$event']]
|
|
144
162
|
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9wYWdlcy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zbWFydC1ib29raW5nLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3BhZ2VzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDM0csT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDekgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNERBQTRELENBQUM7OztBQW9CdkcsTUFBTSxPQUFPLDhCQUE4QjtJQWxCM0M7UUFtQlUsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhDLFlBQU8sR0FBRyxNQUFNLENBQWMsUUFBUSxDQUFDLENBQUM7UUFDeEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QixrQkFBYSxHQUFHLE1BQU0sQ0FBMkMsTUFBTSxDQUFDLENBQUM7UUFDekUsOERBQThEO1FBQzlELGdCQUFXLEdBQUcsTUFBTSxDQUFhLElBQUksQ0FBQyxDQUFDO1FBRXZDLHFCQUFnQixHQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxxQkFBZ0IsR0FBTSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsc0JBQWlCLEdBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFLLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDbEQscUJBQWdCLEdBQU0sTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUU3RCxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQy9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDdEYsQ0FBQztRQUVGLHdFQUF3RTtRQUN4RSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUM7WUFDbEQsT0FBTyxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksSUFBSSxFQUFFLEVBQUUsV0FBVyxLQUFLLElBQUksQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILHNGQUFzRjtRQUN0RixrQkFBYSxHQUFHLFFBQVEsQ0FBaUQsR0FBRyxFQUFFO1lBQzVFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztZQUM3RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1lBQ25DLElBQUksR0FBRyxFQUFFLEdBQUc7Z0JBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN4RSxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO1FBRUgsOERBQThEO1FBQzlELG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBVSxDQUFDLENBQUM7UUFFbEcsOERBQThEO1FBQzlELGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBVSxDQUFDLENBQUM7UUFFOUYsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUE0RyxDQUFDO1lBQ25JLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZILE1BQU0sUUFBUSxHQUFJLENBQUMsQ0FBQyxLQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUNqRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNwQyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO29CQUN2QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGFBQWE7b0JBQ3JCLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUTtpQkFDZixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7S0E0REo7SUExREMsV0FBVyxDQUFDLElBQW9DO1FBQzlDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQzNCLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO2dCQUN2RCxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVM7Z0JBQy9DLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVM7YUFDbkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUFDLE9BQU8sR0FBRyxDQUFDO1FBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsT0FBTyxLQUFLO2FBQ1QsT0FBTyxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQzthQUN6QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDO2FBQ3JDLElBQUksRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO2dCQUMxQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUzthQUNuRSxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdELFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMxRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLGFBQWEsQ0FBbUIsMkJBQTJCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNqRixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPO1FBRWhCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztZQUNyRSxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0EvR1UsOEJBQThCO21HQUE5Qiw4QkFBOEIseUpDdEMzQyxpOU9BME1BLHdrS0RsTEksd0JBQXdCLHdLQUN4QiwyQkFBMkIsd0hBQzNCLHNCQUFzQiw2SUFDdEIsd0JBQXdCLDJLQUN4QiwrQkFBK0IsbUhBQy9CLHNCQUFzQixrRkFDdEIsd0JBQXdCLDhLQUN4Qix5QkFBeUIsaUlBQ3pCLGFBQWEsaURBQ2IsWUFBWTs7NEZBS0gsOEJBQThCO2tCQWxCMUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQO3dCQUNQLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsK0JBQStCO3dCQUMvQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixhQUFhO3dCQUNiLFlBQVk7cUJBQ2I7OEJBMkZELFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuXG5cbmltcG9ydCB7IFNiZEJvb2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYm9va2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNiZFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRkxJR0hUX0FDVElPTlMgfSBmcm9tICcuLi8uLi9jb25maWcvZmxpZ2h0LWFjdGlvbnMuY29uZmlnJztcbmltcG9ydCB7IEhPVEVMX0FDVElPTlMgfSBmcm9tICcuLi8uLi9jb25maWcvaG90ZWwtYWN0aW9ucy5jb25maWcnO1xuaW1wb3J0IHsgUHJvZHVjdFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYm9va2luZy50eXBlcyc7XG5cbmltcG9ydCB7IFNiZEJvb2tpbmdJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYm9va2luZy1pbnB1dC9ib29raW5nLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRXb3JrZmxvd0FjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3dvcmtmbG93LWFjdGlvbnMvd29ya2Zsb3ctYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkQWN0aW9uR3JpZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYWN0aW9uLWdyaWQvYWN0aW9uLWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZENhbmNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY2FuY2VsLWRpYWxvZy9jYW5jZWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRGbGlnaHRJdGluZXJhcnlDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQvZmxpZ2h0LWl0aW5lcmFyeS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmREYXRhU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kYXRhLXNlYXJjaC9kYXRhLXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkQWN0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hY3Rpb24tZGlhbG9nL2FjdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEFkZE5vdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FkZC1ub3RlLWRpYWxvZy9hZGQtbm90ZS1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LWJvb2tpbmctZGFzaGJvYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFNiZEJvb2tpbmdJbnB1dENvbXBvbmVudCxcbiAgICBTYmRXb3JrZmxvd0FjdGlvbnNDb21wb25lbnQsXG4gICAgU2JkQWN0aW9uR3JpZENvbXBvbmVudCxcbiAgICBTYmRDYW5jZWxEaWFsb2dDb21wb25lbnQsXG4gICAgU2JkRmxpZ2h0SXRpbmVyYXJ5Q2FyZENvbXBvbmVudCxcbiAgICBTYmREYXRhU2VhcmNoQ29tcG9uZW50LFxuICAgIFNiZEFjdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgICBTYmRBZGROb3RlRGlhbG9nQ29tcG9uZW50LFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydEJvb2tpbmdEYXNoYm9hcmRDb21wb25lbnQge1xuICBwcml2YXRlIGJvb2tpbmdTZXJ2aWNlID0gaW5qZWN0KFNiZEJvb2tpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChTYmRUb2FzdFNlcnZpY2UpO1xuXG4gIHByb2R1Y3QgPSBzaWduYWw8UHJvZHVjdFR5cGU+KCdmbGlnaHQnKTtcbiAgYm9va2luZ0lkID0gc2lnbmFsKCcnKTtcblxuICBib29raW5nU3RhdHVzID0gc2lnbmFsPCdpZGxlJyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGJvb2tpbmdEYXRhID0gc2lnbmFsPGFueSB8IG51bGw+KG51bGwpO1xuXG4gIGNhbmNlbERpYWxvZ09wZW4gICAgPSBzaWduYWwoZmFsc2UpO1xuICBhY3Rpb25EaWFsb2dPcGVuICAgID0gc2lnbmFsKGZhbHNlKTtcbiAgYWRkTm90ZURpYWxvZ09wZW4gICA9IHNpZ25hbChmYWxzZSk7XG4gIHNlbGVjdGVkQWN0aW9uS2V5ICAgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGFjdGl2ZUNvbnRleHRUYWIgICAgPSBzaWduYWw8J25vdGVzJyB8ICdjaGFuZ2VzJz4oJ2NoYW5nZXMnKTtcblxuICBhdmFpbGFibGVBY3Rpb25zID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5wcm9kdWN0KCkgPT09ICdmbGlnaHQnID8gRkxJR0hUX0FDVElPTlMgOiBIT1RFTF9BQ1RJT05TKS5maWx0ZXIoYSA9PiAhYS5oaWRkZW4pXG4gICk7XG5cbiAgLy8gSGFuZGxlIGJvdGggY29ycmVjdCBzcGVsbGluZyAoZGF0YVZlcmlmaWVkKSBhbmQgQkUgdHlwbyAoZGF0YVZlcmZpZWQpXG4gIGRhdGFWZXJpZmllZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBiaSA9IHRoaXMuYm9va2luZ0RhdGEoKT8uZGF0YT8uYm9va2luZ19pbmZvO1xuICAgIHJldHVybiBiaT8uZGF0YVZlcmlmaWVkID09PSB0cnVlIHx8IGJpPy5kYXRhVmVyZmllZCA9PT0gdHJ1ZTtcbiAgfSk7XG5cbiAgLy8gUE5SIGxpc3QgZm9yIHRoZSBhY3RpdmUgYm9va2luZywgbm9ybWFsaXplZCB0byBhIGZsYXQgYXJyYXkgcmVnYXJkbGVzcyBvZiBCRSBzaGFwZS5cbiAgY2FuY2VsUG5ySW5mbyA9IGNvbXB1dGVkPHsgcG5yPzogc3RyaW5nOyBMZWdEaXJlY3Rpb25hbGl0eT86IHN0cmluZyB9W10+KCgpID0+IHtcbiAgICBjb25zdCByYXcgPSB0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbz8ucG5yX2luZm87XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmF3KSkgcmV0dXJuIHJhdztcbiAgICBpZiAocmF3Py5wbnIpIHJldHVybiBbeyBwbnI6IHJhdy5wbnIsIExlZ0RpcmVjdGlvbmFsaXR5OiAnRGVwYXJ0dXJlJyB9XTtcbiAgICByZXR1cm4gW107XG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGJvb2tpbmdIaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuYm9va2luZ0RhdGEoKT8uZGF0YT8uYm9va2luZ19pbmZvPy5oaXN0b3J5ID8/IFtdKSBhcyBhbnlbXSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgYm9va2luZ05vdGVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuYm9va2luZ0RhdGEoKT8uZGF0YT8uYm9va2luZ19pbmZvPy5ub3RlcyA/PyBbXSkgYXMgYW55W10pO1xuXG4gIGhpc3RvcnlHcm91cHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBzID0gbmV3IE1hcDxzdHJpbmcsIHsgY2hhbmdlZEJ5OiBzdHJpbmc7IGNoYW5nZWRBdDogc3RyaW5nOyBlbnRyaWVzOiB7IGZpZWxkOiBzdHJpbmc7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9W10gfT4oKTtcbiAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5ib29raW5nSGlzdG9yeSgpKSB7XG4gICAgICBpZiAoIWdyb3Vwcy5oYXMoZS5jaGFuZ2VkQXQpKSBncm91cHMuc2V0KGUuY2hhbmdlZEF0LCB7IGNoYW5nZWRCeTogZS5jaGFuZ2VkQnksIGNoYW5nZWRBdDogZS5jaGFuZ2VkQXQsIGVudHJpZXM6IFtdIH0pO1xuICAgICAgY29uc3QgcmF3RmllbGQgPSAoZS5maWVsZCBhcyBzdHJpbmcpLnNwbGl0KCcuJykucG9wKCkgPz8gZS5maWVsZDtcbiAgICAgIGdyb3Vwcy5nZXQoZS5jaGFuZ2VkQXQpIS5lbnRyaWVzLnB1c2goe1xuICAgICAgICBmaWVsZDogcmF3RmllbGQucmVwbGFjZSgvXFxbLio/XFxdL2csICcnKSxcbiAgICAgICAgZnJvbTogZS5wcmV2aW91c1ZhbHVlLFxuICAgICAgICB0bzogZS5uZXdWYWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLmdyb3Vwcy52YWx1ZXMoKV07XG4gIH0pO1xuXG4gIGZtdE5vdGVEYXRlKGRhdGU6IHsgc2VjOiBudW1iZXI7IHVzZWM/OiBudW1iZXIgfSk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlPy5zZWMpIHJldHVybiAn4oCUJztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuc2VjICogMTAwMCkudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywge1xuICAgICAgICBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gJ+KAlCc7IH1cbiAgfVxuXG4gIGZvcm1hdEZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZFxuICAgICAgLnJlcGxhY2UoLyhbQS1aXSspKFtBLVpdW2Etel0pL2csICckMSAkMicpXG4gICAgICAucmVwbGFjZSgvKFthLXpcXGRdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC50cmltKCk7XG4gIH1cblxuICBmbXREYXRlKGR0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZHQpIHJldHVybiAn4oCUJztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGR0KS50b0xvY2FsZVN0cmluZygnZW4tR0InLCB7XG4gICAgICAgIGRheTogJzItZGlnaXQnLCBtb250aDogJ3Nob3J0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gZHQ7IH1cbiAgfVxuXG4gIG9wZW5BY3Rpb24oa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQWN0aW9uS2V5LnNldChrZXkpO1xuICAgIHRoaXMuYWN0aW9uRGlhbG9nT3Blbi5zZXQodHJ1ZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKChldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkpICYmIGV2ZW50LmtleSA9PT0gJ2snKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignLnNiZC1ib29raW5nLWlucHV0X19maWVsZCcpPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGxvb2t1cEJvb2tpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmJvb2tpbmdJZCgpLnRyaW0oKTtcbiAgICBpZiAoIWlkKSByZXR1cm47XG5cbiAgICB0aGlzLmJvb2tpbmdTdGF0dXMuc2V0KCdsb2FkaW5nJyk7XG5cbiAgICB0aGlzLmJvb2tpbmdTZXJ2aWNlLmdldEJvb2tpbmcoaWQsIHRoaXMucHJvZHVjdCgpLCAnYm9va2luZ19pbmZvJykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICB0aGlzLmJvb2tpbmdEYXRhLnNldChkYXRhKTtcbiAgICAgICAgdGhpcy5ib29raW5nU3RhdHVzLnNldCgnc3VjY2VzcycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYm9va2luZ1N0YXR1cy5zZXQoJ2Vycm9yJyk7XG4gICAgICAgIHRoaXMuYm9va2luZ0RhdGEuc2V0KG51bGwpO1xuICAgICAgICB0aGlzLnRvYXN0LmVycm9yKCdCb29raW5nIG5vdCBmb3VuZC4gQ2hlY2sgdGhlIElEIGFuZCB0cnkgYWdhaW4uJyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzYmQtcGFnZVwiPlxuXG4gIDwhLS0gU2VhcmNoIGJhciBmdWxsLXdpZHRoIGF0IHRvcCAtLT5cbiAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19zZWFyY2hcIj5cbiAgICA8YXBwLXNiZC1ib29raW5nLWlucHV0XG4gICAgICBbKHByb2R1Y3QpXT1cInByb2R1Y3RcIlxuICAgICAgWyhib29raW5nSWQpXT1cImJvb2tpbmdJZFwiXG4gICAgICBbbG9hZGluZ109XCJib29raW5nU3RhdHVzKCkgPT09ICdsb2FkaW5nJ1wiXG4gICAgICAobG9va3VwKT1cImxvb2t1cEJvb2tpbmcoKVwiXG4gICAgLz5cbiAgPC9kaXY+XG5cbiAgPCEtLSAyLWNvbHVtbiBsYXlvdXQgLS0+XG4gIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGVudFwiPlxuXG4gICAgPCEtLSBMZWZ0OiBib29raW5nIGNvbnRleHQgLS0+XG4gICAgPGFzaWRlIGNsYXNzPVwic2JkLXBhZ2VfX2FzaWRlXCI+XG5cbiAgICAgIDwhLS0gRGF0YSBzZWFyY2ggYXQgdGhlIHRvcCBvZiB0aGUgc2lkZWJhciAtLT5cbiAgICAgIEBpZiAoYm9va2luZ1N0YXR1cygpID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgPGFwcC1zYmQtZGF0YS1zZWFyY2ggW2RhdGFdPVwiYm9va2luZ0RhdGEoKVwiIC8+XG4gICAgICAgIDxhcHAtc2JkLWZsaWdodC1pdGluZXJhcnktY2FyZCBbcHJvZHVjdF09XCJwcm9kdWN0KClcIiBbZGF0YV09XCJib29raW5nRGF0YSgpXCIgW3ZlcmlmaWVkXT1cImRhdGFWZXJpZmllZCgpXCIgLz5cbiAgICAgIH1cblxuICAgICAgPCEtLSBMb2FkaW5nIHNrZWxldG9uIGZvciBhc2lkZSAtLT5cbiAgICAgIEBpZiAoYm9va2luZ1N0YXR1cygpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1jYXJkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1yb3dcIiBzdHlsZT1cIndpZHRoOjYwJVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo0MCVcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLXJvd1wiIHN0eWxlPVwid2lkdGg6ODAlXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1yb3dcIiBzdHlsZT1cIndpZHRoOjUwJVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgIDwvYXNpZGU+XG5cbiAgICA8IS0tIFJpZ2h0OiBhZ2VudCB3b3Jrc3BhY2UgLS0+XG4gICAgPG1haW4gY2xhc3M9XCJzYmQtcGFnZV9fbWFpblwiPlxuXG4gICAgICA8IS0tIEVycm9yIHN0YXRlIC0tPlxuICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdlcnJvcicpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19lcnJvclwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgIDxzcGFuPkJvb2tpbmcgbm90IGZvdW5kLiBEb3VibGUtY2hlY2sgdGhlIElEIGFuZCBwcm9kdWN0IHR5cGUsIHRoZW4gdHJ5IGFnYWluLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gQ29udGVudCBvbmNlIGxvYWRlZCAtLT5cbiAgICAgIEBpZiAoYm9va2luZ1N0YXR1cygpID09PSAnc3VjY2VzcycpIHtcblxuICAgICAgICA8IS0tIFF1aWNrIGFjdGlvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stYWN0aW9uc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX3F1aWNrLWxhYmVsXCI+UXVpY2sgYWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICA8YXBwLXNiZC13b3JrZmxvdy1hY3Rpb25zXG4gICAgICAgICAgICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgICAgICAgICAgIChjYW5jZWxCb29raW5nKT1cImNhbmNlbERpYWxvZ09wZW4uc2V0KHRydWUpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFjdGlvbiBncmlkIC0tPlxuICAgICAgICA8YXBwLXNiZC1hY3Rpb24tZ3JpZFxuICAgICAgICAgIFthY3Rpb25zXT1cImF2YWlsYWJsZUFjdGlvbnMoKVwiXG4gICAgICAgICAgW2FjdGl2ZUtleV09XCJzZWxlY3RlZEFjdGlvbktleSgpXCJcbiAgICAgICAgICAoYWN0aW9uU2VsZWN0ZWQpPVwib3BlbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8IS0tIENvbnRleHQ6IE5vdGVzICsgQ2hhbmdlcyB0YWJiZWQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dFwiPlxuXG4gICAgICAgICAgPCEtLSBUYWIgYmFyIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC10YWJzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFiXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNiZC1wYWdlX19jb250ZXh0LXRhYi0tYWN0aXZlXT1cImFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ2NoYW5nZXMnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUNvbnRleHRUYWIuc2V0KCdjaGFuZ2VzJylcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1oaXN0b3J5XCI+PC9pPlxuICAgICAgICAgICAgICBDaGFuZ2VzXG4gICAgICAgICAgICAgIEBpZiAoYm9va2luZ0hpc3RvcnkoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1waWxsIHNiZC1wYWdlX19jb250ZXh0LXBpbGwtLWNoYW5nZXNcIj57eyBib29raW5nSGlzdG9yeSgpLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFiXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNiZC1wYWdlX19jb250ZXh0LXRhYi0tYWN0aXZlXT1cImFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ25vdGVzJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVDb250ZXh0VGFiLnNldCgnbm90ZXMnKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNvbW1lbnRzXCI+PC9pPlxuICAgICAgICAgICAgICBOb3Rlc1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LXBpbGwgc2JkLXBhZ2VfX2NvbnRleHQtcGlsbC0tbm90ZXNcIj57eyBib29raW5nTm90ZXMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAoYWN0aXZlQ29udGV4dFRhYigpID09PSAnbm90ZXMnKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBsYWJlbD1cIkFkZCBOb3RlXCIgaWNvbj1cInBpIHBpLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLXNtIHAtYnV0dG9uLW91dGxpbmVkIHNiZC1wYWdlX19jb250ZXh0LWFkZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE5vdGVEaWFsb2dPcGVuLnNldCh0cnVlKVwiPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gTm90ZXMgdGFiIC0tPlxuICAgICAgICAgIEBpZiAoYWN0aXZlQ29udGV4dFRhYigpID09PSAnbm90ZXMnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX25vdGVzLWxpc3RcIj5cbiAgICAgICAgICAgICAgQGlmIChib29raW5nTm90ZXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5ib3hcIj48L2k+IE5vIG5vdGVzIHlldFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBmb3IgKG5vdGUgb2YgYm9va2luZ05vdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fbm90ZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19ub3RlLXRvcFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1wYWdlX19ub3RlLWJhZGdlIHNiZC1wYWdlX19ub3RlLWJhZGdlLS17eyBub3RlLmFjdGlvbiB8IGxvd2VyY2FzZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IG5vdGUuYWN0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS1hdXRob3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBub3RlLndyaXR0ZW5CeT8uZmlyc3ROYW1lIH19IHt7IG5vdGUud3JpdHRlbkJ5Py5sYXN0TmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX25vdGUtZGF0ZVwiPnt7IGZtdE5vdGVEYXRlKG5vdGUuZGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic2JkLXBhZ2VfX25vdGUtbXNnXCI+e3sgbm90ZS5tZXNzYWdlIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIENoYW5nZXMgdGFiIC0tPlxuICAgICAgICAgIEBpZiAoYWN0aXZlQ29udGV4dFRhYigpID09PSAnY2hhbmdlcycpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1ncm91cHNcIj5cbiAgICAgICAgICAgICAgQGlmIChoaXN0b3J5R3JvdXBzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPiBObyBjaGFuZ2VzIHJlY29yZGVkXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGZvciAoZ3JvdXAgb2YgaGlzdG9yeUdyb3VwcygpOyB0cmFjayBncm91cC5jaGFuZ2VkQXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1tZXRhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXNlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBncm91cC5jaGFuZ2VkQnkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1zZXBcIj7Ctzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZm10RGF0ZShncm91cC5jaGFuZ2VkQXQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkZpZWxkPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48aSBjbGFzcz1cInBpIHBpLXRpbWVzLWNpcmNsZVwiPjwvaT4gQmVmb3JlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48aSBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiPjwvaT4gQWZ0ZXI8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBncm91cC5lbnRyaWVzOyB0cmFjayBlbnRyeS5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1maWVsZFwiPnt7IGZvcm1hdEZpZWxkKGVudHJ5LmZpZWxkKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNiZC1wYWdlX19jaGFuZ2VzLW9sZFwiPnt7IGVudHJ5LmZyb20gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1uZXdcIj57eyBlbnRyeS50byB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgfVxuXG4gICAgICA8IS0tIExvYWRpbmcgc2tlbGV0b24gZm9yIG1haW4gLS0+XG4gICAgICBAaWYgKGJvb2tpbmdTdGF0dXMoKSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tY2FyZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo0MCVcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLXJvd1wiIHN0eWxlPVwid2lkdGg6MjUlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgPC9tYWluPlxuXG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPGFwcC1zYmQtY2FuY2VsLWRpYWxvZ1xuICBbdmlzaWJsZV09XCJjYW5jZWxEaWFsb2dPcGVuKClcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgW3BuckluZm9dPVwiY2FuY2VsUG5ySW5mbygpXCJcbiAgW2Jvb2tpbmdJbmZvXT1cImJvb2tpbmdEYXRhKClcIlxuICAoY2xvc2VkKT1cImNhbmNlbERpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4gIChjb25maXJtZWQpPVwiYm9va2luZ1N0YXR1cy5zZXQoJ2lkbGUnKTsgYm9va2luZ0RhdGEuc2V0KG51bGwpXCJcbi8+XG5cbjxhcHAtc2JkLWFjdGlvbi1kaWFsb2dcbiAgW3Zpc2libGVdPVwiYWN0aW9uRGlhbG9nT3BlbigpXCJcbiAgW2Jvb2tpbmdJZF09XCJib29raW5nSWQoKVwiXG4gIFtwcm9kdWN0XT1cInByb2R1Y3QoKVwiXG4gIFthY3Rpb25zXT1cImF2YWlsYWJsZUFjdGlvbnMoKVwiXG4gIFtpbml0aWFsS2V5XT1cInNlbGVjdGVkQWN0aW9uS2V5KClcIlxuICBbcHJlbG9hZGVkRGF0YV09XCJib29raW5nRGF0YSgpXCJcbiAgKGNsb3NlZCk9XCJhY3Rpb25EaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuLz5cblxuPGFwcC1zYmQtYWRkLW5vdGUtZGlhbG9nXG4gIFt2aXNpYmxlXT1cImFkZE5vdGVEaWFsb2dPcGVuKClcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgKGNsb3NlZCk9XCJhZGROb3RlRGlhbG9nT3Blbi5zZXQoZmFsc2UpXCJcbi8+XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9wYWdlcy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zbWFydC1ib29raW5nLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3BhZ2VzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBa0MscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztB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Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOytHQXpIVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qix5SkM3QzNDLDhyUkFvT0EsNGxLRHpNSSx3QkFBd0Isd0tBQ3hCLDJCQUEyQix3SEFDM0Isc0JBQXNCLDZJQUN0Qix3QkFBd0IsMktBQ3hCLHFDQUFxQyx5TUFDckMsK0JBQStCLG1IQUUvQixzQkFBc0Isa0ZBQ3RCLHdCQUF3Qiw4S0FDeEIseUJBQXlCLHNJQUN6Qix3QkFBd0IsZ1JBQ3hCLGFBQWEsa0RBQ2IsSUFBSSw0RkFDSixZQUFZOzs0RkFLSCw4QkFBOEI7a0JBdEIxQyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1A7d0JBQ1Asd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4QixxQ0FBcUM7d0JBQ3JDLCtCQUErQjt3QkFDL0IsOEJBQThCO3dCQUM5QixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IsSUFBSTt3QkFDSixZQUFZO3FCQUNiOzhCQTJGRCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb3dlckNhc2VQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcblxuXG5pbXBvcnQgeyBTYmRCb29raW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jvb2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBTYmRUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEZMSUdIVF9BQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uZmlnL2ZsaWdodC1hY3Rpb25zLmNvbmZpZyc7XG5pbXBvcnQgeyBIT1RFTF9BQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uZmlnL2hvdGVsLWFjdGlvbnMuY29uZmlnJztcbmltcG9ydCB7IFByb2R1Y3RUeXBlLCBJSG90ZWxCb29raW5nRGF0YSwgbWFwVG9Ib3RlbEJvb2tpbmdEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jvb2tpbmcudHlwZXMnO1xuXG5pbXBvcnQgeyBTYmRCb29raW5nSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Jvb2tpbmctaW5wdXQvYm9va2luZy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkV29ya2Zsb3dBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy1hY3Rpb25zL3dvcmtmbG93LWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEFjdGlvbkdyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi1ncmlkL2FjdGlvbi1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRDYW5jZWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NhbmNlbC1kaWFsb2cvY2FuY2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEZsaWdodEl0aW5lcmFyeUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZsaWdodC1pdGluZXJhcnktY2FyZC9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEhvdGVsSXRpbmVyYXJ5Q2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtaXRpbmVyYXJ5LWNhcmQvaG90ZWwtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZERhdGFTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RhdGEtc2VhcmNoL2RhdGEtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRBY3Rpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi1kaWFsb2cvYWN0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkQWRkTm90ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYWRkLW5vdGUtZGlhbG9nL2FkZC1ub3RlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkSG90ZWxDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9ob3RlbC1jb250ZW50L2hvdGVsLWNvbnRlbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNtYXJ0LWJvb2tpbmctZGFzaGJvYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFNiZEJvb2tpbmdJbnB1dENvbXBvbmVudCxcbiAgICBTYmRXb3JrZmxvd0FjdGlvbnNDb21wb25lbnQsXG4gICAgU2JkQWN0aW9uR3JpZENvbXBvbmVudCxcbiAgICBTYmRDYW5jZWxEaWFsb2dDb21wb25lbnQsXG4gICAgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkNvbXBvbmVudCxcbiAgICBTYmRGbGlnaHRJdGluZXJhcnlDYXJkQ29tcG9uZW50LFxuICAgIFNiZEhvdGVsSXRpbmVyYXJ5Q2FyZENvbXBvbmVudCxcbiAgICBTYmREYXRhU2VhcmNoQ29tcG9uZW50LFxuICAgIFNiZEFjdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgICBTYmRBZGROb3RlRGlhbG9nQ29tcG9uZW50LFxuICAgIFNiZEhvdGVsQ29udGVudENvbXBvbmVudCxcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIE5nSWYsXG4gICAgQnV0dG9uTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydEJvb2tpbmdEYXNoYm9hcmRDb21wb25lbnQge1xuICBwcml2YXRlIGJvb2tpbmdTZXJ2aWNlID0gaW5qZWN0KFNiZEJvb2tpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChTYmRUb2FzdFNlcnZpY2UpO1xuXG4gIHByb2R1Y3QgPSBzaWduYWw8UHJvZHVjdFR5cGU+KCdmbGlnaHQnKTtcbiAgYm9va2luZ0lkID0gc2lnbmFsKCcnKTtcblxuICBib29raW5nU3RhdHVzID0gc2lnbmFsPCdpZGxlJyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIGJvb2tpbmdEYXRhID0gc2lnbmFsPElIb3RlbEJvb2tpbmdEYXRhIHwgYW55IHwgbnVsbD4obnVsbCk7XG5cbiAgY2FuY2VsRGlhbG9nT3BlbiAgICAgICAgID0gc2lnbmFsKGZhbHNlKTtcbiAgaG90ZWxBdXRvQ2FuY2VsRGlhbG9nT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIGFjdGlvbkRpYWxvZ09wZW4gICAgICAgICA9IHNpZ25hbChmYWxzZSk7XG4gIGFkZE5vdGVEaWFsb2dPcGVuICAgICAgICA9IHNpZ25hbChmYWxzZSk7XG4gIHNlbGVjdGVkQWN0aW9uS2V5ICAgICAgICA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgYWN0aXZlQ29udGV4dFRhYiAgICAgICAgID0gc2lnbmFsPCdub3RlcycgfCAnY2hhbmdlcyc+KCdjaGFuZ2VzJyk7XG5cbiAgYXZhaWxhYmxlQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMucHJvZHVjdCgpID09PSAnZmxpZ2h0JyA/IEZMSUdIVF9BQ1RJT05TIDogSE9URUxfQUNUSU9OUykuZmlsdGVyKGEgPT4gIWEuaGlkZGVuKVxuICApO1xuXG4gIC8vIEhhbmRsZSBib3RoIGNvcnJlY3Qgc3BlbGxpbmcgKGRhdGFWZXJpZmllZCkgYW5kIEJFIHR5cG8gKGRhdGFWZXJmaWVkKVxuICBkYXRhVmVyaWZpZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmkgPSB0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbztcbiAgICByZXR1cm4gYmk/LmRhdGFWZXJpZmllZCA9PT0gdHJ1ZSB8fCBiaT8uZGF0YVZlcmZpZWQgPT09IHRydWU7XG4gIH0pO1xuXG4gIC8vIFBOUiBsaXN0IGZvciB0aGUgYWN0aXZlIGJvb2tpbmcsIG5vcm1hbGl6ZWQgdG8gYSBmbGF0IGFycmF5IHJlZ2FyZGxlc3Mgb2YgQkUgc2hhcGUuXG4gIGNhbmNlbFBuckluZm8gPSBjb21wdXRlZDx7IHBucj86IHN0cmluZzsgTGVnRGlyZWN0aW9uYWxpdHk/OiBzdHJpbmcgfVtdPigoKSA9PiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5ib29raW5nRGF0YSgpPy5kYXRhPy5ib29raW5nX2luZm8/LnBucl9pbmZvO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHJldHVybiByYXc7XG4gICAgaWYgKHJhdz8ucG5yKSByZXR1cm4gW3sgcG5yOiByYXcucG5yLCBMZWdEaXJlY3Rpb25hbGl0eTogJ0RlcGFydHVyZScgfV07XG4gICAgcmV0dXJuIFtdO1xuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBib29raW5nSGlzdG9yeSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbz8uaGlzdG9yeSA/PyBbXSkgYXMgYW55W10pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGJvb2tpbmdOb3RlcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbz8ubm90ZXMgPz8gW10pIGFzIGFueVtdKTtcblxuICBoaXN0b3J5R3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCB7IGNoYW5nZWRCeTogc3RyaW5nOyBjaGFuZ2VkQXQ6IHN0cmluZzsgZW50cmllczogeyBmaWVsZDogc3RyaW5nOyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfVtdIH0+KCk7XG4gICAgZm9yIChjb25zdCBlIG9mIHRoaXMuYm9va2luZ0hpc3RvcnkoKSkge1xuICAgICAgaWYgKCFncm91cHMuaGFzKGUuY2hhbmdlZEF0KSkgZ3JvdXBzLnNldChlLmNoYW5nZWRBdCwgeyBjaGFuZ2VkQnk6IGUuY2hhbmdlZEJ5LCBjaGFuZ2VkQXQ6IGUuY2hhbmdlZEF0LCBlbnRyaWVzOiBbXSB9KTtcbiAgICAgIGNvbnN0IHJhd0ZpZWxkID0gKGUuZmllbGQgYXMgc3RyaW5nKS5zcGxpdCgnLicpLnBvcCgpID8/IGUuZmllbGQ7XG4gICAgICBncm91cHMuZ2V0KGUuY2hhbmdlZEF0KSEuZW50cmllcy5wdXNoKHtcbiAgICAgICAgZmllbGQ6IHJhd0ZpZWxkLnJlcGxhY2UoL1xcWy4qP1xcXS9nLCAnJyksXG4gICAgICAgIGZyb206IGUucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgdG86IGUubmV3VmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5ncm91cHMudmFsdWVzKCldO1xuICB9KTtcblxuICBmbXROb3RlRGF0ZShkYXRlOiB7IHNlYzogbnVtYmVyOyB1c2VjPzogbnVtYmVyIH0pOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZT8uc2VjKSByZXR1cm4gJ+KAlCc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLnNlYyAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCdlbi1HQicsIHtcbiAgICAgICAgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHsgcmV0dXJuICfigJQnOyB9XG4gIH1cblxuICBmb3JtYXRGaWVsZChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGRcbiAgICAgIC5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCAnJDEgJDInKVxuICAgICAgLnJlcGxhY2UoLyhbYS16XFxkXSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAudHJpbSgpO1xuICB9XG5cbiAgZm10RGF0ZShkdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWR0KSByZXR1cm4gJ+KAlCc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkdCkudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywge1xuICAgICAgICBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHsgcmV0dXJuIGR0OyB9XG4gIH1cblxuICBvcGVuQWN0aW9uKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbktleS5zZXQoa2V5KTtcbiAgICB0aGlzLmFjdGlvbkRpYWxvZ09wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICgoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSAmJiBldmVudC5rZXkgPT09ICdrJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oJy5zYmQtYm9va2luZy1pbnB1dF9fZmllbGQnKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBsb29rdXBCb29raW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IGlkID0gdGhpcy5ib29raW5nSWQoKS50cmltKCk7XG4gICAgaWYgKCFpZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5ib29raW5nU3RhdHVzLnNldCgnbG9hZGluZycpO1xuXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wcm9kdWN0KCkgPT09ICdob3RlbCdcbiAgICAgID8gWydib29raW5nX2luZm8nLCAnaG90ZWxfaW5mb3JtYXRpb24nLCAnY2hlY2tpbl9jaGVja291dCcsICdyb29tX2luZm9ybWF0aW9uJ11cbiAgICAgIDogJ2Jvb2tpbmdfaW5mbyc7XG5cbiAgICB0aGlzLmJvb2tpbmdTZXJ2aWNlLmdldEJvb2tpbmcoaWQsIHRoaXMucHJvZHVjdCgpLCBmaWVsZHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0Jvb2tpbmcgZGF0YSByZWNlaXZlZDonLCBkYXRhKTsgIFxuICAgICAgICBpZih0aGlzLnByb2R1Y3QoKSA9PT0gJ2hvdGVsJyl7XG4gICAgICAgICAgY29uc3QgbWFwcGVkRGF0YSA9IG1hcFRvSG90ZWxCb29raW5nRGF0YShkYXRhKTtcbiAgICAgICAgICB0aGlzLmJvb2tpbmdEYXRhLnNldChtYXBwZWREYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmJvb2tpbmdEYXRhLnNldChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJvb2tpbmdTdGF0dXMuc2V0KCdzdWNjZXNzJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5ib29raW5nU3RhdHVzLnNldCgnZXJyb3InKTtcbiAgICAgICAgdGhpcy5ib29raW5nRGF0YS5zZXQobnVsbCk7XG4gICAgICAgIHRoaXMudG9hc3QuZXJyb3IoJ0Jvb2tpbmcgbm90IGZvdW5kLiBDaGVjayB0aGUgSUQgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInNiZC1wYWdlXCI+XG5cbiAgPCEtLSBTZWFyY2ggYmFyIGZ1bGwtd2lkdGggYXQgdG9wIC0tPlxuICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NlYXJjaFwiPlxuICAgIDxhcHAtc2JkLWJvb2tpbmctaW5wdXRcbiAgICAgIFsocHJvZHVjdCldPVwicHJvZHVjdFwiXG4gICAgICBbKGJvb2tpbmdJZCldPVwiYm9va2luZ0lkXCJcbiAgICAgIFtsb2FkaW5nXT1cImJvb2tpbmdTdGF0dXMoKSA9PT0gJ2xvYWRpbmcnXCJcbiAgICAgIChsb29rdXApPVwibG9va3VwQm9va2luZygpXCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8IS0tIEhvdGVsOiBVc2UgZGVkaWNhdGVkIGNvbXBvbmVudCAtLT5cbiAgQGlmIChwcm9kdWN0KCkgPT09ICdob3RlbCcpIHtcbiAgICA8YXBwLXNiZC1ob3RlbC1jb250ZW50XG4gICAgICBbYm9va2luZ0RhdGFdPVwiYm9va2luZ0RhdGEoKVwiXG4gICAgICBbYm9va2luZ1N0YXR1c109XCJib29raW5nU3RhdHVzKClcIlxuICAgICAgW2Jvb2tpbmdJZF09XCJib29raW5nSWQoKVwiXG4gICAgICBbZGF0YVZlcmlmaWVkXT1cImRhdGFWZXJpZmllZCgpXCJcbiAgICAgIFtib29raW5nTm90ZXNdPVwiYm9va2luZ05vdGVzKClcIlxuICAgICAgW2Jvb2tpbmdIaXN0b3J5XT1cImJvb2tpbmdIaXN0b3J5KClcIlxuICAgICAgW2hpc3RvcnlHcm91cHNdPVwiaGlzdG9yeUdyb3VwcygpXCJcbiAgICAgIFthY3RpdmVDb250ZXh0VGFiXT1cImFjdGl2ZUNvbnRleHRUYWIoKVwiXG4gICAgICAoY2FuY2VsQm9va2luZyk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldCh0cnVlKVwiXG4gICAgICAoYWRkTm90ZVJlcXVlc3RlZCk9XCJhZGROb3RlRGlhbG9nT3Blbi5zZXQodHJ1ZSlcIlxuICAgICAgKGNvbnRleHRUYWJDaGFuZ2VkKT1cImFjdGl2ZUNvbnRleHRUYWIuc2V0KCRldmVudClcIlxuICAgIC8+XG4gIH1cblxuICA8IS0tIEZsaWdodDogS2VlcCBvcmlnaW5hbCAyLWNvbHVtbiBsYXlvdXQgLS0+XG4gIEBpZiAocHJvZHVjdCgpID09PSAnZmxpZ2h0Jykge1xuICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGVudFwiPlxuXG4gICAgICA8IS0tIExlZnQ6IGJvb2tpbmcgY29udGV4dCAtLT5cbiAgICAgIDxhc2lkZSBjbGFzcz1cInNiZC1wYWdlX19hc2lkZVwiPlxuXG4gICAgICAgIDwhLS0gRGF0YSBzZWFyY2ggYXQgdGhlIHRvcCBvZiB0aGUgc2lkZWJhciAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgIDxhcHAtc2JkLWRhdGEtc2VhcmNoIFtkYXRhXT1cImJvb2tpbmdEYXRhKClcIiAvPlxuICAgICAgICAgIDxhcHAtc2JkLWZsaWdodC1pdGluZXJhcnktY2FyZCBbcHJvZHVjdF09XCJwcm9kdWN0KClcIiBbZGF0YV09XCJib29raW5nRGF0YSgpXCIgW3ZlcmlmaWVkXT1cImRhdGFWZXJpZmllZCgpXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBmb3IgYXNpZGUgLS0+XG4gICAgICAgIEBpZiAoYm9va2luZ1N0YXR1cygpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLWNhcmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo2MCVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo0MCVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo4MCVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo1MCVcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICA8L2FzaWRlPlxuXG4gICAgICA8IS0tIFJpZ2h0OiBhZ2VudCB3b3Jrc3BhY2UgLS0+XG4gICAgICA8bWFpbiBjbGFzcz1cInNiZC1wYWdlX19tYWluXCI+XG5cbiAgICAgICAgPCEtLSBFcnJvciBzdGF0ZSAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2Vycm9yXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPkJvb2tpbmcgbm90IGZvdW5kLiBEb3VibGUtY2hlY2sgdGhlIElEIGFuZCBwcm9kdWN0IHR5cGUsIHRoZW4gdHJ5IGFnYWluLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ29udGVudCBvbmNlIGxvYWRlZCAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdzdWNjZXNzJykge1xuXG4gICAgICAgICAgPCEtLSBRdWljayBhY3Rpb25zIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stbGFiZWxcIj5RdWljayBhY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgPGFwcC1zYmQtd29ya2Zsb3ctYWN0aW9uc1xuICAgICAgICAgICAgICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgICAgICAgICAgICAgKGNhbmNlbEJvb2tpbmcpPVwiY2FuY2VsRGlhbG9nT3Blbi5zZXQodHJ1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQWN0aW9uIGdyaWQgLS0+XG4gICAgICAgICAgPGFwcC1zYmQtYWN0aW9uLWdyaWRcbiAgICAgICAgICAgIFthY3Rpb25zXT1cImF2YWlsYWJsZUFjdGlvbnMoKVwiXG4gICAgICAgICAgICBbYWN0aXZlS2V5XT1cInNlbGVjdGVkQWN0aW9uS2V5KClcIlxuICAgICAgICAgICAgKGFjdGlvblNlbGVjdGVkKT1cIm9wZW5BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDwhLS0gQ29udGV4dDogTm90ZXMgKyBDaGFuZ2VzIHRhYmJlZCAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHRcIj5cblxuICAgICAgICAgICAgPCEtLSBUYWIgYmFyIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LXRhYnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LXRhYlwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNiZC1wYWdlX19jb250ZXh0LXRhYi0tYWN0aXZlXT1cImFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ2NoYW5nZXMnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlQ29udGV4dFRhYi5zZXQoJ2NoYW5nZXMnKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaGlzdG9yeVwiPjwvaT5cbiAgICAgICAgICAgICAgICBDaGFuZ2VzXG4gICAgICAgICAgICAgICAgQGlmIChib29raW5nSGlzdG9yeSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtcGlsbCBzYmQtcGFnZV9fY29udGV4dC1waWxsLS1jaGFuZ2VzXCI+e3sgYm9va2luZ0hpc3RvcnkoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LXRhYlwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNiZC1wYWdlX19jb250ZXh0LXRhYi0tYWN0aXZlXT1cImFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ25vdGVzJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUNvbnRleHRUYWIuc2V0KCdub3RlcycpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jb21tZW50c1wiPjwvaT5cbiAgICAgICAgICAgICAgICBOb3Rlc1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtcGlsbCBzYmQtcGFnZV9fY29udGV4dC1waWxsLS1ub3Rlc1wiPnt7IGJvb2tpbmdOb3RlcygpLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIEBpZiAoYWN0aXZlQ29udGV4dFRhYigpID09PSAnbm90ZXMnKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIGxhYmVsPVwiQWRkIE5vdGVcIiBpY29uPVwicGkgcGktcGx1c1wiIGNsYXNzPVwicC1idXR0b24tc20gcC1idXR0b24tb3V0bGluZWQgc2JkLXBhZ2VfX2NvbnRleHQtYWRkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROb3RlRGlhbG9nT3Blbi5zZXQodHJ1ZSlcIj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gTm90ZXMgdGFiIC0tPlxuICAgICAgICAgICAgQGlmIChhY3RpdmVDb250ZXh0VGFiKCkgPT09ICdub3RlcycpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19ub3Rlcy1saXN0XCI+XG4gICAgICAgICAgICAgICAgQGlmIChib29raW5nTm90ZXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1lbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWluYm94XCI+PC9pPiBObyBub3RlcyB5ZXRcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZm9yIChub3RlIG9mIGJvb2tpbmdOb3RlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fbm90ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX25vdGUtdG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS1iYWRnZSBzYmQtcGFnZV9fbm90ZS1iYWRnZS0te3sgbm90ZS5hY3Rpb24gfCBsb3dlcmNhc2UgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vdGUuYWN0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX25vdGUtYXV0aG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub3RlLndyaXR0ZW5CeT8uZmlyc3ROYW1lIH19IHt7IG5vdGUud3JpdHRlbkJ5Py5sYXN0TmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1wYWdlX19ub3RlLWRhdGVcIj57eyBmbXROb3RlRGF0ZShub3RlLmRhdGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS1tc2dcIj57eyBub3RlLm1lc3NhZ2UgfX08L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIENoYW5nZXMgdGFiIC0tPlxuICAgICAgICAgICAgQGlmIChhY3RpdmVDb250ZXh0VGFiKCkgPT09ICdjaGFuZ2VzJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgQGlmIChoaXN0b3J5R3JvdXBzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jaGVja1wiPjwvaT4gTm8gY2hhbmdlcyByZWNvcmRlZFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGhpc3RvcnlHcm91cHMoKTsgdHJhY2sgZ3JvdXAuY2hhbmdlZEF0KSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19jaGFuZ2VzLW1ldGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXVzZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBncm91cC5jaGFuZ2VkQnkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1wYWdlX19jaGFuZ2VzLXNlcFwiPsK3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZtdERhdGUoZ3JvdXAuY2hhbmdlZEF0KSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInNiZC1wYWdlX19jaGFuZ2VzLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+RmllbGQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGkgY2xhc3M9XCJwaSBwaS10aW1lcy1jaXJjbGVcIj48L2k+IEJlZm9yZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48aSBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiPjwvaT4gQWZ0ZXI8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIGdyb3VwLmVudHJpZXM7IHRyYWNrIGVudHJ5LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1maWVsZFwiPnt7IGZvcm1hdEZpZWxkKGVudHJ5LmZpZWxkKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtb2xkXCI+e3sgZW50cnkuZnJvbSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtbmV3XCI+e3sgZW50cnkudG8gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBmb3IgbWFpbiAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdsb2FkaW5nJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tY2FyZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1yb3dcIiBzdHlsZT1cIndpZHRoOjQwJVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1yb3dcIiBzdHlsZT1cIndpZHRoOjI1JVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgIDwvbWFpbj5cblxuICAgIDwvZGl2PlxuICB9XG5cbjwvZGl2PlxuXG48YXBwLXNiZC1jYW5jZWwtZGlhbG9nXG4gIFt2aXNpYmxlXT1cImNhbmNlbERpYWxvZ09wZW4oKSAmJiBwcm9kdWN0KCkgPT09ICdmbGlnaHQnXCJcbiAgW2Jvb2tpbmdJZF09XCJib29raW5nSWQoKVwiXG4gIFtwcm9kdWN0XT1cInByb2R1Y3QoKVwiXG4gIFtwbnJJbmZvXT1cImNhbmNlbFBuckluZm8oKVwiXG4gIFtib29raW5nSW5mb109XCJib29raW5nRGF0YSgpXCJcbiAgKGNsb3NlZCk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuICAoY29uZmlybWVkKT1cImJvb2tpbmdTdGF0dXMuc2V0KCdpZGxlJyk7IGJvb2tpbmdEYXRhLnNldChudWxsKVwiXG4vPlxuXG48YWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvblxuICAqbmdJZj1cImNhbmNlbERpYWxvZ09wZW4oKSAmJiBwcm9kdWN0KCkgPT09ICdob3RlbCdcIlxuICBbc2VsZWN0ZWRIb3RlbEJvb2tpbmddPVwiYm9va2luZ0RhdGEoKVwiXG4gIChjbG9zZWQpPVwiY2FuY2VsRGlhbG9nT3Blbi5zZXQoZmFsc2UpXCJcbiAgKGNhbmNlbGxhdGlvblN1Y2Nlc3MpPVwiYm9va2luZ1N0YXR1cy5zZXQoJ2lkbGUnKTsgYm9va2luZ0RhdGEuc2V0KG51bGwpXCJcbi8+XG5cbjxhcHAtc2JkLWFjdGlvbi1kaWFsb2dcbiAgW3Zpc2libGVdPVwiYWN0aW9uRGlhbG9nT3BlbigpXCJcbiAgW2Jvb2tpbmdJZF09XCJib29raW5nSWQoKVwiXG4gIFtwcm9kdWN0XT1cInByb2R1Y3QoKVwiXG4gIFthY3Rpb25zXT1cImF2YWlsYWJsZUFjdGlvbnMoKVwiXG4gIFtpbml0aWFsS2V5XT1cInNlbGVjdGVkQWN0aW9uS2V5KClcIlxuICBbcHJlbG9hZGVkRGF0YV09XCJib29raW5nRGF0YSgpXCJcbiAgKGNsb3NlZCk9XCJhY3Rpb25EaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuLz5cblxuPGFwcC1zYmQtYWRkLW5vdGUtZGlhbG9nXG4gIFt2aXNpYmxlXT1cImFkZE5vdGVEaWFsb2dPcGVuKClcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgKGNsb3NlZCk9XCJhZGROb3RlRGlhbG9nT3Blbi5zZXQoZmFsc2UpXCJcbi8+XG4iXX0=
|