@acorex/components 18.12.44 → 18.14.1-next.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. package/esm2022/alert/lib/alert.component.mjs +10 -14
  2. package/esm2022/avatar/lib/avatar.component.mjs +2 -2
  3. package/esm2022/calendar/lib/calendar.component.mjs +3 -3
  4. package/esm2022/common/lib/components/selection-base.component.class.mjs +2 -1
  5. package/esm2022/common/lib/components/value-component.class.mjs +5 -4
  6. package/esm2022/menu/lib/context-menu.component.mjs +2 -2
  7. package/esm2022/menu/lib/menu.component.mjs +2 -2
  8. package/esm2022/rate-picker/lib/rate-picker.component.mjs +2 -2
  9. package/esm2022/search-box/lib/search-box.component.mjs +3 -3
  10. package/esm2022/select-box/lib/select-box.component.mjs +2 -2
  11. package/esm2022/selection-list/lib/selection-list.component.mjs +39 -91
  12. package/esm2022/time-line/lib/time-line-item.component.mjs +3 -3
  13. package/esm2022/time-line/lib/time-line.component.mjs +18 -4
  14. package/esm2022/uploader/lib/uploader-zone.directive.mjs +2 -2
  15. package/fesm2022/acorex-components-action-sheet.mjs +1 -1
  16. package/fesm2022/acorex-components-alert.mjs +10 -14
  17. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  18. package/fesm2022/acorex-components-audio-wave.mjs +1 -1
  19. package/fesm2022/acorex-components-avatar.mjs +3 -3
  20. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  21. package/fesm2022/acorex-components-badge.mjs +1 -1
  22. package/fesm2022/acorex-components-bottom-navigation.mjs +1 -1
  23. package/fesm2022/acorex-components-breadcrumbs.mjs +1 -1
  24. package/fesm2022/acorex-components-button-group.mjs +1 -1
  25. package/fesm2022/acorex-components-button.mjs +1 -1
  26. package/fesm2022/acorex-components-calendar.mjs +3 -3
  27. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  28. package/fesm2022/acorex-components-check-box.mjs +1 -1
  29. package/fesm2022/acorex-components-chips.mjs +1 -1
  30. package/fesm2022/acorex-components-circular-progress.mjs +1 -1
  31. package/fesm2022/acorex-components-collapse.mjs +1 -1
  32. package/fesm2022/acorex-components-color-box.mjs +1 -1
  33. package/fesm2022/acorex-components-color-palette.mjs +1 -1
  34. package/fesm2022/acorex-components-comment.mjs +1 -1
  35. package/fesm2022/acorex-components-common.mjs +6 -4
  36. package/fesm2022/acorex-components-common.mjs.map +1 -1
  37. package/fesm2022/acorex-components-conversation.mjs +1 -1
  38. package/fesm2022/acorex-components-data-pager.mjs +1 -1
  39. package/fesm2022/acorex-components-data-table.mjs +1 -1
  40. package/fesm2022/acorex-components-datetime-box.mjs +1 -1
  41. package/fesm2022/acorex-components-datetime-input.mjs +1 -1
  42. package/fesm2022/acorex-components-datetime-picker.mjs +1 -1
  43. package/fesm2022/acorex-components-decorators.mjs +1 -1
  44. package/fesm2022/acorex-components-dialog.mjs +1 -1
  45. package/fesm2022/acorex-components-drawer.mjs +1 -1
  46. package/fesm2022/acorex-components-dropdown-button.mjs +1 -1
  47. package/fesm2022/acorex-components-dropdown.mjs +1 -1
  48. package/fesm2022/acorex-components-form.mjs +1 -1
  49. package/fesm2022/acorex-components-image-editor.mjs +1 -1
  50. package/fesm2022/acorex-components-image.mjs +1 -1
  51. package/fesm2022/acorex-components-json-viewer.mjs +1 -1
  52. package/fesm2022/acorex-components-label.mjs +1 -1
  53. package/fesm2022/acorex-components-list.mjs +1 -1
  54. package/fesm2022/acorex-components-loading-dialog.mjs +1 -1
  55. package/fesm2022/acorex-components-loading.mjs +1 -1
  56. package/fesm2022/acorex-components-map.mjs +1 -1
  57. package/fesm2022/acorex-components-media-viewer.mjs +1 -1
  58. package/fesm2022/acorex-components-menu.mjs +5 -5
  59. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  60. package/fesm2022/acorex-components-nav.mjs +1 -1
  61. package/fesm2022/acorex-components-navbar.mjs +1 -1
  62. package/fesm2022/acorex-components-notification.mjs +1 -1
  63. package/fesm2022/acorex-components-number-box.mjs +1 -1
  64. package/fesm2022/acorex-components-otp.mjs +1 -1
  65. package/fesm2022/acorex-components-page.mjs +1 -1
  66. package/fesm2022/acorex-components-paint.mjs +1 -1
  67. package/fesm2022/acorex-components-password-box.mjs +1 -1
  68. package/fesm2022/acorex-components-phone-box.mjs +1 -1
  69. package/fesm2022/acorex-components-picker.mjs +1 -1
  70. package/fesm2022/acorex-components-popover.mjs +1 -1
  71. package/fesm2022/acorex-components-popup.mjs +1 -1
  72. package/fesm2022/acorex-components-progress-bar.mjs +1 -1
  73. package/fesm2022/acorex-components-qrcode.mjs +1 -1
  74. package/fesm2022/acorex-components-radio.mjs +1 -1
  75. package/fesm2022/acorex-components-range-slider.mjs +1 -1
  76. package/fesm2022/acorex-components-rate-picker.mjs +2 -2
  77. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  78. package/fesm2022/acorex-components-result.mjs +1 -1
  79. package/fesm2022/acorex-components-routing-progress.mjs +1 -1
  80. package/fesm2022/acorex-components-scheduler.mjs +1 -1
  81. package/fesm2022/acorex-components-search-box.mjs +3 -3
  82. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  83. package/fesm2022/acorex-components-select-box.mjs +2 -2
  84. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  85. package/fesm2022/acorex-components-selection-list.mjs +39 -91
  86. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  87. package/fesm2022/acorex-components-side-menu.mjs +1 -1
  88. package/fesm2022/acorex-components-skeleton.mjs +1 -1
  89. package/fesm2022/acorex-components-slider.mjs +1 -1
  90. package/fesm2022/acorex-components-step-wizard.mjs +1 -1
  91. package/fesm2022/acorex-components-switch.mjs +1 -1
  92. package/fesm2022/acorex-components-tabs.mjs +1 -1
  93. package/fesm2022/acorex-components-tag.mjs +1 -1
  94. package/fesm2022/acorex-components-text-area.mjs +1 -1
  95. package/fesm2022/acorex-components-text-box.mjs +1 -1
  96. package/fesm2022/acorex-components-time-line.mjs +19 -5
  97. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  98. package/fesm2022/acorex-components-toast.mjs +1 -1
  99. package/fesm2022/acorex-components-tooltip.mjs +1 -1
  100. package/fesm2022/acorex-components-uploader.mjs +2 -2
  101. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  102. package/fesm2022/acorex-components-wysiwyg.mjs +1 -1
  103. package/package.json +1 -1
  104. package/selection-list/lib/selection-list.component.d.ts +9 -37
  105. package/time-line/lib/time-line.component.d.ts +2 -0
@@ -539,7 +539,7 @@ export class AXCalendarComponent extends classes((MXValueComponent), MXInteracti
539
539
  useExisting: AXCalendarComponent,
540
540
  },
541
541
  AXUnsubscriber,
542
- ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-header\"></ng-content>\n<div class=\"ax-calendar-body\">\n @for(v of views; let i = $index, first = $first, last = $last; track i){\n @switch (activeView) {\n @case ('year') {\n @if(showNavigation)\n {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\" (click)=\"_handleNavClick($event, 'year')\">\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n @if(last){\n <div class=\"ax-calendar-header-buttons\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-next\" (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n @for(slot of v.slots; track slot.text){\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n @if(cellTemplate){\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </div>\n }\n </div>\n }\n @case ('month') {\n @if(showNavigation)\n {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\" (click)=\"_handleNavClick($event, 'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n @if(last){\n <div class=\"ax-calendar-header-buttons\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <div tabindex=\"0\" *ngFor=\"let slot of v.slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n\n @if(cellTemplate){\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n }@else {\n <div [title]=\"slot.tooltip\">\n {{getMonthName(slot.date,'short') | translate | async }}\n </div>\n }\n\n </div>\n </div>\n }\n @default {\n @if(showNavigation)\n {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\" (click)=\"_handleNavClick($event, 'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\" (click)=\"_handleNavClick($event, 'month')\">\n {{getMonthName(v.range.startTime,'long') | translate | async }}\n </button>\n </div>\n @if(last){\n <div class=\"ax-calendar-header-buttons\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _weekdays\">{{ ('dateTime.weekdays.short.'+d) | translate | async }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n @if(cellTemplate){\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else{\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n\n </div>\n </ng-container>\n </div>\n }\n }\n }\n\n</div>\n<ng-content select=\"ax-footer\"></ng-content>", styles: [".ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{outline-color:rgba(var(--ax-color-primary-200))!important;background-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:hover{background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover{background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-footer:is(.ax-dark ax-calendar .ax-calendar-footer:focus,.ax-dark ax-calendar .ax-calendar-footer:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{display:block;width:100%;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));color:rgba(var(--ax-color-surface-fore),var(--tw-text-opacity))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:.25rem;padding-right:.25rem;padding-top:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-color-border-default));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--ax-rounded-border-default);text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-surface-fore));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:2px}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:1px;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{background-color:rgba(var(--ax-color-danger-500))!important;color:rgba(var(--ax-color-danger-fore))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover{background-color:rgba(var(--ax-color-danger-500))!important;border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-left:.5rem;padding-right:.5rem;padding-top:.75rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{position:relative;margin:.125rem;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:.875rem;line-height:1.25rem}ax-calendar .ax-calendar-footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:center}ax-calendar .ax-calendar-footer .ax-today-button{display:block;height:var(--ax-size-default);width:100%;cursor:pointer;border-radius:var(--ax-rounded-border-default);background-color:rgba(var(--ax-color-primary-500));padding-left:1rem;padding-right:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-600))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-500),1)}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
542
+ ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-header\"></ng-content>\n<div class=\"ax-calendar-body\">\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\n @switch (activeView) {\n @case ('year') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-next\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n @for (slot of v.slots; track slot.text) {\n <div\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </div>\n }\n </div>\n }\n @case ('month') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <div\n tabindex=\"0\"\n *ngFor=\"let slot of v.slots\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ getMonthName(slot.date, 'short') | translate | async }}\n </div>\n }\n </div>\n </div>\n }\n @default {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'month')\"\n >\n {{ getMonthName(v.range.startTime, 'long') | translate | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _weekdays\">{{ 'dateTime.weekdays.short.' + d | translate | async }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <div\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </div>\n </ng-container>\n </div>\n }\n }\n }\n</div>\n<ng-content select=\"ax-footer\"></ng-content>\n", styles: [".ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{outline-color:rgba(var(--ax-color-primary-200))!important;background-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-footer:is(.ax-dark ax-calendar .ax-calendar-footer:focus,.ax-dark ax-calendar .ax-calendar-footer:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{display:block;width:100%;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));color:rgba(var(--ax-color-surface-fore),var(--tw-text-opacity))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:.25rem;padding-right:.25rem;padding-top:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-color-border-default));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--ax-rounded-border-default);text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-surface-fore));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:2px}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:1px;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{background-color:rgba(var(--ax-color-danger-500))!important;color:rgba(var(--ax-color-danger-fore))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-500))!important;border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-left:.5rem;padding-right:.5rem;padding-top:.75rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{position:relative;margin:.125rem;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:.875rem;line-height:1.25rem}ax-calendar .ax-calendar-footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:center}ax-calendar .ax-calendar-footer .ax-today-button{display:block;height:var(--ax-size-default);width:100%;cursor:pointer;border-radius:var(--ax-rounded-border-default);background-color:rgba(var(--ax-color-primary-500));padding-left:1rem;padding-right:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-600))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-500),1)}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
543
543
  }
544
544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCalendarComponent, decorators: [{
545
545
  type: Component,
@@ -589,7 +589,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
589
589
  useExisting: AXCalendarComponent,
590
590
  },
591
591
  AXUnsubscriber,
592
- ], template: "<ng-content select=\"ax-header\"></ng-content>\n<div class=\"ax-calendar-body\">\n @for(v of views; let i = $index, first = $first, last = $last; track i){\n @switch (activeView) {\n @case ('year') {\n @if(showNavigation)\n {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\" (click)=\"_handleNavClick($event, 'year')\">\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n @if(last){\n <div class=\"ax-calendar-header-buttons\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-next\" (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n @for(slot of v.slots; track slot.text){\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n @if(cellTemplate){\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </div>\n }\n </div>\n }\n @case ('month') {\n @if(showNavigation)\n {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\" (click)=\"_handleNavClick($event, 'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n @if(last){\n <div class=\"ax-calendar-header-buttons\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <div tabindex=\"0\" *ngFor=\"let slot of v.slots\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\">\n\n @if(cellTemplate){\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n }@else {\n <div [title]=\"slot.tooltip\">\n {{getMonthName(slot.date,'short') | translate | async }}\n </div>\n }\n\n </div>\n </div>\n }\n @default {\n @if(showNavigation)\n {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\" (click)=\"_handleNavClick($event, 'year')\">\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\" (click)=\"_handleNavClick($event, 'month')\">\n {{getMonthName(v.range.startTime,'long') | translate | async }}\n </button>\n </div>\n @if(last){\n <div class=\"ax-calendar-header-buttons\">\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button type=\"button\" [attr.disabled]=\"disabled ? '' : null\" [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\" (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\">\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _weekdays\">{{ ('dateTime.weekdays.short.'+d) | translate | async }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <div tabindex=\"0\" class=\"ax-calendar-slot\" [ngClass]=\"slot.cssClass\" (click)=\"_handleSlotClick($event, slot)\">\n @if(cellTemplate){\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else{\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n\n </div>\n </ng-container>\n </div>\n }\n }\n }\n\n</div>\n<ng-content select=\"ax-footer\"></ng-content>", styles: [".ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{outline-color:rgba(var(--ax-color-primary-200))!important;background-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:hover{background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover{background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-footer:is(.ax-dark ax-calendar .ax-calendar-footer:focus,.ax-dark ax-calendar .ax-calendar-footer:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{display:block;width:100%;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));color:rgba(var(--ax-color-surface-fore),var(--tw-text-opacity))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:.25rem;padding-right:.25rem;padding-top:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-color-border-default));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--ax-rounded-border-default);text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-surface-fore));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:2px}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:1px;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{background-color:rgba(var(--ax-color-danger-500))!important;color:rgba(var(--ax-color-danger-fore))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover{background-color:rgba(var(--ax-color-danger-500))!important;border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-left:.5rem;padding-right:.5rem;padding-top:.75rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{position:relative;margin:.125rem;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:.875rem;line-height:1.25rem}ax-calendar .ax-calendar-footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:center}ax-calendar .ax-calendar-footer .ax-today-button{display:block;height:var(--ax-size-default);width:100%;cursor:pointer;border-radius:var(--ax-rounded-border-default);background-color:rgba(var(--ax-color-primary-500));padding-left:1rem;padding-right:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-600))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-500),1)}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
592
+ ], template: "<ng-content select=\"ax-header\"></ng-content>\n<div class=\"ax-calendar-body\">\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\n @switch (activeView) {\n @case ('year') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-state-disabled\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }} - {{ v.range.endTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon ax-next\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-year\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n @for (slot of v.slots; track slot.text) {\n <div\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </div>\n }\n </div>\n }\n @case ('month') {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-slots ax-calendar-slots-month\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <div\n tabindex=\"0\"\n *ngFor=\"let slot of v.slots\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ getMonthName(slot.date, 'short') | translate | async }}\n </div>\n }\n </div>\n </div>\n }\n @default {\n @if (showNavigation) {\n <div class=\"ax-calendar-view-header\">\n <div class=\"ax-calendar-header-info\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'year')\"\n >\n {{ v.range.startTime.format('YYYY') }}\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded\"\n (click)=\"_handleNavClick($event, 'month')\"\n >\n {{ getMonthName(v.range.startTime, 'long') | translate | async }}\n </button>\n </div>\n @if (last) {\n <div class=\"ax-calendar-header-buttons\">\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handlePrevClick()\"\n [title]=\"'prev' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-left\"></i>\n </button>\n <button\n type=\"button\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.readonly]=\"readonly ? '' : null\"\n class=\"ax-general-button ax-button-rounded ax-button-icon\"\n (click)=\"_handleNextClick()\"\n [title]=\"'next' | translate | async\"\n >\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n <div class=\"ax-calendar-week\">\n <div *ngFor=\"let d of _weekdays\">{{ 'dateTime.weekdays.short.' + d | translate | async }}</div>\n </div>\n <div class=\"ax-calendar-slots ax-calendar-slots-day\" [ngClass]=\"{ 'ax-default': !cellTemplate }\">\n <ng-container *ngFor=\"let slot of v.slots\">\n <div\n tabindex=\"0\"\n class=\"ax-calendar-slot\"\n [class.ax-state-disabled]=\"disabled\"\n [ngClass]=\"slot.cssClass\"\n (click)=\"_handleSlotClick($event, slot)\"\n >\n @if (cellTemplate) {\n <div>\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: { slot: slot } }\">\n </ng-container>\n </div>\n } @else {\n <div [title]=\"slot.tooltip\">\n {{ slot.text }}\n </div>\n }\n </div>\n </ng-container>\n </div>\n }\n }\n }\n</div>\n<ng-content select=\"ax-footer\"></ng-content>\n", styles: [".ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-200));color:rgba(var(--ax-color-primary-fore-tint))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{outline-color:rgba(var(--ax-color-primary-200))!important;background-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-200))}.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(.ax-dark ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-200))!important;border-color:rgba(var(--ax-color-danger-200))!important;color:rgba(var(--ax-color-danger-fore-tint))!important}.ax-dark ax-calendar .ax-calendar-footer:is(.ax-dark ax-calendar .ax-calendar-footer:focus,.ax-dark ax-calendar .ax-calendar-footer:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-200))}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{display:block;width:100%;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));color:rgba(var(--ax-color-surface-fore),var(--tw-text-opacity))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:.25rem;padding-right:.25rem;padding-top:.25rem}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:1px;border-color:rgba(var(--ax-color-border-default));padding:.5rem}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--ax-rounded-border-default);text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-surface-fore));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\"\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\"\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:2px;outline-color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:2px}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{border-width:1px;border-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-color-border-default))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{background-color:rgba(var(--ax-color-primary-500));color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{background-color:rgba(var(--ax-color-danger-500))!important;color:rgba(var(--ax-color-danger-fore))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-color-danger-500))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-danger-500))!important;border-color:rgba(var(--ax-color-danger-500))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-left:.5rem;padding-right:.5rem;padding-top:.75rem}ax-calendar .ax-calendar-body .ax-calendar-week>div{position:relative;margin:.125rem;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:.875rem;line-height:1.25rem}ax-calendar .ax-calendar-footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:center}ax-calendar .ax-calendar-footer .ax-today-button{display:block;height:var(--ax-size-default);width:100%;cursor:pointer;border-radius:var(--ax-rounded-border-default);background-color:rgba(var(--ax-color-primary-500));padding-left:1rem;padding-right:1rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:rgba(var(--ax-color-primary-fore))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:.75}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-color-primary-600))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-color-primary-500),1)}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\n"] }]
593
593
  }], ctorParameters: () => [{ type: i1.AXUnsubscriber }], propDecorators: { __hostClass: [{
594
594
  type: HostBinding,
595
595
  args: ['class']
@@ -597,4 +597,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
597
597
  type: HostListener,
598
598
  args: ['keydown', ['$event']]
599
599
  }] } });
600
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLG1CQUFtQixFQUVuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFjLGVBQWUsRUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUEwRCx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUVuSDs7OztHQUlHO0FBeURILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxPQUFPLENBQUMsQ0FBQSxnQkFBNkIsQ0FBQSxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDO0lBQzlILElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUss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QixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3FCQUNkLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcscUJBQXFCO3lCQUNqQzt3QkFDRCxjQUFjO3FCQUNmO21GQXljVyxXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU87Z0JBMERwQixxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDbGlja0V2ZW50LFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBNWENvbXBvbmVudE9wdGlvbkNoYW5nZWQsXG4gIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsXG4gIE1YVmFsdWVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlLCBUaW1lVW5pdCB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHsgQVhDYWxlbmRhclZpZXcsIEFYQ2FsZW5kYXJWaWV3U2xvdCwgQVhDYWxlbmRhclZpZXdUeXBlLCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY2xhc3MnO1xuXG4vKipcbiAqIEEgY2FsZW5kYXIgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSBjdXN0b21pemFibGUgY2FsZW5kYXIgdmlldyB3aXRoIHZhcmlvdXMgb3B0aW9ucyBmb3Igc2VsZWN0aW9uLCBuYXZpZ2F0aW9uLCBhbmQgc3R5bGluZy5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFtcbiAgICAncnRsJyxcbiAgICAncmVhZG9ubHknLFxuICAgICd2YWx1ZScsXG4gICAgJ25hbWUnLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2RlcHRoJyxcbiAgICAnYWN0aXZlVmlldycsXG4gICAgJ21pblZhbHVlJyxcbiAgICAnbWF4VmFsdWUnLFxuICAgICdkaXNhYmxlZERhdGVzJyxcbiAgICAnaG9saWRheURhdGVzJyxcbiAgICAndHlwZScsXG4gICAgJ2NlbGxUZW1wbGF0ZScsXG4gICAgJ2NlbGxDbGFzcycsXG4gICAgJ3Nob3dOYXZpZ2F0aW9uJyxcbiAgICAnY291bnQnLFxuICAgICduYW1lJyxcbiAgICAnaWQnLFxuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uT3B0aW9uQ2hhbmdlZCcsXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdtaW5WYWx1ZUNoYW5nZScsXG4gICAgJ21heFZhbHVlQ2hhbmdlJyxcbiAgICAnb25CbHVyJyxcbiAgICAnb25Gb2N1cycsXG4gICAgJ2RlcHRoQ2hhbmdlJyxcbiAgICAndHlwZUNoYW5nZScsXG4gICAgJ2FjdGl2ZVZpZXdDaGFuZ2UnLFxuICAgICdkaXNhYmxlZERhdGVzQ2hhbmdlJyxcbiAgICAnaG9saWRheURhdGVzQ2hhbmdlJyxcbiAgICAnb25OYXZpZ2F0ZScsXG4gICAgJ29uU2xvdENsaWNrJyxcbiAgICAnY291bnRDaGFuZ2UnLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYQ2FsZW5kYXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhWYWx1ZUNvbXBvbmVudDxEYXRlIHwgbnVsbD4sIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50KSB7XG4gIHB1YmxpYyBnZXQgZGlzcGxheVJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UodGhpcy52aWV3c1swXS5yYW5nZS5zdGFydFRpbWUsIHRoaXMudmlld3NbdGhpcy52aWV3cy5sZW5ndGggLSAxXS5yYW5nZS5lbmRUaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0RGlzcGxheVJhbmdlKGN1cnJlbnQ6IEFYRGF0ZVRpbWUpOiBBWERhdGVUaW1lUmFuZ2Uge1xuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVWaWV3KSB7XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCB5ID0gY3VycmVudC5zdGFydE9mKCd5ZWFyJykueWVhcjtcbiAgICAgICAgY29uc3QgbWluID0geSAtICh5ICUgMTApO1xuICAgICAgICBjb25zdCBtYXggPSBtaW4gKyA5O1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShcbiAgICAgICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHllYXI6IG1pbixcbiAgICAgICAgICAgICAgbW9udGg6IDEsXG4gICAgICAgICAgICAgIGRhdGU6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy50eXBlLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtYXgsXG4gICAgICAgICAgICAgIG1vbnRoOiAxMixcbiAgICAgICAgICAgICAgZGF0ZTogMjgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy50eXBlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKGN1cnJlbnQuc3RhcnRPZigneWVhcicpLCBjdXJyZW50LmVuZE9mKCd5ZWFyJykuYWRkKCdkYXknLCAtMSkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoY3VycmVudC5zdGFydE9mKCdtb250aCcpLCBjdXJyZW50LmVuZE9mKCdtb250aCcpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdG9kYXkgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3ZpZXdTdGFydERhdGUhOiBBWERhdGVUaW1lO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb290UHJpbnQgPSB7XG4gICAgeWVhcjogbnVsbCxcbiAgICBtb250aDogbnVsbCxcbiAgICBkYXk6IG51bGwsXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdmlld3M6IEFYQ2FsZW5kYXJWaWV3W10gPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfd2Vla2RheXM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xuICAgIHRoaXMuX3RvZGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgdGhpcy5fd2Vla2RheXMgPSB0aGlzLl90b2RheS5jYWxlbmRhci53ZWVrZGF5cztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IodW5zdWJzY3JpYmVyOiBBWFVuc3Vic2NyaWJlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uub25Ib2xpZGF5c0NoYW5nZWQucGlwZSh1bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJDaGFuZ2VzJC5waXBlKHVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmdvVG9kYXkoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgb3ZlcnJpZGUgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGFwcGx5Q2VsbENsYXNzID0gKHNsb3Q6IEFYQ2FsZW5kYXJWaWV3U2xvdCwgY2VsbENsYXNzOiBhbnkgPSB0aGlzLmNlbGxDbGFzcykgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlb2YgY2VsbENsYXNzKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgY2VsbENsYXNzLnNwbGl0KCcgJykuZm9yRWFjaCgoYykgPT4gKHNsb3QuY3NzQ2xhc3NbY10gPSB0cnVlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihzbG90LmNzc0NsYXNzLCBjZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Moc2xvdCwgY2VsbENsYXNzKHNsb3QuZGF0ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy52aWV3cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb3VudDsgaSsrKSB7XG4gICAgICBsZXQgdW5pdDogVGltZVVuaXQgPSAnbW9udGgnO1xuICAgICAgbGV0IHZhbHVlOiBudW1iZXIgPSBpO1xuICAgICAgLy9cbiAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHtcbiAgICAgICAgdW5pdCA9ICdtb250aCc7XG4gICAgICAgIHZhbHVlID0gaTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpIHtcbiAgICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICAgICAgdmFsdWUgPSBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdW5pdCA9ICd5ZWFyJztcbiAgICAgICAgdmFsdWUgPSBpICogMTA7XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKHVuaXQsIHZhbHVlKTtcbiAgICAgIGNvbnN0IHZpZXc6IEFYQ2FsZW5kYXJWaWV3ID0ge1xuICAgICAgICByYW5nZTogdGhpcy5fc2V0RGlzcGxheVJhbmdlKGN1cnJlbnQpLFxuICAgICAgICBzbG90czogW10sXG4gICAgICB9O1xuICAgICAgdGhpcy52aWV3cy5wdXNoKHZpZXcpO1xuICAgICAgLy9cbiAgICAgIC8vIHllYXIgdmlld1xuICAgICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcicpIHtcbiAgICAgICAgY29uc3QgYSA9IHZpZXcucmFuZ2UuZW51bXVyYXRlKCd5ZWFyJyk7XG5cbiAgICAgICAgdmlldy5zbG90cyA9IGEubWFwKChkLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcjogYW55ID0ge307XG4gICAgICAgICAgci5kYXRlID0gZDtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgICAgci50b29sdGlwID0gZC5mb3JtYXQoJ1lZWVknKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAneWVhcicpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgdGhpcy5kZXB0aCA9PSAneWVhcicgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAgICAgKHRoaXMubWluVmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWluVmFsdWUsICd5ZWFyJykgPT0gLTEpIHx8ICh0aGlzLm1heFZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1heFZhbHVlLCAneWVhcicpID09IDEpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBtb250aCB2aWV3XG4gICAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ21vbnRoJyk7XG4gICAgICAgIHZpZXcuc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgICAgIHIuZGF0ZSA9IGQ7XG4gICAgICAgICAgci50ZXh0ID0gZC5mb3JtYXQoJ01NTScpO1xuICAgICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdNTU1NIFlZWVknKTtcbiAgICAgICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ21vbnRoJyk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICByLmRpc2FibGVkID1cbiAgICAgICAgICAgICh0aGlzLm1pblZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1pblZhbHVlLCAnbW9udGgnKSA9PSAtMSkgfHwgKHRoaXMubWF4VmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWF4VmFsdWUsICdtb250aCcpID09IDEpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgdGhpcy5kZXB0aCA9PSAnbW9udGgnICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ21vbnRoJyk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBjb25zdCBmb2N1c2VkID0gZC5tb250aE9mWWVhciA9PSB0aGlzLl9mb290UHJpbnQubW9udGggJiYgZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaWYgKHIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtdG9kYXknOiByLnRvZGF5LFxuICAgICAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBkYXkgdmlld1xuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGEgPSB2aWV3LnJhbmdlLmVudW11cmF0ZSgnZGF5Jyk7XG4gICAgICAgIHZpZXcuc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgICAgIHIuZGF0ZSA9IGQ7XG4gICAgICAgICAgci50ZXh0ID0gZC5kYXlPZk1vbnRoO1xuICAgICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdsb25nRGF0ZScpO1xuICAgICAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAnZGF5Jyk7XG4gICAgICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnZGF5Jyk7XG4gICAgICAgICAgci5ob2xpZGF5ID0gdGhpcy5pc0hvbGlkYXkoZCkgfHwgdGhpcy5pc1dlZWtlbmQoZCk7XG4gICAgICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICAgICAodGhpcy5taW5WYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5taW5WYWx1ZSwgJ2RheScpID09IC0xKSB8fFxuICAgICAgICAgICAgKHRoaXMubWF4VmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWF4VmFsdWUsICdkYXknKSA9PSAxKSB8fFxuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkKGQpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQuZGF5T2ZNb250aCA9PSB0aGlzLl9mb290UHJpbnQuZGF5ICYmIGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWhvbGlkYXknOiByLmhvbGlkYXksXG4gICAgICAgICAgICAgIC8vJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gYXgtY29sLXN0YXJ0LTEgYXgtY29sLXN0YXJ0LTIgYXgtY29sLXN0YXJ0LTMgYXgtY29sLXN0YXJ0LTQgYXgtY29sLXN0YXJ0LTUgYXgtY29sLXN0YXJ0LTYgYXgtY29sLXN0YXJ0LTdcbiAgICAgICAgICByLmNzc0NsYXNzW2BheC1jb2x1bW4tc3RhcnQtJHt2aWV3LnJhbmdlLnN0YXJ0VGltZS5kYXlPZldlZWt9YF0gPSBpID09IDA7XG4gICAgICAgICAgaWYgKHRoaXMuY2VsbENsYXNzKSBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVByZXZDbGljaygpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMucHJldigpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU5leHRDbGljaygpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMubmV4dCgpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVNsb3RDbGljayhlOiBNb3VzZUV2ZW50LCBzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QpIHtcbiAgICBpZiAoc2xvdC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLm9uU2xvdENsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXRlbTogc2xvdC5kYXRlLmRhdGUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICAgIC8vXG4gICAgY29uc3QgdmFsID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHNsb3QuZGF0ZS5kYXRlLCB0aGlzLnR5cGUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlLmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcgJiYgdGhpcy5kZXB0aCA9PSAnZGF5Jykge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ2RheSc7XG4gICAgICB0aGlzLl9mb290UHJpbnQubW9udGggPSB2YWwubW9udGhPZlllYXI7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJyAmJiB0aGlzLmRlcHRoID09ICdtb250aCcpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlLmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJyAmJiAodGhpcy5kZXB0aCA9PSAnZGF5JyB8fCB0aGlzLmRlcHRoID09ICdtb250aCcpKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGgnO1xuICAgICAgdGhpcy5fZm9vdFByaW50LnllYXIgPSB2YWwueWVhcjtcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcicgJiYgdGhpcy5kZXB0aCA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX3NldERhdGUoc2xvdC5kYXRlLmRhdGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVOYXZDbGljayhlOiBBWENsaWNrRXZlbnQgfCBhbnksIHZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVWaWV3ID0gdmlldztcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVWaWV3KCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aCc7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpIHRoaXMuYWN0aXZlVmlldyA9ICd5ZWFyJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsT3B0aW9uQ2hhbmdlZChlOiBNWENvbXBvbmVudE9wdGlvbkNoYW5nZWQpIHtcbiAgICBpZiAoZS5uYW1lID09ICdkZXB0aCcgfHwgZS5uYW1lID09ICdhY3RpdmVWaWV3JyB8fCBlLm5hbWUgPT0gJ2Rpc2FibGVkRGF0ZXMnIHx8IGUubmFtZSA9PSAnaG9saWRheURhdGVzJykge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgaWYgKGUubmFtZSA9PSAndHlwZScpIHtcbiAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbnRlcm5hbFNldFZhbHVlKHZhbHVlOiBEYXRlKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHYgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jb252ZXJ0KHZhbHVlKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkKHYpO1xuICAgIGlmIChpc0Rpc2FibGVkKSByZXR1cm4gbnVsbDtcbiAgICBlbHNlIHJldHVybiB2LmRhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbnRlcm5hbFZhbHVlQ2hhbmdlZCh2YWx1ZT86IERhdGUpIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodmFsdWUsIHRoaXMudHlwZSk7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX3ZpZXdTdGFydERhdGUgfHxcbiAgICAgIHZhbC5jb21wYXJlKHRoaXMuZGlzcGxheVJhbmdlLnN0YXJ0VGltZSwgdGhpcy5hY3RpdmVWaWV3KSA9PSAtMSB8fFxuICAgICAgdmFsLmNvbXBhcmUodGhpcy5kaXNwbGF5UmFuZ2UuZW5kVGltZSwgdGhpcy5hY3RpdmVWaWV3KSA9PSAxXG4gICAgKSB7XG4gICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLnR5cGUpO1xuICAgIH1cbiAgICB0aGlzLl9mb290UHJpbnQueWVhciA9IHZhbC55ZWFyO1xuICAgIHRoaXMuX2Zvb3RQcmludC5tb250aCA9IHZhbC5tb250aE9mWWVhcjtcbiAgICB0aGlzLl9mb290UHJpbnQuZGF5ID0gdmFsLmRheU9mTW9udGg7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVHb1RvZGF5KCkge1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5fc2V0RGF0ZSh0aGlzLl90b2RheS5kYXRlKTtcbiAgICB0aGlzLmdvVG9kYXkoKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgaXRlbS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmV4dCgpIHtcbiAgICB0aGlzLl9uYXZOZXh0UHJldihmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBpdGVtLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcmV2KCkge1xuICAgIHRoaXMuX25hdk5leHRQcmV2KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjYWxlbmRhciBzbG90IG9yIHRoZSBmaXJzdCBhdmFpbGFibGUgc2xvdC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgZm9jdXMoKSB7XG4gICAgY29uc3QgZnVuYyA9IChzOiBzdHJpbmcpID0+IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihzKTtcbiAgICBjb25zdCBkaXYgPSBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2LmF4LXN0YXRlLXNlbGVjdGVkJykgfHwgZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdicpO1xuICAgIGRpdj8uZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmF2TmV4dFByZXYocHJldjogYm9vbGVhbikge1xuICAgIGNvbnN0IHNpZ24gPSBwcmV2ID8gLTEgOiAxO1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ2RheScpIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ21vbnRoJywgc2lnbiAqIDEgKiB0aGlzLmNvdW50KSk7XG4gICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMSAqIHRoaXMuY291bnQpKTtcbiAgICBlbHNlIHRoaXMubmF2VG8odGhpcy5fdmlld1N0YXJ0RGF0ZS5hZGQoJ3llYXInLCBzaWduICogMTAgKiB0aGlzLmNvdW50KSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdvVG9kYXkoKSB7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIGEgc3BlY2lmaWVkIGRhdGUgYW5kIHVwZGF0ZXMgdGhlIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gbmF2aWdhdGUgdG8sIHdoaWNoIGNhbiBiZSBhIGBEYXRlYCBvYmplY3Qgb3IgYW4gYEFYRGF0ZVRpbWVgIGluc3RhbmNlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQoZGF0ZSwgdGhpcy50eXBlKTtcbiAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdmFsLnN0YXJ0T2YoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIC8vdG8gbWFrZSBzdXJlIGl0cyByZW5kcmVkIGFuZCBkaXNwbGF5UmFuZ2UgaXMgbm90IG51bGxcbiAgICBpZiAodGhpcy52aWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2ciA9IHRoaXMuZGlzcGxheVJhbmdlO1xuICAgICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24sXG4gICAgICAgIHN0YXJ0OiB2ci5zdGFydFRpbWU/LmRhdGUsXG4gICAgICAgIGVuZDogdnIuZW5kVGltZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgX2NsYXNzZXMgPSB7XG4gICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2F4LXN0YXRlLXJlYWRvbmx5JzogdGhpcy5yZWFkb25seSxcbiAgICB9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhfY2xhc3NlcylcbiAgICAgIC5maWx0ZXIoKGMpID0+IGNbMV0pXG4gICAgICAubWFwKChjKSA9PiBjWzBdKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQodmFsdWUsIHRoaXMudHlwZSkuc3RhcnRPZigpLmRhdGUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNEaXNhYmxlZChkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kaXNhYmxlZERhdGVzKSAmJiB0aGlzLmRpc2FibGVkRGF0ZXMubGVuZ3RoICE9IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzSG9saWRheShkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2ggPSB0aGlzLmNhbGVuZGFyU2VydmljZS5ob2xpZGF5cy5zb21lKChkKSA9PiBkYXRlLmVxdWFsKGQuZGF0ZSwgJ2RheScpKTtcbiAgICBsZXQgZGggPSB0aGlzLmNhbGVuZGFyU2VydmljZS5ob2xpZGF5cy5zb21lKChkKSA9PiBkYXRlLmVxdWFsKGQuZGF0ZSwgJ2RheScpKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmhvbGlkYXlEYXRlcykgJiYgdGhpcy5ob2xpZGF5RGF0ZXMubGVuZ3RoICE9IDApIHtcbiAgICAgIGRoID0gdGhpcy5ob2xpZGF5RGF0ZXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLCAnZGF5JykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaG9saWRheURhdGVzID09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRoID0gdGhpcy5ob2xpZGF5RGF0ZXMoZGF0ZS5kYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGdoIHx8IGRoO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNXZWVrZW5kKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBjb25zdCB3ZWVrZW5kID0gdGhpcy5jYWxlbmRhclNlcnZpY2UucmVzb2x2ZUNhbGVuZGFyKHRoaXMudHlwZSkud2Vla2VuZDtcbiAgICByZXR1cm4gd2Vla2VuZC5pbmNsdWRlcyhkYXRlLmRheU9mV2VlayAtIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgX2hhbmRsZU9uS2V5ZG93bkV2ZW50KGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvL1RPRE86IGNvbXBsZXRlIGtleWJvYWQgbmF2aWdhdGlvblxuICAgIGNvbnN0IGlnbm9yZSA9ICgpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfTtcbiAgICBpZiAoZS5jb2RlID09PSAnQXJyb3dSaWdodCcgfHwgZS5jb2RlID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICBlLmNvZGUgPT09ICdBcnJvd1JpZ2h0JyA/IHRoaXMubmV4dCgpIDogdGhpcy5wcmV2KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgICAgaWdub3JlKCk7XG4gICAgfSBlbHNlIGlmIChlLmNvZGUgPT09ICdBcnJvd1VwJyB8fCBlLmNvZGUgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBpZiAoZS5jdHJsS2V5KSB7XG4gICAgICAgIGUuY29kZSA9PT0gJ0Fycm93VXAnID8gdGhpcy5uZXh0KCkgOiB0aGlzLnByZXYoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9XG4gICAgICBpZ25vcmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRNb250aE5hbWUoZGF0ZTogQVhEYXRlVGltZSwgc3R5bGU6ICdzaG9ydCcgfCAnbG9uZycpIHtcbiAgICByZXR1cm4gYGRhdGVUaW1lLm1vbnRocy4ke2RhdGUuY2FsZW5kYXIubmFtZSgpfS4ke3N0eWxlfS4ke2RhdGUubW9udGhPZlllYXIgLSAxfWA7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1ib2R5XCI+XG4gIEBmb3IodiBvZiB2aWV3czsgbGV0IGkgPSAkaW5kZXgsIGZpcnN0ID0gJGZpcnN0LCBsYXN0ID0gJGxhc3Q7IHRyYWNrIGkpe1xuICBAc3dpdGNoIChhY3RpdmVWaWV3KSB7XG4gIEBjYXNlICgneWVhcicpIHtcbiAgQGlmKHNob3dOYXZpZ2F0aW9uKVxuICB7XG4gIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtc3RhdGUtZGlzYWJsZWRcIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwgJ3llYXInKVwiPlxuICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ1lZWVknKSB9fSAtIHt7IHYucmFuZ2UuZW5kVGltZS5mb3JtYXQoJ1lZWVknKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgQGlmKGxhc3Qpe1xuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb24gYXgtbmV4dFwiIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIlxuICAgICAgICBbdGl0bGVdPVwiJ3ByZXYnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICBbdGl0bGVdPVwiJ25leHQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIH1cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLXllYXJcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgQGZvcihzbG90IG9mIHYuc2xvdHM7IHRyYWNrIHNsb3QudGV4dCl7XG4gICAgPGRpdiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RcIiBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCIgKGNsaWNrKT1cIl9oYW5kbGVTbG90Q2xpY2soJGV2ZW50LCBzbG90KVwiPlxuICAgICAgQGlmKGNlbGxUZW1wbGF0ZSl7XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBzbG90OiBzbG90IH0gfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9XG4gIEBjYXNlICgnbW9udGgnKSB7XG4gIEBpZihzaG93TmF2aWdhdGlvbilcbiAge1xuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItdmlldy1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkXCIgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICd5ZWFyJylcIj5cbiAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUuZm9ybWF0KCdZWVlZJykgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIEBpZihsYXN0KXtcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCIgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgIFt0aXRsZV09XCIncHJldicgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCIgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIFt0aXRsZV09XCInbmV4dCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtbW9udGhcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgPGRpdiB0YWJpbmRleD1cIjBcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiB2LnNsb3RzXCIgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCIgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXG4gICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XG5cbiAgICAgIEBpZihjZWxsVGVtcGxhdGUpe1xuICAgICAgPGRpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgc2xvdDogc2xvdCB9IH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1AZWxzZSB7XG4gICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAge3tnZXRNb250aE5hbWUoc2xvdC5kYXRlLCdzaG9ydCcpIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG4gIEBkZWZhdWx0IHtcbiAgQGlmKHNob3dOYXZpZ2F0aW9uKVxuICB7XG4gIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWRcIiAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwgJ3llYXInKVwiPlxuICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ1lZWVknKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAnbW9udGgnKVwiPlxuICAgICAgICB7e2dldE1vbnRoTmFtZSh2LnJhbmdlLnN0YXJ0VGltZSwnbG9uZycpIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIEBpZihsYXN0KXtcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCIgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgIFt0aXRsZV09XCIncHJldicgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCIgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCIgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgIFt0aXRsZV09XCInbmV4dCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGQgb2YgX3dlZWtkYXlzXCI+e3sgKCdkYXRlVGltZS53ZWVrZGF5cy5zaG9ydC4nK2QpIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xvdCBvZiB2LnNsb3RzXCI+XG4gICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIiAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCI+XG4gICAgICAgIEBpZihjZWxsVGVtcGxhdGUpe1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IHNsb3Q6IHNsb3QgfSB9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNle1xuICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICB7eyBzbG90LnRleHQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICB9XG4gIH1cbiAgfVxuXG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPjwvbmctY29udGVudD4iXX0=
600
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLG1CQUFtQixFQUVuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFjLGVBQWUsRUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUEwRCx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUVuSDs7OztHQUlHO0FBeURILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxPQUFPLENBQUMsQ0FBQSxnQkFBNkIsQ0FBQSxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDO0lBQzlILElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUss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b0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTtxQkFDZCxhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLHFCQUFxQjt5QkFDakM7d0JBQ0QsY0FBYztxQkFDZjttRkF5Y1csV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPO2dCQTBEcEIscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhDb21wb25lbnRPcHRpb25DaGFuZ2VkLFxuICBNWEludGVyYWN0aXZlQ29tcG9uZW50LFxuICBNWFZhbHVlQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRGF0ZVRpbWUsIEFYRGF0ZVRpbWVSYW5nZSwgVGltZVVuaXQgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIFZpZXdFbmNhcHN1bGF0aW9uLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJWaWV3LCBBWENhbGVuZGFyVmlld1Nsb3QsIEFYQ2FsZW5kYXJWaWV3VHlwZSwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNsYXNzJztcblxuLyoqXG4gKiBBIGNhbGVuZGFyIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGEgY3VzdG9taXphYmxlIGNhbGVuZGFyIHZpZXcgd2l0aCB2YXJpb3VzIG9wdGlvbnMgZm9yIHNlbGVjdGlvbiwgbmF2aWdhdGlvbiwgYW5kIHN0eWxpbmcuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBbXG4gICAgJ3J0bCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICduYW1lJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdkZXB0aCcsXG4gICAgJ2FjdGl2ZVZpZXcnLFxuICAgICdtaW5WYWx1ZScsXG4gICAgJ21heFZhbHVlJyxcbiAgICAnZGlzYWJsZWREYXRlcycsXG4gICAgJ2hvbGlkYXlEYXRlcycsXG4gICAgJ3R5cGUnLFxuICAgICdjZWxsVGVtcGxhdGUnLFxuICAgICdjZWxsQ2xhc3MnLFxuICAgICdzaG93TmF2aWdhdGlvbicsXG4gICAgJ2NvdW50JyxcbiAgICAnbmFtZScsXG4gICAgJ2lkJyxcbiAgXSxcbiAgb3V0cHV0czogW1xuICAgICdvbk9wdGlvbkNoYW5nZWQnLFxuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ29uVmFsdWVDaGFuZ2VkJyxcbiAgICAnbWluVmFsdWVDaGFuZ2UnLFxuICAgICdtYXhWYWx1ZUNoYW5nZScsXG4gICAgJ29uQmx1cicsXG4gICAgJ29uRm9jdXMnLFxuICAgICdkZXB0aENoYW5nZScsXG4gICAgJ3R5cGVDaGFuZ2UnLFxuICAgICdhY3RpdmVWaWV3Q2hhbmdlJyxcbiAgICAnZGlzYWJsZWREYXRlc0NoYW5nZScsXG4gICAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXG4gICAgJ29uTmF2aWdhdGUnLFxuICAgICdvblNsb3RDbGljaycsXG4gICAgJ2NvdW50Q2hhbmdlJyxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWENhbGVuZGFyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWENhbGVuZGFyQ29tcG9uZW50LFxuICAgIH0sXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YVmFsdWVDb21wb25lbnQ8RGF0ZSB8IG51bGw+LCBNWEludGVyYWN0aXZlQ29tcG9uZW50LCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCkge1xuICBwdWJsaWMgZ2V0IGRpc3BsYXlSYW5nZSgpOiBBWERhdGVUaW1lUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKHRoaXMudmlld3NbMF0ucmFuZ2Uuc3RhcnRUaW1lLCB0aGlzLnZpZXdzW3RoaXMudmlld3MubGVuZ3RoIC0gMV0ucmFuZ2UuZW5kVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NldERpc3BsYXlSYW5nZShjdXJyZW50OiBBWERhdGVUaW1lKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgeSA9IGN1cnJlbnQuc3RhcnRPZigneWVhcicpLnllYXI7XG4gICAgICAgIGNvbnN0IG1pbiA9IHkgLSAoeSAlIDEwKTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWluICsgOTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtaW4sXG4gICAgICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgICAgICBkYXRlOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudHlwZSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgeWVhcjogbWF4LFxuICAgICAgICAgICAgICBtb250aDogMTIsXG4gICAgICAgICAgICAgIGRhdGU6IDI4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMudHlwZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShjdXJyZW50LnN0YXJ0T2YoJ3llYXInKSwgY3VycmVudC5lbmRPZigneWVhcicpLmFkZCgnZGF5JywgLTEpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZVJhbmdlKGN1cnJlbnQuc3RhcnRPZignbW9udGgnKSwgY3VycmVudC5lbmRPZignbW9udGgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3RvZGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF92aWV3U3RhcnREYXRlITogQVhEYXRlVGltZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfZm9vdFByaW50ID0ge1xuICAgIHllYXI6IG51bGwsXG4gICAgbW9udGg6IG51bGwsXG4gICAgZGF5OiBudWxsLFxuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHZpZXdzOiBBWENhbGVuZGFyVmlld1tdID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3dlZWtkYXlzOiBudW1iZXJbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFZhbHVlcygpIHtcbiAgICB0aGlzLl90b2RheSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xuICAgIHRoaXMuX3dlZWtkYXlzID0gdGhpcy5fdG9kYXkuY2FsZW5kYXIud2Vla2RheXM7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3JlZnJlc2goKSB7XG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xuICAgIHRoaXMubmF2VG8odGhpcy52YWx1ZSB8fCB0aGlzLl90b2RheSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHVuc3Vic2NyaWJlcjogQVhVbnN1YnNjcmliZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLm9uSG9saWRheXNDaGFuZ2VkLnBpcGUodW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH0pO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyQ2hhbmdlcyQucGlwZSh1bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3JlZnJlc2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5nb1RvZGF5KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxuXG4gIG92ZXJyaWRlIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcbiAgICBjb25zdCBhcHBseUNlbGxDbGFzcyA9IChzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QsIGNlbGxDbGFzczogYW55ID0gdGhpcy5jZWxsQ2xhc3MpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZW9mIGNlbGxDbGFzcykge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIGNlbGxDbGFzcy5zcGxpdCgnICcpLmZvckVhY2goKGMpID0+IChzbG90LmNzc0NsYXNzW2NdID0gdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2xvdC5jc3NDbGFzcywgY2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHNsb3QsIGNlbGxDbGFzcyhzbG90LmRhdGUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQ7IGkrKykge1xuICAgICAgbGV0IHVuaXQ6IFRpbWVVbml0ID0gJ21vbnRoJztcbiAgICAgIGxldCB2YWx1ZTogbnVtYmVyID0gaTtcbiAgICAgIC8vXG4gICAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB7XG4gICAgICAgIHVuaXQgPSAnbW9udGgnO1xuICAgICAgICB2YWx1ZSA9IGk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnKSB7XG4gICAgICAgIHVuaXQgPSAneWVhcic7XG4gICAgICAgIHZhbHVlID0gaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVuaXQgPSAneWVhcic7XG4gICAgICAgIHZhbHVlID0gaSAqIDEwO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmFkZCh1bml0LCB2YWx1ZSk7XG4gICAgICBjb25zdCB2aWV3OiBBWENhbGVuZGFyVmlldyA9IHtcbiAgICAgICAgcmFuZ2U6IHRoaXMuX3NldERpc3BsYXlSYW5nZShjdXJyZW50KSxcbiAgICAgICAgc2xvdHM6IFtdLFxuICAgICAgfTtcbiAgICAgIHRoaXMudmlld3MucHVzaCh2aWV3KTtcbiAgICAgIC8vXG4gICAgICAvLyB5ZWFyIHZpZXdcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXInKSB7XG4gICAgICAgIGNvbnN0IGEgPSB2aWV3LnJhbmdlLmVudW11cmF0ZSgneWVhcicpO1xuXG4gICAgICAgIHZpZXcuc2xvdHMgPSBhLm1hcCgoZCwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgICAgIHIuZGF0ZSA9IGQ7XG4gICAgICAgICAgLy9cbiAgICAgICAgICByLnRleHQgPSBkLmZvcm1hdCgnWVlZWScpO1xuICAgICAgICAgIHIudG9vbHRpcCA9IGQuZm9ybWF0KCdZWVlZJyk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ3llYXInKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIHRoaXMuZGVwdGggPT0gJ3llYXInICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ3llYXInKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGNvbnN0IGZvY3VzZWQgPSBkLnllYXIgPT0gdGhpcy5fZm9vdFByaW50LnllYXI7XG4gICAgICAgICAgLy9cbiAgICAgICAgICByLmRpc2FibGVkID1cbiAgICAgICAgICAgICh0aGlzLm1pblZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1pblZhbHVlLCAneWVhcicpID09IC0xKSB8fCAodGhpcy5tYXhWYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5tYXhWYWx1ZSwgJ3llYXInKSA9PSAxKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gbW9udGggdmlld1xuICAgICAgZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcpIHtcbiAgICAgICAgY29uc3QgYSA9IHZpZXcucmFuZ2UuZW51bXVyYXRlKCdtb250aCcpO1xuICAgICAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgICAgICByLmRhdGUgPSBkO1xuICAgICAgICAgIHIudGV4dCA9IGQuZm9ybWF0KCdNTU0nKTtcbiAgICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnTU1NTSBZWVlZJyk7XG4gICAgICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICdtb250aCcpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICAgICAodGhpcy5taW5WYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5taW5WYWx1ZSwgJ21vbnRoJykgPT0gLTEpIHx8ICh0aGlzLm1heFZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1heFZhbHVlLCAnbW9udGgnKSA9PSAxKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIHRoaXMuZGVwdGggPT0gJ21vbnRoJyAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdtb250aCcpO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgY29uc3QgZm9jdXNlZCA9IGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiByLmRpc2FibGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWZvY3VzZWQnOiBmb2N1c2VkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gZGF5IHZpZXdcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBhID0gdmlldy5yYW5nZS5lbnVtdXJhdGUoJ2RheScpO1xuICAgICAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgICAgICByLmRhdGUgPSBkO1xuICAgICAgICAgIHIudGV4dCA9IGQuZGF5T2ZNb250aDtcbiAgICAgICAgICByLnRvb2x0aXAgPSBkLmZvcm1hdCgnbG9uZ0RhdGUnKTtcbiAgICAgICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ2RheScpO1xuICAgICAgICAgIHIuc2VsZWN0ZWQgPSB0aGlzLnZhbHVlICYmIGQuZXF1YWwodGhpcy52YWx1ZSwgJ2RheScpO1xuICAgICAgICAgIHIuaG9saWRheSA9IHRoaXMuaXNIb2xpZGF5KGQpIHx8IHRoaXMuaXNXZWVrZW5kKGQpO1xuICAgICAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAgICAgKHRoaXMubWluVmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWluVmFsdWUsICdkYXknKSA9PSAtMSkgfHxcbiAgICAgICAgICAgICh0aGlzLm1heFZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1heFZhbHVlLCAnZGF5JykgPT0gMSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZChkKTtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGNvbnN0IGZvY3VzZWQgPSBkLmRheU9mTW9udGggPT0gdGhpcy5fZm9vdFByaW50LmRheSAmJiBkLm1vbnRoT2ZZZWFyID09IHRoaXMuX2Zvb3RQcmludC5tb250aCAmJiBkLnllYXIgPT0gdGhpcy5fZm9vdFByaW50LnllYXI7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoci5kaXNhYmxlZCkge1xuICAgICAgICAgICAgci5jc3NDbGFzcyA9IHtcbiAgICAgICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXG4gICAgICAgICAgICAgICdheC1zdGF0ZS1zZWxlY3RlZCc6IHIuc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICdheC1zdGF0ZS1ob2xpZGF5Jzogci5ob2xpZGF5LFxuICAgICAgICAgICAgICAvLydheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGF4LWNvbC1zdGFydC0xIGF4LWNvbC1zdGFydC0yIGF4LWNvbC1zdGFydC0zIGF4LWNvbC1zdGFydC00IGF4LWNvbC1zdGFydC01IGF4LWNvbC1zdGFydC02IGF4LWNvbC1zdGFydC03XG4gICAgICAgICAgci5jc3NDbGFzc1tgYXgtY29sdW1uLXN0YXJ0LSR7dmlldy5yYW5nZS5zdGFydFRpbWUuZGF5T2ZXZWVrfWBdID0gaSA9PSAwO1xuICAgICAgICAgIGlmICh0aGlzLmNlbGxDbGFzcykgYXBwbHlDZWxsQ2xhc3Mocik7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnByZXYoKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVOZXh0Q2xpY2soKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLm5leHQoKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVTbG90Q2xpY2soZTogTW91c2VFdmVudCwgc2xvdDogQVhDYWxlbmRhclZpZXdTbG90KSB7XG4gICAgaWYgKHNsb3QuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIC8vXG4gICAgdGhpcy5vblNsb3RDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGl0ZW06IHNsb3QuZGF0ZS5kYXRlLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgICAvL1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShzbG90LmRhdGUuZGF0ZSwgdGhpcy50eXBlKTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB7XG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZS5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnICYmIHRoaXMuZGVwdGggPT0gJ2RheScpIHtcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdkYXknO1xuICAgICAgdGhpcy5fZm9vdFByaW50Lm1vbnRoID0gdmFsLm1vbnRoT2ZZZWFyO1xuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdtb250aCcgJiYgdGhpcy5kZXB0aCA9PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZS5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAneWVhcicgJiYgKHRoaXMuZGVwdGggPT0gJ2RheScgfHwgdGhpcy5kZXB0aCA9PSAnbW9udGgnKSkge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRoJztcbiAgICAgIHRoaXMuX2Zvb3RQcmludC55ZWFyID0gdmFsLnllYXI7XG4gICAgICB0aGlzLm5hdlRvKHNsb3QuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXInICYmIHRoaXMuZGVwdGggPT0gJ3llYXInKSB7XG4gICAgICB0aGlzLl9zZXREYXRlKHNsb3QuZGF0ZS5kYXRlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaGFuZGxlTmF2Q2xpY2soZTogQVhDbGlja0V2ZW50IHwgYW55LCB2aWV3OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlVmlldyA9IHZpZXc7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlVmlldygpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB0aGlzLmFjdGl2ZVZpZXcgPSAnbW9udGgnO1xuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnKSB0aGlzLmFjdGl2ZVZpZXcgPSAneWVhcic7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbnRlcm5hbE9wdGlvbkNoYW5nZWQoZTogTVhDb21wb25lbnRPcHRpb25DaGFuZ2VkKSB7XG4gICAgaWYgKGUubmFtZSA9PSAnZGVwdGgnIHx8IGUubmFtZSA9PSAnYWN0aXZlVmlldycgfHwgZS5uYW1lID09ICdkaXNhYmxlZERhdGVzJyB8fCBlLm5hbWUgPT0gJ2hvbGlkYXlEYXRlcycpIHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICAgIGlmIChlLm5hbWUgPT0gJ3R5cGUnKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxTZXRWYWx1ZSh2YWx1ZTogRGF0ZSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB2ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY29udmVydCh2YWx1ZSk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuaXNEaXNhYmxlZCh2KTtcbiAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgZWxzZSByZXR1cm4gdi5kYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU/OiBEYXRlKSB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLnR5cGUpO1xuICAgIGlmIChcbiAgICAgICF0aGlzLl92aWV3U3RhcnREYXRlIHx8XG4gICAgICB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZS5zdGFydFRpbWUsIHRoaXMuYWN0aXZlVmlldykgPT0gLTEgfHxcbiAgICAgIHZhbC5jb21wYXJlKHRoaXMuZGlzcGxheVJhbmdlLmVuZFRpbWUsIHRoaXMuYWN0aXZlVmlldykgPT0gMVxuICAgICkge1xuICAgICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh2YWx1ZSwgdGhpcy50eXBlKTtcbiAgICB9XG4gICAgdGhpcy5fZm9vdFByaW50LnllYXIgPSB2YWwueWVhcjtcbiAgICB0aGlzLl9mb290UHJpbnQubW9udGggPSB2YWwubW9udGhPZlllYXI7XG4gICAgdGhpcy5fZm9vdFByaW50LmRheSA9IHZhbC5kYXlPZk1vbnRoO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaGFuZGxlR29Ub2RheSgpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMuX3NldERhdGUodGhpcy5fdG9kYXkuZGF0ZSk7XG4gICAgdGhpcy5nb1RvZGF5KCk7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IGl0ZW0uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5leHQoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgaXRlbS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJldigpIHtcbiAgICB0aGlzLl9uYXZOZXh0UHJldih0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGZvY3VzIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgY2FsZW5kYXIgc2xvdCBvciB0aGUgZmlyc3QgYXZhaWxhYmxlIHNsb3QuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIGZvY3VzKCkge1xuICAgIGNvbnN0IGZ1bmMgPSAoczogc3RyaW5nKSA9PiB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4ocyk7XG4gICAgY29uc3QgZGl2ID0gZnVuYygnLmF4LWNhbGVuZGFyLXNsb3RzPmRpdi5heC1zdGF0ZS1zZWxlY3RlZCcpIHx8IGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYnKTtcbiAgICBkaXY/LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX25hdk5leHRQcmV2KHByZXY6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaWduID0gcHJldiA/IC0xIDogMTtcbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICdkYXknKSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCdtb250aCcsIHNpZ24gKiAxICogdGhpcy5jb3VudCkpO1xuICAgIGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnKSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEgKiB0aGlzLmNvdW50KSk7XG4gICAgZWxzZSB0aGlzLm5hdlRvKHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgc2lnbiAqIDEwICogdGhpcy5jb3VudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgY3VycmVudCBkYXRlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnb1RvZGF5KCkge1xuICAgIHRoaXMubmF2VG8odGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byBhIHNwZWNpZmllZCBkYXRlIGFuZCB1cGRhdGVzIHRoZSB2aWV3LlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIG5hdmlnYXRlIHRvLCB3aGljaCBjYW4gYmUgYSBgRGF0ZWAgb2JqZWN0IG9yIGFuIGBBWERhdGVUaW1lYCBpbnN0YW5jZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmF2VG8oZGF0ZTogRGF0ZSB8IEFYRGF0ZVRpbWUpIHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jb252ZXJ0KGRhdGUsIHRoaXMudHlwZSk7XG4gICAgdGhpcy5fdmlld1N0YXJ0RGF0ZSA9IHZhbC5zdGFydE9mKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICAvL3RvIG1ha2Ugc3VyZSBpdHMgcmVuZHJlZCBhbmQgZGlzcGxheVJhbmdlIGlzIG5vdCBudWxsXG4gICAgaWYgKHRoaXMudmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdnIgPSB0aGlzLmRpc3BsYXlSYW5nZTtcbiAgICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdGhpcy5fbmF2VXNlckludGVyYWN0aW9uLFxuICAgICAgICBzdGFydDogdnIuc3RhcnRUaW1lPy5kYXRlLFxuICAgICAgICBlbmQ6IHZyLmVuZFRpbWU/LmRhdGUsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9jbGFzc2VzID0ge1xuICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogdGhpcy5kaXNhYmxlZCxcbiAgICAgICdheC1zdGF0ZS1yZWFkb25seSc6IHRoaXMucmVhZG9ubHksXG4gICAgfTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoX2NsYXNzZXMpXG4gICAgICAuZmlsdGVyKChjKSA9PiBjWzFdKVxuICAgICAgLm1hcCgoYykgPT4gY1swXSlcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NldERhdGUodmFsdWU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5jb21taXRWYWx1ZSh0aGlzLmNhbGVuZGFyU2VydmljZS5jb252ZXJ0KHZhbHVlLCB0aGlzLnR5cGUpLnN0YXJ0T2YoKS5kYXRlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGlzYWJsZWREYXRlcykgJiYgdGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcyhkYXRlLmRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0hvbGlkYXkoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdoID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuaG9saWRheXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLmRhdGUsICdkYXknKSk7XG4gICAgbGV0IGRoID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuaG9saWRheXMuc29tZSgoZCkgPT4gZGF0ZS5lcXVhbChkLmRhdGUsICdkYXknKSk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ob2xpZGF5RGF0ZXMpICYmIHRoaXMuaG9saWRheURhdGVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICBkaCA9IHRoaXMuaG9saWRheURhdGVzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZCwgJ2RheScpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmhvbGlkYXlEYXRlcyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBkaCA9IHRoaXMuaG9saWRheURhdGVzKGRhdGUuZGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBnaCB8fCBkaDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzV2Vla2VuZChkYXRlOiBBWERhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgd2Vla2VuZCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnJlc29sdmVDYWxlbmRhcih0aGlzLnR5cGUpLndlZWtlbmQ7XG4gICAgcmV0dXJuIHdlZWtlbmQuaW5jbHVkZXMoZGF0ZS5kYXlPZldlZWsgLSAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIF9oYW5kbGVPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy9UT0RPOiBjb21wbGV0ZSBrZXlib2FkIG5hdmlnYXRpb25cbiAgICBjb25zdCBpZ25vcmUgPSAoKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUuY29kZSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGlmIChlLmN0cmxLZXkpIHtcbiAgICAgICAgZS5jb2RlID09PSAnQXJyb3dSaWdodCcgPyB0aGlzLm5leHQoKSA6IHRoaXMucHJldigpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH1cbiAgICAgIGlnbm9yZSgpO1xuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09PSAnQXJyb3dVcCcgfHwgZS5jb2RlID09PSAnQXJyb3dEb3duJykge1xuICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICBlLmNvZGUgPT09ICdBcnJvd1VwJyA/IHRoaXMubmV4dCgpIDogdGhpcy5wcmV2KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgICAgaWdub3JlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TW9udGhOYW1lKGRhdGU6IEFYRGF0ZVRpbWUsIHN0eWxlOiAnc2hvcnQnIHwgJ2xvbmcnKSB7XG4gICAgcmV0dXJuIGBkYXRlVGltZS5tb250aHMuJHtkYXRlLmNhbGVuZGFyLm5hbWUoKX0uJHtzdHlsZX0uJHtkYXRlLm1vbnRoT2ZZZWFyIC0gMX1gO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICBAZm9yICh2IG9mIHZpZXdzOyBsZXQgaSA9ICRpbmRleCwgZmlyc3QgPSAkZmlyc3QsIGxhc3QgPSAkbGFzdDsgdHJhY2sgaSkge1xuICAgIEBzd2l0Y2ggKGFjdGl2ZVZpZXcpIHtcbiAgICAgIEBjYXNlICgneWVhcicpIHtcbiAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtc3RhdGUtZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAneWVhcicpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnWVlZWScpIH19IC0ge3sgdi5yYW5nZS5lbmRUaW1lLmZvcm1hdCgnWVlZWScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uIGF4LW5leHRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3ByZXYnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ25leHQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy15ZWFyXCIgW25nQ2xhc3NdPVwieyAnYXgtZGVmYXVsdCc6ICFjZWxsVGVtcGxhdGUgfVwiPlxuICAgICAgICAgIEBmb3IgKHNsb3Qgb2Ygdi5zbG90czsgdHJhY2sgc2xvdC50ZXh0KSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChjZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgc2xvdDogc2xvdCB9IH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGNhc2UgKCdtb250aCcpIHtcbiAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAneWVhcicpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lLmZvcm1hdCgnWVlZWScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwcmV2JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIiduZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMtbW9udGhcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbG90IG9mIHYuc2xvdHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzbG90LmNzc0NsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgc2xvdDogc2xvdCB9IH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC50b29sdGlwXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0TW9udGhOYW1lKHNsb3QuZGF0ZSwgJ3Nob3J0JykgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIEBpZiAoc2hvd05hdmlnYXRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItdmlldy1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5hdkNsaWNrKCRldmVudCwgJ3llYXInKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB2LnJhbmdlLnN0YXJ0VGltZS5mb3JtYXQoJ1lZWVknKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICdtb250aCcpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGdldE1vbnRoTmFtZSh2LnJhbmdlLnN0YXJ0VGltZSwgJ2xvbmcnKSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUHJldkNsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwcmV2JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIiduZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGQgb2YgX3dlZWtkYXlzXCI+e3sgJ2RhdGVUaW1lLndlZWtkYXlzLnNob3J0LicgKyBkIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xvdCBvZiB2LnNsb3RzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChjZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgc2xvdDogc2xvdCB9IH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LnRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgfVxuICB9XG48L2Rpdj5cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPjwvbmctY29udGVudD5cbiJdfQ==
@@ -218,6 +218,7 @@ export class MXSelectionValueComponent extends MXValueComponent {
218
218
  clearSelectionCache() {
219
219
  this.dataService.cacheList = {};
220
220
  this.dataService.selectedItems = [];
221
+ this.cdr.markForCheck();
221
222
  }
222
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MXSelectionValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
223
224
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MXSelectionValueComponent }); }
@@ -225,4 +226,4 @@ export class MXSelectionValueComponent extends MXValueComponent {
225
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MXSelectionValueComponent, decorators: [{
226
227
  type: Injectable
227
228
  }] });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRzNELE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFUyxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUM5QixjQUFTLEdBQXdDLEVBQUUsQ0FBQztLQUM1RDs4R0FIWSx3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVTs7QUFNWCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQseUJBQXlCLENBQzFCLENBQUM7QUFHRixNQUFNLE9BQWdCLHlCQUF1QyxTQUFRLGdCQUF5QjtJQUQ5Rjs7UUFFVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBSTlDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBVW5CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBV25CLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFXcEIsbUJBQWMsR0FBRyxVQUFVLENBQUM7UUFXNUIsY0FBUyxHQUFHLEtBQUssQ0FBQztLQTJLM0I7SUFyTkMsSUFBVyxVQUFVO1FBQ25CLE9B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LENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdEMsQ0FBQzs4R0EzTm1CLHlCQUF5QjtrSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUQ5QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTVhWYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4vdmFsdWUtY29tcG9uZW50LmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZSB7XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiB1bmtub3duW10gPSBbXTtcbiAgcHVibGljIGNhY2hlTGlzdDogeyBba2V5OiBzdHJpbmcgfCBudW1iZXJdOiB1bmtub3duIH0gPSB7fTtcbn1cblxuZXhwb3J0IGNvbnN0IEFYX1NFTEVDVElPTl9EQVRBX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZT4oXG4gICdBWF9TRUxFQ1RJT05fREFUQV9UT0tFTicsXG4pO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTVhTZWxlY3Rpb25WYWx1ZUNvbXBvbmVudDxUID0gdW5rbm93bj4gZXh0ZW5kcyBNWFZhbHVlQ29tcG9uZW50PHVua25vd24+IHtcbiAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgZGF0YVNlcnZpY2UgPSBpbmplY3QoQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4pO1xuXG4gIGRpc2FibGVkQ2FsbGJhY2s6IChlOiB7IGl0ZW06IFQ7IGluZGV4OiBudW1iZXIgfSkgPT4gYm9vbGVhbjtcblxuICBwcml2YXRlIF92YWx1ZUZpZWxkID0gJ2lkJztcbiAgcHVibGljIGdldCB2YWx1ZUZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlRmllbGQ7XG4gIH1cbiAgcHVibGljIHNldCB2YWx1ZUZpZWxkKHY6IHN0cmluZykge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICd2YWx1ZUZpZWxkJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgX3RleHRUZW1wbGF0ZSA9ICcnO1xuICBwdWJsaWMgZ2V0IHRleHRUZW1wbGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZXh0VGVtcGxhdGU7XG4gIH1cbiAgcHVibGljIHNldCB0ZXh0VGVtcGxhdGUodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RleHRUZW1wbGF0ZScsXG4gICAgICB2YWx1ZTogdixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3RleHRGaWVsZCA9ICd0ZXh0JztcbiAgcHVibGljIGdldCB0ZXh0RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dEZpZWxkO1xuICB9XG4gIHB1YmxpYyBzZXQgdGV4dEZpZWxkKHY6IHN0cmluZykge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICd0ZXh0RmllbGQnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZEZpZWxkID0gJ2Rpc2FibGVkJztcbiAgcHVibGljIGdldCBkaXNhYmxlZEZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRmllbGQ7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlZEZpZWxkKHY6IHN0cmluZykge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdkaXNhYmxlZEZpZWxkJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcbiAgcHVibGljIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgcHVibGljIHNldCBtdWx0aXBsZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ211bHRpcGxlJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiB1bmtub3duW10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnNlbGVjdGVkSXRlbXMgfHwgW107XG4gIH1cblxuICBvdmVycmlkZSBpbnRlcm5hbFNldFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChpc0FycmF5ICYmIHZhbHVlLmxlbmd0aCA9PSAwKSkge1xuICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgPyBbXSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtcyA9IGlzQXJyYXlcbiAgICAgID8gdGhpcy5ub3JtYWxpemVJdGVtc0xpc3QodmFsdWUsIHRydWUpXG4gICAgICA6IHRoaXMubm9ybWFsaXplSXRlbXNMaXN0KFt2YWx1ZV0sIHRydWUpO1xuXG4gICAgaWYgKG5vcm1hbGl6ZWRJdGVtcy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgPyBbXSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMubXVsdGlwbGVcbiAgICAgID8gbm9ybWFsaXplZEl0ZW1zLm1hcCgoYykgPT4gY1t0aGlzLnZhbHVlRmllbGRdKVxuICAgICAgOiBub3JtYWxpemVkSXRlbXNbMF1bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb3ZlcnJpZGUgZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkVmFsdWU/OiB1bmtub3duLCBuZXdWYWx1ZT86IHVua25vd24pIHtcbiAgICB0aGlzLl9ub3JtYWxpemVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgc3VwZXIuZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgfVxuXG4gIGFic3RyYWN0IGdldEl0ZW1CeUtleShrZXk6IHVua25vd24pOiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPjtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplSXRlbXNMaXN0KGl0ZW1zOiB1bmtub3duW10sIGZpbmRCeWtleSA9IGZhbHNlKTogdW5rbm93bltdIHtcbiAgICBpZiAoaXRlbXMgPT0gbnVsbCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGMpID0+IGMgIT0gbnVsbCkubWFwKChpKSA9PiB0aGlzLm5vcm1hbGl6ZUl0ZW0oaSwgZmluZEJ5a2V5KSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZUl0ZW0oaXRlbTogdW5rbm93biwgZmluZEJ5a2V5ID0gZmFsc2UpOiB1bmtub3duIHtcbiAgICBjb25zdCBjb21wbGV4ID0gdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCc7XG4gICAgY29uc3Qga2V5ID0gY29tcGxleCA/IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA6IGAke2l0ZW19YDtcbiAgICBjb25zdCBjYWNoZUtleSA9IGBrLSR7a2V5fWA7XG4gICAgY29uc3QgaGFzVGV4dCA9ICFjb21wbGV4IHx8IGl0ZW1bdGhpcy50ZXh0RmllbGRdICE9IG51bGw7XG4gICAgLy9cbiAgICBpZiAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldICYmIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XVt0aGlzLnRleHRGaWVsZF0pXG4gICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldO1xuICAgIC8vXG4gICAgY29uc3Qgb2JqOiB1bmtub3duID0ge307XG4gICAgaWYgKGNvbXBsZXggJiYgaGFzVGV4dCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGlzdHNJdGVtID0gZmluZEJ5a2V5ID8gdGhpcy5nZXRJdGVtQnlLZXkoa2V5KSA6IG51bGw7XG4gICAgICBpZiAoZXhpc3RzSXRlbSAmJiBleGlzdHNJdGVtIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9IGtleTtcbiAgICAgICAgb2JqWydpc0xvYWRpbmcnXSA9IHRydWU7XG4gICAgICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSAnTG9hZGluZyc7XG4gICAgICAgIC8vXG4gICAgICAgIGV4aXN0c0l0ZW1cbiAgICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByID09PSAnb2JqZWN0JyAmJiByKSB7XG4gICAgICAgICAgICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0gclt0aGlzLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gclt0aGlzLnRleHRGaWVsZF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9IHIgfHwga2V5O1xuICAgICAgICAgICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIG9ialsnaXNMb2FkaW5nJ10gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG9iajtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChleGlzdHNJdGVtKSB7XG4gICAgICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0gY29tcGxleCA/IGV4aXN0c0l0ZW1bdGhpcy52YWx1ZUZpZWxkXSA6IGV4aXN0c0l0ZW07XG4gICAgICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSBjb21wbGV4ID8gZXhpc3RzSXRlbVt0aGlzLnRleHRGaWVsZF0gOiBleGlzdHNJdGVtO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqW3RoaXMudmFsdWVGaWVsZF0gPSBjb21wbGV4ID8gaXRlbVt0aGlzLnZhbHVlRmllbGRdIDogaXRlbTtcbiAgICAgICAgb2JqW3RoaXMudGV4dEZpZWxkXSA9IGNvbXBsZXggPyBpdGVtW3RoaXMudGV4dEZpZWxkXSA6IGl0ZW07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG9iajtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9ybWFsaXplU2VsZWN0ZWRJdGVtcygpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IHRoaXMudmFsdWUgIT0gbnVsbCA/IFt0aGlzLnZhbHVlXSA6IFtdO1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2VsZWN0ZWRJdGVtcyA9IHZhbHVlcy5tYXAoKHYpID0+IHRoaXMubm9ybWFsaXplSXRlbSh2KSk7XG4gIH1cblxuICBwdWJsaWMgdW5zZWxlY3RJdGVtcyguLi5pdGVtczogVFtdKSB7XG4gICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29tbWl0VmFsdWUoW10sIHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVJdGVtcyA9IEFycmF5LmlzQXJyYXkoaXRlbXMpXG4gICAgICA/IHRoaXMubm9ybWFsaXplSXRlbXNMaXN0KGl0ZW1zKVxuICAgICAgOiBbdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW1zKV07XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAoaSkgPT4gIW5vcm1hbGl6ZUl0ZW1zLnNvbWUoKG4pID0+IG5bdGhpcy52YWx1ZUZpZWxkXSA9PSBpW3RoaXMudmFsdWVGaWVsZF0pLFxuICAgICk7XG4gICAgdGhpcy5jb21taXRWYWx1ZShuZXdTZWxlY3RlZEl0ZW1zLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RJdGVtcyguLi5pdGVtczogVFtdKSB7XG4gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCkge1xuICAgICAgbGV0IG5ld1NlbGVjdGVkSXRlbXMgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IFt0aGlzLnZhbHVlXTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZUl0ZW1zID0gQXJyYXkuaXNBcnJheShpdGVtcylcbiAgICAgICAgPyB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdChpdGVtcylcbiAgICAgICAgOiBbdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW1zKV07XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICBuZXdTZWxlY3RlZEl0ZW1zID0gWy4uLm5ld1NlbGVjdGVkSXRlbXMsIC4uLm5vcm1hbGl6ZUl0ZW1zXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1NlbGVjdGVkSXRlbXMgPSBub3JtYWxpemVJdGVtcztcbiAgICAgIH1cbiAgICAgIHRoaXMuY29tbWl0VmFsdWUobmV3U2VsZWN0ZWRJdGVtcywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlbGVjdCguLi5pdGVtczogVFtdKSB7XG4gICAgaXRlbXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkgPyB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSkgOiB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0l0ZW1TZWxlY3RlZChpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMubm9ybWFsaXplSXRlbShpdGVtKVt0aGlzLnZhbHVlRmllbGRdKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0l0ZW1EaXNhYmxlZChpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShpdGVtW3RoaXMuZGlzYWJsZWRGaWVsZF0pID09PSB0cnVlIHx8XG4gICAgICAodGhpcy5kaXNhYmxlZENhbGxiYWNrID8gdGhpcy5kaXNhYmxlZENhbGxiYWNrKHsgaXRlbSwgaW5kZXg6IC0xIH0pIDogZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIC8vIHByb3RlY3RlZCBnZXREaXNwbGF5VGV4dChpdGVtOiBUKSB7XG4gIC8vICAgY29uc3Qgbm9ybWFsaXplSXRlbSA9IHRoaXMubm9ybWFsaXplSXRlbShpdGVtKSBhcyBhbnk7XG4gIC8vICAgcmV0dXJuIGZvcm1hdHRlZFRleHQgfHwgbm9ybWFsaXplSXRlbVt0aGlzLnZhbHVlRmllbGRdO1xuICAvLyB9XG5cbiAgcHJvdGVjdGVkIGdldERpc3BsYXlUZXh0KGl0ZW06IFQpIHtcbiAgICBjb25zdCBub3JtYWxpemVJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pIGFzIGFueTtcbiAgICBjb25zdCBmb3JtYXR0ZWRUZW1wbGF0ZSA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0VGVtcGxhdGUsICdzdHJpbmcnLCBub3JtYWxpemVJdGVtKTtcbiAgICBpZiAodGhpcy50ZXh0VGVtcGxhdGUgJiYgZm9ybWF0dGVkVGVtcGxhdGUgIT0gdGhpcy50ZXh0VGVtcGxhdGUpIHJldHVybiBmb3JtYXR0ZWRUZW1wbGF0ZTtcbiAgICBlbHNlIHJldHVybiBub3JtYWxpemVJdGVtW3RoaXMudGV4dEZpZWxkXSB8fCBub3JtYWxpemVJdGVtW3RoaXMudmFsdWVGaWVsZF07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoaXRlbTogVCkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUl0ZW0gPSB0aGlzLm5vcm1hbGl6ZUl0ZW0oaXRlbSkgYXMgYW55O1xuICAgIHJldHVybiBub3JtYWxpemVJdGVtW3RoaXMudmFsdWVGaWVsZF07XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYXJTZWxlY3Rpb25DYWNoZSgpIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdCA9IHt9O1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICB9XG59XG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRzNELE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFUyxrQkFBYSxHQUFjLEVBQUUsQ0FBQztRQUM5QixjQUFTLEdBQXdDLEVBQUUsQ0FBQztLQUM1RDs4R0FIWSx3QkFBd0I7a0hBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVTs7QUFNWCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQseUJBQXlCLENBQzFCLENBQUM7QUFHRixNQUFNLE9BQWdCLHlCQUF1QyxTQUFRLGdCQUF5QjtJQUQ5Rjs7UUFFVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBSTlDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBVW5CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBV25CLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFXcEIsbUJBQWMsR0FBRyxVQUFVLENBQUM7UUFXNUIsY0FBUyxHQUFHLEtBQUssQ0FBQztLQTRLM0I7SUF0TkMsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBVyxVQUFVLENBQUMsQ0FBUztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLFlBQVk7WUFDbEIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBVyxZQUFZLENBQUMsQ0FBUztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBVyxTQUFTLENBQUMsQ0FBUztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLFdBQVc7WUFDakIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBVyxhQUFhLENBQUMsQ0FBUztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLGVBQWU7WUFDckIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsQ0FBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVRLGdCQUFnQixDQUFDLEtBQWM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLE9BQU87WUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVE7WUFDMUIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVRLHVCQUF1QixDQUFDLFFBQWtCLEVBQUUsUUFBa0I7UUFDckUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBSVMsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxTQUFTLEdBQUcsS0FBSztRQUM5RCxJQUFJLEtBQUssSUFBSSxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBYSxFQUFFLFNBQVMsR0FBRyxLQUFLO1FBQ3BELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLFFBQVEsQ0FBQztRQUN4QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN6RCxFQUFFO1FBQ0YsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzlGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsRUFBRTtRQUNGLE1BQU0sR0FBRyxHQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzdELElBQUksVUFBVSxJQUFJLFVBQVUsWUFBWSxPQUFPLEVBQUUsQ0FBQztnQkFDaEQsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQzNCLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO2dCQUNoQyxFQUFFO2dCQUNGLFVBQVU7cUJBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1YsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDMUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMxQyxDQUFDO3lCQUFNLENBQUM7d0JBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO3dCQUNoQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDLENBQUM7cUJBQ0QsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDWixHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUMxRSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzFFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzNDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBRyxLQUFVO1FBQ2hDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUNoRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDN0UsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFdBQVcsQ0FBQyxHQUFHLEtBQVU7UUFDOUIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdFLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRU0sWUFBWSxDQUFDLEdBQUcsS0FBVTtRQUMvQixLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFPO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQU87UUFDM0IsT0FBTyxDQUNMLElBQUksQ0FBQyxRQUFRO1lBQ2IscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLElBQUk7WUFDeEQsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDN0UsQ0FBQztJQUNKLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsMkRBQTJEO0lBQzNELDREQUE0RDtJQUM1RCxJQUFJO0lBRU0sY0FBYyxDQUFDLElBQU87UUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQVEsQ0FBQztRQUN0RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2hHLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8saUJBQWlCLENBQUM7O1lBQ3JGLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFUyxRQUFRLENBQUMsSUFBTztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBUSxDQUFDO1FBQ3RELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDOzhHQTVObUIseUJBQXlCO2tIQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNWFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQuY2xhc3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTVhTZWxlY3Rpb25CcmlkZ2VTZXJ2aWNlIHtcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IHVua25vd25bXSA9IFtdO1xuICBwdWJsaWMgY2FjaGVMaXN0OiB7IFtrZXk6IHN0cmluZyB8IG51bWJlcl06IHVua25vd24gfSA9IHt9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TVhTZWxlY3Rpb25CcmlkZ2VTZXJ2aWNlPihcbiAgJ0FYX1NFTEVDVElPTl9EQVRBX1RPS0VOJyxcbik7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNWFNlbGVjdGlvblZhbHVlQ29tcG9uZW50PFQgPSB1bmtub3duPiBleHRlbmRzIE1YVmFsdWVDb21wb25lbnQ8dW5rbm93bj4ge1xuICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkYXRhU2VydmljZSA9IGluamVjdChBWF9TRUxFQ1RJT05fREFUQV9UT0tFTik7XG5cbiAgZGlzYWJsZWRDYWxsYmFjazogKGU6IHsgaXRlbTogVDsgaW5kZXg6IG51bWJlciB9KSA9PiBib29sZWFuO1xuXG4gIHByaXZhdGUgX3ZhbHVlRmllbGQgPSAnaWQnO1xuICBwdWJsaWMgZ2V0IHZhbHVlRmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVGaWVsZDtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlRmllbGQodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3ZhbHVlRmllbGQnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBfdGV4dFRlbXBsYXRlID0gJyc7XG4gIHB1YmxpYyBnZXQgdGV4dFRlbXBsYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRUZW1wbGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHRleHRUZW1wbGF0ZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAndGV4dFRlbXBsYXRlJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGV4dEZpZWxkID0gJ3RleHQnO1xuICBwdWJsaWMgZ2V0IHRleHRGaWVsZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZXh0RmllbGQ7XG4gIH1cbiAgcHVibGljIHNldCB0ZXh0RmllbGQodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RleHRGaWVsZCcsXG4gICAgICB2YWx1ZTogdixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkRmllbGQgPSAnZGlzYWJsZWQnO1xuICBwdWJsaWMgZ2V0IGRpc2FibGVkRmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRGaWVsZDtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc2FibGVkRmllbGQodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ2Rpc2FibGVkRmllbGQnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9tdWx0aXBsZSA9IGZhbHNlO1xuICBwdWJsaWMgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnbXVsdGlwbGUnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEl0ZW1zKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uuc2VsZWN0ZWRJdGVtcyB8fCBbXTtcbiAgfVxuXG4gIG92ZXJyaWRlIGludGVybmFsU2V0VmFsdWUodmFsdWU6IHVua25vd24pIHtcbiAgICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgKGlzQXJyYXkgJiYgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsaXplZEl0ZW1zID0gaXNBcnJheVxuICAgICAgPyB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdCh2YWx1ZSwgdHJ1ZSlcbiAgICAgIDogdGhpcy5ub3JtYWxpemVJdGVtc0xpc3QoW3ZhbHVlXSwgdHJ1ZSk7XG5cbiAgICBpZiAobm9ybWFsaXplZEl0ZW1zLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tdWx0aXBsZVxuICAgICAgPyBub3JtYWxpemVkSXRlbXMubWFwKChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0pXG4gICAgICA6IG5vcm1hbGl6ZWRJdGVtc1swXVt0aGlzLnZhbHVlRmllbGRdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBvdmVycmlkZSBlbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZT86IHVua25vd24sIG5ld1ZhbHVlPzogdW5rbm93bikge1xuICAgIHRoaXMuX25vcm1hbGl6ZVNlbGVjdGVkSXRlbXMoKTtcbiAgICBzdXBlci5lbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0SXRlbUJ5S2V5KGtleTogdW5rbm93bik6IHVua25vd24gfCBQcm9taXNlPHVua25vd24+O1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemVJdGVtc0xpc3QoaXRlbXM6IHVua25vd25bXSwgZmluZEJ5a2V5ID0gZmFsc2UpOiB1bmtub3duW10ge1xuICAgIGlmIChpdGVtcyA9PSBudWxsKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoYykgPT4gYyAhPSBudWxsKS5tYXAoKGkpID0+IHRoaXMubm9ybWFsaXplSXRlbShpLCBmaW5kQnlrZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplSXRlbShpdGVtOiB1bmtub3duLCBmaW5kQnlrZXkgPSBmYWxzZSk6IHVua25vd24ge1xuICAgIGNvbnN0IGNvbXBsZXggPSB0eXBlb2YgaXRlbSA9PSAnb2JqZWN0JztcbiAgICBjb25zdCBrZXkgPSBjb21wbGV4ID8gaXRlbVt0aGlzLnZhbHVlRmllbGRdIDogYCR7aXRlbX1gO1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gYGstJHtrZXl9YDtcbiAgICBjb25zdCBoYXNUZXh0ID0gIWNvbXBsZXggfHwgaXRlbVt0aGlzLnRleHRGaWVsZF0gIT0gbnVsbDtcbiAgICAvL1xuICAgIGlmICh0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdFtjYWNoZUtleV0gJiYgdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldW3RoaXMudGV4dEZpZWxkXSlcbiAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdFtjYWNoZUtleV07XG4gICAgLy9cbiAgICBjb25zdCBvYmo6IHVua25vd24gPSB7fTtcbiAgICBpZiAoY29tcGxleCAmJiBoYXNUZXh0KSB7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwgaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0c0l0ZW0gPSBmaW5kQnlrZXkgPyB0aGlzLmdldEl0ZW1CeUtleShrZXkpIDogbnVsbDtcbiAgICAgIGlmIChleGlzdHNJdGVtICYmIGV4aXN0c0l0ZW0gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0ga2V5O1xuICAgICAgICBvYmpbJ2lzTG9hZGluZyddID0gdHJ1ZTtcbiAgICAgICAgb2JqW3RoaXMudGV4dEZpZWxkXSA9ICdMb2FkaW5nJztcbiAgICAgICAgLy9cbiAgICAgICAgZXhpc3RzSXRlbVxuICAgICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgPT09ICdvYmplY3QnICYmIHIpIHtcbiAgICAgICAgICAgICAgb2JqW3RoaXMudmFsdWVGaWVsZF0gPSByW3RoaXMudmFsdWVGaWVsZF07XG4gICAgICAgICAgICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSByW3RoaXMudGV4dEZpZWxkXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0gciB8fCBrZXk7XG4gICAgICAgICAgICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgb2JqWydpc0xvYWRpbmcnXSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldID0gb2JqO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV4aXN0c0l0ZW0pIHtcbiAgICAgICAgb2JqW3RoaXMudmFsdWVGaWVsZF0gPSBjb21wbGV4ID8gZXhpc3RzSXRlbVt0aGlzLnZhbHVlRmllbGRdIDogZXhpc3RzSXRlbTtcbiAgICAgICAgb2JqW3RoaXMudGV4dEZpZWxkXSA9IGNvbXBsZXggPyBleGlzdHNJdGVtW3RoaXMudGV4dEZpZWxkXSA6IGV4aXN0c0l0ZW07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9IGNvbXBsZXggPyBpdGVtW3RoaXMudmFsdWVGaWVsZF0gOiBpdGVtO1xuICAgICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gY29tcGxleCA/IGl0ZW1bdGhpcy50ZXh0RmllbGRdIDogaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldID0gb2JqO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIF9ub3JtYWxpemVTZWxlY3RlZEl0ZW1zKCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlIDogdGhpcy52YWx1ZSAhPSBudWxsID8gW3RoaXMudmFsdWVdIDogW107XG4gICAgdGhpcy5kYXRhU2VydmljZS5zZWxlY3RlZEl0ZW1zID0gdmFsdWVzLm1hcCgodikgPT4gdGhpcy5ub3JtYWxpemVJdGVtKHYpKTtcbiAgfVxuXG4gIHB1YmxpYyB1bnNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBUW10pIHtcbiAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jb21taXRWYWx1ZShbXSwgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZUl0ZW1zID0gQXJyYXkuaXNBcnJheShpdGVtcylcbiAgICAgID8gdGhpcy5ub3JtYWxpemVJdGVtc0xpc3QoaXRlbXMpXG4gICAgICA6IFt0aGlzLm5vcm1hbGl6ZUl0ZW0oaXRlbXMpXTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgIChpKSA9PiAhbm9ybWFsaXplSXRlbXMuc29tZSgobikgPT4gblt0aGlzLnZhbHVlRmllbGRdID09IGlbdGhpcy52YWx1ZUZpZWxkXSksXG4gICAgKTtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKG5ld1NlbGVjdGVkSXRlbXMsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBUW10pIHtcbiAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBsZXQgbmV3U2VsZWN0ZWRJdGVtcyA9IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlIDogW3RoaXMudmFsdWVdO1xuICAgICAgY29uc3Qgbm9ybWFsaXplSXRlbXMgPSBBcnJheS5pc0FycmF5KGl0ZW1zKVxuICAgICAgICA/IHRoaXMubm9ybWFsaXplSXRlbXNMaXN0KGl0ZW1zKVxuICAgICAgICA6IFt0aGlzLm5vcm1hbGl6ZUl0ZW0oaXRlbXMpXTtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIG5ld1NlbGVjdGVkSXRlbXMgPSBbLi4ubmV3U2VsZWN0ZWRJdGVtcywgLi4ubm9ybWFsaXplSXRlbXNdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3U2VsZWN0ZWRJdGVtcyA9IG5vcm1hbGl6ZUl0ZW1zO1xuICAgICAgfVxuICAgICAgdGhpcy5jb21taXRWYWx1ZShuZXdTZWxlY3RlZEl0ZW1zLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VsZWN0KC4uLml0ZW1zOiBUW10pIHtcbiAgICBpdGVtcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5pc0l0ZW1TZWxlY3RlZChpdGVtKSA/IHRoaXMudW5zZWxlY3RJdGVtcyhpdGVtKSA6IHRoaXMuc2VsZWN0SXRlbXMoaXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pW3RoaXMudmFsdWVGaWVsZF0pO1xuICB9XG5cbiAgcHVibGljIGlzSXRlbURpc2FibGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgY29lcmNlQm9vbGVhblByb3BlcnR5KGl0ZW1bdGhpcy5kaXNhYmxlZEZpZWxkXSkgPT09IHRydWUgfHxcbiAgICAgICh0aGlzLmRpc2FibGVkQ2FsbGJhY2sgPyB0aGlzLmRpc2FibGVkQ2FsbGJhY2soeyBpdGVtLCBpbmRleDogLTEgfSkgOiBmYWxzZSlcbiAgICApO1xuICB9XG5cbiAgLy8gcHJvdGVjdGVkIGdldERpc3BsYXlUZXh0KGl0ZW06IFQpIHtcbiAgLy8gICBjb25zdCBub3JtYWxpemVJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pIGFzIGFueTtcbiAgLy8gICByZXR1cm4gZm9ybWF0dGVkVGV4dCB8fCBub3JtYWxpemVJdGVtW3RoaXMudmFsdWVGaWVsZF07XG4gIC8vIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVRleHQoaXRlbTogVCkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUl0ZW0gPSB0aGlzLm5vcm1hbGl6ZUl0ZW0oaXRlbSkgYXMgYW55O1xuICAgIGNvbnN0IGZvcm1hdHRlZFRlbXBsYXRlID0gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLnRleHRUZW1wbGF0ZSwgJ3N0cmluZycsIG5vcm1hbGl6ZUl0ZW0pO1xuICAgIGlmICh0aGlzLnRleHRUZW1wbGF0ZSAmJiBmb3JtYXR0ZWRUZW1wbGF0ZSAhPSB0aGlzLnRleHRUZW1wbGF0ZSkgcmV0dXJuIGZvcm1hdHRlZFRlbXBsYXRlO1xuICAgIGVsc2UgcmV0dXJuIG5vcm1hbGl6ZUl0ZW1bdGhpcy50ZXh0RmllbGRdIHx8IG5vcm1hbGl6ZUl0ZW1bdGhpcy52YWx1ZUZpZWxkXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZShpdGVtOiBUKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplSXRlbSA9IHRoaXMubm9ybWFsaXplSXRlbShpdGVtKSBhcyBhbnk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZUl0ZW1bdGhpcy52YWx1ZUZpZWxkXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhclNlbGVjdGlvbkNhY2hlKCkge1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0ID0ge307XG4gICAgdGhpcy5kYXRhU2VydmljZS5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==