@almatar/smart-booking-dashboard 0.0.2-alpha.7 → 0.0.2-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/esm2022/lib/components/booking-input/booking-input.component.mjs +16 -4
  2. package/esm2022/lib/components/flight-itinerary-card/flight-itinerary-card.component.mjs +3 -3
  3. 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 +4 -3
  4. package/esm2022/lib/components/reissue-dialog/reissue-dialog.component.mjs +3 -3
  5. package/esm2022/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.mjs +2 -2
  6. package/esm2022/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.mjs +3 -3
  7. package/esm2022/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.mjs +2 -2
  8. package/esm2022/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.mjs +3 -3
  9. package/esm2022/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.mjs +2 -2
  10. package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.mjs +3 -3
  11. package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.mjs +3 -5
  12. package/esm2022/lib/config/dashboard.config.mjs +6 -1
  13. package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +8 -3
  14. package/esm2022/lib/services/booking.service.mjs +3 -3
  15. package/esm2022/lib/services/brand.service.mjs +29 -0
  16. package/esm2022/lib/services/reissue.service.mjs +3 -3
  17. package/esm2022/lib/shared/services/api.service.mjs +3 -3
  18. package/esm2022/lib/shared/services/sbd-http.mjs +27 -0
  19. package/esm2022/public-api.mjs +2 -1
  20. package/fesm2022/almatar-smart-booking-dashboard.mjs +100 -31
  21. package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
  22. package/lib/components/action-dialog/action-dialog.component.d.ts +1 -1
  23. package/lib/components/booking-input/booking-input.component.d.ts +7 -1
  24. package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +4 -4
  25. package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +1 -1
  26. package/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.d.ts +1 -1
  27. package/lib/components/result-panel/result-panel.component.d.ts +1 -1
  28. package/lib/config/dashboard.config.d.ts +12 -0
  29. package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +3 -1
  30. package/lib/services/brand.service.d.ts +14 -0
  31. package/lib/shared/services/sbd-http.d.ts +8 -0
  32. package/package.json +1 -1
  33. package/public-api.d.ts +2 -1
@@ -116,7 +116,7 @@ export class SbdReissueUpgradeConfirmStepComponent {
116
116
  : 'Nothing to pay: confirming places the upgrade straight away.' }}
117
117
  </app-sbd-reissue-notice>
118
118
  }
119
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rconf__summary{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.sbd-rconf__row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13.5px}.sbd-rconf__row strong{font-size:14px;font-weight:800;color:#1e2e4a;font-variant-numeric:tabular-nums;white-space:nowrap}.sbd-rconf__row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.sbd-rconf__row-main b{font-weight:700;color:#1e2e4a}.sbd-rconf__row-main small{font-size:12.5px;color:#64748b}.sbd-rconf__total{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e2e8f0;padding-top:12px}.sbd-rconf__total span{font-size:14.5px;font-weight:700;color:#1e2e4a}.sbd-rconf__total strong{font-size:17px;font-weight:800;color:#1e2e4a;font-variant-numeric:tabular-nums}.sbd-rconf__link{border:1.5px solid #e2e8f0;border-radius:16px;background:#fff;transition:border-color .15s,box-shadow .15s;padding:16px;display:flex;flex-direction:column;gap:10px}.sbd-rconf__link-head{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:#1e2e4a}.sbd-rconf__link-head small{color:#94a3b8;font-size:12.5px}.sbd-rconf__link-row{display:flex;gap:8px}.sbd-rconf__link-input{height:40px;padding:0 12px;border:1.5px solid #e2e8f0;border-radius:10px;background:#fff;font-size:13px;font-family:inherit;color:#1e2e4a}.sbd-rconf__link-input:focus{outline:none;border-color:var(--sbd-accent, #6d4aff)}.sbd-rconf__link-input{flex:1;min-width:0;height:36px;font-size:12px;color:#334155}.sbd-rconf__expiry{color:#94a3b8;font-size:12.5px;font-variant-numeric:tabular-nums}.sbd-rconf__expiry--soon{color:#b45309;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: SbdReissueNoticeComponent, selector: "app-sbd-reissue-notice", inputs: ["icon", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
119
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rconf__summary{background:var(--sbd-r-soft, #f8fafc);border:1px solid var(--sbd-r-line, #e2e8f0);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.sbd-rconf__row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13.5px}.sbd-rconf__row strong{font-size:14px;font-weight:800;color:var(--sbd-r-ink, #1e2e4a);font-variant-numeric:tabular-nums;white-space:nowrap}.sbd-rconf__row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.sbd-rconf__row-main b{font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rconf__row-main small{font-size:12.5px;color:var(--sbd-r-muted, #64748b)}.sbd-rconf__total{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--sbd-r-line, #e2e8f0);padding-top:12px}.sbd-rconf__total span{font-size:14.5px;font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rconf__total strong{font-size:17px;font-weight:800;color:var(--sbd-r-ink, #1e2e4a);font-variant-numeric:tabular-nums}.sbd-rconf__link{border:1.5px solid var(--sbd-r-line, #e2e8f0);border-radius:16px;background:var(--sbd-r-surface, #fff);transition:border-color .15s,box-shadow .15s;padding:16px;display:flex;flex-direction:column;gap:10px}.sbd-rconf__link-head{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rconf__link-head small{color:var(--sbd-r-faint, #94a3b8);font-size:12.5px}.sbd-rconf__link-row{display:flex;gap:8px}.sbd-rconf__link-input{height:40px;padding:0 12px;border:1.5px solid var(--sbd-r-line, #e2e8f0);border-radius:10px;background:var(--sbd-r-surface, #fff);font-size:13px;font-family:inherit;color:var(--sbd-r-ink, #1e2e4a);color-scheme:inherit}.sbd-rconf__link-input:focus{outline:none;border-color:var(--sbd-accent, #6d4aff)}.sbd-rconf__link-input{flex:1;min-width:0;height:36px;font-size:12px;color:var(--sbd-r-input-text, #334155)}.sbd-rconf__expiry{color:var(--sbd-r-faint, #94a3b8);font-size:12.5px;font-variant-numeric:tabular-nums}.sbd-rconf__expiry--soon{color:var(--sbd-r-expiry-soon, #b45309);font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: SbdReissueNoticeComponent, selector: "app-sbd-reissue-notice", inputs: ["icon", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
120
120
  }
121
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueUpgradeConfirmStepComponent, decorators: [{
122
122
  type: Component,
@@ -188,6 +188,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
188
188
  : 'Nothing to pay: confirming places the upgrade straight away.' }}
189
189
  </app-sbd-reissue-notice>
190
190
  }
191
- `, host: { class: 'sbd-rconf' }, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rconf__summary{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.sbd-rconf__row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13.5px}.sbd-rconf__row strong{font-size:14px;font-weight:800;color:#1e2e4a;font-variant-numeric:tabular-nums;white-space:nowrap}.sbd-rconf__row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.sbd-rconf__row-main b{font-weight:700;color:#1e2e4a}.sbd-rconf__row-main small{font-size:12.5px;color:#64748b}.sbd-rconf__total{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e2e8f0;padding-top:12px}.sbd-rconf__total span{font-size:14.5px;font-weight:700;color:#1e2e4a}.sbd-rconf__total strong{font-size:17px;font-weight:800;color:#1e2e4a;font-variant-numeric:tabular-nums}.sbd-rconf__link{border:1.5px solid #e2e8f0;border-radius:16px;background:#fff;transition:border-color .15s,box-shadow .15s;padding:16px;display:flex;flex-direction:column;gap:10px}.sbd-rconf__link-head{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:#1e2e4a}.sbd-rconf__link-head small{color:#94a3b8;font-size:12.5px}.sbd-rconf__link-row{display:flex;gap:8px}.sbd-rconf__link-input{height:40px;padding:0 12px;border:1.5px solid #e2e8f0;border-radius:10px;background:#fff;font-size:13px;font-family:inherit;color:#1e2e4a}.sbd-rconf__link-input:focus{outline:none;border-color:var(--sbd-accent, #6d4aff)}.sbd-rconf__link-input{flex:1;min-width:0;height:36px;font-size:12px;color:#334155}.sbd-rconf__expiry{color:#94a3b8;font-size:12.5px;font-variant-numeric:tabular-nums}.sbd-rconf__expiry--soon{color:#b45309;font-weight:600}\n"] }]
191
+ `, host: { class: 'sbd-rconf' }, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rconf__summary{background:var(--sbd-r-soft, #f8fafc);border:1px solid var(--sbd-r-line, #e2e8f0);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.sbd-rconf__row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13.5px}.sbd-rconf__row strong{font-size:14px;font-weight:800;color:var(--sbd-r-ink, #1e2e4a);font-variant-numeric:tabular-nums;white-space:nowrap}.sbd-rconf__row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.sbd-rconf__row-main b{font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rconf__row-main small{font-size:12.5px;color:var(--sbd-r-muted, #64748b)}.sbd-rconf__total{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--sbd-r-line, #e2e8f0);padding-top:12px}.sbd-rconf__total span{font-size:14.5px;font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rconf__total strong{font-size:17px;font-weight:800;color:var(--sbd-r-ink, #1e2e4a);font-variant-numeric:tabular-nums}.sbd-rconf__link{border:1.5px solid var(--sbd-r-line, #e2e8f0);border-radius:16px;background:var(--sbd-r-surface, #fff);transition:border-color .15s,box-shadow .15s;padding:16px;display:flex;flex-direction:column;gap:10px}.sbd-rconf__link-head{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rconf__link-head small{color:var(--sbd-r-faint, #94a3b8);font-size:12.5px}.sbd-rconf__link-row{display:flex;gap:8px}.sbd-rconf__link-input{height:40px;padding:0 12px;border:1.5px solid var(--sbd-r-line, #e2e8f0);border-radius:10px;background:var(--sbd-r-surface, #fff);font-size:13px;font-family:inherit;color:var(--sbd-r-ink, #1e2e4a);color-scheme:inherit}.sbd-rconf__link-input:focus{outline:none;border-color:var(--sbd-accent, #6d4aff)}.sbd-rconf__link-input{flex:1;min-width:0;height:36px;font-size:12px;color:var(--sbd-r-input-text, #334155)}.sbd-rconf__expiry{color:var(--sbd-r-faint, #94a3b8);font-size:12.5px;font-variant-numeric:tabular-nums}.sbd-rconf__expiry--soon{color:var(--sbd-r-expiry-soon, #b45309);font-weight:600}\n"] }]
192
192
  }], ctorParameters: () => [] });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvcmVpc3N1ZS1kaWFsb2cvc3RlcHMvcmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcC9yZWlzc3VlLXVwZ3JhZGUtY29uZmlybS1zdGVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUErRXZGLE1BQU0sT0FBTyxxQ0FBcUM7SUFnQ2hEO1FBL0JBLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF1QixDQUFDO1FBQzdDLFVBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QiwyQkFBMkI7UUFDM0IsV0FBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsS0FBSyxDQUE0QixJQUFJLENBQUMsQ0FBQztRQUM5QyxVQUFLLEdBQUcsS0FBSyxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUNuQyxtRkFBbUY7UUFDbkYsWUFBTyxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBRWYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyx1RkFBdUY7UUFDL0UsUUFBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6QixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RCxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNPLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNILHFGQUFxRjtRQUMzRSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsaURBQWlEO1FBQ3ZDLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUdqRixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRVMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFXO1FBQzlCLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyR0FBMkc7UUFDN0csQ0FBQztJQUNILENBQUM7K0dBN0NVLHFDQUFxQzttR0FBckMscUNBQXFDLDRoQ0F4RXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9FVCxrekRBdEVTLFlBQVksdUtBQUUseUJBQXlCOzs0RkEwRXRDLHFDQUFxQztrQkE3RWpELFNBQVM7K0JBQ0Usc0NBQXNDLGNBQ3BDLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxtQkFDakMsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRVQsUUFFSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFJlaXNzdWVQYXltZW50TGluayB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9yZWlzc3VlLnR5cGVzJztcbmltcG9ydCB7IGZvcm1hdENvdW50ZG93biwgcGFyc2VMaW5rRXhwaXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvcmVpc3N1ZS1mb3JtYXQnO1xuaW1wb3J0IHsgVXBncmFkZVN1bW1hcnlSb3cgfSBmcm9tICcuLi8uLi9yZWlzc3VlLXVwZ3JhZGUuc3RvcmUnO1xuaW1wb3J0IHsgU2JkUmVpc3N1ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtbm90aWNlL3JlaXNzdWUtbm90aWNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtcmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtCdXR0b25Nb2R1bGUsIFNiZFJlaXNzdWVOb3RpY2VDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHByaWNlQ2hhbmdlZCgpKSB7XG4gICAgICA8YXBwLXNiZC1yZWlzc3VlLW5vdGljZSB0b25lPVwid2FyblwiIGljb249XCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPlxuICAgICAgICBUaGUgcHJpY2UgY2hhbmdlZCBzaW5jZSB0aGUgb3B0aW9ucyB3ZXJlIGxvYWRlZC4gQ2hlY2sgdGhlIHRvdGFsIGJlbG93LlxuICAgICAgPC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgIH1cbiAgICBAaWYgKGVycm9yKCkpIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJlcnJvclwiIGljb249XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGVcIj57eyBlcnJvcigpIH19PC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJzYmQtcmNvbmZfX3N1bW1hcnlcIj5cbiAgICAgIEBmb3IgKHJvdyBvZiByb3dzKCk7IHRyYWNrIHJvdy50aXRsZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJjb25mX19yb3dcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1yY29uZl9fcm93LW1haW5cIj5cbiAgICAgICAgICAgIDxiPnt7IHJvdy50aXRsZSB9fTwvYj5cbiAgICAgICAgICAgIDxzbWFsbD57eyByb3cuZnJvbSA/IHJvdy5mcm9tICsgJyDihpIgJyA6ICcnIH19e3sgcm93LnRvIH19PC9zbWFsbD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHN0cm9uZz57eyByb3cuZXh0cmFMYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmNvbmZfX3RvdGFsXCI+XG4gICAgICAgIDxzcGFuPlRvdGFsIHRvIHBheTwvc3Bhbj5cbiAgICAgICAgPHN0cm9uZz57eyB0b3RhbExhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChsaW5rKCk7IGFzIGxpbmspIHtcbiAgICAgIEBpZiAoZXhwaXJlZCgpKSB7XG4gICAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJlcnJvclwiIGljb249XCJwaSBwaS1jbG9ja1wiPlxuICAgICAgICAgIFRoZSBwYXltZW50IGxpbmsgZXhwaXJlZC4gU3RhcnQgdGhlIHVwZ3JhZGUgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgIDxidXR0b24gYWN0aW9uIHBCdXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1idXR0b24tc20gcC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc2Vjb25kYXJ5XCIgbGFiZWw9XCJTdGFydCBhZ2FpblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVzdGFydC5lbWl0KClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmNvbmZfX2xpbmtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJjb25mX19saW5rLWhlYWRcIj48Yj5QYXltZW50IGxpbms8L2I+PHNtYWxsPlNlbmQgaXQgdG8gdGhlIGN1c3RvbWVyPC9zbWFsbD48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJjb25mX19saW5rLXJvd1wiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2JkLXJjb25mX19saW5rLWlucHV0XCIgcmVhZG9ubHkgW3ZhbHVlXT1cImxpbmsudXJsXCIgKGZvY3VzKT1cIiRhbnkoJGV2ZW50LnRhcmdldCkuc2VsZWN0KClcIiAvPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtYnV0dG9uLXNtIHAtYnV0dG9uLW91dGxpbmVkIHAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFtpY29uXT1cImNvcGllZCgpID8gJ3BpIHBpLWNoZWNrJyA6ICdwaSBwaS1jb3B5J1wiIFtsYWJlbF09XCJjb3BpZWQoKSA/ICdDb3BpZWQnIDogJ0NvcHknXCIgKGNsaWNrKT1cImNvcHkobGluay51cmwpXCI+PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChjb3VudGRvd24oKTsgYXMgbGVmdCkge1xuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwic2JkLXJjb25mX19leHBpcnlcIiBbY2xhc3Muc2JkLXJjb25mX19leHBpcnktLXNvb25dPVwic29vbigpXCI+TGluayBleHBpcmVzIGluIHt7IGxlZnQgfX08L3NtYWxsPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGxpbmsuZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJzYmQtcmNvbmZfX2V4cGlyeVwiPkV4cGlyZXMge3sgbGluay5leHBpcmVzQXQuc2xpY2UoMCwgMTYpLnJlcGxhY2UoJ1QnLCAnICcpIH19PC9zbWFsbD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cblxuICAgIDwhLS0gVGhlIGRpYWxvZyBkb2VzIG5vdCBmb2xsb3cgdGhlIHJlc3VsdDogYWZ0ZXIgYm9vay1ub3csIG9yIG9uY2UgdGhlIGxpbmsgaXMgc2VudCwgdGhlIGFnZW50IGZvbGxvd3MgdGhlIGJvb2tpbmcuIC0tPlxuICAgIEBpZiAoYm9va2VkKCkpIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJzdWNjZXNzXCIgaWNvbj1cInBpIHBpLWNoZWNrLWNpcmNsZVwiPlxuICAgICAgICBUaGUgdXBncmFkZSByZXF1ZXN0IHdhcyBzZW50LiBDaGVjayB0aGUgYm9va2luZyBmb3IgdGhlIHJlc3VsdC5cbiAgICAgIDwvYXBwLXNiZC1yZWlzc3VlLW5vdGljZT5cbiAgICB9IEBlbHNlIGlmIChsaW5rKCkpIHtcbiAgICAgIEBpZiAoIWV4cGlyZWQoKSkge1xuICAgICAgICA8YXBwLXNiZC1yZWlzc3VlLW5vdGljZSB0b25lPVwic3VjY2Vzc1wiIGljb249XCJwaSBwaS1jaGVjay1jaXJjbGVcIj5cbiAgICAgICAgICBDb3B5IHRoZSBsaW5rIGFuZCBzZW5kIGl0IHRvIHRoZSBjdXN0b21lci4gVGhlIHVwZ3JhZGUgaXMgcGxhY2VkIG9uY2UgdGhleSBwYXk6IGNoZWNrIHRoZSBib29raW5nIHRoZW4uXG4gICAgICAgIDwvYXBwLXNiZC1yZWlzc3VlLW5vdGljZT5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIGljb249XCJwaSBwaS1pbmZvLWNpcmNsZVwiPlxuICAgICAgICB7eyB0b3RhbCgpID4gMFxuICAgICAgICAgID8gJ0EgcGF5bWVudCBsaW5rIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB0aGUgY3VzdG9tZXIgdG8gcGF5IHRoZSBkaWZmZXJlbmNlLidcbiAgICAgICAgICA6ICdOb3RoaW5nIHRvIHBheTogY29uZmlybWluZyBwbGFjZXMgdGhlIHVwZ3JhZGUgc3RyYWlnaHQgYXdheS4nIH19XG4gICAgICA8L2FwcC1zYmQtcmVpc3N1ZS1ub3RpY2U+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybDogJy4vcmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcC5jb21wb25lbnQuc2NzcycsXG4gIGhvc3Q6IHsgY2xhc3M6ICdzYmQtcmNvbmYnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNiZFJlaXNzdWVVcGdyYWRlQ29uZmlybVN0ZXBDb21wb25lbnQge1xuICByb3dzID0gaW5wdXQucmVxdWlyZWQ8VXBncmFkZVN1bW1hcnlSb3dbXT4oKTtcbiAgdG90YWwgPSBpbnB1dCgwKTtcbiAgdG90YWxMYWJlbCA9IGlucHV0KCcnKTtcbiAgcHJpY2VDaGFuZ2VkID0gaW5wdXQoZmFsc2UpO1xuICAvKiogYGJvb2stbm93YCB3YXMgc2VudC4gKi9cbiAgYm9va2VkID0gaW5wdXQoZmFsc2UpO1xuICBsaW5rID0gaW5wdXQ8UmVpc3N1ZVBheW1lbnRMaW5rIHwgbnVsbD4obnVsbCk7XG4gIGVycm9yID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBUaGUgbGluayBleHBpcmVkIGFuZCB0aGUgYWdlbnQgY2hvc2UgdG8gcmVkbyB0aGUgdXBncmFkZSBmcm9tIHRoZSBiZWdpbm5pbmcuICovXG4gIHJlc3RhcnQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgY29waWVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogVGlja3MgZXZlcnkgc2Vjb25kIHNvIHRoZSBjb3VudGRvd24gKGFuZCB0aGUgZXhwaXJlZCBzdGF0ZSkgdXBkYXRlIG9uIHRoZWlyIG93bi4gKi9cbiAgcHJpdmF0ZSBub3cgPSBzaWduYWwoRGF0ZS5ub3coKSk7XG4gIHByaXZhdGUgcmVtYWluaW5nTXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZXhwaXJ5ID0gcGFyc2VMaW5rRXhwaXJ5KHRoaXMubGluaygpPy5leHBpcmVzQXQpO1xuICAgIHJldHVybiBleHBpcnkgPT0gbnVsbCA/IG51bGwgOiBleHBpcnkgLSB0aGlzLm5vdygpO1xuICB9KTtcbiAgcHJvdGVjdGVkIGV4cGlyZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGVmdCA9IHRoaXMucmVtYWluaW5nTXMoKTtcbiAgICByZXR1cm4gbGVmdCAhPSBudWxsICYmIGxlZnQgPD0gMDtcbiAgfSk7XG4gIC8qKiBgbW06c3NgIHVudGlsIHRoZSBsaW5rIGV4cGlyZXM7IGVtcHR5IHdoZW4gdGhlIGJhY2tlbmQgc2VudCBubyAodmFsaWQpIGV4cGlyeS4gKi9cbiAgcHJvdGVjdGVkIGNvdW50ZG93biA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsZWZ0ID0gdGhpcy5yZW1haW5pbmdNcygpO1xuICAgIHJldHVybiBsZWZ0ID09IG51bGwgfHwgbGVmdCA8PSAwID8gJycgOiBmb3JtYXRDb3VudGRvd24obGVmdCk7XG4gIH0pO1xuICAvKiogTGFzdCB0d28gbWludXRlczogaGlnaGxpZ2h0IHRoZSBjb3VudGRvd24uICovXG4gIHByb3RlY3RlZCBzb29uID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMucmVtYWluaW5nTXMoKSA/PyBJbmZpbml0eSkgPD0gMiAqIDYwICogMTAwMCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLm5vdy5zZXQoRGF0ZS5ub3coKSksIDEwMDApO1xuICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gY2xlYXJJbnRlcnZhbCh0aW1lcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvcHkodXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMuY29waWVkLnNldCh0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb3BpZWQuc2V0KGZhbHNlKSwgMTUwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDbGlwYm9hcmQgYmxvY2tlZCAoZS5nLiBpbnNlY3VyZSBjb250ZXh0KTogdGhlIGlucHV0IGlzIHNlbGVjdGFibGUsIHNvIHRoZSBhZ2VudCBjYW4gc3RpbGwgY29weSBieSBoYW5kLlxuICAgIH1cbiAgfVxufVxuIl19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvcmVpc3N1ZS1kaWFsb2cvc3RlcHMvcmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcC9yZWlzc3VlLXVwZ3JhZGUtY29uZmlybS1zdGVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUErRXZGLE1BQU0sT0FBTyxxQ0FBcUM7SUFnQ2hEO1FBL0JBLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF1QixDQUFDO1FBQzdDLFVBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixpQkFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QiwyQkFBMkI7UUFDM0IsV0FBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsS0FBSyxDQUE0QixJQUFJLENBQUMsQ0FBQztRQUM5QyxVQUFLLEdBQUcsS0FBSyxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUNuQyxtRkFBbUY7UUFDbkYsWUFBTyxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBRWYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyx1RkFBdUY7UUFDL0UsUUFBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6QixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RCxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNPLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNILHFGQUFxRjtRQUMzRSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsaURBQWlEO1FBQ3ZDLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUdqRixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRVMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFXO1FBQzlCLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyR0FBMkc7UUFDN0csQ0FBQztJQUNILENBQUM7K0dBN0NVLHFDQUFxQzttR0FBckMscUNBQXFDLDRoQ0F4RXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9FVCw2cUVBdEVTLFlBQVksdUtBQUUseUJBQXlCOzs0RkEwRXRDLHFDQUFxQztrQkE3RWpELFNBQVM7K0JBQ0Usc0NBQXNDLGNBQ3BDLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxtQkFDakMsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRVQsUUFFSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFJlaXNzdWVQYXltZW50TGluayB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9yZWlzc3VlLnR5cGVzJztcbmltcG9ydCB7IGZvcm1hdENvdW50ZG93biwgcGFyc2VMaW5rRXhwaXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvcmVpc3N1ZS1mb3JtYXQnO1xuaW1wb3J0IHsgVXBncmFkZVN1bW1hcnlSb3cgfSBmcm9tICcuLi8uLi9yZWlzc3VlLXVwZ3JhZGUuc3RvcmUnO1xuaW1wb3J0IHsgU2JkUmVpc3N1ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtbm90aWNlL3JlaXNzdWUtbm90aWNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtcmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtCdXR0b25Nb2R1bGUsIFNiZFJlaXNzdWVOb3RpY2VDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHByaWNlQ2hhbmdlZCgpKSB7XG4gICAgICA8YXBwLXNiZC1yZWlzc3VlLW5vdGljZSB0b25lPVwid2FyblwiIGljb249XCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPlxuICAgICAgICBUaGUgcHJpY2UgY2hhbmdlZCBzaW5jZSB0aGUgb3B0aW9ucyB3ZXJlIGxvYWRlZC4gQ2hlY2sgdGhlIHRvdGFsIGJlbG93LlxuICAgICAgPC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgIH1cbiAgICBAaWYgKGVycm9yKCkpIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJlcnJvclwiIGljb249XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGVcIj57eyBlcnJvcigpIH19PC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJzYmQtcmNvbmZfX3N1bW1hcnlcIj5cbiAgICAgIEBmb3IgKHJvdyBvZiByb3dzKCk7IHRyYWNrIHJvdy50aXRsZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJjb25mX19yb3dcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1yY29uZl9fcm93LW1haW5cIj5cbiAgICAgICAgICAgIDxiPnt7IHJvdy50aXRsZSB9fTwvYj5cbiAgICAgICAgICAgIDxzbWFsbD57eyByb3cuZnJvbSA/IHJvdy5mcm9tICsgJyDihpIgJyA6ICcnIH19e3sgcm93LnRvIH19PC9zbWFsbD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHN0cm9uZz57eyByb3cuZXh0cmFMYWJlbCB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmNvbmZfX3RvdGFsXCI+XG4gICAgICAgIDxzcGFuPlRvdGFsIHRvIHBheTwvc3Bhbj5cbiAgICAgICAgPHN0cm9uZz57eyB0b3RhbExhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChsaW5rKCk7IGFzIGxpbmspIHtcbiAgICAgIEBpZiAoZXhwaXJlZCgpKSB7XG4gICAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJlcnJvclwiIGljb249XCJwaSBwaS1jbG9ja1wiPlxuICAgICAgICAgIFRoZSBwYXltZW50IGxpbmsgZXhwaXJlZC4gU3RhcnQgdGhlIHVwZ3JhZGUgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgIDxidXR0b24gYWN0aW9uIHBCdXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicC1idXR0b24tc20gcC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc2Vjb25kYXJ5XCIgbGFiZWw9XCJTdGFydCBhZ2FpblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVzdGFydC5lbWl0KClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcmNvbmZfX2xpbmtcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJjb25mX19saW5rLWhlYWRcIj48Yj5QYXltZW50IGxpbms8L2I+PHNtYWxsPlNlbmQgaXQgdG8gdGhlIGN1c3RvbWVyPC9zbWFsbD48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXJjb25mX19saW5rLXJvd1wiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2JkLXJjb25mX19saW5rLWlucHV0XCIgcmVhZG9ubHkgW3ZhbHVlXT1cImxpbmsudXJsXCIgKGZvY3VzKT1cIiRhbnkoJGV2ZW50LnRhcmdldCkuc2VsZWN0KClcIiAvPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtYnV0dG9uLXNtIHAtYnV0dG9uLW91dGxpbmVkIHAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIFtpY29uXT1cImNvcGllZCgpID8gJ3BpIHBpLWNoZWNrJyA6ICdwaSBwaS1jb3B5J1wiIFtsYWJlbF09XCJjb3BpZWQoKSA/ICdDb3BpZWQnIDogJ0NvcHknXCIgKGNsaWNrKT1cImNvcHkobGluay51cmwpXCI+PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChjb3VudGRvd24oKTsgYXMgbGVmdCkge1xuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwic2JkLXJjb25mX19leHBpcnlcIiBbY2xhc3Muc2JkLXJjb25mX19leHBpcnktLXNvb25dPVwic29vbigpXCI+TGluayBleHBpcmVzIGluIHt7IGxlZnQgfX08L3NtYWxsPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGxpbmsuZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJzYmQtcmNvbmZfX2V4cGlyeVwiPkV4cGlyZXMge3sgbGluay5leHBpcmVzQXQuc2xpY2UoMCwgMTYpLnJlcGxhY2UoJ1QnLCAnICcpIH19PC9zbWFsbD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cblxuICAgIDwhLS0gVGhlIGRpYWxvZyBkb2VzIG5vdCBmb2xsb3cgdGhlIHJlc3VsdDogYWZ0ZXIgYm9vay1ub3csIG9yIG9uY2UgdGhlIGxpbmsgaXMgc2VudCwgdGhlIGFnZW50IGZvbGxvd3MgdGhlIGJvb2tpbmcuIC0tPlxuICAgIEBpZiAoYm9va2VkKCkpIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJzdWNjZXNzXCIgaWNvbj1cInBpIHBpLWNoZWNrLWNpcmNsZVwiPlxuICAgICAgICBUaGUgdXBncmFkZSByZXF1ZXN0IHdhcyBzZW50LiBDaGVjayB0aGUgYm9va2luZyBmb3IgdGhlIHJlc3VsdC5cbiAgICAgIDwvYXBwLXNiZC1yZWlzc3VlLW5vdGljZT5cbiAgICB9IEBlbHNlIGlmIChsaW5rKCkpIHtcbiAgICAgIEBpZiAoIWV4cGlyZWQoKSkge1xuICAgICAgICA8YXBwLXNiZC1yZWlzc3VlLW5vdGljZSB0b25lPVwic3VjY2Vzc1wiIGljb249XCJwaSBwaS1jaGVjay1jaXJjbGVcIj5cbiAgICAgICAgICBDb3B5IHRoZSBsaW5rIGFuZCBzZW5kIGl0IHRvIHRoZSBjdXN0b21lci4gVGhlIHVwZ3JhZGUgaXMgcGxhY2VkIG9uY2UgdGhleSBwYXk6IGNoZWNrIHRoZSBib29raW5nIHRoZW4uXG4gICAgICAgIDwvYXBwLXNiZC1yZWlzc3VlLW5vdGljZT5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIGljb249XCJwaSBwaS1pbmZvLWNpcmNsZVwiPlxuICAgICAgICB7eyB0b3RhbCgpID4gMFxuICAgICAgICAgID8gJ0EgcGF5bWVudCBsaW5rIHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB0aGUgY3VzdG9tZXIgdG8gcGF5IHRoZSBkaWZmZXJlbmNlLidcbiAgICAgICAgICA6ICdOb3RoaW5nIHRvIHBheTogY29uZmlybWluZyBwbGFjZXMgdGhlIHVwZ3JhZGUgc3RyYWlnaHQgYXdheS4nIH19XG4gICAgICA8L2FwcC1zYmQtcmVpc3N1ZS1ub3RpY2U+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybDogJy4vcmVpc3N1ZS11cGdyYWRlLWNvbmZpcm0tc3RlcC5jb21wb25lbnQuc2NzcycsXG4gIGhvc3Q6IHsgY2xhc3M6ICdzYmQtcmNvbmYnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNiZFJlaXNzdWVVcGdyYWRlQ29uZmlybVN0ZXBDb21wb25lbnQge1xuICByb3dzID0gaW5wdXQucmVxdWlyZWQ8VXBncmFkZVN1bW1hcnlSb3dbXT4oKTtcbiAgdG90YWwgPSBpbnB1dCgwKTtcbiAgdG90YWxMYWJlbCA9IGlucHV0KCcnKTtcbiAgcHJpY2VDaGFuZ2VkID0gaW5wdXQoZmFsc2UpO1xuICAvKiogYGJvb2stbm93YCB3YXMgc2VudC4gKi9cbiAgYm9va2VkID0gaW5wdXQoZmFsc2UpO1xuICBsaW5rID0gaW5wdXQ8UmVpc3N1ZVBheW1lbnRMaW5rIHwgbnVsbD4obnVsbCk7XG4gIGVycm9yID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBUaGUgbGluayBleHBpcmVkIGFuZCB0aGUgYWdlbnQgY2hvc2UgdG8gcmVkbyB0aGUgdXBncmFkZSBmcm9tIHRoZSBiZWdpbm5pbmcuICovXG4gIHJlc3RhcnQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgY29waWVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogVGlja3MgZXZlcnkgc2Vjb25kIHNvIHRoZSBjb3VudGRvd24gKGFuZCB0aGUgZXhwaXJlZCBzdGF0ZSkgdXBkYXRlIG9uIHRoZWlyIG93bi4gKi9cbiAgcHJpdmF0ZSBub3cgPSBzaWduYWwoRGF0ZS5ub3coKSk7XG4gIHByaXZhdGUgcmVtYWluaW5nTXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZXhwaXJ5ID0gcGFyc2VMaW5rRXhwaXJ5KHRoaXMubGluaygpPy5leHBpcmVzQXQpO1xuICAgIHJldHVybiBleHBpcnkgPT0gbnVsbCA/IG51bGwgOiBleHBpcnkgLSB0aGlzLm5vdygpO1xuICB9KTtcbiAgcHJvdGVjdGVkIGV4cGlyZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGVmdCA9IHRoaXMucmVtYWluaW5nTXMoKTtcbiAgICByZXR1cm4gbGVmdCAhPSBudWxsICYmIGxlZnQgPD0gMDtcbiAgfSk7XG4gIC8qKiBgbW06c3NgIHVudGlsIHRoZSBsaW5rIGV4cGlyZXM7IGVtcHR5IHdoZW4gdGhlIGJhY2tlbmQgc2VudCBubyAodmFsaWQpIGV4cGlyeS4gKi9cbiAgcHJvdGVjdGVkIGNvdW50ZG93biA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsZWZ0ID0gdGhpcy5yZW1haW5pbmdNcygpO1xuICAgIHJldHVybiBsZWZ0ID09IG51bGwgfHwgbGVmdCA8PSAwID8gJycgOiBmb3JtYXRDb3VudGRvd24obGVmdCk7XG4gIH0pO1xuICAvKiogTGFzdCB0d28gbWludXRlczogaGlnaGxpZ2h0IHRoZSBjb3VudGRvd24uICovXG4gIHByb3RlY3RlZCBzb29uID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMucmVtYWluaW5nTXMoKSA/PyBJbmZpbml0eSkgPD0gMiAqIDYwICogMTAwMCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLm5vdy5zZXQoRGF0ZS5ub3coKSksIDEwMDApO1xuICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gY2xlYXJJbnRlcnZhbCh0aW1lcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvcHkodXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMuY29waWVkLnNldCh0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb3BpZWQuc2V0KGZhbHNlKSwgMTUwMCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDbGlwYm9hcmQgYmxvY2tlZCAoZS5nLiBpbnNlY3VyZSBjb250ZXh0KTogdGhlIGlucHV0IGlzIHNlbGVjdGFibGUsIHNvIHRoZSBhZ2VudCBjYW4gc3RpbGwgY29weSBieSBoYW5kLlxuICAgIH1cbiAgfVxufVxuIl19
@@ -33,7 +33,6 @@ export class SbdReissueUpgradeStepComponent {
33
33
  <span class="sbd-rup__radio" [class.sbd-rup__radio--on]="option.selected"></span>
34
34
  <span class="sbd-rup__text">
35
35
  <strong>{{ option.name }}</strong>
36
- <small>{{ option.code }}</small>
37
36
  </span>
38
37
  @if (option.unavailable) {
39
38
  <span class="sbd-rup__unavailable">Not available</span>
@@ -44,7 +43,7 @@ export class SbdReissueUpgradeStepComponent {
44
43
  }
45
44
  </section>
46
45
  }
47
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rup__section{display:flex;flex-direction:column;gap:10px}.sbd-rup__head{display:flex;flex-direction:column;gap:2px}.sbd-rup__route{font-size:15px;font-weight:700;color:#1e2e4a}.sbd-rup__current,.sbd-rup__empty{font-size:13px;color:#64748b}.sbd-rup__option{border:1.5px solid #e2e8f0;border-radius:16px;background:#fff;transition:border-color .15s,box-shadow .15s;display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left;font-family:inherit;cursor:pointer}.sbd-rup__option--active{border-color:var(--sbd-accent, #6d4aff);box-shadow:0 0 0 1px var(--sbd-accent, #6d4aff)}.sbd-rup__option:disabled{opacity:.5;cursor:not-allowed}.sbd-rup__option:hover:not(:disabled):not(.sbd-rup__option--active){border-color:#cbd5e1}.sbd-rup__radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid #cbd5e1;background:#fff}.sbd-rup__radio--on{border-color:var(--sbd-accent, #6d4aff);box-shadow:inset 0 0 0 4px #fff;background:var(--sbd-accent, #6d4aff)}.sbd-rup__text{flex:1;display:flex;flex-direction:column;gap:2px}.sbd-rup__text strong{font-size:14px;font-weight:700;color:#1e2e4a}.sbd-rup__text small{font-size:12.5px;color:#64748b}.sbd-rup__price{font-size:14px;font-weight:800;color:#1e2e4a;white-space:nowrap;font-variant-numeric:tabular-nums}.sbd-rup__unavailable{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;border-radius:20px;padding:3px 12px;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: SbdReissueNoticeComponent, selector: "app-sbd-reissue-notice", inputs: ["icon", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rup__section{display:flex;flex-direction:column;gap:10px}.sbd-rup__head{display:flex;flex-direction:column;gap:2px}.sbd-rup__route{font-size:15px;font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rup__current,.sbd-rup__empty{font-size:13px;color:var(--sbd-r-muted, #64748b)}.sbd-rup__option{border:1.5px solid var(--sbd-r-line, #e2e8f0);border-radius:16px;background:var(--sbd-r-surface, #fff);transition:border-color .15s,box-shadow .15s;display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left;font-family:inherit;cursor:pointer}.sbd-rup__option--active{border-color:var(--sbd-accent, #6d4aff);box-shadow:0 0 0 1px var(--sbd-accent, #6d4aff)}.sbd-rup__option:disabled{opacity:.5;cursor:not-allowed}.sbd-rup__option:hover:not(:disabled):not(.sbd-rup__option--active){border-color:var(--sbd-r-line-strong, #cbd5e1)}.sbd-rup__radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid var(--sbd-r-line-strong, #cbd5e1);background:var(--sbd-r-surface, #fff)}.sbd-rup__radio--on{border-color:var(--sbd-accent, #6d4aff);box-shadow:inset 0 0 0 4px var(--sbd-r-surface, #fff);background:var(--sbd-accent, #6d4aff)}.sbd-rup__text{flex:1;display:flex;flex-direction:column;gap:2px}.sbd-rup__text strong{font-size:14px;font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rup__text small{font-size:12.5px;color:var(--sbd-r-muted, #64748b)}.sbd-rup__price{font-size:14px;font-weight:800;color:var(--sbd-r-ink, #1e2e4a);white-space:nowrap;font-variant-numeric:tabular-nums}.sbd-rup__unavailable{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--sbd-r-muted, #64748b);background:var(--sbd-r-soft, #f8fafc);box-shadow:inset 0 0 0 1px var(--sbd-r-line, #e2e8f0);border-radius:20px;padding:3px 12px;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: SbdReissueNoticeComponent, selector: "app-sbd-reissue-notice", inputs: ["icon", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
47
  }
49
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdReissueUpgradeStepComponent, decorators: [{
50
49
  type: Component,
@@ -72,7 +71,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
72
71
  <span class="sbd-rup__radio" [class.sbd-rup__radio--on]="option.selected"></span>
73
72
  <span class="sbd-rup__text">
74
73
  <strong>{{ option.name }}</strong>
75
- <small>{{ option.code }}</small>
76
74
  </span>
77
75
  @if (option.unavailable) {
78
76
  <span class="sbd-rup__unavailable">Not available</span>
@@ -83,6 +81,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
83
81
  }
84
82
  </section>
85
83
  }
86
- `, host: { class: 'sbd-rup' }, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rup__section{display:flex;flex-direction:column;gap:10px}.sbd-rup__head{display:flex;flex-direction:column;gap:2px}.sbd-rup__route{font-size:15px;font-weight:700;color:#1e2e4a}.sbd-rup__current,.sbd-rup__empty{font-size:13px;color:#64748b}.sbd-rup__option{border:1.5px solid #e2e8f0;border-radius:16px;background:#fff;transition:border-color .15s,box-shadow .15s;display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left;font-family:inherit;cursor:pointer}.sbd-rup__option--active{border-color:var(--sbd-accent, #6d4aff);box-shadow:0 0 0 1px var(--sbd-accent, #6d4aff)}.sbd-rup__option:disabled{opacity:.5;cursor:not-allowed}.sbd-rup__option:hover:not(:disabled):not(.sbd-rup__option--active){border-color:#cbd5e1}.sbd-rup__radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid #cbd5e1;background:#fff}.sbd-rup__radio--on{border-color:var(--sbd-accent, #6d4aff);box-shadow:inset 0 0 0 4px #fff;background:var(--sbd-accent, #6d4aff)}.sbd-rup__text{flex:1;display:flex;flex-direction:column;gap:2px}.sbd-rup__text strong{font-size:14px;font-weight:700;color:#1e2e4a}.sbd-rup__text small{font-size:12.5px;color:#64748b}.sbd-rup__price{font-size:14px;font-weight:800;color:#1e2e4a;white-space:nowrap;font-variant-numeric:tabular-nums}.sbd-rup__unavailable{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b;background:#f8fafc;box-shadow:inset 0 0 0 1px #e2e8f0;border-radius:20px;padding:3px 12px;white-space:nowrap}\n"] }]
84
+ `, host: { class: 'sbd-rup' }, styles: [":host{display:flex;flex-direction:column;gap:14px}.sbd-rup__section{display:flex;flex-direction:column;gap:10px}.sbd-rup__head{display:flex;flex-direction:column;gap:2px}.sbd-rup__route{font-size:15px;font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rup__current,.sbd-rup__empty{font-size:13px;color:var(--sbd-r-muted, #64748b)}.sbd-rup__option{border:1.5px solid var(--sbd-r-line, #e2e8f0);border-radius:16px;background:var(--sbd-r-surface, #fff);transition:border-color .15s,box-shadow .15s;display:flex;align-items:center;gap:12px;width:100%;padding:16px;text-align:left;font-family:inherit;cursor:pointer}.sbd-rup__option--active{border-color:var(--sbd-accent, #6d4aff);box-shadow:0 0 0 1px var(--sbd-accent, #6d4aff)}.sbd-rup__option:disabled{opacity:.5;cursor:not-allowed}.sbd-rup__option:hover:not(:disabled):not(.sbd-rup__option--active){border-color:var(--sbd-r-line-strong, #cbd5e1)}.sbd-rup__radio{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid var(--sbd-r-line-strong, #cbd5e1);background:var(--sbd-r-surface, #fff)}.sbd-rup__radio--on{border-color:var(--sbd-accent, #6d4aff);box-shadow:inset 0 0 0 4px var(--sbd-r-surface, #fff);background:var(--sbd-accent, #6d4aff)}.sbd-rup__text{flex:1;display:flex;flex-direction:column;gap:2px}.sbd-rup__text strong{font-size:14px;font-weight:700;color:var(--sbd-r-ink, #1e2e4a)}.sbd-rup__text small{font-size:12.5px;color:var(--sbd-r-muted, #64748b)}.sbd-rup__price{font-size:14px;font-weight:800;color:var(--sbd-r-ink, #1e2e4a);white-space:nowrap;font-variant-numeric:tabular-nums}.sbd-rup__unavailable{font-size:11.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--sbd-r-muted, #64748b);background:var(--sbd-r-soft, #f8fafc);box-shadow:inset 0 0 0 1px var(--sbd-r-line, #e2e8f0);border-radius:20px;padding:3px 12px;white-space:nowrap}\n"] }]
87
85
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVpc3N1ZS11cGdyYWRlLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL3JlaXNzdWUtZGlhbG9nL3N0ZXBzL3JlaXNzdWUtdXBncmFkZS1zdGVwL3JlaXNzdWUtdXBncmFkZS1zdGVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBRXZGLGtHQUFrRztBQTZDbEcsTUFBTSxPQUFPLDhCQUE4QjtJQTVDM0M7UUE2Q0UsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDakQsVUFBSyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sRUFBc0MsQ0FBQztLQUN2RDsrR0FKWSw4QkFBOEI7bUdBQTlCLDhCQUE4QixnYUF2Qy9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVCxnbURBckNTLHlCQUF5Qjs7NEZBeUN4Qiw4QkFBOEI7a0JBNUMxQyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyx5QkFBeUIsQ0FBQyxtQkFDbkIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1QsUUFFSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGdyYWRlU2VjdGlvblJvdyB9IGZyb20gJy4uLy4uL3JlaXNzdWUtdXBncmFkZS5zdG9yZSc7XG5pbXBvcnQgeyBTYmRSZWlzc3VlTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVpc3N1ZS1ub3RpY2UvcmVpc3N1ZS1ub3RpY2UuY29tcG9uZW50JztcblxuLyoqIE5ldy1jbGFzcyBvcHRpb25zIGFzIHJhZGlvIGNhcmRzLCBpbiB0aGUgbG9vayBvZiB0aGUgY2FuY2VsIGRpYWxvZydzIHJlZnVuZC1tZXRob2Qgb3B0aW9ucy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtcmVpc3N1ZS11cGdyYWRlLXN0ZXAnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbU2JkUmVpc3N1ZU5vdGljZUNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIEBpZiAoZXJyb3IoKSkge1xuICAgICAgPGFwcC1zYmQtcmVpc3N1ZS1ub3RpY2UgdG9uZT1cImVycm9yXCIgaWNvbj1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiPnt7IGVycm9yKCkgfX08L2FwcC1zYmQtcmVpc3N1ZS1ub3RpY2U+XG4gICAgfVxuXG4gICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLmlkKSB7XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInNiZC1ydXBfX3NlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1ydXBfX2hlYWRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX3JvdXRlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHNlY3Rpb24uY3VycmVudCkgeyA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX2N1cnJlbnRcIj57eyBzZWN0aW9uLmN1cnJlbnQgfX08L3NwYW4+IH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmICghc2VjdGlvbi5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fZW1wdHlcIj5ObyB1cGdyYWRlIGF2YWlsYWJsZSBmb3IgdGhpcyBmbGlnaHQuPC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIHNlY3Rpb24ub3B0aW9uczsgdHJhY2sgb3B0aW9uLmtleSkge1xuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2JkLXJ1cF9fb3B0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5zYmQtcnVwX19vcHRpb24tLWFjdGl2ZV09XCJvcHRpb24uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi51bmF2YWlsYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicGlja2VkLmVtaXQoeyBzZWN0aW9uSWQ6IHNlY3Rpb24uaWQsIGtleTogb3B0aW9uLmtleSB9KVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcnVwX19yYWRpb1wiIFtjbGFzcy5zYmQtcnVwX19yYWRpby0tb25dPVwib3B0aW9uLnNlbGVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcnVwX190ZXh0XCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgb3B0aW9uLm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IG9wdGlvbi5jb2RlIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAob3B0aW9uLnVuYXZhaWxhYmxlKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fdW5hdmFpbGFibGVcIj5Ob3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fcHJpY2VcIj57eyBvcHRpb24uZXh0cmFMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL3JlaXNzdWUtdXBncmFkZS1zdGVwLmNvbXBvbmVudC5zY3NzJyxcbiAgaG9zdDogeyBjbGFzczogJ3NiZC1ydXAnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNiZFJlaXNzdWVVcGdyYWRlU3RlcENvbXBvbmVudCB7XG4gIHNlY3Rpb25zID0gaW5wdXQucmVxdWlyZWQ8VXBncmFkZVNlY3Rpb25Sb3dbXT4oKTtcbiAgZXJyb3IgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcGlja2VkID0gb3V0cHV0PHsgc2VjdGlvbklkOiBzdHJpbmc7IGtleTogc3RyaW5nIH0+KCk7XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVpc3N1ZS11cGdyYWRlLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL3JlaXNzdWUtZGlhbG9nL3N0ZXBzL3JlaXNzdWUtdXBncmFkZS1zdGVwL3JlaXNzdWUtdXBncmFkZS1zdGVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBRXZGLGtHQUFrRztBQTRDbEcsTUFBTSxPQUFPLDhCQUE4QjtJQTNDM0M7UUE0Q0UsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDakQsVUFBSyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sRUFBc0MsQ0FBQztLQUN2RDsrR0FKWSw4QkFBOEI7bUdBQTlCLDhCQUE4QixnYUF0Qy9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NULGk0REFwQ1MseUJBQXlCOzs0RkF3Q3hCLDhCQUE4QjtrQkEzQzFDLFNBQVM7K0JBQ0UsOEJBQThCLGNBQzVCLElBQUksV0FDUCxDQUFDLHlCQUF5QixDQUFDLG1CQUNuQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NULFFBRUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBncmFkZVNlY3Rpb25Sb3cgfSBmcm9tICcuLi8uLi9yZWlzc3VlLXVwZ3JhZGUuc3RvcmUnO1xuaW1wb3J0IHsgU2JkUmVpc3N1ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtbm90aWNlL3JlaXNzdWUtbm90aWNlLmNvbXBvbmVudCc7XG5cbi8qKiBOZXctY2xhc3Mgb3B0aW9ucyBhcyByYWRpbyBjYXJkcywgaW4gdGhlIGxvb2sgb2YgdGhlIGNhbmNlbCBkaWFsb2cncyByZWZ1bmQtbWV0aG9kIG9wdGlvbnMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtc2JkLXJlaXNzdWUtdXBncmFkZS1zdGVwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1NiZFJlaXNzdWVOb3RpY2VDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGVycm9yKCkpIHtcbiAgICAgIDxhcHAtc2JkLXJlaXNzdWUtbm90aWNlIHRvbmU9XCJlcnJvclwiIGljb249XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGVcIj57eyBlcnJvcigpIH19PC9hcHAtc2JkLXJlaXNzdWUtbm90aWNlPlxuICAgIH1cblxuICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnMoKTsgdHJhY2sgc2VjdGlvbi5pZCkge1xuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzYmQtcnVwX19zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcnVwX19oZWFkXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcnVwX19yb3V0ZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgQGlmIChzZWN0aW9uLmN1cnJlbnQpIHsgPHNwYW4gY2xhc3M9XCJzYmQtcnVwX19jdXJyZW50XCI+e3sgc2VjdGlvbi5jdXJyZW50IH19PC9zcGFuPiB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoIXNlY3Rpb24ub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX2VtcHR5XCI+Tm8gdXBncmFkZSBhdmFpbGFibGUgZm9yIHRoaXMgZmxpZ2h0Ljwvc3Bhbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBzZWN0aW9uLm9wdGlvbnM7IHRyYWNrIG9wdGlvbi5rZXkpIHtcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNiZC1ydXBfX29wdGlvblwiXG4gICAgICAgICAgICBbY2xhc3Muc2JkLXJ1cF9fb3B0aW9uLS1hY3RpdmVdPVwib3B0aW9uLnNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24udW5hdmFpbGFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInBpY2tlZC5lbWl0KHsgc2VjdGlvbklkOiBzZWN0aW9uLmlkLCBrZXk6IG9wdGlvbi5rZXkgfSlcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fcmFkaW9cIiBbY2xhc3Muc2JkLXJ1cF9fcmFkaW8tLW9uXT1cIm9wdGlvbi5zZWxlY3RlZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXJ1cF9fdGV4dFwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9wdGlvbi5uYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG9wdGlvbi51bmF2YWlsYWJsZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX3VuYXZhaWxhYmxlXCI+Tm90IGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1ydXBfX3ByaWNlXCI+e3sgb3B0aW9uLmV4dHJhTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9yZWlzc3VlLXVwZ3JhZGUtc3RlcC5jb21wb25lbnQuc2NzcycsXG4gIGhvc3Q6IHsgY2xhc3M6ICdzYmQtcnVwJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBTYmRSZWlzc3VlVXBncmFkZVN0ZXBDb21wb25lbnQge1xuICBzZWN0aW9ucyA9IGlucHV0LnJlcXVpcmVkPFVwZ3JhZGVTZWN0aW9uUm93W10+KCk7XG4gIGVycm9yID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHBpY2tlZCA9IG91dHB1dDx7IHNlY3Rpb25JZDogc3RyaW5nOyBrZXk6IHN0cmluZyB9PigpO1xufVxuIl19
@@ -4,6 +4,11 @@ export const SBD_DEFAULT_CONFIG = {
4
4
  platform: 'BO',
5
5
  webBaseUrl: '',
6
6
  reissueEnabled: false,
7
+ brands: [
8
+ { value: 'almatar', label: 'Almatar' },
9
+ { value: 'nusuk', label: 'Nusuk' },
10
+ ],
11
+ defaultBrand: 'almatar',
7
12
  };
8
13
  export const SBD_CONFIG = new InjectionToken('SBD_CONFIG', {
9
14
  providedIn: 'root',
@@ -15,4 +20,4 @@ export function provideSmartBookingDashboard(config = {}) {
15
20
  { provide: SBD_CONFIG, useValue: { ...SBD_DEFAULT_CONFIG, ...config } },
16
21
  ]);
17
22
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29uZmlnL2Rhc2hib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUEyQy9GLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFjO0lBQzNDLE9BQU8sRUFBRSxNQUFNO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsRUFBRTtJQUNkLGNBQWMsRUFBRSxLQUFLO0NBQ3RCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVksWUFBWSxFQUFFO0lBQ3BFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0I7Q0FDbEMsQ0FBQyxDQUFDO0FBRUgsMkVBQTJFO0FBQzNFLE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxTQUE2QixFQUFFO0lBQzFFLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRTtLQUN4RSxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIEluamVjdGlvblRva2VuLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKiogUXVlcnkvaGFzaCBwYXJhbWV0ZXJzIChuYW1lIC0+IHZhbHVlKSB0aGUgaG9zdCBhZGRzIHRvIHRoZSBsaW5rIHRoYXQgb3BlbnMgdGhlIGNvbnN1bWVyIHdlYiwgZS5nLiBpdHMgYXV0aCB0b2tlbi4gKi9cbmV4cG9ydCB0eXBlIFNiZFJlZGlyZWN0QXV0aFBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogSG9zdC1hcHAgY29uZmlndXJhdGlvbiBmb3IgdGhlIFNtYXJ0IEJvb2tpbmcgRGFzaGJvYXJkLlxuICogRXZlcnkgZmllbGQgaXMgb3B0aW9uYWw7IHRoZSBkZWZhdWx0cyBtYXRjaCB0aGUgQWxtYXRhciBiYWNrb2ZmaWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNiZENvbmZpZyB7XG4gIC8qKiBCYXNlIFVSTCBvZiB0aGUgYmFja2VuZCBBUEkuIERlZmF1bHQ6ICcvYXBpJyAqL1xuICBhcGlCYXNlOiBzdHJpbmc7XG4gIC8qKiBWYWx1ZSBvZiB0aGUgYHBsYXRmb3JtYCBoZWFkZXIgc2VudCB3aXRoIEZDUiByZXF1ZXN0cy4gRGVmYXVsdDogJ0JPJyAqL1xuICBwbGF0Zm9ybTogc3RyaW5nO1xuICAvKipcbiAgICogQmFzZSBVUkwgb2YgdGhlIGNvbnN1bWVyIHdlYiBhcHAgdGhlIFJlaXNzdWUgc2VhcmNoIHJlZGlyZWN0cyB0bywgSU5DTFVESU5HIHRoZSBsYW5ndWFnZS9jb3VudHJ5XG4gICAqIHByZWZpeCB0aGUgd2ViIHJlcXVpcmVzLCBlLmcuICdodHRwczovL3ByZWxpdmUtYWxwaGEuYWxtNmFyLmNvbS9lbi9zYScuIFdpdGhvdXQgdGhlIHByZWZpeCB0aGUgd2ViIGFuc3dlcnMgNDA0LlxuICAgKi9cbiAgd2ViQmFzZVVybDogc3RyaW5nO1xuICAvKipcbiAgICogQmFzZSBvZiB0aGUgY3VzdG9tZXIgcGF5bWVudCBwYWdlLCBXSVRIT1VUIHRoZSBwYXltZW50IGlkLCBlLmcuICdodHRwczovL2FscGhhMy5hbG02YXIuY29tL2VuL3BheW1lbnQnLiBUaGUgY2FydFxuICAgKiByZXR1cm5zIHRoZSBsaW5rIGFzIGEgcGF0aCBvbmx5IChgLzxwYXltZW50SWQ+YCk7IHRoaXMgYmFzZSBpcyBwdXQgaW4gZnJvbnQgb2YgaXQgdG8gZ2V0IHRoZSBVUkwgdGhlIGFnZW50IHNlbmRzLlxuICAgKiBOb3Qgc2V0IChkZWZhdWx0KSA9IGEgcmVsYXRpdmUgbGluayBpcyByZWplY3RlZCBpbnN0ZWFkIG9mIGd1ZXNzaW5nIGEgaG9zdC5cbiAgICovXG4gIHBheW1lbnRMaW5rQmFzZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEF1dGggcGFyYW1ldGVycyBhZGRlZCB0byB0aGUgd2ViIGxpbmsgdGhhdCBDaGFuZ2UgRGF0ZSAvIENoYW5nZSBSb3V0ZSBvcGVuLCBzbyB0aGUgd2ViIGNhbiBjYWxsIGl0cyBBUElzIGZvciB0aGVcbiAgICogYWdlbnQuIFRoZSBob3N0IGRlY2lkZXMgdGhlIG5hbWVzIGFuZCB0aGUgdmFsdWVzLCBmb3IgZXhhbXBsZSBCYWNrb2ZmaWNlIGB7ICdiby10b2tlbic6IHRva2VuIH1gIGFuZCBIZWxpeFxuICAgKiBgeyAneC1oZWxpeC10b2tlbic6IHRva2VuIH1gLiBJdCBydW5zIGluIGFuIGluamVjdGlvbiBjb250ZXh0ICh0aGUgaG9zdCBjYW4gYGluamVjdCgpYCBpdHMgYXV0aCBzZXJ2aWNlIGZpcnN0KSBhbmRcbiAgICogbWF5IHJldHVybiB0aGUgb2JqZWN0LCBhIFByb21pc2Ugb3IgYW4gT2JzZXJ2YWJsZS4gTm90IHNldCA9IG5vdGhpbmcgaXMgYWRkZWQuIElmIGl0IGZhaWxzLCB0aGUgd2ViIHN0aWxsIG9wZW5zXG4gICAqIHdpdGhvdXQgdGhlIHRva2VuLlxuICAgKi9cbiAgcmVkaXJlY3RBdXRoUGFyYW1zPzogKCkgPT4gU2JkUmVkaXJlY3RBdXRoUGFyYW1zIHwgUHJvbWlzZTxTYmRSZWRpcmVjdEF1dGhQYXJhbXM+IHwgT2JzZXJ2YWJsZTxTYmRSZWRpcmVjdEF1dGhQYXJhbXM+O1xuICAvKiogV2hlcmUgYHJlZGlyZWN0QXV0aFBhcmFtc2AgZ28gaW4gdGhlIFVSTDogdGhlIHF1ZXJ5IHN0cmluZyAoZGVmYXVsdCkgb3IgdGhlIGAjZnJhZ21lbnRgIChub3Qgc2VudCB0byBzZXJ2ZXJzKS4gKi9cbiAgcmVkaXJlY3RBdXRoSW4/OiAncXVlcnknIHwgJ2hhc2gnO1xuICAvKipcbiAgICogU2hvdyB0aGUgUmVpc3N1ZSBidXR0b24uIE9mZiBieSBkZWZhdWx0IHNvIHVwZ3JhZGluZyB0aGUgcGFja2FnZSBkb2VzIG5vdCBleHBvc2UgUmVpc3N1ZSB0byBhZ2VudHMgYmVmb3JlIHRoZSBob3N0J3NcbiAgICogYmFja2VuZCBzZXJ2ZXMgdGhlIFJlaXNzdWUgQVBJczsgdGhlIGhvc3QgdHVybnMgaXQgb24gd2hlbiB0aGV5IGFyZSByZWFkeS5cbiAgICovXG4gIHJlaXNzdWVFbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgU0JEX0RFRkFVTFRfQ09ORklHOiBTYmRDb25maWcgPSB7XG4gIGFwaUJhc2U6ICcvYXBpJyxcbiAgcGxhdGZvcm06ICdCTycsXG4gIHdlYkJhc2VVcmw6ICcnLFxuICByZWlzc3VlRW5hYmxlZDogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgU0JEX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTYmRDb25maWc+KCdTQkRfQ09ORklHJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IFNCRF9ERUZBVUxUX0NPTkZJRyxcbn0pO1xuXG4vKiogT3B0aW9uYWw6IGNhbGwgaW4gdGhlIGhvc3QgYXBwJ3MgcHJvdmlkZXJzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU21hcnRCb29raW5nRGFzaGJvYXJkKGNvbmZpZzogUGFydGlhbDxTYmRDb25maWc+ID0ge30pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHsgcHJvdmlkZTogU0JEX0NPTkZJRywgdXNlVmFsdWU6IHsgLi4uU0JEX0RFRkFVTFRfQ09ORklHLCAuLi5jb25maWcgfSB9LFxuICBdKTtcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29uZmlnL2Rhc2hib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF3RC9GLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFjO0lBQzNDLE9BQU8sRUFBRSxNQUFNO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsRUFBRTtJQUNkLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLE1BQU0sRUFBRTtRQUNOLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1FBQ3RDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0tBQ25DO0lBQ0QsWUFBWSxFQUFFLFNBQVM7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBWSxZQUFZLEVBQUU7SUFDcEUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGtCQUFrQjtDQUNsQyxDQUFDLENBQUM7QUFFSCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFNBQTZCLEVBQUU7SUFDMUUsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFO0tBQ3hFLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgSW5qZWN0aW9uVG9rZW4sIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKiBBIGJyYW5kIHRoZSBhZ2VudCBjYW4gd29yayBvbi4gYHZhbHVlYCBpcyB3aGF0IGdvZXMgaW4gdGhlIGB4LWJyYW5kYCBoZWFkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIFNiZEJyYW5kT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuLyoqIFF1ZXJ5L2hhc2ggcGFyYW1ldGVycyAobmFtZSAtPiB2YWx1ZSkgdGhlIGhvc3QgYWRkcyB0byB0aGUgbGluayB0aGF0IG9wZW5zIHRoZSBjb25zdW1lciB3ZWIsIGUuZy4gaXRzIGF1dGggdG9rZW4uICovXG5leHBvcnQgdHlwZSBTYmRSZWRpcmVjdEF1dGhQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4vKipcbiAqIEhvc3QtYXBwIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTbWFydCBCb29raW5nIERhc2hib2FyZC5cbiAqIEV2ZXJ5IGZpZWxkIGlzIG9wdGlvbmFsOyB0aGUgZGVmYXVsdHMgbWF0Y2ggdGhlIEFsbWF0YXIgYmFja29mZmljZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmRDb25maWcge1xuICAvKiogQmFzZSBVUkwgb2YgdGhlIGJhY2tlbmQgQVBJLiBEZWZhdWx0OiAnL2FwaScgKi9cbiAgYXBpQmFzZTogc3RyaW5nO1xuICAvKiogVmFsdWUgb2YgdGhlIGBwbGF0Zm9ybWAgaGVhZGVyIHNlbnQgd2l0aCBGQ1IgcmVxdWVzdHMuIERlZmF1bHQ6ICdCTycgKi9cbiAgcGxhdGZvcm06IHN0cmluZztcbiAgLyoqXG4gICAqIEJhc2UgVVJMIG9mIHRoZSBjb25zdW1lciB3ZWIgYXBwIHRoZSBSZWlzc3VlIHNlYXJjaCByZWRpcmVjdHMgdG8sIElOQ0xVRElORyB0aGUgbGFuZ3VhZ2UvY291bnRyeVxuICAgKiBwcmVmaXggdGhlIHdlYiByZXF1aXJlcywgZS5nLiAnaHR0cHM6Ly9wcmVsaXZlLWFscGhhLmFsbTZhci5jb20vZW4vc2EnLiBXaXRob3V0IHRoZSBwcmVmaXggdGhlIHdlYiBhbnN3ZXJzIDQwNC5cbiAgICovXG4gIHdlYkJhc2VVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIEJhc2Ugb2YgdGhlIGN1c3RvbWVyIHBheW1lbnQgcGFnZSwgV0lUSE9VVCB0aGUgcGF5bWVudCBpZCwgZS5nLiAnaHR0cHM6Ly9hbHBoYTMuYWxtNmFyLmNvbS9lbi9wYXltZW50Jy4gVGhlIGNhcnRcbiAgICogcmV0dXJucyB0aGUgbGluayBhcyBhIHBhdGggb25seSAoYC88cGF5bWVudElkPmApOyB0aGlzIGJhc2UgaXMgcHV0IGluIGZyb250IG9mIGl0IHRvIGdldCB0aGUgVVJMIHRoZSBhZ2VudCBzZW5kcy5cbiAgICogTm90IHNldCAoZGVmYXVsdCkgPSBhIHJlbGF0aXZlIGxpbmsgaXMgcmVqZWN0ZWQgaW5zdGVhZCBvZiBndWVzc2luZyBhIGhvc3QuXG4gICAqL1xuICBwYXltZW50TGlua0Jhc2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRoIHBhcmFtZXRlcnMgYWRkZWQgdG8gdGhlIHdlYiBsaW5rIHRoYXQgQ2hhbmdlIERhdGUgLyBDaGFuZ2UgUm91dGUgb3Blbiwgc28gdGhlIHdlYiBjYW4gY2FsbCBpdHMgQVBJcyBmb3IgdGhlXG4gICAqIGFnZW50LiBUaGUgaG9zdCBkZWNpZGVzIHRoZSBuYW1lcyBhbmQgdGhlIHZhbHVlcywgZm9yIGV4YW1wbGUgQmFja29mZmljZSBgeyAnYm8tdG9rZW4nOiB0b2tlbiB9YCBhbmQgSGVsaXhcbiAgICogYHsgJ3gtaGVsaXgtdG9rZW4nOiB0b2tlbiB9YC4gSXQgcnVucyBpbiBhbiBpbmplY3Rpb24gY29udGV4dCAodGhlIGhvc3QgY2FuIGBpbmplY3QoKWAgaXRzIGF1dGggc2VydmljZSBmaXJzdCkgYW5kXG4gICAqIG1heSByZXR1cm4gdGhlIG9iamVjdCwgYSBQcm9taXNlIG9yIGFuIE9ic2VydmFibGUuIE5vdCBzZXQgPSBub3RoaW5nIGlzIGFkZGVkLiBJZiBpdCBmYWlscywgdGhlIHdlYiBzdGlsbCBvcGVuc1xuICAgKiB3aXRob3V0IHRoZSB0b2tlbi5cbiAgICovXG4gIHJlZGlyZWN0QXV0aFBhcmFtcz86ICgpID0+IFNiZFJlZGlyZWN0QXV0aFBhcmFtcyB8IFByb21pc2U8U2JkUmVkaXJlY3RBdXRoUGFyYW1zPiB8IE9ic2VydmFibGU8U2JkUmVkaXJlY3RBdXRoUGFyYW1zPjtcbiAgLyoqIFdoZXJlIGByZWRpcmVjdEF1dGhQYXJhbXNgIGdvIGluIHRoZSBVUkw6IHRoZSBxdWVyeSBzdHJpbmcgKGRlZmF1bHQpIG9yIHRoZSBgI2ZyYWdtZW50YCAobm90IHNlbnQgdG8gc2VydmVycykuICovXG4gIHJlZGlyZWN0QXV0aEluPzogJ3F1ZXJ5JyB8ICdoYXNoJztcbiAgLyoqXG4gICAqIFNob3cgdGhlIFJlaXNzdWUgYnV0dG9uLiBPZmYgYnkgZGVmYXVsdCBzbyB1cGdyYWRpbmcgdGhlIHBhY2thZ2UgZG9lcyBub3QgZXhwb3NlIFJlaXNzdWUgdG8gYWdlbnRzIGJlZm9yZSB0aGUgaG9zdCdzXG4gICAqIGJhY2tlbmQgc2VydmVzIHRoZSBSZWlzc3VlIEFQSXM7IHRoZSBob3N0IHR1cm5zIGl0IG9uIHdoZW4gdGhleSBhcmUgcmVhZHkuXG4gICAqL1xuICByZWlzc3VlRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBicmFuZHMgaW4gdGhlIGRyb3Bkb3duIG9uIHRvcCBvZiB0aGUgZGFzaGJvYXJkLiBUaGUgc2VsZWN0ZWQgb25lIGdvZXMgaW4gdGhlIGB4LWJyYW5kYCBoZWFkZXIgb2YgZXZlcnkgcmVxdWVzdFxuICAgKiB0aGUgZGFzaGJvYXJkIG1ha2VzLiBEZWZhdWx0OiBBbG1hdGFyIGFuZCBOdXN1ay5cbiAgICovXG4gIGJyYW5kczogU2JkQnJhbmRPcHRpb25bXTtcbiAgLyoqIFRoZSBicmFuZCBzZWxlY3RlZCB3aGVuIHRoZSBkYXNoYm9hcmQgb3BlbnMgKGl0cyBgdmFsdWVgKS4gRGVmYXVsdDogJ2FsbWF0YXInLiAqL1xuICBkZWZhdWx0QnJhbmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNCRF9ERUZBVUxUX0NPTkZJRzogU2JkQ29uZmlnID0ge1xuICBhcGlCYXNlOiAnL2FwaScsXG4gIHBsYXRmb3JtOiAnQk8nLFxuICB3ZWJCYXNlVXJsOiAnJyxcbiAgcmVpc3N1ZUVuYWJsZWQ6IGZhbHNlLFxuICBicmFuZHM6IFtcbiAgICB7IHZhbHVlOiAnYWxtYXRhcicsIGxhYmVsOiAnQWxtYXRhcicgfSxcbiAgICB7IHZhbHVlOiAnbnVzdWsnLCBsYWJlbDogJ051c3VrJyB9LFxuICBdLFxuICBkZWZhdWx0QnJhbmQ6ICdhbG1hdGFyJyxcbn07XG5cbmV4cG9ydCBjb25zdCBTQkRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFNiZENvbmZpZz4oJ1NCRF9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gU0JEX0RFRkFVTFRfQ09ORklHLFxufSk7XG5cbi8qKiBPcHRpb25hbDogY2FsbCBpbiB0aGUgaG9zdCBhcHAncyBwcm92aWRlcnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTbWFydEJvb2tpbmdEYXNoYm9hcmQoY29uZmlnOiBQYXJ0aWFsPFNiZENvbmZpZz4gPSB7fSk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgeyBwcm92aWRlOiBTQkRfQ09ORklHLCB1c2VWYWx1ZTogeyAuLi5TQkRfREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9IH0sXG4gIF0pO1xufVxuIl19
@@ -113,6 +113,11 @@ export class SmartBookingDashboardComponent {
113
113
  document.querySelector('.sbd-booking-input__field')?.focus();
114
114
  }
115
115
  }
116
+ /** The booking on screen was found under the previous brand: clear it, the agent looks it up again on the new one. */
117
+ onBrandChanged() {
118
+ this.bookingStatus.set('idle');
119
+ this.bookingData.set(null);
120
+ }
116
121
  lookupBooking() {
117
122
  const id = this.bookingId().trim();
118
123
  if (!id)
@@ -141,7 +146,7 @@ export class SmartBookingDashboardComponent {
141
146
  });
142
147
  }
143
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartBookingDashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
144
- 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 [showReissue]=\"reissueEnabled && product() === 'flight'\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n (reissue)=\"reissueDialogOpen.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\n<app-sbd-reissue-dialog\n [visible]=\"reissueDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [bookingData]=\"bookingData()\"\n (closed)=\"reissueDialogOpen.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", "showReissue"], outputs: ["cancelBooking", "reissue"] }, { 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: SbdReissueDialogComponent, selector: "app-sbd-reissue-dialog", inputs: ["visible", "bookingId", "bookingData"], 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"] }] }); }
149
+ 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 (brandChanged)=\"onBrandChanged()\"\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 [showReissue]=\"reissueEnabled && product() === 'flight'\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n (reissue)=\"reissueDialogOpen.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\n<app-sbd-reissue-dialog\n [visible]=\"reissueDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [bookingData]=\"bookingData()\"\n (closed)=\"reissueDialogOpen.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", "brandChanged"] }, { kind: "component", type: SbdWorkflowActionsComponent, selector: "app-sbd-workflow-actions", inputs: ["bookingId", "showReissue"], outputs: ["cancelBooking", "reissue"] }, { 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: SbdReissueDialogComponent, selector: "app-sbd-reissue-dialog", inputs: ["visible", "bookingId", "bookingData"], 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"] }] }); }
145
150
  }
146
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SmartBookingDashboardComponent, decorators: [{
147
152
  type: Component,
@@ -161,9 +166,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
161
166
  LowerCasePipe,
162
167
  NgIf,
163
168
  ButtonModule,
164
- ], 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 [showReissue]=\"reissueEnabled && product() === 'flight'\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n (reissue)=\"reissueDialogOpen.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\n<app-sbd-reissue-dialog\n [visible]=\"reissueDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [bookingData]=\"bookingData()\"\n (closed)=\"reissueDialogOpen.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"] }]
169
+ ], 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 (brandChanged)=\"onBrandChanged()\"\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 [showReissue]=\"reissueEnabled && product() === 'flight'\"\n (cancelBooking)=\"cancelDialogOpen.set(true)\"\n (reissue)=\"reissueDialogOpen.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\n<app-sbd-reissue-dialog\n [visible]=\"reissueDialogOpen()\"\n [bookingId]=\"bookingId()\"\n [bookingData]=\"bookingData()\"\n (closed)=\"reissueDialogOpen.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"] }]
165
170
  }], propDecorators: { onKeydown: [{
166
171
  type: HostListener,
167
172
  args: ['document:keydown', ['$event']]
168
173
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9wYWdlcy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zbWFydC1ib29raW5nLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3BhZ2VzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQWtDLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFD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QXlCO3dCQUN6Qix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsYUFBYTt3QkFDYixJQUFJO3dCQUNKLFlBQVk7cUJBQ2I7OEJBOEZELFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvd2VyQ2FzZVBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuXG5cbmltcG9ydCB7IFNCRF9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25maWcvZGFzaGJvYXJkLmNvbmZpZyc7XG5pbXBvcnQgeyBTYmRCb29raW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jvb2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBTYmRUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEZMSUdIVF9BQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uZmlnL2ZsaWdodC1hY3Rpb25zLmNvbmZpZyc7XG5pbXBvcnQgeyBIT1RFTF9BQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uZmlnL2hvdGVsLWFjdGlvbnMuY29uZmlnJztcbmltcG9ydCB7IFByb2R1Y3RUeXBlLCBJSG90ZWxCb29raW5nRGF0YSwgbWFwVG9Ib3RlbEJvb2tpbmdEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jvb2tpbmcudHlwZXMnO1xuXG5pbXBvcnQgeyBTYmRCb29raW5nSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Jvb2tpbmctaW5wdXQvYm9va2luZy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkV29ya2Zsb3dBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy1hY3Rpb25zL3dvcmtmbG93LWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEFjdGlvbkdyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi1ncmlkL2FjdGlvbi1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRDYW5jZWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NhbmNlbC1kaWFsb2cvY2FuY2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEZsaWdodEl0aW5lcmFyeUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZsaWdodC1pdGluZXJhcnktY2FyZC9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEhvdGVsSXRpbmVyYXJ5Q2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtaXRpbmVyYXJ5LWNhcmQvaG90ZWwtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZERhdGFTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RhdGEtc2VhcmNoL2RhdGEtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRBY3Rpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi1kaWFsb2cvYWN0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkQWRkTm90ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYWRkLW5vdGUtZGlhbG9nL2FkZC1ub3RlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkUmVpc3N1ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcmVpc3N1ZS1kaWFsb2cvcmVpc3N1ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEhvdGVsQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2NvbXBvbmVudHMvaG90ZWwtY29udGVudC9ob3RlbC1jb250ZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1ib29raW5nLWRhc2hib2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBTYmRCb29raW5nSW5wdXRDb21wb25lbnQsXG4gICAgU2JkV29ya2Zsb3dBY3Rpb25zQ29tcG9uZW50LFxuICAgIFNiZEFjdGlvbkdyaWRDb21wb25lbnQsXG4gICAgU2JkQ2FuY2VsRGlhbG9nQ29tcG9uZW50LFxuICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Db21wb25lbnQsXG4gICAgU2JkRmxpZ2h0SXRpbmVyYXJ5Q2FyZENvbXBvbmVudCxcbiAgICBTYmRIb3RlbEl0aW5lcmFyeUNhcmRDb21wb25lbnQsXG4gICAgU2JkRGF0YVNlYXJjaENvbXBvbmVudCxcbiAgICBTYmRBY3Rpb25EaWFsb2dDb21wb25lbnQsXG4gICAgU2JkQWRkTm90ZURpYWxvZ0NvbXBvbmVudCxcbiAgICBTYmRSZWlzc3VlRGlhbG9nQ29tcG9uZW50LFxuICAgIFNiZEhvdGVsQ29udGVudENvbXBvbmVudCxcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIE5nSWYsXG4gICAgQnV0dG9uTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydEJvb2tpbmdEYXNoYm9hcmRDb21wb25lbnQge1xuICBwcml2YXRlIGJvb2tpbmdTZXJ2aWNlID0gaW5qZWN0KFNiZEJvb2tpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChTYmRUb2FzdFNlcnZpY2UpO1xuICAvKiogVGhlIFJlaXNzdWUgYnV0dG9uIGlzIHNob3duIGZvciBmbGlnaHRzIG9ubHksIGFuZCBvbmx5IHdoZW4gdGhlIGhvc3QgZW5hYmxlZCB0aGUgZmVhdHVyZS4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlaXNzdWVFbmFibGVkID0gaW5qZWN0KFNCRF9DT05GSUcpLnJlaXNzdWVFbmFibGVkO1xuXG4gIHByb2R1Y3QgPSBzaWduYWw8UHJvZHVjdFR5cGU+KCdmbGlnaHQnKTtcbiAgYm9va2luZ0lkID0gc2lnbmFsKCcnKTtcblxuICBib29raW5nU3RhdHVzID0gc2lnbmFsPCdpZGxlJyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIGJvb2tpbmdEYXRhID0gc2lnbmFsPElIb3RlbEJvb2tpbmdEYXRhIHwgYW55IHwgbnVsbD4obnVsbCk7XG5cbiAgY2FuY2VsRGlhbG9nT3BlbiAgICAgICAgICA9IHNpZ25hbChmYWxzZSk7XG4gIGhvdGVsQXV0b0NhbmNlbERpYWxvZ09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBhY3Rpb25EaWFsb2dPcGVuICAgICAgICAgID0gc2lnbmFsKGZhbHNlKTtcbiAgYWRkTm90ZURpYWxvZ09wZW4gICAgICAgICA9IHNpZ25hbChmYWxzZSk7XG4gIHJlaXNzdWVEaWFsb2dPcGVuICAgICAgICAgPSBzaWduYWwoZmFsc2UpO1xuICBzZWxlY3RlZEFjdGlvbktleSAgICAgICAgID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBhY3RpdmVDb250ZXh0VGFiICAgICAgICAgID0gc2lnbmFsPCdub3RlcycgfCAnY2hhbmdlcyc+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+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPkJvb2tpbmcgbm90IGZvdW5kLiBEb3VibGUtY2hlY2sgdGhlIElEIGFuZCBwcm9kdWN0IHR5cGUsIHRoZW4gdHJ5IGFnYWluLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ29udGVudCBvbmNlIGxvYWRlZCAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdzdWNjZXNzJykge1xuXG4gICAgICAgICAgPCEtLSBRdWljayBhY3Rpb25zIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stbGFiZWxcIj5RdWljayBhY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgPGFwcC1zYmQtd29ya2Zsb3ctYWN0aW9uc1xuICAgICAgICAgICAgICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgICAgICAgICAgICAgW3Nob3dSZWlzc3VlXT1cInJlaXNzdWVFbmFibGVkICYmIHByb2R1Y3QoKSA9PT0gJ2ZsaWdodCdcIlxuICAgICAgICAgICAgICAoY2FuY2VsQm9va2luZyk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAgIChyZWlzc3VlKT1cInJlaXNzdWVEaWFsb2dPcGVuLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBBY3Rpb24gZ3JpZCAtLT5cbiAgICAgICAgICA8YXBwLXNiZC1hY3Rpb24tZ3JpZFxuICAgICAgICAgICAgW2FjdGlvbnNdPVwiYXZhaWxhYmxlQWN0aW9ucygpXCJcbiAgICAgICAgICAgIFthY3RpdmVLZXldPVwic2VsZWN0ZWRBY3Rpb25LZXkoKVwiXG4gICAgICAgICAgICAoYWN0aW9uU2VsZWN0ZWQpPVwib3BlbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPCEtLSBDb250ZXh0OiBOb3RlcyArIENoYW5nZXMgdGFiYmVkIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dFwiPlxuXG4gICAgICAgICAgICA8IS0tIFRhYiBiYXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFiXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2JkLXBhZ2VfX2NvbnRleHQtdGFiLS1hY3RpdmVdPVwiYWN0aXZlQ29udGV4dFRhYigpID09PSAnY2hhbmdlcydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVDb250ZXh0VGFiLnNldCgnY2hhbmdlcycpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1oaXN0b3J5XCI+PC9pPlxuICAgICAgICAgICAgICAgIENoYW5nZXNcbiAgICAgICAgICAgICAgICBAaWYgKGJvb2tpbmdIaXN0b3J5KCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1waWxsIHNiZC1wYWdlX19jb250ZXh0LXBpbGwtLWNoYW5nZXNcIj57eyBib29raW5nSGlzdG9yeSgpLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFiXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2JkLXBhZ2VfX2NvbnRleHQtdGFiLS1hY3RpdmVdPVwiYWN0aXZlQ29udGV4dFRhYigpID09PSAnbm90ZXMnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlQ29udGV4dFRhYi5zZXQoJ25vdGVzJylcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNvbW1lbnRzXCI+PC9pPlxuICAgICAgICAgICAgICAgIE5vdGVzXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1waWxsIHNiZC1wYWdlX19jb250ZXh0LXBpbGwtLW5vdGVzXCI+e3sgYm9va2luZ05vdGVzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgQGlmIChhY3RpdmVDb250ZXh0VGFiKCkgPT09ICdub3RlcycpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gbGFiZWw9XCJBZGQgTm90ZVwiIGljb249XCJwaSBwaS1wbHVzXCIgY2xhc3M9XCJwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1vdXRsaW5lZCBzYmQtcGFnZV9fY29udGV4dC1hZGRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE5vdGVEaWFsb2dPcGVuLnNldCh0cnVlKVwiPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBOb3RlcyB0YWIgLS0+XG4gICAgICAgICAgICBAaWYgKGFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ25vdGVzJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX25vdGVzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGJvb2tpbmdOb3RlcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5ib3hcIj48L2k+IE5vIG5vdGVzIHlldFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBmb3IgKG5vdGUgb2YgYm9va2luZ05vdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19ub3RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS10b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1wYWdlX19ub3RlLWJhZGdlIHNiZC1wYWdlX19ub3RlLWJhZGdlLS17eyBub3RlLmFjdGlvbiB8IGxvd2VyY2FzZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm90ZS5hY3Rpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS1hdXRob3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vdGUud3JpdHRlbkJ5Py5maXJzdE5hbWUgfX0ge3sgbm90ZS53cml0dGVuQnk/Lmxhc3ROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX25vdGUtZGF0ZVwiPnt7IGZtdE5vdGVEYXRlKG5vdGUuZGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInNiZC1wYWdlX19ub3RlLW1zZ1wiPnt7IG5vdGUubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gQ2hhbmdlcyB0YWIgLS0+XG4gICAgICAgICAgICBAaWYgKGFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ2NoYW5nZXMnKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1ncm91cHNcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGhpc3RvcnlHcm91cHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1lbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPiBObyBjaGFuZ2VzIHJlY29yZGVkXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGZvciAoZ3JvdXAgb2YgaGlzdG9yeUdyb3VwcygpOyB0cmFjayBncm91cC5jaGFuZ2VkQXQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtbWV0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXNlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdyb3VwLmNoYW5nZWRCeSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtc2VwXCI+wrc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZm10RGF0ZShncm91cC5jaGFuZ2VkQXQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5GaWVsZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48aSBjbGFzcz1cInBpIHBpLXRpbWVzLWNpcmNsZVwiPjwvaT4gQmVmb3JlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCI+PC9pPiBBZnRlcjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgZ3JvdXAuZW50cmllczsgdHJhY2sgZW50cnkuZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNiZC1wYWdlX19jaGFuZ2VzLWZpZWxkXCI+e3sgZm9ybWF0RmllbGQoZW50cnkuZmllbGQpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1vbGRcIj57eyBlbnRyeS5mcm9tIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1uZXdcIj57eyBlbnRyeS50byB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBMb2FkaW5nIHNrZWxldG9uIGZvciBtYWluIC0tPlxuICAgICAgICBAaWYgKGJvb2tpbmdTdGF0dXMoKSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1jYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLXJvd1wiIHN0eWxlPVwid2lkdGg6NDAlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLXJvd1wiIHN0eWxlPVwid2lkdGg6MjUlXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgPC9tYWluPlxuXG4gICAgPC9kaXY+XG4gIH1cblxuPC9kaXY+XG5cbjxhcHAtc2JkLWNhbmNlbC1kaWFsb2dcbiAgW3Zpc2libGVdPVwiY2FuY2VsRGlhbG9nT3BlbigpICYmIHByb2R1Y3QoKSA9PT0gJ2ZsaWdodCdcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgW3BuckluZm9dPVwiY2FuY2VsUG5ySW5mbygpXCJcbiAgW2Jvb2tpbmdJbmZvXT1cImJvb2tpbmdEYXRhKClcIlxuICAoY2xvc2VkKT1cImNhbmNlbERpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4gIChjb25maXJtZWQpPVwiYm9va2luZ1N0YXR1cy5zZXQoJ2lkbGUnKTsgYm9va2luZ0RhdGEuc2V0KG51bGwpXCJcbi8+XG5cbjxhbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uXG4gICpuZ0lmPVwiY2FuY2VsRGlhbG9nT3BlbigpICYmIHByb2R1Y3QoKSA9PT0gJ2hvdGVsJ1wiXG4gIFtzZWxlY3RlZEhvdGVsQm9va2luZ109XCJib29raW5nRGF0YSgpXCJcbiAgKGNsb3NlZCk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuICAoY2FuY2VsbGF0aW9uU3VjY2Vzcyk9XCJib29raW5nU3RhdHVzLnNldCgnaWRsZScpOyBib29raW5nRGF0YS5zZXQobnVsbClcIlxuLz5cblxuPGFwcC1zYmQtYWN0aW9uLWRpYWxvZ1xuICBbdmlzaWJsZV09XCJhY3Rpb25EaWFsb2dPcGVuKClcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgW2FjdGlvbnNdPVwiYXZhaWxhYmxlQWN0aW9ucygpXCJcbiAgW2luaXRpYWxLZXldPVwic2VsZWN0ZWRBY3Rpb25LZXkoKVwiXG4gIFtwcmVsb2FkZWREYXRhXT1cImJvb2tpbmdEYXRhKClcIlxuICAoY2xvc2VkKT1cImFjdGlvbkRpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4vPlxuXG48YXBwLXNiZC1hZGQtbm90ZS1kaWFsb2dcbiAgW3Zpc2libGVdPVwiYWRkTm90ZURpYWxvZ09wZW4oKVwiXG4gIFtib29raW5nSWRdPVwiYm9va2luZ0lkKClcIlxuICBbcHJvZHVjdF09XCJwcm9kdWN0KClcIlxuICAoY2xvc2VkKT1cImFkZE5vdGVEaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuLz5cblxuPGFwcC1zYmQtcmVpc3N1ZS1kaWFsb2dcbiAgW3Zpc2libGVdPVwicmVpc3N1ZURpYWxvZ09wZW4oKVwiXG4gIFtib29raW5nSWRdPVwiYm9va2luZ0lkKClcIlxuICBbYm9va2luZ0RhdGFdPVwiYm9va2luZ0RhdGEoKVwiXG4gIChjbG9zZWQpPVwicmVpc3N1ZURpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4vPlxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9wYWdlcy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zbWFydC1ib29raW5nLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL3BhZ2VzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQWtDLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFD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d0JBQ1Asd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4QixxQ0FBcUM7d0JBQ3JDLCtCQUErQjt3QkFDL0IsOEJBQThCO3dCQUM5QixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsYUFBYTt3QkFDYixJQUFJO3dCQUNKLFlBQVk7cUJBQ2I7OEJBOEZELFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvd2VyQ2FzZVBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuXG5cbmltcG9ydCB7IFNCRF9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25maWcvZGFzaGJvYXJkLmNvbmZpZyc7XG5pbXBvcnQgeyBTYmRCb29raW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jvb2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBTYmRUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEZMSUdIVF9BQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uZmlnL2ZsaWdodC1hY3Rpb25zLmNvbmZpZyc7XG5pbXBvcnQgeyBIT1RFTF9BQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uZmlnL2hvdGVsLWFjdGlvbnMuY29uZmlnJztcbmltcG9ydCB7IFByb2R1Y3RUeXBlLCBJSG90ZWxCb29raW5nRGF0YSwgbWFwVG9Ib3RlbEJvb2tpbmdEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jvb2tpbmcudHlwZXMnO1xuXG5pbXBvcnQgeyBTYmRCb29raW5nSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Jvb2tpbmctaW5wdXQvYm9va2luZy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkV29ya2Zsb3dBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy93b3JrZmxvdy1hY3Rpb25zL3dvcmtmbG93LWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEFjdGlvbkdyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi1ncmlkL2FjdGlvbi1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRDYW5jZWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NhbmNlbC1kaWFsb2cvY2FuY2VsLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEZsaWdodEl0aW5lcmFyeUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZsaWdodC1pdGluZXJhcnktY2FyZC9mbGlnaHQtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEhvdGVsSXRpbmVyYXJ5Q2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtaXRpbmVyYXJ5LWNhcmQvaG90ZWwtaXRpbmVyYXJ5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZERhdGFTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RhdGEtc2VhcmNoL2RhdGEtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYmRBY3Rpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi1kaWFsb2cvYWN0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkQWRkTm90ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYWRkLW5vdGUtZGlhbG9nL2FkZC1ub3RlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2JkUmVpc3N1ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcmVpc3N1ZS1kaWFsb2cvcmVpc3N1ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNiZEhvdGVsQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2NvbXBvbmVudHMvaG90ZWwtY29udGVudC9ob3RlbC1jb250ZW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zbWFydC1ib29raW5nLWRhc2hib2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBTYmRCb29raW5nSW5wdXRDb21wb25lbnQsXG4gICAgU2JkV29ya2Zsb3dBY3Rpb25zQ29tcG9uZW50LFxuICAgIFNiZEFjdGlvbkdyaWRDb21wb25lbnQsXG4gICAgU2JkQ2FuY2VsRGlhbG9nQ29tcG9uZW50LFxuICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Db21wb25lbnQsXG4gICAgU2JkRmxpZ2h0SXRpbmVyYXJ5Q2FyZENvbXBvbmVudCxcbiAgICBTYmRIb3RlbEl0aW5lcmFyeUNhcmRDb21wb25lbnQsXG4gICAgU2JkRGF0YVNlYXJjaENvbXBvbmVudCxcbiAgICBTYmRBY3Rpb25EaWFsb2dDb21wb25lbnQsXG4gICAgU2JkQWRkTm90ZURpYWxvZ0NvbXBvbmVudCxcbiAgICBTYmRSZWlzc3VlRGlhbG9nQ29tcG9uZW50LFxuICAgIFNiZEhvdGVsQ29udGVudENvbXBvbmVudCxcbiAgICBMb3dlckNhc2VQaXBlLFxuICAgIE5nSWYsXG4gICAgQnV0dG9uTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vc21hcnQtYm9va2luZy1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydEJvb2tpbmdEYXNoYm9hcmRDb21wb25lbnQge1xuICBwcml2YXRlIGJvb2tpbmdTZXJ2aWNlID0gaW5qZWN0KFNiZEJvb2tpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChTYmRUb2FzdFNlcnZpY2UpO1xuICAvKiogVGhlIFJlaXNzdWUgYnV0dG9uIGlzIHNob3duIGZvciBmbGlnaHRzIG9ubHksIGFuZCBvbmx5IHdoZW4gdGhlIGhvc3QgZW5hYmxlZCB0aGUgZmVhdHVyZS4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlaXNzdWVFbmFibGVkID0gaW5qZWN0KFNCRF9DT05GSUcpLnJlaXNzdWVFbmFibGVkO1xuXG4gIHByb2R1Y3QgPSBzaWduYWw8UHJvZHVjdFR5cGU+KCdmbGlnaHQnKTtcbiAgYm9va2luZ0lkID0gc2lnbmFsKCcnKTtcblxuICBib29raW5nU3RhdHVzID0gc2lnbmFsPCdpZGxlJyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIGJvb2tpbmdEYXRhID0gc2lnbmFsPElIb3RlbEJvb2tpbmdEYXRhIHwgYW55IHwgbnVsbD4obnVsbCk7XG5cbiAgY2FuY2VsRGlhbG9nT3BlbiAgICAgICAgICA9IHNpZ25hbChmYWxzZSk7XG4gIGhvdGVsQXV0b0NhbmNlbERpYWxvZ09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBhY3Rpb25EaWFsb2dPcGVuICAgICAgICAgID0gc2lnbmFsKGZhbHNlKTtcbiAgYWRkTm90ZURpYWxvZ09wZW4gICAgICAgICA9IHNpZ25hbChmYWxzZSk7XG4gIHJlaXNzdWVEaWFsb2dPcGVuICAgICAgICAgPSBzaWduYWwoZmFsc2UpO1xuICBzZWxlY3RlZEFjdGlvbktleSAgICAgICAgID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBhY3RpdmVDb250ZXh0VGFiICAgICAgICAgID0gc2lnbmFsPCdub3RlcycgfCAnY2hhbmdlcyc+KCdjaGFuZ2VzJyk7XG5cbiAgYXZhaWxhYmxlQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+XG4gICAgKHRoaXMucHJvZHVjdCgpID09PSAnZmxpZ2h0JyA/IEZMSUdIVF9BQ1RJT05TIDogSE9URUxfQUNUSU9OUykuZmlsdGVyKGEgPT4gIWEuaGlkZGVuKVxuICApO1xuXG4gIC8vIEhhbmRsZSBib3RoIGNvcnJlY3Qgc3BlbGxpbmcgKGRhdGFWZXJpZmllZCkgYW5kIEJFIHR5cG8gKGRhdGFWZXJmaWVkKVxuICBkYXRhVmVyaWZpZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYmkgPSB0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbztcbiAgICByZXR1cm4gYmk/LmRhdGFWZXJpZmllZCA9PT0gdHJ1ZSB8fCBiaT8uZGF0YVZlcmZpZWQgPT09IHRydWU7XG4gIH0pO1xuXG4gIC8vIFBOUiBsaXN0IGZvciB0aGUgYWN0aXZlIGJvb2tpbmcsIG5vcm1hbGl6ZWQgdG8gYSBmbGF0IGFycmF5IHJlZ2FyZGxlc3Mgb2YgQkUgc2hhcGUuXG4gIGNhbmNlbFBuckluZm8gPSBjb21wdXRlZDx7IHBucj86IHN0cmluZzsgTGVnRGlyZWN0aW9uYWxpdHk/OiBzdHJpbmcgfVtdPigoKSA9PiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5ib29raW5nRGF0YSgpPy5kYXRhPy5ib29raW5nX2luZm8/LnBucl9pbmZvO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHJldHVybiByYXc7XG4gICAgaWYgKHJhdz8ucG5yKSByZXR1cm4gW3sgcG5yOiByYXcucG5yLCBMZWdEaXJlY3Rpb25hbGl0eTogJ0RlcGFydHVyZScgfV07XG4gICAgcmV0dXJuIFtdO1xuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBib29raW5nSGlzdG9yeSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbz8uaGlzdG9yeSA/PyBbXSkgYXMgYW55W10pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGJvb2tpbmdOb3RlcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmJvb2tpbmdEYXRhKCk/LmRhdGE/LmJvb2tpbmdfaW5mbz8ubm90ZXMgPz8gW10pIGFzIGFueVtdKTtcblxuICBoaXN0b3J5R3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCB7IGNoYW5nZWRCeTogc3RyaW5nOyBjaGFuZ2VkQXQ6IHN0cmluZzsgZW50cmllczogeyBmaWVsZDogc3RyaW5nOyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfVtdIH0+KCk7XG4gICAgZm9yIChjb25zdCBlIG9mIHRoaXMuYm9va2luZ0hpc3RvcnkoKSkge1xuICAgICAgaWYgKCFncm91cHMuaGFzKGUuY2hhbmdlZEF0KSkgZ3JvdXBzLnNldChlLmNoYW5nZWRBdCwgeyBjaGFuZ2VkQnk6IGUuY2hhbmdlZEJ5LCBjaGFuZ2VkQXQ6IGUuY2hhbmdlZEF0LCBlbnRyaWVzOiBbXSB9KTtcbiAgICAgIGNvbnN0IHJhd0ZpZWxkID0gKGUuZmllbGQgYXMgc3RyaW5nKS5zcGxpdCgnLicpLnBvcCgpID8/IGUuZmllbGQ7XG4gICAgICBncm91cHMuZ2V0KGUuY2hhbmdlZEF0KSEuZW50cmllcy5wdXNoKHtcbiAgICAgICAgZmllbGQ6IHJhd0ZpZWxkLnJlcGxhY2UoL1xcWy4qP1xcXS9nLCAnJyksXG4gICAgICAgIGZyb206IGUucHJldmlvdXNWYWx1ZSxcbiAgICAgICAgdG86IGUubmV3VmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5ncm91cHMudmFsdWVzKCldO1xuICB9KTtcblxuICBmbXROb3RlRGF0ZShkYXRlOiB7IHNlYzogbnVtYmVyOyB1c2VjPzogbnVtYmVyIH0pOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZT8uc2VjKSByZXR1cm4gJ+KAlCc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLnNlYyAqIDEwMDApLnRvTG9jYWxlU3RyaW5nKCdlbi1HQicsIHtcbiAgICAgICAgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHsgcmV0dXJuICfigJQnOyB9XG4gIH1cblxuICBmb3JtYXRGaWVsZChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGRcbiAgICAgIC5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCAnJDEgJDInKVxuICAgICAgLnJlcGxhY2UoLyhbYS16XFxkXSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAudHJpbSgpO1xuICB9XG5cbiAgZm10RGF0ZShkdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWR0KSByZXR1cm4gJ+KAlCc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkdCkudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywge1xuICAgICAgICBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHsgcmV0dXJuIGR0OyB9XG4gIH1cblxuICBvcGVuQWN0aW9uKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEFjdGlvbktleS5zZXQoa2V5KTtcbiAgICB0aGlzLmFjdGlvbkRpYWxvZ09wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICgoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSAmJiBldmVudC5rZXkgPT09ICdrJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oJy5zYmQtYm9va2luZy1pbnB1dF9fZmllbGQnKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGJvb2tpbmcgb24gc2NyZWVuIHdhcyBmb3VuZCB1bmRlciB0aGUgcHJldmlvdXMgYnJhbmQ6IGNsZWFyIGl0LCB0aGUgYWdlbnQgbG9va3MgaXQgdXAgYWdhaW4gb24gdGhlIG5ldyBvbmUuICovXG4gIG9uQnJhbmRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuYm9va2luZ1N0YXR1cy5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmJvb2tpbmdEYXRhLnNldChudWxsKTtcbiAgfVxuXG4gIGxvb2t1cEJvb2tpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmJvb2tpbmdJZCgpLnRyaW0oKTtcbiAgICBpZiAoIWlkKSByZXR1cm47XG5cbiAgICB0aGlzLmJvb2tpbmdTdGF0dXMuc2V0KCdsb2FkaW5nJyk7XG5cbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLnByb2R1Y3QoKSA9PT0gJ2hvdGVsJ1xuICAgICAgPyBbJ2Jvb2tpbmdfaW5mbycsICdob3RlbF9pbmZvcm1hdGlvbicsICdjaGVja2luX2NoZWNrb3V0JywgJ3Jvb21faW5mb3JtYXRpb24nXVxuICAgICAgOiAnYm9va2luZ19pbmZvJztcblxuICAgIHRoaXMuYm9va2luZ1NlcnZpY2UuZ2V0Qm9va2luZyhpZCwgdGhpcy5wcm9kdWN0KCksIGZpZWxkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnQm9va2luZyBkYXRhIHJlY2VpdmVkOicsIGRhdGEpOyAgXG4gICAgICAgIGlmKHRoaXMucHJvZHVjdCgpID09PSAnaG90ZWwnKXtcbiAgICAgICAgICBjb25zdCBtYXBwZWREYXRhID0gbWFwVG9Ib3RlbEJvb2tpbmdEYXRhKGRhdGEpO1xuICAgICAgICAgIHRoaXMuYm9va2luZ0RhdGEuc2V0KG1hcHBlZERhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYm9va2luZ0RhdGEuc2V0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYm9va2luZ1N0YXR1cy5zZXQoJ3N1Y2Nlc3MnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJvb2tpbmdTdGF0dXMuc2V0KCdlcnJvcicpO1xuICAgICAgICB0aGlzLmJvb2tpbmdEYXRhLnNldChudWxsKTtcbiAgICAgICAgdGhpcy50b2FzdC5lcnJvcignQm9va2luZyBub3QgZm91bmQuIENoZWNrIHRoZSBJRCBhbmQgdHJ5IGFnYWluLicpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2JkLXBhZ2VcIj5cblxuICA8IS0tIFNlYXJjaCBiYXIgZnVsbC13aWR0aCBhdCB0b3AgLS0+XG4gIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2VhcmNoXCI+XG4gICAgPGFwcC1zYmQtYm9va2luZy1pbnB1dFxuICAgICAgWyhwcm9kdWN0KV09XCJwcm9kdWN0XCJcbiAgICAgIFsoYm9va2luZ0lkKV09XCJib29raW5nSWRcIlxuICAgICAgW2xvYWRpbmddPVwiYm9va2luZ1N0YXR1cygpID09PSAnbG9hZGluZydcIlxuICAgICAgKGxvb2t1cCk9XCJsb29rdXBCb29raW5nKClcIlxuICAgICAgKGJyYW5kQ2hhbmdlZCk9XCJvbkJyYW5kQ2hhbmdlZCgpXCJcbiAgICAvPlxuICA8L2Rpdj5cblxuICA8IS0tIEhvdGVsOiBVc2UgZGVkaWNhdGVkIGNvbXBvbmVudCAtLT5cbiAgQGlmIChwcm9kdWN0KCkgPT09ICdob3RlbCcpIHtcbiAgICA8YXBwLXNiZC1ob3RlbC1jb250ZW50XG4gICAgICBbYm9va2luZ0RhdGFdPVwiYm9va2luZ0RhdGEoKVwiXG4gICAgICBbYm9va2luZ1N0YXR1c109XCJib29raW5nU3RhdHVzKClcIlxuICAgICAgW2Jvb2tpbmdJZF09XCJib29raW5nSWQoKVwiXG4gICAgICBbZGF0YVZlcmlmaWVkXT1cImRhdGFWZXJpZmllZCgpXCJcbiAgICAgIFtib29raW5nTm90ZXNdPVwiYm9va2luZ05vdGVzKClcIlxuICAgICAgW2Jvb2tpbmdIaXN0b3J5XT1cImJvb2tpbmdIaXN0b3J5KClcIlxuICAgICAgW2hpc3RvcnlHcm91cHNdPVwiaGlzdG9yeUdyb3VwcygpXCJcbiAgICAgIFthY3RpdmVDb250ZXh0VGFiXT1cImFjdGl2ZUNvbnRleHRUYWIoKVwiXG4gICAgICAoY2FuY2VsQm9va2luZyk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldCh0cnVlKVwiXG4gICAgICAoYWRkTm90ZVJlcXVlc3RlZCk9XCJhZGROb3RlRGlhbG9nT3Blbi5zZXQodHJ1ZSlcIlxuICAgICAgKGNvbnRleHRUYWJDaGFuZ2VkKT1cImFjdGl2ZUNvbnRleHRUYWIuc2V0KCRldmVudClcIlxuICAgIC8+XG4gIH1cblxuICA8IS0tIEZsaWdodDogS2VlcCBvcmlnaW5hbCAyLWNvbHVtbiBsYXlvdXQgLS0+XG4gIEBpZiAocHJvZHVjdCgpID09PSAnZmxpZ2h0Jykge1xuICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGVudFwiPlxuXG4gICAgICA8IS0tIExlZnQ6IGJvb2tpbmcgY29udGV4dCAtLT5cbiAgICAgIDxhc2lkZSBjbGFzcz1cInNiZC1wYWdlX19hc2lkZVwiPlxuXG4gICAgICAgIDwhLS0gRGF0YSBzZWFyY2ggYXQgdGhlIHRvcCBvZiB0aGUgc2lkZWJhciAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgIDxhcHAtc2JkLWRhdGEtc2VhcmNoIFtkYXRhXT1cImJvb2tpbmdEYXRhKClcIiAvPlxuICAgICAgICAgIDxhcHAtc2JkLWZsaWdodC1pdGluZXJhcnktY2FyZCBbcHJvZHVjdF09XCJwcm9kdWN0KClcIiBbZGF0YV09XCJib29raW5nRGF0YSgpXCIgW3ZlcmlmaWVkXT1cImRhdGFWZXJpZmllZCgpXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBmb3IgYXNpZGUgLS0+XG4gICAgICAgIEBpZiAoYm9va2luZ1N0YXR1cygpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLWNhcmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo2MCVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo0MCVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo4MCVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fc2tlbGV0b24tcm93XCIgc3R5bGU9XCJ3aWR0aDo1MCVcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICA8L2FzaWRlPlxuXG4gICAgICA8IS0tIFJpZ2h0OiBhZ2VudCB3b3Jrc3BhY2UgLS0+XG4gICAgICA8bWFpbiBjbGFzcz1cInNiZC1wYWdlX19tYWluXCI+XG5cbiAgICAgICAgPCEtLSBFcnJvciBzdGF0ZSAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2Vycm9yXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPkJvb2tpbmcgbm90IGZvdW5kLiBEb3VibGUtY2hlY2sgdGhlIElEIGFuZCBwcm9kdWN0IHR5cGUsIHRoZW4gdHJ5IGFnYWluLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ29udGVudCBvbmNlIGxvYWRlZCAtLT5cbiAgICAgICAgQGlmIChib29raW5nU3RhdHVzKCkgPT09ICdzdWNjZXNzJykge1xuXG4gICAgICAgICAgPCEtLSBRdWljayBhY3Rpb25zIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fcXVpY2stbGFiZWxcIj5RdWljayBhY3Rpb25zPC9zcGFuPlxuICAgICAgICAgICAgPGFwcC1zYmQtd29ya2Zsb3ctYWN0aW9uc1xuICAgICAgICAgICAgICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgICAgICAgICAgICAgW3Nob3dSZWlzc3VlXT1cInJlaXNzdWVFbmFibGVkICYmIHByb2R1Y3QoKSA9PT0gJ2ZsaWdodCdcIlxuICAgICAgICAgICAgICAoY2FuY2VsQm9va2luZyk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAgIChyZWlzc3VlKT1cInJlaXNzdWVEaWFsb2dPcGVuLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBBY3Rpb24gZ3JpZCAtLT5cbiAgICAgICAgICA8YXBwLXNiZC1hY3Rpb24tZ3JpZFxuICAgICAgICAgICAgW2FjdGlvbnNdPVwiYXZhaWxhYmxlQWN0aW9ucygpXCJcbiAgICAgICAgICAgIFthY3RpdmVLZXldPVwic2VsZWN0ZWRBY3Rpb25LZXkoKVwiXG4gICAgICAgICAgICAoYWN0aW9uU2VsZWN0ZWQpPVwib3BlbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPCEtLSBDb250ZXh0OiBOb3RlcyArIENoYW5nZXMgdGFiYmVkIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dFwiPlxuXG4gICAgICAgICAgICA8IS0tIFRhYiBiYXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFiXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2JkLXBhZ2VfX2NvbnRleHQtdGFiLS1hY3RpdmVdPVwiYWN0aXZlQ29udGV4dFRhYigpID09PSAnY2hhbmdlcydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVDb250ZXh0VGFiLnNldCgnY2hhbmdlcycpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1oaXN0b3J5XCI+PC9pPlxuICAgICAgICAgICAgICAgIENoYW5nZXNcbiAgICAgICAgICAgICAgICBAaWYgKGJvb2tpbmdIaXN0b3J5KCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1waWxsIHNiZC1wYWdlX19jb250ZXh0LXBpbGwtLWNoYW5nZXNcIj57eyBib29raW5nSGlzdG9yeSgpLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2JkLXBhZ2VfX2NvbnRleHQtdGFiXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2JkLXBhZ2VfX2NvbnRleHQtdGFiLS1hY3RpdmVdPVwiYWN0aXZlQ29udGV4dFRhYigpID09PSAnbm90ZXMnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlQ29udGV4dFRhYi5zZXQoJ25vdGVzJylcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNvbW1lbnRzXCI+PC9pPlxuICAgICAgICAgICAgICAgIE5vdGVzXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1waWxsIHNiZC1wYWdlX19jb250ZXh0LXBpbGwtLW5vdGVzXCI+e3sgYm9va2luZ05vdGVzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgQGlmIChhY3RpdmVDb250ZXh0VGFiKCkgPT09ICdub3RlcycpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gbGFiZWw9XCJBZGQgTm90ZVwiIGljb249XCJwaSBwaS1wbHVzXCIgY2xhc3M9XCJwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1vdXRsaW5lZCBzYmQtcGFnZV9fY29udGV4dC1hZGRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE5vdGVEaWFsb2dPcGVuLnNldCh0cnVlKVwiPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBOb3RlcyB0YWIgLS0+XG4gICAgICAgICAgICBAaWYgKGFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ25vdGVzJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX25vdGVzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGJvb2tpbmdOb3RlcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19jb250ZXh0LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5ib3hcIj48L2k+IE5vIG5vdGVzIHlldFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBmb3IgKG5vdGUgb2YgYm9va2luZ05vdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19ub3RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS10b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1wYWdlX19ub3RlLWJhZGdlIHNiZC1wYWdlX19ub3RlLWJhZGdlLS17eyBub3RlLmFjdGlvbiB8IGxvd2VyY2FzZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm90ZS5hY3Rpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtcGFnZV9fbm90ZS1hdXRob3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vdGUud3JpdHRlbkJ5Py5maXJzdE5hbWUgfX0ge3sgbm90ZS53cml0dGVuQnk/Lmxhc3ROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX25vdGUtZGF0ZVwiPnt7IGZtdE5vdGVEYXRlKG5vdGUuZGF0ZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInNiZC1wYWdlX19ub3RlLW1zZ1wiPnt7IG5vdGUubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gQ2hhbmdlcyB0YWIgLS0+XG4gICAgICAgICAgICBAaWYgKGFjdGl2ZUNvbnRleHRUYWIoKSA9PT0gJ2NoYW5nZXMnKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1ncm91cHNcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGhpc3RvcnlHcm91cHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY29udGV4dC1lbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPiBObyBjaGFuZ2VzIHJlY29yZGVkXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGZvciAoZ3JvdXAgb2YgaGlzdG9yeUdyb3VwcygpOyB0cmFjayBncm91cC5jaGFuZ2VkQXQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtbWV0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdXNlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdyb3VwLmNoYW5nZWRCeSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtc2VwXCI+wrc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZm10RGF0ZShncm91cC5jaGFuZ2VkQXQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwic2JkLXBhZ2VfX2NoYW5nZXMtdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5GaWVsZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48aSBjbGFzcz1cInBpIHBpLXRpbWVzLWNpcmNsZVwiPjwvaT4gQmVmb3JlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCI+PC9pPiBBZnRlcjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgZ3JvdXAuZW50cmllczsgdHJhY2sgZW50cnkuZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNiZC1wYWdlX19jaGFuZ2VzLWZpZWxkXCI+e3sgZm9ybWF0RmllbGQoZW50cnkuZmllbGQpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1vbGRcIj57eyBlbnRyeS5mcm9tIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzYmQtcGFnZV9fY2hhbmdlcy1uZXdcIj57eyBlbnRyeS50byB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBMb2FkaW5nIHNrZWxldG9uIGZvciBtYWluIC0tPlxuICAgICAgICBAaWYgKGJvb2tpbmdTdGF0dXMoKSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1wYWdlX19za2VsZXRvbi1jYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLXJvd1wiIHN0eWxlPVwid2lkdGg6NDAlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLXBhZ2VfX3NrZWxldG9uLXJvd1wiIHN0eWxlPVwid2lkdGg6MjUlXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgPC9tYWluPlxuXG4gICAgPC9kaXY+XG4gIH1cblxuPC9kaXY+XG5cbjxhcHAtc2JkLWNhbmNlbC1kaWFsb2dcbiAgW3Zpc2libGVdPVwiY2FuY2VsRGlhbG9nT3BlbigpICYmIHByb2R1Y3QoKSA9PT0gJ2ZsaWdodCdcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgW3BuckluZm9dPVwiY2FuY2VsUG5ySW5mbygpXCJcbiAgW2Jvb2tpbmdJbmZvXT1cImJvb2tpbmdEYXRhKClcIlxuICAoY2xvc2VkKT1cImNhbmNlbERpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4gIChjb25maXJtZWQpPVwiYm9va2luZ1N0YXR1cy5zZXQoJ2lkbGUnKTsgYm9va2luZ0RhdGEuc2V0KG51bGwpXCJcbi8+XG5cbjxhbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uXG4gICpuZ0lmPVwiY2FuY2VsRGlhbG9nT3BlbigpICYmIHByb2R1Y3QoKSA9PT0gJ2hvdGVsJ1wiXG4gIFtzZWxlY3RlZEhvdGVsQm9va2luZ109XCJib29raW5nRGF0YSgpXCJcbiAgKGNsb3NlZCk9XCJjYW5jZWxEaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuICAoY2FuY2VsbGF0aW9uU3VjY2Vzcyk9XCJib29raW5nU3RhdHVzLnNldCgnaWRsZScpOyBib29raW5nRGF0YS5zZXQobnVsbClcIlxuLz5cblxuPGFwcC1zYmQtYWN0aW9uLWRpYWxvZ1xuICBbdmlzaWJsZV09XCJhY3Rpb25EaWFsb2dPcGVuKClcIlxuICBbYm9va2luZ0lkXT1cImJvb2tpbmdJZCgpXCJcbiAgW3Byb2R1Y3RdPVwicHJvZHVjdCgpXCJcbiAgW2FjdGlvbnNdPVwiYXZhaWxhYmxlQWN0aW9ucygpXCJcbiAgW2luaXRpYWxLZXldPVwic2VsZWN0ZWRBY3Rpb25LZXkoKVwiXG4gIFtwcmVsb2FkZWREYXRhXT1cImJvb2tpbmdEYXRhKClcIlxuICAoY2xvc2VkKT1cImFjdGlvbkRpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4vPlxuXG48YXBwLXNiZC1hZGQtbm90ZS1kaWFsb2dcbiAgW3Zpc2libGVdPVwiYWRkTm90ZURpYWxvZ09wZW4oKVwiXG4gIFtib29raW5nSWRdPVwiYm9va2luZ0lkKClcIlxuICBbcHJvZHVjdF09XCJwcm9kdWN0KClcIlxuICAoY2xvc2VkKT1cImFkZE5vdGVEaWFsb2dPcGVuLnNldChmYWxzZSlcIlxuLz5cblxuPGFwcC1zYmQtcmVpc3N1ZS1kaWFsb2dcbiAgW3Zpc2libGVdPVwicmVpc3N1ZURpYWxvZ09wZW4oKVwiXG4gIFtib29raW5nSWRdPVwiYm9va2luZ0lkKClcIlxuICBbYm9va2luZ0RhdGFdPVwiYm9va2luZ0RhdGEoKVwiXG4gIChjbG9zZWQpPVwicmVpc3N1ZURpYWxvZ09wZW4uc2V0KGZhbHNlKVwiXG4vPlxuIl19