@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1317-d → 1.5.1317-e

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 (62) hide show
  1. package/assets/i18n/en.json +5 -1
  2. package/assets/i18n/es.json +6 -2
  3. package/assets/styles/main.min.css +1 -1
  4. package/assets/styles/main.min.css.map +1 -1
  5. package/assets/styles/micro.min.css +1 -0
  6. package/assets/styles/micro.min.css.map +1 -0
  7. package/esm2022/assets/i18n/en.json +5 -1
  8. package/esm2022/assets/i18n/es.json +6 -2
  9. package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +2 -2
  10. package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +9 -4
  11. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +13 -8
  12. package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +3 -3
  13. package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +1 -1
  14. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +2 -2
  15. package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +2 -2
  16. package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +4 -2
  17. package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +177 -91
  18. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +2 -2
  19. package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +3 -2
  20. package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +2 -2
  21. package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +2 -2
  22. package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +2 -2
  23. package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +30 -9
  24. package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +1 -1
  25. package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +1 -1
  26. package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +5 -7
  27. package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +66 -8
  28. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.mjs +5 -5
  29. package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +11 -17
  30. package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +33 -15
  31. package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +6 -2
  32. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +6 -3
  33. package/esm2022/lib/utils/formControl.mjs +6 -4
  34. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +357 -170
  35. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  36. package/lib/components/bmb-dropdown/bmb-dropdown.component.d.ts +3 -2
  37. package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +39 -20
  38. package/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.d.ts +3 -2
  39. package/lib/components/bmb-progress-bar/bmb-progress-bar.component.d.ts +8 -2
  40. package/lib/components/bmb-tables/bmb-tables.component.d.ts +8 -1
  41. package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +1 -2
  42. package/lib/components/bmb-value-counter/bmb-value-counter.component.d.ts +10 -4
  43. package/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.d.ts +2 -1
  44. package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.d.ts +2 -1
  45. package/lib/utils/formControl.d.ts +2 -2
  46. package/package.json +4 -4
  47. package/esm2022/lib/services/calendar.service.mjs +0 -51
  48. package/esm2022/lib/services/index.mjs +0 -3
  49. package/esm2022/lib/services/native-modal.service.mjs +0 -60
  50. package/esm2022/lib/services/notification.service.mjs +0 -84
  51. package/esm2022/lib/services/projection.service.mjs +0 -49
  52. package/esm2022/lib/services/tabs.service.mjs +0 -30
  53. package/esm2022/lib/services/theme.service.mjs +0 -30
  54. package/esm2022/lib/services/toast.service.mjs +0 -24
  55. package/lib/services/calendar.service.d.ts +0 -15
  56. package/lib/services/index.d.ts +0 -2
  57. package/lib/services/native-modal.service.d.ts +0 -18
  58. package/lib/services/notification.service.d.ts +0 -20
  59. package/lib/services/projection.service.d.ts +0 -31
  60. package/lib/services/tabs.service.d.ts +0 -13
  61. package/lib/services/theme.service.d.ts +0 -11
  62. package/lib/services/toast.service.d.ts +0 -9
@@ -147,7 +147,7 @@ export class BmbAccountStatementComponent {
147
147
  }
148
148
  }
149
149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbAccountStatementComponent, deps: [{ token: i1.BmbNativeModalService }], target: i0.ɵɵFactoryTarget.Component }); }
150
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbAccountStatementComponent, isStandalone: true, selector: "bmb-account-statement", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, progressCircleTitle: { classPropertyName: "progressCircleTitle", publicName: "progressCircleTitle", isSignal: true, isRequired: false, transformFunction: null }, labelPrimary: { classPropertyName: "labelPrimary", publicName: "labelPrimary", isSignal: true, isRequired: false, transformFunction: null }, labelSecondary: { classPropertyName: "labelSecondary", publicName: "labelSecondary", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, counter: { classPropertyName: "counter", publicName: "counter", isSignal: true, isRequired: false, transformFunction: null }, progressTitle: { classPropertyName: "progressTitle", publicName: "progressTitle", isSignal: true, isRequired: false, transformFunction: null }, formatDates: { classPropertyName: "formatDates", publicName: "formatDates", isSignal: true, isRequired: false, transformFunction: null }, paymentDeadline: { classPropertyName: "paymentDeadline", publicName: "paymentDeadline", isSignal: true, isRequired: false, transformFunction: null }, cutOffDate: { classPropertyName: "cutOffDate", publicName: "cutOffDate", isSignal: true, isRequired: false, transformFunction: null }, paymentDeadlineLabel: { classPropertyName: "paymentDeadlineLabel", publicName: "paymentDeadlineLabel", isSignal: true, isRequired: false, transformFunction: null }, cutOffDateLabel: { classPropertyName: "cutOffDateLabel", publicName: "cutOffDateLabel", isSignal: true, isRequired: false, transformFunction: null }, payButtonLabel: { classPropertyName: "payButtonLabel", publicName: "payButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, backButtonLabel: { classPropertyName: "backButtonLabel", publicName: "backButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, modalTitle: { classPropertyName: "modalTitle", publicName: "modalTitle", isSignal: true, isRequired: false, transformFunction: null }, modalSubtitle: { classPropertyName: "modalSubtitle", publicName: "modalSubtitle", isSignal: true, isRequired: false, transformFunction: null }, modalRestLabel: { classPropertyName: "modalRestLabel", publicName: "modalRestLabel", isSignal: true, isRequired: false, transformFunction: null }, modalOtherAmountLabel: { classPropertyName: "modalOtherAmountLabel", publicName: "modalOtherAmountLabel", isSignal: true, isRequired: false, transformFunction: null }, modalPrimaryButtonLabel: { classPropertyName: "modalPrimaryButtonLabel", publicName: "modalPrimaryButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeEvent: "closeEvent", backEvent: "backEvent", payEvent: "payEvent" }, viewQueries: [{ propertyName: "modalTemplate", first: true, predicate: ["modalTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"bmb_account-statement\">\n <bmb-inner-header\n (onHandleClose)=\"handleClose($event)\"\n [title]=\"title() || ('account_statement.title' | translate)\"\n [showSearch]=\"false\"\n [showClose]=\"true\"\n />\n <main class=\"bmb_account-statement-content\">\n <div class=\"bmb_account-statement-content-balance\">\n <bmb-balance-overview\n [progressCircleTitle]=\"progressCircleTitle()\"\n [labelPrimary]=\"\n labelPrimary() || ('account_statement.label_primary' | translate)\n \"\n [labelSecondary]=\"\n labelSecondary() || ('account_statement.label_secondary' | translate)\n \"\n [progressCircleValue]=\"getFormattedAmount(totalCount() - counter())\"\n [valuePrimary]=\"getFormattedAmount(totalCount())\"\n [valueSecondary]=\"getFormattedAmount(counter())\"\n [progressCirclePercent]=\"getProgressPercent()\"\n />\n </div>\n <bmb-card>\n <bmb-card-content padding=\"none\">\n <bmb-progress-bar\n appearance=\"info\"\n type=\"container\"\n [counter]=\"counter()\"\n [totalCount]=\"totalCount()\"\n [title]=\"\n progressTitle() || ('account_statement.progress_title' | translate)\n \"\n />\n </bmb-card-content>\n </bmb-card>\n <bmb-card>\n <bmb-card-content>\n <p class=\"bmb_account-statement-content-date\">\n <span>{{ cutOffDateLabel() }}</span>\n <span>{{ getFormattedDate(cutOffDate()) }}</span>\n </p>\n <bmb-divider />\n <p class=\"bmb_account-statement-content-date\">\n <span>{{ paymentDeadlineLabel() }}</span>\n <span>{{ getFormattedDate(paymentDeadline()) }}</span>\n </p>\n </bmb-card-content>\n </bmb-card>\n </main>\n <footer class=\"bmb_account-statement-footer\">\n <button\n bmbButton\n size=\"large\"\n appearance=\"secondary-outlined\"\n (click)=\"handleBack($event)\"\n type=\"button\"\n >\n {{ backButtonLabel() }}\n </button>\n <button (click)=\"handlePay()\" bmbButton size=\"large\" type=\"button\">\n {{ payButtonLabel() }}\n </button>\n </footer>\n</div>\n\n<ng-template #modalTemplate>\n <section class=\"bmb_account-statement-modal\">\n <form [formGroup]=\"amountForm\" (ngSubmit)=\"handleSubmit()\">\n <bmb-progress-bar\n appearance=\"info\"\n type=\"container\"\n [counter]=\"counter()\"\n [totalCount]=\"totalCount()\"\n [title]=\"\n progressTitle() || ('account_statement.progress_title' | translate)\n \"\n />\n <bmb-divider />\n <label\n class=\"bmb_account-statement-modal-label\"\n bmbLayout\n alignItems=\"center\"\n [dynamicCols]=\"true\"\n >\n <bmb-radial\n id=\"modalRestInput\"\n name=\"modalAmount\"\n [checked]=\"true\"\n (change)=\"handleActiveCustomAmount($event)\"\n value=\"modalRestInput\"\n />\n <span bmbLayoutItem [colGrow]=\"1\">\n {{ modalRestLabel() }}\n <br />\n {{ getFormattedAmount(totalCount() - counter()) }}\n </span>\n </label>\n <bmb-divider />\n <label\n class=\"bmb_account-statement-modal-label\"\n bmbLayout\n alignItems=\"center\"\n [dynamicCols]=\"true\"\n >\n <bmb-radial\n id=\"modalOtherAmountInput\"\n name=\"modalAmount\"\n (change)=\"handleActiveCustomAmount($event)\"\n value=\"modalOtherAmountInput\"\n />\n <span bmbLayoutItem [colGrow]=\"1\">\n {{ modalOtherAmountLabel() }}\n </span>\n </label>\n @if (isEnableCustomAmount) {\n <bmb-input\n type=\"number\"\n [max]=\"totalCount() - counter()\"\n [min]=\"1\"\n pattern=\"\\d*\"\n [errorMessage]=\"\n errorMessage() || ('account_statement.error_message' | translate)\n \"\n [isRequired]=\"true\"\n [control]=\"getFormControl('amount')\"\n [showError]=\"showErrors['amount']\"\n />\n }\n <footer class=\"bmb_account-statement-footer\">\n <button type=\"submit\" bmbButton size=\"large\">\n {{ modalPrimaryButtonLabel() }}\n </button>\n </footer>\n </form>\n </section>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_account-statement{height:100dvh;display:flex;flex-flow:column}.bmb_account-statement-content{flex:1;overflow:auto}.bmb_account-statement-content-balance{max-width:18.75rem;margin:var(--bmb-spacing-xl) auto}.bmb_account-statement-content-date{text-transform:capitalize;display:flex;justify-content:space-between;margin:0}.bmb_account-statement-footer{display:flex;gap:var(--bmb-spacing-m);padding:var(--bmb-spacing-m)}.bmb_account-statement-modal{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_account-statement-modal .bmb_progress-bar-container-main{padding:0}[data-theme=dark] .bmb_account-statement-modal,.storybook-dark-theme .bmb_account-statement-modal{color:RGBA(var(--color-charade-50))}\n"], dependencies: [{ kind: "component", type: BmbBalanceOverviewComponent, selector: "bmb-balance-overview", inputs: ["progressCirclePercent", "progressCircleValue", "showProgressCircleValue", "progressCircleTitle", "showProgressCircleTitle", "showProgressCircleBackground", "labelPrimary", "valuePrimary", "labelSecondary", "valueSecondary"] }, { kind: "component", type: BmbCardComponent, selector: "bmb-card", inputs: ["borderRadius", "margin", "type", "state", "boxShadowStyle", "borderColor", "alternative"] }, { kind: "component", type: BmbCardContentComponent, selector: "bmb-card-content", inputs: ["padding", "colorBackground", "setBorderRadius"] }, { kind: "component", type: BmbProgressBarComponent, selector: "bmb-progress-bar", inputs: ["type", "totalCount", "counter", "title", "appearance", "textLink", "href", "target", "textFormat"] }, { kind: "component", type: BmbDividerComponent, selector: "bmb-divider", inputs: ["type"] }, { kind: "directive", type: BmbButtonDirective, selector: "[bmbButton]", inputs: ["icon", "iconSize", "position", "case", "appearance", "size", "isToggleActive", "enableButtonToggle", "isRounded", "isMobile", "iconAlt"] }, { kind: "component", type: BmbRadialComponent, selector: "bmb-radial", inputs: ["id", "checked", "disabled", "value", "name", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "required", "errorMessage", "helperMessage", "showError", "control", "inputId"], outputs: ["showErrorChange", "controlChange", "inputIdChange", "change", "onKeyDown"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems", "isContainerQuery"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "size", "max", "min", "id", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: BmbInnerHeaderComponent, selector: "bmb-inner-header", inputs: ["title", "placeholderSearch", "subTitle", "trailingIconPrimary", "trailingIconSecondary", "disableTrailingIconPrimary", "disableTrailingIconSecondary", "showClose", "showReturn", "showSearch"], outputs: ["onHandleTrailingPrimary", "onHandleTrailingSecondary", "onHandleBack", "onHandleClose", "searchData"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbAccountStatementComponent, isStandalone: true, selector: "bmb-account-statement", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, progressCircleTitle: { classPropertyName: "progressCircleTitle", publicName: "progressCircleTitle", isSignal: true, isRequired: false, transformFunction: null }, labelPrimary: { classPropertyName: "labelPrimary", publicName: "labelPrimary", isSignal: true, isRequired: false, transformFunction: null }, labelSecondary: { classPropertyName: "labelSecondary", publicName: "labelSecondary", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, counter: { classPropertyName: "counter", publicName: "counter", isSignal: true, isRequired: false, transformFunction: null }, progressTitle: { classPropertyName: "progressTitle", publicName: "progressTitle", isSignal: true, isRequired: false, transformFunction: null }, formatDates: { classPropertyName: "formatDates", publicName: "formatDates", isSignal: true, isRequired: false, transformFunction: null }, paymentDeadline: { classPropertyName: "paymentDeadline", publicName: "paymentDeadline", isSignal: true, isRequired: false, transformFunction: null }, cutOffDate: { classPropertyName: "cutOffDate", publicName: "cutOffDate", isSignal: true, isRequired: false, transformFunction: null }, paymentDeadlineLabel: { classPropertyName: "paymentDeadlineLabel", publicName: "paymentDeadlineLabel", isSignal: true, isRequired: false, transformFunction: null }, cutOffDateLabel: { classPropertyName: "cutOffDateLabel", publicName: "cutOffDateLabel", isSignal: true, isRequired: false, transformFunction: null }, payButtonLabel: { classPropertyName: "payButtonLabel", publicName: "payButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, backButtonLabel: { classPropertyName: "backButtonLabel", publicName: "backButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, modalTitle: { classPropertyName: "modalTitle", publicName: "modalTitle", isSignal: true, isRequired: false, transformFunction: null }, modalSubtitle: { classPropertyName: "modalSubtitle", publicName: "modalSubtitle", isSignal: true, isRequired: false, transformFunction: null }, modalRestLabel: { classPropertyName: "modalRestLabel", publicName: "modalRestLabel", isSignal: true, isRequired: false, transformFunction: null }, modalOtherAmountLabel: { classPropertyName: "modalOtherAmountLabel", publicName: "modalOtherAmountLabel", isSignal: true, isRequired: false, transformFunction: null }, modalPrimaryButtonLabel: { classPropertyName: "modalPrimaryButtonLabel", publicName: "modalPrimaryButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeEvent: "closeEvent", backEvent: "backEvent", payEvent: "payEvent" }, viewQueries: [{ propertyName: "modalTemplate", first: true, predicate: ["modalTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"bmb_account-statement\">\n <bmb-inner-header\n (onHandleClose)=\"handleClose($event)\"\n [title]=\"title() || ('account_statement.title' | translate)\"\n [showSearch]=\"false\"\n [showClose]=\"true\"\n />\n <main class=\"bmb_account-statement-content\">\n <div class=\"bmb_account-statement-content-balance\">\n <bmb-balance-overview\n [progressCircleTitle]=\"progressCircleTitle()\"\n [labelPrimary]=\"\n labelPrimary() || ('account_statement.label_primary' | translate)\n \"\n [labelSecondary]=\"\n labelSecondary() || ('account_statement.label_secondary' | translate)\n \"\n [progressCircleValue]=\"getFormattedAmount(totalCount() - counter())\"\n [valuePrimary]=\"getFormattedAmount(totalCount())\"\n [valueSecondary]=\"getFormattedAmount(counter())\"\n [progressCirclePercent]=\"getProgressPercent()\"\n />\n </div>\n <bmb-card>\n <bmb-card-content padding=\"none\">\n <bmb-progress-bar\n appearance=\"info\"\n type=\"container\"\n [counter]=\"counter()\"\n [totalCount]=\"totalCount()\"\n [title]=\"\n progressTitle() || ('account_statement.progress_title' | translate)\n \"\n />\n </bmb-card-content>\n </bmb-card>\n <bmb-card>\n <bmb-card-content>\n <p class=\"bmb_account-statement-content-date\">\n <span>{{ cutOffDateLabel() }}</span>\n <span>{{ getFormattedDate(cutOffDate()) }}</span>\n </p>\n <bmb-divider />\n <p class=\"bmb_account-statement-content-date\">\n <span>{{ paymentDeadlineLabel() }}</span>\n <span>{{ getFormattedDate(paymentDeadline()) }}</span>\n </p>\n </bmb-card-content>\n </bmb-card>\n </main>\n <footer class=\"bmb_account-statement-footer\">\n <button\n bmbButton\n size=\"large\"\n appearance=\"secondary-outlined\"\n (click)=\"handleBack($event)\"\n type=\"button\"\n >\n {{ backButtonLabel() }}\n </button>\n <button (click)=\"handlePay()\" bmbButton size=\"large\" type=\"button\">\n {{ payButtonLabel() }}\n </button>\n </footer>\n</div>\n\n<ng-template #modalTemplate>\n <section class=\"bmb_account-statement-modal\">\n <form [formGroup]=\"amountForm\" (ngSubmit)=\"handleSubmit()\">\n <bmb-progress-bar\n appearance=\"info\"\n type=\"container\"\n [counter]=\"counter()\"\n [totalCount]=\"totalCount()\"\n [title]=\"\n progressTitle() || ('account_statement.progress_title' | translate)\n \"\n />\n <bmb-divider />\n <label\n class=\"bmb_account-statement-modal-label\"\n bmbLayout\n alignItems=\"center\"\n [dynamicCols]=\"true\"\n >\n <bmb-radial\n id=\"modalRestInput\"\n name=\"modalAmount\"\n [checked]=\"true\"\n (change)=\"handleActiveCustomAmount($event)\"\n value=\"modalRestInput\"\n />\n <span bmbLayoutItem [colGrow]=\"1\">\n {{ modalRestLabel() }}\n <br />\n {{ getFormattedAmount(totalCount() - counter()) }}\n </span>\n </label>\n <bmb-divider />\n <label\n class=\"bmb_account-statement-modal-label\"\n bmbLayout\n alignItems=\"center\"\n [dynamicCols]=\"true\"\n >\n <bmb-radial\n id=\"modalOtherAmountInput\"\n name=\"modalAmount\"\n (change)=\"handleActiveCustomAmount($event)\"\n value=\"modalOtherAmountInput\"\n />\n <span bmbLayoutItem [colGrow]=\"1\">\n {{ modalOtherAmountLabel() }}\n </span>\n </label>\n @if (isEnableCustomAmount) {\n <bmb-input\n type=\"number\"\n [max]=\"totalCount() - counter()\"\n [min]=\"1\"\n pattern=\"\\d*\"\n [errorMessage]=\"\n errorMessage() || ('account_statement.error_message' | translate)\n \"\n [isRequired]=\"true\"\n [control]=\"getFormControl('amount')\"\n [showError]=\"showErrors['amount']\"\n />\n }\n <footer class=\"bmb_account-statement-footer\">\n <button type=\"submit\" bmbButton size=\"large\">\n {{ modalPrimaryButtonLabel() }}\n </button>\n </footer>\n </form>\n </section>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_account-statement{height:100dvh;display:flex;flex-flow:column}.bmb_account-statement-content{flex:1;overflow:auto}.bmb_account-statement-content-balance{max-width:18.75rem;margin:var(--bmb-spacing-xl) auto}.bmb_account-statement-content-date{text-transform:capitalize;display:flex;justify-content:space-between;margin:0}.bmb_account-statement-footer{display:flex;gap:var(--bmb-spacing-m);padding:var(--bmb-spacing-m)}.bmb_account-statement-modal{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_account-statement-modal .bmb_progress-bar-container-main{padding:0}[data-theme=dark] .bmb_account-statement-modal,.storybook-dark-theme .bmb_account-statement-modal{color:RGBA(var(--color-charade-50))}\n"], dependencies: [{ kind: "component", type: BmbBalanceOverviewComponent, selector: "bmb-balance-overview", inputs: ["progressCirclePercent", "progressCircleValue", "showProgressCircleValue", "progressCircleTitle", "showProgressCircleTitle", "showProgressCircleBackground", "labelPrimary", "valuePrimary", "labelSecondary", "valueSecondary"] }, { kind: "component", type: BmbCardComponent, selector: "bmb-card", inputs: ["borderRadius", "margin", "type", "state", "boxShadowStyle", "borderColor", "alternative"] }, { kind: "component", type: BmbCardContentComponent, selector: "bmb-card-content", inputs: ["padding", "colorBackground", "setBorderRadius"] }, { kind: "component", type: BmbProgressBarComponent, selector: "bmb-progress-bar", inputs: ["type", "totalCount", "counter", "title", "appearance", "textLink", "href", "target", "textFormat", "isContainer", "avatarIcon", "actionIcon", "textFormatSeparator", "showStatusIcon"], outputs: ["actionClick"] }, { kind: "component", type: BmbDividerComponent, selector: "bmb-divider", inputs: ["type"] }, { kind: "directive", type: BmbButtonDirective, selector: "[bmbButton]", inputs: ["icon", "iconSize", "position", "case", "appearance", "size", "isToggleActive", "enableButtonToggle", "isRounded", "isMobile", "iconAlt"] }, { kind: "component", type: BmbRadialComponent, selector: "bmb-radial", inputs: ["id", "checked", "disabled", "value", "name", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "required", "errorMessage", "helperMessage", "showError", "control", "inputId"], outputs: ["showErrorChange", "controlChange", "inputIdChange", "change", "onKeyDown"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems", "isContainerQuery"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }, { kind: "component", type: BmbInputComponent, selector: "bmb-input", inputs: ["label", "type", "placeholder", "icon", "appearance", "errorMessage", "helperMessage", "disabled", "isRequired", "name", "spellcheck", "jsonFormat", "heightTextArea", "maxlength", "minlength", "pattern", "size", "max", "min", "id", "value", "autocomplete", "tooltip", "rows", "showMaxTextLength", "additionalAction", "tooltipPosition", "isClearable", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange", "isFocus", "isBlur", "onChange", "onKeyDown"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: BmbInnerHeaderComponent, selector: "bmb-inner-header", inputs: ["title", "placeholderSearch", "subTitle", "trailingIconPrimary", "trailingIconSecondary", "disableTrailingIconPrimary", "disableTrailingIconSecondary", "showClose", "showReturn", "showSearch"], outputs: ["onHandleTrailingPrimary", "onHandleTrailingSecondary", "onHandleBack", "onHandleClose", "searchData"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
151
151
  }
152
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbAccountStatementComponent, decorators: [{
153
153
  type: Component,
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
171
171
  type: ViewChild,
172
172
  args: ['modalTemplate', { read: TemplateRef }]
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItYWNjb3VudC1zdGF0ZW1lbnQvYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItYWNjb3VudC1zdGF0ZW1lbnQvYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEdBQ3hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVE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dUJBQXVCLHdIQUN2Qix1QkFBdUIsMktBQ3ZCLG1CQUFtQiwwRUFDbkIsa0JBQWtCLDRNQUNsQixrQkFBa0Isa1dBQ2xCLGtCQUFrQixtSkFDbEIsc0JBQXNCLGlKQUN0QixpQkFBaUIsdWlCQUNqQixtQkFBbUIscWJBQ25CLHVCQUF1Qix5WEFDdkIsWUFBWSwwQkFDWixhQUFhOzs0RkFPSiw0QkFBNEI7a0JBeEJ4QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsMkJBQTJCO3dCQUMzQixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixhQUFhO3FCQUNkLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07MEZBNkIvQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbWJCYWxhbmNlT3ZlcnZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9ibWItYmFsYW5jZS1vdmVydmlldy9ibWItYmFsYW5jZS1vdmVydmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQm1iQ2FyZENvbXBvbmVudCxcbiAgQm1iQ2FyZENvbnRlbnRDb21wb25lbnQsXG59IGZyb20gJy4uL2JtYi1jYXJkL2JtYi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1wcm9ncmVzcy1iYXIvYm1iLXByb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBCbWJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWRpdmlkZXIvYm1iLWRpdmlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWJ1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYlJhZGlhbENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1yYWRpYWwvYm1iLXJhZGlhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY3VycmVuY3lGb3JtYXQgfSBmcm9tICcuLi8uLi91dGlscy9jdXJyZW5jeUZvcm1hdCc7XG5pbXBvcnQgeyBCbWJMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLWxheW91dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iSW5uZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5uZXItaGVhZGVyL2JtYi1pbm5lci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYk5hdGl2ZU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL25hdGl2ZS1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElCbWJOYXRpdmVNb2RhbCB9IGZyb20gJy4uL2JtYi1tb2RhbC9ibWItbW9kYWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLWFjY291bnQtc3RhdGVtZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEJtYkJhbGFuY2VPdmVydmlld0NvbXBvbmVudCxcbiAgICBCbWJDYXJkQ29tcG9uZW50LFxuICAgIEJtYkNhcmRDb250ZW50Q29tcG9uZW50LFxuICAgIEJtYlByb2dyZXNzQmFyQ29tcG9uZW50LFxuICAgIEJtYkRpdmlkZXJDb21wb25lbnQsXG4gICAgQm1iQnV0dG9uRGlyZWN0aXZlLFxuICAgIEJtYlJhZGlhbENvbXBvbmVudCxcbiAgICBCbWJMYXlvdXREaXJlY3RpdmUsXG4gICAgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSxcbiAgICBCbWJJbnB1dENvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJtYklubmVySGVhZGVyQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1hY2NvdW50LXN0YXRlbWVudC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJBY2NvdW50U3RhdGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHByb2dyZXNzQ2lyY2xlVGl0bGUgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBsYWJlbFByaW1hcnkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGxhYmVsU2Vjb25kYXJ5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICB0b3RhbENvdW50ID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgY291bnRlciA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHByb2dyZXNzVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGZvcm1hdERhdGVzID0gaW5wdXQ8c3RyaW5nPigneXl5eS1NTS1kZCcpO1xuICBwYXltZW50RGVhZGxpbmUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGN1dE9mZkRhdGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHBheW1lbnREZWFkbGluZUxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBjdXRPZmZEYXRlTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHBheUJ1dHRvbkxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBiYWNrQnV0dG9uTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsU3VidGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsUmVzdExhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBtb2RhbE90aGVyQW1vdW50TGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsUHJpbWFyeUJ1dHRvbkxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgY2xvc2VFdmVudCA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuICBiYWNrRXZlbnQgPSBvdXRwdXQ8TW91c2VFdmVudD4oKTtcbiAgcGF5RXZlbnQgPSBvdXRwdXQ8bnVtYmVyPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIG1vZGFsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIG5ld01vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGN1c3RvbUFtb3VudDogbnVtYmVyID0gMDtcbiAgaXNFbmFibGVDdXN0b21BbW91bnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWF4QW1vdW50OiBudW1iZXIgPSAwO1xuICBtb2RhbElEID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGFtb3VudEZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGFtb3VudDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgfSk7XG4gIHNob3dFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJtYk5hdGl2ZU1vZGFsU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1heEFtb3VudCA9IHRoaXMudG90YWxDb3VudCgpIC0gdGhpcy5jb3VudGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kYWxUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5uZXdNb2RhbCA9IHRoaXMubW9kYWxUZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbG9zZShldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChldmVudCB8fCBuZXcgTW91c2VFdmVudCgnY2xpY2snKSk7XG4gIH1cblxuICBoYW5kbGVCYWNrKGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIHRoaXMuYmFja0V2ZW50LmVtaXQoZXZlbnQgfHwgbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuICB9XG5cbiAgaGFuZGxlUGF5KCkge1xuICAgIGNvbnN0IGRhdGE6IElCbWJOYXRpdmVNb2RhbCA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLm1vZGFsVGl0bGUoKSxcbiAgICAgIHN1YnRpdGxlOiB0aGlzLm1vZGFsU3VidGl0bGUoKSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMubmV3TW9kYWwsXG4gICAgICBzaXplOiAnbGFyZ2UnLFxuICAgIH07XG5cbiAgICB0aGlzLm1vZGFsSUQuc2V0KHRoaXMubW9kYWxTZXJ2aWNlLm9wZW5Nb2RhbChkYXRhKSk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWREYXRlKGRhdGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZvcm1hdERhdGUgPSBEYXRlVGltZS5mcm9tRm9ybWF0KGRhdGUsIHRoaXMuZm9ybWF0RGF0ZXMoKSk7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUudG9Mb2NhbGVTdHJpbmcoe1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZEFtb3VudChhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGN1cnJlbmN5Rm9ybWF0KGFtb3VudCk7XG4gIH1cblxuICBoYW5kbGVBY3RpdmVDdXN0b21BbW91bnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXNFbmFibGVDdXN0b21BbW91bnQgPSBldmVudC52YWx1ZSA9PT0gJ21vZGFsT3RoZXJBbW91bnRJbnB1dCc7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLmlzRW5hYmxlQ3VzdG9tQW1vdW50KSB7XG4gICAgICB0aGlzLnBheUV2ZW50LmVtaXQodGhpcy50b3RhbENvdW50KCkgLSB0aGlzLmNvdW50ZXIoKSk7XG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5jbG9zZU1vZGFsKHRoaXMubW9kYWxJRCgpIGFzIHN0cmluZyk7XG4gICAgICB0aGlzLm1vZGFsSUQuc2V0KG51bGwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hbW91bnRGb3JtLnZhbGlkKSB7XG4gICAgICBjb25zdCBhbW91bnQgPSBOdW1iZXIodGhpcy5hbW91bnRGb3JtLmNvbnRyb2xzWydhbW91bnQnXS52YWx1ZSk7XG4gICAgICBpZiAoYW1vdW50ID4gMCAmJiBhbW91bnQgPD0gdGhpcy5tYXhBbW91bnQpIHtcbiAgICAgICAgdGhpcy5wYXlFdmVudC5lbWl0KGFtb3VudCk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwodGhpcy5tb2RhbElEKCkgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5tb2RhbElELnNldChudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yc1snYW1vdW50J10gPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dFcnJvcnNbJ2Ftb3VudCddID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuYW1vdW50Rm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICB1cGRhdGVFcnJvclN0YXRlKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuYW1vdW50Rm9ybS5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmFtb3VudEZvcm0uZ2V0KGZpZWxkKTtcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzW2ZpZWxkXSA9XG4gICAgICAgICAgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9ncmVzc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKDEwMCAqIHRoaXMuY291bnRlcigpKSAvIHRoaXMudG90YWxDb3VudCgpO1xuICB9XG5cbiAgY3VzdG9tSGFuZGxlQ2xpY2soKSB7XG4gICAgY29uc29sZS5sb2coJ2N1c3RvbUhhbmRsZUNsaWNrJyk7XG5cbiAgICBpZiAoIXRoaXMuaXNFbmFibGVDdXN0b21BbW91bnQpIHtcbiAgICAgIHRoaXMucGF5RXZlbnQuZW1pdCh0aGlzLnRvdGFsQ291bnQoKSAtIHRoaXMuY291bnRlcigpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYW1vdW50Rm9ybS52YWxpZCkge1xuICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKHRoaXMuYW1vdW50Rm9ybS5jb250cm9sc1snYW1vdW50J10udmFsdWUpO1xuICAgICAgaWYgKGFtb3VudCA+IDAgJiYgYW1vdW50IDw9IHRoaXMubWF4QW1vdW50KSB7XG4gICAgICAgIHRoaXMucGF5RXZlbnQuZW1pdChhbW91bnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzWydhbW91bnQnXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yc1snYW1vdW50J10gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJtYl9hY2NvdW50LXN0YXRlbWVudFwiPlxuICA8Ym1iLWlubmVyLWhlYWRlclxuICAgIChvbkhhbmRsZUNsb3NlKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxuICAgIFt0aXRsZV09XCJ0aXRsZSgpIHx8ICgnYWNjb3VudF9zdGF0ZW1lbnQudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgW3Nob3dTZWFyY2hdPVwiZmFsc2VcIlxuICAgIFtzaG93Q2xvc2VdPVwidHJ1ZVwiXG4gIC8+XG4gIDxtYWluIGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LWNvbnRlbnQtYmFsYW5jZVwiPlxuICAgICAgPGJtYi1iYWxhbmNlLW92ZXJ2aWV3XG4gICAgICAgIFtwcm9ncmVzc0NpcmNsZVRpdGxlXT1cInByb2dyZXNzQ2lyY2xlVGl0bGUoKVwiXG4gICAgICAgIFtsYWJlbFByaW1hcnldPVwiXG4gICAgICAgICAgbGFiZWxQcmltYXJ5KCkgfHwgKCdhY2NvdW50X3N0YXRlbWVudC5sYWJlbF9wcmltYXJ5JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgXCJcbiAgICAgICAgW2xhYmVsU2Vjb25kYXJ5XT1cIlxuICAgICAgICAgIGxhYmVsU2Vjb25kYXJ5KCkgfHwgKCdhY2NvdW50X3N0YXRlbWVudC5sYWJlbF9zZWNvbmRhcnknIHwgdHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICBbcHJvZ3Jlc3NDaXJjbGVWYWx1ZV09XCJnZXRGb3JtYXR0ZWRBbW91bnQodG90YWxDb3VudCgpIC0gY291bnRlcigpKVwiXG4gICAgICAgIFt2YWx1ZVByaW1hcnldPVwiZ2V0Rm9ybWF0dGVkQW1vdW50KHRvdGFsQ291bnQoKSlcIlxuICAgICAgICBbdmFsdWVTZWNvbmRhcnldPVwiZ2V0Rm9ybWF0dGVkQW1vdW50KGNvdW50ZXIoKSlcIlxuICAgICAgICBbcHJvZ3Jlc3NDaXJjbGVQZXJjZW50XT1cImdldFByb2dyZXNzUGVyY2VudCgpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGJtYi1jYXJkPlxuICAgICAgPGJtYi1jYXJkLWNvbnRlbnQgcGFkZGluZz1cIm5vbmVcIj5cbiAgICAgICAgPGJtYi1wcm9ncmVzcy1iYXJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaW5mb1wiXG4gICAgICAgICAgdHlwZT1cImNvbnRhaW5lclwiXG4gICAgICAgICAgW2NvdW50ZXJdPVwiY291bnRlcigpXCJcbiAgICAgICAgICBbdG90YWxDb3VudF09XCJ0b3RhbENvdW50KClcIlxuICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgIHByb2dyZXNzVGl0bGUoKSB8fCAoJ2FjY291bnRfc3RhdGVtZW50LnByb2dyZXNzX3RpdGxlJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgPC9ibWItY2FyZC1jb250ZW50PlxuICAgIDwvYm1iLWNhcmQ+XG4gICAgPGJtYi1jYXJkPlxuICAgICAgPGJtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxwIGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LWNvbnRlbnQtZGF0ZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGN1dE9mZkRhdGVMYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7IGdldEZvcm1hdHRlZERhdGUoY3V0T2ZmRGF0ZSgpKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8Ym1iLWRpdmlkZXIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtY29udGVudC1kYXRlXCI+XG4gICAgICAgICAgPHNwYW4+e3sgcGF5bWVudERlYWRsaW5lTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj57eyBnZXRGb3JtYXR0ZWREYXRlKHBheW1lbnREZWFkbGluZSgpKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9ibWItY2FyZC1jb250ZW50PlxuICAgIDwvYm1iLWNhcmQ+XG4gIDwvbWFpbj5cbiAgPGZvb3RlciBjbGFzcz1cImJtYl9hY2NvdW50LXN0YXRlbWVudC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBibWJCdXR0b25cbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5LW91dGxpbmVkXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVCYWNrKCRldmVudClcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge3sgYmFja0J1dHRvbkxhYmVsKCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQYXkoKVwiIGJtYkJ1dHRvbiBzaXplPVwibGFyZ2VcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICB7eyBwYXlCdXR0b25MYWJlbCgpIH19XG4gICAgPC9idXR0b24+XG4gIDwvZm9vdGVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxUZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtbW9kYWxcIj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFtb3VudEZvcm1cIiAobmdTdWJtaXQpPVwiaGFuZGxlU3VibWl0KClcIj5cbiAgICAgIDxibWItcHJvZ3Jlc3MtYmFyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJpbmZvXCJcbiAgICAgICAgdHlwZT1cImNvbnRhaW5lclwiXG4gICAgICAgIFtjb3VudGVyXT1cImNvdW50ZXIoKVwiXG4gICAgICAgIFt0b3RhbENvdW50XT1cInRvdGFsQ291bnQoKVwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICBwcm9ncmVzc1RpdGxlKCkgfHwgKCdhY2NvdW50X3N0YXRlbWVudC5wcm9ncmVzc190aXRsZScgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgICAgPGJtYi1kaXZpZGVyIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtbW9kYWwtbGFiZWxcIlxuICAgICAgICBibWJMYXlvdXRcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIFtkeW5hbWljQ29sc109XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPGJtYi1yYWRpYWxcbiAgICAgICAgICBpZD1cIm1vZGFsUmVzdElucHV0XCJcbiAgICAgICAgICBuYW1lPVwibW9kYWxBbW91bnRcIlxuICAgICAgICAgIFtjaGVja2VkXT1cInRydWVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQWN0aXZlQ3VzdG9tQW1vdW50KCRldmVudClcIlxuICAgICAgICAgIHZhbHVlPVwibW9kYWxSZXN0SW5wdXRcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBibWJMYXlvdXRJdGVtIFtjb2xHcm93XT1cIjFcIj5cbiAgICAgICAgICB7eyBtb2RhbFJlc3RMYWJlbCgpIH19XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkQW1vdW50KHRvdGFsQ291bnQoKSAtIGNvdW50ZXIoKSkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxibWItZGl2aWRlciAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LW1vZGFsLWxhYmVsXCJcbiAgICAgICAgYm1iTGF5b3V0XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBbZHluYW1pY0NvbHNdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxibWItcmFkaWFsXG4gICAgICAgICAgaWQ9XCJtb2RhbE90aGVyQW1vdW50SW5wdXRcIlxuICAgICAgICAgIG5hbWU9XCJtb2RhbEFtb3VudFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVBY3RpdmVDdXN0b21BbW91bnQoJGV2ZW50KVwiXG4gICAgICAgICAgdmFsdWU9XCJtb2RhbE90aGVyQW1vdW50SW5wdXRcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBibWJMYXlvdXRJdGVtIFtjb2xHcm93XT1cIjFcIj5cbiAgICAgICAgICB7eyBtb2RhbE90aGVyQW1vdW50TGFiZWwoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgICAgQGlmIChpc0VuYWJsZUN1c3RvbUFtb3VudCkge1xuICAgICAgICA8Ym1iLWlucHV0XG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgW21heF09XCJ0b3RhbENvdW50KCkgLSBjb3VudGVyKClcIlxuICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIFtlcnJvck1lc3NhZ2VdPVwiXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UoKSB8fCAoJ2FjY291bnRfc3RhdGVtZW50LmVycm9yX21lc3NhZ2UnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woJ2Ftb3VudCcpXCJcbiAgICAgICAgICBbc2hvd0Vycm9yXT1cInNob3dFcnJvcnNbJ2Ftb3VudCddXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICAgIDxmb290ZXIgY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtZm9vdGVyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGJtYkJ1dHRvbiBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICB7eyBtb2RhbFByaW1hcnlCdXR0b25MYWJlbCgpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9mb3JtPlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItYWNjb3VudC1zdGF0ZW1lbnQvYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItYWNjb3VudC1zdGF0ZW1lbnQvYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEdBQ3hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVE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dUJBQXVCLHdIQUN2Qix1QkFBdUIseVJBQ3ZCLG1CQUFtQiwwRUFDbkIsa0JBQWtCLDRNQUNsQixrQkFBa0Isa1dBQ2xCLGtCQUFrQixtSkFDbEIsc0JBQXNCLGlKQUN0QixpQkFBaUIsdWlCQUNqQixtQkFBbUIscWJBQ25CLHVCQUF1Qix5WEFDdkIsWUFBWSwwQkFDWixhQUFhOzs0RkFPSiw0QkFBNEI7a0JBeEJ4QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsMkJBQTJCO3dCQUMzQixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixhQUFhO3FCQUNkLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07MEZBNkIvQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbWJCYWxhbmNlT3ZlcnZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9ibWItYmFsYW5jZS1vdmVydmlldy9ibWItYmFsYW5jZS1vdmVydmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQm1iQ2FyZENvbXBvbmVudCxcbiAgQm1iQ2FyZENvbnRlbnRDb21wb25lbnQsXG59IGZyb20gJy4uL2JtYi1jYXJkL2JtYi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1wcm9ncmVzcy1iYXIvYm1iLXByb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBCbWJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWRpdmlkZXIvYm1iLWRpdmlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWJ1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYlJhZGlhbENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1yYWRpYWwvYm1iLXJhZGlhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY3VycmVuY3lGb3JtYXQgfSBmcm9tICcuLi8uLi91dGlscy9jdXJyZW5jeUZvcm1hdCc7XG5pbXBvcnQgeyBCbWJMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLWxheW91dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iSW5uZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5uZXItaGVhZGVyL2JtYi1pbm5lci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYk5hdGl2ZU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL25hdGl2ZS1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElCbWJOYXRpdmVNb2RhbCB9IGZyb20gJy4uL2JtYi1tb2RhbC9ibWItbW9kYWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLWFjY291bnQtc3RhdGVtZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEJtYkJhbGFuY2VPdmVydmlld0NvbXBvbmVudCxcbiAgICBCbWJDYXJkQ29tcG9uZW50LFxuICAgIEJtYkNhcmRDb250ZW50Q29tcG9uZW50LFxuICAgIEJtYlByb2dyZXNzQmFyQ29tcG9uZW50LFxuICAgIEJtYkRpdmlkZXJDb21wb25lbnQsXG4gICAgQm1iQnV0dG9uRGlyZWN0aXZlLFxuICAgIEJtYlJhZGlhbENvbXBvbmVudCxcbiAgICBCbWJMYXlvdXREaXJlY3RpdmUsXG4gICAgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSxcbiAgICBCbWJJbnB1dENvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJtYklubmVySGVhZGVyQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWFjY291bnQtc3RhdGVtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1hY2NvdW50LXN0YXRlbWVudC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJBY2NvdW50U3RhdGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHByb2dyZXNzQ2lyY2xlVGl0bGUgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBsYWJlbFByaW1hcnkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGxhYmVsU2Vjb25kYXJ5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICB0b3RhbENvdW50ID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgY291bnRlciA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHByb2dyZXNzVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGZvcm1hdERhdGVzID0gaW5wdXQ8c3RyaW5nPigneXl5eS1NTS1kZCcpO1xuICBwYXltZW50RGVhZGxpbmUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGN1dE9mZkRhdGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHBheW1lbnREZWFkbGluZUxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBjdXRPZmZEYXRlTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHBheUJ1dHRvbkxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBiYWNrQnV0dG9uTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsU3VidGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsUmVzdExhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBtb2RhbE90aGVyQW1vdW50TGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIG1vZGFsUHJpbWFyeUJ1dHRvbkxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgY2xvc2VFdmVudCA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuICBiYWNrRXZlbnQgPSBvdXRwdXQ8TW91c2VFdmVudD4oKTtcbiAgcGF5RXZlbnQgPSBvdXRwdXQ8bnVtYmVyPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIG1vZGFsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIG5ld01vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGN1c3RvbUFtb3VudDogbnVtYmVyID0gMDtcbiAgaXNFbmFibGVDdXN0b21BbW91bnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWF4QW1vdW50OiBudW1iZXIgPSAwO1xuICBtb2RhbElEID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGFtb3VudEZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGFtb3VudDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgfSk7XG4gIHNob3dFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJtYk5hdGl2ZU1vZGFsU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1heEFtb3VudCA9IHRoaXMudG90YWxDb3VudCgpIC0gdGhpcy5jb3VudGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kYWxUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5uZXdNb2RhbCA9IHRoaXMubW9kYWxUZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbG9zZShldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChldmVudCB8fCBuZXcgTW91c2VFdmVudCgnY2xpY2snKSk7XG4gIH1cblxuICBoYW5kbGVCYWNrKGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIHRoaXMuYmFja0V2ZW50LmVtaXQoZXZlbnQgfHwgbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuICB9XG5cbiAgaGFuZGxlUGF5KCkge1xuICAgIGNvbnN0IGRhdGE6IElCbWJOYXRpdmVNb2RhbCA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLm1vZGFsVGl0bGUoKSxcbiAgICAgIHN1YnRpdGxlOiB0aGlzLm1vZGFsU3VidGl0bGUoKSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMubmV3TW9kYWwsXG4gICAgICBzaXplOiAnbGFyZ2UnLFxuICAgIH07XG5cbiAgICB0aGlzLm1vZGFsSUQuc2V0KHRoaXMubW9kYWxTZXJ2aWNlLm9wZW5Nb2RhbChkYXRhKSk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWREYXRlKGRhdGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZvcm1hdERhdGUgPSBEYXRlVGltZS5mcm9tRm9ybWF0KGRhdGUsIHRoaXMuZm9ybWF0RGF0ZXMoKSk7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUudG9Mb2NhbGVTdHJpbmcoe1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZEFtb3VudChhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGN1cnJlbmN5Rm9ybWF0KGFtb3VudCk7XG4gIH1cblxuICBoYW5kbGVBY3RpdmVDdXN0b21BbW91bnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaXNFbmFibGVDdXN0b21BbW91bnQgPSBldmVudC52YWx1ZSA9PT0gJ21vZGFsT3RoZXJBbW91bnRJbnB1dCc7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLmlzRW5hYmxlQ3VzdG9tQW1vdW50KSB7XG4gICAgICB0aGlzLnBheUV2ZW50LmVtaXQodGhpcy50b3RhbENvdW50KCkgLSB0aGlzLmNvdW50ZXIoKSk7XG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5jbG9zZU1vZGFsKHRoaXMubW9kYWxJRCgpIGFzIHN0cmluZyk7XG4gICAgICB0aGlzLm1vZGFsSUQuc2V0KG51bGwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hbW91bnRGb3JtLnZhbGlkKSB7XG4gICAgICBjb25zdCBhbW91bnQgPSBOdW1iZXIodGhpcy5hbW91bnRGb3JtLmNvbnRyb2xzWydhbW91bnQnXS52YWx1ZSk7XG4gICAgICBpZiAoYW1vdW50ID4gMCAmJiBhbW91bnQgPD0gdGhpcy5tYXhBbW91bnQpIHtcbiAgICAgICAgdGhpcy5wYXlFdmVudC5lbWl0KGFtb3VudCk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwodGhpcy5tb2RhbElEKCkgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5tb2RhbElELnNldChudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd0Vycm9yc1snYW1vdW50J10gPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dFcnJvcnNbJ2Ftb3VudCddID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuYW1vdW50Rm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICB1cGRhdGVFcnJvclN0YXRlKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuYW1vdW50Rm9ybS5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmFtb3VudEZvcm0uZ2V0KGZpZWxkKTtcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzW2ZpZWxkXSA9XG4gICAgICAgICAgY29udHJvbC5pbnZhbGlkICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9ncmVzc1BlcmNlbnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKDEwMCAqIHRoaXMuY291bnRlcigpKSAvIHRoaXMudG90YWxDb3VudCgpO1xuICB9XG5cbiAgY3VzdG9tSGFuZGxlQ2xpY2soKSB7XG4gICAgY29uc29sZS5sb2coJ2N1c3RvbUhhbmRsZUNsaWNrJyk7XG5cbiAgICBpZiAoIXRoaXMuaXNFbmFibGVDdXN0b21BbW91bnQpIHtcbiAgICAgIHRoaXMucGF5RXZlbnQuZW1pdCh0aGlzLnRvdGFsQ291bnQoKSAtIHRoaXMuY291bnRlcigpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYW1vdW50Rm9ybS52YWxpZCkge1xuICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKHRoaXMuYW1vdW50Rm9ybS5jb250cm9sc1snYW1vdW50J10udmFsdWUpO1xuICAgICAgaWYgKGFtb3VudCA+IDAgJiYgYW1vdW50IDw9IHRoaXMubWF4QW1vdW50KSB7XG4gICAgICAgIHRoaXMucGF5RXZlbnQuZW1pdChhbW91bnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzWydhbW91bnQnXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yc1snYW1vdW50J10gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJtYl9hY2NvdW50LXN0YXRlbWVudFwiPlxuICA8Ym1iLWlubmVyLWhlYWRlclxuICAgIChvbkhhbmRsZUNsb3NlKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxuICAgIFt0aXRsZV09XCJ0aXRsZSgpIHx8ICgnYWNjb3VudF9zdGF0ZW1lbnQudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgW3Nob3dTZWFyY2hdPVwiZmFsc2VcIlxuICAgIFtzaG93Q2xvc2VdPVwidHJ1ZVwiXG4gIC8+XG4gIDxtYWluIGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LWNvbnRlbnQtYmFsYW5jZVwiPlxuICAgICAgPGJtYi1iYWxhbmNlLW92ZXJ2aWV3XG4gICAgICAgIFtwcm9ncmVzc0NpcmNsZVRpdGxlXT1cInByb2dyZXNzQ2lyY2xlVGl0bGUoKVwiXG4gICAgICAgIFtsYWJlbFByaW1hcnldPVwiXG4gICAgICAgICAgbGFiZWxQcmltYXJ5KCkgfHwgKCdhY2NvdW50X3N0YXRlbWVudC5sYWJlbF9wcmltYXJ5JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgXCJcbiAgICAgICAgW2xhYmVsU2Vjb25kYXJ5XT1cIlxuICAgICAgICAgIGxhYmVsU2Vjb25kYXJ5KCkgfHwgKCdhY2NvdW50X3N0YXRlbWVudC5sYWJlbF9zZWNvbmRhcnknIHwgdHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICBbcHJvZ3Jlc3NDaXJjbGVWYWx1ZV09XCJnZXRGb3JtYXR0ZWRBbW91bnQodG90YWxDb3VudCgpIC0gY291bnRlcigpKVwiXG4gICAgICAgIFt2YWx1ZVByaW1hcnldPVwiZ2V0Rm9ybWF0dGVkQW1vdW50KHRvdGFsQ291bnQoKSlcIlxuICAgICAgICBbdmFsdWVTZWNvbmRhcnldPVwiZ2V0Rm9ybWF0dGVkQW1vdW50KGNvdW50ZXIoKSlcIlxuICAgICAgICBbcHJvZ3Jlc3NDaXJjbGVQZXJjZW50XT1cImdldFByb2dyZXNzUGVyY2VudCgpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGJtYi1jYXJkPlxuICAgICAgPGJtYi1jYXJkLWNvbnRlbnQgcGFkZGluZz1cIm5vbmVcIj5cbiAgICAgICAgPGJtYi1wcm9ncmVzcy1iYXJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaW5mb1wiXG4gICAgICAgICAgdHlwZT1cImNvbnRhaW5lclwiXG4gICAgICAgICAgW2NvdW50ZXJdPVwiY291bnRlcigpXCJcbiAgICAgICAgICBbdG90YWxDb3VudF09XCJ0b3RhbENvdW50KClcIlxuICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgIHByb2dyZXNzVGl0bGUoKSB8fCAoJ2FjY291bnRfc3RhdGVtZW50LnByb2dyZXNzX3RpdGxlJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgPC9ibWItY2FyZC1jb250ZW50PlxuICAgIDwvYm1iLWNhcmQ+XG4gICAgPGJtYi1jYXJkPlxuICAgICAgPGJtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxwIGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LWNvbnRlbnQtZGF0ZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGN1dE9mZkRhdGVMYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7IGdldEZvcm1hdHRlZERhdGUoY3V0T2ZmRGF0ZSgpKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8Ym1iLWRpdmlkZXIgLz5cbiAgICAgICAgPHAgY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtY29udGVudC1kYXRlXCI+XG4gICAgICAgICAgPHNwYW4+e3sgcGF5bWVudERlYWRsaW5lTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj57eyBnZXRGb3JtYXR0ZWREYXRlKHBheW1lbnREZWFkbGluZSgpKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9ibWItY2FyZC1jb250ZW50PlxuICAgIDwvYm1iLWNhcmQ+XG4gIDwvbWFpbj5cbiAgPGZvb3RlciBjbGFzcz1cImJtYl9hY2NvdW50LXN0YXRlbWVudC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBibWJCdXR0b25cbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5LW91dGxpbmVkXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVCYWNrKCRldmVudClcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge3sgYmFja0J1dHRvbkxhYmVsKCkgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVQYXkoKVwiIGJtYkJ1dHRvbiBzaXplPVwibGFyZ2VcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICB7eyBwYXlCdXR0b25MYWJlbCgpIH19XG4gICAgPC9idXR0b24+XG4gIDwvZm9vdGVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxUZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtbW9kYWxcIj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFtb3VudEZvcm1cIiAobmdTdWJtaXQpPVwiaGFuZGxlU3VibWl0KClcIj5cbiAgICAgIDxibWItcHJvZ3Jlc3MtYmFyXG4gICAgICAgIGFwcGVhcmFuY2U9XCJpbmZvXCJcbiAgICAgICAgdHlwZT1cImNvbnRhaW5lclwiXG4gICAgICAgIFtjb3VudGVyXT1cImNvdW50ZXIoKVwiXG4gICAgICAgIFt0b3RhbENvdW50XT1cInRvdGFsQ291bnQoKVwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICBwcm9ncmVzc1RpdGxlKCkgfHwgKCdhY2NvdW50X3N0YXRlbWVudC5wcm9ncmVzc190aXRsZScgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgICAgPGJtYi1kaXZpZGVyIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtbW9kYWwtbGFiZWxcIlxuICAgICAgICBibWJMYXlvdXRcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIFtkeW5hbWljQ29sc109XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPGJtYi1yYWRpYWxcbiAgICAgICAgICBpZD1cIm1vZGFsUmVzdElucHV0XCJcbiAgICAgICAgICBuYW1lPVwibW9kYWxBbW91bnRcIlxuICAgICAgICAgIFtjaGVja2VkXT1cInRydWVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQWN0aXZlQ3VzdG9tQW1vdW50KCRldmVudClcIlxuICAgICAgICAgIHZhbHVlPVwibW9kYWxSZXN0SW5wdXRcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBibWJMYXlvdXRJdGVtIFtjb2xHcm93XT1cIjFcIj5cbiAgICAgICAgICB7eyBtb2RhbFJlc3RMYWJlbCgpIH19XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkQW1vdW50KHRvdGFsQ291bnQoKSAtIGNvdW50ZXIoKSkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxibWItZGl2aWRlciAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYm1iX2FjY291bnQtc3RhdGVtZW50LW1vZGFsLWxhYmVsXCJcbiAgICAgICAgYm1iTGF5b3V0XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBbZHluYW1pY0NvbHNdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxibWItcmFkaWFsXG4gICAgICAgICAgaWQ9XCJtb2RhbE90aGVyQW1vdW50SW5wdXRcIlxuICAgICAgICAgIG5hbWU9XCJtb2RhbEFtb3VudFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVBY3RpdmVDdXN0b21BbW91bnQoJGV2ZW50KVwiXG4gICAgICAgICAgdmFsdWU9XCJtb2RhbE90aGVyQW1vdW50SW5wdXRcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBibWJMYXlvdXRJdGVtIFtjb2xHcm93XT1cIjFcIj5cbiAgICAgICAgICB7eyBtb2RhbE90aGVyQW1vdW50TGFiZWwoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgICAgQGlmIChpc0VuYWJsZUN1c3RvbUFtb3VudCkge1xuICAgICAgICA8Ym1iLWlucHV0XG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgW21heF09XCJ0b3RhbENvdW50KCkgLSBjb3VudGVyKClcIlxuICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIFtlcnJvck1lc3NhZ2VdPVwiXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UoKSB8fCAoJ2FjY291bnRfc3RhdGVtZW50LmVycm9yX21lc3NhZ2UnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woJ2Ftb3VudCcpXCJcbiAgICAgICAgICBbc2hvd0Vycm9yXT1cInNob3dFcnJvcnNbJ2Ftb3VudCddXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICAgIDxmb290ZXIgY2xhc3M9XCJibWJfYWNjb3VudC1zdGF0ZW1lbnQtZm9vdGVyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGJtYkJ1dHRvbiBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICB7eyBtb2RhbFByaW1hcnlCdXR0b25MYWJlbCgpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9mb3JtPlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -14,6 +14,8 @@ import { BmbCheckboxComponent } from '../bmb-checkbox/bmb-checkbox.component';
14
14
  import { BmbDividerComponent } from '../bmb-divider/bmb-divider.component';
15
15
  import { BmbLayoutDirective } from '../../directives/bmb-layout/bmb-layout.directive';
16
16
  import { BmbLayoutItemDirective } from '../../directives/bmb-layout/bmb-layout-item.directive';
17
+ import { TranslatePipe } from '../../pipes/translations';
18
+ import { BmbSwitchComponent } from '../bmb-switch/bmb-switch.component';
17
19
  import * as i0 from "@angular/core";
18
20
  import * as i1 from "../../services/calendar/calendar.service";
19
21
  import * as i2 from "../../services/modal/native-modal.service";
@@ -135,6 +137,7 @@ export class BmbCalendarComponent {
135
137
  }
136
138
  ngOnInit() {
137
139
  this.view.update((value) => (window.innerWidth < 1000 ? 'day' : value));
140
+ this.calendarForm.addControl('enable_notifications', new FormControl(true));
138
141
  this.timerId = setInterval(() => {
139
142
  this.updateTime();
140
143
  }, 60000); // Actualiza cada 60000 milisegundos (1 minuto)
@@ -203,7 +206,7 @@ export class BmbCalendarComponent {
203
206
  }
204
207
  handleShowModalFilter() {
205
208
  this.filterModalId.set(this.modalService.openModal({
206
- title: this.translationsService.translate('calendar.title'),
209
+ title: this.translationsService.translate('calendar.modal.title'),
207
210
  subtitle: this.translationsService.translate('calendar.subtitle'),
208
211
  content: this.modalTemplate,
209
212
  size: 'x-small',
@@ -254,7 +257,7 @@ export class BmbCalendarComponent {
254
257
  return ['bmb_calendar-event-bullet', `bmb_calendar-event-bullet-${name}`];
255
258
  }
256
259
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbCalendarComponent, deps: [{ token: i1.BmbCalendarService }, { token: i2.BmbNativeModalService }, { token: i3.BmbTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
257
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbCalendarComponent, isStandalone: true, selector: "bmb-calendar", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, calendarTimezone: { classPropertyName: "calendarTimezone", publicName: "calendarTimezone", isSignal: true, isRequired: false, transformFunction: null }, clientTimezone: { classPropertyName: "clientTimezone", publicName: "clientTimezone", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, startBusinessHour: { classPropertyName: "startBusinessHour", publicName: "startBusinessHour", isSignal: true, isRequired: false, transformFunction: null }, calendarTitle: { classPropertyName: "calendarTitle", publicName: "calendarTitle", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, showFilterButton: { classPropertyName: "showFilterButton", publicName: "showFilterButton", isSignal: true, isRequired: false, transformFunction: null }, disableMobileFilter: { classPropertyName: "disableMobileFilter", publicName: "disableMobileFilter", isSignal: true, isRequired: false, transformFunction: null }, visibleDate: { classPropertyName: "visibleDate", publicName: "visibleDate", isSignal: true, isRequired: false, transformFunction: null }, currentDate: { classPropertyName: "currentDate", publicName: "currentDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", filters: "filtersChange", visibleDate: "visibleDateChange", onDateChange: "onDateChange", onClose: "onClose" }, host: { listeners: { "window:resize": "resize()" } }, viewQueries: [{ propertyName: "detailContent", first: true, predicate: ["detailContent"], descendants: true, read: TemplateRef }, { propertyName: "modalTemplate", first: true, predicate: ["modalTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"bmb_calendar\" [ngStyle]=\"{ height: getHeight(height()) }\">\n @if (isMobileHeader) {\n <bmb-calendar-template-mobile\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n [disableMobileFilter]=\"disableMobileFilter()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [view]=\"view()\"\n [currentDate]=\"visibleDate()\"\n (onRangeChange)=\"handleDateChange($event, visibleDate())\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [showFilterButton]=\"showFilterButton()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n }\n @switch (view()) {\n @case ('day') {\n <bmb-calendar-template-day\n [now]=\"visibleDate()\"\n [events]=\"getDayEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [dateFormat]=\"dateFormat()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('week') {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [selectedWeek]=\"selectedWeek()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('month') {\n <bmb-calendar-template-month\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n class=\"bmb_calendar-content\"\n />\n }\n @default {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n class=\"bmb_calendar-content\"\n />\n }\n }\n\n @if (isLoading()) {\n <div class=\"bmb_calendar-loader\">\n <bmb-loader [showInline]=\"true\" />\n </div>\n }\n</div>\n\n<ng-template #detailContent>\n @if (selectedEvent) {\n <section>\n @if (selectedEvent.tags?.length) {\n <p style=\"display: flex; flex-wrap: wrap; gap: 0.5rem\">\n @for (item of selectedEvent.tags; track $index) {\n <bmb-badge [text]=\"item.text\" [appearance]=\"item.appearance\" />\n }\n </p>\n }\n @if (selectedEvent.title) {\n <p class=\"bmb_calendar-event-modal-title\">{{ selectedEvent.title }}</p>\n }\n @if (selectedEvent.place) {\n <p class=\"bmb_calendar-event-modal-place\">{{ selectedEvent.place }}</p>\n }\n <div class=\"bmb_calendar-event-modal-duration\">{{ getDuration() }}</div>\n </section>\n }\n</ng-template>\n\n<ng-template #modalTemplate>\n <form [formGroup]=\"calendarForm\">\n @for (item of filteredEvents().calendars; track $index) {\n <div bmbLayout gapSize=\"s\" alignItems=\"center\">\n <bmb-checkbox\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [control]=\"getFormControl(item)\"\n />\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [ngClass]=\"getBulletClass(item)\"\n ></div>\n <label\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n [htmlFor]=\"'checkbox_' + item\"\n >{{ getCalendarName(item) }}</label\n >\n </div>\n <bmb-divider type=\"dashed\"></bmb-divider>\n }\n </form>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 62.5625rem){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.bmb_calendar-event-bullet{width:.5rem;height:.5rem;border-radius:50%;margin-left:.5rem;background-color:var(--general_contrasts-50)}.bmb_calendar-event-bullet-academic{background-color:var(--general_contrasts-main-selection)}.bmb_calendar-event-bullet-life{background-color:rgb(var(--color-green-light))}.bmb_calendar-event-bullet-events{background-color:rgb(var(--color-purple-light))}.bmb_calendar-event-bullet-save_the_date{background-color:rgb(var(--color-yellow-primary))}.bmb_calendar-detail-header{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:var(--bmb-spacing-n) var(--bmb-spacing-none);border-bottom:.0625rem solid var(--general_contrasts-25);position:sticky;top:0;z-index:1;background-color:var(--containers-main)}@media (max-width: 62.5rem){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Regular,sans-serif;font-size:.75rem;font-weight:400}.bmb_calendar-detail-header h2:first-letter .bmb-first-letter{text-transform:capitalize}.bmb_calendar-detail-header span{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_calendar-body{position:relative}.bmb_calendar-col{flex:1;height:fit-content;border-left:.0625rem solid var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-col{border-left:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-col-today{background-color:var(--general_contrasts-25)}.bmb_calendar-row-body{min-height:7.5rem;border-bottom:.0625rem solid var(--containers-main);position:relative}@media (min-width: 62.5625rem){.bmb_calendar-row-body{border-bottom:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-row-body:before{content:\"\";position:absolute;top:50%;left:0;width:100%;border-bottom:.0625rem dashed var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-row-body:before{display:none}}.bmb_calendar-week-view,.bmb_calendar-day-view{display:flex;justify-content:space-between}.bmb_calendar-loader{display:flex;height:100%;position:absolute;top:0;width:100%;left:0;justify-content:center;align-items:center}.bmb_calendar-content{flex:1 0 0%;overflow:hidden}.bmb_calendar-event-modal-title{overflow:hidden;text-overflow:ellipsis;white-space:wrap;font-family:Poppins-Regular,sans-serif;font-size:1rem}.bmb_calendar-event-modal-detail,.bmb_calendar-event-modal-place,.bmb_calendar-event-modal-duration{font-family:Poppins-Regular,sans-serif;font-size:.875rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BmbCalendarTemplateDayComponent, selector: "bmb-calendar-template-day", inputs: ["now", "events", "currentTime", "startBusinessHour", "dateFormat"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateWeekComponent, selector: "bmb-calendar-template-week", inputs: ["weekDays", "now", "dateFormat", "events", "currentTime", "startBusinessHour", "selectedWeek"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateMonthComponent, selector: "bmb-calendar-template-month", inputs: ["now", "events"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarHeaderComponent, selector: "bmb-calendar-header", inputs: ["weekDays", "view", "currentDate", "showFilterButton"], outputs: ["onRangeChange", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbCalendarTemplateMobileComponent, selector: "bmb-calendar-template-mobile", inputs: ["weekDays", "now", "events", "calendarTitle", "disableMobileFilter"], outputs: ["onClose", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbBadgeComponent, selector: "bmb-badge", inputs: ["appearance", "text", "container"] }, { kind: "component", type: BmbLoaderComponent, selector: "bmb-loader", inputs: ["appearance", "title", "icon", "subtitle", "overlay", "isVisible", "errorState", "actions", "buttonPrimary", "buttonSecondary", "showInline"], outputs: ["onButtonPrimary", "onButtonSecondary"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "customValidation", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "component", type: BmbDividerComponent, selector: "bmb-divider", inputs: ["type"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems", "isContainerQuery"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbCalendarComponent, isStandalone: true, selector: "bmb-calendar", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, calendarTimezone: { classPropertyName: "calendarTimezone", publicName: "calendarTimezone", isSignal: true, isRequired: false, transformFunction: null }, clientTimezone: { classPropertyName: "clientTimezone", publicName: "clientTimezone", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, startBusinessHour: { classPropertyName: "startBusinessHour", publicName: "startBusinessHour", isSignal: true, isRequired: false, transformFunction: null }, calendarTitle: { classPropertyName: "calendarTitle", publicName: "calendarTitle", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, showFilterButton: { classPropertyName: "showFilterButton", publicName: "showFilterButton", isSignal: true, isRequired: false, transformFunction: null }, disableMobileFilter: { classPropertyName: "disableMobileFilter", publicName: "disableMobileFilter", isSignal: true, isRequired: false, transformFunction: null }, visibleDate: { classPropertyName: "visibleDate", publicName: "visibleDate", isSignal: true, isRequired: false, transformFunction: null }, currentDate: { classPropertyName: "currentDate", publicName: "currentDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", filters: "filtersChange", visibleDate: "visibleDateChange", onDateChange: "onDateChange", onClose: "onClose" }, host: { listeners: { "window:resize": "resize()" } }, viewQueries: [{ propertyName: "detailContent", first: true, predicate: ["detailContent"], descendants: true, read: TemplateRef }, { propertyName: "modalTemplate", first: true, predicate: ["modalTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"bmb_calendar\" [ngStyle]=\"{ height: getHeight(height()) }\">\n @if (isMobileHeader) {\n <bmb-calendar-template-mobile\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n [disableMobileFilter]=\"disableMobileFilter()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [view]=\"view()\"\n [currentDate]=\"visibleDate()\"\n (onRangeChange)=\"handleDateChange($event, visibleDate())\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [showFilterButton]=\"showFilterButton()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n }\n @switch (view()) {\n @case ('day') {\n <bmb-calendar-template-day\n [now]=\"visibleDate()\"\n [events]=\"getDayEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [dateFormat]=\"dateFormat()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('week') {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [selectedWeek]=\"selectedWeek()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('month') {\n <bmb-calendar-template-month\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n class=\"bmb_calendar-content\"\n />\n }\n @default {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n class=\"bmb_calendar-content\"\n />\n }\n }\n\n @if (isLoading()) {\n <div class=\"bmb_calendar-loader\">\n <bmb-loader [showInline]=\"true\" />\n </div>\n }\n</div>\n\n<ng-template #detailContent>\n @if (selectedEvent) {\n <section>\n @if (selectedEvent.tags?.length) {\n <p style=\"display: flex; flex-wrap: wrap; gap: 0.5rem\">\n @for (item of selectedEvent.tags; track $index) {\n <bmb-badge [text]=\"item.text\" [appearance]=\"item.appearance\" />\n }\n </p>\n }\n @if (selectedEvent.title) {\n <p class=\"bmb_calendar-event-modal-title\">{{ selectedEvent.title }}</p>\n }\n @if (selectedEvent.place) {\n <p class=\"bmb_calendar-event-modal-place\">{{ selectedEvent.place }}</p>\n }\n <div class=\"bmb_calendar-event-modal-duration\">{{ getDuration() }}</div>\n </section>\n }\n</ng-template>\n\n<ng-template #modalTemplate>\n <form [formGroup]=\"calendarForm\">\n @for (item of filteredEvents().calendars; track $index) {\n <div bmbLayout gapSize=\"s\" alignItems=\"center\">\n <bmb-checkbox\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [control]=\"getFormControl(item)\"\n />\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [ngClass]=\"getBulletClass(item)\"\n ></div>\n <label\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n [htmlFor]=\"'checkbox_' + item\"\n >{{ getCalendarName(item) }}</label\n >\n </div>\n }\n <bmb-divider type=\"solid\"></bmb-divider>\n <bmb-switch\n [isChecked]=\"true\"\n [ariaLabel]=\"('calendar.modal.notification_label' | translate)\"\n [rightText]=\"('calendar.modal.notification_label' | translate)\"\n name=\"enable_notifications\"\n inputId=\"enable_notifications\"\n [control]=\" getFormControl('enable_notifications')\"\n ></bmb-switch>\n </form>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 62.5625rem){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.bmb_calendar-event-bullet{width:.5rem;height:.5rem;border-radius:50%;margin-left:.5rem;background-color:var(--general_contrasts-50)}.bmb_calendar-event-bullet-academic{background-color:var(--general_contrasts-main-selection)}.bmb_calendar-event-bullet-life{background-color:rgb(var(--color-green-light))}.bmb_calendar-event-bullet-events{background-color:rgb(var(--color-purple-light))}.bmb_calendar-event-bullet-save_the_date{background-color:rgb(var(--color-yellow-primary))}.bmb_calendar-detail-header{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:var(--bmb-spacing-n) var(--bmb-spacing-none);border-bottom:.0625rem solid var(--general_contrasts-25);position:sticky;top:0;z-index:1;background-color:var(--containers-main)}@media (max-width: 62.5rem){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Regular,sans-serif;font-size:.75rem;font-weight:400}.bmb_calendar-detail-header h2:first-letter .bmb-first-letter{text-transform:capitalize}.bmb_calendar-detail-header span{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_calendar-body{position:relative}.bmb_calendar-col{flex:1;height:fit-content;border-left:.0625rem solid var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-col{border-left:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-col-today{background-color:var(--general_contrasts-25)}.bmb_calendar-row-body{min-height:7.5rem;border-bottom:.0625rem solid var(--containers-main);position:relative}@media (min-width: 62.5625rem){.bmb_calendar-row-body{border-bottom:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-row-body:before{content:\"\";position:absolute;top:50%;left:0;width:100%;border-bottom:.0625rem dashed var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-row-body:before{display:none}}.bmb_calendar-week-view,.bmb_calendar-day-view{display:flex;justify-content:space-between}.bmb_calendar-loader{display:flex;height:100%;position:absolute;top:0;width:100%;left:0;justify-content:center;align-items:center}.bmb_calendar-content{flex:1 0 0%;overflow:hidden}.bmb_calendar-event-modal-title{overflow:hidden;text-overflow:ellipsis;white-space:wrap;font-family:Poppins-Regular,sans-serif;font-size:1rem}.bmb_calendar-event-modal-detail,.bmb_calendar-event-modal-place,.bmb_calendar-event-modal-duration{font-family:Poppins-Regular,sans-serif;font-size:.875rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BmbCalendarTemplateDayComponent, selector: "bmb-calendar-template-day", inputs: ["now", "events", "currentTime", "startBusinessHour", "dateFormat"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateWeekComponent, selector: "bmb-calendar-template-week", inputs: ["weekDays", "now", "dateFormat", "events", "currentTime", "startBusinessHour", "selectedWeek"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateMonthComponent, selector: "bmb-calendar-template-month", inputs: ["now", "events"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarHeaderComponent, selector: "bmb-calendar-header", inputs: ["weekDays", "view", "currentDate", "showFilterButton"], outputs: ["onRangeChange", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbCalendarTemplateMobileComponent, selector: "bmb-calendar-template-mobile", inputs: ["weekDays", "now", "events", "calendarTitle", "disableMobileFilter"], outputs: ["onClose", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbBadgeComponent, selector: "bmb-badge", inputs: ["appearance", "text", "container"] }, { kind: "component", type: BmbLoaderComponent, selector: "bmb-loader", inputs: ["appearance", "title", "icon", "subtitle", "overlay", "isVisible", "errorState", "actions", "buttonPrimary", "buttonSecondary", "showInline"], outputs: ["onButtonPrimary", "onButtonSecondary"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: BmbCheckboxComponent, selector: "bmb-checkbox", inputs: ["name", "id", "disabled", "required", "value", "label", "labelPosition", "ariaDescribedby", "ariaLabel", "ariaLabelledby", "errorMessage", "helperMessage", "customValidation", "control", "checked", "showError", "indeterminate", "inputId"], outputs: ["controlChange", "checkedChange", "showErrorChange", "indeterminateChange", "inputIdChange", "change"] }, { kind: "component", type: BmbDividerComponent, selector: "bmb-divider", inputs: ["type"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems", "isContainerQuery"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: BmbSwitchComponent, selector: "bmb-switch", inputs: ["leftText", "leftIcon", "rightText", "rightIcon", "isChecked", "ariaLabel", "id", "disabled", "name", "inputId", "control"], outputs: ["isCheckedChange", "inputIdChange", "controlChange", "change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
258
261
  }
259
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbCalendarComponent, decorators: [{
260
263
  type: Component,
@@ -272,7 +275,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
272
275
  BmbDividerComponent,
273
276
  BmbLayoutDirective,
274
277
  BmbLayoutItemDirective,
275
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"bmb_calendar\" [ngStyle]=\"{ height: getHeight(height()) }\">\n @if (isMobileHeader) {\n <bmb-calendar-template-mobile\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n [disableMobileFilter]=\"disableMobileFilter()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [view]=\"view()\"\n [currentDate]=\"visibleDate()\"\n (onRangeChange)=\"handleDateChange($event, visibleDate())\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [showFilterButton]=\"showFilterButton()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n }\n @switch (view()) {\n @case ('day') {\n <bmb-calendar-template-day\n [now]=\"visibleDate()\"\n [events]=\"getDayEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [dateFormat]=\"dateFormat()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('week') {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [selectedWeek]=\"selectedWeek()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('month') {\n <bmb-calendar-template-month\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n class=\"bmb_calendar-content\"\n />\n }\n @default {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n class=\"bmb_calendar-content\"\n />\n }\n }\n\n @if (isLoading()) {\n <div class=\"bmb_calendar-loader\">\n <bmb-loader [showInline]=\"true\" />\n </div>\n }\n</div>\n\n<ng-template #detailContent>\n @if (selectedEvent) {\n <section>\n @if (selectedEvent.tags?.length) {\n <p style=\"display: flex; flex-wrap: wrap; gap: 0.5rem\">\n @for (item of selectedEvent.tags; track $index) {\n <bmb-badge [text]=\"item.text\" [appearance]=\"item.appearance\" />\n }\n </p>\n }\n @if (selectedEvent.title) {\n <p class=\"bmb_calendar-event-modal-title\">{{ selectedEvent.title }}</p>\n }\n @if (selectedEvent.place) {\n <p class=\"bmb_calendar-event-modal-place\">{{ selectedEvent.place }}</p>\n }\n <div class=\"bmb_calendar-event-modal-duration\">{{ getDuration() }}</div>\n </section>\n }\n</ng-template>\n\n<ng-template #modalTemplate>\n <form [formGroup]=\"calendarForm\">\n @for (item of filteredEvents().calendars; track $index) {\n <div bmbLayout gapSize=\"s\" alignItems=\"center\">\n <bmb-checkbox\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [control]=\"getFormControl(item)\"\n />\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [ngClass]=\"getBulletClass(item)\"\n ></div>\n <label\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n [htmlFor]=\"'checkbox_' + item\"\n >{{ getCalendarName(item) }}</label\n >\n </div>\n <bmb-divider type=\"dashed\"></bmb-divider>\n }\n </form>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 62.5625rem){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.bmb_calendar-event-bullet{width:.5rem;height:.5rem;border-radius:50%;margin-left:.5rem;background-color:var(--general_contrasts-50)}.bmb_calendar-event-bullet-academic{background-color:var(--general_contrasts-main-selection)}.bmb_calendar-event-bullet-life{background-color:rgb(var(--color-green-light))}.bmb_calendar-event-bullet-events{background-color:rgb(var(--color-purple-light))}.bmb_calendar-event-bullet-save_the_date{background-color:rgb(var(--color-yellow-primary))}.bmb_calendar-detail-header{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:var(--bmb-spacing-n) var(--bmb-spacing-none);border-bottom:.0625rem solid var(--general_contrasts-25);position:sticky;top:0;z-index:1;background-color:var(--containers-main)}@media (max-width: 62.5rem){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Regular,sans-serif;font-size:.75rem;font-weight:400}.bmb_calendar-detail-header h2:first-letter .bmb-first-letter{text-transform:capitalize}.bmb_calendar-detail-header span{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_calendar-body{position:relative}.bmb_calendar-col{flex:1;height:fit-content;border-left:.0625rem solid var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-col{border-left:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-col-today{background-color:var(--general_contrasts-25)}.bmb_calendar-row-body{min-height:7.5rem;border-bottom:.0625rem solid var(--containers-main);position:relative}@media (min-width: 62.5625rem){.bmb_calendar-row-body{border-bottom:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-row-body:before{content:\"\";position:absolute;top:50%;left:0;width:100%;border-bottom:.0625rem dashed var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-row-body:before{display:none}}.bmb_calendar-week-view,.bmb_calendar-day-view{display:flex;justify-content:space-between}.bmb_calendar-loader{display:flex;height:100%;position:absolute;top:0;width:100%;left:0;justify-content:center;align-items:center}.bmb_calendar-content{flex:1 0 0%;overflow:hidden}.bmb_calendar-event-modal-title{overflow:hidden;text-overflow:ellipsis;white-space:wrap;font-family:Poppins-Regular,sans-serif;font-size:1rem}.bmb_calendar-event-modal-detail,.bmb_calendar-event-modal-place,.bmb_calendar-event-modal-duration{font-family:Poppins-Regular,sans-serif;font-size:.875rem}\n"] }]
278
+ TranslatePipe,
279
+ BmbSwitchComponent,
280
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"bmb_calendar\" [ngStyle]=\"{ height: getHeight(height()) }\">\n @if (isMobileHeader) {\n <bmb-calendar-template-mobile\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n [disableMobileFilter]=\"disableMobileFilter()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [view]=\"view()\"\n [currentDate]=\"visibleDate()\"\n (onRangeChange)=\"handleDateChange($event, visibleDate())\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [showFilterButton]=\"showFilterButton()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n }\n @switch (view()) {\n @case ('day') {\n <bmb-calendar-template-day\n [now]=\"visibleDate()\"\n [events]=\"getDayEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [dateFormat]=\"dateFormat()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('week') {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n [currentTime]=\"currentTime()\"\n [startBusinessHour]=\"startBusinessHour()\"\n [selectedWeek]=\"selectedWeek()\"\n class=\"bmb_calendar-content\"\n />\n }\n @case ('month') {\n <bmb-calendar-template-month\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n (onSelectEvent)=\"handleSelectEvent($event)\"\n class=\"bmb_calendar-content\"\n />\n }\n @default {\n <bmb-calendar-template-week\n [weekDays]=\"renderWeekDays()\"\n [now]=\"visibleDate()\"\n [events]=\"filteredEvents()\"\n class=\"bmb_calendar-content\"\n />\n }\n }\n\n @if (isLoading()) {\n <div class=\"bmb_calendar-loader\">\n <bmb-loader [showInline]=\"true\" />\n </div>\n }\n</div>\n\n<ng-template #detailContent>\n @if (selectedEvent) {\n <section>\n @if (selectedEvent.tags?.length) {\n <p style=\"display: flex; flex-wrap: wrap; gap: 0.5rem\">\n @for (item of selectedEvent.tags; track $index) {\n <bmb-badge [text]=\"item.text\" [appearance]=\"item.appearance\" />\n }\n </p>\n }\n @if (selectedEvent.title) {\n <p class=\"bmb_calendar-event-modal-title\">{{ selectedEvent.title }}</p>\n }\n @if (selectedEvent.place) {\n <p class=\"bmb_calendar-event-modal-place\">{{ selectedEvent.place }}</p>\n }\n <div class=\"bmb_calendar-event-modal-duration\">{{ getDuration() }}</div>\n </section>\n }\n</ng-template>\n\n<ng-template #modalTemplate>\n <form [formGroup]=\"calendarForm\">\n @for (item of filteredEvents().calendars; track $index) {\n <div bmbLayout gapSize=\"s\" alignItems=\"center\">\n <bmb-checkbox\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [control]=\"getFormControl(item)\"\n />\n <div\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [ngClass]=\"getBulletClass(item)\"\n ></div>\n <label\n bmbLayoutItem\n [isDynamicItem]=\"true\"\n [colGrow]=\"1\"\n [htmlFor]=\"'checkbox_' + item\"\n >{{ getCalendarName(item) }}</label\n >\n </div>\n }\n <bmb-divider type=\"solid\"></bmb-divider>\n <bmb-switch\n [isChecked]=\"true\"\n [ariaLabel]=\"('calendar.modal.notification_label' | translate)\"\n [rightText]=\"('calendar.modal.notification_label' | translate)\"\n name=\"enable_notifications\"\n inputId=\"enable_notifications\"\n [control]=\" getFormControl('enable_notifications')\"\n ></bmb-switch>\n </form>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 62.5625rem){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.bmb_calendar-event-bullet{width:.5rem;height:.5rem;border-radius:50%;margin-left:.5rem;background-color:var(--general_contrasts-50)}.bmb_calendar-event-bullet-academic{background-color:var(--general_contrasts-main-selection)}.bmb_calendar-event-bullet-life{background-color:rgb(var(--color-green-light))}.bmb_calendar-event-bullet-events{background-color:rgb(var(--color-purple-light))}.bmb_calendar-event-bullet-save_the_date{background-color:rgb(var(--color-yellow-primary))}.bmb_calendar-detail-header{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:var(--bmb-spacing-n) var(--bmb-spacing-none);border-bottom:.0625rem solid var(--general_contrasts-25);position:sticky;top:0;z-index:1;background-color:var(--containers-main)}@media (max-width: 62.5rem){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Regular,sans-serif;font-size:.75rem;font-weight:400}.bmb_calendar-detail-header h2:first-letter .bmb-first-letter{text-transform:capitalize}.bmb_calendar-detail-header span{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.bmb_calendar-body{position:relative}.bmb_calendar-col{flex:1;height:fit-content;border-left:.0625rem solid var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-col{border-left:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-col-today{background-color:var(--general_contrasts-25)}.bmb_calendar-row-body{min-height:7.5rem;border-bottom:.0625rem solid var(--containers-main);position:relative}@media (min-width: 62.5625rem){.bmb_calendar-row-body{border-bottom:.0625rem solid var(--general_contrasts-25)}}.bmb_calendar-row-body:before{content:\"\";position:absolute;top:50%;left:0;width:100%;border-bottom:.0625rem dashed var(--containers-main)}@media (min-width: 62.5625rem){.bmb_calendar-row-body:before{display:none}}.bmb_calendar-week-view,.bmb_calendar-day-view{display:flex;justify-content:space-between}.bmb_calendar-loader{display:flex;height:100%;position:absolute;top:0;width:100%;left:0;justify-content:center;align-items:center}.bmb_calendar-content{flex:1 0 0%;overflow:hidden}.bmb_calendar-event-modal-title{overflow:hidden;text-overflow:ellipsis;white-space:wrap;font-family:Poppins-Regular,sans-serif;font-size:1rem}.bmb_calendar-event-modal-detail,.bmb_calendar-event-modal-place,.bmb_calendar-event-modal-duration{font-family:Poppins-Regular,sans-serif;font-size:.875rem}\n"] }]
276
281
  }], ctorParameters: () => [{ type: i1.BmbCalendarService }, { type: i2.BmbNativeModalService }, { type: i3.BmbTranslationsService }], propDecorators: { detailContent: [{
277
282
  type: ViewChild,
278
283
  args: ['detailContent', { read: TemplateRef }]
@@ -283,4 +288,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
283
288
  type: HostListener,
284
289
  args: ['window:resize']
285
290
  }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUdOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDNUgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDekgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDL0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDbEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1B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QjtnQkFDRSxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSw2QkFBNkIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDOytHQXRTVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnaEVBb0dLLFdBQVcsOEhDakxqRCx3ekhBeUhBLDgvUUQvREksWUFBWSxrTkFDWiwrQkFBK0IsK0tBQy9CLGdDQUFnQyw0TUFDaEMsaUNBQWlDLCtIQUNqQywwQkFBMEIsbU1BQzFCLGtDQUFrQyxvTkFDbEMsaUJBQWlCLG1HQUNqQixrQkFBa0IsaVFBQ2xCLG1CQUFtQixxYkFDbkIsb0JBQW9CLG9hQUNwQixtQkFBbUIsMEVBQ25CLGtCQUFrQixtSkFDbEIsc0JBQXNCOzs0RkFPYixvQkFBb0I7a0JBdkJoQyxTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiwrQkFBK0I7d0JBQy9CLGdDQUFnQzt3QkFDaEMsaUNBQWlDO3dCQUNqQywwQkFBMEI7d0JBQzFCLGtDQUFrQzt3QkFDbEMsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3FCQUN2QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtnS0F1R3JDLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUVyQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBRzFCLE1BQU07c0JBREwsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEhvc3RMaXN0ZW5lcixcbiAgbW9kZWwsXG4gIGlucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBvdXRwdXQsXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgZWZmZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlVGltZSwgSW50ZXJ2YWwgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlRGF5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21tb24vYm1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheS9ibWItY2FsZW5kYXItdGVtcGxhdGUtZGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlTW9udGhDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi9ibWItY2FsZW5kYXItdGVtcGxhdGUtbW9udGgvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vbnRoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci1oZWFkZXIvYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGUvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWxvYWRlci9ibWItbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJQm1iQ2FsZW5kYXJFdmVudCxcbiAgSUJtYkNhbGVuZGFyRXZlbnRDbGljayxcbiAgSUJtYkNhbGVuZGFyVmlldyxcbiAgSUJtYlBhcnNlZERhdGVzLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldFdlZWtEYXlzLCBnZXRNb250aERheXMsIERFRkFVTFRfREFURV9GT1JNQVQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJtYkNhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbGVuZGFyL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm1iTmF0aXZlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kYWwvbmF0aXZlLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm1iQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9ibWItYmFkZ2UvYm1iLWJhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm1iQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItY2hlY2tib3gvYm1iLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWRpdmlkZXIvYm1iLWRpdmlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCbWJMYXlvdXRJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ibWItbGF5b3V0L2JtYi1sYXlvdXQtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSUJtYk5hdGl2ZU1vZGFsIH0gZnJvbSAnLi4vYm1iLW1vZGFsL2JtYi1tb2RhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQm1iVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuc2VydmljZSc7XG5cbmNvbnN0IHBhcnNlRnJvbUZvcm1hdCA9IChkYXRlU3RyaW5nOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKTogRGF0ZVRpbWUgPT4ge1xuICBpZiAoZm9ybWF0LnRvTG93ZXJDYXNlKCkgPT09ICdpc28nKSByZXR1cm4gRGF0ZVRpbWUuZnJvbUlTTyhkYXRlU3RyaW5nKTtcblxuICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdChkYXRlU3RyaW5nLCBmb3JtYXQpO1xufTtcblxuZXhwb3J0IHtcbiAgSUJtYkNhbGVuZGFyRXZlbnQsXG4gIElCbWJDYWxlbmRhckV2ZW50Q2xpY2ssXG4gIElCbWJFdmVudFR5cGUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItY2FsZW5kYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkNhbGVuZGFyVGVtcGxhdGVEYXlDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZVdlZWtDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vbnRoQ29tcG9uZW50LFxuICAgIEJtYkNhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxuICAgIEJtYkNhbGVuZGFyVGVtcGxhdGVNb2JpbGVDb21wb25lbnQsXG4gICAgQm1iQmFkZ2VDb21wb25lbnQsXG4gICAgQm1iTG9hZGVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iQ2hlY2tib3hDb21wb25lbnQsXG4gICAgQm1iRGl2aWRlckNvbXBvbmVudCxcbiAgICBCbWJMYXlvdXREaXJlY3RpdmUsXG4gICAgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSxcbiAgXSxcbiAgc3R5bGVVcmw6ICcuL2JtYi1jYWxlbmRhci5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibWItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICB2aWV3ID0gbW9kZWw8SUJtYkNhbGVuZGFyVmlldz4oJ3dlZWsnKTsgLy8gaW50ZXJuYWxcbiAgZmlsdGVycyA9IG1vZGVsPHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XG4gIGNhbGVuZGFyVGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFxuICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcbiAgKTtcbiAgY2xpZW50VGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFxuICAgIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcbiAgKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8bnVtYmVyIHwgc3RyaW5nPignMTAwJScpO1xuICBzdGFydEJ1c2luZXNzSG91ciA9IGlucHV0PG51bWJlcj4oOCk7XG4gIGNhbGVuZGFyVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGRhdGVGb3JtYXQgPSBpbnB1dDxzdHJpbmc+KERFRkFVTFRfREFURV9GT1JNQVQpO1xuICBldmVudHMgPSBjb21wdXRlZDxJQm1iQ2FsZW5kYXJFdmVudFtdPigoKSA9PlxuICAgIHRoaXMuZXZlbnRzU2lnbmFsLmdldEV2ZW50TGlzdCgpLFxuICApO1xuICBzaG93RmlsdGVyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlTW9iaWxlRmlsdGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB2aXNpYmxlRGF0ZSA9IG1vZGVsPERhdGVUaW1lPihEYXRlVGltZS5ub3coKSk7IC8vIGludGVybmFsXG5cbiAgY3VycmVudERhdGUgPSBpbnB1dDxzdHJpbmc+KCcnKTsgLy8gRGVwcmVjYXRlZFxuXG4gIG9uRGF0ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIG9uQ2xvc2UgPSBvdXRwdXQ8YW55PigpO1xuXG4gIHNlbGVjdGVkV2VlayA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlzaWJsZURhdGUoKS53ZWVrTnVtYmVyKTtcbiAgd2Vla051bWJlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlzaWJsZURhdGUoKS53ZWVrTnVtYmVyKTtcbiAgcmVuZGVyV2Vla0RheXMgPSBjb21wdXRlZCgoKSA9PiBnZXRXZWVrRGF5cyh0aGlzLnZpc2libGVEYXRlKCkpKTtcbiAgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ldmVudHNTaWduYWwuZ2V0SXNMb2FkaW5nKCkpO1xuICBzZWxlY3RlZEV2ZW50OiBJQm1iQ2FsZW5kYXJFdmVudCB8IG51bGwgPSBudWxsO1xuICBpc01vYmlsZUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvcmRlcmVkRXZlbnRzID0gY29tcHV0ZWQ8SUJtYlBhcnNlZERhdGVzPigoKSA9PiB7XG4gICAgY29uc3Qgd2Vla3MgPSB0aGlzLmV2ZW50cygpLnJlZHVjZShcbiAgICAgIChhY2M6IElCbWJQYXJzZWREYXRlcywgZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gcGFyc2VGcm9tRm9ybWF0KGV2ZW50LnN0YXJ0LCB0aGlzLmRhdGVGb3JtYXQoKSk7XG4gICAgICAgIGNvbnN0IGVuZERhdGUgPSBwYXJzZUZyb21Gb3JtYXQoZXZlbnQuZW5kLCB0aGlzLmRhdGVGb3JtYXQoKSk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydERhdGUsIGVuZERhdGUpO1xuICAgICAgICBjb25zdCB3ZWVrID0gc3RhcnREYXRlLndlZWtOdW1iZXI7XG4gICAgICAgIGNvbnN0IHN0cmluZ0RhdGUgPSBzdGFydERhdGUudG9Gb3JtYXQoJ3l5eXktTU0tZGQnKTtcblxuICAgICAgICBpZiAoIWFjY1t3ZWVrXSkgYWNjW3dlZWtdID0ge307XG4gICAgICAgIGlmICghYWNjW3dlZWtdW3N0cmluZ0RhdGVdKSBhY2Nbd2Vla11bc3RyaW5nRGF0ZV0gPSBbXTtcbiAgICAgICAgYWNjW3dlZWtdW3N0cmluZ0RhdGVdLnB1c2goeyAuLi5ldmVudCwgc3RhcnREYXRlLCBlbmREYXRlLCBpbnRlcnZhbCB9KTtcblxuICAgICAgICBpZiAoZXZlbnQuY2FsZW5kYXIgJiYgIWFjYy5jYWxlbmRhcnM/LmluY2x1ZGVzKGV2ZW50LmNhbGVuZGFyKSkge1xuICAgICAgICAgIGFjYy5jYWxlbmRhcnM/LnB1c2goZXZlbnQuY2FsZW5kYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7IGNhbGVuZGFyczogW10gfSBhcyBJQm1iUGFyc2VkRGF0ZXMsXG4gICAgKTtcblxuICAgIGNvbnN0IG9yZGVyZWREYXRlcyA9IHt9IGFzIElCbWJQYXJzZWREYXRlcztcblxuICAgIGZvciAoY29uc3Qgd2VlayBpbiB3ZWVrcykge1xuICAgICAgaWYgKHdlZWsgPT09ICdjYWxlbmRhcnMnKSB7XG4gICAgICAgIG9yZGVyZWREYXRlc1t3ZWVrXSA9IHdlZWtzW3dlZWtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JkZXJlZERhdGVzW3dlZWtdID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBkYXRlIGluIHdlZWtzW3dlZWtdKSB7XG4gICAgICAgICAgb3JkZXJlZERhdGVzW3dlZWtdW2RhdGVdID0gd2Vla3Nbd2Vla11bZGF0ZV0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgYURhdGUgPSBhLnN0YXJ0RGF0ZSA/PyBEYXRlVGltZS5pbnZhbGlkKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGJEYXRlID0gYi5zdGFydERhdGUgPz8gRGF0ZVRpbWUuaW52YWxpZCgnSW52YWxpZCBEYXRlJyk7XG4gICAgICAgICAgICByZXR1cm4gYURhdGUgPD0gYkRhdGUgPyAtMSA6IDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJlZERhdGVzO1xuICB9KTtcbiAgZmlsdGVyZWRFdmVudHMgPSBjb21wdXRlZDxJQm1iUGFyc2VkRGF0ZXM+KCgpID0+IHtcbiAgICBjb25zdCBuZXdFdmVudHMgPSB7fSBhcyBJQm1iUGFyc2VkRGF0ZXM7XG4gICAgZm9yIChjb25zdCB3ZWVrIGluIHRoaXMub3JkZXJlZEV2ZW50cygpKSB7XG4gICAgICBpZiAod2VlayAhPT0gJ2NhbGVuZGFycycpIHtcbiAgICAgICAgbmV3RXZlbnRzW3dlZWtdID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZGF0ZSBpbiB0aGlzLm9yZGVyZWRFdmVudHMoKVt3ZWVrXSkge1xuICAgICAgICAgIG5ld0V2ZW50c1t3ZWVrXVtkYXRlXSA9IHRoaXMub3JkZXJlZEV2ZW50cygpW3dlZWtdW2RhdGVdLm1hcChcbiAgICAgICAgICAgIChldmVudCkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICAgIGlzVmlzaWJsZTpcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMoKSkubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzKClbZXZlbnQuY2FsZW5kYXIgfHwgJ0RlZmF1bHQnXSAhPT0gZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3RXZlbnRzLmNhbGVuZGFycyA9IHRoaXMub3JkZXJlZEV2ZW50cygpLmNhbGVuZGFycztcblxuICAgIHJldHVybiBuZXdFdmVudHM7XG4gIH0pO1xuICBmaWx0ZXJNb2RhbElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjYWxlbmRhckZvcm06IEZvcm1Hcm91cDx7IFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sPGFueT4gfT4gPSBuZXcgRm9ybUdyb3VwKFxuICAgIHt9LFxuICApO1xuXG4gIEBWaWV3Q2hpbGQoJ2RldGFpbENvbnRlbnQnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGRldGFpbENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb2RhbFRlbXBsYXRlJykgbW9kYWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIHJlc2l6ZSgpIHtcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDAwKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KCdkYXknKTtcbiAgICAgIHRoaXMuaXNNb2JpbGVIZWFkZXIgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlSGVhZGVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudHNTaWduYWw6IEJtYkNhbGVuZGFyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogQm1iTmF0aXZlTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25zU2VydmljZTogQm1iVHJhbnNsYXRpb25zU2VydmljZSxcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFycyA9IHRoaXMuZmlsdGVyZWRFdmVudHMoKS5jYWxlbmRhcnMgfHwgW107XG4gICAgICBjYWxlbmRhcnMuZm9yRWFjaCgoY2FsZW5kYXIpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICBjYWxlbmRhcixcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5maWx0ZXJzKClbY2FsZW5kYXJdIHx8IHRydWUpLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjdXJyZW50VGltZSA9IHNpZ25hbDxEYXRlVGltZT4oRGF0ZVRpbWUubm93KCkpO1xuICBwcml2YXRlIHRpbWVySWQ6IGFueTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50aW1lcklkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXJJZCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDApIHtcbiAgICAgIHRoaXMudmlldy5zZXQoJ2RheScpO1xuICAgICAgdGhpcy5pc01vYmlsZUhlYWRlciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3LnVwZGF0ZSgodmFsdWUpID0+ICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDAgPyAnZGF5JyA6IHZhbHVlKSk7XG5cbiAgICB0aGlzLnRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVRpbWUoKTtcbiAgICB9LCA2MDAwMCk7IC8vIEFjdHVhbGl6YSBjYWRhIDYwMDAwIG1pbGlzZWd1bmRvcyAoMSBtaW51dG8pXG4gIH1cblxuICB1cGRhdGVUaW1lKCkge1xuICAgIHRoaXMuY3VycmVudFRpbWUuc2V0KERhdGVUaW1lLm5vdygpKTtcbiAgfVxuXG4gIGhhbmRsZURhdGVDaGFuZ2UocmFuZ2U6IElCbWJDYWxlbmRhclZpZXcsIG5vdzogRGF0ZVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXcuc2V0KHJhbmdlKTtcbiAgICBsZXQgdmlzaWJsZURhdGVzOiAoc3RyaW5nIHwgbnVsbClbXSA9IFtdO1xuXG4gICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgdmlzaWJsZURhdGVzID0gZ2V0TW9udGhEYXlzKG5vdykubWFwKChkYXRlKSA9PiBkYXRlLnRvSVNPKCkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZpc2libGVEYXRlcyA9IGdldFdlZWtEYXlzKG5vdykubWFwKChkYXRlKSA9PiBkYXRlLnRvSVNPKCkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICB2aXNpYmxlRGF0ZXMgPSBnZXRNb250aERheXMobm93KS5tYXAoKGRhdGUpID0+IGRhdGUudG9JU08oKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLm9uRGF0ZUNoYW5nZS5lbWl0KHtcbiAgICAgIHJhbmdlLFxuICAgICAgbm93OiBub3cudG9JU08oKSxcbiAgICAgIHZpc2libGVEYXRlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUN1cnJlbnREYXRlQ2hhbmdlKG5ld0RhdGU6IERhdGVUaW1lKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlRGF0ZS5zZXQobmV3RGF0ZSk7XG4gIH1cblxuICBnZXREYXlFdmVudHMoKTogSUJtYkNhbGVuZGFyRXZlbnRbXSB7XG4gICAgY29uc3QgdmlzaWJsZURhdGVTdHIgPSB0aGlzLnZpc2libGVEYXRlKCkudG9Gb3JtYXQoJ3l5eXktTU0tZGQnKTtcbiAgICBjb25zdCBldmVudHMgPVxuICAgICAgdGhpcy5maWx0ZXJlZEV2ZW50cygpW3RoaXMuc2VsZWN0ZWRXZWVrKCldPy5bdmlzaWJsZURhdGVTdHJdID8/IFtdO1xuICAgIHJldHVybiBldmVudHM7XG4gIH1cblxuICBoYW5kbGVTZWxlY3RFdmVudChuZXdFdmVudDogSUJtYkNhbGVuZGFyRXZlbnRDbGljayk6IHZvaWQge1xuICAgIGNvbnN0IHsgZXZlbnQgfSA9IG5ld0V2ZW50O1xuICAgIGNvbnN0IHRpdGxlID0gZXZlbnQubW9kYWxUaXRsZSA/PyBldmVudC50aXRsZTtcbiAgICBjb25zdCBtb2RhbFRpdGxlID1cbiAgICAgIGV2ZW50LnN0YXR1cyA9PT0gJ2Rpc2FibGVkJyA/IGAoQ2FuY2VsYWRvKSAke3RpdGxlfWAgOiB0aXRsZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRFdmVudCA9IGV2ZW50O1xuXG4gICAgY29uc3QgZGF0YTogSUJtYk5hdGl2ZU1vZGFsID0ge1xuICAgICAgdGl0bGU6IG1vZGFsVGl0bGUsXG4gICAgICBzdWJ0aXRsZTogZXZlbnQuc3VidGl0bGUsXG4gICAgICBjb250ZW50OiB0aGlzLmRldGFpbENvbnRlbnQsXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgIH07XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbk1vZGFsKGRhdGEpO1xuICB9XG5cbiAgaXNBbkV2ZW50U2VsZWN0ZWQoZXZlbnQ6IElCbWJDYWxlbmRhckV2ZW50Q2xpY2sgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZXZlbnQ7XG4gIH1cblxuICBnZXRIZWlnaHQoaGVpZ2h0OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgaGVpZ2h0ID09PSAnbnVtYmVyJykgcmV0dXJuIGAke2hlaWdodH1weGA7XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9XG5cbiAgZ2V0RHVyYXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRXZlbnQpIHJldHVybiAnJztcbiAgICByZXR1cm4gYCR7RGF0ZVRpbWUuZnJvbUlTTyh0aGlzLnNlbGVjdGVkRXZlbnQuc3RhcnQpLnRvRm9ybWF0KCdoaDptbSBhJyl9IC0gJHtEYXRlVGltZS5mcm9tSVNPKHRoaXMuc2VsZWN0ZWRFdmVudC5lbmQpLnRvRm9ybWF0KCdoaDptbSBhJyl9YDtcbiAgfVxuXG4gIGhhbmRsZUNsb3NlKCkge1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCdjbG9zZScpO1xuICB9XG5cbiAgaGFuZGxlU2hvd01vZGFsRmlsdGVyKCkge1xuICAgIHRoaXMuZmlsdGVyTW9kYWxJZC5zZXQoXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuTW9kYWwoe1xuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnY2FsZW5kYXIudGl0bGUnKSxcbiAgICAgICAgc3VidGl0bGU6IHRoaXMudHJhbnNsYXRpb25zU2VydmljZS50cmFuc2xhdGUoJ2NhbGVuZGFyLnN1YnRpdGxlJyksXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMubW9kYWxUZW1wbGF0ZSxcbiAgICAgICAgc2l6ZTogJ3gtc21hbGwnLFxuICAgICAgICBjbG9zZU1vZGFsQ2xpY2tlZDogKGV2ZW50OiB1bmtub3duKSA9PiB0aGlzLmhhbmRsZUZvcm1SZXNldChldmVudCksXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBidXR0b25OYW1lOiAnc2F2ZScsXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiAncHJpbWFyeScsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnY2FsZW5kYXIuZmlsdGVyX3NhdmUnKSxcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5oYW5kbGVBcHBseUZpbHRlcnMoKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1SZXNldChfOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNhbGVuZGFyIGluIHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycygpKS5sZW5ndGggPT09IDAgfHwgISF0aGlzLmZpbHRlcnMoKVtjYWxlbmRhcl07XG4gICAgICB0aGlzLmNhbGVuZGFyRm9ybS5jb250cm9sc1tjYWxlbmRhcl0uc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFwcGx5RmlsdGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZENhbGVuZGFycyA9IE9iamVjdC5rZXlzKHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzKS5yZWR1Y2U8e1xuICAgICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbiAgICB9PigoYWNjLCBjYWxlbmRhcikgPT4ge1xuICAgICAgYWNjW2NhbGVuZGFyXSA9IHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzW2NhbGVuZGFyXS52YWx1ZTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIHRoaXMuZmlsdGVycy5zZXQoc2VsZWN0ZWRDYWxlbmRhcnMpO1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlTW9kYWwodGhpcy5maWx0ZXJNb2RhbElkKCkgYXMgc3RyaW5nKTtcbiAgICB0aGlzLmZpbHRlck1vZGFsSWQuc2V0KG51bGwpO1xuICB9XG5cbiAgZ2V0Rm9ybUNvbnRyb2wobmFtZTogc3RyaW5nKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmNhbGVuZGFyRm9ybS5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXRDYWxlbmRhck5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ2FjYWRlbWljJzpcbiAgICAgICAgcmV0dXJuICdIb3JhcmlvIGRlIGNsYXNlcyc7XG4gICAgICBjYXNlICdsaWZlJzpcbiAgICAgICAgcmV0dXJuICdWaWRhJztcbiAgICAgIGNhc2UgJ2V2ZW50cyc6XG4gICAgICAgIHJldHVybiAnRXZlbnRvcyc7XG4gICAgICBjYXNlICdzYXZlX3RoZV9kYXRlJzpcbiAgICAgICAgcmV0dXJuICdTYXZlIHRoZSBkYXRlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIGdldEJ1bGxldENsYXNzKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydibWJfY2FsZW5kYXItZXZlbnQtYnVsbGV0JywgYGJtYl9jYWxlbmRhci1ldmVudC1idWxsZXQtJHtuYW1lfWBdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm1iX2NhbGVuZGFyXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGdldEhlaWdodChoZWlnaHQoKSkgfVwiPlxuICBAaWYgKGlzTW9iaWxlSGVhZGVyKSB7XG4gICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGVcbiAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICBbZXZlbnRzXT1cImZpbHRlcmVkRXZlbnRzKClcIlxuICAgICAgKG9uQ3VycmVudERhdGVDaGFuZ2UpPVwiaGFuZGxlQ3VycmVudERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbd2Vla0RheXNdPVwicmVuZGVyV2Vla0RheXMoKVwiXG4gICAgICBbY2FsZW5kYXJUaXRsZV09XCJjYWxlbmRhclRpdGxlKClcIlxuICAgICAgW2Rpc2FibGVNb2JpbGVGaWx0ZXJdPVwiZGlzYWJsZU1vYmlsZUZpbHRlcigpXCJcbiAgICAgIChvbkNsb3NlKT1cImhhbmRsZUNsb3NlKClcIlxuICAgICAgKHNob3dGaWx0ZXJzKT1cImhhbmRsZVNob3dNb2RhbEZpbHRlcigpXCJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8Ym1iLWNhbGVuZGFyLWhlYWRlclxuICAgICAgW3dlZWtEYXlzXT1cInJlbmRlcldlZWtEYXlzKClcIlxuICAgICAgW3ZpZXddPVwidmlldygpXCJcbiAgICAgIFtjdXJyZW50RGF0ZV09XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgIChvblJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVDaGFuZ2UoJGV2ZW50LCB2aXNpYmxlRGF0ZSgpKVwiXG4gICAgICAob25DdXJyZW50RGF0ZUNoYW5nZSk9XCJoYW5kbGVDdXJyZW50RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtzaG93RmlsdGVyQnV0dG9uXT1cInNob3dGaWx0ZXJCdXR0b24oKVwiXG4gICAgICAoc2hvd0ZpbHRlcnMpPVwiaGFuZGxlU2hvd01vZGFsRmlsdGVyKClcIlxuICAgIC8+XG4gIH1cbiAgQHN3aXRjaCAodmlldygpKSB7XG4gICAgQGNhc2UgKCdkYXknKSB7XG4gICAgICA8Ym1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheVxuICAgICAgICBbbm93XT1cInZpc2libGVEYXRlKClcIlxuICAgICAgICBbZXZlbnRzXT1cImdldERheUV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIFtjdXJyZW50VGltZV09XCJjdXJyZW50VGltZSgpXCJcbiAgICAgICAgW3N0YXJ0QnVzaW5lc3NIb3VyXT1cInN0YXJ0QnVzaW5lc3NIb3VyKClcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1jb250ZW50XCJcbiAgICAgIC8+XG4gICAgfVxuICAgIEBjYXNlICgnd2VlaycpIHtcbiAgICAgIDxibWItY2FsZW5kYXItdGVtcGxhdGUtd2Vla1xuICAgICAgICBbd2Vla0RheXNdPVwicmVuZGVyV2Vla0RheXMoKVwiXG4gICAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICAgIFtldmVudHNdPVwiZmlsdGVyZWRFdmVudHMoKVwiXG4gICAgICAgIChvblNlbGVjdEV2ZW50KT1cImhhbmRsZVNlbGVjdEV2ZW50KCRldmVudClcIlxuICAgICAgICBbY3VycmVudFRpbWVdPVwiY3VycmVudFRpbWUoKVwiXG4gICAgICAgIFtzdGFydEJ1c2luZXNzSG91cl09XCJzdGFydEJ1c2luZXNzSG91cigpXCJcbiAgICAgICAgW3NlbGVjdGVkV2Vla109XCJzZWxlY3RlZFdlZWsoKVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWNvbnRlbnRcIlxuICAgICAgLz5cbiAgICB9XG4gICAgQGNhc2UgKCdtb250aCcpIHtcbiAgICAgIDxibWItY2FsZW5kYXItdGVtcGxhdGUtbW9udGhcbiAgICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWNvbnRlbnRcIlxuICAgICAgLz5cbiAgICB9XG4gICAgQGRlZmF1bHQge1xuICAgICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrXG4gICAgICAgIFt3ZWVrRGF5c109XCJyZW5kZXJXZWVrRGF5cygpXCJcbiAgICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfY2FsZW5kYXItY29udGVudFwiXG4gICAgICAvPlxuICAgIH1cbiAgfVxuXG4gIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYm1iX2NhbGVuZGFyLWxvYWRlclwiPlxuICAgICAgPGJtYi1sb2FkZXIgW3Nob3dJbmxpbmVdPVwidHJ1ZVwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RldGFpbENvbnRlbnQ+XG4gIEBpZiAoc2VsZWN0ZWRFdmVudCkge1xuICAgIDxzZWN0aW9uPlxuICAgICAgQGlmIChzZWxlY3RlZEV2ZW50LnRhZ3M/Lmxlbmd0aCkge1xuICAgICAgICA8cCBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAwLjVyZW1cIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIHNlbGVjdGVkRXZlbnQudGFnczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8Ym1iLWJhZGdlIFt0ZXh0XT1cIml0ZW0udGV4dFwiIFthcHBlYXJhbmNlXT1cIml0ZW0uYXBwZWFyYW5jZVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L3A+XG4gICAgICB9XG4gICAgICBAaWYgKHNlbGVjdGVkRXZlbnQudGl0bGUpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJibWJfY2FsZW5kYXItZXZlbnQtbW9kYWwtdGl0bGVcIj57eyBzZWxlY3RlZEV2ZW50LnRpdGxlIH19PC9wPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZEV2ZW50LnBsYWNlKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWV2ZW50LW1vZGFsLXBsYWNlXCI+e3sgc2VsZWN0ZWRFdmVudC5wbGFjZSB9fTwvcD5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJibWJfY2FsZW5kYXItZXZlbnQtbW9kYWwtZHVyYXRpb25cIj57eyBnZXREdXJhdGlvbigpIH19PC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGFsVGVtcGxhdGU+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiY2FsZW5kYXJGb3JtXCI+XG4gICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEV2ZW50cygpLmNhbGVuZGFyczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8ZGl2IGJtYkxheW91dCBnYXBTaXplPVwic1wiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgPGJtYi1jaGVja2JveFxuICAgICAgICAgIGJtYkxheW91dEl0ZW1cbiAgICAgICAgICBbaXNEeW5hbWljSXRlbV09XCJ0cnVlXCJcbiAgICAgICAgICBbaW5wdXRJZF09XCInY2hlY2tib3hfJyArIGl0ZW1cIlxuICAgICAgICAgIFtuYW1lXT1cIidjaGVja2JveF8nICsgaXRlbVwiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZ2V0Rm9ybUNvbnRyb2woaXRlbSlcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgYm1iTGF5b3V0SXRlbVxuICAgICAgICAgIFtpc0R5bmFtaWNJdGVtXT1cInRydWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEJ1bGxldENsYXNzKGl0ZW0pXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBibWJMYXlvdXRJdGVtXG4gICAgICAgICAgW2lzRHluYW1pY0l0ZW1dPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbEdyb3ddPVwiMVwiXG4gICAgICAgICAgW2h0bWxGb3JdPVwiJ2NoZWNrYm94XycgKyBpdGVtXCJcbiAgICAgICAgICA+e3sgZ2V0Q2FsZW5kYXJOYW1lKGl0ZW0pIH19PC9sYWJlbFxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxibWItZGl2aWRlciB0eXBlPVwiZGFzaGVkXCI+PC9ibWItZGl2aWRlcj5cbiAgICB9XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUdOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDNUgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDekgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDL0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDbEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1B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ZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFckIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUcxQixNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBIb3N0TGlzdGVuZXIsXG4gIG1vZGVsLFxuICBpbnB1dCxcbiAgVmlld0NoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgb3V0cHV0LFxuICBjb21wdXRlZCxcbiAgc2lnbmFsLFxuICBPbkluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIGVmZmVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZVRpbWUsIEludGVydmFsIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJUZW1wbGF0ZVdlZWtDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi9ibWItY2FsZW5kYXItdGVtcGxhdGUtd2Vlay9ibWItY2FsZW5kYXItdGVtcGxhdGUtd2Vlay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJUZW1wbGF0ZURheUNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS1kYXkvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21tb24vYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vbnRoL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb250aC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi9ibWItY2FsZW5kYXItaGVhZGVyL2JtYi1jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkNhbGVuZGFyVGVtcGxhdGVNb2JpbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi9ibWItY2FsZW5kYXItdGVtcGxhdGUtbW9iaWxlL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1sb2FkZXIvYm1iLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSUJtYkNhbGVuZGFyRXZlbnQsXG4gIElCbWJDYWxlbmRhckV2ZW50Q2xpY2ssXG4gIElCbWJDYWxlbmRhclZpZXcsXG4gIElCbWJQYXJzZWREYXRlcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRXZWVrRGF5cywgZ2V0TW9udGhEYXlzLCBERUZBVUxUX0RBVEVfRk9STUFUIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYWxlbmRhci9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IEJtYk5hdGl2ZU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL25hdGl2ZS1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEJtYkJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWJhZGdlL2JtYi1iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJtYkNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWNoZWNrYm94L2JtYi1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1kaXZpZGVyL2JtYi1kaXZpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLWxheW91dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IElCbWJOYXRpdmVNb2RhbCB9IGZyb20gJy4uL2JtYi1tb2RhbC9ibWItbW9kYWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJtYlRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyBCbWJTd2l0Y2hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItc3dpdGNoL2JtYi1zd2l0Y2guY29tcG9uZW50JztcblxuY29uc3QgcGFyc2VGcm9tRm9ybWF0ID0gKGRhdGVTdHJpbmc6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBEYXRlVGltZSA9PiB7XG4gIGlmIChmb3JtYXQudG9Mb3dlckNhc2UoKSA9PT0gJ2lzbycpIHJldHVybiBEYXRlVGltZS5mcm9tSVNPKGRhdGVTdHJpbmcpO1xuXG4gIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0KGRhdGVTdHJpbmcsIGZvcm1hdCk7XG59O1xuXG5leHBvcnQge1xuICBJQm1iQ2FsZW5kYXJFdmVudCxcbiAgSUJtYkNhbGVuZGFyRXZlbnRDbGljayxcbiAgSUJtYkV2ZW50VHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1jYWxlbmRhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZURheUNvbXBvbmVudCxcbiAgICBCbWJDYWxlbmRhclRlbXBsYXRlV2Vla0NvbXBvbmVudCxcbiAgICBCbWJDYWxlbmRhclRlbXBsYXRlTW9udGhDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vYmlsZUNvbXBvbmVudCxcbiAgICBCbWJCYWRnZUNvbXBvbmVudCxcbiAgICBCbWJMb2FkZXJDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCbWJDaGVja2JveENvbXBvbmVudCxcbiAgICBCbWJEaXZpZGVyQ29tcG9uZW50LFxuICAgIEJtYkxheW91dERpcmVjdGl2ZSxcbiAgICBCbWJMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgQm1iU3dpdGNoQ29tcG9uZW50LFxuICBdLFxuICBzdHlsZVVybDogJy4vYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHZpZXcgPSBtb2RlbDxJQm1iQ2FsZW5kYXJWaWV3Pignd2VlaycpOyAvLyBpbnRlcm5hbFxuICBmaWx0ZXJzID0gbW9kZWw8eyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcbiAgY2FsZW5kYXJUaW1lem9uZSA9IGlucHV0PHN0cmluZz4oXG4gICAgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxuICApO1xuICBjbGllbnRUaW1lem9uZSA9IGlucHV0PHN0cmluZz4oXG4gICAgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxuICApO1xuICBoZWlnaHQgPSBpbnB1dDxudW1iZXIgfCBzdHJpbmc+KCcxMDAlJyk7XG4gIHN0YXJ0QnVzaW5lc3NIb3VyID0gaW5wdXQ8bnVtYmVyPig4KTtcbiAgY2FsZW5kYXJUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgZGF0ZUZvcm1hdCA9IGlucHV0PHN0cmluZz4oREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gIGV2ZW50cyA9IGNvbXB1dGVkPElCbWJDYWxlbmRhckV2ZW50W10+KCgpID0+XG4gICAgdGhpcy5ldmVudHNTaWduYWwuZ2V0RXZlbnRMaXN0KCksXG4gICk7XG4gIHNob3dGaWx0ZXJCdXR0b24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGRpc2FibGVNb2JpbGVGaWx0ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZpc2libGVEYXRlID0gbW9kZWw8RGF0ZVRpbWU+KERhdGVUaW1lLm5vdygpKTsgLy8gaW50ZXJuYWxcblxuICBjdXJyZW50RGF0ZSA9IGlucHV0PHN0cmluZz4oJycpOyAvLyBEZXByZWNhdGVkXG5cbiAgb25EYXRlQ2hhbmdlID0gb3V0cHV0PGFueT4oKTtcbiAgb25DbG9zZSA9IG91dHB1dDxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRXZWVrID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aXNpYmxlRGF0ZSgpLndlZWtOdW1iZXIpO1xuICB3ZWVrTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aXNpYmxlRGF0ZSgpLndlZWtOdW1iZXIpO1xuICByZW5kZXJXZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IGdldFdlZWtEYXlzKHRoaXMudmlzaWJsZURhdGUoKSkpO1xuICBpc0xvYWRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmV2ZW50c1NpZ25hbC5nZXRJc0xvYWRpbmcoKSk7XG4gIHNlbGVjdGVkRXZlbnQ6IElCbWJDYWxlbmRhckV2ZW50IHwgbnVsbCA9IG51bGw7XG4gIGlzTW9iaWxlSGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIG9yZGVyZWRFdmVudHMgPSBjb21wdXRlZDxJQm1iUGFyc2VkRGF0ZXM+KCgpID0+IHtcbiAgICBjb25zdCB3ZWVrcyA9IHRoaXMuZXZlbnRzKCkucmVkdWNlKFxuICAgICAgKGFjYzogSUJtYlBhcnNlZERhdGVzLCBldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBwYXJzZUZyb21Gb3JtYXQoZXZlbnQuc3RhcnQsIHRoaXMuZGF0ZUZvcm1hdCgpKTtcbiAgICAgICAgY29uc3QgZW5kRGF0ZSA9IHBhcnNlRnJvbUZvcm1hdChldmVudC5lbmQsIHRoaXMuZGF0ZUZvcm1hdCgpKTtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgIGNvbnN0IHdlZWsgPSBzdGFydERhdGUud2Vla051bWJlcjtcbiAgICAgICAgY29uc3Qgc3RyaW5nRGF0ZSA9IHN0YXJ0RGF0ZS50b0Zvcm1hdCgneXl5eS1NTS1kZCcpO1xuXG4gICAgICAgIGlmICghYWNjW3dlZWtdKSBhY2Nbd2Vla10gPSB7fTtcbiAgICAgICAgaWYgKCFhY2Nbd2Vla11bc3RyaW5nRGF0ZV0pIGFjY1t3ZWVrXVtzdHJpbmdEYXRlXSA9IFtdO1xuICAgICAgICBhY2Nbd2Vla11bc3RyaW5nRGF0ZV0ucHVzaCh7IC4uLmV2ZW50LCBzdGFydERhdGUsIGVuZERhdGUsIGludGVydmFsIH0pO1xuXG4gICAgICAgIGlmIChldmVudC5jYWxlbmRhciAmJiAhYWNjLmNhbGVuZGFycz8uaW5jbHVkZXMoZXZlbnQuY2FsZW5kYXIpKSB7XG4gICAgICAgICAgYWNjLmNhbGVuZGFycz8ucHVzaChldmVudC5jYWxlbmRhcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHsgY2FsZW5kYXJzOiBbXSB9IGFzIElCbWJQYXJzZWREYXRlcyxcbiAgICApO1xuXG4gICAgY29uc3Qgb3JkZXJlZERhdGVzID0ge30gYXMgSUJtYlBhcnNlZERhdGVzO1xuXG4gICAgZm9yIChjb25zdCB3ZWVrIGluIHdlZWtzKSB7XG4gICAgICBpZiAod2VlayA9PT0gJ2NhbGVuZGFycycpIHtcbiAgICAgICAgb3JkZXJlZERhdGVzW3dlZWtdID0gd2Vla3Nbd2Vla107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcmRlcmVkRGF0ZXNbd2Vla10gPSB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGRhdGUgaW4gd2Vla3Nbd2Vla10pIHtcbiAgICAgICAgICBvcmRlcmVkRGF0ZXNbd2Vla11bZGF0ZV0gPSB3ZWVrc1t3ZWVrXVtkYXRlXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhRGF0ZSA9IGEuc3RhcnREYXRlID8/IERhdGVUaW1lLmludmFsaWQoJ0ludmFsaWQgRGF0ZScpO1xuICAgICAgICAgICAgY29uc3QgYkRhdGUgPSBiLnN0YXJ0RGF0ZSA/PyBEYXRlVGltZS5pbnZhbGlkKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgICAgICAgIHJldHVybiBhRGF0ZSA8PSBiRGF0ZSA/IC0xIDogMTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvcmRlcmVkRGF0ZXM7XG4gIH0pO1xuICBmaWx0ZXJlZEV2ZW50cyA9IGNvbXB1dGVkPElCbWJQYXJzZWREYXRlcz4oKCkgPT4ge1xuICAgIGNvbnN0IG5ld0V2ZW50cyA9IHt9IGFzIElCbWJQYXJzZWREYXRlcztcbiAgICBmb3IgKGNvbnN0IHdlZWsgaW4gdGhpcy5vcmRlcmVkRXZlbnRzKCkpIHtcbiAgICAgIGlmICh3ZWVrICE9PSAnY2FsZW5kYXJzJykge1xuICAgICAgICBuZXdFdmVudHNbd2Vla10gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBkYXRlIGluIHRoaXMub3JkZXJlZEV2ZW50cygpW3dlZWtdKSB7XG4gICAgICAgICAgbmV3RXZlbnRzW3dlZWtdW2RhdGVdID0gdGhpcy5vcmRlcmVkRXZlbnRzKClbd2Vla11bZGF0ZV0ubWFwKFxuICAgICAgICAgICAgKGV2ZW50KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgICAgaXNWaXNpYmxlOlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycygpKS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMoKVtldmVudC5jYWxlbmRhciB8fCAnRGVmYXVsdCddICE9PSBmYWxzZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdFdmVudHMuY2FsZW5kYXJzID0gdGhpcy5vcmRlcmVkRXZlbnRzKCkuY2FsZW5kYXJzO1xuXG4gICAgcmV0dXJuIG5ld0V2ZW50cztcbiAgfSk7XG4gIGZpbHRlck1vZGFsSWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNhbGVuZGFyRm9ybTogRm9ybUdyb3VwPHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2w8YW55PiB9PiA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIEBWaWV3Q2hpbGQoJ2RldGFpbENvbnRlbnQnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGRldGFpbENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb2RhbFRlbXBsYXRlJykgbW9kYWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIHJlc2l6ZSgpIHtcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDAwKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KCdkYXknKTtcbiAgICAgIHRoaXMuaXNNb2JpbGVIZWFkZXIgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlSGVhZGVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudHNTaWduYWw6IEJtYkNhbGVuZGFyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogQm1iTmF0aXZlTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25zU2VydmljZTogQm1iVHJhbnNsYXRpb25zU2VydmljZSxcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFycyA9IHRoaXMuZmlsdGVyZWRFdmVudHMoKS5jYWxlbmRhcnMgfHwgW107XG4gICAgICBjYWxlbmRhcnMuZm9yRWFjaCgoY2FsZW5kYXIpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgICBjYWxlbmRhcixcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2wodGhpcy5maWx0ZXJzKClbY2FsZW5kYXJdIHx8IHRydWUpLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjdXJyZW50VGltZSA9IHNpZ25hbDxEYXRlVGltZT4oRGF0ZVRpbWUubm93KCkpO1xuICBwcml2YXRlIHRpbWVySWQ6IGFueTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50aW1lcklkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXJJZCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDApIHtcbiAgICAgIHRoaXMudmlldy5zZXQoJ2RheScpO1xuICAgICAgdGhpcy5pc01vYmlsZUhlYWRlciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3LnVwZGF0ZSgodmFsdWUpID0+ICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDAgPyAnZGF5JyA6IHZhbHVlKSk7XG4gICAgdGhpcy5jYWxlbmRhckZvcm0uYWRkQ29udHJvbChcbiAgICAgICdlbmFibGVfbm90aWZpY2F0aW9ucycsXG4gICAgICBuZXcgRm9ybUNvbnRyb2wodHJ1ZSksXG4gICAgKTtcblxuICAgIHRoaXMudGltZXJJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVGltZSgpO1xuICAgIH0sIDYwMDAwKTsgLy8gQWN0dWFsaXphIGNhZGEgNjAwMDAgbWlsaXNlZ3VuZG9zICgxIG1pbnV0bylcbiAgfVxuXG4gIHVwZGF0ZVRpbWUoKSB7XG4gICAgdGhpcy5jdXJyZW50VGltZS5zZXQoRGF0ZVRpbWUubm93KCkpO1xuICB9XG5cbiAgaGFuZGxlRGF0ZUNoYW5nZShyYW5nZTogSUJtYkNhbGVuZGFyVmlldywgbm93OiBEYXRlVGltZSk6IHZvaWQge1xuICAgIHRoaXMudmlldy5zZXQocmFuZ2UpO1xuICAgIGxldCB2aXNpYmxlRGF0ZXM6IChzdHJpbmcgfCBudWxsKVtdID0gW107XG5cbiAgICBzd2l0Y2ggKHJhbmdlKSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICB2aXNpYmxlRGF0ZXMgPSBnZXRNb250aERheXMobm93KS5tYXAoKGRhdGUpID0+IGRhdGUudG9JU08oKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgdmlzaWJsZURhdGVzID0gZ2V0V2Vla0RheXMobm93KS5tYXAoKGRhdGUpID0+IGRhdGUudG9JU08oKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHZpc2libGVEYXRlcyA9IGdldE1vbnRoRGF5cyhub3cpLm1hcCgoZGF0ZSkgPT4gZGF0ZS50b0lTTygpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMub25EYXRlQ2hhbmdlLmVtaXQoe1xuICAgICAgcmFuZ2UsXG4gICAgICBub3c6IG5vdy50b0lTTygpLFxuICAgICAgdmlzaWJsZURhdGVzLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ3VycmVudERhdGVDaGFuZ2UobmV3RGF0ZTogRGF0ZVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVEYXRlLnNldChuZXdEYXRlKTtcbiAgfVxuXG4gIGdldERheUV2ZW50cygpOiBJQm1iQ2FsZW5kYXJFdmVudFtdIHtcbiAgICBjb25zdCB2aXNpYmxlRGF0ZVN0ciA9IHRoaXMudmlzaWJsZURhdGUoKS50b0Zvcm1hdCgneXl5eS1NTS1kZCcpO1xuICAgIGNvbnN0IGV2ZW50cyA9XG4gICAgICB0aGlzLmZpbHRlcmVkRXZlbnRzKClbdGhpcy5zZWxlY3RlZFdlZWsoKV0/Llt2aXNpYmxlRGF0ZVN0cl0gPz8gW107XG4gICAgcmV0dXJuIGV2ZW50cztcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEV2ZW50KG5ld0V2ZW50OiBJQm1iQ2FsZW5kYXJFdmVudENsaWNrKTogdm9pZCB7XG4gICAgY29uc3QgeyBldmVudCB9ID0gbmV3RXZlbnQ7XG4gICAgY29uc3QgdGl0bGUgPSBldmVudC5tb2RhbFRpdGxlID8/IGV2ZW50LnRpdGxlO1xuICAgIGNvbnN0IG1vZGFsVGl0bGUgPVxuICAgICAgZXZlbnQuc3RhdHVzID09PSAnZGlzYWJsZWQnID8gYChDYW5jZWxhZG8pICR7dGl0bGV9YCA6IHRpdGxlO1xuXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50ID0gZXZlbnQ7XG5cbiAgICBjb25zdCBkYXRhOiBJQm1iTmF0aXZlTW9kYWwgPSB7XG4gICAgICB0aXRsZTogbW9kYWxUaXRsZSxcbiAgICAgIHN1YnRpdGxlOiBldmVudC5zdWJ0aXRsZSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZGV0YWlsQ29udGVudCxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgfTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuTW9kYWwoZGF0YSk7XG4gIH1cblxuICBpc0FuRXZlbnRTZWxlY3RlZChldmVudDogSUJtYkNhbGVuZGFyRXZlbnRDbGljayB8IG51bGwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFldmVudDtcbiAgfVxuXG4gIGdldEhlaWdodChoZWlnaHQ6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBoZWlnaHQgPT09ICdudW1iZXInKSByZXR1cm4gYCR7aGVpZ2h0fXB4YDtcblxuICAgIHJldHVybiBoZWlnaHQ7XG4gIH1cblxuICBnZXREdXJhdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFdmVudCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBgJHtEYXRlVGltZS5mcm9tSVNPKHRoaXMuc2VsZWN0ZWRFdmVudC5zdGFydCkudG9Gb3JtYXQoJ2hoOm1tIGEnKX0gLSAke0RhdGVUaW1lLmZyb21JU08odGhpcy5zZWxlY3RlZEV2ZW50LmVuZCkudG9Gb3JtYXQoJ2hoOm1tIGEnKX1gO1xuICB9XG5cbiAgaGFuZGxlQ2xvc2UoKSB7XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoJ2Nsb3NlJyk7XG4gIH1cblxuICBoYW5kbGVTaG93TW9kYWxGaWx0ZXIoKSB7XG4gICAgdGhpcy5maWx0ZXJNb2RhbElkLnNldChcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW5Nb2RhbCh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0aW9uc1NlcnZpY2UudHJhbnNsYXRlKCdjYWxlbmRhci5tb2RhbC50aXRsZScpLFxuICAgICAgICBzdWJ0aXRsZTogdGhpcy50cmFuc2xhdGlvbnNTZXJ2aWNlLnRyYW5zbGF0ZSgnY2FsZW5kYXIuc3VidGl0bGUnKSxcbiAgICAgICAgY29udGVudDogdGhpcy5tb2RhbFRlbXBsYXRlLFxuICAgICAgICBzaXplOiAneC1zbWFsbCcsXG4gICAgICAgIGNsb3NlTW9kYWxDbGlja2VkOiAoZXZlbnQ6IHVua25vd24pID0+IHRoaXMuaGFuZGxlRm9ybVJlc2V0KGV2ZW50KSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJ1dHRvbk5hbWU6ICdzYXZlJyxcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0aW9uc1NlcnZpY2UudHJhbnNsYXRlKCdjYWxlbmRhci5maWx0ZXJfc2F2ZScpLFxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLmhhbmRsZUFwcGx5RmlsdGVycygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgaGFuZGxlRm9ybVJlc2V0KF86IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgY2FsZW5kYXIgaW4gdGhpcy5jYWxlbmRhckZvcm0uY29udHJvbHMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXJzKCkpLmxlbmd0aCA9PT0gMCB8fCAhIXRoaXMuZmlsdGVycygpW2NhbGVuZGFyXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJGb3JtLmNvbnRyb2xzW2NhbGVuZGFyXS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQXBwbHlGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkQ2FsZW5kYXJzID0gT2JqZWN0LmtleXModGhpcy5jYWxlbmRhckZvcm0uY29udHJvbHMpLnJlZHVjZTx7XG4gICAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICAgIH0+KChhY2MsIGNhbGVuZGFyKSA9PiB7XG4gICAgICBhY2NbY2FsZW5kYXJdID0gdGhpcy5jYWxlbmRhckZvcm0uY29udHJvbHNbY2FsZW5kYXJdLnZhbHVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgdGhpcy5maWx0ZXJzLnNldChzZWxlY3RlZENhbGVuZGFycyk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuY2xvc2VNb2RhbCh0aGlzLmZpbHRlck1vZGFsSWQoKSBhcyBzdHJpbmcpO1xuICAgIHRoaXMuZmlsdGVyTW9kYWxJZC5zZXQobnVsbCk7XG4gIH1cblxuICBnZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJGb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldENhbGVuZGFyTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSAnYWNhZGVtaWMnOlxuICAgICAgICByZXR1cm4gJ0hvcmFyaW8gZGUgY2xhc2VzJztcbiAgICAgIGNhc2UgJ2xpZmUnOlxuICAgICAgICByZXR1cm4gJ1ZpZGEnO1xuICAgICAgY2FzZSAnZXZlbnRzJzpcbiAgICAgICAgcmV0dXJuICdFdmVudG9zJztcbiAgICAgIGNhc2UgJ3NhdmVfdGhlX2RhdGUnOlxuICAgICAgICByZXR1cm4gJ1NhdmUgdGhlIGRhdGUnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0QnVsbGV0Q2xhc3MobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2JtYl9jYWxlbmRhci1ldmVudC1idWxsZXQnLCBgYm1iX2NhbGVuZGFyLWV2ZW50LWJ1bGxldC0ke25hbWV9YF07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJibWJfY2FsZW5kYXJcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogZ2V0SGVpZ2h0KGhlaWdodCgpKSB9XCI+XG4gIEBpZiAoaXNNb2JpbGVIZWFkZXIpIHtcbiAgICA8Ym1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vYmlsZVxuICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgIFtldmVudHNdPVwiZmlsdGVyZWRFdmVudHMoKVwiXG4gICAgICAob25DdXJyZW50RGF0ZUNoYW5nZSk9XCJoYW5kbGVDdXJyZW50RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFt3ZWVrRGF5c109XCJyZW5kZXJXZWVrRGF5cygpXCJcbiAgICAgIFtjYWxlbmRhclRpdGxlXT1cImNhbGVuZGFyVGl0bGUoKVwiXG4gICAgICBbZGlzYWJsZU1vYmlsZUZpbHRlcl09XCJkaXNhYmxlTW9iaWxlRmlsdGVyKClcIlxuICAgICAgKG9uQ2xvc2UpPVwiaGFuZGxlQ2xvc2UoKVwiXG4gICAgICAoc2hvd0ZpbHRlcnMpPVwiaGFuZGxlU2hvd01vZGFsRmlsdGVyKClcIlxuICAgIC8+XG4gIH0gQGVsc2Uge1xuICAgIDxibWItY2FsZW5kYXItaGVhZGVyXG4gICAgICBbd2Vla0RheXNdPVwicmVuZGVyV2Vla0RheXMoKVwiXG4gICAgICBbdmlld109XCJ2aWV3KClcIlxuICAgICAgW2N1cnJlbnREYXRlXT1cInZpc2libGVEYXRlKClcIlxuICAgICAgKG9uUmFuZ2VDaGFuZ2UpPVwiaGFuZGxlRGF0ZUNoYW5nZSgkZXZlbnQsIHZpc2libGVEYXRlKCkpXCJcbiAgICAgIChvbkN1cnJlbnREYXRlQ2hhbmdlKT1cImhhbmRsZUN1cnJlbnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW3Nob3dGaWx0ZXJCdXR0b25dPVwic2hvd0ZpbHRlckJ1dHRvbigpXCJcbiAgICAgIChzaG93RmlsdGVycyk9XCJoYW5kbGVTaG93TW9kYWxGaWx0ZXIoKVwiXG4gICAgLz5cbiAgfVxuICBAc3dpdGNoICh2aWV3KCkpIHtcbiAgICBAY2FzZSAoJ2RheScpIHtcbiAgICAgIDxibWItY2FsZW5kYXItdGVtcGxhdGUtZGF5XG4gICAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICAgIFtldmVudHNdPVwiZ2V0RGF5RXZlbnRzKClcIlxuICAgICAgICAob25TZWxlY3RFdmVudCk9XCJoYW5kbGVTZWxlY3RFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgW2N1cnJlbnRUaW1lXT1cImN1cnJlbnRUaW1lKClcIlxuICAgICAgICBbc3RhcnRCdXNpbmVzc0hvdXJdPVwic3RhcnRCdXNpbmVzc0hvdXIoKVwiXG4gICAgICAgIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXQoKVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWNvbnRlbnRcIlxuICAgICAgLz5cbiAgICB9XG4gICAgQGNhc2UgKCd3ZWVrJykge1xuICAgICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrXG4gICAgICAgIFt3ZWVrRGF5c109XCJyZW5kZXJXZWVrRGF5cygpXCJcbiAgICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIFtjdXJyZW50VGltZV09XCJjdXJyZW50VGltZSgpXCJcbiAgICAgICAgW3N0YXJ0QnVzaW5lc3NIb3VyXT1cInN0YXJ0QnVzaW5lc3NIb3VyKClcIlxuICAgICAgICBbc2VsZWN0ZWRXZWVrXT1cInNlbGVjdGVkV2VlaygpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfY2FsZW5kYXItY29udGVudFwiXG4gICAgICAvPlxuICAgIH1cbiAgICBAY2FzZSAoJ21vbnRoJykge1xuICAgICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb250aFxuICAgICAgICBbbm93XT1cInZpc2libGVEYXRlKClcIlxuICAgICAgICBbZXZlbnRzXT1cImZpbHRlcmVkRXZlbnRzKClcIlxuICAgICAgICAob25TZWxlY3RFdmVudCk9XCJoYW5kbGVTZWxlY3RFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfY2FsZW5kYXItY29udGVudFwiXG4gICAgICAvPlxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8Ym1iLWNhbGVuZGFyLXRlbXBsYXRlLXdlZWtcbiAgICAgICAgW3dlZWtEYXlzXT1cInJlbmRlcldlZWtEYXlzKClcIlxuICAgICAgICBbbm93XT1cInZpc2libGVEYXRlKClcIlxuICAgICAgICBbZXZlbnRzXT1cImZpbHRlcmVkRXZlbnRzKClcIlxuICAgICAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1jb250ZW50XCJcbiAgICAgIC8+XG4gICAgfVxuICB9XG5cbiAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJibWJfY2FsZW5kYXItbG9hZGVyXCI+XG4gICAgICA8Ym1iLWxvYWRlciBbc2hvd0lubGluZV09XCJ0cnVlXCIgLz5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlsQ29udGVudD5cbiAgQGlmIChzZWxlY3RlZEV2ZW50KSB7XG4gICAgPHNlY3Rpb24+XG4gICAgICBAaWYgKHNlbGVjdGVkRXZlbnQudGFncz8ubGVuZ3RoKSB7XG4gICAgICAgIDxwIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDAuNXJlbVwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2VsZWN0ZWRFdmVudC50YWdzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxibWItYmFkZ2UgW3RleHRdPVwiaXRlbS50ZXh0XCIgW2FwcGVhcmFuY2VdPVwiaXRlbS5hcHBlYXJhbmNlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICAgIEBpZiAoc2VsZWN0ZWRFdmVudC50aXRsZSkge1xuICAgICAgICA8cCBjbGFzcz1cImJtYl9jYWxlbmRhci1ldmVudC1tb2RhbC10aXRsZVwiPnt7IHNlbGVjdGVkRXZlbnQudGl0bGUgfX08L3A+XG4gICAgICB9XG4gICAgICBAaWYgKHNlbGVjdGVkRXZlbnQucGxhY2UpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJibWJfY2FsZW5kYXItZXZlbnQtbW9kYWwtcGxhY2VcIj57eyBzZWxlY3RlZEV2ZW50LnBsYWNlIH19PC9wPlxuICAgICAgfVxuICAgICAgPGRpdiBjbGFzcz1cImJtYl9jYWxlbmRhci1ldmVudC1tb2RhbC1kdXJhdGlvblwiPnt7IGdldER1cmF0aW9uKCkgfX08L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxUZW1wbGF0ZT5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjYWxlbmRhckZvcm1cIj5cbiAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkRXZlbnRzKCkuY2FsZW5kYXJzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxkaXYgYm1iTGF5b3V0IGdhcFNpemU9XCJzXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8Ym1iLWNoZWNrYm94XG4gICAgICAgICAgYm1iTGF5b3V0SXRlbVxuICAgICAgICAgIFtpc0R5bmFtaWNJdGVtXT1cInRydWVcIlxuICAgICAgICAgIFtpbnB1dElkXT1cIidjaGVja2JveF8nICsgaXRlbVwiXG4gICAgICAgICAgW25hbWVdPVwiJ2NoZWNrYm94XycgKyBpdGVtXCJcbiAgICAgICAgICBbY29udHJvbF09XCJnZXRGb3JtQ29udHJvbChpdGVtKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBibWJMYXlvdXRJdGVtXG4gICAgICAgICAgW2lzRHluYW1pY0l0ZW1dPVwidHJ1ZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0QnVsbGV0Q2xhc3MoaXRlbSlcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGJtYkxheW91dEl0ZW1cbiAgICAgICAgICBbaXNEeW5hbWljSXRlbV09XCJ0cnVlXCJcbiAgICAgICAgICBbY29sR3Jvd109XCIxXCJcbiAgICAgICAgICBbaHRtbEZvcl09XCInY2hlY2tib3hfJyArIGl0ZW1cIlxuICAgICAgICAgID57eyBnZXRDYWxlbmRhck5hbWUoaXRlbSkgfX08L2xhYmVsXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8Ym1iLWRpdmlkZXIgdHlwZT1cInNvbGlkXCI+PC9ibWItZGl2aWRlcj5cbiAgICA8Ym1iLXN3aXRjaFxuICAgICAgW2lzQ2hlY2tlZF09XCJ0cnVlXCJcbiAgICAgIFthcmlhTGFiZWxdPVwiKCdjYWxlbmRhci5tb2RhbC5ub3RpZmljYXRpb25fbGFiZWwnIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbcmlnaHRUZXh0XT1cIignY2FsZW5kYXIubW9kYWwubm90aWZpY2F0aW9uX2xhYmVsJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgbmFtZT1cImVuYWJsZV9ub3RpZmljYXRpb25zXCJcbiAgICAgIGlucHV0SWQ9XCJlbmFibGVfbm90aWZpY2F0aW9uc1wiXG4gICAgICBbY29udHJvbF09XCIgZ2V0Rm9ybUNvbnRyb2woJ2VuYWJsZV9ub3RpZmljYXRpb25zJylcIlxuICAgID48L2JtYi1zd2l0Y2g+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=