@acorex/components 20.0.0 → 20.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +10 -10
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-action-sheet.mjs +10 -10
  4. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  5. package/fesm2022/acorex-components-alert.mjs +7 -7
  6. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  7. package/fesm2022/acorex-components-audio-wave.mjs +7 -7
  8. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  9. package/fesm2022/acorex-components-autocomplete.mjs +7 -7
  10. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  11. package/fesm2022/acorex-components-avatar.mjs +10 -10
  12. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  13. package/fesm2022/acorex-components-badge.mjs +7 -7
  14. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  15. package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
  16. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  17. package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
  18. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  19. package/fesm2022/acorex-components-button-group.mjs +10 -10
  20. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  21. package/fesm2022/acorex-components-button.mjs +13 -13
  22. package/fesm2022/acorex-components-button.mjs.map +1 -1
  23. package/fesm2022/acorex-components-calendar.mjs +13 -13
  24. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  25. package/fesm2022/acorex-components-check-box.mjs +7 -7
  26. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  27. package/fesm2022/acorex-components-chips.mjs +7 -7
  28. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  29. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  30. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  31. package/fesm2022/acorex-components-collapse.mjs +10 -10
  32. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  33. package/fesm2022/acorex-components-color-box.mjs +7 -7
  34. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  35. package/fesm2022/acorex-components-color-palette.mjs +26 -26
  36. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  37. package/fesm2022/acorex-components-comment.mjs +28 -28
  38. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  39. package/fesm2022/acorex-components-conversation.mjs +49 -49
  40. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  41. package/fesm2022/acorex-components-cron-job.mjs +46 -46
  42. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  43. package/fesm2022/acorex-components-data-pager.mjs +32 -32
  44. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  45. package/fesm2022/acorex-components-data-table.mjs +37 -37
  46. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  47. package/fesm2022/acorex-components-datetime-box.mjs +7 -7
  48. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  49. package/fesm2022/acorex-components-datetime-input.mjs +7 -7
  50. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  51. package/fesm2022/acorex-components-datetime-picker.mjs +7 -7
  52. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  53. package/fesm2022/acorex-components-decorators.mjs +25 -25
  54. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  55. package/fesm2022/acorex-components-dialog.mjs +10 -10
  56. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  57. package/fesm2022/acorex-components-drawer-2.mjs +10 -10
  58. package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
  59. package/fesm2022/acorex-components-drawer.mjs +13 -13
  60. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  61. package/fesm2022/acorex-components-dropdown-button.mjs +7 -7
  62. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  63. package/fesm2022/acorex-components-dropdown.mjs +13 -13
  64. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  65. package/fesm2022/acorex-components-file-explorer.mjs +25 -25
  66. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  67. package/fesm2022/acorex-components-flow-chart.mjs +16 -16
  68. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  69. package/fesm2022/acorex-components-form.mjs +16 -16
  70. package/fesm2022/acorex-components-form.mjs.map +1 -1
  71. package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
  72. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  73. package/fesm2022/acorex-components-image-editor.mjs +34 -34
  74. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  75. package/fesm2022/acorex-components-image.mjs +7 -7
  76. package/fesm2022/acorex-components-image.mjs.map +1 -1
  77. package/fesm2022/acorex-components-json-viewer.mjs +7 -7
  78. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  79. package/fesm2022/acorex-components-kanban.mjs +167 -0
  80. package/fesm2022/acorex-components-kanban.mjs.map +1 -0
  81. package/fesm2022/acorex-components-kbd.mjs +10 -10
  82. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  83. package/fesm2022/acorex-components-label.mjs +7 -7
  84. package/fesm2022/acorex-components-label.mjs.map +1 -1
  85. package/fesm2022/acorex-components-list.mjs +7 -7
  86. package/fesm2022/acorex-components-list.mjs.map +1 -1
  87. package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
  88. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  89. package/fesm2022/acorex-components-loading.mjs +16 -16
  90. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  91. package/fesm2022/acorex-components-map.mjs +13 -13
  92. package/fesm2022/acorex-components-map.mjs.map +1 -1
  93. package/fesm2022/acorex-components-media-viewer.mjs +34 -34
  94. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  95. package/fesm2022/acorex-components-menu.mjs +16 -16
  96. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  97. package/fesm2022/{acorex-components-modal-acorex-components-modal-DTLjJam5.mjs → acorex-components-modal-acorex-components-modal-UeDzzc6w.mjs} +21 -21
  98. package/fesm2022/{acorex-components-modal-acorex-components-modal-DTLjJam5.mjs.map → acorex-components-modal-acorex-components-modal-UeDzzc6w.mjs.map} +1 -1
  99. package/fesm2022/{acorex-components-modal-modal-content.component-CsxuUsLE.mjs → acorex-components-modal-modal-content.component-DLEi7cYd.mjs} +5 -5
  100. package/fesm2022/{acorex-components-modal-modal-content.component-CsxuUsLE.mjs.map → acorex-components-modal-modal-content.component-DLEi7cYd.mjs.map} +1 -1
  101. package/fesm2022/acorex-components-modal.mjs +1 -1
  102. package/fesm2022/acorex-components-navbar.mjs +7 -7
  103. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  104. package/fesm2022/acorex-components-notification.mjs +10 -10
  105. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  106. package/fesm2022/acorex-components-number-box-2.mjs +157 -0
  107. package/fesm2022/acorex-components-number-box-2.mjs.map +1 -0
  108. package/fesm2022/acorex-components-number-box.mjs +27 -7
  109. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  110. package/fesm2022/acorex-components-otp.mjs +7 -7
  111. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  112. package/fesm2022/acorex-components-page.mjs +10 -10
  113. package/fesm2022/acorex-components-page.mjs.map +1 -1
  114. package/fesm2022/acorex-components-paint.mjs +25 -25
  115. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  116. package/fesm2022/acorex-components-password-box.mjs +10 -10
  117. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  118. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  119. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  120. package/fesm2022/acorex-components-phone-box.mjs +7 -7
  121. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  122. package/fesm2022/acorex-components-picker.mjs +13 -13
  123. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  124. package/fesm2022/acorex-components-popover.mjs +7 -7
  125. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  126. package/fesm2022/acorex-components-popup.mjs +10 -10
  127. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  128. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  129. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  130. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  131. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  132. package/fesm2022/acorex-components-query-builder.mjs +7 -7
  133. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  134. package/fesm2022/acorex-components-radio.mjs +7 -7
  135. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  136. package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
  137. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  138. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  139. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  140. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  141. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  142. package/fesm2022/acorex-components-rest-api-generator.mjs +22 -22
  143. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  144. package/fesm2022/acorex-components-result.mjs +7 -7
  145. package/fesm2022/acorex-components-result.mjs.map +1 -1
  146. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  147. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  148. package/fesm2022/acorex-components-scheduler.mjs +37 -37
  149. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  150. package/fesm2022/acorex-components-scss.mjs +4 -4
  151. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  152. package/fesm2022/acorex-components-search-box.mjs +7 -7
  153. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  154. package/fesm2022/acorex-components-select-box.mjs +7 -7
  155. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  156. package/fesm2022/acorex-components-selection-list-2.mjs +7 -7
  157. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  158. package/fesm2022/acorex-components-selection-list.mjs +7 -7
  159. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  160. package/fesm2022/acorex-components-side-menu.mjs +13 -13
  161. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  162. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  163. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  164. package/fesm2022/acorex-components-slider.mjs +7 -7
  165. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  166. package/fesm2022/acorex-components-sliding-item.mjs +13 -13
  167. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  168. package/fesm2022/acorex-components-step-wizard.mjs +13 -13
  169. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  170. package/fesm2022/acorex-components-switch.mjs +10 -10
  171. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  172. package/fesm2022/acorex-components-tabs.mjs +13 -13
  173. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  174. package/fesm2022/acorex-components-tag-box.mjs +7 -7
  175. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  176. package/fesm2022/acorex-components-tag.mjs +7 -7
  177. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  178. package/fesm2022/acorex-components-text-area.mjs +7 -7
  179. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  180. package/fesm2022/acorex-components-text-box.mjs +10 -10
  181. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  182. package/fesm2022/acorex-components-time-duration.mjs +7 -7
  183. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  184. package/fesm2022/acorex-components-time-line.mjs +10 -10
  185. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  186. package/fesm2022/acorex-components-toast.mjs +10 -10
  187. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  188. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  189. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  190. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  191. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  192. package/fesm2022/acorex-components-tree-view.mjs +10 -10
  193. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  194. package/fesm2022/acorex-components-uploader.mjs +22 -22
  195. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  196. package/fesm2022/acorex-components-video-player.mjs +7 -7
  197. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  198. package/fesm2022/acorex-components-wysiwyg.mjs +31 -31
  199. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  200. package/kanban/README.md +3 -0
  201. package/kanban/index.d.ts +56 -0
  202. package/number-box/index.d.ts +12 -1
  203. package/number-box-2/README.md +3 -0
  204. package/number-box-2/index.d.ts +39 -0
  205. package/package.json +9 -1
  206. package/scheduler/index.d.ts +1 -2
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-datetime-input.mjs","sources":["../tmp-esm2022/datetime-input/lib/datetime-input.component.js","../tmp-esm2022/datetime-input/lib/datetime-input.module.js","../tmp-esm2022/datetime-input/acorex-components-datetime-input.js"],"sourcesContent":["import { AXClearableComponent, AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, } from '@acorex/cdk/common';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { getWordBoundsAtPosition } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, HostListener, ViewEncapsulation, effect, forwardRef, inject, input, linkedSignal, output, signal, untracked, viewChild, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * A component for date and time input with various custom features.\n *\n * @category Components\n */\nexport class AXDateTimeInputComponent extends MXInputBaseValueComponent {\n constructor() {\n super(...arguments);\n this.platformService = inject(AXPlatform);\n this.formatService = inject(AXFormatService);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n /**\n * @ignore\n */\n this._editingParts = {\n year: {\n key: 'year',\n placeholder: 'yyyy',\n placeholders: ['YY', 'yy', 'YYYY', 'yyyy'],\n enabled: false,\n default: 2023,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.year.placeholder),\n },\n month: {\n key: 'month',\n placeholder: 'MM',\n placeholders: ['MMM', 'MMMM', 'MM', 'M'],\n enabled: false,\n default: 1,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.month.placeholder),\n },\n day: {\n key: 'day',\n placeholder: 'dd',\n placeholders: ['dd', 'DD', 'd', 'dddd', 'E'],\n enabled: false,\n default: 1,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.day.placeholder),\n },\n hour: {\n key: 'hour',\n placeholder: 'HH',\n placeholders: ['HH', 'H', 'hh', 'h'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.hour.placeholder),\n },\n minute: {\n key: 'minute',\n placeholder: 'mm',\n placeholders: ['mm', 'm'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.minute.placeholder),\n },\n second: {\n key: 'second',\n placeholder: 'ss',\n placeholders: ['ss', 's'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.second.placeholder),\n },\n AMPM: {\n key: 'AMPM',\n placeholder: 'a',\n placeholders: ['a', 'A'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.AMPM.placeholder),\n },\n };\n /**\n * @ignore\n */\n this._editingText = signal('');\n /**\n * @ignore\n */\n this._inputChars = [];\n /**\n * Indicates whether typing is allowed in the input field.\n * @defaultValue false\n */\n this.allowTyping = input(false);\n /**\n * @description The calendar type to use for the datetime input.\n */\n this.calendar = input(null);\n this._calendarSystem = linkedSignal(() => this.calendar());\n this._activePart = signal(null);\n // TODO: fix this\n // #effect = effect(() => {\n // this._activePart()\n // this._clearInputBuffer();\n // });\n this._editingDate = linkedSignal(() => this.calendarService.now(this._calendarSystem()));\n /**\n * @ignore\n */\n this.input = viewChild('input');\n this.minValue = input(null);\n this.maxValue = input(null);\n /**\n * Emitted when a click event occurs on the datetime box.\n * @event\n */\n this.onClick = output();\n this.picker = input('datetime');\n this._format = linkedSignal(() => this.format());\n /**\n * @deprecated use locale & mode instead\n */\n this.format = input();\n this.#effect = effect(() => {\n const profile = this.localeService.activeProfile();\n //\n if (!this.format()) {\n this._format.set(this.format() ?? profile.formats[this.picker()]?.short ?? '');\n }\n //\n if (!this.calendar()) {\n this._calendarSystem.set(profile.calendar.system);\n }\n //\n this._detectParts();\n untracked(() => {\n this._updateText();\n });\n });\n /**\n * @description check if page is in rtl or ltr\n */\n this.isRtl = signal(this.platformService.isRtl());\n }\n #effect;\n _detectParts() {\n Object.values(this._editingParts).forEach((e) => {\n e.enabled = false;\n });\n const formatParts = this._format().split(/[^a-zA-Z]+/);\n formatParts.forEach((f) => {\n const found = Object.values(this._editingParts).find((c) => c.placeholders.some((d) => d == f));\n if (found) {\n found.enabled = true;\n found.placeholder = f;\n }\n });\n }\n /**\n * @description listen to direction change to react to it.\n */\n ngOnInit() {\n this.platformService.directionChange.pipe(map((i) => i.data === 'rtl')).subscribe((isRtl) => this.isRtl.set(isRtl));\n }\n /**\n * @ignore\n */\n _getOrderedParts() {\n // TODO: better spliter format\n const formatParts = this._format().split(/[^a-zA-Z]+/);\n const result = [];\n formatParts.forEach((f) => {\n const found = Object.values(this._editingParts).find((c) => c.placeholders.some((d) => d == f));\n if (found && found.enabled)\n result.push(found);\n });\n return result;\n }\n /**\n * @ignore\n */\n _clearInputBuffer() {\n this._inputChars = [];\n }\n /**\n * @ignore\n */\n _updateText() {\n let text = this._format();\n //\n Object.values(this._editingParts).forEach((part) => {\n if (this._activePart() == part.key) {\n if (part.typedValue)\n text = text.replace(part.placeholder, part.typedValue);\n }\n else {\n if (part.typedValue != part.placeholder && part.typedValue != null) {\n text = text.replace(part.placeholder, part.realValue());\n }\n }\n });\n this._editingText.set(text == this._format() ? '' : text);\n if (this._activePart()) {\n this._highlightActivePart();\n }\n }\n //TODO: fix this\n /**\n * Sets the internal date value, adjusting it based on editing parts.\n * @param value - The date to set. Returns `undefined` if no value is provided.\n * @ignore\n */\n // override internalSetValue(value?: Date) {\n // console.log('internalSetValue', value);\n // if (value) {\n // let editingDate = this.calendarService.create(value, this._calendarSystem());\n // let applyChanges = false;\n // Object.values(this._editingParts).forEach((part) => {\n // if (!part.enabled) {\n // editingDate = editingDate.set(part.key as TimeUnit, part.default);\n // applyChanges = true;\n // }\n // });\n // if (applyChanges) {\n // return editingDate.date;\n // }\n // }\n // return value;\n // }\n /**\n * Handles changes to the internal date value, updating editing parts and text representation.\n *\n * @param value - The new date value. If not provided, resets editing parts.\n * @ignore\n */\n internalValueChanged(value) {\n if (value && this.calendarService.isValidDate(value)) {\n this._editingDate.set(this.calendarService.create(value, this._calendarSystem()));\n }\n Object.values(this._editingParts).forEach((part) => {\n if (value) {\n if (part.typedValue != part.placeholder)\n part.typedValue = part.realValue();\n }\n else\n part.typedValue = null;\n });\n this._updateText();\n }\n /**\n * @ignore\n */\n _handleOnKeydownEvent(e) {\n const ignore = () => {\n if (e.key === 'Tab') {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n };\n if (!this.allowTyping()) {\n ignore();\n return;\n }\n const input = e.target;\n //\n const orderedParts = this._getOrderedParts();\n const part = this._activePart() ? this._editingParts[this._activePart()] : orderedParts[0];\n const nextPart = part ? orderedParts[orderedParts.indexOf(part) + 1] : null;\n const prevPart = part ? orderedParts[orderedParts.indexOf(part) - 1] : null;\n //\n const goNext = () => {\n this._clearInputBuffer();\n if (nextPart) {\n this._activePart.set(nextPart.key);\n this._highlightActivePart();\n }\n };\n const goPrev = () => {\n this._clearInputBuffer();\n if (prevPart) {\n this._activePart.set(prevPart.key);\n this._highlightActivePart();\n }\n };\n /*************** Handle Left and Right **************/\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n ignore();\n e.code === 'ArrowRight' ? goNext() : goPrev();\n }\n else if ((e.code === 'ArrowUp' || e.code === 'ArrowDown') && !e.ctrlKey) {\n /*************** Handle Up and Down **************/\n if (this.disabled || this.readonly) {\n ignore();\n return;\n }\n else {\n ignore();\n const sign = e.code === 'ArrowUp' ? +1 : -1;\n this._activePart.set(part.key);\n const newVal = this._editingDate().add(part.key, sign);\n this._editingParts[part.key].typedValue = this.formatService.format(newVal, 'datetime', this._editingParts[part.key].placeholder);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n }\n }\n else if (e.code == 'Backspace' || e.code == 'Delete') {\n /*************** Handle Backspace **************/\n if (this.disabled || this.readonly) {\n return;\n }\n if (input.value) {\n ignore();\n this._editingParts[part.key].typedValue = this._editingParts[part.key].placeholder;\n this._detectValueChanges();\n goPrev();\n }\n }\n else if (e.code == 'Tab' || e.code == 'Space') {\n /*************** Handle Backspace **************/\n if (input.value) {\n if (!e.shiftKey && nextPart) {\n ignore();\n goNext();\n }\n else if (e.shiftKey && prevPart) {\n ignore();\n goPrev();\n }\n }\n // TODO: FiX type in input\n }\n else if (e.key?.trim() && !isNaN(Number(e.key))) {\n ignore();\n return;\n if (this.disabled || this.readonly) {\n return;\n }\n let next = false;\n const editing = this._editingParts[part.key];\n //\n switch (part.key) {\n case 'year': {\n if (editing.placeholder.length == 2 && this._inputChars.length == 0) {\n this._inputChars.push(...this.formatService\n .format(this.calendarService.now(this._calendarSystem()), 'datetime', 'yyyy')\n .substring(0, 2)\n .split(''));\n }\n if (this._inputChars.length < 4) {\n editing.typedValue = `${this._inputChars.join('')}${e.key}`;\n this._inputChars.push(e.key);\n if (this._inputChars.length > 3) {\n next = true;\n }\n }\n else {\n next = true;\n }\n editing.typedValue = ('0000' + editing.typedValue).slice(-4);\n const nv = parseInt(editing.typedValue);\n //if (nv > 0) {\n const newVal = this._editingDate().set('year', nv);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n //}\n break;\n }\n case 'month': {\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 1) {\n this._clearInputBuffer();\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > 12) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n this._clearInputBuffer();\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n const nv = parseInt(editing.typedValue);\n if (nv > 0) {\n const newVal = this._editingDate().set(part.key, nv);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n }\n break;\n }\n case 'day': {\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 3) {\n this._clearInputBuffer();\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > this._editingDate().month.totalDays) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n this._clearInputBuffer();\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n const nv = parseInt(editing.typedValue);\n if (nv > 0) {\n const newVal = this._editingDate().set(part.key, nv);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n }\n break;\n }\n case 'hour': {\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 2) {\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > 23) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n const newVal = this._editingDate().set('hour', parseInt(editing.typedValue));\n this._editingDate.set(newVal);\n this._detectValueChanges();\n break;\n }\n case 'minute':\n case 'second':\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 5) {\n this._clearInputBuffer();\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > 59) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n this._clearInputBuffer();\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n // eslint-disable-next-line no-case-declarations\n const newVal = this._editingDate().set(part.key, parseInt(editing.typedValue));\n this._editingDate.set(newVal);\n this._detectValueChanges();\n break;\n default:\n }\n if (next) {\n goNext();\n return;\n }\n }\n /*************** Emit Event **************/\n super.emitOnKeydownEvent(e);\n }\n /**\n * @ignore\n */\n _handleKeyUpEvent(e) {\n if (this._activePart()) {\n this._highlightActivePart();\n }\n }\n /**\n * @ignore\n */\n _handleFocusEvent(e) {\n //this._highlightActivePart();\n super.emitOnFocusEvent(e);\n }\n /**\n * @ignore\n */\n _handleBlurEvent(e) {\n super.emitOnBlurEvent(e);\n }\n /**\n * @ignore\n */\n _handleOnInputClickEvent(e) {\n if (this.allowTyping()) {\n setTimeout(() => {\n this._detectPartAtPosition();\n }, 0);\n }\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n /**\n * @ignore\n */\n _detectPartAtPosition() {\n const input = this.input();\n if (!input || !input.value)\n return;\n const sStart = input.selectionEnd || 0;\n const re = /[a-zA-Z0-9]+/gi;\n const valueParts = Array.from(input.value.matchAll(re));\n const orderedParts = this._getOrderedParts();\n const index = valueParts.findIndex((c) => c.index <= sStart && c.index + c[0].length >= sStart);\n this._activePart.set(orderedParts[index].key);\n this._highlightActivePart();\n }\n /**\n * @ignore\n */\n _highlightActivePart() {\n const input = this.input();\n if (!input || !input.value || !this._activePart())\n return;\n const orderedParts = this._getOrderedParts();\n const index = orderedParts.findIndex((c) => c.key == this._activePart());\n const re = /[a-zA-Z0-9]+/gi;\n const valueParts = Array.from(input.value.matchAll(re));\n const { start, end } = getWordBoundsAtPosition(input.value, valueParts[index]?.index);\n if (input && typeof input.setSelectionRange === 'function') {\n input.setSelectionRange(start, end);\n }\n }\n /**\n * @ignore\n */\n _detectValueChanges() {\n this.commitValue(this._editingDate().date, true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: AXDateTimeInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.3\", type: AXDateTimeInputComponent, isStandalone: true, selector: \"ax-datetime-input\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: \"state\", publicName: \"state\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, allowTyping: { classPropertyName: \"allowTyping\", publicName: \"allowTyping\", isSignal: true, isRequired: false, transformFunction: null }, calendar: { classPropertyName: \"calendar\", publicName: \"calendar\", isSignal: true, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: true, isRequired: false, transformFunction: null }, picker: { classPropertyName: \"picker\", publicName: \"picker\", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: \"format\", publicName: \"format\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", stateChange: \"stateChange\", onValueChanged: \"onValueChanged\", onBlur: \"onBlur\", onFocus: \"onFocus\", readonlyChange: \"readonlyChange\", disabledChange: \"disabledChange\", onClick: \"onClick\" }, host: { listeners: { \"keydown\": \"_handleOnKeydownEvent($event)\", \"keyup\": \"_handleKeyUpEvent($event)\" } }, providers: [\n { provide: AXComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXFocusableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXValuableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXClearableComponent, useExisting: AXDateTimeInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDateTimeInputComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<input\\n #input\\n id=\\\"input\\\"\\n autocomplete=\\\"off\\\"\\n autocorrect=\\\"off\\\"\\n autocapitalize=\\\"off\\\"\\n spellcheck=\\\"false\\\"\\n class=\\\"ax-input\\\"\\n type=\\\"text\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [class.ax-select-none]=\\\"!allowTyping()\\\"\\n [class.ax-state-readonly]=\\\"readonly\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"true\\\"\\n [ngModel]=\\\"_editingText()\\\"\\n (mouseup)=\\\"_handleOnInputClickEvent($event)\\\"\\n (blur)=\\\"_handleBlurEvent($event)\\\"\\n (focus)=\\\"_handleFocusEvent($event)\\\"\\n style=\\\"display: flex\\\"\\n [style.justify-items]=\\\"isRtl() ? 'end' : 'start'\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n/>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: AXDateTimeInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-datetime-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'], outputs: ['valueChange', 'stateChange', 'onValueChanged', 'onBlur', 'onFocus', 'readonlyChange', 'disabledChange'], providers: [\n { provide: AXComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXFocusableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXValuableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXClearableComponent, useExisting: AXDateTimeInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDateTimeInputComponent),\n multi: true,\n },\n ], imports: [FormsModule], template: \"<input\\n #input\\n id=\\\"input\\\"\\n autocomplete=\\\"off\\\"\\n autocorrect=\\\"off\\\"\\n autocapitalize=\\\"off\\\"\\n spellcheck=\\\"false\\\"\\n class=\\\"ax-input\\\"\\n type=\\\"text\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [class.ax-select-none]=\\\"!allowTyping()\\\"\\n [class.ax-state-readonly]=\\\"readonly\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"true\\\"\\n [ngModel]=\\\"_editingText()\\\"\\n (mouseup)=\\\"_handleOnInputClickEvent($event)\\\"\\n (blur)=\\\"_handleBlurEvent($event)\\\"\\n (focus)=\\\"_handleFocusEvent($event)\\\"\\n style=\\\"display: flex\\\"\\n [style.justify-items]=\\\"isRtl() ? 'end' : 'start'\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n/>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}\\n\"] }]\n }], propDecorators: { _handleOnKeydownEvent: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], _handleKeyUpEvent: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRldGltZS1pbnB1dC9zcmMvbGliL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0ZXRpbWUtaW5wdXQvc3JjL2xpYi9kYXRldGltZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBK0MsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFM0I7Ozs7R0FJRztBQXNCSCxNQUFNLE9BQU8sd0JBQXlC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QUU7d0JBQy9ELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsMEJBQTBCLEVBQUU7d0JBQ3hFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsMEJBQTBCLEVBQUU7d0JBQ3ZFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsMEJBQTBCLEVBQUU7d0JBQ3hFOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixXQUNRLENBQUMsV0FBVyxDQUFDOzhCQStRdEIscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEyT25DLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsZWFyYWJsZUNvbXBvbmVudCxcbiAgQVhDbGlja0V2ZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGVUaW1lUGlja2VyVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jYWxlbmRhcic7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSwgQVhEYXRlVGltZSwgQVhEYXRlVGltZVBhcnQsIEFYRGF0ZVRpbWVQYXJ0cyB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgZ2V0V29yZEJvdW5kc0F0UG9zaXRpb24gfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBsaW5rZWRTaWduYWwsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCBmb3IgZGF0ZSBhbmQgdGltZSBpbnB1dCB3aXRoIHZhcmlvdXMgY3VzdG9tIGZlYXR1cmVzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGV0aW1lLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seScsICd0YWJJbmRleCcsICdwbGFjZWhvbGRlcicsICd2YWx1ZScsICdzdGF0ZScsICduYW1lJywgJ2lkJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2UnLCAnc3RhdGVDaGFuZ2UnLCAnb25WYWx1ZUNoYW5nZWQnLCAnb25CbHVyJywgJ29uRm9jdXMnLCAncmVhZG9ubHlDaGFuZ2UnLCAnZGlzYWJsZWRDaGFuZ2UnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0ZVRpbWVJbnB1dENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ2xlYXJhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRlVGltZUlucHV0Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxEYXRlPiB7XG4gIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpbmdQYXJ0czogQVhEYXRlVGltZVBhcnRzID0ge1xuICAgIHllYXI6IHtcbiAgICAgIGtleTogJ3llYXInLFxuICAgICAgcGxhY2Vob2xkZXI6ICd5eXl5JyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydZWScsICd5eScsICdZWVlZJywgJ3l5eXknXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMjAyMyxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLnllYXIucGxhY2Vob2xkZXIgYXMgYW55KSxcbiAgICB9LFxuICAgIG1vbnRoOiB7XG4gICAgICBrZXk6ICdtb250aCcsXG4gICAgICBwbGFjZWhvbGRlcjogJ01NJyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydNTU0nLCAnTU1NTScsICdNTScsICdNJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PlxuICAgICAgICB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMuX2VkaXRpbmdEYXRlKCksICdkYXRldGltZScsIHRoaXMuX2VkaXRpbmdQYXJ0cy5tb250aC5wbGFjZWhvbGRlciBhcyBhbnkpLFxuICAgIH0sXG4gICAgZGF5OiB7XG4gICAgICBrZXk6ICdkYXknLFxuICAgICAgcGxhY2Vob2xkZXI6ICdkZCcsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnZGQnLCAnREQnLCAnZCcsICdkZGRkJywgJ0UnXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMSxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLmRheS5wbGFjZWhvbGRlciBhcyBhbnkpLFxuICAgIH0sXG4gICAgaG91cjoge1xuICAgICAga2V5OiAnaG91cicsXG4gICAgICBwbGFjZWhvbGRlcjogJ0hIJyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydISCcsICdIJywgJ2hoJywgJ2gnXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLmhvdXIucGxhY2Vob2xkZXIgYXMgYW55KSxcbiAgICB9LFxuICAgIG1pbnV0ZToge1xuICAgICAga2V5OiAnbWludXRlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnbW0nLFxuICAgICAgcGxhY2Vob2xkZXJzOiBbJ21tJywgJ20nXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLm1pbnV0ZS5wbGFjZWhvbGRlciBhcyBhbnkpLFxuICAgIH0sXG4gICAgc2Vjb25kOiB7XG4gICAgICBrZXk6ICdzZWNvbmQnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdzcycsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnc3MnLCAncyddLFxuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAwLFxuICAgICAgdHlwZWRWYWx1ZTogbnVsbCxcbiAgICAgIHJlYWxWYWx1ZTogKCkgPT5cbiAgICAgICAgdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl9lZGl0aW5nRGF0ZSgpLCAnZGF0ZXRpbWUnLCB0aGlzLl9lZGl0aW5nUGFydHMuc2Vjb25kLnBsYWNlaG9sZGVyIGFzIGFueSksXG4gICAgfSxcbiAgICBBTVBNOiB7XG4gICAgICBrZXk6ICdBTVBNJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnYScsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnYScsICdBJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PlxuICAgICAgICB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMuX2VkaXRpbmdEYXRlKCksICdkYXRldGltZScsIHRoaXMuX2VkaXRpbmdQYXJ0cy5BTVBNLnBsYWNlaG9sZGVyIGFzIGFueSksXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfZWRpdGluZ1RleHQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lucHV0Q2hhcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHR5cGluZyBpcyBhbGxvd2VkIGluIHRoZSBpbnB1dCBmaWVsZC5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgYWxsb3dUeXBpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgY2FsZW5kYXIgdHlwZSB0byB1c2UgZm9yIHRoZSBkYXRldGltZSBpbnB1dC5cbiAgICovXG4gIGNhbGVuZGFyID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIF9jYWxlbmRhclN5c3RlbSA9IGxpbmtlZFNpZ25hbDxzdHJpbmcgfCBudWxsPigoKSA9PiB0aGlzLmNhbGVuZGFyKCkpO1xuXG4gIHByaXZhdGUgX2FjdGl2ZVBhcnQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gVE9ETzogZml4IHRoaXNcbiAgLy8gI2VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gIC8vICAgdGhpcy5fYWN0aXZlUGFydCgpXG4gIC8vICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAvLyB9KTtcblxuICBwcml2YXRlIF9lZGl0aW5nRGF0ZSA9IGxpbmtlZFNpZ25hbDxBWERhdGVUaW1lPigoKSA9PiB0aGlzLmNhbGVuZGFyU2VydmljZS5ub3codGhpcy5fY2FsZW5kYXJTeXN0ZW0oKSkpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbnB1dCA9IHZpZXdDaGlsZDxIVE1MSW5wdXRFbGVtZW50PignaW5wdXQnKTtcblxuICBtaW5WYWx1ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcblxuICBtYXhWYWx1ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2xpY2sgZXZlbnQgb2NjdXJzIG9uIHRoZSBkYXRldGltZSBib3guXG4gICAqIEBldmVudFxuICAgKi9cbiAgb25DbGljayA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgcGlja2VyID0gaW5wdXQ8QVhEYXRlVGltZVBpY2tlclR5cGU+KCdkYXRldGltZScpO1xuXG4gIHByaXZhdGUgX2Zvcm1hdCA9IGxpbmtlZFNpZ25hbDxzdHJpbmc+KCgpID0+IHRoaXMuZm9ybWF0KCkpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbG9jYWxlICYgbW9kZSBpbnN0ZWFkXG4gICAqL1xuICBmb3JtYXQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPigpO1xuXG4gICNlZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpO1xuICAgIC8vXG4gICAgaWYgKCF0aGlzLmZvcm1hdCgpKSB7XG4gICAgICB0aGlzLl9mb3JtYXQuc2V0KHRoaXMuZm9ybWF0KCkgPz8gcHJvZmlsZS5mb3JtYXRzW3RoaXMucGlja2VyKCldPy5zaG9ydCA/PyAnJyk7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyKCkpIHtcbiAgICAgIHRoaXMuX2NhbGVuZGFyU3lzdGVtLnNldChwcm9maWxlLmNhbGVuZGFyLnN5c3RlbSk7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5fZGV0ZWN0UGFydHMoKTtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlVGV4dCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIF9kZXRlY3RQYXJ0cygpIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZS5lbmFibGVkID0gZmFsc2U7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0UGFydHMgPSB0aGlzLl9mb3JtYXQoKS5zcGxpdCgvW15hLXpBLVpdKy8pO1xuICAgIGZvcm1hdFBhcnRzLmZvckVhY2goKGYpID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZpbmQoKGMpID0+IGMucGxhY2Vob2xkZXJzLnNvbWUoKGQpID0+IGQgPT0gZikpO1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIGZvdW5kLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICBmb3VuZC5wbGFjZWhvbGRlciA9IGY7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIGNoZWNrIGlmIHBhZ2UgaXMgaW4gcnRsIG9yIGx0clxuICAgKi9cbiAgcHJvdGVjdGVkIGlzUnRsID0gc2lnbmFsKHRoaXMucGxhdGZvcm1TZXJ2aWNlLmlzUnRsKCkpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gbGlzdGVuIHRvIGRpcmVjdGlvbiBjaGFuZ2UgdG8gcmVhY3QgdG8gaXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGF0Zm9ybVNlcnZpY2UuZGlyZWN0aW9uQ2hhbmdlLnBpcGUobWFwKChpKSA9PiBpLmRhdGEgPT09ICdydGwnKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4gdGhpcy5pc1J0bC5zZXQoaXNSdGwpKTtcbiAgfVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2dldE9yZGVyZWRQYXJ0cygpOiBBWERhdGVUaW1lUGFydFtdIHtcbiAgICAvLyBUT0RPOiBiZXR0ZXIgc3BsaXRlciBmb3JtYXRcbiAgICBjb25zdCBmb3JtYXRQYXJ0cyA9IHRoaXMuX2Zvcm1hdCgpLnNwbGl0KC9bXmEtekEtWl0rLyk7XG4gICAgY29uc3QgcmVzdWx0OiBBWERhdGVUaW1lUGFydFtdID0gW107XG4gICAgZm9ybWF0UGFydHMuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZmluZCgoYykgPT4gYy5wbGFjZWhvbGRlcnMuc29tZSgoZCkgPT4gZCA9PSBmKSk7XG4gICAgICBpZiAoZm91bmQgJiYgZm91bmQuZW5hYmxlZCkgcmVzdWx0LnB1c2goZm91bmQpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2NsZWFySW5wdXRCdWZmZXIoKSB7XG4gICAgdGhpcy5faW5wdXRDaGFycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVUZXh0KCkge1xuICAgIGxldCB0ZXh0ID0gdGhpcy5fZm9ybWF0KCk7XG4gICAgLy9cbiAgICBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2FjdGl2ZVBhcnQoKSA9PSBwYXJ0LmtleSkge1xuICAgICAgICBpZiAocGFydC50eXBlZFZhbHVlKSB0ZXh0ID0gdGV4dC5yZXBsYWNlKHBhcnQucGxhY2Vob2xkZXIsIHBhcnQudHlwZWRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocGFydC50eXBlZFZhbHVlICE9IHBhcnQucGxhY2Vob2xkZXIgJiYgcGFydC50eXBlZFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKHBhcnQucGxhY2Vob2xkZXIsIHBhcnQucmVhbFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fZWRpdGluZ1RleHQuc2V0KHRleHQgPT0gdGhpcy5fZm9ybWF0KCkgPyAnJyA6IHRleHQpO1xuICAgIGlmICh0aGlzLl9hY3RpdmVQYXJ0KCkpIHtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICB9XG4gIH1cblxuICAvL1RPRE86IGZpeCB0aGlzXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbnRlcm5hbCBkYXRlIHZhbHVlLCBhZGp1c3RpbmcgaXQgYmFzZWQgb24gZWRpdGluZyBwYXJ0cy5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGRhdGUgdG8gc2V0LiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAvLyBvdmVycmlkZSBpbnRlcm5hbFNldFZhbHVlKHZhbHVlPzogRGF0ZSkge1xuICAvLyAgIGNvbnNvbGUubG9nKCdpbnRlcm5hbFNldFZhbHVlJywgdmFsdWUpO1xuICAvLyAgIGlmICh2YWx1ZSkge1xuICAvLyAgICAgbGV0IGVkaXRpbmdEYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLl9jYWxlbmRhclN5c3RlbSgpKTtcbiAgLy8gICAgIGxldCBhcHBseUNoYW5nZXMgPSBmYWxzZTtcbiAgLy8gICAgIE9iamVjdC52YWx1ZXModGhpcy5fZWRpdGluZ1BhcnRzKS5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gIC8vICAgICAgIGlmICghcGFydC5lbmFibGVkKSB7XG4gIC8vICAgICAgICAgZWRpdGluZ0RhdGUgPSBlZGl0aW5nRGF0ZS5zZXQocGFydC5rZXkgYXMgVGltZVVuaXQsIHBhcnQuZGVmYXVsdCk7XG4gIC8vICAgICAgICAgYXBwbHlDaGFuZ2VzID0gdHJ1ZTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSk7XG4gIC8vICAgICBpZiAoYXBwbHlDaGFuZ2VzKSB7XG4gIC8vICAgICAgIHJldHVybiBlZGl0aW5nRGF0ZS5kYXRlO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gdmFsdWU7XG4gIC8vIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBpbnRlcm5hbCBkYXRlIHZhbHVlLCB1cGRhdGluZyBlZGl0aW5nIHBhcnRzIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3IGRhdGUgdmFsdWUuIElmIG5vdCBwcm92aWRlZCwgcmVzZXRzIGVkaXRpbmcgcGFydHMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlPzogRGF0ZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2VkaXRpbmdEYXRlLnNldCh0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodmFsdWUsIHRoaXMuX2NhbGVuZGFyU3lzdGVtKCkpKTtcbiAgICB9XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBpZiAocGFydC50eXBlZFZhbHVlICE9IHBhcnQucGxhY2Vob2xkZXIpIHBhcnQudHlwZWRWYWx1ZSA9IHBhcnQucmVhbFZhbHVlKCk7XG4gICAgICB9IGVsc2UgcGFydC50eXBlZFZhbHVlID0gbnVsbDtcbiAgICB9KTtcbiAgICB0aGlzLl91cGRhdGVUZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBfaGFuZGxlT25LZXlkb3duRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlnbm9yZSA9ICgpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmFsbG93VHlwaW5nKCkpIHtcbiAgICAgIGlnbm9yZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAvL1xuICAgIGNvbnN0IG9yZGVyZWRQYXJ0cyA9IHRoaXMuX2dldE9yZGVyZWRQYXJ0cygpO1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLl9hY3RpdmVQYXJ0KCkgPyB0aGlzLl9lZGl0aW5nUGFydHNbdGhpcy5fYWN0aXZlUGFydCgpXSA6IG9yZGVyZWRQYXJ0c1swXTtcbiAgICBjb25zdCBuZXh0UGFydCA9IHBhcnQgPyBvcmRlcmVkUGFydHNbb3JkZXJlZFBhcnRzLmluZGV4T2YocGFydCkgKyAxXSA6IG51bGw7XG4gICAgY29uc3QgcHJldlBhcnQgPSBwYXJ0ID8gb3JkZXJlZFBhcnRzW29yZGVyZWRQYXJ0cy5pbmRleE9mKHBhcnQpIC0gMV0gOiBudWxsO1xuICAgIC8vXG4gICAgY29uc3QgZ29OZXh0ID0gKCkgPT4ge1xuICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgaWYgKG5leHRQYXJ0KSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhcnQuc2V0KG5leHRQYXJ0LmtleSk7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGdvUHJldiA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2NsZWFySW5wdXRCdWZmZXIoKTtcbiAgICAgIGlmIChwcmV2UGFydCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVQYXJ0LnNldChwcmV2UGFydC5rZXkpO1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRBY3RpdmVQYXJ0KCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvKioqKioqKioqKioqKioqICBIYW5kbGUgTGVmdCBhbmQgUmlnaHQgICoqKioqKioqKioqKioqL1xuICAgIGlmIChlLmNvZGUgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmNvZGUgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICBpZ25vcmUoKTtcbiAgICAgIGUuY29kZSA9PT0gJ0Fycm93UmlnaHQnID8gZ29OZXh0KCkgOiBnb1ByZXYoKTtcbiAgICB9IGVsc2UgaWYgKChlLmNvZGUgPT09ICdBcnJvd1VwJyB8fCBlLmNvZGUgPT09ICdBcnJvd0Rvd24nKSAmJiAhZS5jdHJsS2V5KSB7XG4gICAgICAvKioqKioqKioqKioqKioqICBIYW5kbGUgVXAgYW5kIERvd24gICoqKioqKioqKioqKioqL1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICBpZ25vcmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWdub3JlKCk7XG4gICAgICAgIGNvbnN0IHNpZ24gPSBlLmNvZGUgPT09ICdBcnJvd1VwJyA/ICsxIDogLTE7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhcnQuc2V0KHBhcnQua2V5KTtcbiAgICAgICAgY29uc3QgbmV3VmFsOiBBWERhdGVUaW1lID0gdGhpcy5fZWRpdGluZ0RhdGUoKS5hZGQocGFydC5rZXksIHNpZ24pO1xuICAgICAgICB0aGlzLl9lZGl0aW5nUGFydHNbcGFydC5rZXldLnR5cGVkVmFsdWUgPSB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KFxuICAgICAgICAgIG5ld1ZhbCxcbiAgICAgICAgICAnZGF0ZXRpbWUnLFxuICAgICAgICAgIHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV0ucGxhY2Vob2xkZXIgYXMgYW55LFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2VkaXRpbmdEYXRlLnNldChuZXdWYWwpO1xuICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PSAnQmFja3NwYWNlJyB8fCBlLmNvZGUgPT0gJ0RlbGV0ZScpIHtcbiAgICAgIC8qKioqKioqKioqKioqKiogIEhhbmRsZSBCYWNrc3BhY2UgICoqKioqKioqKioqKioqL1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQudmFsdWUpIHtcbiAgICAgICAgaWdub3JlKCk7XG4gICAgICAgIHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV0udHlwZWRWYWx1ZSA9IHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV0ucGxhY2Vob2xkZXI7XG4gICAgICAgIHRoaXMuX2RldGVjdFZhbHVlQ2hhbmdlcygpO1xuICAgICAgICBnb1ByZXYoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PSAnVGFiJyB8fCBlLmNvZGUgPT0gJ1NwYWNlJykge1xuICAgICAgLyoqKioqKioqKioqKioqKiAgSGFuZGxlIEJhY2tzcGFjZSAgKioqKioqKioqKioqKiovXG4gICAgICBpZiAoaW5wdXQudmFsdWUpIHtcbiAgICAgICAgaWYgKCFlLnNoaWZ0S2V5ICYmIG5leHRQYXJ0KSB7XG4gICAgICAgICAgaWdub3JlKCk7XG4gICAgICAgICAgZ29OZXh0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5zaGlmdEtleSAmJiBwcmV2UGFydCkge1xuICAgICAgICAgIGlnbm9yZSgpO1xuICAgICAgICAgIGdvUHJldigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBUT0RPOiBGaVggdHlwZSBpbiBpbnB1dFxuICAgIH0gZWxzZSBpZiAoZS5rZXk/LnRyaW0oKSAmJiAhaXNOYU4oTnVtYmVyKGUua2V5KSkpIHtcbiAgICAgIGlnbm9yZSgpO1xuICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgbmV4dCA9IGZhbHNlO1xuICAgICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV07XG4gICAgICAvL1xuICAgICAgc3dpdGNoIChwYXJ0LmtleSkge1xuICAgICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICAgIGlmIChlZGl0aW5nLnBsYWNlaG9sZGVyLmxlbmd0aCA9PSAyICYmIHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hhcnMucHVzaChcbiAgICAgICAgICAgICAgLi4udGhpcy5mb3JtYXRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmZvcm1hdCh0aGlzLmNhbGVuZGFyU2VydmljZS5ub3codGhpcy5fY2FsZW5kYXJTeXN0ZW0oKSksICdkYXRldGltZScsICd5eXl5JyBhcyBhbnkpXG4gICAgICAgICAgICAgICAgLnN1YnN0cmluZygwLCAyKVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgJHt0aGlzLl9pbnB1dENoYXJzLmpvaW4oJycpfSR7ZS5rZXl9YDtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hhcnMucHVzaChlLmtleSk7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gKCcwMDAwJyArIGVkaXRpbmcudHlwZWRWYWx1ZSkuc2xpY2UoLTQpO1xuICAgICAgICAgIGNvbnN0IG52ID0gcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKTtcbiAgICAgICAgICAvL2lmIChudiA+IDApIHtcbiAgICAgICAgICBjb25zdCBuZXdWYWwgPSB0aGlzLl9lZGl0aW5nRGF0ZSgpLnNldCgneWVhcicsIG52KTtcbiAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZS5zZXQobmV3VmFsKTtcbiAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICAvL31cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGFycy5wdXNoKGUua2V5KTtcbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSA+IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IHBhcnNlSW50KGAke3RoaXMuX2lucHV0Q2hhcnNbMF19JHtlLmtleX1gKTtcbiAgICAgICAgICAgIGlmIChuZXdTdHIgPiAxMikge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IG5ld1N0ci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIGNvbnN0IG52ID0gcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKTtcbiAgICAgICAgICBpZiAobnYgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWwgPSB0aGlzLl9lZGl0aW5nRGF0ZSgpLnNldChwYXJ0LmtleSwgbnYpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGUuc2V0KG5ld1ZhbCk7XG4gICAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZGF5Jzoge1xuICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENoYXJzLnB1c2goZS5rZXkpO1xuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpID4gMykge1xuICAgICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV3U3RyID0gcGFyc2VJbnQoYCR7dGhpcy5faW5wdXRDaGFyc1swXX0ke2Uua2V5fWApO1xuICAgICAgICAgICAgaWYgKG5ld1N0ciA+IHRoaXMuX2VkaXRpbmdEYXRlKCkubW9udGgudG90YWxEYXlzKSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gbmV3U3RyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gZWRpdGluZy50eXBlZFZhbHVlPy5sZW5ndGggPT09IDEgPyAnMCcgKyBlZGl0aW5nLnR5cGVkVmFsdWUgOiBlZGl0aW5nLnR5cGVkVmFsdWU7XG4gICAgICAgICAgY29uc3QgbnYgPSBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpO1xuICAgICAgICAgIGlmIChudiA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX2VkaXRpbmdEYXRlKCkuc2V0KHBhcnQua2V5LCBudik7XG4gICAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZS5zZXQobmV3VmFsKTtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdFZhbHVlQ2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdob3VyJzoge1xuICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENoYXJzLnB1c2goZS5rZXkpO1xuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpID4gMikge1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IHBhcnNlSW50KGAke3RoaXMuX2lucHV0Q2hhcnNbMF19JHtlLmtleX1gKTtcbiAgICAgICAgICAgIGlmIChuZXdTdHIgPiAyMykge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IG5ld1N0ci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX2VkaXRpbmdEYXRlKCkuc2V0KCdob3VyJywgcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKSk7XG4gICAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGUuc2V0KG5ld1ZhbCk7XG4gICAgICAgICAgdGhpcy5fZGV0ZWN0VmFsdWVDaGFuZ2VzKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGFycy5wdXNoKGUua2V5KTtcbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSA+IDUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IHBhcnNlSW50KGAke3RoaXMuX2lucHV0Q2hhcnNbMF19JHtlLmtleX1gKTtcbiAgICAgICAgICAgIGlmIChuZXdTdHIgPiA1OSkge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IG5ld1N0ci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jYXNlLWRlY2xhcmF0aW9uc1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX2VkaXRpbmdEYXRlKCkuc2V0KHBhcnQua2V5LCBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpKTtcbiAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZS5zZXQobmV3VmFsKTtcbiAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGdvTmV4dCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8qKioqKioqKioqKioqKiogIEVtaXQgRXZlbnQgICoqKioqKioqKioqKioqL1xuICAgIHN1cGVyLmVtaXRPbktleWRvd25FdmVudChlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBfaGFuZGxlS2V5VXBFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVBhcnQoKSkge1xuICAgICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVGb2N1c0V2ZW50KGU6IEZvY3VzRXZlbnQpIHtcbiAgICAvL3RoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICBzdXBlci5lbWl0T25Gb2N1c0V2ZW50KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUJsdXJFdmVudChlOiBGb2N1c0V2ZW50KSB7XG4gICAgc3VwZXIuZW1pdE9uQmx1ckV2ZW50KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uSW5wdXRDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxvd1R5cGluZygpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGV0ZWN0UGFydEF0UG9zaXRpb24oKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2RldGVjdFBhcnRBdFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICghaW5wdXQgfHwgIWlucHV0LnZhbHVlKSByZXR1cm47XG4gICAgY29uc3Qgc1N0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uRW5kIHx8IDA7XG4gICAgY29uc3QgcmUgPSAvW2EtekEtWjAtOV0rL2dpO1xuICAgIGNvbnN0IHZhbHVlUGFydHMgPSBBcnJheS5mcm9tKGlucHV0LnZhbHVlLm1hdGNoQWxsKHJlKSk7XG4gICAgY29uc3Qgb3JkZXJlZFBhcnRzID0gdGhpcy5fZ2V0T3JkZXJlZFBhcnRzKCk7XG4gICAgY29uc3QgaW5kZXggPSB2YWx1ZVBhcnRzLmZpbmRJbmRleCgoYzogYW55KSA9PiBjLmluZGV4IDw9IHNTdGFydCAmJiBjLmluZGV4ICsgY1swXS5sZW5ndGggPj0gc1N0YXJ0KTtcbiAgICB0aGlzLl9hY3RpdmVQYXJ0LnNldChvcmRlcmVkUGFydHNbaW5kZXhdLmtleSk7XG4gICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9oaWdobGlnaHRBY3RpdmVQYXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICghaW5wdXQgfHwgIWlucHV0LnZhbHVlIHx8ICF0aGlzLl9hY3RpdmVQYXJ0KCkpIHJldHVybjtcbiAgICBjb25zdCBvcmRlcmVkUGFydHMgPSB0aGlzLl9nZXRPcmRlcmVkUGFydHMoKTtcbiAgICBjb25zdCBpbmRleCA9IG9yZGVyZWRQYXJ0cy5maW5kSW5kZXgoKGMpID0+IGMua2V5ID09IHRoaXMuX2FjdGl2ZVBhcnQoKSk7XG4gICAgY29uc3QgcmUgPSAvW2EtekEtWjAtOV0rL2dpO1xuICAgIGNvbnN0IHZhbHVlUGFydHMgPSBBcnJheS5mcm9tKGlucHV0LnZhbHVlLm1hdGNoQWxsKHJlKSk7XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBnZXRXb3JkQm91bmRzQXRQb3NpdGlvbihpbnB1dC52YWx1ZSwgdmFsdWVQYXJ0c1tpbmRleF0/LmluZGV4KTtcbiAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnNldFNlbGVjdGlvblJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2RldGVjdFZhbHVlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMuX2VkaXRpbmdEYXRlKCkuZGF0ZSwgdHJ1ZSk7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICAjaW5wdXRcbiAgaWQ9XCJpbnB1dFwiXG4gIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICBjbGFzcz1cImF4LWlucHV0XCJcbiAgdHlwZT1cInRleHRcIlxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5heC1zZWxlY3Qtbm9uZV09XCIhYWxsb3dUeXBpbmcoKVwiXG4gIFtjbGFzcy5heC1zdGF0ZS1yZWFkb25seV09XCJyZWFkb25seVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgW25nTW9kZWxdPVwiX2VkaXRpbmdUZXh0KClcIlxuICAobW91c2V1cCk9XCJfaGFuZGxlT25JbnB1dENsaWNrRXZlbnQoJGV2ZW50KVwiXG4gIChibHVyKT1cIl9oYW5kbGVCbHVyRXZlbnQoJGV2ZW50KVwiXG4gIChmb2N1cyk9XCJfaGFuZGxlRm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCJcbiAgW3N0eWxlLmp1c3RpZnktaXRlbXNdPVwiaXNSdGwoKSA/ICdlbmQnIDogJ3N0YXJ0J1wiXG4gIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4vPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+IDwvbmctY29udGVudD5cbiJdfQ==","import { AXDateTimeModule } from '@acorex/core/date-time';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXDateTimeInputComponent } from './datetime-input.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXDateTimeInputComponent];\nconst MODULES = [CommonModule, FormsModule, AXDateTimeModule];\nexport class AXDateTimeInputModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: AXDateTimeInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.3\", ngImport: i0, type: AXDateTimeInputModule, imports: [CommonModule, FormsModule, AXDateTimeModule, AXDateTimeInputComponent], exports: [AXDateTimeInputComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: AXDateTimeInputModule, imports: [MODULES, COMPONENT] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: AXDateTimeInputModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRldGltZS1pbnB1dC9zcmMvbGliL2RhdGV0aW1lLWlucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXRFLE1BQU0sU0FBUyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUM3QyxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQU85RCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixZQVBqQixZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUR6Qyx3QkFBd0IsYUFBeEIsd0JBQXdCOytHQVE5QixxQkFBcUIsWUFKbkIsT0FBTyxFQUFLLFNBQVM7OzJGQUl2QixxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtBWERhdGVUaW1lSW5wdXRDb21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBBWERhdGVUaW1lTW9kdWxlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLk1PRFVMRVMsIC4uLkNPTVBPTkVOVF0sXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lSW5wdXRNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0ZXRpbWUtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGV0aW1lLWlucHV0L3NyYy9hY29yZXgtY29tcG9uZW50cy1kYXRldGltZS1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-datetime-input.mjs","sources":["../tmp-esm2022/datetime-input/lib/datetime-input.component.js","../tmp-esm2022/datetime-input/lib/datetime-input.module.js","../tmp-esm2022/datetime-input/acorex-components-datetime-input.js"],"sourcesContent":["import { AXClearableComponent, AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, } from '@acorex/cdk/common';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { getWordBoundsAtPosition } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, HostListener, ViewEncapsulation, effect, forwardRef, inject, input, linkedSignal, output, signal, untracked, viewChild, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { map } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/**\n * A component for date and time input with various custom features.\n *\n * @category Components\n */\nexport class AXDateTimeInputComponent extends MXInputBaseValueComponent {\n constructor() {\n super(...arguments);\n this.platformService = inject(AXPlatform);\n this.formatService = inject(AXFormatService);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n /**\n * @ignore\n */\n this._editingParts = {\n year: {\n key: 'year',\n placeholder: 'yyyy',\n placeholders: ['YY', 'yy', 'YYYY', 'yyyy'],\n enabled: false,\n default: 2023,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.year.placeholder),\n },\n month: {\n key: 'month',\n placeholder: 'MM',\n placeholders: ['MMM', 'MMMM', 'MM', 'M'],\n enabled: false,\n default: 1,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.month.placeholder),\n },\n day: {\n key: 'day',\n placeholder: 'dd',\n placeholders: ['dd', 'DD', 'd', 'dddd', 'E'],\n enabled: false,\n default: 1,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.day.placeholder),\n },\n hour: {\n key: 'hour',\n placeholder: 'HH',\n placeholders: ['HH', 'H', 'hh', 'h'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.hour.placeholder),\n },\n minute: {\n key: 'minute',\n placeholder: 'mm',\n placeholders: ['mm', 'm'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.minute.placeholder),\n },\n second: {\n key: 'second',\n placeholder: 'ss',\n placeholders: ['ss', 's'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.second.placeholder),\n },\n AMPM: {\n key: 'AMPM',\n placeholder: 'a',\n placeholders: ['a', 'A'],\n enabled: false,\n default: 0,\n typedValue: null,\n realValue: () => this.formatService.format(this._editingDate(), 'datetime', this._editingParts.AMPM.placeholder),\n },\n };\n /**\n * @ignore\n */\n this._editingText = signal('');\n /**\n * @ignore\n */\n this._inputChars = [];\n /**\n * Indicates whether typing is allowed in the input field.\n * @defaultValue false\n */\n this.allowTyping = input(false);\n /**\n * @description The calendar type to use for the datetime input.\n */\n this.calendar = input(null);\n this._calendarSystem = linkedSignal(() => this.calendar());\n this._activePart = signal(null);\n // TODO: fix this\n // #effect = effect(() => {\n // this._activePart()\n // this._clearInputBuffer();\n // });\n this._editingDate = linkedSignal(() => this.calendarService.now(this._calendarSystem()));\n /**\n * @ignore\n */\n this.input = viewChild('input');\n this.minValue = input(null);\n this.maxValue = input(null);\n /**\n * Emitted when a click event occurs on the datetime box.\n * @event\n */\n this.onClick = output();\n this.picker = input('datetime');\n this._format = linkedSignal(() => this.format());\n /**\n * @deprecated use locale & mode instead\n */\n this.format = input();\n this.#effect = effect(() => {\n const profile = this.localeService.activeProfile();\n //\n if (!this.format()) {\n this._format.set(this.format() ?? profile.formats[this.picker()]?.short ?? '');\n }\n //\n if (!this.calendar()) {\n this._calendarSystem.set(profile.calendar.system);\n }\n //\n this._detectParts();\n untracked(() => {\n this._updateText();\n });\n });\n /**\n * @description check if page is in rtl or ltr\n */\n this.isRtl = signal(this.platformService.isRtl());\n }\n #effect;\n _detectParts() {\n Object.values(this._editingParts).forEach((e) => {\n e.enabled = false;\n });\n const formatParts = this._format().split(/[^a-zA-Z]+/);\n formatParts.forEach((f) => {\n const found = Object.values(this._editingParts).find((c) => c.placeholders.some((d) => d == f));\n if (found) {\n found.enabled = true;\n found.placeholder = f;\n }\n });\n }\n /**\n * @description listen to direction change to react to it.\n */\n ngOnInit() {\n this.platformService.directionChange.pipe(map((i) => i.data === 'rtl')).subscribe((isRtl) => this.isRtl.set(isRtl));\n }\n /**\n * @ignore\n */\n _getOrderedParts() {\n // TODO: better spliter format\n const formatParts = this._format().split(/[^a-zA-Z]+/);\n const result = [];\n formatParts.forEach((f) => {\n const found = Object.values(this._editingParts).find((c) => c.placeholders.some((d) => d == f));\n if (found && found.enabled)\n result.push(found);\n });\n return result;\n }\n /**\n * @ignore\n */\n _clearInputBuffer() {\n this._inputChars = [];\n }\n /**\n * @ignore\n */\n _updateText() {\n let text = this._format();\n //\n Object.values(this._editingParts).forEach((part) => {\n if (this._activePart() == part.key) {\n if (part.typedValue)\n text = text.replace(part.placeholder, part.typedValue);\n }\n else {\n if (part.typedValue != part.placeholder && part.typedValue != null) {\n text = text.replace(part.placeholder, part.realValue());\n }\n }\n });\n this._editingText.set(text == this._format() ? '' : text);\n if (this._activePart()) {\n this._highlightActivePart();\n }\n }\n //TODO: fix this\n /**\n * Sets the internal date value, adjusting it based on editing parts.\n * @param value - The date to set. Returns `undefined` if no value is provided.\n * @ignore\n */\n // override internalSetValue(value?: Date) {\n // console.log('internalSetValue', value);\n // if (value) {\n // let editingDate = this.calendarService.create(value, this._calendarSystem());\n // let applyChanges = false;\n // Object.values(this._editingParts).forEach((part) => {\n // if (!part.enabled) {\n // editingDate = editingDate.set(part.key as TimeUnit, part.default);\n // applyChanges = true;\n // }\n // });\n // if (applyChanges) {\n // return editingDate.date;\n // }\n // }\n // return value;\n // }\n /**\n * Handles changes to the internal date value, updating editing parts and text representation.\n *\n * @param value - The new date value. If not provided, resets editing parts.\n * @ignore\n */\n internalValueChanged(value) {\n if (value && this.calendarService.isValidDate(value)) {\n this._editingDate.set(this.calendarService.create(value, this._calendarSystem()));\n }\n Object.values(this._editingParts).forEach((part) => {\n if (value) {\n if (part.typedValue != part.placeholder)\n part.typedValue = part.realValue();\n }\n else\n part.typedValue = null;\n });\n this._updateText();\n }\n /**\n * @ignore\n */\n _handleOnKeydownEvent(e) {\n const ignore = () => {\n if (e.key === 'Tab') {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n };\n if (!this.allowTyping()) {\n ignore();\n return;\n }\n const input = e.target;\n //\n const orderedParts = this._getOrderedParts();\n const part = this._activePart() ? this._editingParts[this._activePart()] : orderedParts[0];\n const nextPart = part ? orderedParts[orderedParts.indexOf(part) + 1] : null;\n const prevPart = part ? orderedParts[orderedParts.indexOf(part) - 1] : null;\n //\n const goNext = () => {\n this._clearInputBuffer();\n if (nextPart) {\n this._activePart.set(nextPart.key);\n this._highlightActivePart();\n }\n };\n const goPrev = () => {\n this._clearInputBuffer();\n if (prevPart) {\n this._activePart.set(prevPart.key);\n this._highlightActivePart();\n }\n };\n /*************** Handle Left and Right **************/\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n ignore();\n e.code === 'ArrowRight' ? goNext() : goPrev();\n }\n else if ((e.code === 'ArrowUp' || e.code === 'ArrowDown') && !e.ctrlKey) {\n /*************** Handle Up and Down **************/\n if (this.disabled || this.readonly) {\n ignore();\n return;\n }\n else {\n ignore();\n const sign = e.code === 'ArrowUp' ? +1 : -1;\n this._activePart.set(part.key);\n const newVal = this._editingDate().add(part.key, sign);\n this._editingParts[part.key].typedValue = this.formatService.format(newVal, 'datetime', this._editingParts[part.key].placeholder);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n }\n }\n else if (e.code == 'Backspace' || e.code == 'Delete') {\n /*************** Handle Backspace **************/\n if (this.disabled || this.readonly) {\n return;\n }\n if (input.value) {\n ignore();\n this._editingParts[part.key].typedValue = this._editingParts[part.key].placeholder;\n this._detectValueChanges();\n goPrev();\n }\n }\n else if (e.code == 'Tab' || e.code == 'Space') {\n /*************** Handle Backspace **************/\n if (input.value) {\n if (!e.shiftKey && nextPart) {\n ignore();\n goNext();\n }\n else if (e.shiftKey && prevPart) {\n ignore();\n goPrev();\n }\n }\n // TODO: FiX type in input\n }\n else if (e.key?.trim() && !isNaN(Number(e.key))) {\n ignore();\n return;\n if (this.disabled || this.readonly) {\n return;\n }\n let next = false;\n const editing = this._editingParts[part.key];\n //\n switch (part.key) {\n case 'year': {\n if (editing.placeholder.length == 2 && this._inputChars.length == 0) {\n this._inputChars.push(...this.formatService\n .format(this.calendarService.now(this._calendarSystem()), 'datetime', 'yyyy')\n .substring(0, 2)\n .split(''));\n }\n if (this._inputChars.length < 4) {\n editing.typedValue = `${this._inputChars.join('')}${e.key}`;\n this._inputChars.push(e.key);\n if (this._inputChars.length > 3) {\n next = true;\n }\n }\n else {\n next = true;\n }\n editing.typedValue = ('0000' + editing.typedValue).slice(-4);\n const nv = parseInt(editing.typedValue);\n //if (nv > 0) {\n const newVal = this._editingDate().set('year', nv);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n //}\n break;\n }\n case 'month': {\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 1) {\n this._clearInputBuffer();\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > 12) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n this._clearInputBuffer();\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n const nv = parseInt(editing.typedValue);\n if (nv > 0) {\n const newVal = this._editingDate().set(part.key, nv);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n }\n break;\n }\n case 'day': {\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 3) {\n this._clearInputBuffer();\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > this._editingDate().month.totalDays) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n this._clearInputBuffer();\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n const nv = parseInt(editing.typedValue);\n if (nv > 0) {\n const newVal = this._editingDate().set(part.key, nv);\n this._editingDate.set(newVal);\n this._detectValueChanges();\n }\n break;\n }\n case 'hour': {\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 2) {\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > 23) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n const newVal = this._editingDate().set('hour', parseInt(editing.typedValue));\n this._editingDate.set(newVal);\n this._detectValueChanges();\n break;\n }\n case 'minute':\n case 'second':\n if (this._inputChars.length == 0) {\n this._inputChars.push(e.key);\n editing.typedValue = `0${e.key}`;\n if (parseInt(e.key) > 5) {\n this._clearInputBuffer();\n next = true;\n }\n }\n else if (this._inputChars.length == 1) {\n const newStr = parseInt(`${this._inputChars[0]}${e.key}`);\n if (newStr > 59) {\n editing.typedValue = `0${e.key}`;\n }\n else {\n editing.typedValue = newStr.toString();\n }\n this._clearInputBuffer();\n next = true;\n }\n editing.typedValue = editing.typedValue?.length === 1 ? '0' + editing.typedValue : editing.typedValue;\n // eslint-disable-next-line no-case-declarations\n const newVal = this._editingDate().set(part.key, parseInt(editing.typedValue));\n this._editingDate.set(newVal);\n this._detectValueChanges();\n break;\n default:\n }\n if (next) {\n goNext();\n return;\n }\n }\n /*************** Emit Event **************/\n super.emitOnKeydownEvent(e);\n }\n /**\n * @ignore\n */\n _handleKeyUpEvent(e) {\n if (this._activePart()) {\n this._highlightActivePart();\n }\n }\n /**\n * @ignore\n */\n _handleFocusEvent(e) {\n //this._highlightActivePart();\n super.emitOnFocusEvent(e);\n }\n /**\n * @ignore\n */\n _handleBlurEvent(e) {\n super.emitOnBlurEvent(e);\n }\n /**\n * @ignore\n */\n _handleOnInputClickEvent(e) {\n if (this.allowTyping()) {\n setTimeout(() => {\n this._detectPartAtPosition();\n }, 0);\n }\n this.onClick.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n /**\n * @ignore\n */\n _detectPartAtPosition() {\n const input = this.input();\n if (!input || !input.value)\n return;\n const sStart = input.selectionEnd || 0;\n const re = /[a-zA-Z0-9]+/gi;\n const valueParts = Array.from(input.value.matchAll(re));\n const orderedParts = this._getOrderedParts();\n const index = valueParts.findIndex((c) => c.index <= sStart && c.index + c[0].length >= sStart);\n this._activePart.set(orderedParts[index].key);\n this._highlightActivePart();\n }\n /**\n * @ignore\n */\n _highlightActivePart() {\n const input = this.input();\n if (!input || !input.value || !this._activePart())\n return;\n const orderedParts = this._getOrderedParts();\n const index = orderedParts.findIndex((c) => c.key == this._activePart());\n const re = /[a-zA-Z0-9]+/gi;\n const valueParts = Array.from(input.value.matchAll(re));\n const { start, end } = getWordBoundsAtPosition(input.value, valueParts[index]?.index);\n if (input && typeof input.setSelectionRange === 'function') {\n input.setSelectionRange(start, end);\n }\n }\n /**\n * @ignore\n */\n _detectValueChanges() {\n this.commitValue(this._editingDate().date, true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.4\", type: AXDateTimeInputComponent, isStandalone: true, selector: \"ax-datetime-input\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: \"state\", publicName: \"state\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, allowTyping: { classPropertyName: \"allowTyping\", publicName: \"allowTyping\", isSignal: true, isRequired: false, transformFunction: null }, calendar: { classPropertyName: \"calendar\", publicName: \"calendar\", isSignal: true, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: true, isRequired: false, transformFunction: null }, picker: { classPropertyName: \"picker\", publicName: \"picker\", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: \"format\", publicName: \"format\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", stateChange: \"stateChange\", onValueChanged: \"onValueChanged\", onBlur: \"onBlur\", onFocus: \"onFocus\", readonlyChange: \"readonlyChange\", disabledChange: \"disabledChange\", onClick: \"onClick\" }, host: { listeners: { \"keydown\": \"_handleOnKeydownEvent($event)\", \"keyup\": \"_handleKeyUpEvent($event)\" } }, providers: [\n { provide: AXComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXFocusableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXValuableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXClearableComponent, useExisting: AXDateTimeInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDateTimeInputComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<input\\n #input\\n id=\\\"input\\\"\\n autocomplete=\\\"off\\\"\\n autocorrect=\\\"off\\\"\\n autocapitalize=\\\"off\\\"\\n spellcheck=\\\"false\\\"\\n class=\\\"ax-input\\\"\\n type=\\\"text\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [class.ax-select-none]=\\\"!allowTyping()\\\"\\n [class.ax-state-readonly]=\\\"readonly\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"true\\\"\\n [ngModel]=\\\"_editingText()\\\"\\n (mouseup)=\\\"_handleOnInputClickEvent($event)\\\"\\n (blur)=\\\"_handleBlurEvent($event)\\\"\\n (focus)=\\\"_handleFocusEvent($event)\\\"\\n style=\\\"display: flex\\\"\\n [style.justify-items]=\\\"isRtl() ? 'end' : 'start'\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n/>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-datetime-input', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'], outputs: ['valueChange', 'stateChange', 'onValueChanged', 'onBlur', 'onFocus', 'readonlyChange', 'disabledChange'], providers: [\n { provide: AXComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXFocusableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXValuableComponent, useExisting: AXDateTimeInputComponent },\n { provide: AXClearableComponent, useExisting: AXDateTimeInputComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDateTimeInputComponent),\n multi: true,\n },\n ], imports: [FormsModule], template: \"<input\\n #input\\n id=\\\"input\\\"\\n autocomplete=\\\"off\\\"\\n autocorrect=\\\"off\\\"\\n autocapitalize=\\\"off\\\"\\n spellcheck=\\\"false\\\"\\n class=\\\"ax-input\\\"\\n type=\\\"text\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [class.ax-select-none]=\\\"!allowTyping()\\\"\\n [class.ax-state-readonly]=\\\"readonly\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"true\\\"\\n [ngModel]=\\\"_editingText()\\\"\\n (mouseup)=\\\"_handleOnInputClickEvent($event)\\\"\\n (blur)=\\\"_handleBlurEvent($event)\\\"\\n (focus)=\\\"_handleFocusEvent($event)\\\"\\n style=\\\"display: flex\\\"\\n [style.justify-items]=\\\"isRtl() ? 'end' : 'start'\\\"\\n [tabindex]=\\\"tabIndex\\\"\\n/>\\n<ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n\", styles: [\".ax-select-none,.ax-select-none *{-webkit-user-select:none!important;user-select:none!important}\\n\"] }]\n }], propDecorators: { _handleOnKeydownEvent: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], _handleKeyUpEvent: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRldGltZS1pbnB1dC9zcmMvbGliL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0ZXRpbWUtaW5wdXQvc3JjL2xpYi9kYXRldGltZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBK0MsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFM0I7Ozs7R0FJRztBQXNCSCxNQUFNLE9BQU8sd0JBQXlC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QUU7d0JBQy9ELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsMEJBQTBCLEVBQUU7d0JBQ3hFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsMEJBQTBCLEVBQUU7d0JBQ3ZFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsMEJBQTBCLEVBQUU7d0JBQ3hFOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixXQUNRLENBQUMsV0FBVyxDQUFDOzhCQStRdEIscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEyT25DLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsZWFyYWJsZUNvbXBvbmVudCxcbiAgQVhDbGlja0V2ZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERhdGVUaW1lUGlja2VyVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jYWxlbmRhcic7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSwgQVhEYXRlVGltZSwgQVhEYXRlVGltZVBhcnQsIEFYRGF0ZVRpbWVQYXJ0cyB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgZ2V0V29yZEJvdW5kc0F0UG9zaXRpb24gfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBsaW5rZWRTaWduYWwsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCBmb3IgZGF0ZSBhbmQgdGltZSBpbnB1dCB3aXRoIHZhcmlvdXMgY3VzdG9tIGZlYXR1cmVzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGV0aW1lLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seScsICd0YWJJbmRleCcsICdwbGFjZWhvbGRlcicsICd2YWx1ZScsICdzdGF0ZScsICduYW1lJywgJ2lkJ10sXG4gIG91dHB1dHM6IFsndmFsdWVDaGFuZ2UnLCAnc3RhdGVDaGFuZ2UnLCAnb25WYWx1ZUNoYW5nZWQnLCAnb25CbHVyJywgJ29uRm9jdXMnLCAncmVhZG9ubHlDaGFuZ2UnLCAnZGlzYWJsZWRDaGFuZ2UnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0ZVRpbWVJbnB1dENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ2xlYXJhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRlVGltZUlucHV0Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxEYXRlPiB7XG4gIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpbmdQYXJ0czogQVhEYXRlVGltZVBhcnRzID0ge1xuICAgIHllYXI6IHtcbiAgICAgIGtleTogJ3llYXInLFxuICAgICAgcGxhY2Vob2xkZXI6ICd5eXl5JyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydZWScsICd5eScsICdZWVlZJywgJ3l5eXknXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMjAyMyxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLnllYXIucGxhY2Vob2xkZXIgYXMgYW55KSxcbiAgICB9LFxuICAgIG1vbnRoOiB7XG4gICAgICBrZXk6ICdtb250aCcsXG4gICAgICBwbGFjZWhvbGRlcjogJ01NJyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydNTU0nLCAnTU1NTScsICdNTScsICdNJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDEsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PlxuICAgICAgICB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMuX2VkaXRpbmdEYXRlKCksICdkYXRldGltZScsIHRoaXMuX2VkaXRpbmdQYXJ0cy5tb250aC5wbGFjZWhvbGRlciBhcyBhbnkpLFxuICAgIH0sXG4gICAgZGF5OiB7XG4gICAgICBrZXk6ICdkYXknLFxuICAgICAgcGxhY2Vob2xkZXI6ICdkZCcsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnZGQnLCAnREQnLCAnZCcsICdkZGRkJywgJ0UnXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMSxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLmRheS5wbGFjZWhvbGRlciBhcyBhbnkpLFxuICAgIH0sXG4gICAgaG91cjoge1xuICAgICAga2V5OiAnaG91cicsXG4gICAgICBwbGFjZWhvbGRlcjogJ0hIJyxcbiAgICAgIHBsYWNlaG9sZGVyczogWydISCcsICdIJywgJ2hoJywgJ2gnXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLmhvdXIucGxhY2Vob2xkZXIgYXMgYW55KSxcbiAgICB9LFxuICAgIG1pbnV0ZToge1xuICAgICAga2V5OiAnbWludXRlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnbW0nLFxuICAgICAgcGxhY2Vob2xkZXJzOiBbJ21tJywgJ20nXSxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogMCxcbiAgICAgIHR5cGVkVmFsdWU6IG51bGwsXG4gICAgICByZWFsVmFsdWU6ICgpID0+XG4gICAgICAgIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fZWRpdGluZ0RhdGUoKSwgJ2RhdGV0aW1lJywgdGhpcy5fZWRpdGluZ1BhcnRzLm1pbnV0ZS5wbGFjZWhvbGRlciBhcyBhbnkpLFxuICAgIH0sXG4gICAgc2Vjb25kOiB7XG4gICAgICBrZXk6ICdzZWNvbmQnLFxuICAgICAgcGxhY2Vob2xkZXI6ICdzcycsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnc3MnLCAncyddLFxuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiAwLFxuICAgICAgdHlwZWRWYWx1ZTogbnVsbCxcbiAgICAgIHJlYWxWYWx1ZTogKCkgPT5cbiAgICAgICAgdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl9lZGl0aW5nRGF0ZSgpLCAnZGF0ZXRpbWUnLCB0aGlzLl9lZGl0aW5nUGFydHMuc2Vjb25kLnBsYWNlaG9sZGVyIGFzIGFueSksXG4gICAgfSxcbiAgICBBTVBNOiB7XG4gICAgICBrZXk6ICdBTVBNJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnYScsXG4gICAgICBwbGFjZWhvbGRlcnM6IFsnYScsICdBJ10sXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IDAsXG4gICAgICB0eXBlZFZhbHVlOiBudWxsLFxuICAgICAgcmVhbFZhbHVlOiAoKSA9PlxuICAgICAgICB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMuX2VkaXRpbmdEYXRlKCksICdkYXRldGltZScsIHRoaXMuX2VkaXRpbmdQYXJ0cy5BTVBNLnBsYWNlaG9sZGVyIGFzIGFueSksXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfZWRpdGluZ1RleHQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2lucHV0Q2hhcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHR5cGluZyBpcyBhbGxvd2VkIGluIHRoZSBpbnB1dCBmaWVsZC5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgYWxsb3dUeXBpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgY2FsZW5kYXIgdHlwZSB0byB1c2UgZm9yIHRoZSBkYXRldGltZSBpbnB1dC5cbiAgICovXG4gIGNhbGVuZGFyID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIF9jYWxlbmRhclN5c3RlbSA9IGxpbmtlZFNpZ25hbDxzdHJpbmcgfCBudWxsPigoKSA9PiB0aGlzLmNhbGVuZGFyKCkpO1xuXG4gIHByaXZhdGUgX2FjdGl2ZVBhcnQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gVE9ETzogZml4IHRoaXNcbiAgLy8gI2VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gIC8vICAgdGhpcy5fYWN0aXZlUGFydCgpXG4gIC8vICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAvLyB9KTtcblxuICBwcml2YXRlIF9lZGl0aW5nRGF0ZSA9IGxpbmtlZFNpZ25hbDxBWERhdGVUaW1lPigoKSA9PiB0aGlzLmNhbGVuZGFyU2VydmljZS5ub3codGhpcy5fY2FsZW5kYXJTeXN0ZW0oKSkpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbnB1dCA9IHZpZXdDaGlsZDxIVE1MSW5wdXRFbGVtZW50PignaW5wdXQnKTtcblxuICBtaW5WYWx1ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcblxuICBtYXhWYWx1ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2xpY2sgZXZlbnQgb2NjdXJzIG9uIHRoZSBkYXRldGltZSBib3guXG4gICAqIEBldmVudFxuICAgKi9cbiAgb25DbGljayA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgcGlja2VyID0gaW5wdXQ8QVhEYXRlVGltZVBpY2tlclR5cGU+KCdkYXRldGltZScpO1xuXG4gIHByaXZhdGUgX2Zvcm1hdCA9IGxpbmtlZFNpZ25hbDxzdHJpbmc+KCgpID0+IHRoaXMuZm9ybWF0KCkpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbG9jYWxlICYgbW9kZSBpbnN0ZWFkXG4gICAqL1xuICBmb3JtYXQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPigpO1xuXG4gICNlZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpO1xuICAgIC8vXG4gICAgaWYgKCF0aGlzLmZvcm1hdCgpKSB7XG4gICAgICB0aGlzLl9mb3JtYXQuc2V0KHRoaXMuZm9ybWF0KCkgPz8gcHJvZmlsZS5mb3JtYXRzW3RoaXMucGlja2VyKCldPy5zaG9ydCA/PyAnJyk7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyKCkpIHtcbiAgICAgIHRoaXMuX2NhbGVuZGFyU3lzdGVtLnNldChwcm9maWxlLmNhbGVuZGFyLnN5c3RlbSk7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5fZGV0ZWN0UGFydHMoKTtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlVGV4dCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIF9kZXRlY3RQYXJ0cygpIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZS5lbmFibGVkID0gZmFsc2U7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0UGFydHMgPSB0aGlzLl9mb3JtYXQoKS5zcGxpdCgvW15hLXpBLVpdKy8pO1xuICAgIGZvcm1hdFBhcnRzLmZvckVhY2goKGYpID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZpbmQoKGMpID0+IGMucGxhY2Vob2xkZXJzLnNvbWUoKGQpID0+IGQgPT0gZikpO1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIGZvdW5kLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICBmb3VuZC5wbGFjZWhvbGRlciA9IGY7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIGNoZWNrIGlmIHBhZ2UgaXMgaW4gcnRsIG9yIGx0clxuICAgKi9cbiAgcHJvdGVjdGVkIGlzUnRsID0gc2lnbmFsKHRoaXMucGxhdGZvcm1TZXJ2aWNlLmlzUnRsKCkpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gbGlzdGVuIHRvIGRpcmVjdGlvbiBjaGFuZ2UgdG8gcmVhY3QgdG8gaXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGF0Zm9ybVNlcnZpY2UuZGlyZWN0aW9uQ2hhbmdlLnBpcGUobWFwKChpKSA9PiBpLmRhdGEgPT09ICdydGwnKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4gdGhpcy5pc1J0bC5zZXQoaXNSdGwpKTtcbiAgfVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2dldE9yZGVyZWRQYXJ0cygpOiBBWERhdGVUaW1lUGFydFtdIHtcbiAgICAvLyBUT0RPOiBiZXR0ZXIgc3BsaXRlciBmb3JtYXRcbiAgICBjb25zdCBmb3JtYXRQYXJ0cyA9IHRoaXMuX2Zvcm1hdCgpLnNwbGl0KC9bXmEtekEtWl0rLyk7XG4gICAgY29uc3QgcmVzdWx0OiBBWERhdGVUaW1lUGFydFtdID0gW107XG4gICAgZm9ybWF0UGFydHMuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZmluZCgoYykgPT4gYy5wbGFjZWhvbGRlcnMuc29tZSgoZCkgPT4gZCA9PSBmKSk7XG4gICAgICBpZiAoZm91bmQgJiYgZm91bmQuZW5hYmxlZCkgcmVzdWx0LnB1c2goZm91bmQpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2NsZWFySW5wdXRCdWZmZXIoKSB7XG4gICAgdGhpcy5faW5wdXRDaGFycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVUZXh0KCkge1xuICAgIGxldCB0ZXh0ID0gdGhpcy5fZm9ybWF0KCk7XG4gICAgLy9cbiAgICBPYmplY3QudmFsdWVzKHRoaXMuX2VkaXRpbmdQYXJ0cykuZm9yRWFjaCgocGFydCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2FjdGl2ZVBhcnQoKSA9PSBwYXJ0LmtleSkge1xuICAgICAgICBpZiAocGFydC50eXBlZFZhbHVlKSB0ZXh0ID0gdGV4dC5yZXBsYWNlKHBhcnQucGxhY2Vob2xkZXIsIHBhcnQudHlwZWRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocGFydC50eXBlZFZhbHVlICE9IHBhcnQucGxhY2Vob2xkZXIgJiYgcGFydC50eXBlZFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKHBhcnQucGxhY2Vob2xkZXIsIHBhcnQucmVhbFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fZWRpdGluZ1RleHQuc2V0KHRleHQgPT0gdGhpcy5fZm9ybWF0KCkgPyAnJyA6IHRleHQpO1xuICAgIGlmICh0aGlzLl9hY3RpdmVQYXJ0KCkpIHtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICB9XG4gIH1cblxuICAvL1RPRE86IGZpeCB0aGlzXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbnRlcm5hbCBkYXRlIHZhbHVlLCBhZGp1c3RpbmcgaXQgYmFzZWQgb24gZWRpdGluZyBwYXJ0cy5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGRhdGUgdG8gc2V0LiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAvLyBvdmVycmlkZSBpbnRlcm5hbFNldFZhbHVlKHZhbHVlPzogRGF0ZSkge1xuICAvLyAgIGNvbnNvbGUubG9nKCdpbnRlcm5hbFNldFZhbHVlJywgdmFsdWUpO1xuICAvLyAgIGlmICh2YWx1ZSkge1xuICAvLyAgICAgbGV0IGVkaXRpbmdEYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLl9jYWxlbmRhclN5c3RlbSgpKTtcbiAgLy8gICAgIGxldCBhcHBseUNoYW5nZXMgPSBmYWxzZTtcbiAgLy8gICAgIE9iamVjdC52YWx1ZXModGhpcy5fZWRpdGluZ1BhcnRzKS5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gIC8vICAgICAgIGlmICghcGFydC5lbmFibGVkKSB7XG4gIC8vICAgICAgICAgZWRpdGluZ0RhdGUgPSBlZGl0aW5nRGF0ZS5zZXQocGFydC5rZXkgYXMgVGltZVVuaXQsIHBhcnQuZGVmYXVsdCk7XG4gIC8vICAgICAgICAgYXBwbHlDaGFuZ2VzID0gdHJ1ZTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSk7XG4gIC8vICAgICBpZiAoYXBwbHlDaGFuZ2VzKSB7XG4gIC8vICAgICAgIHJldHVybiBlZGl0aW5nRGF0ZS5kYXRlO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gdmFsdWU7XG4gIC8vIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBpbnRlcm5hbCBkYXRlIHZhbHVlLCB1cGRhdGluZyBlZGl0aW5nIHBhcnRzIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3IGRhdGUgdmFsdWUuIElmIG5vdCBwcm92aWRlZCwgcmVzZXRzIGVkaXRpbmcgcGFydHMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlPzogRGF0ZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2VkaXRpbmdEYXRlLnNldCh0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodmFsdWUsIHRoaXMuX2NhbGVuZGFyU3lzdGVtKCkpKTtcbiAgICB9XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLl9lZGl0aW5nUGFydHMpLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBpZiAocGFydC50eXBlZFZhbHVlICE9IHBhcnQucGxhY2Vob2xkZXIpIHBhcnQudHlwZWRWYWx1ZSA9IHBhcnQucmVhbFZhbHVlKCk7XG4gICAgICB9IGVsc2UgcGFydC50eXBlZFZhbHVlID0gbnVsbDtcbiAgICB9KTtcbiAgICB0aGlzLl91cGRhdGVUZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBfaGFuZGxlT25LZXlkb3duRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlnbm9yZSA9ICgpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmFsbG93VHlwaW5nKCkpIHtcbiAgICAgIGlnbm9yZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAvL1xuICAgIGNvbnN0IG9yZGVyZWRQYXJ0cyA9IHRoaXMuX2dldE9yZGVyZWRQYXJ0cygpO1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLl9hY3RpdmVQYXJ0KCkgPyB0aGlzLl9lZGl0aW5nUGFydHNbdGhpcy5fYWN0aXZlUGFydCgpXSA6IG9yZGVyZWRQYXJ0c1swXTtcbiAgICBjb25zdCBuZXh0UGFydCA9IHBhcnQgPyBvcmRlcmVkUGFydHNbb3JkZXJlZFBhcnRzLmluZGV4T2YocGFydCkgKyAxXSA6IG51bGw7XG4gICAgY29uc3QgcHJldlBhcnQgPSBwYXJ0ID8gb3JkZXJlZFBhcnRzW29yZGVyZWRQYXJ0cy5pbmRleE9mKHBhcnQpIC0gMV0gOiBudWxsO1xuICAgIC8vXG4gICAgY29uc3QgZ29OZXh0ID0gKCkgPT4ge1xuICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgaWYgKG5leHRQYXJ0KSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhcnQuc2V0KG5leHRQYXJ0LmtleSk7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGdvUHJldiA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2NsZWFySW5wdXRCdWZmZXIoKTtcbiAgICAgIGlmIChwcmV2UGFydCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVQYXJ0LnNldChwcmV2UGFydC5rZXkpO1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRBY3RpdmVQYXJ0KCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvKioqKioqKioqKioqKioqICBIYW5kbGUgTGVmdCBhbmQgUmlnaHQgICoqKioqKioqKioqKioqL1xuICAgIGlmIChlLmNvZGUgPT09ICdBcnJvd1JpZ2h0JyB8fCBlLmNvZGUgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICBpZ25vcmUoKTtcbiAgICAgIGUuY29kZSA9PT0gJ0Fycm93UmlnaHQnID8gZ29OZXh0KCkgOiBnb1ByZXYoKTtcbiAgICB9IGVsc2UgaWYgKChlLmNvZGUgPT09ICdBcnJvd1VwJyB8fCBlLmNvZGUgPT09ICdBcnJvd0Rvd24nKSAmJiAhZS5jdHJsS2V5KSB7XG4gICAgICAvKioqKioqKioqKioqKioqICBIYW5kbGUgVXAgYW5kIERvd24gICoqKioqKioqKioqKioqL1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICBpZ25vcmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWdub3JlKCk7XG4gICAgICAgIGNvbnN0IHNpZ24gPSBlLmNvZGUgPT09ICdBcnJvd1VwJyA/ICsxIDogLTE7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhcnQuc2V0KHBhcnQua2V5KTtcbiAgICAgICAgY29uc3QgbmV3VmFsOiBBWERhdGVUaW1lID0gdGhpcy5fZWRpdGluZ0RhdGUoKS5hZGQocGFydC5rZXksIHNpZ24pO1xuICAgICAgICB0aGlzLl9lZGl0aW5nUGFydHNbcGFydC5rZXldLnR5cGVkVmFsdWUgPSB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KFxuICAgICAgICAgIG5ld1ZhbCxcbiAgICAgICAgICAnZGF0ZXRpbWUnLFxuICAgICAgICAgIHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV0ucGxhY2Vob2xkZXIgYXMgYW55LFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2VkaXRpbmdEYXRlLnNldChuZXdWYWwpO1xuICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PSAnQmFja3NwYWNlJyB8fCBlLmNvZGUgPT0gJ0RlbGV0ZScpIHtcbiAgICAgIC8qKioqKioqKioqKioqKiogIEhhbmRsZSBCYWNrc3BhY2UgICoqKioqKioqKioqKioqL1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQudmFsdWUpIHtcbiAgICAgICAgaWdub3JlKCk7XG4gICAgICAgIHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV0udHlwZWRWYWx1ZSA9IHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV0ucGxhY2Vob2xkZXI7XG4gICAgICAgIHRoaXMuX2RldGVjdFZhbHVlQ2hhbmdlcygpO1xuICAgICAgICBnb1ByZXYoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUuY29kZSA9PSAnVGFiJyB8fCBlLmNvZGUgPT0gJ1NwYWNlJykge1xuICAgICAgLyoqKioqKioqKioqKioqKiAgSGFuZGxlIEJhY2tzcGFjZSAgKioqKioqKioqKioqKiovXG4gICAgICBpZiAoaW5wdXQudmFsdWUpIHtcbiAgICAgICAgaWYgKCFlLnNoaWZ0S2V5ICYmIG5leHRQYXJ0KSB7XG4gICAgICAgICAgaWdub3JlKCk7XG4gICAgICAgICAgZ29OZXh0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZS5zaGlmdEtleSAmJiBwcmV2UGFydCkge1xuICAgICAgICAgIGlnbm9yZSgpO1xuICAgICAgICAgIGdvUHJldigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBUT0RPOiBGaVggdHlwZSBpbiBpbnB1dFxuICAgIH0gZWxzZSBpZiAoZS5rZXk/LnRyaW0oKSAmJiAhaXNOYU4oTnVtYmVyKGUua2V5KSkpIHtcbiAgICAgIGlnbm9yZSgpO1xuICAgICAgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgbmV4dCA9IGZhbHNlO1xuICAgICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2VkaXRpbmdQYXJ0c1twYXJ0LmtleV07XG4gICAgICAvL1xuICAgICAgc3dpdGNoIChwYXJ0LmtleSkge1xuICAgICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICAgIGlmIChlZGl0aW5nLnBsYWNlaG9sZGVyLmxlbmd0aCA9PSAyICYmIHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hhcnMucHVzaChcbiAgICAgICAgICAgICAgLi4udGhpcy5mb3JtYXRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmZvcm1hdCh0aGlzLmNhbGVuZGFyU2VydmljZS5ub3codGhpcy5fY2FsZW5kYXJTeXN0ZW0oKSksICdkYXRldGltZScsICd5eXl5JyBhcyBhbnkpXG4gICAgICAgICAgICAgICAgLnN1YnN0cmluZygwLCAyKVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgJHt0aGlzLl9pbnB1dENoYXJzLmpvaW4oJycpfSR7ZS5rZXl9YDtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0Q2hhcnMucHVzaChlLmtleSk7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gKCcwMDAwJyArIGVkaXRpbmcudHlwZWRWYWx1ZSkuc2xpY2UoLTQpO1xuICAgICAgICAgIGNvbnN0IG52ID0gcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKTtcbiAgICAgICAgICAvL2lmIChudiA+IDApIHtcbiAgICAgICAgICBjb25zdCBuZXdWYWwgPSB0aGlzLl9lZGl0aW5nRGF0ZSgpLnNldCgneWVhcicsIG52KTtcbiAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZS5zZXQobmV3VmFsKTtcbiAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICAvL31cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGFycy5wdXNoKGUua2V5KTtcbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSA+IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IHBhcnNlSW50KGAke3RoaXMuX2lucHV0Q2hhcnNbMF19JHtlLmtleX1gKTtcbiAgICAgICAgICAgIGlmIChuZXdTdHIgPiAxMikge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IG5ld1N0ci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIGNvbnN0IG52ID0gcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKTtcbiAgICAgICAgICBpZiAobnYgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWwgPSB0aGlzLl9lZGl0aW5nRGF0ZSgpLnNldChwYXJ0LmtleSwgbnYpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGUuc2V0KG5ld1ZhbCk7XG4gICAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZGF5Jzoge1xuICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENoYXJzLnB1c2goZS5rZXkpO1xuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpID4gMykge1xuICAgICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICAgIG5leHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV3U3RyID0gcGFyc2VJbnQoYCR7dGhpcy5faW5wdXRDaGFyc1swXX0ke2Uua2V5fWApO1xuICAgICAgICAgICAgaWYgKG5ld1N0ciA+IHRoaXMuX2VkaXRpbmdEYXRlKCkubW9udGgudG90YWxEYXlzKSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gbmV3U3RyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jbGVhcklucHV0QnVmZmVyKCk7XG4gICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gZWRpdGluZy50eXBlZFZhbHVlPy5sZW5ndGggPT09IDEgPyAnMCcgKyBlZGl0aW5nLnR5cGVkVmFsdWUgOiBlZGl0aW5nLnR5cGVkVmFsdWU7XG4gICAgICAgICAgY29uc3QgbnYgPSBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpO1xuICAgICAgICAgIGlmIChudiA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX2VkaXRpbmdEYXRlKCkuc2V0KHBhcnQua2V5LCBudik7XG4gICAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZS5zZXQobmV3VmFsKTtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdFZhbHVlQ2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdob3VyJzoge1xuICAgICAgICAgIGlmICh0aGlzLl9pbnB1dENoYXJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dENoYXJzLnB1c2goZS5rZXkpO1xuICAgICAgICAgICAgZWRpdGluZy50eXBlZFZhbHVlID0gYDAke2Uua2V5fWA7XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpID4gMikge1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IHBhcnNlSW50KGAke3RoaXMuX2lucHV0Q2hhcnNbMF19JHtlLmtleX1gKTtcbiAgICAgICAgICAgIGlmIChuZXdTdHIgPiAyMykge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IG5ld1N0ci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX2VkaXRpbmdEYXRlKCkuc2V0KCdob3VyJywgcGFyc2VJbnQoZWRpdGluZy50eXBlZFZhbHVlKSk7XG4gICAgICAgICAgdGhpcy5fZWRpdGluZ0RhdGUuc2V0KG5ld1ZhbCk7XG4gICAgICAgICAgdGhpcy5fZGV0ZWN0VmFsdWVDaGFuZ2VzKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICBpZiAodGhpcy5faW5wdXRDaGFycy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5wdXRDaGFycy5wdXNoKGUua2V5KTtcbiAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGAwJHtlLmtleX1gO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSA+IDUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgICBuZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Q2hhcnMubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IHBhcnNlSW50KGAke3RoaXMuX2lucHV0Q2hhcnNbMF19JHtlLmtleX1gKTtcbiAgICAgICAgICAgIGlmIChuZXdTdHIgPiA1OSkge1xuICAgICAgICAgICAgICBlZGl0aW5nLnR5cGVkVmFsdWUgPSBgMCR7ZS5rZXl9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IG5ld1N0ci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2xlYXJJbnB1dEJ1ZmZlcigpO1xuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkaXRpbmcudHlwZWRWYWx1ZSA9IGVkaXRpbmcudHlwZWRWYWx1ZT8ubGVuZ3RoID09PSAxID8gJzAnICsgZWRpdGluZy50eXBlZFZhbHVlIDogZWRpdGluZy50eXBlZFZhbHVlO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jYXNlLWRlY2xhcmF0aW9uc1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IHRoaXMuX2VkaXRpbmdEYXRlKCkuc2V0KHBhcnQua2V5LCBwYXJzZUludChlZGl0aW5nLnR5cGVkVmFsdWUpKTtcbiAgICAgICAgICB0aGlzLl9lZGl0aW5nRGF0ZS5zZXQobmV3VmFsKTtcbiAgICAgICAgICB0aGlzLl9kZXRlY3RWYWx1ZUNoYW5nZXMoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGdvTmV4dCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8qKioqKioqKioqKioqKiogIEVtaXQgRXZlbnQgICoqKioqKioqKioqKioqL1xuICAgIHN1cGVyLmVtaXRPbktleWRvd25FdmVudChlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAnLCBbJyRldmVudCddKVxuICBfaGFuZGxlS2V5VXBFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVBhcnQoKSkge1xuICAgICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVGb2N1c0V2ZW50KGU6IEZvY3VzRXZlbnQpIHtcbiAgICAvL3RoaXMuX2hpZ2hsaWdodEFjdGl2ZVBhcnQoKTtcbiAgICBzdXBlci5lbWl0T25Gb2N1c0V2ZW50KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUJsdXJFdmVudChlOiBGb2N1c0V2ZW50KSB7XG4gICAgc3VwZXIuZW1pdE9uQmx1ckV2ZW50KGUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uSW5wdXRDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxvd1R5cGluZygpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGV0ZWN0UGFydEF0UG9zaXRpb24oKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2RldGVjdFBhcnRBdFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICghaW5wdXQgfHwgIWlucHV0LnZhbHVlKSByZXR1cm47XG4gICAgY29uc3Qgc1N0YXJ0ID0gaW5wdXQuc2VsZWN0aW9uRW5kIHx8IDA7XG4gICAgY29uc3QgcmUgPSAvW2EtekEtWjAtOV0rL2dpO1xuICAgIGNvbnN0IHZhbHVlUGFydHMgPSBBcnJheS5mcm9tKGlucHV0LnZhbHVlLm1hdGNoQWxsKHJlKSk7XG4gICAgY29uc3Qgb3JkZXJlZFBhcnRzID0gdGhpcy5fZ2V0T3JkZXJlZFBhcnRzKCk7XG4gICAgY29uc3QgaW5kZXggPSB2YWx1ZVBhcnRzLmZpbmRJbmRleCgoYzogYW55KSA9PiBjLmluZGV4IDw9IHNTdGFydCAmJiBjLmluZGV4ICsgY1swXS5sZW5ndGggPj0gc1N0YXJ0KTtcbiAgICB0aGlzLl9hY3RpdmVQYXJ0LnNldChvcmRlcmVkUGFydHNbaW5kZXhdLmtleSk7XG4gICAgdGhpcy5faGlnaGxpZ2h0QWN0aXZlUGFydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9oaWdobGlnaHRBY3RpdmVQYXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dCgpO1xuICAgIGlmICghaW5wdXQgfHwgIWlucHV0LnZhbHVlIHx8ICF0aGlzLl9hY3RpdmVQYXJ0KCkpIHJldHVybjtcbiAgICBjb25zdCBvcmRlcmVkUGFydHMgPSB0aGlzLl9nZXRPcmRlcmVkUGFydHMoKTtcbiAgICBjb25zdCBpbmRleCA9IG9yZGVyZWRQYXJ0cy5maW5kSW5kZXgoKGMpID0+IGMua2V5ID09IHRoaXMuX2FjdGl2ZVBhcnQoKSk7XG4gICAgY29uc3QgcmUgPSAvW2EtekEtWjAtOV0rL2dpO1xuICAgIGNvbnN0IHZhbHVlUGFydHMgPSBBcnJheS5mcm9tKGlucHV0LnZhbHVlLm1hdGNoQWxsKHJlKSk7XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBnZXRXb3JkQm91bmRzQXRQb3NpdGlvbihpbnB1dC52YWx1ZSwgdmFsdWVQYXJ0c1tpbmRleF0/LmluZGV4KTtcbiAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnNldFNlbGVjdGlvblJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2RldGVjdFZhbHVlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKHRoaXMuX2VkaXRpbmdEYXRlKCkuZGF0ZSwgdHJ1ZSk7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICAjaW5wdXRcbiAgaWQ9XCJpbnB1dFwiXG4gIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICBjbGFzcz1cImF4LWlucHV0XCJcbiAgdHlwZT1cInRleHRcIlxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5heC1zZWxlY3Qtbm9uZV09XCIhYWxsb3dUeXBpbmcoKVwiXG4gIFtjbGFzcy5heC1zdGF0ZS1yZWFkb25seV09XCJyZWFkb25seVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgW25nTW9kZWxdPVwiX2VkaXRpbmdUZXh0KClcIlxuICAobW91c2V1cCk9XCJfaGFuZGxlT25JbnB1dENsaWNrRXZlbnQoJGV2ZW50KVwiXG4gIChibHVyKT1cIl9oYW5kbGVCbHVyRXZlbnQoJGV2ZW50KVwiXG4gIChmb2N1cyk9XCJfaGFuZGxlRm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCJcbiAgW3N0eWxlLmp1c3RpZnktaXRlbXNdPVwiaXNSdGwoKSA/ICdlbmQnIDogJ3N0YXJ0J1wiXG4gIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4vPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+IDwvbmctY29udGVudD5cbiJdfQ==","import { AXDateTimeModule } from '@acorex/core/date-time';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXDateTimeInputComponent } from './datetime-input.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXDateTimeInputComponent];\nconst MODULES = [CommonModule, FormsModule, AXDateTimeModule];\nexport class AXDateTimeInputModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeInputModule, imports: [CommonModule, FormsModule, AXDateTimeModule, AXDateTimeInputComponent], exports: [AXDateTimeInputComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeInputModule, imports: [MODULES, COMPONENT] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeInputModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRldGltZS1pbnB1dC9zcmMvbGliL2RhdGV0aW1lLWlucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXRFLE1BQU0sU0FBUyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUM3QyxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQU85RCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixZQVBqQixZQUFZLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUR6Qyx3QkFBd0IsYUFBeEIsd0JBQXdCOytHQVE5QixxQkFBcUIsWUFKbkIsT0FBTyxFQUFLLFNBQVM7OzJGQUl2QixxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGV0aW1lLWlucHV0LmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtBWERhdGVUaW1lSW5wdXRDb21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBBWERhdGVUaW1lTW9kdWxlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogWy4uLk1PRFVMRVMsIC4uLkNPTVBPTkVOVF0sXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lSW5wdXRNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0ZXRpbWUtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGV0aW1lLWlucHV0L3NyYy9hY29yZXgtY29tcG9uZW50cy1kYXRldGltZS1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;;;;;;;;;AAWA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,SAAS,yBAAyB,CAAC;AACxE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;AACjD,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACxD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG;AAC7B,YAAY,IAAI,EAAE;AAClB,gBAAgB,GAAG,EAAE,MAAM;AAC3B,gBAAgB,WAAW,EAAE,MAAM;AACnC,gBAAgB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1D,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAChI,aAAa;AACb,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,EAAE,OAAO;AAC5B,gBAAgB,WAAW,EAAE,IAAI;AACjC,gBAAgB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC;AACxD,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC;AACjI,aAAa;AACb,YAAY,GAAG,EAAE;AACjB,gBAAgB,GAAG,EAAE,KAAK;AAC1B,gBAAgB,WAAW,EAAE,IAAI;AACjC,gBAAgB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC;AAC5D,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;AAC/H,aAAa;AACb,YAAY,IAAI,EAAE;AAClB,gBAAgB,GAAG,EAAE,MAAM;AAC3B,gBAAgB,WAAW,EAAE,IAAI;AACjC,gBAAgB,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;AACpD,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAChI,aAAa;AACb,YAAY,MAAM,EAAE;AACpB,gBAAgB,GAAG,EAAE,QAAQ;AAC7B,gBAAgB,WAAW,EAAE,IAAI;AACjC,gBAAgB,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;AACzC,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;AAClI,aAAa;AACb,YAAY,MAAM,EAAE;AACpB,gBAAgB,GAAG,EAAE,QAAQ;AAC7B,gBAAgB,WAAW,EAAE,IAAI;AACjC,gBAAgB,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;AACzC,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;AAClI,aAAa;AACb,YAAY,IAAI,EAAE;AAClB,gBAAgB,GAAG,EAAE,MAAM;AAC3B,gBAAgB,WAAW,EAAE,GAAG;AAChC,gBAAgB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACxC,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAChI,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC;AACtC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;AACvC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClE,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAChG;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;AACvC,QAAQ,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACxD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM;AACpC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AAC9D;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAChC,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9F;AACA;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClC,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjE;AACA;AACA,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,SAAS,CAAC,MAAM;AAC5B,gBAAgB,IAAI,CAAC,WAAW,EAAE;AAClC,aAAa,CAAC;AACd,SAAS,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AACzD;AACA,IAAI,OAAO;AACX,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACzD,YAAY,CAAC,CAAC,OAAO,GAAG,KAAK;AAC7B,SAAS,CAAC;AACV,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9D,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACnC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3G,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,OAAO,GAAG,IAAI;AACpC,gBAAgB,KAAK,CAAC,WAAW,GAAG,CAAC;AACrC;AACA,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3H;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9D,QAAQ,MAAM,MAAM,GAAG,EAAE;AACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACnC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3G,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO;AACtC,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,SAAS,CAAC;AACV,QAAQ,OAAO,MAAM;AACrB;AACA;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AACjC;AACA,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC5D,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;AAChD,gBAAgB,IAAI,IAAI,CAAC,UAAU;AACnC,oBAAoB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC;AAC1E;AACA,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACpF,oBAAoB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3E;AACA;AACA,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACjE,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAChC,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAC9D,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC7F;AACA,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC5D,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;AACvD,oBAAoB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;AACtD;AACA;AACA,gBAAgB,IAAI,CAAC,UAAU,GAAG,IAAI;AACtC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,CAAC,EAAE;AAC7B,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,YAAY,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;AACjC,gBAAgB;AAChB;AACA,YAAY,CAAC,CAAC,cAAc,EAAE;AAC9B,YAAY,CAAC,CAAC,eAAe,EAAE;AAC/B,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACjC,YAAY,MAAM,EAAE;AACpB,YAAY;AACZ;AACA,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM;AAC9B;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpD,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAClG,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;AACnF,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;AACnF;AACA,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClD,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C;AACA,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClD,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C;AACA,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;AAC/D,YAAY,MAAM,EAAE;AACpB,YAAY,CAAC,CAAC,IAAI,KAAK,YAAY,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;AACzD;AACA,aAAa,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AACjF;AACA,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChD,gBAAgB,MAAM,EAAE;AACxB,gBAAgB;AAChB;AACA,iBAAiB;AACjB,gBAAgB,MAAM,EAAE;AACxB,gBAAgB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3D,gBAAgB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9C,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AACtE,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AACjJ,gBAAgB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7C,gBAAgB,IAAI,CAAC,mBAAmB,EAAE;AAC1C;AACA;AACA,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;AAC9D;AACA,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChD,gBAAgB;AAChB;AACA,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,gBAAgB,MAAM,EAAE;AACxB,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW;AAClG,gBAAgB,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,MAAM,EAAE;AACxB;AACA;AACA,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE;AACvD;AACA,YAAY,IAAI,KAAK,CAAC,KAAK,EAAE;AAC7B,gBAAgB,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE;AAC7C,oBAAoB,MAAM,EAAE;AAC5B,oBAAoB,MAAM,EAAE;AAC5B;AACA,qBAAqB,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE;AACjD,oBAAoB,MAAM,EAAE;AAC5B,oBAAoB,MAAM,EAAE;AAC5B;AACA;AACA;AACA;AACA,aAAa,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACzD,YAAY,MAAM,EAAE;AACpB,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChD,gBAAgB;AAChB;AACA,YAAY,IAAI,IAAI,GAAG,KAAK;AAC5B,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACxD;AACA,YAAY,QAAQ,IAAI,CAAC,GAAG;AAC5B,gBAAgB,KAAK,MAAM,EAAE;AAC7B,oBAAoB,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACzF,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACtD,6BAA6B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM;AACxG,6BAA6B,SAAS,CAAC,CAAC,EAAE,CAAC;AAC3C,6BAA6B,KAAK,CAAC,EAAE,CAAC,CAAC;AACvC;AACA,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,wBAAwB,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACnF,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,wBAAwB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,4BAA4B,IAAI,GAAG,IAAI;AACvC;AACA;AACA,yBAAyB;AACzB,wBAAwB,IAAI,GAAG,IAAI;AACnC;AACA,oBAAoB,OAAO,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChF,oBAAoB,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;AAC3D;AACA,oBAAoB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;AACtE,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACjD,oBAAoB,IAAI,CAAC,mBAAmB,EAAE;AAC9C;AACA,oBAAoB;AACpB;AACA,gBAAgB,KAAK,OAAO,EAAE;AAC9B,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,wBAAwB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,wBAAwB,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,4BAA4B,IAAI,CAAC,iBAAiB,EAAE;AACpD,4BAA4B,IAAI,GAAG,IAAI;AACvC;AACA;AACA,yBAAyB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3D,wBAAwB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,wBAAwB,IAAI,MAAM,GAAG,EAAE,EAAE;AACzC,4BAA4B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D;AACA,6BAA6B;AAC7B,4BAA4B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE;AAClE;AACA,wBAAwB,IAAI,CAAC,iBAAiB,EAAE;AAChD,wBAAwB,IAAI,GAAG,IAAI;AACnC;AACA,oBAAoB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACzH,oBAAoB,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;AAC3D,oBAAoB,IAAI,EAAE,GAAG,CAAC,EAAE;AAChC,wBAAwB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5E,wBAAwB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,wBAAwB,IAAI,CAAC,mBAAmB,EAAE;AAClD;AACA,oBAAoB;AACpB;AACA,gBAAgB,KAAK,KAAK,EAAE;AAC5B,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,wBAAwB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,wBAAwB,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,4BAA4B,IAAI,CAAC,iBAAiB,EAAE;AACpD,4BAA4B,IAAI,GAAG,IAAI;AACvC;AACA;AACA,yBAAyB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3D,wBAAwB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1E,4BAA4B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D;AACA,6BAA6B;AAC7B,4BAA4B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE;AAClE;AACA,wBAAwB,IAAI,CAAC,iBAAiB,EAAE;AAChD,wBAAwB,IAAI,GAAG,IAAI;AACnC;AACA,oBAAoB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACzH,oBAAoB,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;AAC3D,oBAAoB,IAAI,EAAE,GAAG,CAAC,EAAE;AAChC,wBAAwB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5E,wBAAwB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACrD,wBAAwB,IAAI,CAAC,mBAAmB,EAAE;AAClD;AACA,oBAAoB;AACpB;AACA,gBAAgB,KAAK,MAAM,EAAE;AAC7B,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,wBAAwB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,wBAAwB,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,4BAA4B,IAAI,GAAG,IAAI;AACvC;AACA;AACA,yBAAyB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3D,wBAAwB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,wBAAwB,IAAI,MAAM,GAAG,EAAE,EAAE;AACzC,4BAA4B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D;AACA,6BAA6B;AAC7B,4BAA4B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE;AAClE;AACA,wBAAwB,IAAI,GAAG,IAAI;AACnC;AACA,oBAAoB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACzH,oBAAoB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChG,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACjD,oBAAoB,IAAI,CAAC,mBAAmB,EAAE;AAC9C,oBAAoB;AACpB;AACA,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,wBAAwB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACxD,wBAAwB,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,4BAA4B,IAAI,CAAC,iBAAiB,EAAE;AACpD,4BAA4B,IAAI,GAAG,IAAI;AACvC;AACA;AACA,yBAAyB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3D,wBAAwB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,wBAAwB,IAAI,MAAM,GAAG,EAAE,EAAE;AACzC,4BAA4B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D;AACA,6BAA6B;AAC7B,4BAA4B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE;AAClE;AACA,wBAAwB,IAAI,CAAC,iBAAiB,EAAE;AAChD,wBAAwB,IAAI,GAAG,IAAI;AACnC;AACA,oBAAoB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACzH;AACA,oBAAoB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAClG,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACjD,oBAAoB,IAAI,CAAC,mBAAmB,EAAE;AAC9C,oBAAoB;AACpB,gBAAgB;AAChB;AACA,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,MAAM,EAAE;AACxB,gBAAgB;AAChB;AACA;AACA;AACA,QAAQ,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACnC;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,CAAC,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAChC,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,CAAC,EAAE;AACzB;AACA,QAAQ,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjC;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,CAAC,EAAE;AACxB,QAAQ,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAChC;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,CAAC,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAChC,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,IAAI,CAAC,qBAAqB,EAAE;AAC5C,aAAa,EAAE,CAAC,CAAC;AACjB;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAY,WAAW,EAAE,CAAC;AAC1B,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAClC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;AAClC,YAAY;AACZ,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC;AAC9C,QAAQ,MAAM,EAAE,GAAG,gBAAgB;AACnC,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpD,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;AACvG,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACrD,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC;AACA;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAClC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzD,YAAY;AACZ,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpD,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AAChF,QAAQ,MAAM,EAAE,GAAG,gBAAgB;AACnC,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAC7F,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACpE,YAAY,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACxD;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,EAAE,SAAS,EAAE;AAClwE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAC3E,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACpF,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACnF,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACpF,YAAY;AACZ,gBAAgB,OAAO,EAAE,iBAAiB;AAC1C,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvE,gBAAgB,KAAK,EAAE,IAAI;AAC3B,aAAa;AACb,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,ktBAAktB,EAAE,MAAM,EAAE,CAAC,oGAAoG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,8MAA8M,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACvtD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,SAAS,EAAE;AACxW,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACvF,wBAAwB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAChG,wBAAwB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAC/F,wBAAwB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAChG,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACnF,4BAA4B,KAAK,EAAE,IAAI;AACvC,yBAAyB;AACzB,qBAAqB,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,ktBAAktB,EAAE,MAAM,EAAE,CAAC,oGAAoG,CAAC,EAAE;AAC73B,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,qBAAqB,EAAE,CAAC;AACtD,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;AAC5C,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACpC,gBAAgB,IAAI,EAAE,YAAY;AAClC,gBAAgB,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AAC1C,aAAa,CAAC,EAAE,EAAE,CAAC;;ACplBnB,MAAM,SAAS,GAAG,CAAC,wBAAwB,CAAC;AAC5C,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC;AACtD,MAAM,qBAAqB,CAAC;AACnC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AAC/P,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACvK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC;AAC/H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AACvD,oBAAoB,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AAC3C,oBAAoB,SAAS,EAAE,EAAE;AACjC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACpBb;AACA;AACA;;;;"}