@talrace/ngx-noder 0.0.7

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 (515) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/esm2022/lib/+shared/abstract/base-api.service.mjs +99 -0
  4. package/esm2022/lib/+shared/abstract/observer.component.mjs +24 -0
  5. package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +28 -0
  6. package/esm2022/lib/+shared/constants/default-file-name.const.mjs +2 -0
  7. package/esm2022/lib/+shared/constants/paginator-sizes.const.mjs +3 -0
  8. package/esm2022/lib/+shared/editor/core/base/event-emitting.mjs +71 -0
  9. package/esm2022/lib/+shared/editor/core/components/edges/edge-type.enum.mjs +6 -0
  10. package/esm2022/lib/+shared/editor/core/components/edges/edge.component.mjs +100 -0
  11. package/esm2022/lib/+shared/editor/core/components/edges/edges.mjs +104 -0
  12. package/esm2022/lib/+shared/editor/core/constants/alignments.const.mjs +8 -0
  13. package/esm2022/lib/+shared/editor/core/constants/clipboardEventTypes.const.mjs +6 -0
  14. package/esm2022/lib/+shared/editor/core/constants/content-style-change.const.mjs +15 -0
  15. package/esm2022/lib/+shared/editor/core/constants/display-values.const.mjs +8 -0
  16. package/esm2022/lib/+shared/editor/core/constants/document-info.const.mjs +13 -0
  17. package/esm2022/lib/+shared/editor/core/constants/editor-version.const.mjs +2 -0
  18. package/esm2022/lib/+shared/editor/core/constants/editor.const.mjs +62 -0
  19. package/esm2022/lib/+shared/editor/core/constants/unicode-chars.const.mjs +5 -0
  20. package/esm2022/lib/+shared/editor/core/document.mjs +134 -0
  21. package/esm2022/lib/+shared/editor/core/edit.session.mjs +1102 -0
  22. package/esm2022/lib/+shared/editor/core/editor.mjs +1279 -0
  23. package/esm2022/lib/+shared/editor/core/enums/break-types.enum.mjs +7 -0
  24. package/esm2022/lib/+shared/editor/core/enums/hrule.enum.mjs +7 -0
  25. package/esm2022/lib/+shared/editor/core/enums/mouse-button.enum.mjs +7 -0
  26. package/esm2022/lib/+shared/editor/core/enums/numbering-marker-type.enum.mjs +12 -0
  27. package/esm2022/lib/+shared/editor/core/enums/page-type.enum.mjs +7 -0
  28. package/esm2022/lib/+shared/editor/core/enums/vertical-alignment.enum.mjs +11 -0
  29. package/esm2022/lib/+shared/editor/core/helpers/content-style.helper.mjs +156 -0
  30. package/esm2022/lib/+shared/editor/core/helpers/delta.helper.mjs +18 -0
  31. package/esm2022/lib/+shared/editor/core/helpers/dom.helper.mjs +42 -0
  32. package/esm2022/lib/+shared/editor/core/helpers/event.helper.mjs +18 -0
  33. package/esm2022/lib/+shared/editor/core/helpers/font-metrics.helper.mjs +88 -0
  34. package/esm2022/lib/+shared/editor/core/helpers/format-style.helper.mjs +72 -0
  35. package/esm2022/lib/+shared/editor/core/helpers/line-width.helper.mjs +13 -0
  36. package/esm2022/lib/+shared/editor/core/helpers/numbering.helper.mjs +83 -0
  37. package/esm2022/lib/+shared/editor/core/helpers/page.helper.mjs +12 -0
  38. package/esm2022/lib/+shared/editor/core/helpers/paragraph-style.helper.mjs +41 -0
  39. package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +132 -0
  40. package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +191 -0
  41. package/esm2022/lib/+shared/editor/core/helpers/print.rendering.helper.mjs +7 -0
  42. package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +186 -0
  43. package/esm2022/lib/+shared/editor/core/helpers/unicode.helper.mjs +20 -0
  44. package/esm2022/lib/+shared/editor/core/interfaces/cell.interface.mjs +2 -0
  45. package/esm2022/lib/+shared/editor/core/interfaces/cursor-position.interface.mjs +2 -0
  46. package/esm2022/lib/+shared/editor/core/interfaces/font-metric-size.interface.mjs +2 -0
  47. package/esm2022/lib/+shared/editor/core/interfaces/layer.config.mjs +2 -0
  48. package/esm2022/lib/+shared/editor/core/interfaces/paragraph-info.interface.mjs +2 -0
  49. package/esm2022/lib/+shared/editor/core/interfaces/render-changes.interface.mjs +2 -0
  50. package/esm2022/lib/+shared/editor/core/interfaces/replace.interface.mjs +2 -0
  51. package/esm2022/lib/+shared/editor/core/interfaces/search-iteration.interface.mjs +2 -0
  52. package/esm2022/lib/+shared/editor/core/interfaces/toolbar-styles.interface.mjs +2 -0
  53. package/esm2022/lib/+shared/editor/core/interfaces/visible-line-info.interface.mjs +2 -0
  54. package/esm2022/lib/+shared/editor/core/interfaces/visible-range.interface.mjs +2 -0
  55. package/esm2022/lib/+shared/editor/core/keyboard/text-input.mjs +53 -0
  56. package/esm2022/lib/+shared/editor/core/layers/cursor.layer.mjs +103 -0
  57. package/esm2022/lib/+shared/editor/core/layers/edges.layer.mjs +99 -0
  58. package/esm2022/lib/+shared/editor/core/layers/lines.mjs +96 -0
  59. package/esm2022/lib/+shared/editor/core/layers/pages.layer.mjs +106 -0
  60. package/esm2022/lib/+shared/editor/core/layers/print.edges.layer.mjs +7 -0
  61. package/esm2022/lib/+shared/editor/core/layers/print.pages.layer.mjs +7 -0
  62. package/esm2022/lib/+shared/editor/core/layers/print.text.layer.mjs +7 -0
  63. package/esm2022/lib/+shared/editor/core/layers/renderloop.mjs +26 -0
  64. package/esm2022/lib/+shared/editor/core/layers/scrollbar.mjs +100 -0
  65. package/esm2022/lib/+shared/editor/core/layers/selection.layer.mjs +115 -0
  66. package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +124 -0
  67. package/esm2022/lib/+shared/editor/core/models/display-token.model.mjs +12 -0
  68. package/esm2022/lib/+shared/editor/core/models/distance.model.mjs +10 -0
  69. package/esm2022/lib/+shared/editor/core/models/edge-element.model.mjs +9 -0
  70. package/esm2022/lib/+shared/editor/core/models/format-ext.model.mjs +10 -0
  71. package/esm2022/lib/+shared/editor/core/models/indent.model.mjs +9 -0
  72. package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +9 -0
  73. package/esm2022/lib/+shared/editor/core/models/margin.model.mjs +16 -0
  74. package/esm2022/lib/+shared/editor/core/models/numbering-data.model.mjs +9 -0
  75. package/esm2022/lib/+shared/editor/core/models/render-changes.model.mjs +25 -0
  76. package/esm2022/lib/+shared/editor/core/paging/page-vertical-data.model.mjs +9 -0
  77. package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +219 -0
  78. package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +52 -0
  79. package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +34 -0
  80. package/esm2022/lib/+shared/editor/core/point.mjs +13 -0
  81. package/esm2022/lib/+shared/editor/core/print.renderer.mjs +72 -0
  82. package/esm2022/lib/+shared/editor/core/range.mjs +94 -0
  83. package/esm2022/lib/+shared/editor/core/renderer.mjs +217 -0
  84. package/esm2022/lib/+shared/editor/core/search.mjs +231 -0
  85. package/esm2022/lib/+shared/editor/core/virtual.renderer.mjs +356 -0
  86. package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +35 -0
  87. package/esm2022/lib/+shared/editor/custom-components/external-element/external-element.service.mjs +6 -0
  88. package/esm2022/lib/+shared/editor/custom-components/external-element/external-elements.const.mjs +4 -0
  89. package/esm2022/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.mjs +2 -0
  90. package/esm2022/lib/+shared/editor/custom-components/external-element/external.component.mjs +41 -0
  91. package/esm2022/lib/+shared/editor/custom-components/external-element/models/element-data.model.mjs +9 -0
  92. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +10 -0
  93. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.mjs +15 -0
  94. package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +87 -0
  95. package/esm2022/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.mjs +38 -0
  96. package/esm2022/lib/+shared/editor/custom-components/image/interfaces/size.mjs +2 -0
  97. package/esm2022/lib/+shared/editor/custom-components/image/resizer/coordinate.mjs +2 -0
  98. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.mjs +19 -0
  99. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction.enum.mjs +12 -0
  100. package/esm2022/lib/+shared/editor/custom-components/image/resizer/resizer.component.mjs +106 -0
  101. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-delta.mjs +2 -0
  102. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-wrapper.mjs +52 -0
  103. package/esm2022/lib/+shared/editor/custom-components/image/services/image-api.service.mjs +14 -0
  104. package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +57 -0
  105. package/esm2022/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.mjs +3 -0
  106. package/esm2022/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.mjs +43 -0
  107. package/esm2022/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.mjs +2 -0
  108. package/esm2022/lib/+shared/editor/custom-components/shared/services/component/component.service.mjs +64 -0
  109. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +120 -0
  110. package/esm2022/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.mjs +55 -0
  111. package/esm2022/lib/+shared/editor/custom-components/shared/types/custom-content.mjs +2 -0
  112. package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +43 -0
  113. package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +118 -0
  114. package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +95 -0
  115. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +293 -0
  116. package/esm2022/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.mjs +8 -0
  117. package/esm2022/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.mjs +6 -0
  118. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-data.model.mjs +18 -0
  119. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.mjs +9 -0
  120. package/esm2022/lib/+shared/editor/custom-components/table/models/row-data.model.mjs +8 -0
  121. package/esm2022/lib/+shared/editor/custom-components/table/models/selection-range.model.mjs +7 -0
  122. package/esm2022/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.mjs +74 -0
  123. package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +358 -0
  124. package/esm2022/lib/+shared/editor/editor.component.mjs +103 -0
  125. package/esm2022/lib/+shared/editor/editor.module.mjs +85 -0
  126. package/esm2022/lib/+shared/editor/execution/models/cell-session-source.model.mjs +19 -0
  127. package/esm2022/lib/+shared/editor/execution/models/edge-session-source.model.mjs +15 -0
  128. package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +11 -0
  129. package/esm2022/lib/+shared/editor/execution/models/main-session-source.model.mjs +8 -0
  130. package/esm2022/lib/+shared/editor/execution/models/session-source.model.mjs +3 -0
  131. package/esm2022/lib/+shared/editor/execution/models/session.model.mjs +10 -0
  132. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +193 -0
  133. package/esm2022/lib/+shared/editor/helpers/break.helper.mjs +18 -0
  134. package/esm2022/lib/+shared/editor/helpers/content.helper.mjs +30 -0
  135. package/esm2022/lib/+shared/editor/helpers/format.helper.mjs +23 -0
  136. package/esm2022/lib/+shared/editor/helpers/indexed-element.helper.mjs +6 -0
  137. package/esm2022/lib/+shared/editor/helpers/tab.helper.mjs +6 -0
  138. package/esm2022/lib/+shared/editor/interaction/editor.service.mjs +309 -0
  139. package/esm2022/lib/+shared/editor/interaction/input.handler.mjs +160 -0
  140. package/esm2022/lib/+shared/editor/interaction/mouse.handler.mjs +49 -0
  141. package/esm2022/lib/+shared/editor/interfaces/contents.interface.mjs +2 -0
  142. package/esm2022/lib/+shared/editor/interfaces/insert-index.interface.mjs +2 -0
  143. package/esm2022/lib/+shared/editor/operation-history/operation-history.mjs +184 -0
  144. package/esm2022/lib/+shared/editor/operation-history/operation.type.mjs +2 -0
  145. package/esm2022/lib/+shared/editor/operation-history/operations-history-info.model.mjs +7 -0
  146. package/esm2022/lib/+shared/editor/operations/enums/command-type.enum.mjs +31 -0
  147. package/esm2022/lib/+shared/editor/operations/enums/target-type.enum.mjs +7 -0
  148. package/esm2022/lib/+shared/editor/operations/helpers/break-operations.helper.mjs +9 -0
  149. package/esm2022/lib/+shared/editor/operations/helpers/content-operations.helper.mjs +15 -0
  150. package/esm2022/lib/+shared/editor/operations/helpers/format-operations.helper.mjs +56 -0
  151. package/esm2022/lib/+shared/editor/operations/helpers/image-operations.helper.mjs +19 -0
  152. package/esm2022/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.mjs +43 -0
  153. package/esm2022/lib/+shared/editor/operations/helpers/link-operations.helper.mjs +28 -0
  154. package/esm2022/lib/+shared/editor/operations/helpers/numbering-operations.helper.mjs +55 -0
  155. package/esm2022/lib/+shared/editor/operations/helpers/operations-helper.helper.mjs +394 -0
  156. package/esm2022/lib/+shared/editor/operations/helpers/paragraph-operations.helper.mjs +83 -0
  157. package/esm2022/lib/+shared/editor/operations/helpers/save-commands.helper.mjs +118 -0
  158. package/esm2022/lib/+shared/editor/operations/helpers/tab-operations.helper.mjs +16 -0
  159. package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +371 -0
  160. package/esm2022/lib/+shared/editor/operations/helpers/target-operations.helper.mjs +23 -0
  161. package/esm2022/lib/+shared/editor/positioning/selection.mjs +307 -0
  162. package/esm2022/lib/+shared/editor/store/editor.actions.mjs +13 -0
  163. package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +314 -0
  164. package/esm2022/lib/+shared/editor-search/editor-search-dialog.component.mjs +71 -0
  165. package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +32 -0
  166. package/esm2022/lib/+shared/editor-toolbar/constants/numbering-templates.const.mjs +1148 -0
  167. package/esm2022/lib/+shared/editor-toolbar/constants/svg-icons.const.mjs +157 -0
  168. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +115 -0
  169. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +107 -0
  170. package/esm2022/lib/+shared/editor-toolbar/enums/alignment.enum.mjs +8 -0
  171. package/esm2022/lib/+shared/editor-toolbar/enums/numbering-template-type.enum.mjs +16 -0
  172. package/esm2022/lib/+shared/editor-toolbar/enums/numbering-type.enum.mjs +6 -0
  173. package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +45 -0
  174. package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +85 -0
  175. package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +80 -0
  176. package/esm2022/lib/+shared/editor-toolbar/format/format.component.mjs +28 -0
  177. package/esm2022/lib/+shared/editor-toolbar/heading/heading.component.mjs +23 -0
  178. package/esm2022/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.mjs +55 -0
  179. package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +53 -0
  180. package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +18 -0
  181. package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +27 -0
  182. package/esm2022/lib/+shared/editor-toolbar/zoom/zoom.component.mjs +74 -0
  183. package/esm2022/lib/+shared/enums/mode.enum.mjs +7 -0
  184. package/esm2022/lib/+shared/helpers/print.helper.mjs +40 -0
  185. package/esm2022/lib/+shared/insert-table/insert-table.component.mjs +54 -0
  186. package/esm2022/lib/+shared/services/commands.service.mjs +20 -0
  187. package/esm2022/lib/+shared/services/custom-icon.service.mjs +34 -0
  188. package/esm2022/lib/models/generated/add-numbering.model.mjs +8 -0
  189. package/esm2022/lib/models/generated/apply-element-style.model.mjs +8 -0
  190. package/esm2022/lib/models/generated/apply-image-style.model.mjs +8 -0
  191. package/esm2022/lib/models/generated/apply-paragraph-style.model.mjs +12 -0
  192. package/esm2022/lib/models/generated/apply-text-style.model.mjs +12 -0
  193. package/esm2022/lib/models/generated/borders-style.model.mjs +8 -0
  194. package/esm2022/lib/models/generated/break.model.mjs +8 -0
  195. package/esm2022/lib/models/generated/cell.model.mjs +12 -0
  196. package/esm2022/lib/models/generated/column-section.model.mjs +8 -0
  197. package/esm2022/lib/models/generated/column.model.mjs +8 -0
  198. package/esm2022/lib/models/generated/command.model.mjs +116 -0
  199. package/esm2022/lib/models/generated/delete.model.mjs +8 -0
  200. package/esm2022/lib/models/generated/document-name.model.mjs +8 -0
  201. package/esm2022/lib/models/generated/document.model.mjs +8 -0
  202. package/esm2022/lib/models/generated/docx.model.mjs +12 -0
  203. package/esm2022/lib/models/generated/edge-target.model.mjs +8 -0
  204. package/esm2022/lib/models/generated/edge.model.mjs +8 -0
  205. package/esm2022/lib/models/generated/element.model.mjs +8 -0
  206. package/esm2022/lib/models/generated/file-source.model.mjs +8 -0
  207. package/esm2022/lib/models/generated/format.model.mjs +12 -0
  208. package/esm2022/lib/models/generated/heading.model.mjs +16 -0
  209. package/esm2022/lib/models/generated/image-data.model.mjs +8 -0
  210. package/esm2022/lib/models/generated/image.model.mjs +12 -0
  211. package/esm2022/lib/models/generated/insert-break.model.mjs +8 -0
  212. package/esm2022/lib/models/generated/insert-element.model.mjs +12 -0
  213. package/esm2022/lib/models/generated/insert-image.model.mjs +12 -0
  214. package/esm2022/lib/models/generated/insert-link.model.mjs +12 -0
  215. package/esm2022/lib/models/generated/insert-styled-text.model.mjs +12 -0
  216. package/esm2022/lib/models/generated/insert-tab.model.mjs +8 -0
  217. package/esm2022/lib/models/generated/insert-table-columns.model.mjs +8 -0
  218. package/esm2022/lib/models/generated/insert-table-rows.model.mjs +8 -0
  219. package/esm2022/lib/models/generated/insert-table.model.mjs +8 -0
  220. package/esm2022/lib/models/generated/insert-text.model.mjs +8 -0
  221. package/esm2022/lib/models/generated/last-document-revision.model.mjs +12 -0
  222. package/esm2022/lib/models/generated/link-data.model.mjs +8 -0
  223. package/esm2022/lib/models/generated/link.model.mjs +8 -0
  224. package/esm2022/lib/models/generated/margins.model.mjs +8 -0
  225. package/esm2022/lib/models/generated/numbering-level.model.mjs +12 -0
  226. package/esm2022/lib/models/generated/numbering.model.mjs +8 -0
  227. package/esm2022/lib/models/generated/operation.model.mjs +12 -0
  228. package/esm2022/lib/models/generated/page-numbers.model.mjs +8 -0
  229. package/esm2022/lib/models/generated/paragraph-style.model.mjs +8 -0
  230. package/esm2022/lib/models/generated/paragraph.model.mjs +12 -0
  231. package/esm2022/lib/models/generated/remove-numberings.model.mjs +8 -0
  232. package/esm2022/lib/models/generated/remove-table-columns.model.mjs +8 -0
  233. package/esm2022/lib/models/generated/remove-table-rows.model.mjs +8 -0
  234. package/esm2022/lib/models/generated/replace-by-text.model.mjs +8 -0
  235. package/esm2022/lib/models/generated/replace.model.mjs +40 -0
  236. package/esm2022/lib/models/generated/resize-table-columns.model.mjs +8 -0
  237. package/esm2022/lib/models/generated/restore-numberings.model.mjs +8 -0
  238. package/esm2022/lib/models/generated/restore-paragraph-styles.model.mjs +8 -0
  239. package/esm2022/lib/models/generated/restore-table.model.mjs +12 -0
  240. package/esm2022/lib/models/generated/restore-text-styles.model.mjs +8 -0
  241. package/esm2022/lib/models/generated/restore.model.mjs +8 -0
  242. package/esm2022/lib/models/generated/revision.model.mjs +12 -0
  243. package/esm2022/lib/models/generated/row.model.mjs +8 -0
  244. package/esm2022/lib/models/generated/tab.model.mjs +8 -0
  245. package/esm2022/lib/models/generated/table-cell.model.mjs +8 -0
  246. package/esm2022/lib/models/generated/table.model.mjs +12 -0
  247. package/esm2022/lib/models/generated/target.model.mjs +16 -0
  248. package/esm2022/lib/models/generated/text-style.model.mjs +8 -0
  249. package/esm2022/public-api.mjs +43 -0
  250. package/esm2022/talrace-ngx-noder.mjs +5 -0
  251. package/fesm2022/talrace-ngx-noder.mjs +13736 -0
  252. package/fesm2022/talrace-ngx-noder.mjs.map +1 -0
  253. package/index.d.ts +5 -0
  254. package/lib/+shared/abstract/base-api.service.d.ts +23 -0
  255. package/lib/+shared/abstract/observer.component.d.ts +10 -0
  256. package/lib/+shared/confirm-dialog/confirm-dialog.component.d.ts +16 -0
  257. package/lib/+shared/constants/default-file-name.const.d.ts +1 -0
  258. package/lib/+shared/constants/paginator-sizes.const.d.ts +2 -0
  259. package/lib/+shared/editor/core/base/event-emitting.d.ts +17 -0
  260. package/lib/+shared/editor/core/components/edges/edge-type.enum.d.ts +4 -0
  261. package/lib/+shared/editor/core/components/edges/edge.component.d.ts +45 -0
  262. package/lib/+shared/editor/core/components/edges/edges.d.ts +26 -0
  263. package/lib/+shared/editor/core/constants/alignments.const.d.ts +7 -0
  264. package/lib/+shared/editor/core/constants/clipboardEventTypes.const.d.ts +5 -0
  265. package/lib/+shared/editor/core/constants/content-style-change.const.d.ts +14 -0
  266. package/lib/+shared/editor/core/constants/display-values.const.d.ts +7 -0
  267. package/lib/+shared/editor/core/constants/document-info.const.d.ts +12 -0
  268. package/lib/+shared/editor/core/constants/editor-version.const.d.ts +1 -0
  269. package/lib/+shared/editor/core/constants/editor.const.d.ts +16 -0
  270. package/lib/+shared/editor/core/constants/unicode-chars.const.d.ts +1 -0
  271. package/lib/+shared/editor/core/document.d.ts +56 -0
  272. package/lib/+shared/editor/core/edit.session.d.ts +159 -0
  273. package/lib/+shared/editor/core/editor.d.ts +206 -0
  274. package/lib/+shared/editor/core/enums/break-types.enum.d.ts +5 -0
  275. package/lib/+shared/editor/core/enums/hrule.enum.d.ts +5 -0
  276. package/lib/+shared/editor/core/enums/mouse-button.enum.d.ts +5 -0
  277. package/lib/+shared/editor/core/enums/numbering-marker-type.enum.d.ts +10 -0
  278. package/lib/+shared/editor/core/enums/page-type.enum.d.ts +5 -0
  279. package/lib/+shared/editor/core/enums/vertical-alignment.enum.d.ts +9 -0
  280. package/lib/+shared/editor/core/helpers/content-style.helper.d.ts +16 -0
  281. package/lib/+shared/editor/core/helpers/delta.helper.d.ts +6 -0
  282. package/lib/+shared/editor/core/helpers/dom.helper.d.ts +10 -0
  283. package/lib/+shared/editor/core/helpers/event.helper.d.ts +4 -0
  284. package/lib/+shared/editor/core/helpers/font-metrics.helper.d.ts +32 -0
  285. package/lib/+shared/editor/core/helpers/format-style.helper.d.ts +11 -0
  286. package/lib/+shared/editor/core/helpers/line-width.helper.d.ts +5 -0
  287. package/lib/+shared/editor/core/helpers/numbering.helper.d.ts +19 -0
  288. package/lib/+shared/editor/core/helpers/page.helper.d.ts +4 -0
  289. package/lib/+shared/editor/core/helpers/paragraph-style.helper.d.ts +6 -0
  290. package/lib/+shared/editor/core/helpers/paragraph.helper.d.ts +27 -0
  291. package/lib/+shared/editor/core/helpers/position.helper.d.ts +34 -0
  292. package/lib/+shared/editor/core/helpers/print.rendering.helper.d.ts +6 -0
  293. package/lib/+shared/editor/core/helpers/rendering.helper.d.ts +26 -0
  294. package/lib/+shared/editor/core/helpers/unicode.helper.d.ts +4 -0
  295. package/lib/+shared/editor/core/interfaces/cell.interface.d.ts +5 -0
  296. package/lib/+shared/editor/core/interfaces/cursor-position.interface.d.ts +11 -0
  297. package/lib/+shared/editor/core/interfaces/font-metric-size.interface.d.ts +11 -0
  298. package/lib/+shared/editor/core/interfaces/layer.config.d.ts +13 -0
  299. package/lib/+shared/editor/core/interfaces/paragraph-info.interface.d.ts +7 -0
  300. package/lib/+shared/editor/core/interfaces/render-changes.interface.d.ts +10 -0
  301. package/lib/+shared/editor/core/interfaces/replace.interface.d.ts +4 -0
  302. package/lib/+shared/editor/core/interfaces/search-iteration.interface.d.ts +4 -0
  303. package/lib/+shared/editor/core/interfaces/toolbar-styles.interface.d.ts +18 -0
  304. package/lib/+shared/editor/core/interfaces/visible-line-info.interface.d.ts +5 -0
  305. package/lib/+shared/editor/core/interfaces/visible-range.interface.d.ts +11 -0
  306. package/lib/+shared/editor/core/keyboard/text-input.d.ts +10 -0
  307. package/lib/+shared/editor/core/layers/cursor.layer.d.ts +24 -0
  308. package/lib/+shared/editor/core/layers/edges.layer.d.ts +24 -0
  309. package/lib/+shared/editor/core/layers/lines.d.ts +21 -0
  310. package/lib/+shared/editor/core/layers/pages.layer.d.ts +27 -0
  311. package/lib/+shared/editor/core/layers/print.edges.layer.d.ts +4 -0
  312. package/lib/+shared/editor/core/layers/print.pages.layer.d.ts +4 -0
  313. package/lib/+shared/editor/core/layers/print.text.layer.d.ts +5 -0
  314. package/lib/+shared/editor/core/layers/renderloop.d.ts +8 -0
  315. package/lib/+shared/editor/core/layers/scrollbar.d.ts +41 -0
  316. package/lib/+shared/editor/core/layers/selection.layer.d.ts +19 -0
  317. package/lib/+shared/editor/core/layers/text.layer.d.ts +22 -0
  318. package/lib/+shared/editor/core/models/display-token.model.d.ts +27 -0
  319. package/lib/+shared/editor/core/models/distance.model.d.ts +6 -0
  320. package/lib/+shared/editor/core/models/edge-element.model.d.ts +7 -0
  321. package/lib/+shared/editor/core/models/format-ext.model.d.ts +5 -0
  322. package/lib/+shared/editor/core/models/indent.model.d.ts +7 -0
  323. package/lib/+shared/editor/core/models/line-info.model.d.ts +14 -0
  324. package/lib/+shared/editor/core/models/margin.model.d.ts +9 -0
  325. package/lib/+shared/editor/core/models/numbering-data.model.d.ts +11 -0
  326. package/lib/+shared/editor/core/models/render-changes.model.d.ts +14 -0
  327. package/lib/+shared/editor/core/paging/page-vertical-data.model.d.ts +8 -0
  328. package/lib/+shared/editor/core/paging/pages.wrap.d.ts +41 -0
  329. package/lib/+shared/editor/core/paging/paragraph.d.ts +44 -0
  330. package/lib/+shared/editor/core/paging/text-line-info.d.ts +17 -0
  331. package/lib/+shared/editor/core/point.d.ts +7 -0
  332. package/lib/+shared/editor/core/print.renderer.d.ts +25 -0
  333. package/lib/+shared/editor/core/range.d.ts +32 -0
  334. package/lib/+shared/editor/core/renderer.d.ts +60 -0
  335. package/lib/+shared/editor/core/search.d.ts +32 -0
  336. package/lib/+shared/editor/core/virtual.renderer.d.ts +93 -0
  337. package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +14 -0
  338. package/lib/+shared/editor/custom-components/external-element/external-element.service.d.ts +7 -0
  339. package/lib/+shared/editor/custom-components/external-element/external-elements.const.d.ts +5 -0
  340. package/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.d.ts +5 -0
  341. package/lib/+shared/editor/custom-components/external-element/external.component.d.ts +17 -0
  342. package/lib/+shared/editor/custom-components/external-element/models/element-data.model.d.ts +7 -0
  343. package/lib/+shared/editor/custom-components/external-element/models/external-element.model.d.ts +20 -0
  344. package/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.d.ts +7 -0
  345. package/lib/+shared/editor/custom-components/image/components/image.component.d.ts +31 -0
  346. package/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.d.ts +13 -0
  347. package/lib/+shared/editor/custom-components/image/interfaces/size.d.ts +4 -0
  348. package/lib/+shared/editor/custom-components/image/resizer/coordinate.d.ts +4 -0
  349. package/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.d.ts +9 -0
  350. package/lib/+shared/editor/custom-components/image/resizer/direction.enum.d.ts +10 -0
  351. package/lib/+shared/editor/custom-components/image/resizer/resizer.component.d.ts +26 -0
  352. package/lib/+shared/editor/custom-components/image/resizer/size-delta.d.ts +4 -0
  353. package/lib/+shared/editor/custom-components/image/resizer/size-wrapper.d.ts +19 -0
  354. package/lib/+shared/editor/custom-components/image/services/image-api.service.d.ts +8 -0
  355. package/lib/+shared/editor/custom-components/shared/abstract/base.component.d.ts +24 -0
  356. package/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.d.ts +2 -0
  357. package/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.d.ts +8 -0
  358. package/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.d.ts +13 -0
  359. package/lib/+shared/editor/custom-components/shared/services/component/component.service.d.ts +21 -0
  360. package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +30 -0
  361. package/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.d.ts +18 -0
  362. package/lib/+shared/editor/custom-components/shared/types/custom-content.d.ts +5 -0
  363. package/lib/+shared/editor/custom-components/tab/tab.component.d.ts +15 -0
  364. package/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.d.ts +31 -0
  365. package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +45 -0
  366. package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +55 -0
  367. package/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.d.ts +6 -0
  368. package/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.d.ts +4 -0
  369. package/lib/+shared/editor/custom-components/table/models/cell-data.model.d.ts +11 -0
  370. package/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.d.ts +9 -0
  371. package/lib/+shared/editor/custom-components/table/models/row-data.model.d.ts +7 -0
  372. package/lib/+shared/editor/custom-components/table/models/selection-range.model.d.ts +17 -0
  373. package/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.d.ts +37 -0
  374. package/lib/+shared/editor/custom-components/table/selection/table-selection.d.ts +74 -0
  375. package/lib/+shared/editor/editor.component.d.ts +43 -0
  376. package/lib/+shared/editor/editor.module.d.ts +30 -0
  377. package/lib/+shared/editor/execution/models/cell-session-source.model.d.ts +11 -0
  378. package/lib/+shared/editor/execution/models/edge-session-source.model.d.ts +11 -0
  379. package/lib/+shared/editor/execution/models/general-properties.model.d.ts +7 -0
  380. package/lib/+shared/editor/execution/models/main-session-source.model.d.ts +5 -0
  381. package/lib/+shared/editor/execution/models/session-source.model.d.ts +5 -0
  382. package/lib/+shared/editor/execution/models/session.model.d.ts +12 -0
  383. package/lib/+shared/editor/execution/regulator.service.d.ts +45 -0
  384. package/lib/+shared/editor/helpers/break.helper.d.ts +7 -0
  385. package/lib/+shared/editor/helpers/content.helper.d.ts +9 -0
  386. package/lib/+shared/editor/helpers/format.helper.d.ts +4 -0
  387. package/lib/+shared/editor/helpers/indexed-element.helper.d.ts +4 -0
  388. package/lib/+shared/editor/helpers/tab.helper.d.ts +3 -0
  389. package/lib/+shared/editor/interaction/editor.service.d.ts +194 -0
  390. package/lib/+shared/editor/interaction/input.handler.d.ts +25 -0
  391. package/lib/+shared/editor/interaction/mouse.handler.d.ts +14 -0
  392. package/lib/+shared/editor/interfaces/contents.interface.d.ts +22 -0
  393. package/lib/+shared/editor/interfaces/insert-index.interface.d.ts +3 -0
  394. package/lib/+shared/editor/operation-history/operation-history.d.ts +65 -0
  395. package/lib/+shared/editor/operation-history/operation.type.d.ts +24 -0
  396. package/lib/+shared/editor/operation-history/operations-history-info.model.d.ts +5 -0
  397. package/lib/+shared/editor/operations/enums/command-type.enum.d.ts +29 -0
  398. package/lib/+shared/editor/operations/enums/target-type.enum.d.ts +5 -0
  399. package/lib/+shared/editor/operations/helpers/break-operations.helper.d.ts +5 -0
  400. package/lib/+shared/editor/operations/helpers/content-operations.helper.d.ts +5 -0
  401. package/lib/+shared/editor/operations/helpers/format-operations.helper.d.ts +11 -0
  402. package/lib/+shared/editor/operations/helpers/image-operations.helper.d.ts +7 -0
  403. package/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.d.ts +8 -0
  404. package/lib/+shared/editor/operations/helpers/link-operations.helper.d.ts +6 -0
  405. package/lib/+shared/editor/operations/helpers/numbering-operations.helper.d.ts +11 -0
  406. package/lib/+shared/editor/operations/helpers/operations-helper.helper.d.ts +52 -0
  407. package/lib/+shared/editor/operations/helpers/paragraph-operations.helper.d.ts +13 -0
  408. package/lib/+shared/editor/operations/helpers/save-commands.helper.d.ts +43 -0
  409. package/lib/+shared/editor/operations/helpers/tab-operations.helper.d.ts +4 -0
  410. package/lib/+shared/editor/operations/helpers/table-operations.helper.d.ts +30 -0
  411. package/lib/+shared/editor/operations/helpers/target-operations.helper.d.ts +6 -0
  412. package/lib/+shared/editor/positioning/selection.d.ts +50 -0
  413. package/lib/+shared/editor/store/editor.actions.d.ts +11 -0
  414. package/lib/+shared/editor-header/editor-header.component.d.ts +101 -0
  415. package/lib/+shared/editor-search/editor-search-dialog.component.d.ts +24 -0
  416. package/lib/+shared/editor-toolbar/color-picker/color-picker.component.d.ts +12 -0
  417. package/lib/+shared/editor-toolbar/constants/numbering-templates.const.d.ts +6 -0
  418. package/lib/+shared/editor-toolbar/constants/svg-icons.const.d.ts +12 -0
  419. package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +44 -0
  420. package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +28 -0
  421. package/lib/+shared/editor-toolbar/enums/alignment.enum.d.ts +6 -0
  422. package/lib/+shared/editor-toolbar/enums/numbering-template-type.enum.d.ts +14 -0
  423. package/lib/+shared/editor-toolbar/enums/numbering-type.enum.d.ts +4 -0
  424. package/lib/+shared/editor-toolbar/font/font.component.d.ts +13 -0
  425. package/lib/+shared/editor-toolbar/font-size/font-size.component.d.ts +24 -0
  426. package/lib/+shared/editor-toolbar/font-style/font-style.component.d.ts +24 -0
  427. package/lib/+shared/editor-toolbar/format/format.component.d.ts +12 -0
  428. package/lib/+shared/editor-toolbar/heading/heading.component.d.ts +8 -0
  429. package/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.d.ts +6 -0
  430. package/lib/+shared/editor-toolbar/numbering/numbering.component.d.ts +18 -0
  431. package/lib/+shared/editor-toolbar/print/print.component.d.ts +7 -0
  432. package/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.d.ts +10 -0
  433. package/lib/+shared/editor-toolbar/zoom/zoom.component.d.ts +22 -0
  434. package/lib/+shared/enums/mode.enum.d.ts +5 -0
  435. package/lib/+shared/helpers/print.helper.d.ts +9 -0
  436. package/lib/+shared/insert-table/insert-table.component.d.ts +21 -0
  437. package/lib/+shared/services/commands.service.d.ts +10 -0
  438. package/lib/+shared/services/custom-icon.service.d.ts +11 -0
  439. package/lib/models/generated/add-numbering.model.d.ts +7 -0
  440. package/lib/models/generated/apply-element-style.model.d.ts +6 -0
  441. package/lib/models/generated/apply-image-style.model.d.ts +6 -0
  442. package/lib/models/generated/apply-paragraph-style.model.d.ts +7 -0
  443. package/lib/models/generated/apply-text-style.model.d.ts +7 -0
  444. package/lib/models/generated/borders-style.model.d.ts +8 -0
  445. package/lib/models/generated/break.model.d.ts +5 -0
  446. package/lib/models/generated/cell.model.d.ts +32 -0
  447. package/lib/models/generated/column-section.model.d.ts +7 -0
  448. package/lib/models/generated/column.model.d.ts +5 -0
  449. package/lib/models/generated/command.model.d.ts +60 -0
  450. package/lib/models/generated/delete.model.d.ts +5 -0
  451. package/lib/models/generated/document-name.model.d.ts +5 -0
  452. package/lib/models/generated/document.model.d.ts +7 -0
  453. package/lib/models/generated/docx.model.d.ts +43 -0
  454. package/lib/models/generated/edge-target.model.d.ts +5 -0
  455. package/lib/models/generated/edge.model.d.ts +24 -0
  456. package/lib/models/generated/element.model.d.ts +9 -0
  457. package/lib/models/generated/file-source.model.d.ts +4 -0
  458. package/lib/models/generated/format.model.d.ts +7 -0
  459. package/lib/models/generated/heading.model.d.ts +12 -0
  460. package/lib/models/generated/image-data.model.d.ts +6 -0
  461. package/lib/models/generated/image.model.d.ts +31 -0
  462. package/lib/models/generated/insert-break.model.d.ts +6 -0
  463. package/lib/models/generated/insert-element.model.d.ts +5 -0
  464. package/lib/models/generated/insert-image.model.d.ts +6 -0
  465. package/lib/models/generated/insert-link.model.d.ts +7 -0
  466. package/lib/models/generated/insert-styled-text.model.d.ts +7 -0
  467. package/lib/models/generated/insert-tab.model.d.ts +4 -0
  468. package/lib/models/generated/insert-table-columns.model.d.ts +7 -0
  469. package/lib/models/generated/insert-table-rows.model.d.ts +7 -0
  470. package/lib/models/generated/insert-table.model.d.ts +8 -0
  471. package/lib/models/generated/insert-text.model.d.ts +5 -0
  472. package/lib/models/generated/last-document-revision.model.d.ts +9 -0
  473. package/lib/models/generated/link-data.model.d.ts +5 -0
  474. package/lib/models/generated/link.model.d.ts +7 -0
  475. package/lib/models/generated/margins.model.d.ts +7 -0
  476. package/lib/models/generated/numbering-level.model.d.ts +14 -0
  477. package/lib/models/generated/numbering.model.d.ts +7 -0
  478. package/lib/models/generated/operation.model.d.ts +8 -0
  479. package/lib/models/generated/page-numbers.model.d.ts +8 -0
  480. package/lib/models/generated/paragraph-style.model.d.ts +18 -0
  481. package/lib/models/generated/paragraph.model.d.ts +6 -0
  482. package/lib/models/generated/remove-numberings.model.d.ts +5 -0
  483. package/lib/models/generated/remove-table-columns.model.d.ts +6 -0
  484. package/lib/models/generated/remove-table-rows.model.d.ts +6 -0
  485. package/lib/models/generated/replace-by-text.model.d.ts +6 -0
  486. package/lib/models/generated/replace.model.d.ts +19 -0
  487. package/lib/models/generated/resize-table-columns.model.d.ts +9 -0
  488. package/lib/models/generated/restore-numberings.model.d.ts +7 -0
  489. package/lib/models/generated/restore-paragraph-styles.model.d.ts +5 -0
  490. package/lib/models/generated/restore-table.model.d.ts +6 -0
  491. package/lib/models/generated/restore-text-styles.model.d.ts +5 -0
  492. package/lib/models/generated/restore.model.d.ts +22 -0
  493. package/lib/models/generated/revision.model.d.ts +9 -0
  494. package/lib/models/generated/row.model.d.ts +9 -0
  495. package/lib/models/generated/tab.model.d.ts +6 -0
  496. package/lib/models/generated/table-cell.model.d.ts +6 -0
  497. package/lib/models/generated/table.model.d.ts +18 -0
  498. package/lib/models/generated/target.model.d.ts +9 -0
  499. package/lib/models/generated/text-style.model.d.ts +14 -0
  500. package/package.json +35 -0
  501. package/public-api.d.ts +42 -0
  502. package/src/_ngx-noder.theme.scss +22 -0
  503. package/src/assets/fonts/nc-iconfont.css +333 -0
  504. package/src/assets/fonts/nc-iconfont.eot +0 -0
  505. package/src/assets/fonts/nc-iconfont.svg +110 -0
  506. package/src/assets/fonts/nc-iconfont.ttf +0 -0
  507. package/src/assets/fonts/nc-iconfont.woff +0 -0
  508. package/src/lib/+shared/add-link-dialog/_add-link-dialog.theme.scss +21 -0
  509. package/src/lib/+shared/editor/_editor.theme.scss +35 -0
  510. package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +10 -0
  511. package/src/lib/+shared/editor-header/_editor-header.theme.scss +106 -0
  512. package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +33 -0
  513. package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +29 -0
  514. package/src/lib/+shared/insert-table/_insert-table.theme.scss +22 -0
  515. package/src/styles.scss +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"talrace-ngx-noder.mjs","sources":["../../../projects/ngx-noder/src/lib/+shared/constants/default-file-name.const.ts","../../../projects/ngx-noder/src/lib/+shared/constants/paginator-sizes.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/document-info.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/alignments.const.ts","../../../projects/ngx-noder/src/lib/models/generated/paragraph-style.model.ts","../../../projects/ngx-noder/src/lib/models/generated/text-style.model.ts","../../../projects/ngx-noder/src/lib/models/generated/heading.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/enums/vertical-alignment.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/editor.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/enums/break-types.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/enums/page-type.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/dom.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/format-style.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/models/element-data.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/models/external-element.model.ts","../../../projects/ngx-noder/src/lib/+shared/abstract/observer.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/shared/abstract/base.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operation-history/operations-history-info.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/interaction/editor.service.ts","../../../projects/ngx-noder/src/lib/models/generated/element.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/external.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/external-element.service.ts","../../../projects/ngx-noder/src/lib/+shared/abstract/base-api.service.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/services/image-api.service.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/enums/command-type.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/store/editor.actions.ts","../../../projects/ngx-noder/src/lib/models/generated/page-numbers.model.ts","../../../projects/ngx-noder/src/lib/models/generated/docx.model.ts","../../../projects/ngx-noder/src/lib/models/generated/add-numbering.model.ts","../../../projects/ngx-noder/src/lib/models/generated/apply-element-style.model.ts","../../../projects/ngx-noder/src/lib/models/generated/apply-image-style.model.ts","../../../projects/ngx-noder/src/lib/models/generated/apply-paragraph-style.model.ts","../../../projects/ngx-noder/src/lib/models/generated/apply-text-style.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/helpers/break.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/break.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/clipboardEventTypes.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/point.ts","../../../projects/ngx-noder/src/lib/+shared/editor/helpers/content.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/delete.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/components/edges/edge-type.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/base/event-emitting.ts","../../../projects/ngx-noder/src/lib/models/generated/format.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/helpers/format.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/borders-style.model.ts","../../../projects/ngx-noder/src/lib/models/generated/image.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/helpers/indexed-element.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/interaction/input.handler.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-break.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-element.model.ts","../../../projects/ngx-noder/src/lib/models/generated/image-data.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-image.model.ts","../../../projects/ngx-noder/src/lib/models/generated/link-data.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-link.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-styled-text.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-table-columns.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-table.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-table-rows.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-tab.model.ts","../../../projects/ngx-noder/src/lib/models/generated/insert-text.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/margin.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/enums/mouse-button.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/interaction/mouse.handler.ts","../../../projects/ngx-noder/src/lib/models/generated/remove-numberings.model.ts","../../../projects/ngx-noder/src/lib/models/generated/remove-table-columns.model.ts","../../../projects/ngx-noder/src/lib/models/generated/remove-table-rows.model.ts","../../../projects/ngx-noder/src/lib/models/generated/resize-table-columns.model.ts","../../../projects/ngx-noder/src/lib/models/generated/restore-numberings.model.ts","../../../projects/ngx-noder/src/lib/models/generated/restore-paragraph-styles.model.ts","../../../projects/ngx-noder/src/lib/models/generated/margins.model.ts","../../../projects/ngx-noder/src/lib/models/generated/table.model.ts","../../../projects/ngx-noder/src/lib/models/generated/restore-table.model.ts","../../../projects/ngx-noder/src/lib/models/generated/restore-text-styles.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operation-history/operation-history.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/page.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/paragraph.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/display-values.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/line-width.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/position.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/distance.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/edge-element.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/content-style-change.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/content-style.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/format-ext.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/rendering.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/edges.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/print.edges.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/pages.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/print.pages.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/print.rendering.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/lines.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/paragraph.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/text.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/print.text.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/print.renderer.ts","../../../projects/ngx-noder/src/lib/+shared/helpers/print.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/range.ts","../../../projects/ngx-noder/src/lib/models/generated/replace.model.ts","../../../projects/ngx-noder/src/lib/models/generated/restore.model.ts","../../../projects/ngx-noder/src/lib/models/generated/replace-by-text.model.ts","../../../projects/ngx-noder/src/lib/models/generated/command.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/save-commands.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/search.ts","../../../projects/ngx-noder/src/lib/+shared/editor/positioning/selection.ts","../../../projects/ngx-noder/src/lib/models/generated/tab.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/keyboard/text-input.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/editor.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/editor-version.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/external-elements.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/font-metrics.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/shared/services/component/component.service.ts","../../../projects/ngx-noder/src/lib/models/generated/table-cell.model.ts","../../../projects/ngx-noder/src/lib/models/generated/edge-target.model.ts","../../../projects/ngx-noder/src/lib/models/generated/target.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/enums/target-type.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/execution/models/cell-session-source.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/delta.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/document.ts","../../../projects/ngx-noder/src/lib/+shared/editor/execution/models/edge-session-source.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/display-token.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/indent.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/line-info.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/resizer/direction.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/resizer/size-wrapper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/resizer/resizer.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/resizer/resizer.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/components/image.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/image/components/image.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/tab/tab.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/tab/tab.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/models/cell-data.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/enums/hrule.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/components/table-cell.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/components/table-cell.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/models/row-data.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/models/selection-range.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/selection/table-selection.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/table/components/table.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/numbering-data.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/helpers/tab.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/numbering.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/enums/numbering-marker-type.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/break-operations.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/cell.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/content-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/format-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/image-operations.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/link.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/link-operations.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/numbering.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/numbering-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/paragraph-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/tab-operations.helper.ts","../../../projects/ngx-noder/src/lib/models/generated/column.model.ts","../../../projects/ngx-noder/src/lib/models/generated/row.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/table-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/target-operations.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/operations/helpers/operations-helper.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/paging/page-vertical-data.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/paging/text-line-info.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/paging/paragraph.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/paging/pages.wrap.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/paragraph-style.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/constants/unicode-chars.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/unicode.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/edit.session.ts","../../../projects/ngx-noder/src/lib/+shared/editor/execution/models/general-properties.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/execution/models/main-session-source.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/cursor.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/models/render-changes.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/helpers/event.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/renderloop.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/selection.layer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/renderer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/execution/models/session.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/layers/scrollbar.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/virtual.renderer.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/components/edges/edge.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/core/components/edges/edge.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/core/components/edges/edges.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.ts","../../../projects/ngx-noder/src/lib/+shared/editor/execution/regulator.service.ts","../../../projects/ngx-noder/src/lib/+shared/services/commands.service.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/editor.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor/editor.component.html","../../../projects/ngx-noder/src/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor/editor.module.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/enums/alignment.enum.ts","../../../projects/ngx-noder/src/lib/+shared/insert-table/insert-table.component.ts","../../../projects/ngx-noder/src/lib/+shared/insert-table/insert-table.component.html","../../../projects/ngx-noder/src/lib/+shared/enums/mode.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/enums/numbering-template-type.enum.ts","../../../projects/ngx-noder/src/lib/models/generated/numbering-level.model.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/constants/numbering-templates.const.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/enums/numbering-type.enum.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/constants/svg-icons.const.ts","../../../projects/ngx-noder/src/lib/+shared/services/custom-icon.service.ts","../../../projects/ngx-noder/src/lib/+shared/editor-header/editor-header.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-header/editor-header.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-search/editor-search-dialog.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-search/editor-search-dialog.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/font/font.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/font/font.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/font-size/font-size.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/font-size/font-size.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/color-picker/color-picker.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/color-picker/color-picker.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/font-style/font-style.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/font-style/font-style.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/format/format.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/format/format.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/numbering/numbering.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/numbering/numbering.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/print/print.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/print/print.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/editor-toolbar.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/editor-toolbar.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/heading/heading.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/heading/heading.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/zoom/zoom.component.ts","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/zoom/zoom.component.html","../../../projects/ngx-noder/src/lib/+shared/editor-toolbar/editor-toolbar.module.ts","../../../projects/ngx-noder/src/lib/+shared/confirm-dialog/confirm-dialog.component.ts","../../../projects/ngx-noder/src/lib/+shared/confirm-dialog/confirm-dialog.component.html","../../../projects/ngx-noder/src/lib/models/generated/document.model.ts","../../../projects/ngx-noder/src/lib/models/generated/document-name.model.ts","../../../projects/ngx-noder/src/lib/models/generated/file-source.model.ts","../../../projects/ngx-noder/src/lib/models/generated/revision.model.ts","../../../projects/ngx-noder/src/lib/models/generated/last-document-revision.model.ts","../../../projects/ngx-noder/src/lib/models/generated/operation.model.ts","../../../projects/ngx-noder/src/talrace-ngx-noder.ts"],"sourcesContent":["export const DEFAULT_FILE_NAME = 'Untitled document';\n","export const PaginatorSizes = [5, 10, 20, 50];\n\nexport const DefaultPageSize = 20;\n","export const DocumentInfo = {\n width: 794,\n widthInInches: 8.267,\n height: 1123,\n pagesSpace: 8,\n paddingTop: 96,\n paddingRight: 48,\n paddingBottom: 96,\n paddingLeft: 48,\n paddingHeader: 48,\n paddingFooter: 48\n};\n","export const Alignment = {\n left: 0,\n center: 1,\n right: 2,\n justify: 3,\n all: [0, 1, 2, 3]\n};\n","export class ParagraphStyleModel {\n public afterAutospacing: boolean;\n public alignment: any;\n public backgroundColor: string;\n public beforeAutospacing: boolean;\n public contextualSpacing: boolean;\n public headingStyleId: string;\n public indentFirstLine: number;\n public indentHanging: number;\n public indentLeft: number;\n public indentRight: number;\n public lineSpacing: number;\n public numberingId: number;\n public numberingLevel: number;\n public spaceAfter: number;\n public spaceBefore: number;\n\n public constructor(\n fields?: Partial<ParagraphStyleModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class TextStyleModel {\n public bold: boolean;\n public fontColor: string;\n public fontFamily: string;\n public fontSize: number;\n public headingStyleId: string;\n public highlightColor: string;\n public isSmallCaps: boolean;\n public italic: boolean;\n public strikethrough: boolean;\n public underline: boolean;\n public verticalAlignment: any;\n\n public constructor(\n fields?: Partial<TextStyleModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { ParagraphStyleModel } from './paragraph-style.model';\nimport { TextStyleModel } from './text-style.model';\n\nexport class HeadingModel {\n public basedOn: string;\n public default: boolean;\n public name: string;\n public paragraphStyle: ParagraphStyleModel;\n public styleId: string;\n public textStyle: TextStyleModel;\n public type: string;\n\n public constructor(\n fields?: Partial<HeadingModel>) {\n\n if (fields) {\n if (fields.paragraphStyle) { fields.paragraphStyle = new ParagraphStyleModel(fields.paragraphStyle); }\n if (fields.textStyle) { fields.textStyle = new TextStyleModel(fields.textStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export enum VerticalAlignment {\n None,\n SuperScript,\n SubScript,\n Baseline,\n Top,\n Center,\n Bottom\n}\n","import { Alignment } from './alignments.const';\nimport { HeadingModel } from '../../../../models/generated/heading.model';\nimport { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\nimport { VerticalAlignment } from '../enums/vertical-alignment.enum';\n\nexport const DEFAULT_BACKGROUND_COLOR = 'transparent';\nexport const DEFAULT_FONT_FAMILY = 'Roboto';\nexport const DEFAULT_FONT_SIZE = 14;\nexport const DEFAULT_FONT_COLOR = '#000';\nexport const HYPERLINK_FONT_COLOR = '#0000EE';\nexport const DEFAULT_HEADING_STYLE_ID = 'Default';\nexport const HYPERLINK_HEADING_STYLE_ID = 'Hyperlink';\nexport const DEFAULT_TEXT_STYLE = new TextStyleModel({\n highlightColor: DEFAULT_BACKGROUND_COLOR,\n bold: false,\n fontColor: DEFAULT_FONT_COLOR,\n fontFamily: DEFAULT_FONT_FAMILY,\n fontSize: DEFAULT_FONT_SIZE,\n headingStyleId: DEFAULT_HEADING_STYLE_ID,\n isSmallCaps: false,\n italic: false,\n strikethrough: false,\n underline: false,\n verticalAlignment: VerticalAlignment.None\n});\nexport const DEFAULT_PARAGRAPH_STYLE = new ParagraphStyleModel({\n alignment: Alignment.left,\n backgroundColor: DEFAULT_BACKGROUND_COLOR,\n headingStyleId: DEFAULT_HEADING_STYLE_ID,\n indentFirstLine: 0,\n indentHanging: 0,\n indentLeft: 0,\n indentRight: 0,\n lineSpacing: 1,\n spaceAfter: 0,\n spaceBefore: 0,\n numberingId: null,\n numberingLevel: null,\n contextualSpacing: false,\n beforeAutospacing: false,\n afterAutospacing: false\n});\nexport const DEFAULT_HEADINGS = [\n new HeadingModel({\n basedOn: null,\n name: DEFAULT_HEADING_STYLE_ID,\n paragraphStyle: DEFAULT_PARAGRAPH_STYLE,\n styleId: DEFAULT_HEADING_STYLE_ID,\n textStyle: DEFAULT_TEXT_STYLE\n }),\n new HeadingModel({\n basedOn: DEFAULT_HEADING_STYLE_ID,\n name: 'Default Paragraph Font',\n paragraphStyle: DEFAULT_PARAGRAPH_STYLE,\n styleId: 'DefaultParagraphFont',\n textStyle: DEFAULT_TEXT_STYLE\n })\n];\nexport const NEW_LINE_MARKUP = '\\n';\nexport const DEFAULT_TAB_WIDTH = 48;\nexport const DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER = 0.4;\n","export enum BreakTypes {\n Page,\n Column,\n TextWrapping\n}\n","export enum PageType {\n Default,\n First,\n Even\n}\n","export class DomHelper {\n static translate(element: HTMLElement, tx: number, ty: number): void {\n element.style.top = `${Math.round(ty)}px`;\n element.style.left = `${Math.round(tx)}px`;\n }\n\n static createFragment(element: Element): DocumentFragment {\n return (element ? element.ownerDocument : document).createDocumentFragment();\n }\n\n static removeElement(element: HTMLElement): void {\n if (!element?.parentNode) {\n return;\n }\n\n element.parentNode.removeChild(element);\n }\n\n static removeChildren(element: Element): void {\n element.innerHTML = '';\n }\n\n static setStyle(styles: CSSStyleDeclaration, property: string, value: string | number): void {\n if (styles[property] === value) {\n return;\n }\n\n styles[property] = value;\n }\n\n // Remove a CSS class from the list of classes on the given node\n static removeCssClass(element: Element, name: string): void {\n element.className = element.className\n .split(/\\s+/g)\n .filter(className => className != name)\n .join(' ');\n }\n\n // Add a CSS class to the list of classes on the given node\n static addCssClass(element: Element, name: string): void {\n if (this.hasCssClass(element, name)) {\n return;\n }\n\n element.className += ` ${name}`;\n }\n\n static hasCssClass(element: Element, name: string): boolean {\n return element.className.split(/\\s+/g).includes(name);\n }\n}\n","import { FormatModel } from '../../../../models/generated/format.model';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class FormatStyleHelper {\n static areSameTextStyles(first: TextStyleModel, second: TextStyleModel): boolean {\n return (\n first.highlightColor === second.highlightColor &&\n first.bold === second.bold &&\n first.fontColor === second.fontColor &&\n first.fontFamily === second.fontFamily &&\n first.fontSize === second.fontSize &&\n first.isSmallCaps === second.isSmallCaps &&\n first.italic === second.italic &&\n first.strikethrough === second.strikethrough &&\n first.underline === second.underline &&\n first.verticalAlignment === second.verticalAlignment\n );\n }\n\n static applyTextStyles(target: TextStyleModel, value: TextStyleModel): void {\n target.highlightColor = value.highlightColor ?? target.highlightColor;\n target.bold = value.bold ?? target.bold;\n target.fontColor = value.fontColor ?? target.fontColor;\n target.fontFamily = value.fontFamily ?? target.fontFamily;\n target.fontSize = value.fontSize ?? target.fontSize;\n target.headingStyleId = value.headingStyleId ?? target.headingStyleId;\n target.isSmallCaps = value.isSmallCaps ?? target.isSmallCaps;\n target.italic = value.italic ?? target.italic;\n target.strikethrough = value.strikethrough ?? target.strikethrough;\n target.underline = value.underline ?? target.underline;\n target.verticalAlignment = value.verticalAlignment ?? target.verticalAlignment;\n }\n\n static combineTextStyles(current: TextStyleModel, parent: TextStyleModel): TextStyleModel {\n return new TextStyleModel({\n highlightColor: current.highlightColor ?? parent.highlightColor,\n bold: current.bold ?? parent.bold,\n fontColor: current.fontColor ?? parent.fontColor,\n fontFamily: current.fontFamily ?? parent.fontFamily,\n fontSize: current.fontSize ?? parent.fontSize,\n headingStyleId: current.headingStyleId ?? parent.headingStyleId,\n isSmallCaps: current.isSmallCaps ?? parent.isSmallCaps,\n italic: current.italic ?? parent.italic,\n strikethrough: current.strikethrough ?? parent.strikethrough,\n underline: current.underline ?? parent.underline,\n verticalAlignment: current.verticalAlignment ?? parent.verticalAlignment\n });\n }\n\n static getFormatsAtRange(formats: FormatModel[], startIndex: number, endIndex: number): FormatModel[] {\n const firstIndex = formats.findIndex(x => x.endIndex >= startIndex);\n let lastIndex = firstIndex;\n while (lastIndex < formats.length - 1 && formats[lastIndex]?.endIndex < endIndex) {\n lastIndex++;\n }\n\n return formats.slice(firstIndex, lastIndex + 1);\n }\n\n static getFormatAtIndex(formats: FormatModel[], index: number): FormatModel {\n return formats.find(x => x.endIndex >= index);\n }\n\n static mergeFormats(formats: FormatModel[], startIndex: number, endIndex: number): void {\n const firstIndex = formats.findIndex(x => x.endIndex >= startIndex);\n let lastIndex = firstIndex;\n while (lastIndex < formats.length - 1 && formats[lastIndex].endIndex < endIndex) {\n lastIndex++;\n }\n for (let i = lastIndex; i > firstIndex; i--) {\n if (this.areSameTextStyles(formats[i].textStyle, formats[i - 1].textStyle)) {\n formats[i - 1].endIndex = formats[i].endIndex;\n formats.splice(i, 1);\n }\n }\n }\n\n static getPrevFormatAtIndex(formats: FormatModel[], index: number): FormatModel | null {\n const firstIndex = formats.findIndex(x => x.endIndex >= index);\n return firstIndex > 0 ? formats[firstIndex - 1] : null;\n }\n}\n","export class ElementDataModel {\n constructor(public type: number, public width: number, public height: number, public guid: string) {}\n}\n","import { Type } from '@angular/core';\n\nimport { BaseNoderComponent } from '../../shared/abstract/base.component';\n\nexport class ExternalElementModel {\n constructor(\n public name: string,\n public icon: string,\n public type: number,\n public componentType: Type<BaseNoderComponent>,\n public factoryMethod: () => Promise<{ guid: string; type: number; width: number; height: number }>\n ) {}\n}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Directive()\nexport abstract class ObserverComponent implements OnDestroy {\n subscriptions: Subscription[] = [];\n\n ngOnDestroy(): void {\n this.clearSubscriptions();\n }\n\n protected clearSubscriptions(): void {\n while (this.subscriptions.length) {\n const s = this.subscriptions.shift();\n if (s && s.unsubscribe) {\n s.unsubscribe();\n }\n }\n }\n}\n","import { ChangeDetectorRef, Directive, HostBinding, inject, Input } from '@angular/core';\n\nimport { CustomContent } from '../types/custom-content';\nimport { ObserverComponent } from '../../../../abstract/observer.component';\n\n@Directive()\nexport abstract class BaseNoderComponent extends ObserverComponent {\n @HostBinding('class.focused')\n get focused(): boolean {\n return this._isFocused;\n }\n\n @Input()\n content: CustomContent;\n\n @Input()\n @HostBinding('attr.data-session-id')\n sessionId: number;\n\n @HostBinding('attr.data-insert-index')\n get insertIndex(): number {\n return this.content.insertIndex;\n }\n set insertIndex(val: number) {\n this.content.insertIndex = val;\n }\n\n @Input()\n contentWidth: number;\n\n protected _height: number;\n get height(): number {\n return this._height;\n }\n\n protected _width: number;\n get width(): number {\n return this._width;\n }\n\n protected _isFocused = false;\n get isFocused() {\n return this._isFocused;\n }\n\n protected readonly cdr = inject(ChangeDetectorRef);\n\n abstract initialize(): void;\n\n focus(): void {\n this._isFocused = true;\n this.cdr.markForCheck();\n }\n\n blur(): void {\n this._isFocused = false;\n this.cdr.markForCheck();\n }\n}\n","export class OperationsHistoryInfoModel {\n step: number;\n lastStep: number;\n\n constructor(step: number, storageLength: number) {\n this.step = step;\n this.lastStep = storageLength;\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { Injectable, Type } from '@angular/core';\n\nimport { BreakTypes } from '../core/enums/break-types.enum';\nimport { EdgeType } from '../core/components/edges/edge-type.enum';\nimport { ElementDataModel } from '../custom-components/external-element/models/element-data.model';\nimport { ElementModel } from '../../../models/generated/element.model';\nimport { ImageDataModel } from '../../../models/generated/image-data.model';\nimport { ImageModel } from '../../../models/generated/image.model';\nimport { IToolbarStyles } from '../core/interfaces/toolbar-styles.interface';\nimport { NumberingLevelModel } from '../../../models/generated/numbering-level.model';\nimport { OperationsHistoryInfoModel } from '../operation-history/operations-history-info.model';\nimport { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';\nimport { Replace } from '../core/interfaces/replace.interface';\nimport { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';\nimport { SearchIteration } from '../core/interfaces/search-iteration.interface';\nimport { SearchOptions } from '../core/search';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\n\n@Injectable()\nexport class EditorService {\n set styles(value: IToolbarStyles) {\n this._styles$.next({ ...value });\n }\n get styles$(): Observable<IToolbarStyles> {\n return this._styles$.asObservable();\n }\n private _styles$: BehaviorSubject<IToolbarStyles> = new BehaviorSubject<IToolbarStyles>({});\n\n get isViewOnly$(): Observable<boolean> {\n return this._isViewOnly$.asObservable();\n }\n get isViewOnly(): boolean {\n return this._isViewOnly;\n }\n private _isViewOnly$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private _isViewOnly = false;\n\n get clipboardData$(): Observable<string> {\n return this._clipboardData$.asObservable();\n }\n private _clipboardData$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n get hasSelection$(): Observable<boolean> {\n return this._hasSelection$.asObservable();\n }\n private _hasSelection$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n set historyInfo(value: OperationsHistoryInfoModel) {\n this._historyInfo$.next(value);\n }\n get historyInfo$(): Observable<OperationsHistoryInfoModel> {\n return this._historyInfo$.asObservable();\n }\n private _historyInfo$: BehaviorSubject<OperationsHistoryInfoModel> = new BehaviorSubject<OperationsHistoryInfoModel>(\n new OperationsHistoryInfoModel(-1, -1)\n );\n\n get toggleSidenav$(): Observable<{ open: boolean; component: Type<any>; model: ElementModel; contentWidth: number }> {\n return this._toggleSidenav$.asObservable();\n }\n private _toggleSidenav$ = new Subject<{ open: boolean; component: Type<any>; model: ElementModel; contentWidth: number }>();\n\n set openSearchDialog(value: boolean) {\n this._openSearchDialog$.next(value);\n }\n get openSearchDialog$(): Observable<boolean> {\n return this._openSearchDialog$.asObservable();\n }\n private _openSearchDialog$: Subject<boolean> = new Subject<boolean>();\n\n set searchOptions(value: SearchOptions) {\n this._searchOptions$.next(value);\n }\n get searchOptions$(): Observable<SearchOptions> {\n return this._searchOptions$.asObservable();\n }\n private _searchOptions$: Subject<SearchOptions> = new Subject<SearchOptions>();\n\n set searchIteration(value: SearchIteration) {\n this._searchIteration$.next(value);\n }\n get searchIteration$(): Observable<SearchIteration> {\n return this._searchIteration$.asObservable();\n }\n private _searchIteration$: Subject<SearchIteration> = new Subject<SearchIteration>();\n\n set replace(value: Replace) {\n this._replace$.next(value);\n }\n get replace$(): Observable<Replace> {\n return this._replace$.asObservable();\n }\n private _replace$: Subject<Replace> = new Subject<Replace>();\n\n get setTextStyles$(): Observable<TextStyleModel> {\n return this._setTextStyles$.asObservable();\n }\n private _setTextStyles$: Subject<TextStyleModel> = new Subject<TextStyleModel>();\n\n get setParagraphStyles$(): Observable<ParagraphStyleModel> {\n return this._setParagraphStyles$.asObservable();\n }\n private _setParagraphStyles$: Subject<ParagraphStyleModel> = new Subject<ParagraphStyleModel>();\n\n get setNumberingTemplateType$(): Observable<NumberingLevelModel[]> {\n return this._setNumberingTemplateType$.asObservable();\n }\n private _setNumberingTemplateType$: Subject<NumberingLevelModel[]> = new Subject<NumberingLevelModel[]>();\n\n get removeNumberings$(): Observable<void> {\n return this._removeNumberings$.asObservable();\n }\n private _removeNumberings$: Subject<void> = new Subject<void>();\n\n get setImageStyle$(): Observable<ImageModel> {\n return this._changeImageStyle$.asObservable();\n }\n private _changeImageStyle$ = new Subject<ImageModel>();\n\n get changeElementStyle$(): Observable<ElementModel> {\n return this._changeElementStyle$.asObservable();\n }\n private _changeElementStyle$ = new Subject<ElementModel>();\n\n get createCustomComponent$(): Observable<ElementDataModel> {\n return this._createCustomComponent$.asObservable();\n }\n private _createCustomComponent$: Subject<ElementDataModel> = new Subject<ElementDataModel>();\n\n get insertBreak$(): Observable<BreakTypes> {\n return this._insertBreak$.asObservable();\n }\n private _insertBreak$: Subject<BreakTypes> = new Subject<BreakTypes>();\n\n get insertImage$(): Observable<ImageDataModel> {\n return this._insertImage$.asObservable();\n }\n private _insertImage$ = new Subject<ImageDataModel>();\n\n get insertLink$(): Observable<{ text: string; link: string }> {\n return this._insertLink$.asObservable();\n }\n private _insertLink$ = new Subject<{ text: string; link: string }>();\n\n get endMousePress$(): Observable<void> {\n return this._endMousePress$.asObservable();\n }\n private _endMousePress$: Subject<void> = new Subject<void>();\n\n get clearSelection$(): Observable<void> {\n return this._clearSelection$.asObservable();\n }\n private _clearSelection$: Subject<void> = new Subject<void>();\n\n get changedTableSize$(): Observable<{ insertIndex: number; sessionId: number }> {\n return this._changedTableSize$.asObservable();\n }\n private _changedTableSize$ = new Subject<{ insertIndex: number; sessionId: number }>();\n\n get insertTableRows$(): Observable<{\n insertIndex: number;\n rowsCount: number;\n targetIndex: number;\n inheritIndex: number;\n sessionId: number;\n }> {\n return this._insertTableRows$.asObservable();\n }\n private _insertTableRows$ = new Subject<{\n insertIndex: number;\n rowsCount: number;\n targetIndex: number;\n inheritIndex: number;\n sessionId: number;\n }>();\n\n get insertTableColumns$(): Observable<{\n insertIndex: number;\n columnsCount: number;\n targetIndex: number;\n inheritIndex: number;\n sessionId: number;\n }> {\n return this._insertTableColumns$.asObservable();\n }\n private _insertTableColumns$ = new Subject<{\n insertIndex: number;\n columnsCount: number;\n targetIndex: number;\n inheritIndex: number;\n sessionId: number;\n }>();\n\n get removeTableRows$(): Observable<{ insertIndex: number; startIndex: number; endIndex: number; sessionId: number }> {\n return this._removeTableRows$.asObservable();\n }\n private _removeTableRows$ = new Subject<{ insertIndex: number; startIndex: number; endIndex: number; sessionId: number }>();\n\n get removeTableColumns$(): Observable<{ insertIndex: number; startIndex: number; endIndex: number; sessionId: number }> {\n return this._removeTableColumns$.asObservable();\n }\n private _removeTableColumns$ = new Subject<{ insertIndex: number; startIndex: number; endIndex: number; sessionId: number }>();\n\n get removeImage$(): Observable<{ insertIndex: number }> {\n return this._removeImage$.asObservable();\n }\n private _removeImage$ = new Subject<{ insertIndex: number }>();\n\n get resizeTableColumns$(): Observable<{\n resizeTableColumns: ResizeTableColumnsModel;\n sessionId: number;\n }> {\n return this._resizeTableColumns$.asObservable();\n }\n private _resizeTableColumns$ = new Subject<{\n resizeTableColumns: ResizeTableColumnsModel;\n sessionId: number;\n }>();\n\n get insertTable$(): Observable<{ rows: number; columns: number }> {\n return this._insertTable$.asObservable();\n }\n private _insertTable$ = new Subject<{ rows: number; columns: number }>();\n\n get rendererUpdated$(): Observable<number> {\n return this._rendererUpdated$.asObservable();\n }\n private _rendererUpdated$ = new Subject<number>();\n\n get edgeElementCopyUpdated$(): Observable<{ newElementCopy: HTMLElement; page: number }> {\n return this._edgeElementCopyUpdated$.asObservable();\n }\n private _edgeElementCopyUpdated$ = new Subject<{\n newElementCopy: HTMLElement;\n page: number;\n }>();\n\n get changedEdgeHeight$(): Observable<EdgeType> {\n return this._changedEdgeHeight$.asObservable();\n }\n private _changedEdgeHeight$: Subject<EdgeType> = new Subject<EdgeType>();\n\n get redo$(): Observable<void> {\n return this._redo$.asObservable();\n }\n private _redo$ = new Subject<void>();\n\n get undo$(): Observable<void> {\n return this._undo$.asObservable();\n }\n private _undo$ = new Subject<void>();\n\n get print$(): Observable<void> {\n return this._print$.asObservable();\n }\n private _print$ = new Subject<void>();\n\n get cutSelected$(): Observable<void> {\n return this._cutSelected$.asObservable();\n }\n private _cutSelected$ = new Subject<void>();\n\n get copySelected$(): Observable<void> {\n return this._copySelected$.asObservable();\n }\n private _copySelected$ = new Subject<void>();\n\n get pasteFromClipboard$(): Observable<void> {\n return this._pasteFromClipboard$.asObservable();\n }\n private _pasteFromClipboard$ = new Subject<void>();\n\n get selectAll$(): Observable<void> {\n return this._selectAll$.asObservable();\n }\n private _selectAll$ = new Subject<void>();\n\n get removeSelected$(): Observable<void> {\n return this._removeSelected$.asObservable();\n }\n private _removeSelected$ = new Subject<void>();\n\n setIsViewOnly(value: boolean): void {\n this._isViewOnly = value;\n this._isViewOnly$.next(value);\n }\n\n setHasSelection(value: boolean): void {\n this._hasSelection$.next(value);\n }\n\n setClipboardData(value: string): void {\n this._clipboardData$.next(value);\n }\n\n setTextStyles(value: TextStyleModel): void {\n this._setTextStyles$.next(value);\n }\n\n setParagraphStyles(value: ParagraphStyleModel): void {\n this._setParagraphStyles$.next(value);\n }\n\n setNumberingTemplateType(value: NumberingLevelModel[]): void {\n this._setNumberingTemplateType$.next(value);\n }\n\n removeNumberings(): void {\n this._removeNumberings$.next();\n }\n\n changeImageStyle(value: ImageModel): void {\n this._changeImageStyle$.next(value);\n }\n\n changeElementStyle(value: ElementModel): void {\n this._changeElementStyle$.next(value);\n }\n\n createCustomComponent(model: ElementDataModel): void {\n this._createCustomComponent$.next(model);\n }\n\n insertBreak(value: BreakTypes): void {\n this._insertBreak$.next(value);\n }\n\n insertImage(imageData: ImageDataModel): void {\n this._insertImage$.next(imageData);\n }\n\n insertLink(text: string, link: string): void {\n this._insertLink$.next({ text, link });\n }\n\n endMousePress(): void {\n this._endMousePress$.next();\n }\n\n clearSelection(): void {\n this._clearSelection$.next();\n }\n\n toggleSidenav(open: boolean, component: Type<any>, model: ElementModel, contentWidth: number): void {\n this._toggleSidenav$.next({ open, component, model, contentWidth });\n }\n\n changedTableSize(insertIndex: number, sessionId: number): void {\n this._changedTableSize$.next({ insertIndex, sessionId });\n }\n\n insertTableRows(insertIndex: number, rowsCount: number, targetIndex: number, inheritIndex: number, sessionId: number): void {\n this._insertTableRows$.next({ insertIndex, rowsCount, targetIndex, inheritIndex, sessionId });\n }\n\n insertTableColumns(insertIndex: number, columnsCount: number, targetIndex: number, inheritIndex: number, sessionId: number): void {\n this._insertTableColumns$.next({ insertIndex, columnsCount, targetIndex, inheritIndex, sessionId });\n }\n\n removeTableRows(insertIndex: number, startIndex: number, endIndex: number, sessionId: number): void {\n this._removeTableRows$.next({ insertIndex, startIndex, endIndex, sessionId });\n }\n\n removeTableColumns(insertIndex: number, startIndex: number, endIndex: number, sessionId: number): void {\n this._removeTableColumns$.next({ insertIndex, startIndex, endIndex, sessionId });\n }\n\n removeImage(insertIndex: number): void {\n this._removeImage$.next({ insertIndex });\n }\n\n resizeTableColumns(resizeTableColumns: ResizeTableColumnsModel, sessionId: number) {\n this._resizeTableColumns$.next({\n resizeTableColumns,\n sessionId\n });\n }\n\n insertTable(tableData: { rows: number; columns: number }): void {\n this._insertTable$.next(tableData);\n }\n\n rendererUpdated(sessionId: number): void {\n this._rendererUpdated$.next(sessionId);\n }\n\n edgeElementCopyUpdated(newElementCopy, page): void {\n this._edgeElementCopyUpdated$.next({ newElementCopy, page });\n }\n\n changedEdgeHeight(type: EdgeType): void {\n this._changedEdgeHeight$.next(type);\n }\n\n undo(): void {\n this._undo$.next();\n }\n\n redo(): void {\n this._redo$.next();\n }\n\n print(): void {\n this._print$.next();\n }\n\n cutSelected(): void {\n this._cutSelected$.next();\n }\n\n copySelected(): void {\n this._copySelected$.next();\n }\n\n pasteFromClipboard(): void {\n this._pasteFromClipboard$.next();\n }\n\n selectAll(): void {\n this._selectAll$.next();\n }\n\n removeSelected(): void {\n this._removeSelected$.next();\n }\n}\n","export class ElementModel {\n public guid: string;\n public height: number;\n public id: number;\n public insertIndex: number;\n public type: number;\n public width: number;\n\n public constructor(\n fields?: Partial<ElementModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { Directive, inject, Type } from '@angular/core';\n\nimport { BaseNoderComponent } from '../shared/abstract/base.component';\nimport { EditorService } from '../../interaction/editor.service';\nimport { ElementModel } from '../../../../models/generated/element.model';\nimport { ExternalSidenavInterface } from './external-sidenav.interface';\n\n@Directive()\nexport abstract class NoderExternalComponent extends BaseNoderComponent {\n override content: ElementModel;\n\n protected abstract sidenavComponent: Type<ExternalSidenavInterface>;\n\n protected readonly editorService = inject(EditorService);\n\n override focus(): void {\n super.focus();\n if (this.editorService.isViewOnly) {\n return;\n }\n this.editorService.toggleSidenav(true, this.sidenavComponent, this.content, this.contentWidth);\n }\n\n override blur(): void {\n super.blur();\n if (this.editorService.isViewOnly) {\n return;\n }\n this.editorService.toggleSidenav(false, this.sidenavComponent, this.content, this.contentWidth);\n }\n\n changeElementHeight(height: number): void {\n if (this._height !== height) {\n this.editorService.changeElementStyle(new ElementModel({ ...this.content, height }));\n }\n }\n\n changeElementWidth(width: number): void {\n if (this._width !== width) {\n this.editorService.changeElementStyle(new ElementModel({ ...this.content, width }));\n }\n }\n}\n","import { ExternalElementModel } from './models/external-element.model';\n\nexport interface ExternalElementInterface {\n elements: ExternalElementModel[];\n}\n\nexport class ExternalElementService implements ExternalElementInterface {\n elements: ExternalElementModel[] = [];\n}\n","import { catchError, finalize, map, share } from 'rxjs/operators';\nimport { Directive } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { Store } from '@ngxs/store';\n\n@Directive()\nexport abstract class BaseApiService {\n protected apiRelativePath = '/api/';\n\n private _inFlight: any = {};\n\n constructor(protected http: HttpClient, protected store: Store) {}\n\n public handleError(response: HttpErrorResponse): Observable<HttpErrorResponse> {\n console.error(`${response.status} - ${response.statusText || response.error}`);\n return throwError(() => response);\n }\n\n protected httpGet<T>(url: string, ctor: (value: any) => T, headers: HttpHeaders = null, useApiRelativePath = true): Observable<T> {\n if (this._inFlight[url.toLowerCase()]) {\n return this._inFlight[url.toLowerCase()];\n }\n const request: Observable<any> = this.http\n .get<T>(useApiRelativePath ? `${this.apiRelativePath}${url}` : url, { observe: 'response', headers: this.getHeaders(headers) })\n .pipe(\n map((res: HttpResponse<T>) => this.mapType<T>(res, ctor)),\n share(),\n catchError((error: HttpErrorResponse) => this.handleError(error)),\n finalize(() => this.clearInFlight(url))\n );\n this._inFlight[url.toLowerCase()] = request;\n\n return request;\n }\n\n protected httpGetBlob(url: string): Observable<Blob> {\n if (this._inFlight[url.toLowerCase()]) {\n return this._inFlight[url.toLowerCase()];\n }\n return this.http.get(`${this.apiRelativePath}${url}`, {\n responseType: 'blob',\n headers: this.getHeaders()\n });\n }\n\n protected httpPost<T>(\n url: string,\n ctor: (value: any) => T,\n data: any = null,\n headers: HttpHeaders = null,\n useApiRelativePath = true\n ): Observable<T> {\n const request: Observable<any> = this.http\n .post<T>(useApiRelativePath ? this.apiRelativePath + url : url, data, {\n observe: 'response',\n headers: this.getHeaders(headers)\n })\n .pipe(\n map((res: HttpResponse<T>) => this.mapType<T>(res, ctor)),\n share(),\n catchError((error: HttpErrorResponse) => this.handleError(error))\n );\n\n return request;\n }\n\n protected httpPostFile<T>(url: string, file: Blob): Observable<T> {\n const formData = new FormData();\n formData.set('file', file);\n return this.httpPost(url, x => x, formData);\n }\n\n protected httpPut<T>(url: string, ctor: (value: any) => T, data: any = null, headers: HttpHeaders = null): Observable<T> {\n const request: Observable<any> = this.http\n .put<T>(this.apiRelativePath + url, data, { observe: 'response', headers: this.getHeaders(headers) })\n .pipe(\n map((res: HttpResponse<T>) => this.mapType<T>(res, ctor)),\n share(),\n catchError((error: HttpErrorResponse) => this.handleError(error))\n );\n\n return request;\n }\n\n protected httpDelete<T>(\n url: string,\n id: number | string | null,\n ctor: (value: any) => T,\n headers: HttpHeaders = null\n ): Observable<any> {\n const path = id ? this.apiRelativePath + url + '/' + id : this.apiRelativePath + url;\n const request: Observable<any> = this.http\n .delete(path, {\n observe: 'response',\n headers: this.getHeaders(headers)\n })\n .pipe(\n map((res: HttpResponse<T>) => this.mapType<T>(res, ctor)),\n share()\n );\n\n request.subscribe({ error: (error: HttpErrorResponse) => this.handleError(error) });\n\n return request;\n }\n\n protected getHeaders(headers: HttpHeaders = null): HttpHeaders {\n if (!headers) {\n headers = new HttpHeaders();\n }\n return headers.set('require-user', 'true');\n }\n\n private clearInFlight(url: string): void {\n if (this._inFlight[url.toLowerCase()]) {\n delete this._inFlight[url.toLowerCase()];\n }\n }\n\n protected mapType<T>(res: HttpResponse<T>, ctor: (value: any) => T): any {\n const val: any = res.status === 204 ? null : res.body;\n if (val === null) {\n return null;\n }\n\n if (val === '[]') {\n return [];\n }\n if (Array.isArray(val)) {\n return val.map(x => ctor(x));\n }\n return ctor(val);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BaseApiService } from '../../../../abstract/base-api.service';\n\n@Injectable()\nexport class ImageApiService extends BaseApiService {\n getFile(source: string): Observable<Blob> {\n return this.httpGetBlob(source);\n }\n}\n","export enum CommandType {\n Delete,\n InsertText,\n InsertStyledText,\n ReplaceByText,\n Restore,\n RestoreTextStyles,\n RestoreParagraphStyles,\n ApplyTextStyle,\n ApplyParagraphStyle,\n InsertElement,\n InsertBreak,\n ApplyElementStyle,\n ApplyImageStyle,\n AddNumbering,\n InsertTab,\n InsertTableColumns,\n InsertTableRows,\n InsertLink,\n RemoveTableColumns,\n RemoveTableRows,\n ResizeTableColumns,\n RestoreTable,\n InsertTable,\n InsertImage,\n RemoveNumberings,\n RestoreNumberings,\n Replace\n}\n","import { DocxModel } from '../../../models/generated/docx.model';\n\nexport class SetDocx {\n static readonly type = '[Editor] set docx';\n constructor(public content: DocxModel) {}\n}\n\nexport class OpenDocx {\n static readonly type = '[Editor] open docx';\n constructor(public documentId: number) {}\n}\n","export class PageNumbersModel {\n public alignment: any;\n public format: any;\n public hasTitlePage: boolean;\n public position: any;\n public start: number;\n\n public constructor(\n fields?: Partial<PageNumbersModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { BreakModel } from './break.model';\nimport { ColumnSectionModel } from './column-section.model';\nimport { EdgeModel } from './edge.model';\nimport { ElementModel } from './element.model';\nimport { FormatModel } from './format.model';\nimport { HeadingModel } from './heading.model';\nimport { ImageModel } from './image.model';\nimport { LinkModel } from './link.model';\nimport { NumberingModel } from './numbering.model';\nimport { PageNumbersModel } from './page-numbers.model';\nimport { ParagraphModel } from './paragraph.model';\nimport { TableModel } from './table.model';\nimport { TabModel } from './tab.model';\n\nexport class DocxModel {\n public breaks: BreakModel[];\n public columnSections: ColumnSectionModel[];\n public content: string;\n public contentLength: number;\n public defaultTabWidth: number;\n public elements: ElementModel[];\n public footers: EdgeModel[];\n public formats: FormatModel[];\n public headers: EdgeModel[];\n public headings: HeadingModel[];\n public images: ImageModel[];\n public language: string;\n public links: LinkModel[];\n public marginBottom: number;\n public marginFooter: number;\n public marginHeader: number;\n public marginLeft: number;\n public marginRight: number;\n public marginTop: number;\n public numberings: NumberingModel[];\n public pageHeight: number;\n public pageNumbers: PageNumbersModel;\n public pageOrientation: any;\n public pageWidth: number;\n public paragraphs: ParagraphModel[];\n public tables: TableModel[];\n public tabs: TabModel[];\n\n public constructor(\n fields?: Partial<DocxModel>) {\n\n if (fields) {\n if (fields.pageNumbers) { fields.pageNumbers = new PageNumbersModel(fields.pageNumbers); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { NumberingLevelModel } from './numbering-level.model';\n\nexport class AddNumberingModel {\n public endIndex: number;\n public levels: NumberingLevelModel[];\n public startIndex: number;\n\n public constructor(\n fields?: Partial<AddNumberingModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class ApplyElementStyleModel {\n public height: number;\n public insertIndex: number;\n public width: number;\n\n public constructor(\n fields?: Partial<ApplyElementStyleModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class ApplyImageStyleModel {\n public height: number;\n public insertIndex: number;\n public width: number;\n\n public constructor(\n fields?: Partial<ApplyImageStyleModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { ParagraphStyleModel } from './paragraph-style.model';\n\nexport class ApplyParagraphStyleModel {\n public endIndex: number;\n public paragraphStyle: ParagraphStyleModel;\n public startIndex: number;\n\n public constructor(\n fields?: Partial<ApplyParagraphStyleModel>) {\n\n if (fields) {\n if (fields.paragraphStyle) { fields.paragraphStyle = new ParagraphStyleModel(fields.paragraphStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { TextStyleModel } from './text-style.model';\n\nexport class ApplyTextStyleModel {\n public endIndex: number;\n public startIndex: number;\n public textStyle: TextStyleModel;\n\n public constructor(\n fields?: Partial<ApplyTextStyleModel>) {\n\n if (fields) {\n if (fields.textStyle) { fields.textStyle = new TextStyleModel(fields.textStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export const CUSTOM_ELEMENT_MARKER = '*';\nexport const TABLE_MARKER = '#';\n","import { BreakModel } from '../../../models/generated/break.model';\nimport { BreakTypes } from '../core/enums/break-types.enum';\nimport { ContentsInterface } from '../interfaces/contents.interface';\nimport { CUSTOM_ELEMENT_MARKER } from '../custom-components/shared/constants/custom-content-markers.const';\nimport { NEW_LINE_MARKUP } from '../core/constants/editor.const';\n\nexport class BreakHelper {\n static getBreakType(model: ContentsInterface, char: string, insertIndex: number): BreakTypes | null {\n if (char !== CUSTOM_ELEMENT_MARKER) {\n return null;\n }\n\n return model.breaks.find(x => x.insertIndex === insertIndex)?.breakType ?? null;\n }\n\n static removeBreakMarker(breaks: BreakModel[], text: string, fragmentStartIndex: number): string {\n const index = text.at(-1) === NEW_LINE_MARKUP ? -2 : -1;\n\n if (text.at(index) === CUSTOM_ELEMENT_MARKER && breaks.some(x => x.insertIndex === fragmentStartIndex + text.length + index)) {\n return index === -1 ? text.substring(0, text.length + index) : text.substring(0, text.length + index).concat(text.at(-1));\n }\n\n return text;\n }\n}\n","export class BreakModel {\n public breakType: any;\n public insertIndex: number;\n\n public constructor(\n fields?: Partial<BreakModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export const ClipboardEventTypes = {\n copy: 'copy',\n cut: 'cut',\n paste: 'paste'\n};\n","export class Point {\n row: number;\n\n column: number;\n\n constructor(row: number, column: number) {\n this.row = row;\n this.column = column;\n }\n\n static comparePoints(first: Point, second: Point): number {\n return first.row - second.row || first.column - second.column;\n }\n\n static clone(point: Point): Point {\n return new Point(point.row, point.column);\n }\n}\n","import { InsertIndexInterface } from '../interfaces/insert-index.interface';\nimport { Point } from '../core/point';\n\nexport class ContentHelper {\n static documentIndexToParagraphIndex(wrapParagraphIndex: number[], indexInDocument: number): Point {\n let paragraph = wrapParagraphIndex.findIndex(x => x > indexInDocument);\n paragraph = paragraph === -1 ? wrapParagraphIndex.length - 1 : paragraph - 1;\n const indexInParagraph = indexInDocument - wrapParagraphIndex[paragraph];\n return new Point(paragraph, indexInParagraph);\n }\n\n static documentIndexToParagraphWithOffset(wrapParagraphIndex: number[], lines: string[], indexInDocument: number): Point {\n const position = this.documentIndexToParagraphIndex(wrapParagraphIndex, indexInDocument);\n if (position.column < lines[position.row].length) {\n return new Point(position.row, position.column + 1);\n }\n return position;\n }\n\n static paragraphPositionToDocumentIndex(wrapParagraphIndex: number[], paragraph: Point): number {\n return this.paragraphToDocumentIndex(wrapParagraphIndex, paragraph.row, paragraph.column);\n }\n\n static paragraphToDocumentIndex(wrapParagraphIndex: number[], paragraph: number, index: number): number {\n return wrapParagraphIndex[paragraph] + index;\n }\n\n static setIndexesElementsInInterval<T extends InsertIndexInterface>(\n elements: T[],\n elementIndexes: number[],\n startIndex: number,\n endIndex: number\n ): void {\n elements.forEach(x => {\n if (x.insertIndex >= startIndex && x.insertIndex <= endIndex) {\n elementIndexes.push(x.insertIndex - startIndex);\n }\n });\n }\n}\n","export class DeleteModel {\n public endIndex: number;\n public startIndex: number;\n\n public constructor(\n fields?: Partial<DeleteModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export enum EdgeType {\n Header,\n Footer\n}\n","export abstract class EventEmitting {\n eventRegistry: { [key: string]: any[] } = {};\n\n defaultHandlers: { [key: string]: any } = {};\n\n addEventListener(eventName: string, callback: any, toStart = false): any {\n this.eventRegistry[eventName] ??= [];\n const listeners = this.eventRegistry[eventName];\n if (listeners.includes(callback)) {\n return callback;\n }\n\n if (toStart) {\n listeners.unshift(callback);\n } else {\n listeners.push(callback);\n }\n\n return callback;\n }\n\n removeEventListener(eventName: string, callback: any): void {\n if (!this.eventRegistry[eventName]) {\n return;\n }\n\n const index = this.eventRegistry[eventName].indexOf(callback);\n if (index < 0) {\n return;\n }\n\n this.eventRegistry[eventName].splice(index, 1);\n }\n\n emit(eventName: string, data?: { [key: string]: any }): void {\n const listeners = this.eventRegistry[eventName]?.slice() || [];\n const defaultHandler = this.defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler) {\n return;\n }\n\n data ??= {};\n data['type'] ??= eventName;\n\n for (const listener of listeners) {\n listener(data, this);\n }\n\n if (!defaultHandler) {\n return;\n }\n\n defaultHandler(data, this);\n }\n\n signal(eventName: string, data?: any): void {\n const listeners = this.eventRegistry[eventName]?.slice() || [];\n if (!listeners.length) {\n return;\n }\n\n for (const listener of listeners) {\n listener(data, this);\n }\n }\n\n setDefaultHandler(eventName: string, callback: any): void {\n this.defaultHandlers[eventName] = callback;\n }\n\n removeDefaultHandler(eventName: string): void {\n if (!this.defaultHandlers || !this.defaultHandlers[eventName]) {\n return;\n }\n\n delete this.defaultHandlers[eventName];\n }\n\n removeAllListeners(eventName: string): void {\n if (!this.eventRegistry[eventName] || !this.eventRegistry[eventName].length) {\n return;\n }\n\n this.eventRegistry[eventName] = [];\n }\n}\n","import { TextStyleModel } from './text-style.model';\n\nexport class FormatModel {\n public endIndex: number;\n public startIndex: number;\n public textStyle: TextStyleModel;\n\n public constructor(\n fields?: Partial<FormatModel>) {\n\n if (fields) {\n if (fields.textStyle) { fields.textStyle = new TextStyleModel(fields.textStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { FormatModel } from '../../../models/generated/format.model';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\n\nexport class FormatHelper {\n static sliceSection(formats: FormatModel[], startIndex: number, endIndex: number): FormatModel[] {\n let result: FormatModel[] = [];\n for (const format of formats) {\n if (format.startIndex >= startIndex && format.endIndex <= endIndex) {\n result.push(new FormatModel({ ...format }));\n } else if (format.startIndex < startIndex && format.endIndex > endIndex) {\n result.push(new FormatModel({ startIndex, endIndex, textStyle: new TextStyleModel(format.textStyle) }));\n } else if (format.startIndex < startIndex && format.endIndex >= startIndex) {\n result.push(new FormatModel({ startIndex, endIndex: format.endIndex, textStyle: new TextStyleModel(format.textStyle) }));\n } else if (format.startIndex <= endIndex && format.endIndex > endIndex) {\n result.push(new FormatModel({ startIndex: format.startIndex, endIndex, textStyle: new TextStyleModel(format.textStyle) }));\n }\n }\n return result;\n }\n}\n","export class BordersStyleModel {\n public color: string;\n public colorLuminanceModulated: number;\n public lineStyle: any;\n public position: any;\n public width: number;\n\n public constructor(\n fields?: Partial<BordersStyleModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { BordersStyleModel } from './borders-style.model';\n\nexport class ImageModel {\n public border: BordersStyleModel;\n public brightness: number;\n public content: string;\n public contrast: number;\n public cropBottom: number;\n public cropLeft: number;\n public cropRight: number;\n public cropTop: number;\n public height: number;\n public insertIndex: number;\n public marginBottom: number;\n public marginLeft: number;\n public marginRight: number;\n public marginTop: number;\n public paragraphIndentLeft: number;\n public positionHorizontalOffset: number;\n public positionHorizontalRelativeFrom: string;\n public positionLeft: number;\n public positionTop: number;\n public positionVerticalOffset: number;\n public positionVerticalRelativeFrom: string;\n public relativeHeight: number;\n public rotate: number;\n public sourceId: string;\n public textWrapping: any;\n public textWrappingStyle: any;\n public width: number;\n\n public constructor(\n fields?: Partial<ImageModel>) {\n\n if (fields) {\n if (fields.border) { fields.border = new BordersStyleModel(fields.border); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { InsertIndexInterface } from '../interfaces/insert-index.interface';\n\nexport class IndexedElementHelper {\n static sliceSection<T extends InsertIndexInterface>(elements: T[], startIndex: number, endIndex: number): T[] {\n return elements.filter(x => x.insertIndex >= startIndex && x.insertIndex <= endIndex);\n }\n}\n","import { fromEvent, Subscription } from 'rxjs';\n\nimport { Alignment } from '../core/constants/alignments.const';\nimport { BreakTypes } from '../core/enums/break-types.enum';\nimport { Editor } from '../core/editor';\nimport { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\n\nexport class InputHandler {\n readonly textareaKeyDown$: Subscription;\n\n readonly textareaBlur$: Subscription;\n\n readonly textareaFocus$: Subscription;\n\n readonly textareaInput$: Subscription;\n\n readonly textareaCut$: Subscription;\n\n readonly textareaCopy$: Subscription;\n\n readonly textareaPaste$: Subscription;\n\n private readonly actions: { [key: string]: () => void } = {};\n\n private readonly actionsWithScroll: { [key: string]: () => void } = {};\n\n private readonly actionsWithSelection: { [key: string]: () => void } = {};\n\n constructor(textarea: Node, editor: Editor) {\n this.textareaKeyDown$ = fromEvent(textarea, 'keydown').subscribe((event: KeyboardEvent) => this.onKeyDown(event, editor));\n this.textareaBlur$ = fromEvent(textarea, 'blur').subscribe(() => editor.onBlur());\n this.textareaFocus$ = fromEvent(textarea, 'focus').subscribe(() => editor.onFocus());\n this.textareaInput$ = fromEvent(textarea, 'input').subscribe(() => this.onInput(editor));\n this.textareaCut$ = fromEvent(textarea, 'cut').subscribe((event: ClipboardEvent) => this.onCut(editor, event));\n this.textareaCopy$ = fromEvent(textarea, 'copy').subscribe((event: ClipboardEvent) => editor.onCopy(event));\n this.textareaPaste$ = fromEvent(textarea, 'paste').subscribe((event: ClipboardEvent) => this.onPaste(editor, event));\n this.fillActions(editor);\n this.fillActionsWithScroll(editor);\n this.fillActionsWithSelection(editor);\n }\n\n destroy(): void {\n this.textareaKeyDown$?.unsubscribe();\n this.textareaBlur$?.unsubscribe();\n this.textareaFocus$?.unsubscribe();\n this.textareaInput$?.unsubscribe();\n this.textareaCut$?.unsubscribe();\n this.textareaCopy$?.unsubscribe();\n this.textareaPaste$?.unsubscribe();\n }\n\n private onInput(editor: Editor): void {\n if (editor.isViewOnly) {\n return;\n }\n editor.onInput();\n }\n\n private onCut(editor: Editor, event: ClipboardEvent): void {\n if (editor.isViewOnly) {\n return;\n }\n editor.onCut(event);\n }\n\n private onPaste(editor: Editor, event: ClipboardEvent): void {\n if (editor.isViewOnly) {\n return;\n }\n editor.onPaste(event);\n }\n\n private onKeyDown(event: KeyboardEvent, editor: Editor): void {\n const keyCombination = this.getKeyCombination(event);\n if (this.actions[keyCombination]) {\n this.actions[keyCombination]();\n } else if (this.actionsWithScroll[keyCombination] && !editor.isViewOnly) {\n this.actionsWithScroll[keyCombination]();\n editor.scrollCursorIntoMainView();\n } else if (this.actionsWithSelection[keyCombination]) {\n this.actionsWithSelection[keyCombination]();\n editor.scrollCursorIntoMainView();\n editor.onSelectionChange();\n } else {\n return;\n }\n event.preventDefault();\n }\n\n private getKeyCombination(event: KeyboardEvent): string {\n let result = event.metaKey ? 'Command-' : '';\n if (event.ctrlKey) {\n result = `${result}Ctrl-`;\n }\n if (event.altKey) {\n result = `${result}Alt-`;\n }\n if (event.shiftKey) {\n result = `${result}Shift-`;\n }\n return `${result}${event.code}`;\n }\n\n private selectAll(editor: Editor): void {\n editor.selection.selectAll(editor.session.model);\n editor.onSelectionChange();\n }\n\n private fillActions(editor: Editor): void {\n this.actions['Ctrl-KeyA'] = () => this.selectAll(editor);\n this.actions['Command-KeyA'] = () => this.selectAll(editor);\n this.actions['Ctrl-KeyF'] = () => editor.openSearch();\n this.actions['Command-KeyF'] = () => editor.openSearch();\n this.actions['Shift-PageDown'] = () => editor.selectPageDown();\n this.actions['PageDown'] = () => editor.gotoPageDown();\n this.actions['Shift-PageUp'] = () => editor.selectPageUp();\n this.actions['PageUp'] = () => editor.gotoPageUp();\n }\n\n private fillActionsWithScroll(editor: Editor): void {\n this.actionsWithScroll['Ctrl-KeyZ'] = () => editor.undo();\n this.actionsWithScroll['Command-KeyZ'] = () => editor.undo();\n this.actionsWithScroll['Ctrl-KeyY'] = () => editor.redo();\n this.actionsWithScroll['Command-KeyY'] = () => editor.redo();\n this.actionsWithScroll['Delete'] = () => editor.removeRight();\n this.actionsWithScroll['Shift-Delete'] = () => editor.removeRight();\n this.actionsWithScroll['Backspace'] = () => editor.removeLeft();\n this.actionsWithScroll['Shift-Backspace'] = () => editor.removeLeft();\n this.actionsWithScroll['Alt-Backspace'] = () => editor.removeToLineStart();\n this.actionsWithScroll['Command-Backspace'] = () => editor.removeToLineStart();\n this.actionsWithScroll['Alt-Delete'] = () => editor.removeToLineEnd();\n this.actionsWithScroll['Command-Delete'] = () => editor.removeToLineEnd();\n this.actionsWithScroll['Ctrl-Backspace'] = () => editor.removeWordLeft();\n this.actionsWithScroll['Ctrl-Alt-Backspace'] = () => editor.removeWordLeft();\n this.actionsWithScroll['Ctrl-Delete'] = () => editor.removeWordRight();\n this.actionsWithScroll['Ctrl-Alt-Delete'] = () => editor.removeWordRight();\n this.actionsWithScroll['Ctrl-KeyL'] = () => editor.applyParagraphStyles(new ParagraphStyleModel({ alignment: Alignment.left }));\n this.actionsWithScroll['Ctrl-KeyM'] = () => editor.applyParagraphStyles(new ParagraphStyleModel({ alignment: Alignment.center }));\n this.actionsWithScroll['Ctrl-KeyR'] = () => editor.applyParagraphStyles(new ParagraphStyleModel({ alignment: Alignment.right }));\n this.actionsWithScroll['Ctrl-KeyB'] = () => editor.applyTextStyles(new TextStyleModel({ bold: !editor.session.stylesMap.bold }));\n this.actionsWithScroll['Ctrl-KeyI'] = () =>\n editor.applyTextStyles(new TextStyleModel({ italic: !editor.session.stylesMap.italic }));\n this.actionsWithScroll['Ctrl-KeyU'] = () =>\n editor.applyTextStyles(new TextStyleModel({ underline: !editor.session.stylesMap.underline }));\n this.actionsWithScroll['Ctrl-Enter'] = () => editor.insertBreak(BreakTypes.Page);\n this.actionsWithScroll['Shift-Enter'] = () => editor.insertBreak(BreakTypes.TextWrapping);\n this.actionsWithScroll['Tab'] = () => editor.insertTab();\n }\n\n private fillActionsWithSelection(editor: Editor): void {\n this.actionsWithSelection['Ctrl-Shift-Home'] = () => editor.selection.selectFileStart();\n this.actionsWithSelection['Command-Shift-Home'] = () => editor.selection.selectFileStart();\n this.actionsWithSelection['Command-Shift-ArrowUp'] = () => editor.selection.selectFileStart();\n this.actionsWithSelection['Ctrl-Home'] = () => editor.selection.navigateFileStart();\n this.actionsWithSelection['Command-Home'] = () => editor.selection.navigateFileStart();\n this.actionsWithSelection['Command-ArrowUp'] = () => editor.selection.navigateFileStart();\n this.actionsWithSelection['Shift-ArrowUp'] = () => editor.selection.selectUp(editor.session);\n this.actionsWithSelection['ArrowUp'] = () => editor.selection.navigateUp(editor.session);\n this.actionsWithSelection['Ctrl-Shift-End'] = () => editor.selection.selectFileEnd(editor.session);\n this.actionsWithSelection['Command-Shift-End'] = () => editor.selection.selectFileEnd(editor.session);\n this.actionsWithSelection['Command-Shift-ArrowDown'] = () => editor.selection.selectFileEnd(editor.session);\n this.actionsWithSelection['Ctrl-End'] = () => editor.selection.navigateFileEnd(editor.session);\n this.actionsWithSelection['Command-End'] = () => editor.selection.navigateFileEnd(editor.session);\n this.actionsWithSelection['Command-ArrowDown'] = () => editor.selection.navigateFileEnd(editor.session);\n this.actionsWithSelection['Shift-ArrowDown'] = () => editor.selection.selectDown(editor.session);\n this.actionsWithSelection['ArrowDown'] = () => editor.selection.navigateDown(editor.session);\n this.actionsWithSelection['Ctrl-Shift-ArrowLeft'] = () => editor.selection.selectWordLeft(editor.session);\n this.actionsWithSelection['Ctrl-ArrowLeft'] = () => editor.selection.navigateWordLeft(editor.session);\n this.actionsWithSelection['Alt-Shift-ArrowLeft'] = () => editor.selection.selectLineStart(editor.session);\n this.actionsWithSelection['Command-Shift-ArrowLeft'] = () => editor.selection.selectLineStart(editor.session);\n this.actionsWithSelection['Shift-Home'] = () => editor.selection.selectLineStart(editor.session);\n this.actionsWithSelection['Alt-ArrowLeft'] = () => editor.selection.navigateLineStart(editor.session);\n this.actionsWithSelection['Home'] = () => editor.selection.navigateLineStart(editor.session);\n this.actionsWithSelection['Shift-ArrowLeft'] = () => editor.selection.selectLeft(editor.session);\n this.actionsWithSelection['ArrowLeft'] = () => editor.selection.navigateLeft(editor.session);\n this.actionsWithSelection['Ctrl-Shift-ArrowRight'] = () => editor.selection.selectWordRight(editor.session);\n this.actionsWithSelection['Ctrl-ArrowRight'] = () => editor.selection.navigateWordRight(editor.session);\n this.actionsWithSelection['Alt-Shift-ArrowRight'] = () => editor.selection.selectLineEnd(editor.session);\n this.actionsWithSelection['Command-Shift-ArrowRight'] = () => editor.selection.selectLineEnd(editor.session);\n this.actionsWithSelection['Shift-End'] = () => editor.selection.selectLineEnd(editor.session);\n this.actionsWithSelection['Alt-ArrowRight'] = () => editor.selection.navigateLineEnd(editor.session);\n this.actionsWithSelection['Command-ArrowRight'] = () => editor.selection.navigateLineEnd(editor.session);\n this.actionsWithSelection['End'] = () => editor.selection.navigateLineEnd(editor.session);\n this.actionsWithSelection['Shift-ArrowRight'] = () => editor.selection.selectRight(editor.session);\n this.actionsWithSelection['ArrowRight'] = () => editor.selection.navigateRight(editor.session);\n }\n}\n","export class InsertBreakModel {\n public breakType: any;\n public insertIndex: number;\n public isOnNewParagraph: boolean;\n\n public constructor(\n fields?: Partial<InsertBreakModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { ElementModel } from './element.model';\n\nexport class InsertElementModel {\n public element: ElementModel;\n\n public constructor(\n fields?: Partial<InsertElementModel>) {\n\n if (fields) {\n if (fields.element) { fields.element = new ElementModel(fields.element); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export class ImageDataModel {\n public content: string;\n public height: number;\n public width: number;\n\n public constructor(\n fields?: Partial<ImageDataModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { ImageDataModel } from './image-data.model';\n\nexport class InsertImageModel {\n public imageData: ImageDataModel;\n public insertIndex: number;\n\n public constructor(\n fields?: Partial<InsertImageModel>) {\n\n if (fields) {\n if (fields.imageData) { fields.imageData = new ImageDataModel(fields.imageData); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export class LinkDataModel {\n public link: string;\n public text: string;\n\n public constructor(\n fields?: Partial<LinkDataModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { LinkDataModel } from './link-data.model';\n\nexport class InsertLinkModel {\n public endIndex: number;\n public insertIndex: number;\n public linkDataModel: LinkDataModel;\n\n public constructor(\n fields?: Partial<InsertLinkModel>) {\n\n if (fields) {\n if (fields.linkDataModel) { fields.linkDataModel = new LinkDataModel(fields.linkDataModel); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { TextStyleModel } from './text-style.model';\n\nexport class InsertStyledTextModel {\n public insertIndex: number;\n public text: string;\n public textStyle: TextStyleModel;\n\n public constructor(\n fields?: Partial<InsertStyledTextModel>) {\n\n if (fields) {\n if (fields.textStyle) { fields.textStyle = new TextStyleModel(fields.textStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export class InsertTableColumnsModel {\n public columnsCount: number;\n public inheritIndex: number;\n public insertIndex: number;\n public targetIndex: number;\n\n public constructor(\n fields?: Partial<InsertTableColumnsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class InsertTableModel {\n public columnsCount: number;\n public content: string;\n public insertIndex: number;\n public insertTableIndex: number;\n public rowsCount: number;\n\n public constructor(\n fields?: Partial<InsertTableModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class InsertTableRowsModel {\n public inheritIndex: number;\n public insertIndex: number;\n public rowsCount: number;\n public targetIndex: number;\n\n public constructor(\n fields?: Partial<InsertTableRowsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class InsertTabModel {\n public insertIndex: number;\n\n public constructor(\n fields?: Partial<InsertTabModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class InsertTextModel {\n public insertIndex: number;\n public text: string;\n\n public constructor(\n fields?: Partial<InsertTextModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { DocumentInfo } from '../constants/document-info.const';\n\nexport class MarginModel {\n left = DocumentInfo.paddingLeft;\n right = DocumentInfo.paddingRight;\n top = DocumentInfo.paddingTop;\n bottom = DocumentInfo.paddingBottom;\n header = DocumentInfo.paddingHeader;\n footer = DocumentInfo.paddingFooter;\n\n constructor(fields?: Partial<MarginModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n}\n","export enum MouseButton {\n Left,\n Middle,\n Right\n}\n","import { fromEvent, Subscription, throttleTime } from 'rxjs';\n\nimport { Editor } from '../core/editor';\nimport { MouseButton } from '../core/enums/mouse-button.enum';\n\nexport class MouseHandler {\n private clicks = 0;\n\n documentMouseMove$: Subscription;\n\n documentMouseUp$: Subscription;\n\n containerWheel$: Subscription;\n\n containerMouseDown$: Subscription;\n\n constructor(container: Node, editor: Editor) {\n this.containerWheel$ = fromEvent(container, 'wheel')\n .pipe(throttleTime(20))\n .subscribe((event: WheelEvent) => editor.onMouseWheel(event));\n this.containerMouseDown$ = fromEvent(container, 'mousedown').subscribe((event: MouseEvent) => this.onMultiMouseDown(event, editor));\n }\n\n destroy(): void {\n this.containerWheel$?.unsubscribe();\n this.containerMouseDown$?.unsubscribe();\n this.endMousePress();\n }\n\n startMousePress(editor: Editor): void {\n this.endMousePress();\n this.documentMouseMove$ = fromEvent(document, 'mousemove')\n .pipe(throttleTime(20))\n .subscribe((event: MouseEvent) => editor.onMousePressedMove(event.clientX, event.clientY));\n this.documentMouseUp$ = fromEvent(document, 'mouseup').subscribe(() => this.endMousePress());\n }\n\n endMousePress(): void {\n this.documentMouseMove$?.unsubscribe();\n this.documentMouseUp$?.unsubscribe();\n }\n\n private onMultiMouseDown(event: MouseEvent, editor: Editor): void {\n if ((event.button as MouseButton) !== MouseButton.Left) {\n editor.onMouseClick(event);\n return;\n }\n\n this.clicks = event.detail > 1 && this.clicks < 4 ? this.clicks + 1 : 1;\n switch (this.clicks) {\n case 1:\n editor.onLeftClick(event);\n break;\n case 2:\n editor.onDoubleClick(event);\n break;\n case 3:\n editor.onTripleClick(event);\n break;\n case 4:\n editor.onQuadClick(event);\n break;\n }\n }\n}\n","export class RemoveNumberingsModel {\n public endIndex: number;\n public startIndex: number;\n\n public constructor(\n fields?: Partial<RemoveNumberingsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class RemoveTableColumnsModel {\n public endIndex: number;\n public insertIndex: number;\n public startIndex: number;\n\n public constructor(\n fields?: Partial<RemoveTableColumnsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class RemoveTableRowsModel {\n public endIndex: number;\n public insertIndex: number;\n public startIndex: number;\n\n public constructor(\n fields?: Partial<RemoveTableRowsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class ResizeTableColumnsModel {\n public cellIndex: number;\n public columnIndex: number;\n public distance: number;\n public insertIndex: number;\n public resizerSide: any;\n public rowIndex: number;\n\n public constructor(\n fields?: Partial<ResizeTableColumnsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { NumberingModel } from './numbering.model';\nimport { ParagraphModel } from './paragraph.model';\n\nexport class RestoreNumberingsModel {\n public numberings: NumberingModel[];\n public paragraphs: ParagraphModel[];\n\n public constructor(\n fields?: Partial<RestoreNumberingsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { ParagraphModel } from './paragraph.model';\n\nexport class RestoreParagraphStylesModel {\n public paragraphs: ParagraphModel[];\n\n public constructor(\n fields?: Partial<RestoreParagraphStylesModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class MarginsModel {\n public bottom: number;\n public left: number;\n public right: number;\n public top: number;\n\n public constructor(\n fields?: Partial<MarginsModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { BordersStyleModel } from './borders-style.model';\nimport { ColumnModel } from './column.model';\nimport { MarginsModel } from './margins.model';\nimport { RowModel } from './row.model';\n\nexport class TableModel {\n public alignment: any;\n public borders: BordersStyleModel[];\n public callSpacing: number;\n public columns: ColumnModel[];\n public headingStyleId: string;\n public indentLeft: number;\n public indentLeftFromText: number;\n public indentRightFromText: number;\n public insertIndex: number;\n public margins: MarginsModel;\n public rows: RowModel[];\n\n public constructor(\n fields?: Partial<TableModel>) {\n\n if (fields) {\n if (fields.margins) { fields.margins = new MarginsModel(fields.margins); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { TableModel } from './table.model';\n\nexport class RestoreTableModel {\n public insertIndex: number;\n public oldTable: TableModel;\n\n public constructor(\n fields?: Partial<RestoreTableModel>) {\n\n if (fields) {\n if (fields.oldTable) { fields.oldTable = new TableModel(fields.oldTable); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { FormatModel } from './format.model';\n\nexport class RestoreTextStylesModel {\n public formats: FormatModel[];\n\n public constructor(\n fields?: Partial<RestoreTextStylesModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { AddNumberingModel } from '../../../models/generated/add-numbering.model';\nimport { ApplyElementStyleModel } from '../../../models/generated/apply-element-style.model';\nimport { ApplyImageStyleModel } from '../../../models/generated/apply-image-style.model';\nimport { ApplyParagraphStyleModel } from '../../../models/generated/apply-paragraph-style.model';\nimport { ApplyTextStyleModel } from '../../../models/generated/apply-text-style.model';\nimport { DeleteModel } from '../../../models/generated/delete.model';\nimport { EditorService } from '../interaction/editor.service';\nimport { ElementModel } from '../../../models/generated/element.model';\nimport { FormatModel } from '../../../models/generated/format.model';\nimport { ImageModel } from '../../../models/generated/image.model';\nimport { InsertBreakModel } from '../../../models/generated/insert-break.model';\nimport { InsertElementModel } from '../../../models/generated/insert-element.model';\nimport { InsertImageModel } from '../../../models/generated/insert-image.model';\nimport { InsertLinkModel } from '../../../models/generated/insert-link.model';\nimport { InsertStyledTextModel } from '../../../models/generated/insert-styled-text.model';\nimport { InsertTableColumnsModel } from '../../../models/generated/insert-table-columns.model';\nimport { InsertTableModel } from '../../../models/generated/insert-table.model';\nimport { InsertTableRowsModel } from '../../../models/generated/insert-table-rows.model';\nimport { InsertTabModel } from '../../../models/generated/insert-tab.model';\nimport { InsertTextModel } from '../../../models/generated/insert-text.model';\nimport { NumberingLevelModel } from '../../../models/generated/numbering-level.model';\nimport { NumberingModel } from '../../../models/generated/numbering.model';\nimport { Operation } from './operation.type';\nimport { OperationsHistoryInfoModel } from './operations-history-info.model';\nimport { ParagraphModel } from '../../../models/generated/paragraph.model';\nimport { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';\nimport { Point } from '../core/point';\nimport { RegulatorService } from '../execution/regulator.service';\nimport { RemoveNumberingsModel } from '../../../models/generated/remove-numberings.model';\nimport { RemoveTableColumnsModel } from '../../../models/generated/remove-table-columns.model';\nimport { RemoveTableRowsModel } from '../../../models/generated/remove-table-rows.model';\nimport { ReplaceModel } from '../../../models/generated/replace.model';\nimport { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';\nimport { RestoreModel } from '../../../models/generated/restore.model';\nimport { RestoreNumberingsModel } from '../../../models/generated/restore-numberings.model';\nimport { RestoreParagraphStylesModel } from '../../../models/generated/restore-paragraph-styles.model';\nimport { RestoreTableModel } from '../../../models/generated/restore-table.model';\nimport { RestoreTextStylesModel } from '../../../models/generated/restore-text-styles.model';\nimport { TableModel } from '../../../models/generated/table.model';\nimport { TargetModel } from '../../../models/generated/target.model';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\n\nexport class OperationHistory {\n readonly MAX_HISTORY = 100;\n\n private readonly storage: { undo: Operation; redo: Operation; targets: TargetModel[]; cursor: Point; anchor: Point | null }[] = [];\n\n private step = -1;\n\n constructor(private editorService: EditorService, private regulatorService: RegulatorService) {\n this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);\n }\n\n pushInsertText(insertIndex: number, text: string): void {\n const redoStep = new InsertTextModel({ insertIndex, text });\n const undoStep = new DeleteModel({ startIndex: insertIndex, endIndex: insertIndex + text.length });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushInsertElement(model: InsertElementModel): void {\n const undoStep = new DeleteModel({ startIndex: model.element.insertIndex, endIndex: model.element.insertIndex + 1 });\n this.addToHistory(undoStep, model);\n }\n\n pushInsertBreak(model: InsertBreakModel, endIndex: number): void {\n const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex });\n this.addToHistory(undoStep, model);\n }\n\n pushInsertTab(model: InsertTabModel): void {\n const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + 1 });\n this.addToHistory(undoStep, model);\n }\n\n pushInsertImage(model: InsertImageModel): void {\n const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + 1 });\n this.addToHistory(undoStep, model);\n }\n\n pushInsertLink(model: InsertLinkModel): void {\n const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.endIndex });\n this.addToHistory(undoStep, model);\n }\n\n pushInsertTable(model: InsertTableModel): void {\n const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + model.content.length });\n this.addToHistory(undoStep, model);\n }\n\n pushInsertStyledText(insertIndex: number, text: string, style: TextStyleModel): void {\n const redoStep = new InsertStyledTextModel({ insertIndex, text, textStyle: style });\n const undoStep = new DeleteModel({ startIndex: insertIndex, endIndex: insertIndex + text.length });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushDelete(model: RestoreModel): void {\n const redoStep = new DeleteModel({ startIndex: model.startIndex, endIndex: model.startIndex + model.text.length });\n model.endIndex = model.startIndex;\n this.addToHistory(model, redoStep);\n }\n\n pushApplyTextStyle(startIndex: number, endIndex: number, style: TextStyleModel, formats: FormatModel[]): void {\n const redoStep = new ApplyTextStyleModel({ startIndex, endIndex, textStyle: style });\n const undoStep = new RestoreTextStylesModel({ formats });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushApplyParagraphStyle(startIndex: number, endIndex: number, style: ParagraphStyleModel, paragraphs: ParagraphModel[]): void {\n const redoStep = new ApplyParagraphStyleModel({ startIndex, endIndex, paragraphStyle: style });\n const undoStep = new RestoreParagraphStylesModel({ paragraphs });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushApplyElementStyle(previous: ElementModel, current: ElementModel): void {\n const redoStep = new ApplyElementStyleModel({ insertIndex: current.insertIndex, width: current.width, height: current.height });\n const undoStep = new ApplyElementStyleModel({ insertIndex: previous.insertIndex, width: previous.width, height: previous.height });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushInsertTableRows(insertIndex: number, rowsCount: number, targetIndex: number, inheritIndex: number, table: TableModel): void {\n const oldTable = JSON.parse(JSON.stringify(table));\n const redoStep = new InsertTableRowsModel({ insertIndex, rowsCount, targetIndex, inheritIndex });\n const undoStep = new RestoreTableModel({ insertIndex, oldTable });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushInsertTableColumns(insertIndex: number, columnsCount: number, targetIndex: number, inheritIndex: number, table: TableModel): void {\n const oldTable = JSON.parse(JSON.stringify(table));\n const redoStep = new InsertTableColumnsModel({ insertIndex, columnsCount, targetIndex, inheritIndex });\n const undoStep = new RestoreTableModel({ insertIndex, oldTable });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushRemoveTableRows(insertIndex: number, startIndex: number, endIndex: number, table: TableModel): void {\n const oldTable = JSON.parse(JSON.stringify(table));\n const redoStep = new RemoveTableRowsModel({ insertIndex, startIndex, endIndex });\n const undoStep = new RestoreTableModel({ insertIndex, oldTable });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushRemoveTableColumns(insertIndex: number, startIndex: number, endIndex: number, table: TableModel): void {\n const oldTable = JSON.parse(JSON.stringify(table));\n const redoStep = new RemoveTableColumnsModel({ insertIndex, startIndex, endIndex });\n const undoStep = new RestoreTableModel({ insertIndex, oldTable });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushResizeTableColumns(resizeTableColumns: ResizeTableColumnsModel): void {\n const redoStep = new ResizeTableColumnsModel({\n cellIndex: resizeTableColumns.cellIndex,\n columnIndex: resizeTableColumns.columnIndex,\n distance: resizeTableColumns.distance,\n insertIndex: resizeTableColumns.insertIndex,\n resizerSide: resizeTableColumns.resizerSide,\n rowIndex: resizeTableColumns.rowIndex\n });\n const undoStep = new ResizeTableColumnsModel({\n cellIndex: resizeTableColumns.cellIndex,\n columnIndex: resizeTableColumns.columnIndex,\n distance: -resizeTableColumns.distance,\n insertIndex: resizeTableColumns.insertIndex,\n resizerSide: resizeTableColumns.resizerSide,\n rowIndex: resizeTableColumns.rowIndex\n });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushApplyImageStyle(previous: ImageModel, current: ImageModel): void {\n const redoStep = new ApplyImageStyleModel({ insertIndex: current.insertIndex, width: current.width, height: current.height });\n const undoStep = new ApplyImageStyleModel({ insertIndex: previous.insertIndex, width: previous.width, height: previous.height });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushAddNumbering(\n startIndex: number,\n endIndex: number,\n levels: NumberingLevelModel[],\n paragraphs: ParagraphModel[],\n numberings: NumberingModel[]\n ): void {\n const redoStep = new AddNumberingModel({ startIndex, endIndex, levels });\n const undoStep = new RestoreNumberingsModel({ paragraphs, numberings });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushRemoveNumberings(startIndex: number, endIndex: number, numberings: NumberingModel[], paragraphs: ParagraphModel[]): void {\n const redoStep = new RemoveNumberingsModel({ startIndex, endIndex });\n const undoStep = new RestoreNumberingsModel({ numberings, paragraphs });\n this.addToHistory(undoStep, redoStep);\n }\n\n pushReplace(restore: RestoreModel, replace: ReplaceModel): void {\n const length = replace.insertText ? replace.insertText.text.length : 1;\n restore.endIndex = restore.startIndex + length;\n this.addToHistory(restore, replace);\n }\n\n popUndoOperation(): { operation: Operation | null; targets: TargetModel[]; cursor: Point; anchor: Point | null } | null {\n if (this.step === -1) {\n return null;\n }\n const operation = this.storage[this.step].undo;\n const targets = this.storage[this.step].targets;\n const cursor = this.storage[this.step].cursor;\n const anchor = this.storage[this.step].anchor;\n this.step--;\n this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);\n return { operation, targets, cursor, anchor };\n }\n\n popRedoOperation(): { operation: Operation | null; targets: TargetModel[]; cursor: Point; anchor: Point | null } | null {\n if (this.step >= this.storage.length - 1) {\n return null;\n }\n this.step++;\n const operation = this.storage[this.step].redo;\n const targets = this.storage[this.step].targets;\n const cursor = this.storage[this.step].cursor;\n const anchor = this.storage[this.step].anchor;\n this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);\n return { operation, targets, cursor, anchor };\n }\n\n private addToHistory(undoStep: Operation, redoStep: Operation): void {\n const targets = this.regulatorService.getCurrentSessionTargets();\n const cursor = this.regulatorService.selection.cursor;\n const anchor = this.regulatorService.selection.anchor;\n this.step++;\n this.storage.splice(this.step, this.storage.length);\n this.storage.push({ undo: undoStep, redo: redoStep, targets, cursor, anchor });\n if (this.storage.length > this.MAX_HISTORY) {\n this.storage.splice(0, 1);\n this.step--;\n }\n\n this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);\n }\n}\n","import { PageType } from '../enums/page-type.enum';\nimport { PageVerticalDataModel } from '../paging/page-vertical-data.model';\n\nexport class PageHelper {\n static getVerticalData(page: number, pagesVerticalData: PageVerticalDataModel[]): PageVerticalDataModel {\n const defaultVerticalData = pagesVerticalData.find(x => x.pageType === PageType.Default);\n if (page === 1) {\n return pagesVerticalData.find(x => x.pageType === PageType.First) || defaultVerticalData;\n }\n\n const targetType = page % 2 === 0 ? PageType.Even : PageType.Default;\n return pagesVerticalData.find(x => x.pageType === targetType) || defaultVerticalData;\n }\n}\n","import { ParagraphStyleModel } from './paragraph-style.model';\n\nexport class ParagraphModel {\n public insertIndex: number;\n public paragraphStyle: ParagraphStyleModel;\n\n public constructor(\n fields?: Partial<ParagraphModel>) {\n\n if (fields) {\n if (fields.paragraphStyle) { fields.paragraphStyle = new ParagraphStyleModel(fields.paragraphStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export const DisplayValue = {\n char: 1,\n customContent: 3,\n punctuation: 9,\n space: 10,\n emptyLine: 13\n};\n","import { DisplayToken } from '../models/display-token.model';\nimport { EditSession } from '../edit.session';\nimport { Point } from '../point';\n\nexport class LineWidthHelper {\n static getParagraphLineDisplayTokens(session: EditSession, paragraphIndex: number, lineIndex: number): DisplayToken[] {\n const docPos = session.document.positionToIndex(session.document.lines, new Point(paragraphIndex, 0), 0);\n const rowWrap = session.wrapData[paragraphIndex] || [];\n const startWrapIndex = lineIndex > 0 ? rowWrap[lineIndex - 1] : 0;\n const endIndex = rowWrap[lineIndex];\n const docLine = session.document.getLine(session.document.lines, paragraphIndex);\n const offset = startWrapIndex ? docPos + startWrapIndex : docPos;\n\n return session.getDisplayTokens(\n session.model,\n docLine.substring(startWrapIndex, endIndex || undefined),\n offset,\n session.customComponents\n );\n }\n}\n","import { CursorPosition } from '../interfaces/cursor-position.interface';\nimport { DisplayValue } from '../constants/display-values.const';\nimport { EditSession } from '../edit.session';\nimport { IFontMetricSize } from '../interfaces/font-metric-size.interface';\nimport { LineWidthHelper } from './line-width.helper';\nimport { Paragraph } from '../paging/paragraph';\nimport { ParagraphInfo } from '../interfaces/paragraph-info.interface';\nimport { Point } from '../point';\n\nexport class PositionHelper {\n /**\n * Returns an object containing the `pageX` and `pageY` coordinates of the document position.\n */\n static documentToPixel(session: EditSession, documentPosition: Point): CursorPosition {\n const screenPosition = this.documentToScreen(session, documentPosition.row, documentPosition.column);\n\n return this.screenToPixel(session, screenPosition.row, screenPosition.column);\n }\n\n /**\n * Get paragraph info (paragraph index, paragraph line index, line top offset and others) by row index\n **/\n static getParagraphInfoByRow(paragraphs: Paragraph[], row: number): ParagraphInfo {\n const { paragraphIndex, lineIndex } = this.findLineInParagraphs(paragraphs, row);\n let lineTopOffset = 0;\n for (let i = 0; i < lineIndex; i++) {\n const info = paragraphs[paragraphIndex].textLinesInfo[i];\n lineTopOffset += info.height + info.endPageOffset + info.offsetBefore + info.offsetAfter;\n }\n\n const paragraphLineInfo = paragraphs[paragraphIndex].textLinesInfo[lineIndex];\n lineTopOffset += paragraphLineInfo.offsetBefore;\n\n return {\n paragraphIndex,\n lineIndex,\n lineTopOffset,\n indentBefore: paragraphLineInfo.offsetBefore,\n lineHeight: paragraphLineInfo.height\n };\n }\n\n static documentToScreen(session: EditSession, paragraph: number, indexInParagraph: number): Point {\n const paragraphLine = session.wrapParagraphLine[paragraph];\n if (!session.wrapData[paragraph].length || session.wrapData[paragraph][0] > indexInParagraph) {\n return new Point(paragraphLine, indexInParagraph);\n }\n\n let line = 0;\n while (session.wrapData[paragraph][line] <= indexInParagraph && line < session.wrapData[paragraph].length) {\n line++;\n }\n const index = indexInParagraph - session.wrapData[paragraph][line - 1];\n return new Point(paragraphLine + line, index);\n }\n\n static screenToDocument(session: EditSession, line: number, indexInLine: number): Point {\n let paragraph = session.wrapParagraphLine.findIndex(x => x > line);\n if (paragraph === -1) {\n paragraph = session.wrapParagraphLine.length - 1;\n } else if (paragraph > 0) {\n paragraph = paragraph - 1;\n }\n let lineInParagraph = line - session.wrapParagraphLine[paragraph];\n if (!session.wrapData[paragraph].length || lineInParagraph === 0) {\n return new Point(paragraph, indexInLine);\n }\n const index = indexInLine + session.wrapData[paragraph][lineInParagraph - 1];\n return new Point(paragraph, index);\n }\n\n /**\n * Returns an object containing the `pageX` and `pageY` coordinates of the document position.\n **/\n static screenToPixel(session: EditSession, row: number, column: number): CursorPosition {\n const paragraphs = session.pagesWrap.paragraphs;\n const paragraphInfo = this.getParagraphInfoByRow(paragraphs, row);\n const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphInfo.paragraphIndex, paragraphInfo.lineIndex);\n\n let size: IFontMetricSize = {\n width: 8,\n height: paragraphInfo.lineHeight,\n baseline: paragraphInfo.lineHeight,\n content: paragraphInfo.lineHeight,\n font: paragraphInfo.lineHeight,\n line: paragraphInfo.lineHeight,\n multiplier: paragraphInfo.lineHeight,\n ascent: 0,\n descent: 0\n };\n let tokenIndex = column > 0 ? column - 1 : column;\n if (tokens.length > 0) {\n size = tokens[tokenIndex];\n }\n\n const sizeNext = tokens[tokenIndex + 1];\n let sizeMax = { ...size };\n let lineWidthToPosition = session.pagesWrap.documentMargin.left;\n for (let currentColumn = 0; currentColumn < tokens.length; currentColumn++) {\n if (currentColumn < column) {\n lineWidthToPosition += tokens[currentColumn].width;\n }\n\n if (sizeMax.ascent < tokens[currentColumn].ascent) {\n sizeMax = tokens[currentColumn];\n }\n }\n\n const paragraph = paragraphs[paragraphInfo.paragraphIndex];\n const paragraphTop = paragraph.distanceFromTop || 0;\n const linePaddingLeft = paragraph.textLinesInfo[paragraphInfo.lineIndex].paddingLeft;\n\n return {\n pageX: lineWidthToPosition + linePaddingLeft,\n pageY: paragraphTop + paragraphInfo.lineTopOffset - session.scrollTop,\n lineHeight: paragraphInfo.lineHeight,\n sizeCurrent: size,\n sizeMax,\n sizeNext,\n firstChar: column === 0,\n lastChar: column === tokens.length - 1\n };\n }\n\n /**\n * Converts pixel position to screen position\n **/\n static pixelToScreen(session: EditSession, x: number, y: number, scrollerPosition: { top: number; left: number }): Point {\n const wrap = session.pagesWrap;\n const scrollTop = session.scrollTop;\n\n let yPos = y + scrollTop - scrollerPosition.top;\n let paragraphIndex = wrap.paragraphs.findIndex(paragraph => paragraph.distanceFromTop > yPos);\n if (paragraphIndex < 0) {\n paragraphIndex = wrap.paragraphs.length - 1;\n } else if (paragraphIndex > 0) {\n paragraphIndex--;\n }\n\n const paragraph = wrap.paragraphs[paragraphIndex];\n yPos -= paragraph.distanceFromTop;\n let lineIndex = 0;\n while (yPos > 0 && lineIndex < paragraph.textLinesInfo.length - 1) {\n const line = paragraph.textLinesInfo[lineIndex];\n const width = line.height + line.endPageOffset + line.offsetBefore + line.offsetAfter;\n if (yPos <= width) {\n break;\n }\n lineIndex++;\n yPos -= width;\n }\n const line = paragraph.textLinesInfo[lineIndex].screenLine;\n\n let index = 0;\n let xPos = x - scrollerPosition.left - wrap.documentMargin.left - paragraph.textLinesInfo[lineIndex].paddingLeft;\n const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphIndex, lineIndex);\n if (tokens[0].displayValue === DisplayValue.emptyLine) {\n return new Point(line, index);\n }\n\n while (tokens.length > index) {\n if (xPos < tokens[index].width / 2) {\n break;\n }\n\n xPos -= tokens[index].width;\n index++;\n }\n return new Point(line, index);\n }\n\n static findLineInParagraphs(paragraphs: Paragraph[], documentLine: number): { paragraphIndex: number; lineIndex: number } {\n let index = 0;\n let paragraphIndex = 0;\n while (paragraphIndex < paragraphs.length) {\n if (index + paragraphs[paragraphIndex].textLinesInfo.length > documentLine) {\n break;\n }\n\n index += paragraphs[paragraphIndex].textLinesInfo.length;\n paragraphIndex++;\n }\n const lineIndex = documentLine - index;\n return { paragraphIndex, lineIndex };\n }\n\n static getApproximatePosition(session: EditSession, documentLine: number, positionWidth: number): number {\n const paragraphs = session.pagesWrap.paragraphs;\n const documentMargin = session.pagesWrap.documentMargin;\n const { paragraphIndex, lineIndex } = PositionHelper.findLineInParagraphs(paragraphs, documentLine);\n let column = 0;\n const tokens = LineWidthHelper.getParagraphLineDisplayTokens(session, paragraphIndex, lineIndex);\n if (tokens.length === 1 && tokens[0].displayValue === DisplayValue.emptyLine) {\n return column;\n }\n\n const textLineInfo = paragraphs[paragraphIndex].textLinesInfo[lineIndex];\n let width = positionWidth - textLineInfo.paddingLeft - documentMargin.left;\n while (column < tokens.length && width >= tokens[column].width) {\n width -= tokens[column].width;\n column++;\n }\n return column;\n }\n\n static pixelToPage(posY: number, session: EditSession): number {\n const pagesCount = session.pagesWrap.paragraphs[session.pagesWrap.paragraphs.length - 1].lastPageNumber;\n let page = 1;\n while (page <= pagesCount) {\n const endPagePosition = (session.pagesWrap.pagesSpace + session.pagesWrap.pageHeight) * page;\n if (endPagePosition >= posY) {\n break;\n }\n page++;\n }\n return page;\n }\n}\n","export class DistanceModel {\n end: number;\n selectionEnd: number;\n start: number;\n\n constructor(fields?: Partial<DistanceModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n this.selectionEnd = this.end > 0 ? this.end - 1 : 0;\n }\n}\n","import { PageType } from '../enums/page-type.enum';\n\nexport class EdgeElementModel {\n element: HTMLElement;\n page: number;\n pageType: PageType;\n\n constructor(fields?: Partial<EdgeElementModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n}\n","export const ContentStyleChange = {\n bold: 1,\n fontColor: 2,\n highlightColor: 4,\n font: 8,\n italic: 16,\n size: 32,\n underline: 64,\n alignment: 128,\n indentleft: 256,\n indentright: 512,\n spacebefore: 1024,\n spaceafter: 2048\n};\n","import { Alignment } from '../constants/alignments.const';\nimport { ContentStyleChange } from '../constants/content-style-change.const';\nimport { DEFAULT_BACKGROUND_COLOR, DEFAULT_FONT_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE } from '../constants/editor.const';\nimport { FormatModel } from '../../../../models/generated/format.model';\nimport { FormatStyleHelper } from './format-style.helper';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class ContentStyleHelper {\n static getDefaultStyleValueByKey(key: string): any {\n switch (key) {\n case 'fontFamily':\n return DEFAULT_FONT_FAMILY;\n case 'fontSize':\n return DEFAULT_FONT_SIZE;\n case 'fontColor':\n return DEFAULT_FONT_COLOR;\n case 'highlightColor':\n return DEFAULT_BACKGROUND_COLOR;\n case 'alignment':\n return Alignment.left;\n default:\n return;\n }\n }\n\n static getTextStylesString(textStyle: TextStyleModel): string {\n let result = '';\n if (textStyle.fontSize) {\n result += `font-size:${textStyle.fontSize}pt;`;\n }\n\n if (textStyle.fontFamily) {\n result += `font-family:${textStyle.fontFamily};`;\n }\n\n if (textStyle.fontColor) {\n result += `color:${textStyle.fontColor};`;\n }\n\n if (textStyle.highlightColor) {\n result += `background-color:${textStyle.highlightColor};`;\n }\n\n if (textStyle.bold) {\n result += 'font-weight:bold;';\n }\n\n if (textStyle.italic) {\n result += 'font-style:italic;';\n }\n\n if (textStyle.underline) {\n result += 'text-decoration:underline;';\n }\n\n return result;\n }\n\n /**\n * Returns font styles string from modifier used for canvas calculation\n */\n static getFontStylesString(textStyle: TextStyleModel): string {\n let fontString = '';\n if (!textStyle) {\n return fontString;\n }\n\n if (textStyle.italic) {\n fontString += 'italic ';\n }\n\n if (textStyle.bold) {\n fontString += 'bold ';\n }\n\n if (textStyle.fontSize) {\n fontString += `${textStyle.fontSize}pt `;\n }\n\n if (textStyle.fontFamily) {\n fontString += textStyle.fontFamily;\n }\n\n return fontString;\n }\n\n static getTextStyleChanges(first: TextStyleModel, second: TextStyleModel): number {\n let result = 0;\n if (!first || !second) {\n return result;\n }\n\n if (typeof second.bold === 'boolean' && first.bold !== second.bold) {\n result |= ContentStyleChange.bold;\n }\n\n if (second.fontColor && first.fontColor !== second.fontColor) {\n result |= ContentStyleChange.fontColor;\n }\n\n if (second.highlightColor && first.highlightColor !== second.highlightColor) {\n result |= ContentStyleChange.highlightColor;\n }\n\n if (second.fontFamily && first.fontFamily !== second.fontFamily) {\n result |= ContentStyleChange.font;\n }\n\n if (typeof second.italic === 'boolean' && first.italic !== second.italic) {\n result |= ContentStyleChange.italic;\n }\n\n if (second.fontSize > 0 && first.fontSize !== second.fontSize) {\n result |= ContentStyleChange.size;\n }\n\n if (typeof second.underline === 'boolean' && first.underline !== second.underline) {\n result |= ContentStyleChange.underline;\n }\n\n return result;\n }\n\n /**\n * Apply changes to model based on the provided changesType\n */\n static applyTextStyleChanges(first: TextStyleModel, second: TextStyleModel, changes: number): void {\n if (changes & ContentStyleChange.bold) {\n first.bold = second.bold;\n }\n\n if (changes & ContentStyleChange.fontColor) {\n first.fontColor = second.fontColor;\n }\n\n if (changes & ContentStyleChange.highlightColor) {\n first.highlightColor = second.highlightColor;\n }\n\n if (changes & ContentStyleChange.font) {\n first.fontFamily = second.fontFamily;\n }\n\n if (changes & ContentStyleChange.italic) {\n first.italic = second.italic;\n }\n\n if (changes & ContentStyleChange.size) {\n first.fontSize = second.fontSize;\n }\n\n if (changes & ContentStyleChange.underline) {\n first.underline = second.underline;\n }\n }\n\n static applyTextStyles(formats: FormatModel[], startIndex: number, endIndex: number, cursorStyle: TextStyleModel): void {\n let firstIndex = formats.findIndex(x => x.endIndex >= startIndex);\n if (formats[firstIndex].startIndex < startIndex) {\n const model = new FormatModel({\n startIndex: formats[firstIndex].startIndex,\n endIndex: startIndex - 1,\n textStyle: new TextStyleModel(formats[firstIndex].textStyle)\n });\n formats[firstIndex].startIndex = startIndex;\n formats.splice(firstIndex, 0, model);\n firstIndex++;\n }\n let lastIndex = firstIndex;\n while (formats[lastIndex].endIndex < endIndex) {\n lastIndex++;\n }\n if (formats[lastIndex].endIndex > endIndex) {\n const model = new FormatModel({\n startIndex: endIndex + 1,\n endIndex: formats[lastIndex].endIndex,\n textStyle: new TextStyleModel(formats[lastIndex].textStyle)\n });\n formats[lastIndex].endIndex = endIndex;\n formats.splice(lastIndex + 1, 0, model);\n }\n for (let i = firstIndex; i <= lastIndex; i++) {\n FormatStyleHelper.applyTextStyles(formats[i].textStyle, cursorStyle);\n }\n FormatStyleHelper.mergeFormats(formats, startIndex - 1, endIndex + 1);\n }\n}\n","import { FormatModel } from '../../../../models/generated/format.model';\n\nexport class FormatExtModel extends FormatModel {\n content: string;\n\n constructor(fields?: Partial<FormatExtModel>) {\n super(fields);\n\n if (fields) {\n Object.assign(this, fields);\n }\n }\n}\n","import { ComponentRef } from '@angular/core';\n\nimport { BreakHelper } from '../../helpers/break.helper';\nimport { BreakModel } from '../../../../models/generated/break.model';\nimport { ContentStyleHelper } from './content-style.helper';\nimport { CustomContentService } from '../../custom-components/shared/services/custom-content/custom-content.service';\nimport { DistanceModel } from '../models/distance.model';\nimport { DomHelper } from './dom.helper';\nimport { FormatExtModel } from '../models/format-ext.model';\nimport { HYPERLINK_FONT_COLOR, HYPERLINK_HEADING_STYLE_ID, NEW_LINE_MARKUP } from '../constants/editor.const';\nimport { ICustomComponents } from '../../custom-components/shared/interfaces/custom-components.interface';\nimport { Paragraph } from '../paging/paragraph';\nimport { TextLineInfo } from '../paging/text-line-info';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class RenderingHelper {\n static createLineElement(lineInfo: TextLineInfo, numberingOffsetLeft: number): HTMLElement {\n let lineEl = document.createElement('div');\n lineEl.className = 'ace-line';\n\n if (lineInfo) {\n const paddingLeft = lineInfo.paddingLeft - numberingOffsetLeft;\n const marginLeft = paddingLeft < 0 ? paddingLeft : 0;\n\n lineEl.setAttribute(\n 'style',\n // eslint-disable-next-line prettier/prettier\n `padding-left:${paddingLeft}px;height:${lineInfo.height + lineInfo.offsetAfter}px;margin-top:${\n lineInfo.offsetBefore\n }px;margin-bottom:${lineInfo.endPageOffset}px;margin-left:${marginLeft}px;background-color:${lineInfo.backgroundColor}`\n );\n lineEl.setAttribute('screen-index', `${lineInfo.screenLine}`);\n }\n\n return lineEl;\n }\n\n static renderContentSimpleLine(\n domContent: { currentElement: HTMLElement; parentNode: Node },\n formatsExt: FormatExtModel[],\n rowDistance: DistanceModel,\n customContentService: CustomContentService,\n customComponents: ICustomComponents,\n breaks: BreakModel[] = []\n ): void {\n const valueFragment = DomHelper.createFragment(domContent.currentElement);\n for (const formatExt of formatsExt) {\n const fragmentDocumentStartIndex = rowDistance.start > formatExt.startIndex ? rowDistance.start : formatExt.startIndex;\n const fragmentDocumentEndIndex = formatExt.endIndex > rowDistance.end ? rowDistance.end : formatExt.endIndex;\n const fragmentDocumentDistance = new DistanceModel({ start: fragmentDocumentStartIndex, end: fragmentDocumentEndIndex });\n const fragmentStartIndex = rowDistance.start > formatExt.startIndex ? rowDistance.start - formatExt.startIndex : 0;\n const fragmentEndIndex =\n formatExt.endIndex > rowDistance.end ? rowDistance.end - formatExt.startIndex : formatExt.endIndex - formatExt.startIndex;\n const fragmentDistance = new DistanceModel({ start: fragmentStartIndex, end: fragmentEndIndex });\n this.renderFormatContent(\n valueFragment,\n formatExt,\n fragmentDocumentDistance,\n fragmentDistance,\n customContentService,\n customComponents,\n breaks\n );\n }\n\n domContent.parentNode.appendChild(valueFragment);\n }\n\n static renderContentWrappedLine(\n domContent: { currentElement: HTMLElement; parentNode: Node },\n splits: number[],\n currentParagraph: Paragraph,\n formatsExt: FormatExtModel[],\n distance: DistanceModel,\n customContentService: CustomContentService,\n customComponents: ICustomComponents,\n breaks: BreakModel[] = []\n ): void {\n let splitIndex = 0;\n const numberingOffsetLeft =\n currentParagraph.numberingData.numberingId === null\n ? 0\n : currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;\n let lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft);\n domContent.parentNode.appendChild(lineEl);\n\n const valueFragment = DomHelper.createFragment(domContent.currentElement);\n let paragraphChars = 0;\n let split = splits[splitIndex];\n for (const formatExt of formatsExt) {\n const beforeSplitIndex = split ? split - 1 : distance.end - distance.start;\n const beforeSplitDocumentIndex = distance.start + beforeSplitIndex;\n const fragmentDocumentStartIndex = distance.start + paragraphChars;\n const fragmentDocumentEndIndex = formatExt.endIndex < beforeSplitDocumentIndex ? formatExt.endIndex : beforeSplitDocumentIndex;\n const fragmentDocumentDistance = new DistanceModel({ start: fragmentDocumentStartIndex, end: fragmentDocumentEndIndex });\n const fragmentStartIndex = distance.start > formatExt.startIndex ? distance.start - formatExt.startIndex : 0;\n const fragmentEndIndex =\n formatExt.endIndex < beforeSplitDocumentIndex\n ? fragmentStartIndex + formatExt.endIndex - formatExt.startIndex\n : distance.start + beforeSplitIndex - formatExt.startIndex;\n const fragmentDistance = new DistanceModel({ start: fragmentStartIndex, end: fragmentEndIndex });\n paragraphChars += this.renderFormatContent(\n valueFragment,\n formatExt,\n fragmentDocumentDistance,\n fragmentDistance,\n customContentService,\n customComponents,\n breaks\n );\n lineEl.appendChild(valueFragment);\n let nextFragmentStartIndex = fragmentEndIndex + 1;\n while (paragraphChars === split && nextFragmentStartIndex !== distance.end) {\n split = splits[++splitIndex];\n const nextFragmentDocumentStartIndex = fragmentDocumentStartIndex + nextFragmentStartIndex - fragmentStartIndex;\n lineEl = RenderingHelper.createLineElement(currentParagraph.textLinesInfo[splitIndex], numberingOffsetLeft);\n if (split > formatExt.endIndex) {\n const nextFragmentEndIndex = formatExt.content.length - 1;\n const nextFragmentDistance = new DistanceModel({ start: nextFragmentStartIndex, end: nextFragmentEndIndex });\n const nextFragmentDocumentEndIndex = nextFragmentDocumentStartIndex + nextFragmentEndIndex - nextFragmentStartIndex;\n const nextFragmentDocumentDistance = new DistanceModel({\n start: nextFragmentDocumentStartIndex,\n end: nextFragmentDocumentEndIndex\n });\n paragraphChars += this.renderFormatContent(\n valueFragment,\n formatExt,\n nextFragmentDocumentDistance,\n nextFragmentDistance,\n customContentService,\n customComponents,\n breaks\n );\n lineEl.appendChild(valueFragment);\n domContent.parentNode.appendChild(lineEl);\n\n break;\n }\n\n const textIndexLength = RenderingHelper.getTextIndexLengthForInsert(\n formatExt,\n nextFragmentDocumentStartIndex,\n distance,\n split,\n paragraphChars\n );\n const nextFragmentDocumentEndIndex = nextFragmentDocumentStartIndex + textIndexLength;\n const nextFragmentEndIndex = nextFragmentStartIndex + textIndexLength;\n const nextFragmentDistance = new DistanceModel({ start: nextFragmentStartIndex, end: nextFragmentEndIndex });\n const nextFragmentDocumentDistance = new DistanceModel({\n start: nextFragmentDocumentStartIndex,\n end: nextFragmentDocumentEndIndex\n });\n const renderedChars = this.renderFormatContent(\n valueFragment,\n formatExt,\n nextFragmentDocumentDistance,\n nextFragmentDistance,\n customContentService,\n customComponents,\n breaks\n );\n lineEl.appendChild(valueFragment);\n domContent.parentNode.appendChild(lineEl);\n nextFragmentStartIndex += renderedChars;\n paragraphChars += renderedChars;\n }\n }\n }\n\n static renderNumberingMarker(paragraph: Paragraph, layerElement: HTMLElement): HTMLElement {\n const markerHeight = paragraph.numberingData.height;\n\n const markerLineInfo = {\n paddingLeft: paragraph.numberingData.paddingLeft,\n height: markerHeight,\n offsetBefore: 0,\n firstLinePageOffset: 0,\n endPageOffset: 0,\n offsetAfter: 0,\n screenLine: 0\n } as TextLineInfo;\n const numberingLineEl = this.createLineElement(markerLineInfo, 0);\n\n const markerFragment = DomHelper.createFragment(layerElement);\n const marker = paragraph.numberingData.marker;\n const markerExtModel = new FormatExtModel({\n textStyle: paragraph.numberingData.markerTextStyle,\n content: marker\n });\n this.renderText(markerFragment, markerExtModel, marker);\n numberingLineEl.appendChild(markerFragment);\n\n return numberingLineEl;\n }\n\n static createDivContainer(className: string): HTMLDivElement {\n const containerElement = document.createElement('div');\n containerElement.className = className;\n\n return containerElement;\n }\n\n private static renderFormatContent(\n fragment: DocumentFragment,\n formatExt: FormatExtModel,\n fragmentDocumentDistance: DistanceModel,\n fragmentDistance: DistanceModel,\n customContentService: CustomContentService,\n customComponents: ICustomComponents,\n breaks: BreakModel[]\n ): number {\n let textFragment = formatExt.content.substring(fragmentDistance.start, fragmentDistance.end + 1);\n if (!textFragment) {\n return 0;\n }\n\n const textFragmentWithoutBreaks = BreakHelper.removeBreakMarker(breaks, textFragment, fragmentDocumentDistance.start);\n\n if (customContentService.isFragmentContainComponent(customComponents, textFragment, fragmentDocumentDistance)) {\n this.renderTextWithCustomContent(\n fragment,\n formatExt,\n fragmentDocumentDistance,\n textFragmentWithoutBreaks,\n customContentService,\n customComponents\n );\n } else {\n RenderingHelper.renderText(fragment, formatExt, textFragmentWithoutBreaks);\n }\n\n return textFragment.length;\n }\n\n private static renderTextWithCustomContent(\n fragment: DocumentFragment,\n formatExt: FormatExtModel,\n fragmentDocumentDistance: DistanceModel,\n textFragment: string,\n customContentService: CustomContentService,\n customComponents: ICustomComponents\n ): void {\n const components = customContentService.getComponents(customComponents, fragmentDocumentDistance);\n\n if (!components.length) {\n RenderingHelper.renderText(fragment, formatExt, textFragment);\n return;\n }\n\n let newTextFragmentStartIndex = fragmentDocumentDistance.start;\n let nextTextFragment = textFragment;\n\n for (const component of components) {\n const textBeforeElement = nextTextFragment.substring(0, component.instance.insertIndex - newTextFragmentStartIndex);\n nextTextFragment = nextTextFragment.substring(textBeforeElement.length + 1, nextTextFragment.length);\n newTextFragmentStartIndex = newTextFragmentStartIndex + (textBeforeElement.length ? textBeforeElement.length + 1 : 1);\n\n if (textBeforeElement.length) {\n RenderingHelper.renderText(fragment, formatExt, textBeforeElement);\n }\n\n this.attachComponent(fragment, component, customContentService);\n }\n\n if (nextTextFragment.length) {\n RenderingHelper.renderText(fragment, formatExt, nextTextFragment);\n }\n }\n\n private static renderText(fragment: DocumentFragment, formatExt: FormatExtModel, textFragment: string): void {\n const span = document.createElement('span');\n const textStyle = new TextStyleModel({ ...formatExt.textStyle });\n\n if (textFragment === NEW_LINE_MARKUP) {\n span.className = 'paragraph-symbol';\n }\n\n if (textStyle.headingStyleId === HYPERLINK_HEADING_STYLE_ID) {\n textStyle.fontColor = HYPERLINK_FONT_COLOR;\n textStyle.underline = true;\n span.classList.add('hyperlink');\n span.onmousemove = event => {\n if (event.ctrlKey) {\n span.classList.add('hyperlink-hover');\n } else {\n span.classList.remove('hyperlink-hover');\n }\n };\n span.onmouseleave = () => span.classList.remove('hyperlink-hover');\n }\n\n span.textContent = textFragment;\n span.setAttribute('style', ContentStyleHelper.getTextStylesString(textStyle));\n fragment.appendChild(span);\n }\n\n private static getTextIndexLengthForInsert(\n formatExt: FormatExtModel,\n fragmentDocumentStartIndex: number,\n paragraphDistance: DistanceModel,\n split: number,\n paragraphChars: number\n ): number {\n const maxLength = Math.max(paragraphDistance.end - paragraphChars - paragraphDistance.start, 0);\n return (\n Math.min(\n split - paragraphChars || Number.MAX_VALUE,\n maxLength,\n formatExt.endIndex - fragmentDocumentStartIndex + 1,\n formatExt.content.length\n ) - 1\n );\n }\n\n protected static attachComponent(\n fragment: DocumentFragment,\n component: ComponentRef<unknown>,\n customContentService: CustomContentService\n ): void {\n customContentService.componentService.attachComponent(fragment, component);\n }\n}\n","import { ComponentRef, EmbeddedViewRef } from '@angular/core';\n\nimport { DomHelper } from '../helpers/dom.helper';\nimport { EdgeElementModel } from '../models/edge-element.model';\nimport { EdgeType } from '../components/edges/edge-type.enum';\nimport { EditorService } from '../../interaction/editor.service';\nimport { EditSession } from '../edit.session';\nimport { EventEmitting } from '../base/event-emitting';\nimport { ILayerConfig } from '../interfaces/layer.config';\nimport { NoderEdgeComponent } from '../components/edges/edge.component';\nimport { PageType } from '../enums/page-type.enum';\nimport { RenderingHelper } from '../helpers/rendering.helper';\n\nexport class EdgesLayer extends EventEmitting {\n element: HTMLElement;\n\n session: EditSession;\n\n config: ILayerConfig;\n\n edgeElements: EdgeElementModel[] = [];\n\n public constructor(parentElement: HTMLElement, private editorService: EditorService) {\n super();\n\n this.element = document.createElement('div');\n this.element.className = 'ace-layer ace-edges-layer';\n parentElement.insertAdjacentElement('afterbegin', this.element);\n }\n\n destroy(): void {\n this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n setSession(newSession: EditSession): void {\n this.session = newSession;\n this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n this.element.style.width = `${this.session.pagesWrap.pageWidth}px`;\n }\n\n update(config: ILayerConfig): void {\n DomHelper.translate(this.element, 0, -config.scrollTop);\n this.config = config;\n\n while (this.edgeElements.length) {\n const removedEl = this.edgeElements.pop();\n DomHelper.removeElement(removedEl.element);\n }\n\n this.renderPagesEdgeComponents(config.pages);\n }\n\n scrollPages(config: ILayerConfig): void {\n const oldConfig = this.config;\n this.config = config;\n DomHelper.translate(this.element, 0, -config.scrollTop);\n\n const removedPages = oldConfig.pages.filter(x => !config.pages.includes(x));\n this.removeRenderedComponents(removedPages);\n\n const newPages = config.pages.filter(x => !oldConfig.pages.includes(x));\n this.renderPagesEdgeComponents(newPages);\n }\n\n updateByLocation(updatedPageType: PageType): void {\n DomHelper.translate(this.element, 0, -this.config.scrollTop);\n let pagesToRender: number[] = [];\n for (let edgeElement of this.edgeElements) {\n if (edgeElement.pageType !== updatedPageType || pagesToRender.includes(edgeElement.page)) {\n continue;\n }\n\n pagesToRender.push(edgeElement.page);\n }\n this.removeRenderedComponents(pagesToRender);\n this.renderPagesEdgeComponents(pagesToRender);\n }\n\n protected getParagraphTop(topOffset: number, page: number): number {\n const paragraphTop = this.session.pagesWrap.pagesSpace + topOffset;\n return paragraphTop + (page - 1) * (this.session.pagesWrap.pageHeight + this.session.pagesWrap.pagesSpace);\n }\n\n private renderPagesEdgeComponents(pages: number[]): void {\n const pagesWrap = this.session.pagesWrap;\n for (let page of pages) {\n const header = this.session.customComponents.edges.getComponentByPage(page, EdgeType.Header);\n const headerHeight = this.session.customComponents.edges.getComponentHeight(page, EdgeType.Header);\n if (header) {\n this.renderEdgeComponent(header, headerHeight, page);\n }\n\n const footer = this.session.customComponents.edges.getComponentByPage(page, EdgeType.Footer);\n const footerHeight = this.session.customComponents.edges.getComponentHeight(page, EdgeType.Footer);\n if (footer) {\n const topOffset = pagesWrap.pageHeight - footerHeight;\n this.renderEdgeComponent(footer, footerHeight, page, topOffset);\n }\n }\n }\n\n private renderEdgeComponent(edgeComponent: ComponentRef<NoderEdgeComponent>, edgeHeight: number, page: number, topOffset = 0): void {\n const container = RenderingHelper.createDivContainer('ace-line-group');\n let paragraphTop = this.getParagraphTop(topOffset, page);\n DomHelper.setStyle(container.style, 'height', `${edgeHeight}px`);\n DomHelper.setStyle(container.style, 'top', `${paragraphTop}px`);\n\n const componentElement = (edgeComponent.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n const componentCopy = componentElement.cloneNode(true) as HTMLElement;\n componentCopy.setAttribute('data-session-id', `${edgeComponent.instance.sessionId}`);\n container.appendChild(componentCopy);\n this.element.appendChild(container);\n this.edgeElements.push(new EdgeElementModel({ page, element: container, pageType: edgeComponent.instance.model.pageType }));\n this.editorService.edgeElementCopyUpdated(componentCopy, page);\n }\n\n private removeRenderedComponents(removedPages: number[]): void {\n let removeIndex = this.edgeElements.findIndex(x => removedPages.includes(x.page));\n while (removeIndex !== -1) {\n const removedElement = this.edgeElements[removeIndex];\n DomHelper.removeElement(removedElement.element);\n this.edgeElements.splice(removeIndex, 1);\n removeIndex = this.edgeElements.findIndex(x => removedPages.includes(x.page));\n }\n }\n\n private pagesCountChangedHandler = (event: { pagesCount: number; pageHeight: number }) => {\n this.element.style.height = event.pagesCount * event.pageHeight + 'px';\n };\n}\n","import { EdgesLayer } from './edges.layer';\n\nexport class PrintEdgesLayer extends EdgesLayer {\n override getParagraphTop(topOffset: number, page: number): number {\n return topOffset + (page - 1) * this.session.pagesWrap.pageHeight;\n }\n}\n","import { DocumentInfo } from '../constants/document-info.const';\nimport { DomHelper } from '../helpers/dom.helper';\nimport { EditSession } from '../edit.session';\nimport { EventEmitting } from '../base/event-emitting';\nimport { ILayerConfig } from '../interfaces/layer.config';\n\nexport class PagesLayer extends EventEmitting {\n element: HTMLElement;\n\n session: EditSession;\n\n pageBreakElements: HTMLElement[] = [];\n\n minPageNumber: number;\n\n maxPageNumber: number;\n\n rulerLeft: HTMLElement;\n\n rulerRight: HTMLElement;\n\n get pageSize(): number {\n return this._pageSize || DocumentInfo.height;\n }\n private _pageSize: number;\n\n get pagesCount(): number {\n return this._pagesCount || 1;\n }\n private _pagesCount: number;\n\n public constructor(public parentElement: HTMLElement) {\n super();\n\n this.element = document.createElement('div');\n this.element.className = 'ace-layer ace_pages-layer';\n parentElement.insertAdjacentElement('afterbegin', this.element);\n this.setContainerSize();\n\n this.rulerLeft = document.createElement('div');\n this.rulerLeft.className = 'ruler-line';\n this.rulerRight = document.createElement('div');\n this.rulerRight.className = 'ruler-line';\n this.element.appendChild(this.rulerLeft);\n this.element.appendChild(this.rulerRight);\n }\n\n update(config: ILayerConfig): void {\n if (!this.session) {\n return;\n }\n\n DomHelper.translate(this.element, 0, -config.scrollTop);\n\n const pageSpace = this.getPageSpace();\n const pageHeight = this.session.pagesWrap.pageHeight;\n const pages = config.pages || [];\n let minPage = pages[0] || 1;\n const maxPage = pages[pages.length - 1] || 1;\n if (minPage > 1 && config.scrollTop <= (minPage - 1) * (pageHeight + pageSpace) + pageSpace) {\n minPage--;\n }\n\n if (this.minPageNumber !== minPage || this.maxPageNumber !== maxPage || minPage === 1) {\n this.minPageNumber = minPage;\n this.maxPageNumber = maxPage;\n this.removePages();\n this.addPages(pageSpace, pageHeight);\n }\n }\n\n setSession(session: EditSession): void {\n if (this.session) {\n this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n this.session = session;\n if (session) {\n this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n }\n\n showRullerLines(positions: number[]): void {\n if (!positions || positions.length !== 2) {\n DomHelper.removeCssClass(this.rulerLeft, 'visible');\n DomHelper.removeCssClass(this.rulerRight, 'visible');\n\n return;\n }\n\n DomHelper.setStyle(this.rulerLeft.style, 'left', `${positions[0]}px`);\n DomHelper.addCssClass(this.rulerLeft, 'visible');\n DomHelper.setStyle(this.rulerRight.style, 'left', `${positions[1]}px`);\n DomHelper.addCssClass(this.rulerRight, 'visible');\n }\n\n destroy(): void {\n this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n protected getPageSpace(): number {\n return this.session.pagesWrap.pagesSpace;\n }\n\n private removePages(): void {\n while (this.pageBreakElements?.length) {\n const element = this.pageBreakElements.pop();\n element.parentNode.removeChild(element);\n }\n }\n\n private addPages(pageSpace: number, pageHeight: number): void {\n for (let page = this.minPageNumber; page <= this.maxPageNumber; page++) {\n const element = document.createElement('div');\n element.className = 'page';\n element.style.height = `${pageHeight}px`;\n element.style.top = `${(page - 1) * (pageHeight + pageSpace) + pageSpace}px`;\n\n if (page > 1) {\n let pageLabel = document.createElement('span');\n pageLabel.className = 'page-label';\n pageLabel.innerText = `${page}.`;\n element.appendChild(pageLabel);\n }\n\n this.element.appendChild(element);\n this.pageBreakElements.push(element);\n }\n }\n\n private setContainerSize(): void {\n this.element.style.height = `${(this.pagesCount + 1) * this.pageSize}px`;\n }\n\n private pagesCountChangedHandler = (event: { pagesCount: number; pageHeight: number }): void => {\n if (this._pageSize === event.pageHeight && this._pagesCount === event.pagesCount) {\n return;\n }\n\n this._pageSize = event.pageHeight || DocumentInfo.height;\n this._pagesCount = event.pagesCount;\n this.setContainerSize();\n };\n}\n","import { PagesLayer } from './pages.layer';\n\nexport class PrintPagesLayer extends PagesLayer {\n override getPageSpace(): number {\n return 0;\n }\n}\n","import { ComponentRef } from '@angular/core';\n\nimport { CustomContentService } from '../../custom-components/shared/services/custom-content/custom-content.service';\nimport { RenderingHelper } from './rendering.helper';\n\nexport class PrintRenderingHelper extends RenderingHelper {\n static override attachComponent(\n fragment: DocumentFragment,\n component: ComponentRef<unknown>,\n customContentService: CustomContentService\n ): void {\n customContentService.componentService.cloneAndAttachComponent(fragment, component);\n }\n}\n","import { Cell } from '../interfaces/cell.interface';\nimport { DocumentInfo } from '../constants/document-info.const';\nimport { DomHelper } from '../helpers/dom.helper';\n\nexport class Lines {\n cells: Cell[] = [];\n\n cellCache: Cell[] = [];\n\n get length(): number {\n return this.cells.length;\n }\n\n get last(): Cell {\n return this.cells.length ? this.cells[this.cells.length - 1] : null;\n }\n\n get pageSize(): number {\n return this._pageSize || DocumentInfo.height;\n }\n private _pageSize: number;\n\n get pagesCount(): number {\n return this._pagesCount || 1; // default page count\n }\n private _pagesCount: number;\n\n constructor(public element: HTMLElement) {\n this.setContainerSize();\n }\n\n shift(): void {\n const cell = this.cells.shift();\n DomHelper.removeElement(cell.element);\n this.cacheCell(cell);\n }\n\n pop(): void {\n const cell = this.cells.pop();\n DomHelper.removeElement(cell.element);\n this.cacheCell(cell);\n }\n\n push(data: Cell | Cell[]): void {\n if (Array.isArray(data)) {\n this.cells.push(...data);\n const fragment = DomHelper.createFragment(this.element);\n for (const cell of data) {\n fragment.appendChild(cell.element);\n }\n\n this.element.appendChild(fragment);\n\n return;\n }\n\n this.cells.push(data);\n this.element.appendChild(data.element);\n }\n\n unshift(data: Cell | Cell[]): void {\n if (Array.isArray(data)) {\n this.cells.unshift(...data);\n const fragment = DomHelper.createFragment(this.element);\n for (const cell of data) {\n fragment.appendChild(cell.element);\n }\n\n if (this.element.firstChild) {\n this.element.insertBefore(fragment, this.element.firstChild);\n } else {\n this.element.appendChild(fragment);\n }\n\n return;\n }\n\n this.cells.unshift(data);\n this.element.insertAdjacentElement('afterbegin', data.element);\n }\n\n cacheCell(cell: Cell): void {\n if (!cell) {\n return;\n }\n\n this.cellCache.push(cell);\n }\n\n createCell(row: number, page = 0): Cell {\n let cell = this.cellCache.pop();\n if (!cell) {\n const element = document.createElement('div');\n this.element.appendChild(element);\n\n cell = {\n element,\n row,\n page\n };\n }\n\n cell.row = row;\n cell.page = page;\n\n return cell;\n }\n\n setSizes(pagesCount: number, pageHeight: number): void {\n if (this._pageSize === pageHeight && this._pagesCount === pagesCount) {\n return;\n }\n\n this._pageSize = pageHeight || DocumentInfo.height;\n this._pagesCount = pagesCount;\n this.setContainerSize();\n }\n\n private setContainerSize(): void {\n this.element.style.height = this.pagesCount * this.pageSize + 'px';\n }\n}\n","import { LineInfoModel } from '../models/line-info.model';\nimport { PageHelper } from './page.helper';\nimport { PageVerticalDataModel } from '../paging/page-vertical-data.model';\nimport { Paragraph } from '../paging/paragraph';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { TextLineInfo } from '../paging/text-line-info';\nimport { VisibleLineInfo } from '../interfaces/visible-line-info.interface';\n\nexport class ParagraphHelper {\n static processTextLinesProperties(\n currentParagraph: Paragraph,\n prevParagraphInfo: { lastPage: number; paragraphHeight: number; paragraphLastLine: number },\n pagesInfo: { pagesVerticalData: PageVerticalDataModel[]; pagesSpace: number }\n ): void {\n let currentPageContentHeight = prevParagraphInfo.paragraphHeight;\n let currentPage = prevParagraphInfo.lastPage;\n let previousLine: TextLineInfo | null = null;\n let currentPageVerticalData = PageHelper.getVerticalData(currentPage, pagesInfo.pagesVerticalData);\n for (const textLineInfo of currentParagraph.textLinesInfo) {\n textLineInfo.screenLine = ++prevParagraphInfo.paragraphLastLine;\n textLineInfo.firstLinePageOffset = 0;\n textLineInfo.endPageOffset = 0;\n let contentHeightWithLine = currentPageContentHeight + textLineInfo.height + textLineInfo.offsetBefore;\n const isFirstLineInDocument = prevParagraphInfo.paragraphLastLine === 0;\n if (\n !isFirstLineInDocument &&\n (contentHeightWithLine > currentPageVerticalData.contentHeight || textLineInfo.isAfterPageBreak)\n ) {\n const leftSpaceOnPage = currentPageVerticalData.contentHeight - currentPageContentHeight;\n contentHeightWithLine -= currentPageContentHeight;\n const nexPageVerticalData = PageHelper.getVerticalData(currentPage + 1, pagesInfo.pagesVerticalData);\n const lineSpaceBefore = pagesInfo.pagesSpace + currentPageVerticalData.marginBottom + nexPageVerticalData.marginTop;\n const pageOffset = lineSpaceBefore + leftSpaceOnPage;\n currentPage++;\n currentPageVerticalData = nexPageVerticalData;\n if (previousLine) {\n previousLine.endPageOffset = pageOffset;\n } else {\n currentParagraph.pagePreviousContentHeight = 0;\n textLineInfo.firstLinePageOffset = pageOffset;\n }\n }\n\n currentPageContentHeight = contentHeightWithLine + textLineInfo.offsetAfter;\n textLineInfo.page = currentPage;\n previousLine = textLineInfo;\n }\n }\n\n static processTextLinesPropertiesForSinglePage(\n currentParagraph: Paragraph,\n prevParagraphInfo: { lastPage: number; paragraphLastLine: number }\n ): void {\n for (const textLineInfo of currentParagraph.textLinesInfo) {\n textLineInfo.screenLine = ++prevParagraphInfo.paragraphLastLine;\n textLineInfo.firstLinePageOffset = 0;\n textLineInfo.endPageOffset = 0;\n textLineInfo.page = prevParagraphInfo.lastPage;\n }\n }\n\n static getVisibleLineInfo(paragraphTextLines: TextLineInfo[], offsetTop: number, direction: number): VisibleLineInfo {\n if (!paragraphTextLines) {\n return null;\n }\n\n let lineIndex = 0;\n while (lineIndex < paragraphTextLines.length) {\n const line = paragraphTextLines[lineIndex];\n if (offsetTop <= line.height + line.endPageOffset) {\n break;\n }\n\n offsetTop -= line.height + line.endPageOffset;\n lineIndex++;\n }\n\n const visibleLine = paragraphTextLines[lineIndex] || paragraphTextLines[lineIndex - 1];\n const screenIndex = visibleLine.screenLine;\n\n return {\n index: lineIndex,\n screenIndex: screenIndex,\n visibleScreenIndex: offsetTop > 0 ? screenIndex + direction : screenIndex\n };\n }\n\n static getParagraphPages(paragraphTextLinesInfo: TextLineInfo[]): number[] {\n const resultPages = [];\n paragraphTextLinesInfo.forEach(x => {\n if (!resultPages.includes(x.page)) {\n resultPages.push(x.page);\n }\n });\n\n return resultPages;\n }\n\n static getParagraphHeight(paragraphTextLinesInfo: TextLineInfo[]): number {\n return paragraphTextLinesInfo.reduce(\n (prev, next) => prev + next.height + next.endPageOffset + next.offsetBefore + next.offsetAfter,\n 0\n );\n }\n\n static getPageLinesHeight(paragraphTextLinesInfo: TextLineInfo[], page: number): number {\n return paragraphTextLinesInfo.filter(line => line.page === page).reduce((prev, next) => prev + next.height + next.offsetAfter, 0);\n }\n\n static processOffsetLineWithNumberingMarker(textLineInfo: TextLineInfo, markerHeight: number, offsetBefore: number): void {\n if (!markerHeight || textLineInfo.height >= markerHeight) {\n return;\n }\n\n textLineInfo.offsetBefore = offsetBefore + markerHeight - textLineInfo.height;\n }\n\n static applyParagraphIndentsToLines(lines: LineInfoModel[], paragraphIndex: number, paragraphs: ParagraphModel[]): void {\n const paragraph = paragraphs[paragraphIndex];\n const previousParagraph = paragraphs[paragraphIndex - 1];\n const nextParagraph = paragraphs[paragraphIndex + 1];\n const { spaceBefore, spaceAfter } = this.getParagraphCollapsedIndents(paragraph, previousParagraph, nextParagraph);\n if (paragraph?.paragraphStyle.contextualSpacing) {\n if (previousParagraph?.paragraphStyle.headingStyleId !== paragraph.paragraphStyle.headingStyleId) {\n lines[0].offsetBefore += spaceBefore;\n }\n\n if (nextParagraph?.paragraphStyle.headingStyleId !== paragraph.paragraphStyle.headingStyleId) {\n lines[lines.length - 1].offsetAfter += spaceAfter;\n }\n\n return;\n }\n\n lines[0].offsetBefore += spaceBefore;\n lines[lines.length - 1].offsetAfter += spaceAfter;\n }\n\n private static getParagraphCollapsedIndents(\n paragraph: ParagraphModel,\n previousParagraph: ParagraphModel | null,\n nextParagraph: ParagraphModel | null\n ): { spaceBefore: number; spaceAfter: number } {\n const autoSpacingOffset = 19;\n const indents = { spaceBefore: 0, spaceAfter: 0 };\n const paragraphStyle = paragraph.paragraphStyle;\n if (!previousParagraph || paragraphStyle.spaceBefore > previousParagraph.paragraphStyle.spaceAfter) {\n indents.spaceBefore = paragraphStyle.spaceBefore;\n }\n\n if (!nextParagraph || paragraphStyle.spaceAfter >= nextParagraph.paragraphStyle.spaceBefore) {\n indents.spaceAfter = paragraphStyle.spaceAfter;\n }\n\n if (paragraph?.paragraphStyle.beforeAutospacing) {\n if (!previousParagraph) {\n indents.spaceBefore = 0;\n } else if (paragraphStyle.spaceBefore > previousParagraph.paragraphStyle.spaceAfter) {\n indents.spaceBefore = autoSpacingOffset;\n }\n }\n\n if (paragraph?.paragraphStyle.afterAutospacing) {\n if (!nextParagraph) {\n indents.spaceAfter = 0;\n } else if (paragraphStyle.spaceAfter >= nextParagraph.paragraphStyle.spaceBefore) {\n indents.spaceAfter = autoSpacingOffset;\n }\n }\n\n return indents;\n }\n}\n","import { Cell } from '../interfaces/cell.interface';\nimport { DistanceModel } from '../models/distance.model';\nimport { DomHelper } from '../helpers/dom.helper';\nimport { EditSession } from '../edit.session';\nimport { EventEmitting } from '../base/event-emitting';\nimport { FormatExtModel } from '../models/format-ext.model';\nimport { FormatStyleHelper } from '../helpers/format-style.helper';\nimport { ILayerConfig } from '../interfaces/layer.config';\nimport { Lines } from './lines';\nimport { Paragraph } from '../paging/paragraph';\nimport { ParagraphHelper } from '../helpers/paragraph.helper';\nimport { RenderingHelper } from '../helpers/rendering.helper';\n\nexport class TextLayer extends EventEmitting {\n element: HTMLElement;\n\n lines: Lines;\n\n session: EditSession;\n\n config: ILayerConfig;\n\n public constructor(parentElement: HTMLElement, private renderingHelper = RenderingHelper) {\n super();\n\n this.element = document.createElement('div');\n this.element.className = 'ace-layer ace-text-layer';\n parentElement.appendChild(this.element);\n\n this.lines = new Lines(this.element);\n }\n\n setSession(session: EditSession): void {\n if (this.session) {\n this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n this.session = session;\n if (session) {\n this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n this.element.style.width = `${this.session.pagesWrap.contentWidth}px`;\n this.element.style.margin = `0 ${this.session.pagesWrap.documentMargin.right}px 0 ${this.session.pagesWrap.documentMargin.left}px`;\n }\n }\n\n update(config: ILayerConfig): void {\n DomHelper.translate(this.element, 0, -config.scrollTop);\n\n this.config = config;\n\n while (this.lines.length) {\n this.lines.pop();\n }\n\n this.lines.push(this.renderTextParagraph(config.contentRange));\n }\n\n scrollLines(config: ILayerConfig): void {\n const oldConfig = this.config;\n this.config = config;\n\n DomHelper.translate(this.element, 0, -config.scrollTop);\n\n const oldLastRow = oldConfig ? oldConfig.contentRange.end : -1;\n\n if (!oldConfig || oldLastRow < config.contentRange.start || config.contentRange.end < oldConfig.contentRange.start) {\n return this.update(config);\n }\n\n if (oldConfig.contentRange.start < config.contentRange.start) {\n for (let row = config.contentRange.start - oldConfig.contentRange.start; row > 0; row--) {\n this.lines.shift();\n }\n }\n\n if (oldConfig.contentRange.end > config.contentRange.end) {\n for (let row = oldConfig.contentRange.end - config.contentRange.end; row > 0; row--) {\n this.lines.pop();\n }\n }\n\n if (oldConfig.contentRange.start > config.contentRange.start) {\n const lines = this.renderTextParagraph(\n new DistanceModel({ start: config.contentRange.start, end: oldConfig.contentRange.start - 1 })\n );\n this.lines.unshift(lines);\n }\n\n if (oldConfig.contentRange.end < config.contentRange.end) {\n const lines = this.renderTextParagraph(\n new DistanceModel({ start: oldConfig.contentRange.end + 1, end: config.contentRange.end })\n );\n this.lines.push(lines);\n }\n }\n\n destroy(): void {\n this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n protected getParagraphTop(paragraphs: Paragraph[], row: number): number {\n return this.session.pagesWrap.getParagraphTop(paragraphs, row);\n }\n\n private renderTextParagraph(rowsDistance: DistanceModel): Cell[] {\n const fragment: Cell[] = [];\n for (let row = rowsDistance.start; row <= rowsDistance.end; row++) {\n const paragraphs = this.session.pagesWrap.paragraphs;\n\n const paragraphCell = this.lines.createCell(row);\n paragraphCell.element.className = 'ace-line-group';\n DomHelper.removeChildren(paragraphCell.element);\n const paragraphHeight = this.session.pagesWrap.getParagraphHeight(paragraphs, row);\n const paragraphTop = this.getParagraphTop(paragraphs, row);\n DomHelper.setStyle(paragraphCell.element.style, 'height', `${paragraphHeight}px`);\n DomHelper.setStyle(paragraphCell.element.style, 'top', `${paragraphTop}px`);\n const paragraph = paragraphs[row];\n if (paragraph.numberingData.numberingId !== null) {\n const numberingElement = this.renderingHelper.renderNumberingMarker(paragraph, this.element);\n numberingElement.className = 'numberingMarker';\n paragraphCell.element.appendChild(numberingElement);\n }\n\n this.renderTextLines(paragraphCell.element, row);\n fragment.push(paragraphCell);\n }\n\n return fragment;\n }\n\n private renderTextLines(parent: Node, row: number): void {\n const linesContainerElement = this.renderingHelper.createDivContainer('lines-container');\n const currentParagraph = this.session.pagesWrap.paragraphs[row];\n const paragraphHeight = ParagraphHelper.getParagraphHeight(currentParagraph.textLinesInfo);\n DomHelper.setStyle(linesContainerElement.style, 'height', `${paragraphHeight}px`);\n parent.appendChild(linesContainerElement);\n\n const startIndex = this.session.document.positionToIndex(this.session.document.lines, { row, column: 0 });\n const endIndex = this.session.document.positionToIndex(this.session.document.lines, { row: row + 1, column: 0 }) - 1;\n const formats = FormatStyleHelper.getFormatsAtRange(this.session.model.formats, startIndex, endIndex);\n const splits = this.session.wrapData[row];\n const formatsExt = formats.map(\n format =>\n new FormatExtModel({\n ...format,\n content: this.session.model.content.substring(format.startIndex, format.endIndex + 1)\n })\n );\n if (splits?.length) {\n const distance = new DistanceModel({ start: startIndex, end: endIndex });\n this.renderingHelper.renderContentWrappedLine(\n { currentElement: this.element, parentNode: linesContainerElement },\n splits,\n currentParagraph,\n formatsExt,\n distance,\n this.session.customContentService,\n this.session.customComponents,\n this.session.model.breaks\n );\n } else {\n const numberingOffsetLeft =\n currentParagraph.numberingData.numberingId === null\n ? 0\n : currentParagraph.numberingData.width + currentParagraph.numberingData.paddingLeft;\n const lastLineEl = this.renderingHelper.createLineElement(currentParagraph.textLinesInfo[0], numberingOffsetLeft);\n linesContainerElement.appendChild(lastLineEl);\n const rowDistance = new DistanceModel({ start: startIndex, end: endIndex });\n this.renderingHelper.renderContentSimpleLine(\n { currentElement: this.element, parentNode: lastLineEl },\n formatsExt,\n rowDistance,\n this.session.customContentService,\n this.session.customComponents,\n this.session.model.breaks\n );\n }\n }\n\n private pagesCountChangedHandler = (event: { pagesCount: number; pageHeight: number }) => {\n this.lines.setSizes(event.pagesCount, event.pageHeight);\n };\n}\n","import { Paragraph } from '../paging/paragraph';\nimport { TextLayer } from './text.layer';\n\nexport class PrintTextLayer extends TextLayer {\n override getParagraphTop(paragraphs: Paragraph[], row: number): number {\n return this.session.pagesWrap.getParagraphTopForPrint(paragraphs, row, this.session.pagesWrap.pagesSpace);\n }\n}\n","import { DistanceModel } from './models/distance.model';\nimport { EdgesLayer } from './layers/edges.layer';\nimport { EditorService } from '../interaction/editor.service';\nimport { EditSession } from './edit.session';\nimport { ILayerConfig } from './interfaces/layer.config';\nimport { PagesLayer } from './layers/pages.layer';\nimport { PagesWrap } from './paging/pages.wrap';\nimport { PrintEdgesLayer } from './layers/print.edges.layer';\nimport { PrintPagesLayer } from './layers/print.pages.layer';\nimport { PrintRenderingHelper } from './helpers/print.rendering.helper';\nimport { PrintTextLayer } from './layers/print.text.layer';\nimport { TextLayer } from './layers/text.layer';\n\nexport class PrintRenderer {\n content: HTMLElement;\n\n edgesLayer: EdgesLayer;\n\n textLayer: TextLayer;\n\n pagesLayer: PagesLayer;\n\n originalPagesWrap: PagesWrap;\n\n documentHtml: string;\n\n headHtml: string;\n\n pagesCount: number;\n\n constructor(private session: EditSession, editorService: EditorService) {\n this.pagesCount = Math.round((session.pagesWrap.pagesSpace * 2 + session.pagesWrap.allPagesHeight) / session.pagesWrap.minHeight);\n this.createContent();\n this.createLayers(editorService);\n }\n\n renderPrintDocument(): void {\n const layerConfig = this.computeLayerConfig();\n\n this.pagesLayer.update(layerConfig);\n this.textLayer.update(layerConfig);\n this.edgesLayer.update(layerConfig);\n\n this.createDocumentHtml(layerConfig);\n }\n\n private computeLayerConfig(): ILayerConfig {\n const pages = Array.from(Array(this.pagesCount).keys()).map(x => x + 1);\n const pagesWrap = this.session.pagesWrap;\n const maxHeight = pagesWrap.pageHeight * this.pagesCount;\n const minHeight = pagesWrap.pageHeight;\n\n return {\n width: this.textLayer.element.clientWidth + pagesWrap.documentMargin.left + pagesWrap.documentMargin.right,\n height: pagesWrap.defaultVerticalData.contentHeight,\n contentRange: new DistanceModel({ start: 0, end: this.session.pagesWrap.paragraphs.length - 1 }),\n minHeight,\n maxHeight,\n offset: 0,\n pages,\n scrollTop: 0\n };\n }\n\n private createContent(): void {\n this.content = document.createElement('div');\n this.content.className = 'ace-content print';\n }\n\n private createLayers(editorService: EditorService): void {\n this.textLayer = new PrintTextLayer(this.content, PrintRenderingHelper);\n this.textLayer.setSession(this.session);\n this.edgesLayer = new PrintEdgesLayer(this.content, editorService);\n this.edgesLayer.setSession(this.session);\n this.pagesLayer = new PrintPagesLayer(this.content);\n this.pagesLayer.setSession(this.session);\n }\n\n private createDocumentHtml(layerConfig: ILayerConfig): void {\n const head = this.createHeadWithStyles();\n let body = `<div class=\"ace-scroller print\" style=\"width: 100%;\">${this.content.innerHTML}</div>`;\n body = `<div class=\"edit-container ace-editor print\">${body}</div>`;\n body = `<div class=\"container print\" style=\"height: ${layerConfig.maxHeight}px;\">${body}</div>`;\n body = `<div class=\"mat-drawer-content print\">${body}</div>`;\n body = `<div class=\"mat-drawer-container sidenav-container print\">${body}</div>`;\n body = `<div class=\"base-editor print\">${body}</div>`;\n\n this.documentHtml = `<!DOCTYPE html><html>${head}${body}</html>`;\n }\n\n private createHeadWithStyles(): string {\n let styles = '';\n for (let i = 0; i < document.styleSheets.length; i++) {\n const cssRules = Array.from(document.styleSheets[i].cssRules);\n cssRules.forEach(rule => (styles += `<style>${rule.cssText}</style>`));\n }\n\n return `<head><title>Print</title>${styles}${this.getPrintPageStyle()}</head>`;\n }\n\n private getPrintPageStyle(): string {\n const pageStyle = '@page { margin: 0; }';\n const contentStyle = `@media print { html, body { width: 100%; height: 100%; } }`;\n return `<style>${pageStyle} ${contentStyle}</style>`;\n }\n}\n","import { EditorService } from '../editor/interaction/editor.service';\nimport { EditSession } from '../editor/core/edit.session';\nimport { PrintRenderer } from '../editor/core/print.renderer';\nimport { RenderingHelper } from '../editor/core/helpers/rendering.helper';\n\nexport class PrintHelper extends RenderingHelper {\n static printDocument(session: EditSession, editorService: EditorService): void {\n this.removePrintContainers();\n const renderer = new PrintRenderer(session, editorService);\n renderer.renderPrintDocument();\n this.printDocumentHtml(renderer.documentHtml);\n }\n\n private static printDocumentHtml(html: string, openInNewTab = false): void {\n if (openInNewTab) {\n const winUrl = URL.createObjectURL(new Blob([html], { type: 'text/html' }));\n window.open(winUrl, '_blank');\n return;\n }\n\n const printFrame = this.getPrintFrame();\n\n printFrame.onload = () => {\n window.setTimeout(() => {\n printFrame.contentWindow.print();\n }, 100);\n };\n printFrame.srcdoc = html;\n }\n\n private static getPrintFrame(): HTMLIFrameElement {\n const printFrame = document.createElement('iframe');\n document.body.appendChild(printFrame);\n printFrame.contentWindow.addEventListener('afterprint', _event => {\n printFrame.remove();\n });\n printFrame.id = 'print-frame';\n return printFrame;\n }\n\n private static removePrintContainers(): void {\n const printFrame = document.getElementById('print-frame') as HTMLIFrameElement;\n if (printFrame) {\n printFrame.remove();\n }\n }\n}\n","import { EditSession } from './edit.session';\nimport { Point } from './point';\nimport { PositionHelper } from './helpers/position.helper';\n\nexport class Range {\n start: Point;\n\n end: Point;\n\n cursor: Point;\n\n get isEmpty(): boolean {\n return this.isSingleLine && this.start.column === this.end.column;\n }\n\n get isSingleLine(): boolean {\n return this.start.row === this.end.row;\n }\n\n constructor(start: Point, end: Point) {\n this.start = start;\n this.end = end;\n }\n\n public isEqual(range: Range | { start: Point; end: Point }): boolean {\n return (\n this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column\n );\n }\n\n contains(point: Point): boolean {\n return this.comparePoint(point) === 0;\n }\n\n comparePoint(point: Point): number {\n const compare = this.compareSingleLine(point);\n\n return compare ?? this.compareMultiLine(point);\n }\n\n /**\n * Given the current `Range`,\n * this function converts those starting and ending points into screen positions, and then returns a new `Range` object.\n * @param {EditSession} session The `EditSession` to retrieve coordinates from\n * @returns {Range}\n **/\n toScreenRange(session: EditSession): Range {\n const screenPosStart = PositionHelper.documentToScreen(session, this.start.row, this.start.column);\n const screenPosEnd = PositionHelper.documentToScreen(session, this.end.row, this.end.column);\n\n return new Range(screenPosStart, screenPosEnd);\n }\n\n /**\n * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.\n * @param {Number} firstRow The starting row\n * @param {Number} lastRow The ending row\n * @returns {Range}\n **/\n clipRows(firstRow: number, lastRow: number): Range {\n let end: Point;\n if (this.end.row > lastRow) {\n end = new Point(lastRow + 1, 0);\n } else if (this.end.row < firstRow) {\n end = new Point(firstRow, 0);\n }\n\n let start: Point;\n if (this.start.row > lastRow) {\n start = new Point(lastRow + 1, 0);\n } else if (this.start.row < firstRow) {\n start = new Point(firstRow, 0);\n }\n\n return new Range(start || this.start, end || this.end);\n }\n\n private compareSingleLine(point: Point): number {\n if (!this.isSingleLine) {\n return null;\n }\n\n if (point.row === this.start.row) {\n if (point.column < this.start.column) {\n return -1;\n } else if (point.column > this.end.column) {\n return 1;\n } else {\n return 0;\n }\n }\n\n return null;\n }\n\n private compareMultiLine(point: Point): number {\n if (this.start.row === point.row) {\n return point.column >= this.start.column ? 0 : -1;\n }\n\n if (this.end.row === point.row) {\n return point.column <= this.end.column ? 0 : 1;\n }\n\n if (point.row < this.start.row) {\n return -1;\n }\n\n if (point.row > this.end.row) {\n return 1;\n }\n\n return 0;\n }\n}\n","import { DeleteModel } from './delete.model';\nimport { InsertBreakModel } from './insert-break.model';\nimport { InsertElementModel } from './insert-element.model';\nimport { InsertImageModel } from './insert-image.model';\nimport { InsertLinkModel } from './insert-link.model';\nimport { InsertTableModel } from './insert-table.model';\nimport { InsertTabModel } from './insert-tab.model';\nimport { InsertTextModel } from './insert-text.model';\n\nexport class ReplaceModel {\n public delete: DeleteModel;\n public insertBreak: InsertBreakModel;\n public insertElement: InsertElementModel;\n public insertImage: InsertImageModel;\n public insertLink: InsertLinkModel;\n public insertTab: InsertTabModel;\n public insertTable: InsertTableModel;\n public insertText: InsertTextModel;\n\n public constructor(\n fields?: Partial<ReplaceModel>) {\n\n if (fields) {\n if (fields.delete) { fields.delete = new DeleteModel(fields.delete); }\n if (fields.insertBreak) { fields.insertBreak = new InsertBreakModel(fields.insertBreak); }\n if (fields.insertElement) { fields.insertElement = new InsertElementModel(fields.insertElement); }\n if (fields.insertImage) { fields.insertImage = new InsertImageModel(fields.insertImage); }\n if (fields.insertLink) { fields.insertLink = new InsertLinkModel(fields.insertLink); }\n if (fields.insertTab) { fields.insertTab = new InsertTabModel(fields.insertTab); }\n if (fields.insertTable) { fields.insertTable = new InsertTableModel(fields.insertTable); }\n if (fields.insertText) { fields.insertText = new InsertTextModel(fields.insertText); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { BreakModel } from './break.model';\nimport { ElementModel } from './element.model';\nimport { FormatModel } from './format.model';\nimport { ImageModel } from './image.model';\nimport { LinkModel } from './link.model';\nimport { ParagraphModel } from './paragraph.model';\nimport { TableModel } from './table.model';\nimport { TabModel } from './tab.model';\n\nexport class RestoreModel {\n public breaks: BreakModel[];\n public elements: ElementModel[];\n public endIndex: number;\n public formats: FormatModel[];\n public images: ImageModel[];\n public links: LinkModel[];\n public paragraphs: ParagraphModel[];\n public startIndex: number;\n public tables: TableModel[];\n public tabs: TabModel[];\n public text: string;\n\n public constructor(\n fields?: Partial<RestoreModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class ReplaceByTextModel {\n public endIndex: number;\n public startIndex: number;\n public text: string;\n\n public constructor(\n fields?: Partial<ReplaceByTextModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { AddNumberingModel } from './add-numbering.model';\nimport { ApplyElementStyleModel } from './apply-element-style.model';\nimport { ApplyImageStyleModel } from './apply-image-style.model';\nimport { ApplyParagraphStyleModel } from './apply-paragraph-style.model';\nimport { ApplyTextStyleModel } from './apply-text-style.model';\nimport { DeleteModel } from './delete.model';\nimport { InsertBreakModel } from './insert-break.model';\nimport { InsertElementModel } from './insert-element.model';\nimport { InsertImageModel } from './insert-image.model';\nimport { InsertLinkModel } from './insert-link.model';\nimport { InsertStyledTextModel } from './insert-styled-text.model';\nimport { InsertTableColumnsModel } from './insert-table-columns.model';\nimport { InsertTableModel } from './insert-table.model';\nimport { InsertTableRowsModel } from './insert-table-rows.model';\nimport { InsertTabModel } from './insert-tab.model';\nimport { InsertTextModel } from './insert-text.model';\nimport { RemoveNumberingsModel } from './remove-numberings.model';\nimport { RemoveTableColumnsModel } from './remove-table-columns.model';\nimport { RemoveTableRowsModel } from './remove-table-rows.model';\nimport { ReplaceByTextModel } from './replace-by-text.model';\nimport { ReplaceModel } from './replace.model';\nimport { ResizeTableColumnsModel } from './resize-table-columns.model';\nimport { RestoreModel } from './restore.model';\nimport { RestoreNumberingsModel } from './restore-numberings.model';\nimport { RestoreParagraphStylesModel } from './restore-paragraph-styles.model';\nimport { RestoreTableModel } from './restore-table.model';\nimport { RestoreTextStylesModel } from './restore-text-styles.model';\nimport { TargetModel } from './target.model';\n\nexport class CommandModel {\n public addNumbering: AddNumberingModel;\n public applyElementStyle: ApplyElementStyleModel;\n public applyImageStyle: ApplyImageStyleModel;\n public applyParagraphStyle: ApplyParagraphStyleModel;\n public applyTextStyle: ApplyTextStyleModel;\n public commandType: any;\n public delete: DeleteModel;\n public insertBreak: InsertBreakModel;\n public insertElement: InsertElementModel;\n public insertImage: InsertImageModel;\n public insertLink: InsertLinkModel;\n public insertStyledText: InsertStyledTextModel;\n public insertTab: InsertTabModel;\n public insertTable: InsertTableModel;\n public insertTableColumns: InsertTableColumnsModel;\n public insertTableRows: InsertTableRowsModel;\n public insertText: InsertTextModel;\n public removeNumberings: RemoveNumberingsModel;\n public removeTableColumns: RemoveTableColumnsModel;\n public removeTableRows: RemoveTableRowsModel;\n public replace: ReplaceModel;\n public replaceByText: ReplaceByTextModel;\n public resizeTableColumns: ResizeTableColumnsModel;\n public restore: RestoreModel;\n public restoreNumberings: RestoreNumberingsModel;\n public restoreParagraphStyles: RestoreParagraphStylesModel;\n public restoreTable: RestoreTableModel;\n public restoreTextStyles: RestoreTextStylesModel;\n public targets: TargetModel[];\n\n public constructor(\n fields?: Partial<CommandModel>) {\n\n if (fields) {\n if (fields.addNumbering) { fields.addNumbering = new AddNumberingModel(fields.addNumbering); }\n if (fields.applyElementStyle) { fields.applyElementStyle = new ApplyElementStyleModel(fields.applyElementStyle); }\n if (fields.applyImageStyle) { fields.applyImageStyle = new ApplyImageStyleModel(fields.applyImageStyle); }\n if (fields.applyParagraphStyle) { fields.applyParagraphStyle = new ApplyParagraphStyleModel(fields.applyParagraphStyle); }\n if (fields.applyTextStyle) { fields.applyTextStyle = new ApplyTextStyleModel(fields.applyTextStyle); }\n if (fields.delete) { fields.delete = new DeleteModel(fields.delete); }\n if (fields.insertBreak) { fields.insertBreak = new InsertBreakModel(fields.insertBreak); }\n if (fields.insertElement) { fields.insertElement = new InsertElementModel(fields.insertElement); }\n if (fields.insertImage) { fields.insertImage = new InsertImageModel(fields.insertImage); }\n if (fields.insertLink) { fields.insertLink = new InsertLinkModel(fields.insertLink); }\n if (fields.insertStyledText) { fields.insertStyledText = new InsertStyledTextModel(fields.insertStyledText); }\n if (fields.insertTab) { fields.insertTab = new InsertTabModel(fields.insertTab); }\n if (fields.insertTable) { fields.insertTable = new InsertTableModel(fields.insertTable); }\n if (fields.insertTableColumns) { fields.insertTableColumns = new InsertTableColumnsModel(fields.insertTableColumns); }\n if (fields.insertTableRows) { fields.insertTableRows = new InsertTableRowsModel(fields.insertTableRows); }\n if (fields.insertText) { fields.insertText = new InsertTextModel(fields.insertText); }\n if (fields.removeNumberings) { fields.removeNumberings = new RemoveNumberingsModel(fields.removeNumberings); }\n if (fields.removeTableColumns) { fields.removeTableColumns = new RemoveTableColumnsModel(fields.removeTableColumns); }\n if (fields.removeTableRows) { fields.removeTableRows = new RemoveTableRowsModel(fields.removeTableRows); }\n if (fields.replace) { fields.replace = new ReplaceModel(fields.replace); }\n if (fields.replaceByText) { fields.replaceByText = new ReplaceByTextModel(fields.replaceByText); }\n if (fields.resizeTableColumns) { fields.resizeTableColumns = new ResizeTableColumnsModel(fields.resizeTableColumns); }\n if (fields.restore) { fields.restore = new RestoreModel(fields.restore); }\n if (fields.restoreNumberings) { fields.restoreNumberings = new RestoreNumberingsModel(fields.restoreNumberings); }\n if (fields.restoreParagraphStyles) { fields.restoreParagraphStyles = new RestoreParagraphStylesModel(fields.restoreParagraphStyles); }\n if (fields.restoreTable) { fields.restoreTable = new RestoreTableModel(fields.restoreTable); }\n if (fields.restoreTextStyles) { fields.restoreTextStyles = new RestoreTextStylesModel(fields.restoreTextStyles); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { AddNumberingModel } from '../../../../models/generated/add-numbering.model';\nimport { ApplyImageStyleModel } from '../../../../models/generated/apply-image-style.model';\nimport { ApplyParagraphStyleModel } from '../../../../models/generated/apply-paragraph-style.model';\nimport { ApplyTextStyleModel } from '../../../../models/generated/apply-text-style.model';\nimport { CommandModel } from '../../../../models/generated/command.model';\nimport { CommandType } from '../enums/command-type.enum';\nimport { DeleteModel } from '../../../../models/generated/delete.model';\nimport { FormatModel } from '../../../../models/generated/format.model';\nimport { InsertBreakModel } from '../../../../models/generated/insert-break.model';\nimport { InsertElementModel } from '../../../../models/generated/insert-element.model';\nimport { InsertImageModel } from '../../../../models/generated/insert-image.model';\nimport { InsertLinkModel } from '../../../../models/generated/insert-link.model';\nimport { InsertStyledTextModel } from '../../../../models/generated/insert-styled-text.model';\nimport { InsertTableColumnsModel } from '../../../../models/generated/insert-table-columns.model';\nimport { InsertTableModel } from '../../../../models/generated/insert-table.model';\nimport { InsertTableRowsModel } from '../../../../models/generated/insert-table-rows.model';\nimport { InsertTabModel } from '../../../../models/generated/insert-tab.model';\nimport { InsertTextModel } from '../../../../models/generated/insert-text.model';\nimport { NumberingLevelModel } from '../../../../models/generated/numbering-level.model';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';\nimport { RemoveNumberingsModel } from '../../../../models/generated/remove-numberings.model';\nimport { RemoveTableColumnsModel } from '../../../../models/generated/remove-table-columns.model';\nimport { RemoveTableRowsModel } from '../../../../models/generated/remove-table-rows.model';\nimport { ReplaceModel } from '../../../../models/generated/replace.model';\nimport { ResizeTableColumnsModel } from '../../../../models/generated/resize-table-columns.model';\nimport { RestoreModel } from '../../../../models/generated/restore.model';\nimport { RestoreParagraphStylesModel } from '../../../../models/generated/restore-paragraph-styles.model';\nimport { RestoreTableModel } from '../../../../models/generated/restore-table.model';\nimport { RestoreTextStylesModel } from '../../../../models/generated/restore-text-styles.model';\nimport { TargetModel } from '../../../../models/generated/target.model';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class SaveCommandsHelper {\n public static getAddNumberingCommand(\n startIndex: number,\n endIndex: number,\n levels: NumberingLevelModel[],\n targets: TargetModel[]\n ): CommandModel {\n const addNumbering = new AddNumberingModel({ startIndex, endIndex, levels });\n return new CommandModel({ commandType: CommandType.AddNumbering, addNumbering, targets });\n }\n\n public static getRemoveNumberingsCommand(startIndex: number, endIndex: number, targets: TargetModel[]): CommandModel {\n const removeNumberings = new RemoveNumberingsModel({ startIndex, endIndex });\n return new CommandModel({ commandType: CommandType.RemoveNumberings, removeNumberings, targets });\n }\n\n public static getApplyImageStyleCommand(height: number, width: number, insertIndex: number, targets: TargetModel[]): CommandModel {\n const applyImageStyle = new ApplyImageStyleModel({ height, width, insertIndex });\n return new CommandModel({ commandType: CommandType.ApplyImageStyle, applyImageStyle, targets });\n }\n\n public static getApplyParagraphStyleCommand(\n startIndex: number,\n endIndex: number,\n paragraphStyle: ParagraphStyleModel,\n targets: TargetModel[]\n ): CommandModel {\n const applyParagraphStyle = new ApplyParagraphStyleModel({ startIndex, endIndex, paragraphStyle });\n return new CommandModel({ commandType: CommandType.ApplyParagraphStyle, applyParagraphStyle, targets });\n }\n\n public static getApplyTextStyleCommand(\n startIndex: number,\n endIndex: number,\n textStyle: TextStyleModel,\n targets: TargetModel[]\n ): CommandModel {\n const applyTextStyle = new ApplyTextStyleModel({ startIndex, endIndex, textStyle });\n return new CommandModel({ commandType: CommandType.ApplyTextStyle, applyTextStyle, targets });\n }\n\n public static getDeleteCommand(startIndex: number, endIndex: number, targets: TargetModel[]): CommandModel {\n const deleteModel = new DeleteModel({ startIndex, endIndex });\n return new CommandModel({ commandType: CommandType.Delete, delete: deleteModel, targets });\n }\n\n public static getInsertTextCommand(text: string, insertIndex: number, targets: TargetModel[]): CommandModel {\n const insertText = new InsertTextModel({ text, insertIndex });\n return new CommandModel({ commandType: CommandType.InsertText, insertText, targets });\n }\n\n public static getInsertStyledTextCommand(\n text: string,\n insertIndex: number,\n textStyle: TextStyleModel,\n targets: TargetModel[]\n ): CommandModel {\n const insertStyledText = new InsertStyledTextModel({ text, insertIndex, textStyle });\n return new CommandModel({ commandType: CommandType.InsertStyledText, insertStyledText, targets });\n }\n\n public static getInsertBreakCommand(insertBreak: InsertBreakModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.InsertBreak, insertBreak, targets });\n }\n\n public static getInsertElementCommand(insertElement: InsertElementModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.InsertElement, insertElement, targets });\n }\n\n public static getInsertImageCommand(insertImage: InsertImageModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.InsertImage, insertImage, targets });\n }\n\n public static getInsertLinkOperation(insertLink: InsertLinkModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.InsertLink, insertLink, targets });\n }\n\n public static getInsertTabCommand(insertTab: InsertTabModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.InsertTab, insertTab, targets });\n }\n\n public static getInsertTableCommand(insertTable: InsertTableModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.InsertTable, insertTable, targets });\n }\n\n public static getInsertTableColumnsCommand(\n columnsCount: number,\n inheritIndex: number,\n insertIndex: number,\n targetIndex: number,\n targets: TargetModel[]\n ): CommandModel {\n const insertTableColumns = new InsertTableColumnsModel({ columnsCount, inheritIndex, insertIndex, targetIndex });\n return new CommandModel({ commandType: CommandType.InsertTableColumns, insertTableColumns, targets });\n }\n\n public static getInsertTableRowsCommand(\n rowsCount: number,\n inheritIndex: number,\n insertIndex: number,\n targetIndex: number,\n targets: TargetModel[]\n ): CommandModel {\n const insertTableRows = new InsertTableRowsModel({ rowsCount, inheritIndex, insertIndex, targetIndex });\n return new CommandModel({ commandType: CommandType.InsertTableRows, insertTableRows, targets });\n }\n\n public static getRemoveTableColumnsCommand(\n startIndex: number,\n endIndex: number,\n insertIndex: number,\n targets: TargetModel[]\n ): CommandModel {\n const removeTableColumns = new RemoveTableColumnsModel({ startIndex, endIndex, insertIndex });\n return new CommandModel({ commandType: CommandType.RemoveTableColumns, removeTableColumns, targets });\n }\n\n public static getRemoveTableRowsCommand(\n startIndex: number,\n endIndex: number,\n insertIndex: number,\n targets: TargetModel[]\n ): CommandModel {\n const removeTableRows = new RemoveTableRowsModel({ startIndex, endIndex, insertIndex });\n return new CommandModel({ commandType: CommandType.RemoveTableRows, removeTableRows, targets });\n }\n\n public static getRestoreTextStylesCommand(formats: FormatModel[]): CommandModel {\n const restoreTextStyles = new RestoreTextStylesModel({ formats });\n return new CommandModel({ commandType: CommandType.RestoreTextStyles, restoreTextStyles });\n }\n\n public static getRestoreParagraphStylesCommand(paragraphs: ParagraphModel[]): CommandModel {\n const restoreParagraphStyles = new RestoreParagraphStylesModel({ paragraphs });\n return new CommandModel({ commandType: CommandType.RestoreParagraphStyles, restoreParagraphStyles });\n }\n\n public static getRestoreCommand(restoreModel: RestoreModel): CommandModel {\n const restore = new RestoreModel({\n breaks: restoreModel.breaks,\n elements: restoreModel.elements,\n formats: restoreModel.formats,\n images: restoreModel.images,\n startIndex: restoreModel.startIndex,\n endIndex: restoreModel.endIndex,\n paragraphs: restoreModel.paragraphs,\n tables: restoreModel.tables,\n tabs: restoreModel.tabs,\n text: restoreModel.text\n });\n return new CommandModel({ commandType: CommandType.Restore, restore });\n }\n\n public static getRestoreTableCommand(restoreTable: RestoreTableModel): CommandModel {\n return new CommandModel({ commandType: CommandType.RestoreTable, restoreTable });\n }\n\n public static getReplaceCommand(model: ReplaceModel, targets: TargetModel[]): CommandModel {\n return new CommandModel({ commandType: CommandType.Replace, replace: model, targets });\n }\n\n public static getResizeTableColumnsCommand(resizeTableColumns: ResizeTableColumnsModel): CommandModel {\n return new CommandModel({ commandType: CommandType.ResizeTableColumns, resizeTableColumns });\n }\n}\n","import { EditSession } from './edit.session';\nimport { Point } from './point';\nimport { Range } from './range';\n\nexport class SearchOptions {\n term?: string;\n backwards?: boolean;\n start?: Point | Range;\n skipCurrent?: boolean;\n wrap?: boolean;\n isMultiLine?: boolean;\n regex?: RegExp | (RegExp[] & { offset?: number });\n}\n\nexport class Search {\n options: SearchOptions;\n forEach: (callback: any) => void;\n forEachInLine: (row: number, offset: number, callback: any) => boolean;\n\n constructor() {\n this.options = {};\n }\n\n set(options: SearchOptions): void {\n this.options = Object.assign({}, options);\n }\n\n find(session: EditSession): Range {\n const options = this.options;\n this.setMatchIterator(session, options);\n const iterator = this.forEach;\n if (!iterator) {\n return null;\n }\n\n let firstRange = null;\n iterator((startRow: number, startColumn: number, endRow: number, endColumn: number) => {\n firstRange = new Range(new Point(startRow, startColumn), new Point(endRow, endColumn));\n if (\n startColumn === endColumn &&\n options.start instanceof Range &&\n options.start.start &&\n options.skipCurrent !== false &&\n firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n\n return true;\n });\n\n return firstRange;\n }\n\n assembleRegExp(options: SearchOptions): RegExp | RegExp[] {\n let needle = options.term;\n\n if (!options.term) {\n options.regex = null;\n return options.regex;\n }\n\n let modifier = 'gmi';\n\n options.isMultiLine = /[\\n\\r]/.test(needle);\n if (options.isMultiLine) {\n options.regex = this.assembleMultilineRegExp(needle, modifier);\n return options.regex;\n }\n\n let regular: RegExp;\n try {\n regular = new RegExp(needle, modifier);\n } catch (e) {\n regular = null;\n }\n options.regex = regular;\n return options.regex;\n }\n\n assembleMultilineRegExp(needle: string, modifier: string): RegExp[] {\n const parts = needle.replace(/\\r\\n|\\r|\\n/g, '$\\n^').split('\\n');\n const regex: RegExp[] = [];\n for (const element of parts) {\n try {\n regex.push(new RegExp(element, modifier));\n } catch (e) {\n return [];\n }\n }\n return regex;\n }\n\n setMatchIterator(session: EditSession, options: SearchOptions): void {\n const regex = this.assembleRegExp(options);\n if (!regex) {\n return null;\n }\n const backwards = options.backwards ?? false;\n const skipCurrent = options.skipCurrent ?? false;\n\n let start = options.start;\n if (!start) {\n start = session.selection.range;\n }\n\n let startPoint: Point;\n if (start instanceof Range && start.start) {\n startPoint = start[skipCurrent !== backwards ? 'end' : 'start'];\n }\n\n let firstRow = 0;\n let lastRow = session.document.getLinesCount() - 1;\n\n this.setForEach(backwards, startPoint, options, firstRow, lastRow);\n\n const singleRe = regex as RegExp;\n this.setForEachInLine(regex, options, backwards, session, singleRe);\n }\n\n private setForEach(backwards: boolean, startPoint: Point, options: SearchOptions, firstRow: number, lastRow: number): void {\n if (backwards) {\n this.setForEachForBackwards(startPoint, options, firstRow, lastRow);\n\n return;\n }\n\n this.setDefaultForEach(startPoint, options, firstRow, lastRow);\n }\n\n private setDefaultForEach(startPoint: Point, options: SearchOptions, firstRow: number, lastRow: number): void {\n this.forEach = callback => {\n let row = startPoint.row;\n if (this.forEachInLine(row, startPoint.column, callback)) {\n return;\n }\n for (row = row + 1; row <= lastRow; row++) {\n if (this.forEachInLine(row, 0, callback)) {\n return;\n }\n }\n if (options.wrap === false) {\n return;\n }\n for (row = firstRow, lastRow = startPoint.row; row <= lastRow; row++) {\n if (this.forEachInLine(row, 0, callback)) {\n return;\n }\n }\n };\n }\n\n private setForEachForBackwards(startPoint: Point, options: SearchOptions, firstRow: number, lastRow: number): void {\n this.forEach = callback => {\n let row = startPoint.row;\n if (this.forEachInLine(row, startPoint.column, callback)) {\n return;\n }\n for (row--; row >= firstRow; row--) {\n if (this.forEachInLine(row, Number.MAX_VALUE, callback)) {\n return;\n }\n }\n if (options.wrap === false) {\n return;\n }\n for (row = lastRow, firstRow = startPoint.row; row >= firstRow; row--) {\n if (this.forEachInLine(row, Number.MAX_VALUE, callback)) {\n return;\n }\n }\n };\n }\n\n private setForEachInLine(\n re: RegExp | RegExp[],\n options: SearchOptions,\n backwards: boolean,\n session: EditSession,\n singleRe: RegExp\n ): void {\n if (Array.isArray(re) && options.isMultiLine) {\n this.setForEachInLineForRegArray(re, backwards, session);\n } else if (backwards) {\n this.setForEachInLineForBackwards(session, singleRe);\n } else {\n this.setDefaultForEachInLine(session, singleRe);\n }\n }\n\n private setForEachInLineForRegArray(regex: RegExp[], backwards: boolean, session: EditSession) {\n let regularLength = regex.length;\n this.forEachInLine = (row, offset, callback) => {\n let startRow = backwards ? row - regularLength + 1 : row;\n if (startRow < 0) {\n return false;\n }\n let line = session.document.getLine(session.document.lines, startRow);\n let startIndex = line.search(regex[0]);\n if ((!backwards && startIndex < offset) || startIndex === -1) {\n return false;\n }\n for (let i = 1; i < regularLength; i++) {\n line = session.document.getLine(session.document.lines, startRow + i);\n if (line.search(regex[i]) === -1) {\n return false;\n }\n }\n let endIndex = line.match(regex[regularLength - 1])[0].length;\n if (backwards && endIndex > offset) {\n return false;\n }\n if (callback(startRow, startIndex, startRow + regularLength - 1, endIndex)) {\n return true;\n }\n return false;\n };\n }\n\n private setForEachInLineForBackwards(session: EditSession, singleRe: RegExp) {\n this.forEachInLine = (row, endIndex, callback) => {\n let line = session.document.getLine(session.document.lines, row);\n let matches = [];\n let regexResult: RegExpExecArray,\n last = 0;\n singleRe.lastIndex = 0;\n while ((regexResult = singleRe.exec(line))) {\n let length = regexResult[0].length;\n last = regexResult.index;\n if (!length) {\n if (last >= line.length) {\n break;\n }\n singleRe.lastIndex = last + 1;\n }\n if (regexResult.index + length > endIndex) {\n break;\n }\n matches.push(regexResult.index, length);\n }\n for (let i = matches.length - 1; i >= 0; i -= 2) {\n let column = matches[i - 1];\n let length = matches[i];\n if (callback(row, column, row, column + length)) {\n return true;\n }\n }\n return false;\n };\n }\n\n private setDefaultForEachInLine(session: EditSession, singleRe: RegExp) {\n this.forEachInLine = (row, startIndex, callback) => {\n let line = session.document.getLine(session.document.lines, row);\n let last: number;\n let regexResult: RegExpExecArray;\n singleRe.lastIndex = startIndex;\n while ((regexResult = singleRe.exec(line))) {\n let length = regexResult[0].length;\n last = regexResult.index;\n if (callback(row, last, row, last + length)) {\n return true;\n }\n if (!length) {\n singleRe.lastIndex = last += 1;\n if (last >= line.length) {\n return false;\n }\n }\n }\n return false;\n };\n }\n}\n","import { ContentHelper } from '../helpers/content.helper';\nimport { ContentsInterface } from '../interfaces/contents.interface';\nimport { EditSession } from '../core/edit.session';\nimport { Point } from '../core/point';\nimport { PositionHelper } from '../core/helpers/position.helper';\nimport { Range } from '../core/range';\n\nexport class Selection {\n anchor: Point | null = null;\n\n cursor = new Point(0, 0);\n\n private keepLinePositionX: number | null = null;\n\n get isEmpty(): boolean {\n return this.anchor === null || (this.anchor.row === this.cursor.row && this.anchor.column === this.cursor.column);\n }\n\n get isBackwards(): boolean {\n return this.anchor.row > this.cursor.row || (this.anchor.row === this.cursor.row && this.anchor.column > this.cursor.column);\n }\n\n get range(): Range {\n const cursor = new Point(this.cursor.row, this.cursor.column);\n if (this.isEmpty) {\n return new Range(cursor, cursor);\n }\n\n const anchor = new Point(this.anchor.row, this.anchor.column);\n return this.isBackwards ? new Range(cursor, anchor) : new Range(anchor, cursor);\n }\n\n placeCursor(cursor: Point): void {\n this.cursor = cursor;\n this.anchor = null;\n this.keepLinePositionX = null;\n }\n\n moveCursor(cursor: Point): void {\n this.cursor = cursor;\n this.keepLinePositionX = null;\n }\n\n placeSelection(cursor: Point, anchor: Point): void {\n this.cursor = cursor;\n this.anchor = anchor;\n this.keepLinePositionX = null;\n }\n\n moveSelection(position: Point): void {\n if (!this.anchor) {\n this.anchor = this.cursor;\n }\n this.moveCursor(position);\n }\n\n clearSelection(): void {\n this.anchor = null;\n this.keepLinePositionX = null;\n }\n\n selectAll(model: ContentsInterface): void {\n const last = model.paragraphs.length - 1;\n const length = last > 0 ? model.contentLength - model.paragraphs[last - 1].insertIndex - 1 : model.contentLength;\n this.placeSelection(new Point(0, 0), new Point(last, length));\n }\n\n selectUp(session: EditSession): void {\n if (!this.anchor) {\n this.anchor = this.cursor;\n }\n this.moveCursorUp(session, this.cursor);\n }\n\n navigateUp(session: EditSession): void {\n const position = this.isEmpty || this.isBackwards ? this.cursor : this.anchor;\n this.moveCursorUp(session, position);\n this.anchor = null;\n }\n\n selectDown(session: EditSession): void {\n if (!this.anchor) {\n this.anchor = this.cursor;\n }\n this.moveCursorDown(session, this.cursor);\n }\n\n navigateDown(session: EditSession): void {\n const position = this.isEmpty || !this.isBackwards ? this.cursor : this.anchor;\n this.moveCursorDown(session, position);\n this.anchor = null;\n }\n\n selectRight(session: EditSession): void {\n const position = this.getCursorRight(session);\n this.moveSelection(position);\n }\n\n navigateRight(session: EditSession): void {\n if (this.isEmpty) {\n const position = this.getCursorRight(session);\n this.placeCursor(position);\n } else {\n const position = !this.isBackwards ? this.cursor : this.anchor;\n this.placeCursor(position);\n }\n }\n\n selectLeft(session: EditSession): void {\n const position = this.getCursorLeft(session);\n this.moveSelection(position);\n }\n\n navigateLeft(session: EditSession): void {\n if (this.isEmpty) {\n const position = this.getCursorLeft(session);\n this.placeCursor(position);\n } else {\n const position = this.isBackwards ? this.cursor : this.anchor;\n this.placeCursor(position);\n }\n }\n\n selectLineStart(session: EditSession): void {\n const position = this.getLineStart(session, this.cursor);\n this.moveSelection(position);\n }\n\n navigateLineStart(session: EditSession): void {\n const position = this.getLineStart(session, this.cursor);\n this.placeCursor(position);\n }\n\n selectLineEnd(session: EditSession): void {\n const position = this.getLineEnd(session, this.cursor);\n this.moveSelection(position);\n }\n\n navigateLineEnd(session: EditSession): void {\n const position = this.getLineEnd(session, this.cursor);\n this.placeCursor(position);\n }\n\n selectFileEnd(session: EditSession): void {\n const paragraph = session.document.lines.length - 1;\n const paragraphIndex = session.document.lines[paragraph].length;\n this.moveSelection(new Point(paragraph, paragraphIndex));\n }\n\n navigateFileEnd(session: EditSession): void {\n const paragraph = session.document.lines.length - 1;\n const paragraphIndex = session.document.lines[paragraph].length;\n this.placeCursor(new Point(paragraph, paragraphIndex));\n }\n\n selectFileStart(): void {\n this.moveSelection(new Point(0, 0));\n }\n\n navigateFileStart(): void {\n this.placeCursor(new Point(0, 0));\n }\n\n selectWordRight(session: EditSession): void {\n const position = this.getWordRight(session, this.cursor);\n this.moveSelection(position);\n }\n\n navigateWordRight(session: EditSession): void {\n const position = this.getWordRight(session, this.cursor);\n this.placeCursor(position);\n }\n\n selectWordLeft(session: EditSession): void {\n const position = this.getWordLeft(session, this.cursor);\n this.moveSelection(position);\n }\n\n navigateWordLeft(session: EditSession): void {\n const position = this.getWordLeft(session, this.cursor);\n this.placeCursor(position);\n }\n\n private moveCursorUp(session: EditSession, position: Point): void {\n const line = PositionHelper.documentToScreen(session, position.row, position.column);\n if (line.row === 0) {\n this.selectLineStart(session);\n } else {\n this.moveToLine(session, line.row - 1, line);\n }\n }\n\n private moveCursorDown(session: EditSession, position: Point): void {\n const line = PositionHelper.documentToScreen(session, position.row, position.column);\n const paragraphsCount = session.pagesWrap.paragraphs.length;\n const lastParagraph = session.pagesWrap.paragraphs[paragraphsCount - 1];\n const lastParagraphLine = lastParagraph.textLinesInfo[lastParagraph.textLinesInfo.length - 1].screenLine;\n if (line.row === lastParagraphLine) {\n this.selectLineEnd(session);\n } else {\n this.moveToLine(session, line.row + 1, line);\n }\n }\n\n private moveToLine(session: EditSession, line: number, fromLine: Point): void {\n if (!this.keepLinePositionX) {\n this.keepLinePositionX = PositionHelper.screenToPixel(session, fromLine.row, fromLine.column).pageX;\n }\n const column = PositionHelper.getApproximatePosition(session, line, this.keepLinePositionX);\n this.cursor = PositionHelper.screenToDocument(session, line, column);\n }\n\n private getCursorLeft(session: EditSession): Point {\n if (this.cursor.row === 0 && this.cursor.column === 0) {\n return this.cursor;\n }\n const index = ContentHelper.paragraphPositionToDocumentIndex(session.wrapParagraphIndex, this.cursor);\n return ContentHelper.documentIndexToParagraphIndex(session.wrapParagraphIndex, index - 1);\n }\n\n private getCursorRight(session: EditSession): Point {\n const last = session.pagesWrap.paragraphs.length - 1;\n if (this.cursor.row === last && this.cursor.column === session.document.lines[last].length) {\n return this.cursor;\n }\n const index = ContentHelper.paragraphPositionToDocumentIndex(session.wrapParagraphIndex, this.cursor);\n return ContentHelper.documentIndexToParagraphIndex(session.wrapParagraphIndex, index + 1);\n }\n\n private getLineStart(session: EditSession, position: Point): Point {\n const line = PositionHelper.documentToScreen(session, position.row, position.column);\n return PositionHelper.screenToDocument(session, line.row, 0);\n }\n\n private getLineEnd(session: EditSession, position: Point): Point {\n const line = PositionHelper.documentToScreen(session, position.row, position.column);\n const paragraphLength = session.document.lines[position.row].length;\n const linesCount = session.pagesWrap.paragraphs[position.row].textLinesInfo.length;\n if (linesCount === 1) {\n return PositionHelper.screenToDocument(session, line.row, paragraphLength);\n }\n const paragraphLine = line.row - session.wrapParagraphLine[position.row];\n let index: number;\n if (paragraphLine === 0) {\n index = session.wrapData[position.row][0];\n } else if (paragraphLine === linesCount - 1) {\n index = paragraphLength - session.wrapData[position.row][paragraphLine - 1];\n } else {\n index = session.wrapData[position.row][paragraphLine] - session.wrapData[position.row][paragraphLine - 1];\n }\n return PositionHelper.screenToDocument(session, line.row, index);\n }\n\n private getWordRight(session: EditSession, position: Point): Point {\n let row = position.row;\n let column = position.column;\n const line = session.document.lines[row];\n const documentLength = session.document.lines.length;\n if (row + 1 >= documentLength && column === line.length) {\n return position;\n }\n let rightOfCursor = line.substring(column);\n if (column === line.length) {\n do {\n row++;\n rightOfCursor = session.document.lines[row];\n } while (row < documentLength && /^\\s*$/.test(rightOfCursor));\n if (!/^\\s+/.test(rightOfCursor)) {\n rightOfCursor = '';\n }\n column = 0;\n }\n const index = this.shortWordEndIndex(session.tokenRe, rightOfCursor);\n return new Point(row, column + index);\n }\n\n private getWordLeft(session: EditSession, position: Point): Point {\n let row = position.row;\n let column = position.column;\n if (column === 0 && row === 0) {\n return position;\n }\n let line = session.document.lines[row].substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = session.document.lines[row];\n } while (row > 0 && /^\\s*$/.test(line));\n column = line.length;\n if (!/\\s+$/.test(line)) {\n line = '';\n }\n }\n const leftOfCursor = line.split('').reverse().join('');\n const index = this.shortWordEndIndex(session.tokenRe, leftOfCursor);\n return new Point(row, column - index);\n }\n\n private shortWordEndIndex(tokenRe: RegExp, rightOfCursor: string): number {\n let index: number;\n tokenRe.lastIndex = 0;\n if (tokenRe.exec(rightOfCursor)) {\n index = tokenRe.lastIndex;\n } else {\n index = this.handleNoTokenFound(tokenRe, rightOfCursor);\n }\n tokenRe.lastIndex = 0;\n return index;\n }\n\n private handleNoTokenFound(tokenRe: RegExp, rightOfCursor: string): number {\n const whitespaceRe = /\\s/;\n let index = 0;\n while (rightOfCursor[index] && whitespaceRe.test(rightOfCursor[index])) {\n index++;\n }\n if (index < 1) {\n index = this.handleNoWhitespaceFound(tokenRe, rightOfCursor, whitespaceRe);\n }\n return index;\n }\n\n private handleNoWhitespaceFound(tokenRe: RegExp, rightOfCursor: string, whitespaceRe: RegExp): number {\n let index = 0;\n tokenRe.lastIndex = 0;\n while (rightOfCursor[index] && !tokenRe.test(rightOfCursor[index])) {\n tokenRe.lastIndex = 0;\n index++;\n if (whitespaceRe.test(rightOfCursor[index])) {\n if (index > 2) {\n index--;\n break;\n }\n while (rightOfCursor[index] && whitespaceRe.test(rightOfCursor[index])) {\n index++;\n }\n if (index > 2) {\n break;\n }\n }\n }\n return index;\n }\n}\n","export class TabModel {\n public fontSize: number;\n public insertIndex: number;\n public width: number;\n\n public constructor(\n fields?: Partial<TabModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class TextInput {\n input: HTMLTextAreaElement;\n\n isFocused: boolean;\n\n private lastValue = '';\n\n private lastSelectionStart = 0;\n\n private lastSelectionEnd = 0;\n\n constructor(parentElement: HTMLElement) {\n this.input = document.createElement('textarea');\n this.input.className = 'ace-text-input';\n this.input.id = 'textarea-input';\n this.input.style.opacity = '0';\n this.input.setAttribute('wrap', 'off');\n this.input.setAttribute('autocomplete', 'off');\n this.input.setAttribute('autocorrect', 'off');\n this.input.setAttribute('autocapitalize', 'off');\n this.input.setAttribute('spellcheck', 'false');\n\n parentElement.insertBefore(this.input, parentElement.firstChild);\n\n this.isFocused = document.activeElement === this.input;\n }\n\n getClipboardData(event: ClipboardEvent): string {\n const mime = 'text/plain';\n return event.clipboardData.getData(mime);\n }\n\n getInsertText(): string {\n const data = this.input.value;\n const selectionStart = this.input.selectionStart;\n const selectionEnd = this.input.selectionEnd;\n\n let extendLeft = this.lastSelectionStart;\n let extendRight = this.lastValue.length - this.lastSelectionEnd;\n let text = data;\n let i = 0;\n while (extendLeft > 0 && this.lastValue[i] === data[i]) {\n i++;\n extendLeft--;\n }\n\n text = text.slice(i);\n\n i = 1;\n while (\n extendRight > 0 &&\n this.lastValue.length - i > this.lastSelectionStart - 1 &&\n this.lastValue[this.lastValue.length - i] === data[data.length - i]\n ) {\n i++;\n extendRight--;\n }\n\n let endIndex = text.length - i + 1;\n if (endIndex < 0) {\n endIndex = 0;\n }\n\n text = text.slice(0, endIndex);\n\n this.lastValue = data;\n this.lastSelectionStart = selectionStart;\n this.lastSelectionEnd = selectionEnd;\n\n return text;\n }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { ComponentRef, ElementRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { AddNumberingModel } from '../../../models/generated/add-numbering.model';\nimport { ApplyElementStyleModel } from '../../../models/generated/apply-element-style.model';\nimport { ApplyImageStyleModel } from '../../../models/generated/apply-image-style.model';\nimport { ApplyParagraphStyleModel } from '../../../models/generated/apply-paragraph-style.model';\nimport { ApplyTextStyleModel } from '../../../models/generated/apply-text-style.model';\nimport { BaseNoderComponent } from '../custom-components/shared/abstract/base.component';\nimport { BreakHelper } from '../helpers/break.helper';\nimport { BreakModel } from '../../../models/generated/break.model';\nimport { BreakTypes } from './enums/break-types.enum';\nimport { ClipboardEventTypes } from './constants/clipboardEventTypes.const';\nimport { CommandsService } from '../../services/commands.service';\nimport { ContentHelper } from '../helpers/content.helper';\nimport { CUSTOM_ELEMENT_MARKER, TABLE_MARKER } from '../custom-components/shared/constants/custom-content-markers.const';\nimport { DeleteModel } from '../../../models/generated/delete.model';\nimport { DocxModel } from '../../../models/generated/docx.model';\nimport { EdgeType } from './components/edges/edge-type.enum';\nimport { EditorService } from '../interaction/editor.service';\nimport { EditSession } from './edit.session';\nimport { ElementDataModel } from '../custom-components/external-element/models/element-data.model';\nimport { ElementModel } from '../../../models/generated/element.model';\nimport { EventEmitting } from './base/event-emitting';\nimport { FormatHelper } from '../helpers/format.helper';\nimport { ImageDataModel } from '../../../models/generated/image-data.model';\nimport { ImageModel } from '../../../models/generated/image.model';\nimport { IndexedElementHelper } from '../helpers/indexed-element.helper';\nimport { InputHandler } from '../interaction/input.handler';\nimport { InsertBreakModel } from '../../../models/generated/insert-break.model';\nimport { InsertElementModel } from '../../../models/generated/insert-element.model';\nimport { InsertImageModel } from '../../../models/generated/insert-image.model';\nimport { InsertLinkModel } from '../../../models/generated/insert-link.model';\nimport { InsertStyledTextModel } from '../../../models/generated/insert-styled-text.model';\nimport { InsertTableColumnsModel } from '../../../models/generated/insert-table-columns.model';\nimport { InsertTableModel } from '../../../models/generated/insert-table.model';\nimport { InsertTableRowsModel } from '../../../models/generated/insert-table-rows.model';\nimport { InsertTabModel } from '../../../models/generated/insert-tab.model';\nimport { InsertTextModel } from '../../../models/generated/insert-text.model';\nimport { IToolbarStyles } from './interfaces/toolbar-styles.interface';\nimport { LinkDataModel } from '../../../models/generated/link-data.model';\nimport { MarginModel } from './models/margin.model';\nimport { MouseHandler } from '../interaction/mouse.handler';\nimport { NEW_LINE_MARKUP } from './constants/editor.const';\nimport { NoderEdgeComponent } from './components/edges/edge.component';\nimport { NumberingLevelModel } from '../../../models/generated/numbering-level.model';\nimport { Operation } from '../operation-history/operation.type';\nimport { OperationHistory } from '../operation-history/operation-history';\nimport { PageHelper } from './helpers/page.helper';\nimport { PageType } from './enums/page-type.enum';\nimport { ParagraphModel } from '../../../models/generated/paragraph.model';\nimport { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';\nimport { Point } from './point';\nimport { PositionHelper } from './helpers/position.helper';\nimport { PrintHelper } from '../../helpers/print.helper';\nimport { Range } from './range';\nimport { RegulatorService } from '../execution/regulator.service';\nimport { RemoveNumberingsModel } from '../../../models/generated/remove-numberings.model';\nimport { RemoveTableColumnsModel } from '../../../models/generated/remove-table-columns.model';\nimport { RemoveTableRowsModel } from '../../../models/generated/remove-table-rows.model';\nimport { Renderer } from './renderer';\nimport { ReplaceModel } from '../../../models/generated/replace.model';\nimport { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';\nimport { RestoreModel } from '../../../models/generated/restore.model';\nimport { RestoreNumberingsModel } from '../../../models/generated/restore-numberings.model';\nimport { RestoreParagraphStylesModel } from '../../../models/generated/restore-paragraph-styles.model';\nimport { RestoreTableModel } from '../../../models/generated/restore-table.model';\nimport { RestoreTextStylesModel } from '../../../models/generated/restore-text-styles.model';\nimport { SaveCommandsHelper } from '../operations/helpers/save-commands.helper';\nimport { Search, SearchOptions } from './search';\nimport { SearchIteration } from './interfaces/search-iteration.interface';\nimport { Selection } from '../positioning/selection';\nimport { TableModel } from '../../../models/generated/table.model';\nimport { TabModel } from '../../../models/generated/tab.model';\nimport { TargetModel } from '../../../models/generated/target.model';\nimport { TextInput } from './keyboard/text-input';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\nimport { VirtualRenderer } from './virtual.renderer';\n\nexport class Editor extends EventEmitting {\n readonly MAX_COUNT = 999;\n\n readonly parentTagName = 'APP-EDITOR';\n\n readonly tableCellTagName = 'APP-NODER-TABLE-CELL';\n\n readonly customElementTagNamesWithoutTable = ['APP-NODER-INPUT', 'APP-NODER-IMAGE', 'APP-NODER-SIGNATURE', 'APP-NODER-DATEPICKER'];\n\n readonly customElementTagNames = [...this.customElementTagNamesWithoutTable, this.tableCellTagName];\n\n readonly history: OperationHistory;\n\n get mainSession(): EditSession {\n return this.regulatorService.mainSession.session;\n }\n\n get mainRenderer(): VirtualRenderer {\n return this.regulatorService.mainSession.renderer as VirtualRenderer;\n }\n\n get session(): EditSession {\n return this.regulatorService.currentSession.session;\n }\n\n get renderer(): Renderer | VirtualRenderer {\n return this.regulatorService.currentSession.renderer;\n }\n\n get isViewOnly(): boolean {\n return this.editorService.isViewOnly;\n }\n\n get targets(): TargetModel[] {\n return this.regulatorService.getCurrentSessionTargets();\n }\n\n selection: Selection;\n\n mouseHandler: MouseHandler;\n\n inputHandler: InputHandler;\n\n subscriptions: Subscription[] = [];\n\n private search: Search;\n\n private textInput: TextInput;\n\n private focusedComponent: ComponentRef<BaseNoderComponent>;\n\n private clipboardData: string;\n\n constructor(\n private model: DocxModel,\n private container: ElementRef<HTMLElement>,\n private editorService: EditorService,\n private regulatorService: RegulatorService,\n private commandsService: CommandsService,\n private clipboard: Clipboard\n ) {\n super();\n\n this.history = new OperationHistory(editorService, regulatorService);\n this.selection = new Selection();\n this.regulatorService.setSelection(this.selection);\n this.initMainSession();\n this.textInput = new TextInput(this.mainRenderer.container);\n this.renderer.textarea = this.textInput.input;\n this.mouseHandler = new MouseHandler(this.renderer.container, this);\n this.inputHandler = new InputHandler(this.textInput.input, this);\n this.initResizeListener();\n this.focus();\n this.session.processSelectionStyles();\n\n this.search = new Search();\n this.search.set({ wrap: true });\n this.subscriptions.push(\n this.searchOptionSubscription(),\n this.replaceSubscription(),\n this.setTextStylesSubscription(),\n this.setParagraphStylesSubscription(),\n this.changeElementStyleSubscription(),\n this.setNumberingTemplateTypeSubscription(),\n this.removeNumberingsSubscription(),\n this.setImageStyleSubscription(),\n this.createCustomComponentSubscription(),\n this.insertBreakSubscription(),\n this.insertImageSubscription(),\n this.insertLinkSubscription(),\n this.endMousePressSubscription(),\n this.clearSelectionSubscription(),\n this.changedTableSizeSubscription(),\n this.insertTableRowsSubscription(),\n this.insertTableColumnsSubscription(),\n this.removeTableRowsSubscription(),\n this.removeTableColumnsSubscription(),\n this.removedImageSubscription(),\n this.resizeTableColumnsSubscription(),\n this.insertTableSubscription(),\n this.rendererUpdatedSubscription(),\n this.edgeElementCopyUpdatedSubscription(),\n this.changedEdgeHeightSubscription(),\n this.undoSubscription(),\n this.redoSubscription(),\n this.clipboardDataSubscription(),\n this.cutSelectedSubscription(),\n this.copySelectedSubscription(),\n this.pasteFromClipboardSubscription(),\n this.selectAllSubscription(),\n this.removeSelectedSubscription(),\n this.printSubscription()\n );\n }\n\n destroy(): void {\n this.subscriptions.forEach(s => s?.unsubscribe());\n this.destroyResizeListener();\n this.destroyMainSessionListeners();\n this.mouseHandler.destroy();\n this.inputHandler.destroy();\n this.session.removeEventListener('setStyles', this.setStyles);\n this.blurCustomComponent();\n }\n\n selectPageDown(): void {\n const config = this.mainRenderer.layerConfig;\n const line = config.visibleRange.endScreenLine;\n const position = PositionHelper.screenToDocument(this.mainSession, line, 0);\n this.selection.moveSelection(position);\n this.mainRenderer.scrollBy(config.height);\n this.scrollCursorIntoMainView(0.5);\n this.onSelectionChange();\n }\n\n selectPageUp(): void {\n const config = this.mainRenderer.layerConfig;\n const line = config.visibleRange.startScreenLine;\n const position = PositionHelper.screenToDocument(this.mainSession, line, 0);\n this.selection.moveSelection(position);\n this.mainRenderer.scrollBy(-config.height);\n this.scrollCursorIntoMainView(0.5);\n this.onSelectionChange();\n }\n\n gotoPageDown(): void {\n const config = this.mainRenderer.layerConfig;\n const line = config.visibleRange.endScreenLine;\n const position = PositionHelper.screenToDocument(this.mainSession, line, 0);\n this.selection.placeCursor(position);\n this.mainRenderer.scrollBy(config.height);\n this.scrollCursorIntoMainView(0.5);\n this.onSelectionChange();\n }\n\n gotoPageUp(): void {\n const config = this.mainRenderer.layerConfig;\n const line = config.visibleRange.startScreenLine;\n const position = PositionHelper.screenToDocument(this.mainSession, line, 0);\n this.selection.placeCursor(position);\n this.mainRenderer.scrollBy(-config.height);\n this.scrollCursorIntoMainView(0.5);\n this.onSelectionChange();\n }\n\n cut(): void {\n this.removeSelected();\n }\n\n insert(text: string): void {\n if (this.selection.isEmpty) {\n this.insertText(text, this.session.cursorStyle);\n } else {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n const insertText = new InsertTextModel({ insertIndex, text });\n this.replaceBy(new ReplaceModel({ insertText }));\n }\n }\n\n insertText(text: string, textStyle: TextStyleModel): void {\n const position = this.selection.cursor;\n if (textStyle) {\n this.saveInsertStyledTextToHistory(position.row, position.column, text, textStyle);\n } else {\n this.saveInsertTextToHistory(position.row, position.column, text);\n }\n this.session.insertText(position, text, textStyle);\n this.onSelectionChange();\n }\n\n replaceText(text: string): void {\n const toolbarStyle = new TextStyleModel(this.session.stylesMap);\n this.removeSelected();\n this.insertText(text, toolbarStyle);\n }\n\n removeLeft(): void {\n if (this.selection.isEmpty) {\n this.selection.selectLeft(this.session);\n }\n this.removeSelected();\n }\n\n removeRight(): void {\n if (this.selection.isEmpty) {\n this.selection.selectRight(this.session);\n }\n this.removeSelected();\n }\n\n insertBreak(breakType: BreakTypes): void {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n const insertBreak = new InsertBreakModel({ insertIndex, breakType });\n if (!this.selection.isEmpty) {\n this.replaceBy(new ReplaceModel({ insertBreak }));\n return;\n }\n\n if (breakType === BreakTypes.Column) {\n return;\n }\n\n this.saveInsertBreakToHistory(insertBreak);\n const endPoint = this.session.insertBreak(this.selection.cursor, breakType);\n let lastRow = this.selection.cursor.row === endPoint.row ? endPoint.row : Infinity;\n this.renderer.updateLines(this.selection.cursor.row, lastRow);\n this.renderer.updateCursor();\n this.rerenderMarker();\n this.scrollCursorIntoMainView(0.1);\n }\n\n insertTab() {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n const insertTab = new InsertTabModel({ insertIndex });\n if (!this.selection.isEmpty) {\n this.replaceBy(new ReplaceModel({ insertTab }));\n return;\n }\n\n this.saveInsertTabToHistory(insertTab);\n const endPoint = this.session.insertTab(this.selection.cursor);\n this.onDocumentChange(new Range(this.selection.cursor, endPoint));\n this.onSelectionChange();\n }\n\n insertImage(imageData: ImageDataModel): void {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n const insertImage = new InsertImageModel({ insertIndex, imageData });\n if (!this.selection.isEmpty) {\n this.replaceBy(new ReplaceModel({ insertImage }));\n return;\n }\n\n this.saveInsertImageToHistory(insertImage);\n const endPoint = this.session.insertImage(this.selection.cursor, imageData);\n let lastRow = this.selection.cursor.row === endPoint.row ? endPoint.row : Infinity;\n this.renderer.updateLines(this.selection.cursor.row, lastRow);\n this.renderer.updateCursor();\n this.rerenderMarker();\n }\n\n insertLink(linkDataModel: LinkDataModel): void {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n const insertLink = new InsertLinkModel({ insertIndex, endIndex: insertIndex + linkDataModel.text.length, linkDataModel });\n if (!this.selection.isEmpty) {\n this.replaceBy(new ReplaceModel({ insertLink }));\n return;\n }\n\n this.saveInsertLinkToHistory(insertLink);\n this.session.insertLink(this.selection.cursor, linkDataModel);\n this.renderer.updateCursor();\n this.rerenderMarker();\n }\n\n insertTable(tableData: { rows: number; columns: number }): void {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n let textToInsert = TABLE_MARKER;\n let insertTableIndex = insertIndex;\n if (!this.session.wrapParagraphIndex.some(x => x === insertIndex)) {\n textToInsert = NEW_LINE_MARKUP + textToInsert;\n insertTableIndex++;\n }\n\n if (!this.session.document.isNewLineSymbol(insertIndex)) {\n textToInsert = textToInsert + NEW_LINE_MARKUP;\n }\n\n const insertTable = new InsertTableModel({\n insertIndex,\n insertTableIndex,\n rowsCount: tableData.rows,\n columnsCount: tableData.columns,\n content: textToInsert\n });\n if (!this.selection.isEmpty) {\n this.replaceBy(new ReplaceModel({ insertTable }));\n return;\n }\n\n this.saveInsertTableToHistory(insertTable);\n const endPoint = this.session.insertTable(this.selection.cursor, insertTable);\n let lastRow = this.selection.cursor.row === endPoint.row ? endPoint.row : Infinity;\n this.renderer.updateLines(this.selection.cursor.row, lastRow);\n this.renderer.updateCursor();\n this.rerenderMarker();\n }\n\n replaceBy(model: ReplaceModel): void {\n const startIndex = ContentHelper.paragraphPositionToDocumentIndex(this.session.wrapParagraphIndex, this.selection.range.start);\n const endIndex = ContentHelper.paragraphPositionToDocumentIndex(this.session.wrapParagraphIndex, this.selection.range.end) - 1;\n model.delete = new DeleteModel({ startIndex, endIndex });\n this.saveReplaceToHistory(this.selection.range, model);\n const endPoint = this.session.replace(model);\n this.onDocumentChange(new Range(this.selection.cursor, endPoint));\n this.onSelectionChange();\n }\n\n removeToLineStart(): void {\n if (this.selection.isEmpty) {\n this.selection.selectLineStart(this.session);\n }\n this.removeSelected();\n }\n\n removeToLineEnd(): void {\n if (this.selection.isEmpty) {\n this.selection.selectLineEnd(this.session);\n }\n this.removeSelected();\n }\n\n removeWordLeft(): void {\n if (this.selection.isEmpty) {\n this.selection.selectWordLeft(this.session);\n }\n this.removeSelected();\n }\n\n removeWordRight(): void {\n if (this.selection.isEmpty) {\n this.selection.selectWordRight(this.session);\n }\n this.removeSelected();\n }\n\n applyTextStyles(textStyle: TextStyleModel): void {\n if (!textStyle) {\n return;\n }\n\n this.blurCustomComponent();\n if (!this.selection.isEmpty) {\n const range = this.selection.range;\n const startIndex = ContentHelper.paragraphToDocumentIndex(this.session.wrapParagraphIndex, range.start.row, range.start.column);\n const endIndex = ContentHelper.paragraphToDocumentIndex(this.session.wrapParagraphIndex, range.end.row, range.end.column) - 1;\n this.saveApplyTextStyleToHistory(startIndex, endIndex, textStyle);\n this.session.applyTextStyle(startIndex, endIndex, textStyle);\n } else {\n this.setTextStyle(textStyle);\n }\n }\n\n setTextStyle(textStyle: TextStyleModel): void {\n const index = ContentHelper.paragraphPositionToDocumentIndex(this.session.wrapParagraphIndex, this.selection.cursor);\n const isParagraph = this.session.model.contentLength === index || this.session.model.content[index] === NEW_LINE_MARKUP;\n if (isParagraph) {\n this.saveApplyTextStyleToHistory(index, index, textStyle);\n this.session.applyTextStyle(index, index, textStyle);\n } else {\n this.session.setTextStyle(textStyle);\n }\n this.renderer.updateCursor();\n }\n\n applyParagraphStyles(paragraphStyle: ParagraphStyleModel): void {\n const range = this.selection.range;\n const startIndex = this.session.model.paragraphs[range.start.row].insertIndex;\n const endIndex = this.session.model.paragraphs[range.end.row].insertIndex;\n this.saveApplyParagraphStyleToHistory(startIndex, endIndex, paragraphStyle);\n this.session.applyParagraphStyle(startIndex, endIndex, paragraphStyle);\n }\n\n applyElementStyle(current: ElementModel): void {\n this.session.applyElementStyle(new ApplyElementStyleModel(current));\n }\n\n handleImageStyleChange(previous: ImageModel, current: ImageModel): void {\n this.history.pushApplyImageStyle(previous, current);\n const start = this.session.document.indexToPosition(current.insertIndex, 0);\n this.session.updateWrapData(start.row, this.session.document.lines.length - 1);\n }\n\n setNumberingTemplate(templateLevels: NumberingLevelModel[]): void {\n const range = this.selection.range;\n const startIndex = this.session.model.paragraphs[range.start.row].insertIndex;\n const endIndex = this.session.model.paragraphs[range.end.row].insertIndex;\n this.saveAddNumberingToHistory(templateLevels, startIndex, endIndex);\n this.session.addNumbering(templateLevels, startIndex, endIndex);\n }\n\n removeNumberingsFromParagraphs(): void {\n const range = this.selection.range;\n const startIndex = this.session.model.paragraphs[range.start.row].insertIndex;\n const endIndex = this.session.model.paragraphs[range.end.row].insertIndex;\n this.saveRemoveNumberingToHistory(startIndex, endIndex);\n this.session.removeNumberings(startIndex, endIndex);\n }\n\n applyImageStyles(image: ImageModel): void {\n this.saveApplyImageStyleToHistory(image);\n const imageStyle = new ApplyImageStyleModel({ insertIndex: image.insertIndex, height: image.height, width: image.width });\n this.session.applyImageStyle(imageStyle);\n this.renderer.updateCursor();\n }\n\n focus(): void {\n this.textInput.input.focus();\n }\n\n openSearch(): void {\n this.editorService.openSearchDialog = true;\n }\n\n find(options: SearchOptions): Range {\n let range = this.selection.range;\n if (options.term == null) {\n let term = this.session.document.getTextRange(range) || this.search.options.term;\n if (!term) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n term = this.session.document.getTextRange(range);\n }\n options.term = term;\n }\n\n if (!options.start) {\n options.start = range;\n }\n\n this.search.set(options);\n\n const newRange = this.search.find(this.session);\n if (newRange) {\n this.selection.placeSelection(range.start, range.end);\n this.onSelectionChange();\n if (this.session === this.mainSession) {\n this.mainRenderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n }\n return newRange;\n }\n\n range.end = range.start;\n this.selection.placeCursor(range.start);\n this.onSelectionChange();\n return null;\n }\n\n updateCounter(): SearchIteration {\n const regex = this.search.options.regex as RegExp;\n let all = 0;\n let current = 0;\n if (!regex) {\n return { current: 0, total: 0 };\n }\n\n const value = this.session.document.getAllLines().join('\\n');\n\n let offset = this.session.document.positionToIndex(this.session.document.lines, this.selection.range.start);\n\n regex.lastIndex = 0;\n let regexResult;\n while ((regexResult = regex.exec(value))) {\n all++;\n let last = regexResult.index;\n if (last <= offset) {\n current++;\n }\n if (all > this.MAX_COUNT) {\n break;\n }\n }\n\n return { current: current, total: all > this.MAX_COUNT ? this.MAX_COUNT : all };\n }\n\n replace(search: string, replace: string): void {\n if (this.selection.isEmpty) {\n return;\n }\n\n if (search !== replace) {\n if (replace) {\n this.replaceText(replace);\n } else {\n this.removeSelected();\n }\n }\n\n this.find({ term: search, skipCurrent: true, backwards: false });\n }\n\n undo(): void {\n const undo = this.history.popUndoOperation();\n if (!undo) {\n return;\n }\n this.regulatorService.setTargetedSessionAsCurrent(undo.targets);\n this.applyOperation(undo.operation);\n this.selection.placeSelection(undo.cursor, undo.anchor);\n this.onSelectionChange();\n }\n\n redo(): void {\n const redo = this.history.popRedoOperation();\n if (!redo) {\n return;\n }\n this.regulatorService.setTargetedSessionAsCurrent(redo.targets);\n this.selection.placeSelection(redo.cursor, redo.anchor);\n this.applyOperation(redo.operation);\n this.onSelectionChange();\n }\n\n applyOperation(operation: Operation): void {\n if (operation instanceof InsertTextModel) {\n this.session.insertTextByDocumentIndex(operation.insertIndex, operation.text, null);\n } else if (operation instanceof DeleteModel) {\n this.session.removeByDocumentIndexes(operation.startIndex, operation.endIndex);\n } else if (operation instanceof InsertStyledTextModel) {\n this.session.insertTextByDocumentIndex(operation.insertIndex, operation.text, new TextStyleModel(operation.textStyle));\n } else if (operation instanceof RestoreModel) {\n const deepCopy = structuredClone(operation);\n this.session.restore(deepCopy);\n this.commandsService.createCommand(SaveCommandsHelper.getRestoreCommand(deepCopy));\n } else if (operation instanceof ApplyTextStyleModel) {\n this.session.applyTextStyle(operation.startIndex, operation.endIndex, new TextStyleModel(operation.textStyle));\n } else if (operation instanceof ApplyParagraphStyleModel) {\n const copy = new ParagraphStyleModel(operation.paragraphStyle);\n this.session.applyParagraphStyle(operation.startIndex, operation.endIndex, copy);\n } else if (operation instanceof RestoreTextStylesModel) {\n const deepCopy = structuredClone(operation);\n this.session.restoreTextStyles(deepCopy.formats);\n this.commandsService.createCommand(SaveCommandsHelper.getRestoreTextStylesCommand(deepCopy.formats));\n } else if (operation instanceof RestoreParagraphStylesModel) {\n const deepCopy = structuredClone(operation);\n this.session.restoreParagraphStyles(deepCopy.paragraphs);\n this.commandsService.createCommand(SaveCommandsHelper.getRestoreParagraphStylesCommand(deepCopy.paragraphs));\n } else if (operation instanceof InsertElementModel) {\n this.session.insertElementByDocumentIndex(operation);\n } else if (operation instanceof InsertBreakModel) {\n this.session.insertBreakByDocumentIndex(operation);\n } else if (operation instanceof ApplyElementStyleModel) {\n this.session.applyElementStyle(operation);\n } else if (operation instanceof InsertTabModel) {\n this.session.insertTabByDocumentIndex(operation);\n } else if (operation instanceof InsertImageModel) {\n this.session.insertImageByDocumentIndex(operation);\n } else if (operation instanceof ApplyImageStyleModel) {\n this.session.applyImageStyle(operation);\n } else if (operation instanceof AddNumberingModel) {\n this.session.addNumbering(operation.levels, operation.startIndex, operation.endIndex);\n } else if (operation instanceof RestoreNumberingsModel) {\n this.session.restoreNumberings(operation.paragraphs, operation.numberings);\n } else if (operation instanceof InsertTableColumnsModel) {\n this.session.insertTableColumns(operation.insertIndex, operation.columnsCount, operation.targetIndex, operation.inheritIndex);\n this.changedTableSize(operation.insertIndex, this.session.sessionId);\n } else if (operation instanceof InsertTableRowsModel) {\n this.session.insertTableRows(operation.insertIndex, operation.rowsCount, operation.targetIndex, operation.inheritIndex);\n this.changedTableSize(operation.insertIndex, this.session.sessionId);\n } else if (operation instanceof RemoveTableColumnsModel) {\n this.session.removeTableColumns(operation.insertIndex, operation.startIndex, operation.endIndex);\n this.changedTableSize(operation.insertIndex, this.session.sessionId);\n } else if (operation instanceof RemoveTableRowsModel) {\n this.session.removeTableRows(operation.insertIndex, operation.startIndex, operation.endIndex);\n this.changedTableSize(operation.insertIndex, this.session.sessionId);\n } else if (operation instanceof ResizeTableColumnsModel) {\n this.session.resizeTableColumns(operation);\n this.changedTableSize(operation.insertIndex, this.session.sessionId);\n this.commandsService.createCommand(SaveCommandsHelper.getResizeTableColumnsCommand(operation));\n } else if (operation instanceof RestoreTableModel) {\n this.session.restoreTable(operation.insertIndex, operation.oldTable);\n this.changedTableSize(operation.insertIndex, this.session.sessionId);\n this.commandsService.createCommand(SaveCommandsHelper.getRestoreTableCommand(operation));\n } else if (operation instanceof InsertTableModel) {\n this.session.insertTableByDocumentIndex(operation);\n } else if (operation instanceof RemoveNumberingsModel) {\n this.session.removeNumberings(operation.startIndex, operation.endIndex);\n } else if (operation instanceof ReplaceModel) {\n this.session.replace(operation);\n this.commandsService.createCommand(SaveCommandsHelper.getReplaceCommand(operation, this.targets));\n }\n this.renderer.updateCursor();\n }\n\n saveRemoveToHistory(range: Range): void {\n const restoreModel = this.createRestoreFromSlice(range.start.row, range.start.column, range.end.row, range.end.column);\n const endIndex = restoreModel.endIndex;\n this.history.pushDelete(restoreModel);\n this.commandsService.createCommand(SaveCommandsHelper.getDeleteCommand(restoreModel.startIndex, endIndex, this.targets));\n }\n\n saveInsertTextToHistory(paragraph: number, indexInParagraph: number, text: string): void {\n const index = ContentHelper.paragraphToDocumentIndex(this.session.wrapParagraphIndex, paragraph, indexInParagraph);\n this.history.pushInsertText(index, text);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertTextCommand(text, index, this.targets));\n }\n\n saveInsertStyledTextToHistory(paragraph: number, indexInParagraph: number, text: string, style: TextStyleModel): void {\n const index = ContentHelper.paragraphToDocumentIndex(this.session.wrapParagraphIndex, paragraph, indexInParagraph);\n this.history.pushInsertStyledText(index, text, style);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertStyledTextCommand(text, index, style, this.targets));\n }\n\n saveInsertElementToHistory(model: InsertElementModel): void {\n this.history.pushInsertElement(model);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertElementCommand(model, this.targets));\n }\n\n saveInsertBreakToHistory(model: InsertBreakModel): void {\n model.isOnNewParagraph =\n model.breakType === BreakTypes.Page &&\n BreakHelper.getBreakType(this.session.model, CUSTOM_ELEMENT_MARKER, model.insertIndex - 1) !== BreakTypes.Page;\n const endIndex = model.isOnNewParagraph ? model.insertIndex + NEW_LINE_MARKUP.length + 1 : model.insertIndex + 1;\n this.history.pushInsertBreak(model, endIndex);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertBreakCommand(model, this.targets));\n }\n\n saveInsertTabToHistory(model: InsertTabModel): void {\n this.history.pushInsertTab(model);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertTabCommand(model, this.targets));\n }\n\n saveInsertImageToHistory(model: InsertImageModel): void {\n this.history.pushInsertImage(model);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertImageCommand(model, this.targets));\n }\n\n saveInsertLinkToHistory(model: InsertLinkModel): void {\n this.history.pushInsertLink(model);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertLinkOperation(model, this.targets));\n }\n\n saveInsertTableToHistory(model: InsertTableModel): void {\n this.history.pushInsertTable(model);\n this.commandsService.createCommand(SaveCommandsHelper.getInsertTableCommand(model, this.targets));\n }\n\n saveApplyTextStyleToHistory(startIndex: number, endIndex: number, textStyle: TextStyleModel): void {\n const formats = FormatHelper.sliceSection(this.session.model.formats, startIndex, endIndex);\n this.history.pushApplyTextStyle(startIndex, endIndex, textStyle, formats);\n this.commandsService.createCommand(SaveCommandsHelper.getApplyTextStyleCommand(startIndex, endIndex, textStyle, this.targets));\n }\n\n saveApplyParagraphStyleToHistory(startIndex: number, endIndex: number, paragraphStyle: ParagraphStyleModel): void {\n const paragraphs = IndexedElementHelper.sliceSection(this.session.model.paragraphs, startIndex, endIndex);\n const paragraphsDeepCopy = paragraphs.map(\n x => new ParagraphModel({ insertIndex: x.insertIndex, paragraphStyle: new ParagraphStyleModel({ ...x.paragraphStyle }) })\n );\n this.history.pushApplyParagraphStyle(startIndex, endIndex, paragraphStyle, paragraphsDeepCopy);\n this.commandsService.createCommand(\n SaveCommandsHelper.getApplyParagraphStyleCommand(startIndex, endIndex, paragraphStyle, this.targets)\n );\n }\n\n saveAddNumberingToHistory(templateLevels: NumberingLevelModel[], startIndex: number, endIndex: number): void {\n const paragraphs = IndexedElementHelper.sliceSection(this.session.model.paragraphs, startIndex, endIndex);\n const paragraphsDeepCopy = paragraphs.map(\n x => new ParagraphModel({ insertIndex: x.insertIndex, paragraphStyle: new ParagraphStyleModel({ ...x.paragraphStyle }) })\n );\n const removedNumberingIds = [...new Set(paragraphs.map(x => x.paragraphStyle.numberingId))];\n const numberings = this.session.properties.numberings.filter(x => removedNumberingIds.includes(x.numberingId));\n this.history.pushAddNumbering(startIndex, endIndex, templateLevels, paragraphsDeepCopy, numberings);\n this.commandsService.createCommand(SaveCommandsHelper.getAddNumberingCommand(startIndex, endIndex, templateLevels, this.targets));\n }\n\n saveRemoveNumberingToHistory(startIndex: number, endIndex: number): void {\n const paragraphs = IndexedElementHelper.sliceSection(this.session.model.paragraphs, startIndex, endIndex);\n const paragraphsDeepCopy = paragraphs.map(\n x => new ParagraphModel({ insertIndex: x.insertIndex, paragraphStyle: new ParagraphStyleModel({ ...x.paragraphStyle }) })\n );\n const removedNumberingIds = [...new Set(paragraphs.map(x => x.paragraphStyle.numberingId))];\n const numberings = this.session.properties.numberings.filter(x => removedNumberingIds.includes(x.numberingId));\n this.history.pushRemoveNumberings(startIndex, endIndex, numberings, paragraphsDeepCopy);\n this.commandsService.createCommand(SaveCommandsHelper.getRemoveNumberingsCommand(startIndex, endIndex, this.targets));\n }\n\n private saveApplyImageStyleToHistory(image: ImageModel): void {\n const previous = this.session.model.images.find(x => x.insertIndex === image.insertIndex);\n this.history.pushApplyImageStyle(previous, image);\n this.commandsService.createCommand(\n SaveCommandsHelper.getApplyImageStyleCommand(image.height, image.width, image.insertIndex, this.targets)\n );\n }\n\n private saveReplaceToHistory(range: Range, model: ReplaceModel): void {\n const restoreModel = this.createRestoreFromSlice(range.start.row, range.start.column, range.end.row, range.end.column);\n this.history.pushReplace(restoreModel, model);\n this.commandsService.createCommand(SaveCommandsHelper.getReplaceCommand(model, this.targets));\n }\n\n private createRestoreFromSlice(paragraphStart: number, indexInStart: number, paragraphEnd: number, indexInEnd: number): RestoreModel {\n const startIndex = ContentHelper.paragraphToDocumentIndex(this.session.wrapParagraphIndex, paragraphStart, indexInStart);\n const endIndex = ContentHelper.paragraphToDocumentIndex(this.session.wrapParagraphIndex, paragraphEnd, indexInEnd) - 1;\n const text = this.session.model.content.slice(startIndex, endIndex + 1);\n const formats = FormatHelper.sliceSection(this.session.model.formats, startIndex, endIndex);\n const paragraphs = IndexedElementHelper.sliceSection(this.session.model.paragraphs, startIndex, endIndex).map(\n x => new ParagraphModel(x)\n );\n const images = IndexedElementHelper.sliceSection(this.session.model.images, startIndex, endIndex).map(x => new ImageModel(x));\n const tables = IndexedElementHelper.sliceSection(this.session.model.tables, startIndex, endIndex).map(x => new TableModel(x));\n const elements = IndexedElementHelper.sliceSection(this.session.model.elements, startIndex, endIndex).map(x => new ElementModel(x));\n const breaks = IndexedElementHelper.sliceSection(this.session.model.breaks, startIndex, endIndex).map(x => new BreakModel(x));\n const tabs = IndexedElementHelper.sliceSection(this.session.model.tabs, startIndex, endIndex).map(x => new TabModel(x));\n return new RestoreModel({ startIndex, endIndex, text, formats, paragraphs, images, tables, elements, breaks, tabs });\n }\n\n createCustomElement(data: ElementDataModel): void {\n const insertIndex = ContentHelper.paragraphToDocumentIndex(\n this.session.wrapParagraphIndex,\n this.selection.range.start.row,\n this.selection.range.start.column\n );\n const insertElement = new InsertElementModel({ element: new ElementModel({ ...data, insertIndex }) });\n if (!this.selection.isEmpty) {\n this.replaceBy(new ReplaceModel({ insertElement }));\n return;\n }\n\n this.saveInsertElementToHistory(insertElement);\n const endPoint = this.session.insertElement(this.selection.cursor, data);\n this.onDocumentChange(new Range(this.selection.cursor, endPoint));\n this.onSelectionChange();\n }\n\n removeSelected(): void {\n if (this.selection.isEmpty) {\n return;\n }\n\n this.saveRemoveToHistory(this.selection.range);\n this.session.remove(this.selection.range);\n this.onSelectionChange();\n }\n\n onInput(): void {\n const text = this.textInput.getInsertText();\n if (!text) {\n return;\n }\n\n const isEmptyNumberingParagraph = this.isEmptyNumberingParagraph(this.selection.cursor.row);\n if (text === NEW_LINE_MARKUP && this.selection.isEmpty && isEmptyNumberingParagraph) {\n this.removeNumberingsFromParagraphs();\n } else {\n this.insert(text);\n this.scrollCursorIntoMainView();\n }\n }\n\n onCut(event: ClipboardEvent): void {\n event.preventDefault();\n const data = this.getSelectedText();\n if (!data) {\n return;\n }\n this.editorService.setClipboardData(data);\n this.clipboard.copy(data);\n this.cut();\n this.scrollCursorIntoMainView();\n }\n\n onCopy(event: ClipboardEvent): void {\n event.preventDefault();\n const data = this.getSelectedText();\n if (!data) {\n return;\n }\n this.editorService.setClipboardData(data);\n this.clipboard.copy(data);\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const data = this.textInput.getClipboardData(event);\n this.pasteData(data);\n }\n\n private initResizeListener(): void {\n window.addEventListener('resize', this.rerenderResize);\n }\n\n private destroyResizeListener(): void {\n window.removeEventListener('resize', this.rerenderResize);\n }\n\n private rerenderMarker(): void {\n this.renderer.loop.schedule({ marker: true });\n }\n\n private rerenderResize = (): void => {\n this.mainRenderer.onResize(true);\n };\n\n onBlur(): void {\n if (!this.textInput.isFocused) {\n return;\n }\n\n this.textInput.isFocused = false;\n this.renderer.hideCursor();\n }\n\n onFocus(): void {\n if (this.textInput.isFocused) {\n return;\n }\n\n this.blurCustomComponent();\n this.textInput.isFocused = true;\n this.renderer.showCursor();\n }\n\n onMouseClick(event: MouseEvent): void {\n const customElement = this.setCurrentSession(event.clientY, event.target as HTMLElement);\n if (customElement && customElement.tagName !== this.tableCellTagName) {\n this.focusCustomComponent(customElement);\n } else {\n this.blurCustomComponent();\n }\n\n this.emit('focusEditor');\n }\n\n onLeftClick(event: MouseEvent): void {\n const customElement = this.setCurrentSession(event.clientY, event.target as HTMLElement);\n this.emit('focusEditor');\n if (customElement && customElement.tagName !== this.tableCellTagName) {\n this.focusCustomComponent(customElement);\n return;\n }\n\n this.blurCustomComponent();\n\n if (!this.textInput.isFocused) {\n this.textInput.input.focus();\n }\n\n const position = this.renderer.screenToTextCoordinates(event.clientX, event.clientY);\n if (event.shiftKey) {\n this.selection.moveSelection(position);\n } else if (event.ctrlKey) {\n const linkModel = this.session.getLinkModel(position);\n if (linkModel) {\n window.open(linkModel.link);\n event.preventDefault();\n return;\n }\n } else {\n this.selection.placeCursor(position);\n }\n\n this.onSelectionChange();\n event.preventDefault();\n this.mouseHandler.startMousePress(this);\n }\n\n onDoubleClick(event: MouseEvent): void {\n this.session.removeEventListener('setStyles', this.setStyles);\n let isStartEditEdge = false;\n const customElement = this.getCustomElement(event.target as HTMLElement);\n if (customElement) {\n const elementSessionId = +customElement.attributes.getNamedItem('data-session-id').value;\n this.regulatorService.setCustomSessionAsCurrent(elementSessionId);\n } else {\n const edgeData = this.getClickedEdgeData(event.clientY);\n if (edgeData) {\n isStartEditEdge = !this.regulatorService.edgeEditingPage;\n this.regulatorService.setEdgeSessionAsCurrent(edgeData.edge.sessionId, edgeData.clickedPage);\n } else {\n this.regulatorService.setMainSessionAsCurrent();\n }\n }\n this.session.addEventListener('setStyles', this.setStyles);\n if (customElement && customElement.tagName !== this.tableCellTagName) {\n this.focusCustomComponent(customElement);\n return;\n }\n\n this.blurCustomComponent();\n event.preventDefault();\n const position = this.renderer.screenToTextCoordinates(event.clientX, event.clientY);\n if (isStartEditEdge) {\n this.selection.placeCursor(position);\n } else {\n const range = this.session.getWordRange(position.row, position.column);\n this.selection.placeSelection(range.start, range.end);\n }\n this.onSelectionChange();\n }\n\n onTripleClick(event: MouseEvent): void {\n const customElement = this.setCurrentSession(event.clientY, event.target as HTMLElement);\n if (customElement && customElement.tagName !== this.tableCellTagName) {\n this.focusCustomComponent(customElement);\n return;\n }\n\n this.blurCustomComponent();\n event.preventDefault();\n const position = this.renderer.screenToTextCoordinates(event.clientX, event.clientY);\n const start = new Point(position.row, 0);\n const end = new Point(position.row, this.session.document.lines[position.row].length);\n this.selection.placeSelection(start, end);\n this.onSelectionChange();\n }\n\n onQuadClick(event: MouseEvent): void {\n const customElement = this.setCurrentSession(event.clientY, event.target as HTMLElement);\n if (customElement && customElement.tagName !== this.tableCellTagName) {\n this.focusCustomComponent(customElement);\n return;\n }\n\n this.blurCustomComponent();\n event.preventDefault();\n this.selection.selectAll(this.session.model);\n this.onSelectionChange();\n }\n\n onMouseWheel(event: WheelEvent): void {\n if (event.ctrlKey) {\n return;\n }\n\n const factor = 0.35;\n const scrollSpeed = 4;\n const deltaY = event.deltaY * factor * scrollSpeed;\n this.mainRenderer.scrollBy(deltaY);\n event.stopPropagation();\n event.preventDefault();\n }\n\n setCurrentSession(clickPositionY: number, element: HTMLElement): HTMLElement | null {\n this.session.removeEventListener('setStyles', this.setStyles);\n const customElement = this.getCustomElement(element);\n if (customElement) {\n const elementSessionId = +customElement.attributes.getNamedItem('data-session-id').value;\n this.regulatorService.setCustomSessionAsCurrent(elementSessionId);\n this.session.addEventListener('setStyles', this.setStyles);\n return customElement;\n }\n\n const edgeData = this.getClickedEdgeData(clickPositionY);\n if (edgeData && this.regulatorService.edgeEditingPage) {\n this.regulatorService.setEdgeSessionAsCurrent(edgeData.edge.sessionId, edgeData.clickedPage);\n } else {\n this.regulatorService.setMainSessionAsCurrent();\n }\n\n this.session.addEventListener('setStyles', this.setStyles);\n return null;\n }\n\n getCustomElement(element: HTMLElement): HTMLElement | null {\n if (element.tagName === this.parentTagName) {\n return null;\n } else if (this.customElementTagNames.includes(element.tagName)) {\n return element;\n } else {\n return this.getCustomElement(element.parentElement);\n }\n }\n\n getClickedEdgeData(mousePosition: number): { edge: NoderEdgeComponent; clickedPage: number } | null {\n const positionY = mousePosition + this.mainSession.scrollTop - this.mainRenderer.container.getBoundingClientRect().top;\n const clickedPage = PositionHelper.pixelToPage(positionY, this.mainSession);\n const pageWrap = this.mainSession.pagesWrap;\n const pageVerticalData = PageHelper.getVerticalData(clickedPage, pageWrap.pagesVerticalData);\n const pageStartPosition = (pageWrap.pagesSpace + pageWrap.pageHeight) * (clickedPage - 1) + pageWrap.pagesSpace;\n const pageTop = pageStartPosition + pageVerticalData.marginTop;\n const pageBottom = pageStartPosition + pageWrap.pageHeight - pageVerticalData.marginBottom;\n let component: ComponentRef<NoderEdgeComponent>;\n if (pageTop >= positionY) {\n component = this.mainSession.customComponents.edges.getComponentByPage(clickedPage, EdgeType.Header);\n } else if (pageBottom <= positionY) {\n component = this.mainSession.customComponents.edges.getComponentByPage(clickedPage, EdgeType.Footer);\n }\n\n return component ? { edge: component.instance, clickedPage } : null;\n }\n\n setStyles = (styles: IToolbarStyles) => {\n this.editorService.styles = styles;\n };\n\n /**\n * Returns the string of text currently highlighted.\n */\n getSelectedText(): string {\n if (this.selection.isEmpty) {\n return '';\n }\n\n const startIndex = ContentHelper.paragraphPositionToDocumentIndex(this.session.wrapParagraphIndex, this.selection.range.start);\n const endIndex = ContentHelper.paragraphPositionToDocumentIndex(this.session.wrapParagraphIndex, this.selection.range.end);\n let elementIndexes: number[] = [];\n ContentHelper.setIndexesElementsInInterval(this.session.model.breaks, elementIndexes, startIndex, endIndex);\n ContentHelper.setIndexesElementsInInterval(this.session.model.tables, elementIndexes, startIndex, endIndex);\n ContentHelper.setIndexesElementsInInterval(this.session.model.images, elementIndexes, startIndex, endIndex);\n ContentHelper.setIndexesElementsInInterval(this.session.model.elements, elementIndexes, startIndex, endIndex);\n ContentHelper.setIndexesElementsInInterval(this.session.model.tabs, elementIndexes, startIndex, endIndex);\n elementIndexes.sort((a, b) => b - a);\n let textInterval = this.session.document.getTextRange(this.selection.range);\n elementIndexes.forEach(x => {\n textInterval = textInterval.slice(0, x) + textInterval.slice(x + 1);\n });\n\n return textInterval;\n }\n\n initMainSession(): void {\n this.container.nativeElement.style.maxWidth = `${this.model.pageWidth}px`;\n const pageMargin = new MarginModel({\n left: this.model.marginLeft,\n right: this.model.marginRight,\n top: this.model.marginTop,\n bottom: this.model.marginBottom,\n header: this.model.marginHeader,\n footer: this.model.marginFooter\n });\n this.regulatorService.addMainSession(this.model, pageMargin, this.container);\n this.mainSession.addEventListener('changeScrollTop', this.onScrollTopChange);\n this.session.addEventListener('setStyles', this.setStyles);\n this.mainRenderer.scrollTo(0);\n }\n\n onSelectionChange(): void {\n this.session.processSelectionStyles();\n this.renderer.updateSelection(this.selection.range);\n if (this.selection.isEmpty) {\n this.renderer.updateCursor();\n }\n this.editorService.setHasSelection(!this.selection.isEmpty);\n this.rerenderMarker();\n }\n\n onScrollTopChange = (value: number): void => {\n this.mainRenderer.scrollTo(value);\n };\n\n private onDocumentChange = (range: Range): void => {\n let lastRow = range.start.row === range.end.row ? range.end.row : Infinity;\n this.renderer.updateLines(range.start.row, lastRow);\n\n // Update cursor because tab characters can influence the cursor position.\n this.renderer.updateCursor();\n };\n\n destroyMainSessionListeners(): void {\n this.mainSession.removeEventListener('changeScrollTop', this.onScrollTopChange);\n }\n\n private focusCustomComponent(element: HTMLElement): void {\n const index = +element.attributes.getNamedItem('data-insert-index').value;\n const component =\n this.session.customComponents.images.find(x => x.instance.insertIndex === index) ??\n this.session.customComponents.tables.find(x => x.instance.insertIndex === index) ??\n this.session.customComponents.customElements.find(x => x.instance.insertIndex === index);\n if (!component || component === this.focusedComponent) {\n return;\n }\n\n this.focusedComponent?.instance.blur();\n component.instance.focus();\n this.focusedComponent = component;\n const position = this.session.document.indexToPosition(index, 0);\n this.selection.placeCursor(position);\n this.onSelectionChange();\n }\n\n private blurCustomComponent(): void {\n if (this.focusedComponent) {\n this.focusedComponent.instance.blur();\n this.focusedComponent = null;\n }\n }\n\n private isEmptyNumberingParagraph(paragraphIndex: number): boolean {\n const currentLine = this.session.document.getLine(this.session.document.lines, paragraphIndex);\n return currentLine.length === 0 && this.session.model.paragraphs[paragraphIndex].paragraphStyle.numberingId !== null;\n }\n\n scrollCursorIntoMainView(offset?: number): void {\n if (this.session !== this.mainSession) {\n return;\n }\n this.mainRenderer.scrollCursorIntoView(null, offset);\n }\n\n changedTableSize(insertIndex: number, sessionId: number): void {\n const session = this.regulatorService.getSession(sessionId);\n const paragraph = ContentHelper.documentIndexToParagraphIndex(session.wrapParagraphIndex, insertIndex).row;\n session.updateWrapData(paragraph, paragraph);\n this.textInput.input.focus();\n }\n\n insertTableRows(insertIndex: number, rowsCount: number, targetIndex: number, inheritIndex: number, sessionId: number): void {\n this.regulatorService.setCustomSessionAsCurrent(sessionId);\n const beforeTable = ContentHelper.documentIndexToParagraphIndex(this.session.wrapParagraphIndex, insertIndex);\n this.selection.placeCursor(beforeTable);\n const table = this.session.model.tables.find(x => x.insertIndex === insertIndex);\n this.history.pushInsertTableRows(insertIndex, rowsCount, targetIndex, inheritIndex, table);\n this.commandsService.createCommand(\n SaveCommandsHelper.getInsertTableRowsCommand(rowsCount, inheritIndex, insertIndex, targetIndex, this.targets)\n );\n this.session.insertTableRows(insertIndex, rowsCount, targetIndex, inheritIndex);\n this.changedTableSize(insertIndex, sessionId);\n }\n\n insertTableColumns(insertIndex: number, columnsCount: number, targetIndex: number, inheritIndex: number, sessionId: number): void {\n this.regulatorService.setCustomSessionAsCurrent(sessionId);\n const beforeTable = ContentHelper.documentIndexToParagraphIndex(this.session.wrapParagraphIndex, insertIndex);\n this.selection.placeCursor(beforeTable);\n const table = this.session.model.tables.find(x => x.insertIndex === insertIndex);\n this.history.pushInsertTableColumns(insertIndex, columnsCount, targetIndex, inheritIndex, table);\n this.commandsService.createCommand(\n SaveCommandsHelper.getInsertTableColumnsCommand(columnsCount, inheritIndex, insertIndex, targetIndex, this.targets)\n );\n this.session.insertTableColumns(insertIndex, columnsCount, targetIndex, inheritIndex);\n this.changedTableSize(insertIndex, sessionId);\n }\n\n removeTableRows(insertIndex: number, startIndex: number, endIndex: number, sessionId: number): void {\n this.regulatorService.setCustomSessionAsCurrent(sessionId);\n const beforeTable = ContentHelper.documentIndexToParagraphIndex(this.session.wrapParagraphIndex, insertIndex);\n this.selection.placeCursor(beforeTable);\n const table = this.session.model.tables.find(x => x.insertIndex === insertIndex);\n this.history.pushRemoveTableRows(insertIndex, startIndex, endIndex, table);\n this.commandsService.createCommand(SaveCommandsHelper.getRemoveTableRowsCommand(startIndex, endIndex, insertIndex, this.targets));\n this.session.removeTableRows(insertIndex, startIndex, endIndex);\n this.changedTableSize(insertIndex, sessionId);\n }\n\n removeTableColumns(insertIndex: number, startIndex: number, endIndex: number, sessionId: number): void {\n this.regulatorService.setCustomSessionAsCurrent(sessionId);\n const beforeTable = ContentHelper.documentIndexToParagraphIndex(this.session.wrapParagraphIndex, insertIndex);\n this.selection.placeCursor(beforeTable);\n const table = this.session.model.tables.find(x => x.insertIndex === insertIndex);\n this.history.pushRemoveTableColumns(insertIndex, startIndex, endIndex, table);\n this.commandsService.createCommand(\n SaveCommandsHelper.getRemoveTableColumnsCommand(startIndex, endIndex, insertIndex, this.targets)\n );\n this.session.removeTableColumns(insertIndex, startIndex, endIndex);\n this.changedTableSize(insertIndex, sessionId);\n }\n\n removeImage(insertIndex: number): void {\n const range = this.session.document.indexesToRange(insertIndex, insertIndex + 1);\n this.saveRemoveToHistory(range);\n this.session.remove(range);\n this.renderer.updateCursor();\n this.textInput.input.focus();\n }\n\n resizeTableColumns(resizeTableColumns: ResizeTableColumnsModel, sessionId: number): void {\n this.regulatorService.setCustomSessionAsCurrent(sessionId);\n const beforeTable = ContentHelper.documentIndexToParagraphIndex(this.session.wrapParagraphIndex, resizeTableColumns.insertIndex);\n this.selection.placeCursor(beforeTable);\n this.history.pushResizeTableColumns(resizeTableColumns);\n this.session.resizeTableColumns(resizeTableColumns);\n this.changedTableSize(resizeTableColumns.insertIndex, sessionId);\n }\n\n onMousePressedMove(x: number, y: number): void {\n const position = this.renderer.screenToTextCoordinates(x, y);\n this.selection.moveSelection(position);\n this.onSelectionChange();\n this.scrollCursorIntoMainView();\n }\n\n searchOptionSubscription(): Subscription {\n return this.editorService.searchOptions$.subscribe(searchOptions => {\n this.find(searchOptions);\n this.editorService.searchIteration = this.updateCounter();\n });\n }\n\n replaceSubscription(): Subscription {\n return this.editorService.replace$.subscribe(replace => {\n this.replace(replace.searchValue, replace.replaceValue);\n this.editorService.searchIteration = this.updateCounter();\n });\n }\n\n setTextStylesSubscription(): Subscription {\n return this.editorService.setTextStyles$.subscribe(textStyles => {\n this.applyTextStyles(textStyles);\n this.focus();\n });\n }\n\n setParagraphStylesSubscription(): Subscription {\n return this.editorService.setParagraphStyles$.subscribe(paragraphStyles => {\n this.applyParagraphStyles(paragraphStyles);\n this.focus();\n });\n }\n\n setNumberingTemplateTypeSubscription(): Subscription {\n return this.editorService.setNumberingTemplateType$.subscribe(numberingTemplateType => {\n this.setNumberingTemplate(numberingTemplateType);\n this.focus();\n });\n }\n\n removeNumberingsSubscription(): Subscription {\n return this.editorService.removeNumberings$.subscribe(() => {\n this.removeNumberingsFromParagraphs();\n this.focus();\n });\n }\n\n setImageStyleSubscription(): Subscription {\n return this.editorService.setImageStyle$.subscribe(image => {\n this.applyImageStyles(image);\n this.focus();\n });\n }\n\n changeElementStyleSubscription(): Subscription {\n return this.editorService.changeElementStyle$.subscribe(x => this.applyElementStyle(x));\n }\n\n createCustomComponentSubscription(): Subscription {\n return this.editorService.createCustomComponent$.subscribe(model => {\n this.createCustomElement(model);\n this.focus();\n });\n }\n\n insertBreakSubscription(): Subscription {\n return this.editorService.insertBreak$.subscribe(breakType => {\n this.insertBreak(breakType);\n this.focus();\n });\n }\n\n insertImageSubscription(): Subscription {\n return this.editorService.insertImage$.subscribe(imageData => {\n this.insertImage(imageData);\n this.focus();\n });\n }\n\n insertLinkSubscription(): Subscription {\n return this.editorService.insertLink$.subscribe(linkData => {\n this.insertLink(linkData);\n this.focus();\n });\n }\n\n endMousePressSubscription(): Subscription {\n return this.editorService.endMousePress$.subscribe(() => {\n this.mouseHandler.endMousePress();\n });\n }\n\n clearSelectionSubscription(): Subscription {\n return this.editorService.clearSelection$.subscribe(() => {\n this.selection.clearSelection();\n this.onSelectionChange();\n });\n }\n\n changedTableSizeSubscription(): Subscription {\n return this.editorService.changedTableSize$.subscribe(data => {\n this.changedTableSize(data.insertIndex, data.sessionId);\n });\n }\n\n insertTableRowsSubscription(): Subscription {\n return this.editorService.insertTableRows$.subscribe(data => {\n this.insertTableRows(data.insertIndex, data.rowsCount, data.targetIndex, data.inheritIndex, data.sessionId);\n });\n }\n\n insertTableColumnsSubscription(): Subscription {\n return this.editorService.insertTableColumns$.subscribe(data => {\n this.insertTableColumns(data.insertIndex, data.columnsCount, data.targetIndex, data.inheritIndex, data.sessionId);\n });\n }\n\n removeTableRowsSubscription(): Subscription {\n return this.editorService.removeTableRows$.subscribe(data => {\n this.removeTableRows(data.insertIndex, data.startIndex, data.endIndex, data.sessionId);\n });\n }\n\n removeTableColumnsSubscription(): Subscription {\n return this.editorService.removeTableColumns$.subscribe(data => {\n this.removeTableColumns(data.insertIndex, data.startIndex, data.endIndex, data.sessionId);\n });\n }\n\n removedImageSubscription(): Subscription {\n return this.editorService.removeImage$.subscribe(data => {\n this.removeImage(data.insertIndex);\n });\n }\n\n resizeTableColumnsSubscription(): Subscription {\n return this.editorService.resizeTableColumns$.subscribe(data => {\n this.resizeTableColumns(data.resizeTableColumns, data.sessionId);\n });\n }\n\n insertTableSubscription(): Subscription {\n return this.editorService.insertTable$.subscribe(data => {\n this.insertTable(data);\n });\n }\n\n rendererUpdatedSubscription(): Subscription {\n return this.editorService.rendererUpdated$.subscribe(sessionId => {\n const edgeTarget = this.regulatorService.getEdgeTarget(sessionId);\n if (edgeTarget !== null) {\n this.mainRenderer.edgesLayer.updateByLocation(edgeTarget.edgeData.pageType as PageType);\n }\n });\n }\n\n edgeElementCopyUpdatedSubscription(): Subscription {\n return this.editorService.edgeElementCopyUpdated$.subscribe(data => {\n if (this.regulatorService.edgeEditingPage !== data.page) {\n return;\n }\n\n const edgeSessionId = +data.newElementCopy.attributes.getNamedItem('data-session-id').value;\n const edgeSession = this.regulatorService.sessions.find(x => x.sessionId === edgeSessionId);\n edgeSession.renderer.container = data.newElementCopy.firstChild as HTMLElement;\n });\n }\n\n changedEdgeHeightSubscription(): Subscription {\n return this.editorService.changedEdgeHeight$.subscribe(edgeType => {\n this.mainSession.pagesWrap.updatePageVerticalData(edgeType, this.regulatorService.edgeEditingPage);\n });\n }\n\n undoSubscription(): Subscription {\n return this.editorService.undo$.subscribe(() => {\n this.undo();\n this.focus();\n this.scrollCursorIntoMainView();\n });\n }\n\n redoSubscription(): Subscription {\n return this.editorService.redo$.subscribe(() => {\n this.redo();\n this.focus();\n this.scrollCursorIntoMainView();\n });\n }\n\n private printSubscription(): Subscription {\n return this.editorService.print$.subscribe(() => {\n PrintHelper.printDocument(this.mainSession, this.editorService);\n });\n }\n\n private cutSelectedSubscription(): Subscription {\n return this.editorService.cutSelected$.subscribe(() => {\n this.onCut(new ClipboardEvent(ClipboardEventTypes.cut));\n });\n }\n\n private copySelectedSubscription(): Subscription {\n return this.editorService.copySelected$.subscribe(() => {\n this.onCopy(new ClipboardEvent(ClipboardEventTypes.copy));\n });\n }\n\n private pasteFromClipboardSubscription(): Subscription {\n return this.editorService.pasteFromClipboard$.subscribe(() => {\n this.readClipboard()\n .then(data => this.pasteData(data))\n .catch(() => {\n // continue regardless error\n });\n });\n }\n\n private async readClipboard(): Promise<string> {\n const read = await navigator.permissions.query({ name: 'clipboard-read' as PermissionName });\n return new Promise(resolve => {\n if (navigator.clipboard && read.state != 'denied') {\n navigator.clipboard\n .readText()\n .then(data => {\n resolve(data);\n })\n .catch(() => {\n // continue regardless error\n });\n } else {\n resolve(this.clipboardData);\n }\n });\n }\n\n private pasteData(data: string): void {\n if (!data) {\n return;\n }\n const text = data.replace(/\\r\\n/g, '\\n').replace(/\\t/g, ' ');\n this.insert(text);\n this.scrollCursorIntoMainView();\n }\n\n private selectAllSubscription(): Subscription {\n return this.editorService.selectAll$.subscribe(() => {\n this.selection.selectAll(this.session.model);\n this.onSelectionChange();\n });\n }\n\n private removeSelectedSubscription(): Subscription {\n return this.editorService.removeSelected$.subscribe(() => {\n this.removeSelected();\n });\n }\n\n private clipboardDataSubscription(): Subscription {\n return this.editorService.clipboardData$.subscribe(data => {\n this.clipboardData = data;\n });\n }\n}\n","export const EDITOR_VERSION = '2';\n","import { InjectionToken } from '@angular/core';\n\nimport { ExternalElementInterface } from './external-element.service';\nimport { ExternalSidenavModel } from './models/external-sidenav.model';\n\nexport const EXTERNAL_ELEMENT_SIDENAV = new InjectionToken<ExternalSidenavModel>('EXTERNAL_ELEMENT_SIDENAV');\n\nexport const EXTERNAL_ELEMENT_SERVICE = new InjectionToken<ExternalElementInterface>('EXTERNAL_ELEMENT_SERVICE');\n","import { IFontMetricSize } from '../interfaces/font-metric-size.interface';\n\nexport class FontMetrics {\n static storageKey = 'metrics';\n\n static versionKey = 'editorVersion';\n\n static canvasNode: HTMLCanvasElement;\n\n /**\n * Key value pairs for calculated sizes of char symbols in HTML element\n */\n static metrics: {\n // font string representation 'italic 700 16px Arial' in snake_case\n [identifier: string]: {\n // char symbol\n [char: string]: IFontMetricSize; // symbol characteristics (width, size, etc.)\n };\n } = JSON.parse(localStorage.getItem(this.storageKey)) || {};\n\n /**\n * Key value pairs for identifiers and font strings\n */\n static fontStringMap: { [key: string]: string } = {};\n\n static measureDiv: HTMLElement;\n\n static strut: HTMLElement;\n\n static checkVersion(version: string): void {\n let identifier = localStorage.getItem(this.versionKey);\n if (identifier === version) {\n return;\n }\n\n localStorage.removeItem(this.storageKey);\n localStorage.setItem(this.versionKey, version);\n }\n\n static measureCharSize(ch: string, contentStyle: string): IFontMetricSize {\n let identifier = this.fontStringMap[contentStyle];\n if (!identifier) {\n identifier = contentStyle.split(' ').join('_');\n this.fontStringMap[contentStyle] = identifier;\n }\n\n this.metrics[identifier] ??= {};\n if (!this.metrics[identifier][ch] || isNaN(this.metrics[identifier][ch].font)) {\n this.metrics[identifier][ch] = this.calculateCanvas(ch, contentStyle);\n localStorage.setItem(this.storageKey, JSON.stringify(this.metrics));\n }\n\n return this.metrics[identifier][ch];\n }\n\n static calculateCanvas(ch: string, contentStyle: string): IFontMetricSize {\n this.canvasNode ||= document.createElement('canvas');\n const fontBaseLine = this.fontBaseline(contentStyle, ch);\n const context = this.canvasNode.getContext('2d');\n context.font = contentStyle;\n const textMetrics = context.measureText(ch);\n\n return {\n width: textMetrics.width,\n height: textMetrics.fontBoundingBoxAscent + textMetrics.fontBoundingBoxDescent,\n baseline: fontBaseLine.baseline,\n content: fontBaseLine.content,\n font: fontBaseLine.font,\n line: fontBaseLine.line,\n multiplier: fontBaseLine.multiplier,\n ascent: textMetrics.fontBoundingBoxAscent,\n descent: textMetrics.fontBoundingBoxDescent\n };\n }\n\n static fontBaseline(\n contentStyle: string,\n text: string\n ): {\n baseline: number;\n content: number;\n font: number;\n line: number;\n multiplier: number;\n } {\n const container = document.body;\n this.measureDiv ||= document.createElement('div');\n this.strut ||= document.createElement('span');\n\n if (text === ' ') {\n text = 'X';\n }\n\n this.measureDiv.style.font = contentStyle;\n this.measureDiv.style.lineHeight = '1';\n this.measureDiv.style.position = 'absolute';\n this.measureDiv.style.visibility = 'hidden';\n this.measureDiv.style.margin = '0';\n this.measureDiv.style.padding = '0';\n this.measureDiv.innerHTML = text;\n\n this.strut.style.fontSize = '0';\n this.strut.style.verticalAlign = 'baseline';\n this.strut.style.padding = '0 10px';\n\n this.measureDiv.classList.add('font-baseline');\n this.measureDiv.appendChild(this.strut);\n container.appendChild(this.measureDiv);\n\n const computedStyle = window.getComputedStyle(this.measureDiv);\n const fontSize = parseFloat(computedStyle.fontSize);\n const baselineHeight = fontSize - this.strut.offsetTop;\n const strutHeight = this.measureDiv.offsetHeight;\n const lineHeight = parseFloat(computedStyle.lineHeight) || this.measureDiv.offsetHeight;\n\n this.measureDiv.parentNode.removeChild(this.measureDiv);\n this.measureDiv.innerHTML = '';\n this.strut.innerHTML = '';\n\n return {\n baseline: baselineHeight,\n content: strutHeight,\n font: fontSize,\n line: lineHeight,\n multiplier: fontSize / baselineHeight\n };\n }\n}\n","import { ApplicationRef, ComponentRef, createComponent, EmbeddedViewRef, Injectable, Injector, Type } from '@angular/core';\n\nimport { BaseNoderComponent } from '../../abstract/base.component';\nimport { CustomContent } from '../../types/custom-content';\n\ntype Predicate<T> = (value: T, index: number, obj: T[]) => object;\n\n@Injectable()\nexport class ComponentService {\n constructor(private applicationRef: ApplicationRef, private injector: Injector) {}\n\n generateAndAttachComponent<T>(appendTo: Element, component: Type<T>, componentProps: object): ComponentRef<T> {\n const componentRef = this.generateComponent(component, componentProps);\n this.attachComponent(appendTo, componentRef);\n return componentRef;\n }\n\n generateComponents<T>(component: Type<T>, contents: CustomContent[], predicate: Predicate<CustomContent>): ComponentRef<T>[] {\n const properties = contents.map(predicate);\n return this.generateComponentsByProperties(component, properties);\n }\n\n generateComponentsByProperties<T>(component: Type<T>, componentProps: object[]): ComponentRef<T>[] {\n const components = [];\n\n componentProps.forEach(x => {\n const componentRef = this.generateComponent(component, x);\n components.push(componentRef);\n });\n\n return components;\n }\n\n generateComponent<T>(component: Type<T>, componentProps: object): ComponentRef<T> {\n const componentRef = this.createComponent(component, componentProps);\n (componentRef.instance as BaseNoderComponent).initialize();\n return componentRef;\n }\n\n createComponent<T>(component: Type<T>, componentProps?: object): ComponentRef<T> {\n const componentRef = createComponent(component, {\n environmentInjector: this.applicationRef.injector,\n elementInjector: this.injector\n });\n Object.assign(componentRef.instance, componentProps);\n return componentRef;\n }\n\n attachComponent<T>(appendTo: Element | DocumentFragment, componentRef: ComponentRef<T>): void {\n this.applicationRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n appendTo.appendChild(domElem);\n }\n\n cloneAndAttachComponent<T>(appendTo: Element | DocumentFragment, componentRef: ComponentRef<T>): void {\n this.applicationRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n const clone = domElem.cloneNode(true);\n this.setInputElementValue(clone as HTMLElement);\n appendTo.appendChild(clone);\n }\n\n removeComponent<T>(componentRef: ComponentRef<T>): void {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.destroy();\n }\n\n private setInputElementValue(clone: HTMLElement): void {\n const inputElements = Array.from(clone.getElementsByTagName('input'));\n inputElements.forEach(element => element.setAttribute('value', element.value));\n }\n}\n","export class TableCellModel {\n public column: number;\n public insertIndex: number;\n public row: number;\n\n public constructor(\n fields?: Partial<TableCellModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class EdgeTargetModel {\n public pageType: any;\n public type: any;\n\n public constructor(\n fields?: Partial<EdgeTargetModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { EdgeTargetModel } from './edge-target.model';\nimport { TableCellModel } from './table-cell.model';\n\nexport class TargetModel {\n public edgeData: EdgeTargetModel;\n public edgeEditPage: number;\n public tableCell: TableCellModel;\n public type: any;\n\n public constructor(\n fields?: Partial<TargetModel>) {\n\n if (fields) {\n if (fields.edgeData) { fields.edgeData = new EdgeTargetModel(fields.edgeData); }\n if (fields.tableCell) { fields.tableCell = new TableCellModel(fields.tableCell); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export enum TargetType {\n Document,\n TableCell,\n Edge\n}\n","import { NoderTableCellComponent } from '../../custom-components/table/components/table-cell.component';\nimport { SessionSourceModel } from './session-source.model';\nimport { TableCellModel } from '../../../../models/generated/table-cell.model';\nimport { TableModel } from '../../../../models/generated/table.model';\nimport { TargetModel } from '../../../../models/generated/target.model';\nimport { TargetType } from '../../operations/enums/target-type.enum';\n\nexport class CellSessionSourceModel implements SessionSourceModel {\n edgeEditPage?: number = null;\n constructor(private table: TableModel, private cellComponent: NoderTableCellComponent) {}\n\n public getTarget(): TargetModel {\n const tableCell = new TableCellModel({\n insertIndex: this.table.insertIndex,\n row: this.cellComponent.rowIndex,\n column: this.cellComponent.cellIndex\n });\n return new TargetModel({ type: TargetType.TableCell, tableCell, edgeEditPage: this.edgeEditPage });\n }\n}\n","import { Point } from '../point';\n\nexport class DeltaHelper {\n static remove(paragraphs: string[], start: Point, end: Point): void {\n const paragraph = paragraphs[start.row].slice(0, start.column) + paragraphs[end.row].slice(end.column);\n paragraphs.splice(start.row, end.row - start.row + 1, paragraph);\n }\n\n static insertTextAndReturnEndPoint(paragraphs: string[], text: string, position: Point): Point {\n const left = paragraphs[position.row].slice(0, position.column);\n const right = paragraphs[position.row].slice(position.column);\n const insertParagraphs = this.splitByParagraphs(`${left}${text}${right}`);\n paragraphs.splice(position.row, 1, ...insertParagraphs);\n return new Point(position.row + insertParagraphs.length - 1, insertParagraphs[insertParagraphs.length - 1].length - right.length);\n }\n\n static splitByParagraphs(text: string): string[] {\n return text.split(/\\r\\n|\\r|\\n/);\n }\n}\n","import { BreakTypes } from './enums/break-types.enum';\nimport { ContentsInterface } from '../interfaces/contents.interface';\nimport { DeltaHelper } from './helpers/delta.helper';\nimport { MarginModel } from './models/margin.model';\nimport { NEW_LINE_MARKUP } from './constants/editor.const';\nimport { Point } from './point';\nimport { Range } from './range';\n\nexport class Document {\n lines = [''];\n\n /**\n * Returns all the lines in the document as a single string, joined by the new line character.\n **/\n get text(): string {\n return this.lines.join(NEW_LINE_MARKUP);\n }\n\n get length(): number {\n return this.lines.length;\n }\n\n constructor(\n private model: ContentsInterface,\n public pageMargin: MarginModel,\n public pagesSpace: number,\n public pageWidth: number,\n public pageHeight?: number\n ) {\n this.lines = DeltaHelper.splitByParagraphs(this.model.content);\n }\n\n insertText(position: Point, text: string): Point {\n const endPoint = DeltaHelper.insertTextAndReturnEndPoint(this.lines, text, position);\n return endPoint;\n }\n\n /**\n * Removes the `range` from the document.\n **/\n removeRange(range: Range): void {\n DeltaHelper.remove(this.lines, range.start, range.end);\n }\n\n getLine(lines: string[], index: number): string {\n return lines[index] || '';\n }\n\n getAllLines(): string[] {\n return this.getLines(0, this.getLinesCount());\n }\n\n getLinesCount(): number {\n return this.lines.length - 1;\n }\n\n getLines(firstRow: number, lastRow: number): string[] {\n return this.lines.slice(firstRow, lastRow + 1);\n }\n\n /**\n * Returns all the text within `range` as an array of lines.\n **/\n getLinesForRange(range: Range): string[] {\n if (range.isSingleLine) {\n const line = this.getLine(this.lines, range.start.row);\n const linePartInRange = line.slice(range.start.column, range.end.column);\n\n return [linePartInRange];\n }\n\n const lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || '').slice(range.start.column);\n const lastIndex = lines.length - 1;\n lines[lastIndex] = lines[lastIndex].slice(0, range.end.column);\n\n return lines;\n }\n\n /**\n * Returns all the text within `range` as a single string.\n **/\n getTextRange(range: Range): string {\n return this.getLinesForRange(range).join(NEW_LINE_MARKUP);\n }\n\n /**\n * Converts the position in a document to the character's index.\n */\n positionToIndex(lines: string[], position: Point, startRow = 0): number {\n let index = 0;\n const endRow = Math.min(position.row, this.lines.length);\n for (let i = startRow || 0; i < endRow; i++) {\n index += lines[i].length + 1;\n }\n\n return index + position.column;\n }\n\n /**\n * Converts an index position in a document to the position.\n * See 'positionToIndex' for more information.\n */\n indexToPosition(positionIndex: number, startRow: number): Point {\n const newlineLength = NEW_LINE_MARKUP.length;\n for (let lineIndex = startRow || 0; lineIndex < this.lines.length; lineIndex++) {\n positionIndex -= this.lines[lineIndex].length + newlineLength;\n if (positionIndex < 0) {\n const column = positionIndex + this.lines[lineIndex].length + newlineLength;\n\n return new Point(lineIndex, column);\n }\n }\n\n const column = positionIndex + this.lines[this.lines.length - 1].length + newlineLength;\n\n return new Point(this.lines.length - 1, column);\n }\n\n indexesToRange(startIndex: number, endIndex: number): Range {\n const startPoint = this.indexToPosition(startIndex, 0);\n const endPoint = this.indexToPosition(endIndex, 0);\n\n return new Range(startPoint, endPoint);\n }\n\n isNewLineSymbol(index: number): boolean {\n const text = this.text;\n\n return !text || !text[index] || text[index] === NEW_LINE_MARKUP;\n }\n\n /**\n * Converts the selection range in a document to the selected paragraphs indexes (start and end of paragraphs).\n * start/end refers to the \"absolute position\" of a character in the document.\n */\n getSelectedParagraphsByRange(range: Range): { start: number; end: number } {\n const newlineLength = NEW_LINE_MARKUP.length;\n let start = 0;\n let end = 0;\n let i;\n const row = Math.min(range.end.row, this.lines.length - 1);\n for (i = 0; i < row; i++) {\n if (i < range.start.row) {\n start += this.lines[i].length + newlineLength;\n }\n\n end += this.lines[i].length + newlineLength;\n }\n\n if (i < this.lines.length) {\n end += this.lines[i].length;\n }\n\n return { start, end };\n }\n\n getPositionAfterBreak(position: Point, breakType: BreakTypes): Point {\n if (breakType === BreakTypes.TextWrapping) {\n return position;\n }\n\n const isLastColumn = position.column === this.lines[position.row].length;\n const isLastParagraph = position.row === this.lines.length - 1;\n return isLastColumn && !isLastParagraph ? new Point(position.row + 1, 0) : position;\n }\n}\n","import { EdgeTargetModel } from '../../../../models/generated/edge-target.model';\nimport { EdgeType } from '../../core/components/edges/edge-type.enum';\nimport { PageType } from '../../core/enums/page-type.enum';\nimport { SessionSourceModel } from './session-source.model';\nimport { TargetModel } from '../../../../models/generated/target.model';\nimport { TargetType } from '../../operations/enums/target-type.enum';\n\nexport class EdgeSessionSourceModel implements SessionSourceModel {\n edgeEditPage?: number = null;\n constructor(private pageType: PageType, private type: EdgeType) {}\n public getTarget(): TargetModel {\n const edgeData = new EdgeTargetModel({ pageType: this.pageType, type: this.type });\n return new TargetModel({ type: TargetType.Edge, edgeData, edgeEditPage: this.edgeEditPage });\n }\n}\n","import { ComponentRef } from '@angular/core';\n\nimport { BaseNoderComponent } from '../abstract/base.component';\nimport { CustomContent } from '../types/custom-content';\nimport { DistanceModel } from '../../../core/models/distance.model';\n\nexport class CustomComponentHelper {\n static applyRemovingComponents(components: ComponentRef<BaseNoderComponent>[], startIndex: number, endIndex: number): void {\n let firstRemovingIndex: number | null = null;\n let deleteCount = 0;\n components.forEach((x, index) => {\n if (x.instance.insertIndex >= startIndex && x.instance.insertIndex <= endIndex) {\n if (firstRemovingIndex === null) {\n firstRemovingIndex = index;\n }\n\n deleteCount++;\n x.destroy();\n }\n });\n\n components.splice(firstRemovingIndex, deleteCount);\n }\n\n static applyRemovingOrReplacingToComponents(\n components: ComponentRef<BaseNoderComponent>[],\n distance: DistanceModel,\n symbolDifference: number,\n contents: CustomContent[]\n ): void {\n if (!components.length) {\n return;\n }\n\n const firstRemovingContentIndex = components.findIndex(x => x.instance.insertIndex >= distance.start);\n\n if (firstRemovingContentIndex < 0) {\n return;\n }\n\n let lastRemovingContentIndex = components.length - 1;\n\n while (lastRemovingContentIndex >= 0) {\n if (components[lastRemovingContentIndex].instance.insertIndex <= distance.selectionEnd) {\n break;\n }\n\n components[lastRemovingContentIndex].instance.insertIndex += symbolDifference;\n lastRemovingContentIndex--;\n }\n\n const deleteCount = lastRemovingContentIndex - firstRemovingContentIndex + 1;\n const removedComponents = components.splice(firstRemovingContentIndex, deleteCount);\n removedComponents.forEach(x => {\n const index = contents.findIndex(y => y.insertIndex === x.instance.insertIndex);\n if (index > -1) {\n contents.splice(index, 1);\n }\n\n x.destroy();\n });\n }\n}\n","import { IFontMetricSize } from '../interfaces/font-metric-size.interface';\n\nexport class DisplayToken implements IFontMetricSize {\n width: number;\n height: number;\n baseline: number;\n content: number;\n font: number;\n line: number;\n lineSpacing: number;\n multiplier: number;\n ascent: number;\n descent: number;\n displayValue: number;\n align: number;\n indentFirstLine: number;\n indentHanging: number;\n indentLeft: number;\n indentRight: number;\n indentBefore: number;\n indentAfter: number;\n isPageBreak: boolean;\n isLineBreak: boolean;\n isTab: boolean;\n isTable: boolean;\n\n get breaksLine(): boolean {\n return this.isPageBreak || this.isLineBreak;\n }\n\n public constructor(fields?: Partial<DisplayToken>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n}\n","export class IndentModel {\n constructor(public firstLine: number, public hanging: number, public left: number, public right: number) {}\n}\n","import { IndentModel } from './indent.model';\n\nexport class LineInfoModel {\n height: number;\n width: number;\n align: number;\n indent: IndentModel;\n offsetBefore: number;\n offsetAfter: number;\n lineSpacing: number;\n isAfterPageBreak: boolean;\n isEndedByPageBreak: boolean;\n backgroundColor: string;\n\n constructor(fields?: Partial<LineInfoModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n}\n","import { fromEvent, Subscription } from 'rxjs';\n\nimport { EditorService } from '../../../interaction/editor.service';\nimport { NoderImageComponent } from '../components/image.component';\n\nexport class ImageInputHandler {\n private readonly undoRedoActions: { [key: string]: () => void } = {};\n\n private readonly imageKeyDownSubscription: Subscription;\n\n constructor(private readonly editorService: EditorService, private readonly image: NoderImageComponent) {\n this.imageKeyDownSubscription = fromEvent<KeyboardEvent>(document, 'keydown').subscribe(event => this.onKeyDown(event));\n this.fillUndoRedoActions();\n }\n\n destroy(): void {\n this.imageKeyDownSubscription?.unsubscribe();\n }\n\n private onKeyDown(event: KeyboardEvent): void {\n if (this.editorService.isViewOnly) {\n return;\n }\n\n if (['Backspace', 'Delete'].includes(event.code)) {\n this.editorService.removeImage(this.image.insertIndex);\n return;\n }\n\n const keyCombination = this.getKeyCombination(event);\n if (this.undoRedoActions[keyCombination] && !this.editorService.isViewOnly) {\n this.undoRedoActions[keyCombination]();\n event.preventDefault();\n }\n }\n\n private getKeyCombination(event: KeyboardEvent): string {\n let result = event.metaKey ? 'Command-' : '';\n return event.ctrlKey ? `${result}Ctrl-${event.code}` : '';\n }\n\n private fillUndoRedoActions(): void {\n this.undoRedoActions['Ctrl-KeyZ'] = () => this.editorService.undo();\n this.undoRedoActions['Command-KeyZ'] = () => this.editorService.undo();\n this.undoRedoActions['Ctrl-KeyY'] = () => this.editorService.redo();\n this.undoRedoActions['Command-KeyY'] = () => this.editorService.redo();\n }\n}\n","export enum Direction {\n NorthWest,\n North,\n NorthEast,\n East,\n SouthEast,\n South,\n SouthWest,\n West\n}\n","import { Direction } from './direction.enum';\n\nexport class DirectionWrapper {\n constructor(private readonly direction: Direction) {}\n\n isHorizontal(): boolean {\n return [Direction.East, Direction.West].includes(this.direction);\n }\n\n isOrdinal(): boolean {\n return [Direction.NorthWest, Direction.NorthEast, Direction.SouthEast, Direction.SouthWest].includes(this.direction);\n }\n\n includesWest(): boolean {\n return [Direction.West, Direction.NorthWest, Direction.SouthWest].includes(this.direction);\n }\n\n includesNorth(): boolean {\n return [Direction.North, Direction.NorthWest, Direction.NorthEast].includes(this.direction);\n }\n}\n","import { Size } from '../interfaces/size';\nimport { SizeDelta } from './size-delta';\n\nexport class SizeWrapper {\n private readonly aspectRatio: number;\n\n private _width: number;\n get width(): number {\n return this._width;\n }\n\n private _height: number;\n get height(): number {\n return this._height;\n }\n\n constructor(size: Size, private readonly minSize?: Size) {\n if (minSize && (size.width < minSize.width || size.height < minSize.height)) {\n throw new Error('Passed size is smaller than minimum size');\n }\n\n this._height = size.height;\n this._width = size.width;\n this.aspectRatio = this._width / this._height;\n }\n\n applyDelta(delta: SizeDelta): void {\n this.applyDeltaX(delta);\n this.applyDeltaY(delta);\n }\n\n applyDeltaX(delta: SizeDelta): void {\n this._width = this.getAllowedWidth(this._width + delta.deltaX);\n }\n\n applyDeltaY(delta: SizeDelta): void {\n this._height = this.getAllowedHeight(this._height + delta.deltaY);\n }\n\n fitProportionallyTo(size: SizeWrapper): void {\n const widthDiff = size._width - this._width;\n const heightDiff = size._height - this._height;\n if (widthDiff > heightDiff) {\n this._width = this.getAllowedWidth(size.width);\n this._height = Math.floor(this._width / this.aspectRatio);\n return;\n }\n\n this._height = this.getAllowedHeight(size.height);\n this._width = Math.floor(this._height * this.aspectRatio);\n }\n\n fitTo(size: SizeWrapper): void {\n this._width = this.getAllowedWidth(size.width);\n this._height = this.getAllowedHeight(size.height);\n }\n\n toSize(): Size {\n return { width: this._width, height: this._height };\n }\n\n private getAllowedWidth(value: number): number {\n return !this.minSize ? value : Math.max(value, this.minSize.width);\n }\n\n private getAllowedHeight(value: number): number {\n return !this.minSize ? value : Math.max(value, this.minSize.height);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output } from '@angular/core';\n\nimport { Coordinate } from './coordinate';\nimport { Direction } from './direction.enum';\nimport { DirectionWrapper } from './direction-wrapper';\nimport { Size } from '../interfaces/size';\nimport { SizeDelta } from './size-delta';\nimport { SizeWrapper } from './size-wrapper';\n\n@Component({\n selector: 'app-resizer',\n templateUrl: './resizer.component.html',\n styleUrls: ['./resizer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ResizerComponent implements OnInit {\n @HostBinding('style.width.px')\n get width(): number {\n return this._size.width;\n }\n\n @HostBinding('style.height.px')\n get height(): number {\n return this._size.height;\n }\n\n @HostBinding('style.right.px')\n get right(): number {\n return this.direction?.includesWest() ? 0 : null;\n }\n\n @HostBinding('style.bottom.px')\n get bottom(): number {\n const halfPointHeight = 4;\n return this.direction?.includesNorth() ? halfPointHeight : null;\n }\n\n @Input() isDisabled = false;\n\n @Input()\n set size(value: Size) {\n if (!this.direction) {\n this._size = new SizeWrapper(value, { width: 1, height: 1 });\n }\n }\n private _size: SizeWrapper;\n\n @Output() resizeEnd = new EventEmitter<Size>();\n\n readonly Direction = Direction;\n\n private virtualRectSize: SizeWrapper;\n\n private prevCoordinate: Coordinate;\n\n private direction: DirectionWrapper;\n\n ngOnInit(): void {\n if (!this._size) {\n throw new Error('Initial size is not set');\n }\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMousemove(event: MouseEvent): void {\n if (!this.direction || this.isDisabled) {\n return;\n }\n\n const delta = this.getDelta(event);\n this.setPreviousCoordinate(event);\n if (this.direction.isOrdinal()) {\n this.virtualRectSize.applyDelta(delta);\n this._size.fitProportionallyTo(this.virtualRectSize);\n return;\n }\n\n this.direction.isHorizontal() ? this.virtualRectSize.applyDeltaX(delta) : this.virtualRectSize.applyDeltaY(delta);\n this._size.fitTo(this.virtualRectSize);\n }\n\n @HostListener('window:mouseup')\n onMouseup(): void {\n if (!this.direction || this.isDisabled) {\n return;\n }\n\n this.direction = null;\n this.resizeEnd.emit(this._size.toSize());\n }\n\n onStartResizing(event: MouseEvent, direction: Direction): void {\n event.preventDefault();\n if (event.button !== 0) {\n return;\n }\n\n this.virtualRectSize = new SizeWrapper(this._size.toSize());\n this.direction = new DirectionWrapper(direction);\n this.setPreviousCoordinate(event);\n }\n\n private getDelta(event: MouseEvent): SizeDelta {\n const rawDeltaX = event.screenX - this.prevCoordinate.x;\n const deltaX = this.direction.includesWest() ? -rawDeltaX : rawDeltaX;\n\n const rawDeltaY = event.screenY - this.prevCoordinate.y;\n const deltaY = this.direction.includesNorth() ? -rawDeltaY : rawDeltaY;\n\n return { deltaX, deltaY };\n }\n\n private setPreviousCoordinate(event: MouseEvent): void {\n this.prevCoordinate = { x: event.screenX, y: event.screenY };\n }\n}\n","<span\n class=\"point north-west\"\n (mousedown)=\"onStartResizing($event, Direction.NorthWest)\"></span>\n<span\n class=\"point north\"\n (mousedown)=\"onStartResizing($event, Direction.North)\"></span>\n<span\n class=\"point north-east\"\n (mousedown)=\"onStartResizing($event, Direction.NorthEast)\"></span>\n<span\n class=\"point east\"\n (mousedown)=\"onStartResizing($event, Direction.East)\"></span>\n<span\n class=\"point south-east\"\n (mousedown)=\"onStartResizing($event, Direction.SouthEast)\"></span>\n<span\n class=\"point south\"\n (mousedown)=\"onStartResizing($event, Direction.South)\"></span>\n<span\n class=\"point south-west\"\n (mousedown)=\"onStartResizing($event, Direction.SouthWest)\"></span>\n<span\n class=\"point west\"\n (mousedown)=\"onStartResizing($event, Direction.West)\"></span>\n","import { ChangeDetectionStrategy, Component, ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BaseNoderComponent } from '../../shared/abstract/base.component';\nimport { EditorService } from '../../../interaction/editor.service';\nimport { ImageApiService } from '../services/image-api.service';\nimport { ImageInputHandler } from '../input-handler/image-input.handler';\nimport { ImageModel } from '../../../../../models/generated/image.model';\nimport { Size } from '../interfaces/size';\n\n@Component({\n selector: 'app-noder-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoderImageComponent extends BaseNoderComponent {\n get isViewOnly$(): Observable<boolean> {\n return this.editorService.isViewOnly$;\n }\n\n get image(): ImageModel {\n return this.content as ImageModel;\n }\n set image(val: ImageModel) {\n this.content = val;\n }\n\n get size(): Size {\n return { width: this._width, height: this._height };\n }\n\n private isCanvas = false;\n\n private inputHandler: ImageInputHandler;\n\n constructor(protected elementRef: ElementRef<HTMLElement>, private apiService: ImageApiService, private editorService: EditorService) {\n super();\n }\n\n initialize(): void {\n const url = this.image.content?.replace('/api/', '') ?? '';\n this._height = this.image.height;\n this._width = this.image.width;\n this.apiService.getFile(url).subscribe((res: Blob) => {\n const fileSource = URL.createObjectURL(res);\n const image = this.createImage(fileSource);\n this.elementRef.nativeElement.appendChild(image);\n this.editorService.rendererUpdated(this.sessionId);\n });\n }\n\n onResizeEnd(size: Size): void {\n this.resize(size);\n const resizedImage = { ...this.image, width: size.width, height: size.height };\n this.editorService.changeImageStyle(resizedImage);\n }\n\n resize(size: Size): void {\n this._width = size.width;\n this._height = size.height;\n this.isCanvas ? this.resizeCanvas(size) : this.resizeImage(size);\n this.cdr.markForCheck();\n }\n\n override focus(): void {\n this.inputHandler = new ImageInputHandler(this.editorService, this);\n super.focus();\n }\n\n override blur(): void {\n this.inputHandler?.destroy();\n super.blur();\n }\n\n override ngOnDestroy(): void {\n this.inputHandler?.destroy();\n super.ngOnDestroy();\n }\n\n private createImage(fileSource): HTMLImageElement {\n const imageEl = document.createElement('img');\n imageEl.width = this._width;\n imageEl.height = this._height;\n imageEl.src = fileSource;\n return imageEl;\n }\n\n private resizeImage(size: Size): void {\n const image = this.elementRef.nativeElement.querySelector('img');\n image.width = size.width;\n image.height = size.height;\n }\n\n private resizeCanvas(size: Size): void {\n const image = this.elementRef.nativeElement.querySelector('canvas');\n image.style.width = `${size.width}px`;\n image.style.height = `${size.height}px`;\n }\n}\n","<app-resizer\n *ngIf=\"isFocused\"\n class=\"resizer\"\n [isDisabled]=\"isViewOnly$ | async\"\n [size]=\"size\"\n (resizeEnd)=\"onResizeEnd($event)\"></app-resizer>\n","import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\nimport { BaseNoderComponent } from '../shared/abstract/base.component';\nimport { TabModel } from '../../../../models/generated/tab.model';\n\n@Component({\n selector: 'app-noder-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoderTabComponent extends BaseNoderComponent {\n @HostBinding('style.width.px')\n override get width(): number {\n return this._width;\n }\n override set width(value: number) {\n this._width = value;\n }\n\n @HostBinding('style.fontSize.pt')\n override get height(): number {\n return this._height;\n }\n override set height(value: number) {\n this._height = value;\n }\n\n get tab(): TabModel {\n return this.content as TabModel;\n }\n set tab(val: TabModel) {\n this.content = val;\n }\n\n initialize(): void {\n this.calculateProperties();\n }\n\n protected calculateProperties(): void {\n this._height = this.tab.fontSize;\n this._width = this.tab.width;\n }\n}\n","&emsp;\n","import { ComponentRef } from '@angular/core';\n\nimport { NoderTableCellComponent } from '../components/table-cell.component';\n\nexport class CellDataModel {\n public constructor(\n public cell: HTMLTableCellElement,\n public cellContentHeight: number,\n public componentRef: ComponentRef<NoderTableCellComponent>\n ) {}\n\n public highlightCell() {\n this.componentRef.instance.isHighlighted = true;\n }\n\n public removeHighlightCell() {\n this.componentRef.instance.isHighlighted = false;\n }\n\n public clearSelection() {\n this.componentRef.instance.clearSelection();\n this.componentRef.instance.renderer.cursorLayer.hideCursor();\n }\n}\n","export enum ResizerSide {\n Left,\n Top,\n Right,\n Bottom\n}\n","import { fromEvent, Subscription, throttleTime } from 'rxjs';\n\nimport { CellResizerParametersModel } from '../models/cell-resizer-parameters.model';\nimport { EditorService } from '../../../interaction/editor.service';\nimport { ResizeTableColumnsModel } from '../../../../../models/generated/resize-table-columns.model';\nimport { ResizerSide } from '../enums/reisizer-side.enum';\nimport { TableModel } from '../../../../../models/generated/table.model';\n\nexport class CellResizer {\n cellResizerParameters: CellResizerParametersModel;\n\n tableInsertIndex: number;\n\n resizerHeight: number;\n\n sessionId: number;\n\n spaceLeft: number;\n\n spaceRight: number;\n\n startX: number;\n\n startY: number;\n\n documentMouseMove$: Subscription;\n\n documentMouseUp$: Subscription;\n\n readonly resizerBorderSize = 1;\n\n readonly minCellWidth = 15;\n\n constructor(\n public table: TableModel,\n public tableEl: HTMLTableElement,\n public editorService: EditorService,\n public resizerEl: HTMLDivElement\n ) {}\n\n onStartResizing(cellResizerParameters: CellResizerParametersModel): void {\n if (this.editorService.isViewOnly) {\n return;\n }\n\n this.cellResizerParameters = cellResizerParameters;\n\n switch (this.cellResizerParameters.cellSide) {\n case ResizerSide.Left:\n this.startResizingFromLeft();\n break;\n case ResizerSide.Top:\n break;\n case ResizerSide.Right:\n this.startResizingFromRight();\n break;\n case ResizerSide.Bottom:\n break;\n default:\n return;\n }\n }\n\n startResizingFromLeft(): void {\n this.spaceLeft = 0;\n this.spaceRight = this.table.columns[this.cellResizerParameters.columnIndex].width - this.minCellWidth;\n this.startX =\n this.tableEl.offsetLeft +\n this.tableEl.rows[this.cellResizerParameters.rowIndex].cells[this.cellResizerParameters.cellIndex].getBoundingClientRect().left;\n\n this.columnPositionChanged(this.startX - this.resizerBorderSize);\n this.addHorizontalMouseSubscriptions();\n }\n\n startResizingFromRight(): void {\n const cellHorizontalMerge =\n this.table.rows[this.cellResizerParameters.rowIndex].cells[this.cellResizerParameters.cellIndex].horizontalMerge ?? 1;\n const columnIndex = this.cellResizerParameters.columnIndex + cellHorizontalMerge - 1;\n this.spaceLeft = this.table.columns[columnIndex].width - this.minCellWidth;\n this.spaceRight = 0;\n const nextColumnIndex = columnIndex + 1;\n if (this.table.columns.length > nextColumnIndex) {\n this.spaceRight = this.table.columns[nextColumnIndex].width - this.minCellWidth;\n }\n\n const cellRect =\n this.tableEl.rows[this.cellResizerParameters.rowIndex].cells[this.cellResizerParameters.columnIndex].getBoundingClientRect();\n this.startX = this.tableEl.offsetLeft + cellRect.left + cellRect.width - this.resizerBorderSize;\n\n this.columnPositionChanged(this.startX);\n this.addHorizontalMouseSubscriptions();\n }\n\n addHorizontalMouseSubscriptions(): void {\n this.documentMouseMove$ = fromEvent(document, 'mousemove')\n .pipe(throttleTime(10))\n .subscribe((event: MouseEvent) => {\n this.onHorizontalMousemove(event);\n });\n this.documentMouseUp$ = fromEvent(document, 'mouseup').subscribe(() => {\n this.onMouseUp();\n });\n }\n\n removeMouseSubscriptions(): void {\n if (this.documentMouseMove$?.unsubscribe) {\n this.documentMouseMove$.unsubscribe();\n }\n\n if (this.documentMouseUp$?.unsubscribe) {\n this.documentMouseUp$.unsubscribe();\n }\n }\n\n onHorizontalMousemove = (event: MouseEvent): void => {\n const positionX = this.tableEl.offsetLeft + event.pageX;\n const distance = positionX - this.startX;\n if (this.spaceLeft + distance <= 0) {\n this.cellResizerParameters.distance = -this.spaceLeft;\n this.columnPositionChanged(this.startX - this.spaceLeft - this.resizerBorderSize);\n return;\n }\n\n if (this.spaceRight - distance <= 0) {\n this.cellResizerParameters.distance = this.spaceRight;\n this.columnPositionChanged(this.startX + this.spaceRight);\n return;\n }\n\n this.cellResizerParameters.distance = distance;\n this.columnPositionChanged(positionX);\n };\n\n onMouseUp(): void {\n this.removeMouseSubscriptions();\n this.columnPositionChanged(null);\n\n if (!this.cellResizerParameters.distance) {\n return;\n }\n\n if (this.cellResizerParameters.cellSide === ResizerSide.Left) {\n this.cellResizerParameters.distance = this.cellResizerParameters.distance * -1;\n }\n\n const resizeTableColumns = new ResizeTableColumnsModel({\n insertIndex: this.tableInsertIndex,\n columnIndex: this.cellResizerParameters.columnIndex,\n rowIndex: this.cellResizerParameters.rowIndex,\n cellIndex: this.cellResizerParameters.cellIndex,\n distance: Math.round(this.cellResizerParameters.distance),\n resizerSide: this.cellResizerParameters.cellSide\n });\n this.editorService.resizeTableColumns(resizeTableColumns, this.sessionId);\n }\n\n private columnPositionChanged(position: number): void {\n if (position === null) {\n this.resizerEl.setAttribute('style', `display:none;`);\n return;\n }\n\n this.resizerEl.setAttribute('style', `height:${this.resizerHeight}px; `);\n this.resizerEl.setAttribute(\n 'style',\n `height:${this.resizerHeight}px;left:${position - this.resizerEl.getBoundingClientRect().x}px`\n );\n }\n}\n","export enum HRule {\n Auto,\n AtLeast,\n Exact\n}\n","import { ResizerSide } from '../enums/reisizer-side.enum';\n\nexport class CellResizerParametersModel {\n public distance: number;\n\n public constructor(public columnIndex: number, public rowIndex: number, public cellIndex: number, public cellSide: ResizerSide) {}\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';\n\nimport { CellModel } from '../../../../../models/generated/cell.model';\nimport { CellResizerParametersModel } from '../models/cell-resizer-parameters.model';\nimport { EditSession } from '../../../core/edit.session';\nimport { EditorService } from '../../../interaction/editor.service';\nimport { GeneralPropertiesModel } from '../../../execution/models/general-properties.model';\nimport { MarginModel } from '../../../core/models/margin.model';\nimport { RegulatorService } from '../../../execution/regulator.service';\nimport { Renderer } from '../../../core/renderer';\nimport { ResizerSide } from '../enums/reisizer-side.enum';\nimport { SessionModel } from '../../../execution/models/session.model';\nimport { TableModel } from '../../../../../models/generated/table.model';\nimport { VirtualRenderer } from '../../../core/virtual.renderer';\n\n@Component({\n selector: 'app-noder-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['../../../editor.component.scss', './table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoderTableCellComponent {\n @Input() table: TableModel;\n\n @Input() cell: CellModel;\n\n @Input() rowIndex: number;\n\n @Input() cellIndex: number;\n\n @Input() columnIndex: number;\n\n @Input() width: number;\n\n @Input() parentSessionId: number;\n\n @Input() heightChanged: (rowIndex: number, cellIndex: number, height: number) => void;\n\n @Input() startResizing: (cellResizerParameters: CellResizerParametersModel) => void;\n\n @HostBinding('class.highlighted')\n isHighlighted = false;\n\n @HostBinding('attr.data-session-id')\n sessionId: number;\n\n cellSession: SessionModel;\n\n properties: GeneralPropertiesModel;\n\n get session(): EditSession {\n return this.cellSession.session;\n }\n\n get renderer(): Renderer | VirtualRenderer {\n return this.cellSession.renderer;\n }\n\n @ViewChild('container', { static: true }) container: ElementRef<HTMLElement>;\n\n readonly resizerBorder = ResizerSide;\n\n private _allParagraphsHeight: number;\n\n constructor(private editorService: EditorService, private regulatorService: RegulatorService) {}\n\n ngOnDestroy(): void {\n this.session?.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n this.regulatorService.removeSession(this.sessionId);\n }\n\n initialize(): void {\n const marginModel = new MarginModel({\n left: 7,\n right: 7,\n top: 0,\n bottom: 0,\n header: 0,\n footer: 0\n });\n this.cellSession = this.regulatorService.addCellSession(this.table, marginModel, this, this.properties);\n this.sessionId = this.cellSession.sessionId;\n this.addEventListeners();\n }\n\n getCellContentHeight(): number {\n this._allParagraphsHeight = this.session.pagesWrap.getAllParagraphsHeight();\n return this._allParagraphsHeight;\n }\n\n clearSelection(): void {\n this.editorService.clearSelection();\n }\n\n onStartResizing(event: MouseEvent, border: ResizerSide): void {\n event.stopPropagation();\n\n this.startResizing(new CellResizerParametersModel(this.columnIndex, this.rowIndex, this.cellIndex, border));\n }\n\n private addEventListeners(): void {\n this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n private pagesCountChangedHandler = (event: { pageHeight: number }): void => {\n if (this._allParagraphsHeight === event.pageHeight) {\n return;\n }\n\n this._allParagraphsHeight = event.pageHeight;\n const cellContentHeight = this._allParagraphsHeight;\n this.heightChanged(this.rowIndex, this.cellIndex, cellContentHeight);\n };\n}\n","<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n","import { CellDataModel } from './cell-data.model';\n\nexport class RowDataModel {\n public constructor(public row: HTMLTableRowElement, public height: number, public cells: CellDataModel[]) {}\n}\n","export class SelectionRangeModel {\n public constructor(\n public rowIndexes: { startIndex: number; endIndex: number },\n public cellIndexes: { startIndex: number; endIndex: number }\n ) {}\n}\n","import { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { filter, fromEvent, Observable, Subject, Subscription, take } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\n\n@Injectable()\nexport class OverlayService {\n overlayRef: OverlayRef | null;\n\n openedSubscription: Subscription;\n\n overlayResult = new Subject<any>();\n\n constructor(private overlay: Overlay) {}\n\n open<T>(component: ComponentType<T>, data: object, xPosition: number, yPosition: number): Observable<any> {\n this.close();\n this.overlayRef = this.overlay.create(this.getOverlayConfig(xPosition, yPosition));\n const ref = this.overlayRef.attach(new ComponentPortal(component));\n Object.assign(ref.instance, data);\n this.clickSubscription();\n return this.overlayResult.asObservable();\n }\n\n close(value?: any): void {\n this.overlayResult.next(value);\n this.openedSubscription?.unsubscribe();\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n clickSubscription(): void {\n this.openedSubscription = fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter(event => {\n const clickTarget = event.target as HTMLElement;\n return this.overlayRef && !this.overlayRef.overlayElement.contains(clickTarget);\n }),\n take(1)\n )\n .subscribe(() => {\n this.close();\n });\n }\n\n getOverlayConfig(xPosition: number, yPosition: number): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: false,\n backdropClass: 'noder-backdrop',\n positionStrategy: this.getOverlayPosition(xPosition, yPosition),\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n }\n\n getOverlayPosition(xPosition: number, yPosition: number): PositionStrategy {\n return this.overlay.position().global().left(`${xPosition}px`).top(`${yPosition}px`);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { EditorService } from '../../../interaction/editor.service';\nimport { OverlayService } from '../../shared/services/overlay/overlay.service';\nimport { SelectionRangeModel } from '../models/selection-range.model';\n\n@Component({\n selector: 'app-table-overlay-menu',\n templateUrl: './overlay-menu.component.html',\n styleUrls: ['./overlay-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableOverlayMenuComponent {\n @Input() selectionRange: SelectionRangeModel;\n\n @Input() targets: SelectionRangeModel;\n\n @Input() canRemoveRows: boolean;\n\n @Input() canRemoveColumns: boolean;\n\n @Input() tableInsertIndex: number;\n\n @Input() sessionId: number;\n\n selectedRowsCount: number;\n\n selectedColumnsCount: number;\n\n insertMessages: {\n insertRowsAboveMessage: string;\n insertRowsBelowMessage: string;\n insertColumnsLeftMessage: string;\n insertColumnsRightMessage: string;\n };\n\n removeMessages: {\n removeRowsMessage: string;\n removeColumnsMessage: string;\n };\n\n constructor(private editorService: EditorService, private overlayService: OverlayService) {}\n\n ngOnInit(): void {\n this.selectedRowsCount = this.selectionRange.rowIndexes.endIndex - this.selectionRange.rowIndexes.startIndex + 1;\n this.selectedColumnsCount = this.selectionRange.cellIndexes.endIndex - this.selectionRange.cellIndexes.startIndex + 1;\n this.processInsertMenuItems();\n }\n\n processInsertMenuItems(): void {\n const rowsSuffix = this.selectedRowsCount > 1 ? `${this.selectedRowsCount} rows` : 'row';\n const columnsSuffix = this.selectedColumnsCount > 1 ? `${this.selectedColumnsCount} columns` : 'column';\n this.insertMessages = {\n insertRowsAboveMessage: `Insert ${rowsSuffix} above`,\n insertRowsBelowMessage: `Insert ${rowsSuffix} below`,\n insertColumnsLeftMessage: `Insert ${columnsSuffix} to the left`,\n insertColumnsRightMessage: `Insert ${columnsSuffix} to the right`\n };\n this.removeMessages = {\n removeRowsMessage: `Remove ${rowsSuffix}`,\n removeColumnsMessage: `Remove ${columnsSuffix}`\n };\n }\n\n onInsertRowsAbove(): void {\n this.editorService.insertTableRows(\n this.tableInsertIndex,\n this.selectedRowsCount,\n this.targets.rowIndexes.startIndex,\n this.selectionRange.rowIndexes.startIndex,\n this.sessionId\n );\n this.overlayService.close();\n }\n\n onInsertRowsBelow(): void {\n this.editorService.insertTableRows(\n this.tableInsertIndex,\n this.selectedRowsCount,\n this.targets.rowIndexes.endIndex,\n this.selectionRange.rowIndexes.endIndex,\n this.sessionId\n );\n this.overlayService.close();\n }\n\n onInsertColumnsLeft(): void {\n this.editorService.insertTableColumns(\n this.tableInsertIndex,\n this.selectedColumnsCount,\n this.targets.cellIndexes.startIndex,\n this.selectionRange.cellIndexes.startIndex,\n this.sessionId\n );\n this.overlayService.close();\n }\n\n onInsertColumnsRight(): void {\n this.editorService.insertTableColumns(\n this.tableInsertIndex,\n this.selectedColumnsCount,\n this.targets.cellIndexes.endIndex,\n this.selectionRange.cellIndexes.endIndex,\n this.sessionId\n );\n this.overlayService.close();\n }\n\n onRemoveRows(): void {\n this.editorService.removeTableRows(\n this.tableInsertIndex,\n this.selectionRange.rowIndexes.startIndex,\n this.selectionRange.rowIndexes.endIndex,\n this.sessionId\n );\n this.overlayService.close();\n }\n\n onRemoveColumns(): void {\n this.editorService.removeTableColumns(\n this.tableInsertIndex,\n this.selectionRange.cellIndexes.startIndex,\n this.selectionRange.cellIndexes.endIndex,\n this.sessionId\n );\n this.overlayService.close();\n }\n}\n","<div\n class=\"menu-item\"\n (click)=\"onInsertRowsAbove()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n {{ insertMessages.insertRowsAboveMessage }}\n</div>\n<div\n class=\"menu-item\"\n (click)=\"onInsertRowsBelow()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n {{ insertMessages.insertRowsBelowMessage }}\n</div>\n<div\n class=\"menu-item\"\n (click)=\"onInsertColumnsLeft()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n {{ insertMessages.insertColumnsLeftMessage }}\n</div>\n<div\n class=\"menu-item\"\n (click)=\"onInsertColumnsRight()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n {{ insertMessages.insertColumnsRightMessage }}\n</div>\n<ng-container *ngIf=\"canRemoveRows || canRemoveColumns\">\n <div class=\"menu-separator\">\n <div class=\"menu-separator-top\"></div>\n <div class=\"menu-separator-bottom\"></div>\n </div>\n <div\n *ngIf=\"canRemoveRows\"\n class=\"menu-item\"\n (click)=\"onRemoveRows()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n {{ removeMessages.removeRowsMessage }}\n </div>\n <div\n *ngIf=\"canRemoveColumns\"\n class=\"menu-item\"\n (click)=\"onRemoveColumns()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n {{ removeMessages.removeColumnsMessage }}\n </div>\n</ng-container>\n","import { fromEvent, Subscription, throttleTime } from 'rxjs';\n\nimport { CellDataModel } from '../models/cell-data.model';\nimport { EditorService } from '../../../interaction/editor.service';\nimport { MouseButton } from '../../../core/enums/mouse-button.enum';\nimport { OverlayService } from '../../shared/services/overlay/overlay.service';\nimport { RowDataModel } from '../models/row-data.model';\nimport { SelectionRangeModel } from '../models/selection-range.model';\nimport { TableModel } from '../../../../../models/generated/table.model';\nimport { TableOverlayMenuComponent } from '../overlay-menu/overlay-menu.component';\n\nexport class TableSelection {\n originSelectedCell: { rowIndex: number; cellIndex: number; isFocused: boolean };\n\n tableContextMenu$: Subscription;\n\n tableMouseDown$: Subscription;\n\n documentMouseDown$: Subscription;\n\n documentMouseMove$: Subscription;\n\n documentMouseUp$: Subscription;\n\n selectionRange: SelectionRangeModel | null;\n\n readonly editorTagName = 'APP-EDITOR';\n\n readonly cellTagName = 'TD';\n\n readonly draggableCellContent = ['APP-RESIZER'];\n\n constructor(\n private editorService: EditorService,\n private overlayService: OverlayService,\n private rowMatrix: RowDataModel[],\n private table: TableModel,\n private tableEl: HTMLTableElement,\n private sessionId: number\n ) {\n this.addTableContextMenuSubscriptions();\n this.addTableMouseDownSubscriptions();\n }\n\n destroy(): void {\n if (this.tableContextMenu$?.unsubscribe) {\n this.tableContextMenu$.unsubscribe();\n }\n\n if (this.tableMouseDown$?.unsubscribe) {\n this.tableMouseDown$.unsubscribe();\n }\n\n this.removeMouseSubscriptions();\n }\n\n addTableContextMenuSubscriptions(): void {\n this.tableContextMenu$ = fromEvent(this.tableEl, 'contextmenu').subscribe((event: PointerEvent) => {\n event.preventDefault();\n if (this.editorService.isViewOnly) {\n return;\n }\n\n const selectionRange = this.getSelectionRangeForMenuOverlay(event.target as HTMLElement);\n const targets = this.getTargetsForMenuOverlay(selectionRange);\n const canRemoveRows = selectionRange.rowIndexes.endIndex - selectionRange.rowIndexes.startIndex + 1 < this.rowMatrix.length;\n const canRemoveColumns =\n selectionRange.cellIndexes.endIndex - selectionRange.cellIndexes.startIndex + 1 < this.rowMatrix[0].cells.length;\n const data = {\n selectionRange,\n targets,\n canRemoveRows,\n canRemoveColumns,\n tableInsertIndex: this.table.insertIndex,\n sessionId: this.sessionId\n };\n this.overlayService.open(TableOverlayMenuComponent, data, event.x, event.y);\n });\n }\n\n addTableMouseDownSubscriptions(): void {\n this.tableMouseDown$ = fromEvent(this.tableEl, 'mousedown').subscribe((event: MouseEvent) => {\n if ((event.button as MouseButton) === MouseButton.Right || !this.canStartSelection(event.target as HTMLElement)) {\n return;\n }\n\n this.overlayService.close();\n this.removeMouseSubscriptions();\n this.clearSelectionInAllCells();\n this.addDocumentMouseMovementSubscriptions();\n const originSelectedCell = this.getCellIndexes(event.target as HTMLElement);\n this.originSelectedCell = { ...originSelectedCell, isFocused: true };\n });\n }\n\n addDocumentMouseMovementSubscriptions(): void {\n this.documentMouseMove$ = fromEvent(document, 'mousemove')\n .pipe(throttleTime(100))\n .subscribe((event: MouseEvent) => {\n this.processMouseMove(event);\n });\n\n this.documentMouseUp$ = fromEvent(document, 'mouseup').subscribe(() => {\n this.removeMouseSubscriptions();\n this.addDocumentMouseDownSubscriptions();\n });\n }\n\n addDocumentMouseDownSubscriptions(): void {\n this.documentMouseDown$ = fromEvent(document, 'mousedown').subscribe((event: MouseEvent) => {\n if (!this.isOnEditorClick(event.target as HTMLElement) || this.isOnTableClick(event.target as HTMLElement)) {\n return;\n }\n\n this.overlayService.close();\n this.clearSelectionInAllCells();\n this.originSelectedCell = null;\n this.removeMouseSubscriptions();\n });\n }\n\n removeMouseSubscriptions(): void {\n if (this.documentMouseMove$?.unsubscribe) {\n this.documentMouseMove$.unsubscribe();\n }\n\n if (this.documentMouseUp$?.unsubscribe) {\n this.documentMouseUp$.unsubscribe();\n }\n\n if (this.documentMouseDown$?.unsubscribe) {\n this.documentMouseDown$.unsubscribe();\n }\n }\n\n processMouseMove(event: MouseEvent): void {\n if (this.originSelectedCell?.isFocused && !this.isOriginCell(event)) {\n this.rowMatrix[this.originSelectedCell.rowIndex].cells[this.originSelectedCell.cellIndex].clearSelection();\n this.editorService.endMousePress();\n this.originSelectedCell.isFocused = false;\n }\n\n if (!this.originSelectedCell?.isFocused) {\n this.selectAllCellsInBetween(event);\n }\n }\n\n selectAllCellsInBetween(event: MouseEvent): void {\n if (!this.originSelectedCell) {\n return;\n }\n\n const selectedCell = this.getCellIndexes(event.target as HTMLElement) || this.getCellIndexesOutsideTable(event);\n\n if (!selectedCell) {\n return;\n }\n\n this.clearSelectionInAllCells();\n\n const rowIndexes = this.getStartAndEndIndexes(this.originSelectedCell.rowIndex, selectedCell.rowIndex);\n const cellIndexes = this.getStartAndEndIndexes(this.originSelectedCell.cellIndex, selectedCell.cellIndex);\n const cells: CellDataModel[] = [];\n let currentRowIndex = rowIndexes.startIndex;\n\n while (currentRowIndex <= rowIndexes.endIndex) {\n let currentCellIndex = cellIndexes.startIndex;\n\n while (currentCellIndex <= cellIndexes.endIndex) {\n cells.push(this.rowMatrix[currentRowIndex].cells[currentCellIndex]);\n currentCellIndex++;\n }\n\n currentRowIndex++;\n }\n\n const uniqCells = new Set(cells);\n uniqCells.forEach(cell => cell.highlightCell());\n this.selectionRange = new SelectionRangeModel(rowIndexes, cellIndexes);\n }\n\n getCellIndexes(element: HTMLElement): { rowIndex: number; cellIndex: number } | null {\n let currentElement = element;\n let selectedCell: { rowIndex: number; cellIndex: number } | null = null;\n\n while (!selectedCell && currentElement) {\n if (currentElement.tagName === this.cellTagName) {\n selectedCell = this.getSelectedCell(currentElement);\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return selectedCell;\n }\n\n getSelectedCell(el: HTMLElement): { rowIndex: number; cellIndex: number } | null {\n let selectedCell: { rowIndex: number; cellIndex: number } | null = null;\n\n this.rowMatrix.some((row, rowIndex) => {\n const cellIndex = row.cells.findIndex(x => x.cell === el);\n\n if (cellIndex > -1) {\n selectedCell = { rowIndex, cellIndex };\n return true;\n }\n\n return false;\n });\n\n return selectedCell;\n }\n\n getCellIndexesOutsideTable(event: MouseEvent): { rowIndex: number; cellIndex: number } | null {\n let selectedCell: { rowIndex: number; cellIndex: number } | null = null;\n const tableReact = this.tableEl.getBoundingClientRect();\n\n if (event.clientY <= tableReact.top || event.clientY >= tableReact.bottom) {\n this.addSelectionInAllCells();\n } else if (event.clientX <= tableReact.left) {\n selectedCell = this.getCellIndexesOutsideTableLeft(event);\n } else if (event.clientX >= tableReact.right) {\n selectedCell = this.getCellIndexesOutsideTableRights(event);\n }\n\n return selectedCell;\n }\n\n getCellIndexesOutsideTableLeft(event: MouseEvent): { rowIndex: number; cellIndex: number } {\n const rowIndex = this.getNearestRowIndex(event);\n return { rowIndex, cellIndex: 0 };\n }\n\n getCellIndexesOutsideTableRights(event: MouseEvent): { rowIndex: number; cellIndex: number } {\n const rowIndex = this.getNearestRowIndex(event);\n\n return {\n rowIndex,\n cellIndex: this.rowMatrix[rowIndex].cells.length - 1\n };\n }\n\n getNearestRowIndex(event: MouseEvent): number {\n const rows = this.tableEl.rows;\n const maxRowIndex = rows.length - 1;\n let rowIndex = -1;\n\n do {\n rowIndex++;\n const rowReact = rows[rowIndex].getBoundingClientRect();\n\n if (event.clientY >= rowReact.top && event.clientY <= rowReact.bottom) {\n break;\n }\n } while (rowIndex < maxRowIndex);\n\n return rowIndex;\n }\n\n addSelectionInAllCells(): void {\n this.rowMatrix.forEach(row => {\n row.cells.forEach(cell => {\n cell.highlightCell();\n });\n });\n const rowIndexes = {\n startIndex: 0,\n endIndex: this.rowMatrix.length - 1\n };\n const cellIndexes = {\n startIndex: 0,\n endIndex: Math.max(...this.rowMatrix.map(x => x.cells.length))\n };\n this.selectionRange = new SelectionRangeModel(rowIndexes, cellIndexes);\n }\n\n clearSelectionInAllCells(): void {\n this.rowMatrix.forEach(row => {\n row.cells.forEach(cell => {\n cell.removeHighlightCell();\n });\n });\n this.selectionRange = null;\n }\n\n getStartAndEndIndexes(originIndex: number, currentIndex: number): { startIndex: number; endIndex: number } {\n const indexes = [originIndex, currentIndex];\n indexes.sort((a, b) => a - b);\n\n return { startIndex: indexes[0], endIndex: indexes[1] };\n }\n\n isOriginCell(event: MouseEvent): boolean {\n const selectedCell = this.getCellIndexes(event.target as HTMLElement);\n\n if (!selectedCell || !this.originSelectedCell) {\n return false;\n }\n\n return this.originSelectedCell.rowIndex === selectedCell.rowIndex && this.originSelectedCell.cellIndex === selectedCell.cellIndex;\n }\n\n isOnEditorClick(element: HTMLElement): boolean {\n let currentElement = element;\n let isOnEditorClick = false;\n\n while (!isOnEditorClick && currentElement) {\n isOnEditorClick = currentElement.tagName === this.editorTagName;\n currentElement = currentElement.parentElement;\n }\n\n return isOnEditorClick;\n }\n\n isOnTableClick(element: HTMLElement): boolean {\n let currentElement = element;\n let isOnTableClick = false;\n\n while (!isOnTableClick && currentElement) {\n isOnTableClick = currentElement === this.tableEl;\n currentElement = currentElement.parentElement;\n }\n\n return isOnTableClick;\n }\n\n canStartSelection(element: HTMLElement): boolean {\n let currentElement = element;\n let canStartSelection = false;\n\n while (!canStartSelection && currentElement) {\n if (this.draggableCellContent.includes(currentElement.tagName)) {\n break;\n }\n\n canStartSelection = currentElement.tagName === this.cellTagName;\n currentElement = currentElement.parentElement;\n }\n\n return canStartSelection;\n }\n\n getSelectionRangeForMenuOverlay(element: HTMLElement): SelectionRangeModel {\n const selectedCell = this.getCellIndexes(element);\n\n const isCellInSelection =\n this.selectionRange &&\n this.selectionRange.rowIndexes.startIndex <= selectedCell.rowIndex &&\n this.selectionRange.rowIndexes.endIndex >= selectedCell.rowIndex &&\n this.selectionRange.cellIndexes.startIndex <= selectedCell.cellIndex &&\n this.selectionRange.cellIndexes.endIndex >= selectedCell.cellIndex;\n\n if (!isCellInSelection && this.selectionRange) {\n this.clearSelectionInAllCells();\n }\n\n if (isCellInSelection) {\n return this.selectionRange;\n }\n\n let rowEndIndex = selectedCell.rowIndex;\n let columnEndIndex = selectedCell.cellIndex;\n\n while (\n this.rowMatrix[rowEndIndex].cells[selectedCell.cellIndex].cell ===\n this.rowMatrix[rowEndIndex + 1]?.cells[selectedCell.cellIndex].cell\n ) {\n rowEndIndex++;\n }\n\n while (this.rowMatrix[rowEndIndex].cells[columnEndIndex].cell === this.rowMatrix[rowEndIndex].cells[columnEndIndex + 1]?.cell) {\n columnEndIndex++;\n }\n\n return new SelectionRangeModel(\n { startIndex: selectedCell.rowIndex, endIndex: rowEndIndex },\n { startIndex: selectedCell.cellIndex, endIndex: columnEndIndex }\n );\n }\n\n getTargetsForMenuOverlay(selectionRange: SelectionRangeModel): SelectionRangeModel {\n return new SelectionRangeModel(\n {\n startIndex: this.getTargetRowStartIndex(selectionRange.rowIndexes.startIndex),\n endIndex: this.getTargetRowEndIndex(selectionRange.rowIndexes.endIndex)\n },\n {\n startIndex: this.getTargetColumnStartIndex(\n selectionRange.rowIndexes.startIndex,\n selectionRange.rowIndexes.endIndex,\n selectionRange.cellIndexes.startIndex\n ),\n endIndex: this.getTargetColumnEndIndex(\n selectionRange.rowIndexes.startIndex,\n selectionRange.rowIndexes.endIndex,\n selectionRange.cellIndexes.endIndex\n )\n }\n );\n }\n\n getTargetRowStartIndex(startIndex: number): number {\n const mergedRowCells = this.rowMatrix[startIndex].cells.filter(\n x => x.cell.rowSpan > 1 && x.componentRef.instance.cell.verticalMerge\n );\n\n if (!mergedRowCells.length) {\n return startIndex;\n }\n\n const uniqCells = new Set(mergedRowCells);\n let index = startIndex;\n\n do {\n const cells = this.rowMatrix[index].cells;\n\n if (!cells.some(cell => uniqCells.has(cell))) {\n index++;\n break;\n }\n\n index--;\n } while (index >= 0);\n\n return index;\n }\n\n getTargetRowEndIndex(endIndex: number): number {\n const mergedRowCells = this.rowMatrix[endIndex].cells.filter(x => x.cell.rowSpan > 1 && x.componentRef.instance.cell.verticalMerge);\n\n if (!mergedRowCells.length) {\n return endIndex + 1;\n }\n\n const uniqCells = new Set(mergedRowCells);\n let index = endIndex;\n\n do {\n const cells = this.rowMatrix[index]?.cells;\n\n if (!cells?.some(cell => uniqCells.has(cell))) {\n break;\n }\n\n index++;\n } while (index <= this.rowMatrix.length);\n\n return index;\n }\n\n getTargetColumnStartIndex(rowStartIndex: number, rowEndIndex: number, cellStartIndex: number): number {\n let index = cellStartIndex;\n\n for (let i = rowStartIndex; i <= rowEndIndex; i++) {\n if (this.rowMatrix[i].cells[cellStartIndex].cell.colSpan > 1) {\n let cellIndex = cellStartIndex;\n\n do {\n if (!this.rowMatrix[i].cells[cellIndex] || this.rowMatrix[i].cells[cellIndex].cell.colSpan === 1) {\n break;\n }\n\n const newIndex = cellIndex;\n index = index < newIndex ? index : newIndex;\n cellIndex--;\n } while (cellIndex >= 0);\n }\n }\n\n return index;\n }\n\n getTargetColumnEndIndex(rowStartIndex: number, rowEndIndex: number, cellEndIndex: number): number {\n let index = cellEndIndex + 1;\n\n for (let i = rowEndIndex; i >= rowStartIndex; i--) {\n if (this.rowMatrix[i].cells[cellEndIndex].cell.colSpan > 1) {\n let cellIndex = cellEndIndex;\n\n do {\n if (!this.rowMatrix[i].cells[cellIndex] || this.rowMatrix[i].cells[cellIndex].cell.colSpan === 1) {\n break;\n }\n\n const newIndex = cellIndex + 1;\n index = index > newIndex ? index : newIndex;\n cellIndex++;\n } while (cellIndex <= this.rowMatrix[i].cells.length);\n }\n }\n\n return index;\n }\n}\n","export enum VerticalMerge {\n Restart = 'restart',\n Merge = 'merge'\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy } from '@angular/core';\n\nimport { BaseNoderComponent } from '../../shared/abstract/base.component';\nimport { CellDataModel } from '../models/cell-data.model';\nimport { CellResizer } from '../cell-resizer/cell-resizer';\nimport { CellResizerParametersModel } from '../models/cell-resizer-parameters.model';\nimport { ComponentService } from '../../shared/services/component/component.service';\nimport { EditSession } from '../../../core/edit.session';\nimport { EditorService } from '../../../interaction/editor.service';\nimport { GeneralPropertiesModel } from '../../../execution/models/general-properties.model';\nimport { HRule } from '../../../core/enums/hrule.enum';\nimport { NoderTableCellComponent } from './table-cell.component';\nimport { OverlayService } from '../../shared/services/overlay/overlay.service';\nimport { RowDataModel } from '../models/row-data.model';\nimport { RowModel } from '../../../../../models/generated/row.model';\nimport { TableModel } from '../../../../../models/generated/table.model';\nimport { TableSelection } from '../selection/table-selection';\nimport { VerticalMerge } from '../enums/vertical-merge.enum';\n\n@Component({\n selector: 'app-noder-table',\n template: '',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoderTableComponent extends BaseNoderComponent implements OnDestroy {\n get table(): TableModel {\n return this.content as TableModel;\n }\n set table(val: TableModel) {\n this.content = val;\n }\n\n tableSelection: TableSelection;\n\n tableEl: HTMLTableElement;\n\n resizer: CellResizer;\n\n resizerEl: HTMLDivElement;\n\n rowMatrix: RowDataModel[] = [];\n\n properties: GeneralPropertiesModel;\n\n readonly minRowHeight = 19;\n\n readonly borderSize = 0.8;\n\n constructor(\n private componentService: ComponentService,\n private editorService: EditorService,\n private el: ElementRef,\n private overlayService: OverlayService\n ) {\n super();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.tableSelection?.destroy();\n }\n\n initialize(): void {\n this.createTable();\n this.calculateProperties();\n this.createResizer();\n this.el.nativeElement.appendChild(this.resizerEl);\n this.el.nativeElement.appendChild(this.tableEl);\n this.tableSelection = new TableSelection(\n this.editorService,\n this.overlayService,\n this.rowMatrix,\n this.table,\n this.tableEl,\n this.sessionId\n );\n }\n\n getCellSession(row: number, column: number): EditSession {\n return this.rowMatrix[row].cells[column].componentRef.instance.session;\n }\n\n getCellWidth(tableRow: RowModel, cellIndex: number, absoluteCellIndex: number): number {\n if (tableRow.cells[cellIndex].width) {\n return tableRow.cells[cellIndex].width;\n }\n\n let width = 0;\n let i = absoluteCellIndex;\n const cellSpanCount = absoluteCellIndex + tableRow.cells[cellIndex].horizontalMerge;\n\n do {\n width += this.table.columns[i].width;\n i++;\n } while (i < cellSpanCount);\n\n return width;\n }\n\n createResizer(): void {\n this.resizerEl = document.createElement('div');\n this.resizerEl.className = 'resizer-border';\n this.resizerEl.setAttribute('style', `display:none;`);\n this.resizer = new CellResizer(this.table, this.tableEl, this.editorService, this.resizerEl);\n this.resizer.sessionId = this.sessionId;\n }\n\n createTable(): void {\n this.tableEl = document.createElement('table');\n this.setColgroup();\n this.insertRows(this.table.rows.length, 0);\n this.fillTableCells();\n }\n\n updateTable(): void {\n const cells = [].concat(...this.rowMatrix.map(x => x.cells)) as CellDataModel[];\n const uniqCells = new Set(cells.map(x => x.componentRef));\n uniqCells.forEach(x => this.componentService.removeComponent(x));\n this.tableSelection.destroy();\n this.rowMatrix = [];\n this.tableEl.remove();\n this.initialize();\n }\n\n insertRows(rowsCount: number, targetIndex: number): void {\n let rowIndex = 0;\n\n while (rowIndex < rowsCount) {\n const targetRowIndex = targetIndex + rowIndex;\n const row = this.tableEl.insertRow(targetRowIndex);\n this.rowMatrix.splice(targetRowIndex, 0, new RowDataModel(row, 0, []));\n this.insertCells(targetRowIndex, this.table.rows[targetRowIndex].cells.length, 0);\n rowIndex++;\n }\n\n this.fillTableRow();\n }\n\n insertCells(rowIndex: number, cellsCount: number, targetIndex: number): void {\n let modelTargetIndex = this.getModelTargetIndex(rowIndex, targetIndex);\n this.addCells(rowIndex, cellsCount, targetIndex, modelTargetIndex);\n }\n\n getModelTargetIndex(rowIndex: number, targetIndex: number): number {\n let absoluteModelCellCount = 0;\n let modelTargetIndex = 0;\n\n while (absoluteModelCellCount < targetIndex) {\n absoluteModelCellCount += this.table.rows[rowIndex].cells[modelTargetIndex].horizontalMerge ?? 1;\n\n if (absoluteModelCellCount > targetIndex) {\n break;\n }\n\n modelTargetIndex++;\n }\n\n return modelTargetIndex;\n }\n\n addCells(rowIndex: number, cellsCount: number, targetIndex: number, modelTargetIndex: number): void {\n let i = 0;\n let currentTargetIndex = targetIndex;\n\n while (i < cellsCount) {\n const modelCellIndex = modelTargetIndex + i;\n\n if ((this.table.rows[rowIndex].cells[modelCellIndex].verticalMerge as VerticalMerge) === VerticalMerge.Merge) {\n const inheritCellData = this.rowMatrix[rowIndex - 1].cells[currentTargetIndex];\n const count = this.table.rows[rowIndex].cells[modelCellIndex].horizontalMerge ?? 1;\n this.addAdditionalCells(rowIndex, currentTargetIndex, count, inheritCellData);\n currentTargetIndex += count;\n i++;\n continue;\n }\n\n const cell = this.tableEl.rows[rowIndex].insertCell(currentTargetIndex);\n const componentRef = this.componentService.generateAndAttachComponent(cell, NoderTableCellComponent, {\n table: this.table,\n cell: this.table.rows[rowIndex].cells[modelCellIndex],\n parentSessionId: this.sessionId,\n rowIndex,\n cellIndex: modelCellIndex,\n columnIndex: currentTargetIndex,\n width: this.getCellWidth(this.table.rows[rowIndex], modelCellIndex, currentTargetIndex),\n heightChanged: this.cellHeightChanged,\n startResizing: this.startResizing,\n properties: this.properties\n });\n const cellContentHeight = componentRef.instance.getCellContentHeight();\n const cellData = new CellDataModel(cell, cellContentHeight, componentRef);\n this.rowMatrix[rowIndex].cells.splice(currentTargetIndex, 0, cellData);\n currentTargetIndex++;\n\n if (this.table.rows[rowIndex].cells[modelCellIndex].horizontalMerge > 1) {\n const count = this.table.rows[rowIndex].cells[modelCellIndex].horizontalMerge - 1;\n this.addAdditionalCells(rowIndex, currentTargetIndex, count, cellData);\n currentTargetIndex += count;\n }\n\n i++;\n }\n }\n\n addAdditionalCells(rowIndex: number, cellIndex: number, cellsCount: number, originalCellData: CellDataModel): void {\n for (let j = 0; j < cellsCount; j++) {\n const additionalCell = this.tableEl.rows[rowIndex].insertCell(cellIndex);\n additionalCell.classList.add('hidden-cell');\n const cellData = new CellDataModel(originalCellData.cell, originalCellData.cellContentHeight, originalCellData.componentRef);\n this.rowMatrix[rowIndex].cells.splice(cellIndex, 0, cellData);\n }\n }\n\n setColgroup(): void {\n const oldColGroups = this.tableEl.getElementsByTagName('colgroup');\n\n if (oldColGroups.length) {\n this.tableEl.removeChild(oldColGroups[0]);\n }\n\n const colgroup = document.createElement('colgroup');\n let i = 0;\n\n while (i < this.table.columns.length) {\n const col = document.createElement('col');\n col.style.width = `${this.table.columns[i].width}px`;\n colgroup.appendChild(col);\n i++;\n }\n\n this.tableEl.insertAdjacentElement('afterbegin', colgroup);\n }\n\n fillTableRow(): void {\n for (let i = 0; i < this.table.rows.length; i++) {\n switch (this.table.rows[i].hRule) {\n case HRule.AtLeast: {\n const rowHeight = this.getRowHeight(i);\n this.tableEl.rows[i].style.minHeight = `${this.table.rows[i].height}px`;\n this.tableEl.rows[i].style.height = `${rowHeight}px`;\n this.rowMatrix[i].height = rowHeight;\n break;\n }\n case HRule.Exact:\n this.tableEl.rows[i].style.height = `${this.table.rows[i].height}px`;\n this.rowMatrix[i].height = this.table.rows[i].height;\n break;\n default: {\n const rowHeight = this.getRowHeight(i);\n const minRowHeight = this.table.rows[i].height ?? this.minRowHeight;\n const resultHeight = minRowHeight > rowHeight ? minRowHeight : rowHeight;\n this.tableEl.rows[i].style.height = `${resultHeight}px`;\n this.rowMatrix[i].height = resultHeight;\n break;\n }\n }\n }\n }\n\n getRowHeight(rowIndex: number): number {\n const cellHeights = this.rowMatrix[rowIndex].cells.map((x, index) => {\n if ((x.componentRef.instance.cell.verticalMerge as VerticalMerge) === VerticalMerge.Restart) {\n const isLastVerticalMergedCell = x.cell !== this.rowMatrix[rowIndex + 1]?.cells[index].cell;\n\n if (isLastVerticalMergedCell) {\n let i = rowIndex - 1;\n let currentHeight = x.cellContentHeight;\n\n while (x.cell === this.rowMatrix[i]?.cells[index].cell) {\n currentHeight -= this.rowMatrix[i].height;\n i--;\n }\n\n return currentHeight;\n }\n\n return 0;\n }\n\n return x.cellContentHeight;\n });\n\n return Math.max(...cellHeights);\n }\n\n fillTableCells(): void {\n for (let i = 0; i < this.rowMatrix.length; i++) {\n for (let j = 0; j < this.rowMatrix[i].cells.length; j++) {\n if (\n this.rowMatrix[i - 1]?.cells[j]?.cell === this.rowMatrix[i].cells[j].cell ||\n this.rowMatrix[i].cells[j].cell === this.rowMatrix[i].cells[j - 1]?.cell ||\n (this.rowMatrix[i].cells[j].componentRef.instance.cell.verticalMerge as VerticalMerge) === VerticalMerge.Merge\n ) {\n continue;\n }\n\n this.rowMatrix[i].cells[j].cell.colSpan = this.rowMatrix[i].cells[j].componentRef.instance.cell.horizontalMerge;\n this.rowMatrix[i].cells[j].cell.style.backgroundColor =\n this.rowMatrix[i].cells[j].componentRef.instance.cell.backgroundColor;\n this.setCellRowSpan(i, j);\n }\n }\n }\n\n setCellRowSpan(rowIndex: number, absoluteCellIndex: number): void {\n this.rowMatrix[rowIndex].cells[absoluteCellIndex].cell.rowSpan = 1;\n\n if (\n (this.rowMatrix[rowIndex].cells[absoluteCellIndex].componentRef.instance.cell.verticalMerge as VerticalMerge) !==\n VerticalMerge.Restart\n ) {\n return;\n }\n\n for (let i = rowIndex + 1; i < this.rowMatrix.length; i++) {\n if (this.rowMatrix[i].cells[absoluteCellIndex].cell === this.rowMatrix[rowIndex].cells[absoluteCellIndex].cell) {\n this.rowMatrix[rowIndex].cells[absoluteCellIndex].cell.rowSpan++;\n } else {\n break;\n }\n }\n }\n\n setTableHeight(): void {\n let bordersHeight = 0;\n let rowsHeight = 1;\n\n for (let row of this.rowMatrix) {\n rowsHeight += row.height;\n\n if (row.cells.some(x => !x.componentRef.instance.cell.verticalMerge)) {\n bordersHeight += this.borderSize;\n }\n }\n\n this._height = rowsHeight + bordersHeight;\n }\n\n startResizing = (cellResizerParameters: CellResizerParametersModel): void => {\n this.resizer.resizerHeight = this.height;\n this.resizer.tableInsertIndex = this.insertIndex;\n this.resizer.onStartResizing(cellResizerParameters);\n };\n\n protected calculateProperties(): void {\n if (!this.tableEl) {\n return;\n }\n\n this.setTableHeight();\n\n const bordersSize = this.borderSize * this.table.columns.length;\n const width = this.table.columns.reduce((prev, next) => prev + next.width, 1);\n this._width = width + bordersSize;\n }\n\n private cellHeightChanged = (rowIndex: number, cellIndex: number, height: number): void => {\n const tableRow = this.table.rows[rowIndex];\n this.rowMatrix[rowIndex].cells[cellIndex].cellContentHeight = height < this.minRowHeight ? this.minRowHeight : height;\n\n if (tableRow.hRule === HRule.Exact) {\n return;\n }\n\n const row = this.tableEl.rows[rowIndex];\n const currentHeight = row.offsetHeight;\n const cellHeights = this.rowMatrix[rowIndex].cells.map(x => x.cellContentHeight);\n const maxCellContentHeigh = Math.max(...cellHeights, height);\n\n if (\n maxCellContentHeigh > currentHeight ||\n (maxCellContentHeigh < currentHeight && (!tableRow.height || tableRow.height <= maxCellContentHeigh))\n ) {\n row.style.height = `${maxCellContentHeigh}px`;\n this.rowMatrix[rowIndex].height = maxCellContentHeigh;\n this.setTableHeight();\n this.editorService.changedTableSize(this.insertIndex, this.sessionId);\n }\n };\n}\n","import { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class NumberingDataModel {\n numberingId: number;\n level: number;\n marker: string;\n markerTextStyle: TextStyleModel;\n height: number;\n width: number;\n paddingLeft: number;\n\n constructor(fields?: Partial<NumberingDataModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n}\n","export class TabHelper {\n static calculateTabWidth(rowWidth: number, defaultTabWidth: number): number {\n return defaultTabWidth - (rowWidth % defaultTabWidth);\n }\n}\n","import { ContentStyleHelper } from './content-style.helper';\nimport { FontMetrics } from './font-metrics.helper';\nimport { FormatStyleHelper } from './format-style.helper';\nimport { GeneralPropertiesModel } from '../../execution/models/general-properties.model';\nimport { NumberingDataModel } from '../models/numbering-data.model';\nimport { NumberingLevelModel } from '../../../../models/generated/numbering-level.model';\nimport { NumberingModel } from '../../../../models/generated/numbering.model';\nimport { Paragraph } from '../paging/paragraph';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';\nimport { TabHelper } from '../../helpers/tab.helper';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class NumberingHelper {\n static find(numberings: NumberingModel[], id: number, level: number): NumberingLevelModel {\n const numbering = numberings.find(x => x.numberingId === id);\n return numbering.levels.find(x => x.level === level);\n }\n\n static getMarker(levelModel: NumberingLevelModel, numberingId: number, paragraphs: ParagraphModel[], paragraphIndex: number): string {\n let resultMarker = levelModel.marker;\n let index = resultMarker.indexOf('%');\n while (index !== -1) {\n const symbolLevelNumber = Number(resultMarker[index + 1]) - 1;\n const levelIndex = this.getLevelIndex(paragraphs, paragraphIndex, numberingId, symbolLevelNumber);\n const count = levelModel.startValue + levelIndex;\n resultMarker = resultMarker.slice(0, index) + count.toString() + resultMarker.slice(index + 2);\n index = resultMarker.indexOf('%');\n }\n\n return resultMarker;\n }\n\n static createDataModel(numberings: NumberingModel[], paragraphs: ParagraphModel[], paragraphIndex: number): NumberingDataModel {\n const numberingId = paragraphs[paragraphIndex].paragraphStyle.numberingId;\n if (numberingId === null) {\n return new NumberingDataModel({ numberingId });\n }\n\n const level = paragraphs[paragraphIndex].paragraphStyle.numberingLevel;\n const numberingLevel = NumberingHelper.find(numberings, numberingId, level);\n const marker = NumberingHelper.getMarker(numberingLevel, numberingId, paragraphs, paragraphIndex);\n\n return new NumberingDataModel({ numberingId, level, marker });\n }\n\n static updateMarkerData(\n properties: GeneralPropertiesModel,\n paragraph: Paragraph,\n paragraphTextStyle: TextStyleModel,\n paragraphStyle: ParagraphStyleModel\n ): void {\n const numberingLevel = NumberingHelper.find(\n properties.numberings,\n paragraph.numberingData.numberingId,\n paragraph.numberingData.level\n );\n const markerTextStyle = FormatStyleHelper.combineTextStyles(numberingLevel.markerStyle, paragraphTextStyle);\n const markerSizes = NumberingHelper.getMarkerSizes(paragraph.numberingData.marker, markerTextStyle);\n paragraph.numberingData.markerTextStyle = markerTextStyle;\n paragraph.numberingData.width = markerSizes.width;\n paragraph.numberingData.height = markerSizes.height;\n const indentHanging = paragraphStyle.indentHanging ? paragraphStyle.indentHanging : numberingLevel.indentHanging;\n paragraph.numberingData.paddingLeft = paragraph.textLinesInfo[0].paddingLeft - indentHanging;\n if (markerSizes.width >= indentHanging) {\n const markerOverflow = paragraph.numberingData.width - indentHanging;\n const additionalMarkerIndent = TabHelper.calculateTabWidth(\n numberingLevel.indentLeft + markerOverflow,\n properties.defaultTabWidth\n );\n paragraph.numberingData.paddingLeft = paragraph.numberingData.paddingLeft - markerOverflow - additionalMarkerIndent;\n }\n }\n\n static getMarkerSizes(marker: string, markerStyle: TextStyleModel): { height: number; width: number } {\n let width = 0;\n let height = 0;\n const markerStylesString = ContentStyleHelper.getFontStylesString(markerStyle);\n for (let char of marker) {\n const markerCharSizes = FontMetrics.measureCharSize(char, markerStylesString);\n width += markerCharSizes.width;\n if (height < markerCharSizes.height) {\n height = markerCharSizes.height;\n }\n }\n\n return { height, width };\n }\n\n private static getLevelIndex(\n paragraphs: ParagraphModel[],\n paragraphIndex: number,\n numberingId: number,\n numberingLevel: number\n ): number {\n let index = 0;\n let isOnlySubLevelsBefore = false;\n for (let i = paragraphIndex; i >= 0; i--) {\n if (paragraphs[i].paragraphStyle.numberingId !== numberingId) {\n continue;\n }\n\n if (paragraphs[i].paragraphStyle.numberingLevel < numberingLevel) {\n break;\n }\n\n if (paragraphs[i].paragraphStyle.numberingLevel > numberingLevel) {\n isOnlySubLevelsBefore = true;\n } else {\n index++;\n isOnlySubLevelsBefore = false;\n }\n }\n index = isOnlySubLevelsBefore ? index + 1 : index;\n\n return index <= 0 ? 0 : index - 1;\n }\n}\n","export enum NumberingMarkerType {\n Bullet,\n LowerLetter,\n UpperLetter,\n LowerRoman,\n UpperRoman,\n Decimal,\n DecimalZero,\n IdeographDigital\n}\n","import { InsertIndexInterface } from '../../interfaces/insert-index.interface';\n\nexport class IndexedElementOperationsHelper {\n static removeContent<T extends InsertIndexInterface>(elements: T[], startIndex: number, endIndex: number): void {\n const length = endIndex - startIndex + 1;\n for (let i = elements.length - 1; i >= 0; i--) {\n if (elements[i].insertIndex >= startIndex && elements[i].insertIndex <= endIndex) {\n elements.splice(i, 1);\n }\n }\n elements.forEach(x => {\n if (x.insertIndex > endIndex) {\n x.insertIndex -= length;\n }\n });\n }\n\n static insert<T extends InsertIndexInterface>(elements: T[], element: T, length = 1): void {\n this.insertContent(elements, element.insertIndex, length);\n const index = elements.findIndex(x => x.insertIndex > element.insertIndex);\n if (index < 0) {\n elements.push(element);\n } else {\n elements.splice(index, 0, element);\n }\n }\n\n static insertContent<T extends InsertIndexInterface>(elements: T[], index: number, length: number): void {\n elements.forEach(x => {\n if (x.insertIndex >= index) {\n x.insertIndex += length;\n }\n });\n }\n\n static restore<T extends InsertIndexInterface>(elements: T[], index: number, contentLength: number, newElements: T[]): void {\n this.insertContent(elements, index, contentLength);\n let indexInElements = elements.findIndex(x => x.insertIndex >= index);\n indexInElements = indexInElements === -1 ? elements.length : indexInElements;\n elements.splice(indexInElements, 0, ...newElements);\n }\n\n static replaceContent<T extends InsertIndexInterface>(elements: T[], startIndex: number, endIndex: number, length: number): void {\n this.removeContent(elements, startIndex, endIndex);\n this.insertContent(elements, startIndex, length);\n }\n}\n","import { BreakModel } from '../../../../models/generated/break.model';\nimport { BreakTypes } from '../../core/enums/break-types.enum';\nimport { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\n\nexport class BreakOperationsHelper {\n static insertContent(elements: BreakModel[], index: number, breakType: BreakTypes, length: number): void {\n const element = new BreakModel({ insertIndex: index, breakType });\n IndexedElementOperationsHelper.insert(elements, element, length);\n }\n}\n","import { BordersStyleModel } from './borders-style.model';\nimport { BreakModel } from './break.model';\nimport { ColumnSectionModel } from './column-section.model';\nimport { ElementModel } from './element.model';\nimport { FormatModel } from './format.model';\nimport { ImageModel } from './image.model';\nimport { LinkModel } from './link.model';\nimport { MarginsModel } from './margins.model';\nimport { ParagraphModel } from './paragraph.model';\nimport { TableModel } from './table.model';\nimport { TabModel } from './tab.model';\n\nexport class CellModel {\n public backgroundColor: string;\n public borders: BordersStyleModel[];\n public breaks: BreakModel[];\n public columnSections: ColumnSectionModel[];\n public content: string;\n public contentLength: number;\n public elements: ElementModel[];\n public formats: FormatModel[];\n public horizontalMerge: number;\n public images: ImageModel[];\n public links: LinkModel[];\n public margins: MarginsModel;\n public paragraphs: ParagraphModel[];\n public tables: TableModel[];\n public tabs: TabModel[];\n public verticalAlign: any;\n public verticalMerge: string;\n public width: number;\n\n public constructor(\n fields?: Partial<CellModel>) {\n\n if (fields) {\n if (fields.margins) { fields.margins = new MarginsModel(fields.margins); }\n\n Object.assign(this, fields);\n }\n }\n}\n","export class ContentOperationsHelper {\n static removeContent(content: string, startIndex: number, endIndex: number): string {\n return `${content.slice(0, startIndex)}${content.slice(endIndex + 1, content.length)}`;\n }\n\n static insertContent(content: string, text: string, index: number): string {\n const before = content.slice(0, index);\n const after = content.slice(index, content.length);\n return `${before}${text}${after}`;\n }\n\n static replaceContent(content: string, startIndex: number, endIndex: number, text: string): string {\n const reduced = this.removeContent(content, startIndex, endIndex);\n return this.insertContent(reduced, text, startIndex);\n }\n}\n","import { ContentStyleHelper } from '../../core/helpers/content-style.helper';\nimport { FormatModel } from '../../../../models/generated/format.model';\nimport { FormatStyleHelper } from '../../core/helpers/format-style.helper';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class FormatOperationsHelper {\n static removeContent(formats: FormatModel[], startIndex: number, endIndex: number): void {\n const length = endIndex - startIndex + 1;\n for (let i = formats.length - 1; i >= 0; i--) {\n if (formats[i].startIndex >= startIndex && formats[i].endIndex <= endIndex) {\n formats.splice(i, 1);\n }\n }\n\n formats.forEach(x => {\n if (x.startIndex >= startIndex && x.startIndex <= endIndex) {\n x.startIndex = startIndex;\n } else if (x.startIndex > endIndex) {\n x.startIndex -= length;\n }\n if (x.endIndex >= startIndex && x.endIndex <= endIndex) {\n x.endIndex = startIndex - 1;\n } else if (x.endIndex > endIndex) {\n x.endIndex -= length;\n }\n });\n\n FormatStyleHelper.mergeFormats(formats, startIndex - 1, startIndex);\n }\n\n static insertContent(formats: FormatModel[], index: number, textLength: number): void {\n formats.forEach(x => {\n if (x.startIndex > index || (x.startIndex === index && index !== 0)) {\n x.startIndex += textLength;\n }\n if (x.endIndex >= index - 1) {\n x.endIndex += textLength;\n }\n });\n }\n\n static insertStyledContent(formats: FormatModel[], index: number, textLength: number, style: TextStyleModel): void {\n this.insertContent(formats, index, textLength);\n this.apply(formats, index, index + textLength - 1, style);\n }\n\n static restore(formats: FormatModel[], index: number, textLength: number, textFormats: FormatModel[]): void {\n this.insertContent(formats, index, textLength);\n this.restoreFormats(formats, textFormats);\n }\n\n static replaceContent(formats: FormatModel[], startIndex: number, endIndex: number, textLength: number): void {\n this.removeContent(formats, startIndex, endIndex);\n this.insertContent(formats, startIndex, textLength);\n }\n\n static restoreFormats(formats: FormatModel[], textFormats: FormatModel[]): void {\n textFormats.forEach(x => this.apply(formats, x.startIndex, x.endIndex, x.textStyle));\n }\n\n static apply(formats: FormatModel[], startIndex: number, endIndex: number, style: TextStyleModel): void {\n ContentStyleHelper.applyTextStyles(formats, startIndex, endIndex, style);\n }\n}\n","import { ApplyImageStyleModel } from '../../../../models/generated/apply-image-style.model';\nimport { ImageDataModel } from '../../../../models/generated/image-data.model';\nimport { ImageModel } from '../../../../models/generated/image.model';\nimport { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\n\nexport class ImageOperationsHelper {\n static apply(images: ImageModel[], model: ApplyImageStyleModel): void {\n const image = images.find(x => x.insertIndex === model.insertIndex);\n image.width = model.width;\n image.height = model.height;\n }\n\n static insertContent(images: ImageModel[], index: number, imageData: ImageDataModel): void {\n const image = new ImageModel({\n height: imageData.height,\n width: imageData.width,\n content: imageData.content,\n insertIndex: index\n });\n\n IndexedElementOperationsHelper.insert(images, image);\n }\n}\n","export class LinkModel {\n public endIndex: number;\n public insertIndex: number;\n public link: string;\n public sourceId: string;\n\n public constructor(\n fields?: Partial<LinkModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { LinkModel } from '../../../../models/generated/link.model';\nimport { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\n\nexport class LinkOperationsHelper {\n static insertContent(links: LinkModel[], link: string, insertIndex: number, endIndex: number): void {\n IndexedElementOperationsHelper.insertContent(links, insertIndex, 1);\n const linkModel = new LinkModel({ insertIndex, link, endIndex });\n const index = links.findIndex(x => x.insertIndex > linkModel.insertIndex);\n if (index < 0) {\n links.push(linkModel);\n } else {\n links.splice(index, 0, linkModel);\n }\n }\n\n static insertTextIntoLink(links: LinkModel[], text: string, insertIndex: number): void {\n let link = links.find(x => x.insertIndex <= insertIndex && x.endIndex >= insertIndex - 1);\n if (link) {\n link.endIndex += text.length;\n }\n }\n\n static removeTextFromLink(links: LinkModel[], startIndex: number, endIndex: number): void {\n let link = links.find(x => x.insertIndex <= startIndex && x.endIndex >= endIndex - 1);\n if (link) {\n link.endIndex = endIndex - 1;\n }\n }\n}\n","import { NumberingLevelModel } from './numbering-level.model';\n\nexport class NumberingModel {\n public levels: NumberingLevelModel[];\n public numberingId: number;\n public numberingStyleReference: string;\n\n public constructor(\n fields?: Partial<NumberingModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { NumberingLevelModel } from '../../../../models/generated/numbering-level.model';\nimport { NumberingModel } from '../../../../models/generated/numbering.model';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\n\nexport class NumberingOperationsHelper {\n static addNumbering(numberings: NumberingModel[], numberingId: number, levels: NumberingLevelModel[]): void {\n const newNumbering = new NumberingModel({ numberingId: numberingId, levels });\n numberings.push(newNumbering);\n }\n\n static generateNumberingId(numberings: NumberingModel[]): number {\n let result = 0;\n for (const numbering of numberings) {\n if (numbering.numberingId > result) {\n result = numbering.numberingId;\n }\n }\n\n return result + 1;\n }\n\n static restore(numberings: NumberingModel[], numberingsToRestore: NumberingModel[]): void {\n for (let numberingToRestore of numberingsToRestore) {\n const isNumberingAlreadyExist = numberings.some(x => x.numberingId === numberingToRestore.numberingId);\n if (isNumberingAlreadyExist) {\n continue;\n }\n\n const insertIndex = numberings.findIndex(x => x.numberingId > numberingToRestore.numberingId);\n if (insertIndex === -1) {\n numberings.push(numberingToRestore);\n } else {\n numberings.splice(insertIndex, 0, numberingToRestore);\n }\n }\n }\n\n static deleteUnused(numberings: NumberingModel[], paragraphs: ParagraphModel[], numberingIds: number[]): void {\n let unusedNumberingIds = this.filterUnusedIds(paragraphs, numberingIds);\n this.delete(numberings, unusedNumberingIds);\n }\n\n static delete(numberings: NumberingModel[], numberingIds: number[]): void {\n for (let numberingId of numberingIds) {\n const index = numberings.findIndex(x => x.numberingId === numberingId);\n numberings.splice(index, 1);\n }\n }\n\n private static filterUnusedIds(paragraphs: ParagraphModel[], numberingIds: number[]): number[] {\n const unusedNumberingIds = [...numberingIds];\n let index = 0;\n while (index < paragraphs.length && unusedNumberingIds.length !== 0) {\n if (\n paragraphs[index].paragraphStyle.numberingId !== null &&\n unusedNumberingIds.includes(paragraphs[index].paragraphStyle.numberingId)\n ) {\n const deleteIndex = unusedNumberingIds.indexOf(paragraphs[index].paragraphStyle.numberingId);\n unusedNumberingIds.splice(deleteIndex, 1);\n }\n\n index++;\n }\n\n return unusedNumberingIds;\n }\n}\n","import { DEFAULT_PARAGRAPH_STYLE } from '../../core/constants/editor.const';\nimport { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';\n\nexport class ParagraphOperationsHelper {\n static insertContent(paragraphs: ParagraphModel[], text: string, textIndex: number): void {\n IndexedElementOperationsHelper.insertContent(paragraphs, textIndex, text.length);\n this.insertParagraphsFromText(paragraphs, text, textIndex);\n }\n\n static replace(paragraphs: ParagraphModel[], text: string, startIndex: number, endIndex: number): void {\n IndexedElementOperationsHelper.replaceContent(paragraphs, startIndex, endIndex, text.length);\n this.insertParagraphsFromText(paragraphs, text, startIndex);\n }\n\n static insertParagraphsFromText(paragraphs: ParagraphModel[], text: string, textIndex: number): void {\n const parentParagraph = paragraphs.find(x => x.insertIndex >= textIndex);\n const createdParagraphs = [...text.matchAll(/\\n/g)].map(\n x =>\n new ParagraphModel({\n insertIndex: x.index + textIndex,\n paragraphStyle: parentParagraph?.paragraphStyle ?? DEFAULT_PARAGRAPH_STYLE\n })\n );\n const index = parentParagraph != null ? paragraphs.findIndex(x => x == parentParagraph) : 0;\n paragraphs.splice(index, 0, ...createdParagraphs);\n }\n\n static restoreParagraphs(paragraphs: ParagraphModel[], paragraphsToRestore: ParagraphModel[]): void {\n for (const paragraph of paragraphsToRestore) {\n this.applySingle(paragraphs, paragraph.insertIndex, paragraph.paragraphStyle);\n }\n }\n\n static restoreNumberingParagraphs(paragraphs: ParagraphModel[], paragraphsToRestore: ParagraphModel[]): number[] {\n const oldNumberingIds = [];\n for (const paragraphToRestore of paragraphsToRestore) {\n const paragraph = paragraphs.find(x => x.insertIndex === paragraphToRestore.insertIndex);\n if (paragraph.paragraphStyle.numberingId !== null && !oldNumberingIds.includes(paragraph.paragraphStyle.numberingId)) {\n oldNumberingIds.push(paragraph.paragraphStyle.numberingId);\n }\n\n paragraph.paragraphStyle = new ParagraphStyleModel({ ...paragraphToRestore.paragraphStyle });\n }\n\n return oldNumberingIds;\n }\n\n static applySingle(paragraphs: ParagraphModel[], index: number, style: ParagraphStyleModel): void {\n const paragraph = paragraphs.find(x => x.insertIndex === index);\n paragraph.paragraphStyle = new ParagraphStyleModel({ ...style });\n }\n\n static applyNumbering(paragraphs: ParagraphModel[], startIndex: number, endIndex: number, numberingId?: number): number[] {\n const oldNumberingIds = [];\n let index = paragraphs.findIndex(x => x.insertIndex >= startIndex);\n while (index < paragraphs.length && paragraphs[index].insertIndex <= endIndex) {\n const paragraphNumberingId = paragraphs[index].paragraphStyle.numberingId;\n if (paragraphNumberingId !== null && !oldNumberingIds.includes(paragraphNumberingId)) {\n oldNumberingIds.push(paragraphNumberingId);\n }\n\n paragraphs[index].paragraphStyle.numberingId = numberingId;\n if (numberingId === null) {\n paragraphs[index].paragraphStyle.numberingLevel = null;\n } else {\n paragraphs[index].paragraphStyle.numberingLevel ??= 0;\n }\n index++;\n }\n\n return oldNumberingIds;\n }\n\n static apply(paragraphs: ParagraphModel[], startIndex: number, endIndex: number, style: ParagraphStyleModel): void {\n let index = paragraphs.findIndex(x => x.insertIndex >= startIndex);\n for (; index < paragraphs.length && paragraphs[index].insertIndex <= endIndex; index++) {\n this.applyParagraphStyles(paragraphs[index].paragraphStyle, style);\n }\n }\n\n static applyParagraphStyles(target: ParagraphStyleModel, value: ParagraphStyleModel): void {\n target.alignment = value.alignment ?? target.alignment;\n target.backgroundColor = value.backgroundColor ?? target.backgroundColor;\n target.headingStyleId = value.headingStyleId ?? target.headingStyleId;\n target.indentFirstLine = value.indentFirstLine ?? target.indentFirstLine;\n target.indentHanging = value.indentHanging ?? target.indentHanging;\n target.indentLeft = value.indentLeft ?? target.indentLeft;\n target.indentRight = value.indentRight ?? target.indentRight;\n target.lineSpacing = value.lineSpacing ?? target.lineSpacing;\n target.numberingId = value.numberingId ?? target.numberingId;\n target.numberingLevel = value.numberingLevel ?? target.numberingLevel;\n target.spaceAfter = value.spaceAfter ?? target.spaceAfter;\n target.spaceBefore = value.spaceBefore ?? target.spaceBefore;\n }\n}\n","import { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\nimport { TabModel } from '../../../../models/generated/tab.model';\n\nexport class TabOperationsHelper {\n static insertContent(elements: TabModel[], insertIndex: number): void {\n IndexedElementOperationsHelper.insertContent(elements, insertIndex, 1);\n const element = new TabModel({ insertIndex });\n const index = elements.findIndex(x => x.insertIndex > element.insertIndex);\n if (index < 0) {\n elements.push(element);\n } else {\n elements.splice(index, 0, element);\n }\n }\n}\n","export class ColumnModel {\n public spaceBetweenColumns: number;\n public width: number;\n\n public constructor(\n fields?: Partial<ColumnModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { CellModel } from './cell.model';\n\nexport class RowModel {\n public cells: CellModel[];\n public cellSpacing: number;\n public height: number;\n public hRule: any;\n public isHeader: boolean;\n\n public constructor(\n fields?: Partial<RowModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { CellModel } from '../../../../models/generated/cell.model';\nimport { ColumnModel } from '../../../../models/generated/column.model';\nimport { DEFAULT_PARAGRAPH_STYLE, DEFAULT_TEXT_STYLE } from '../../core/constants/editor.const';\nimport { FormatModel } from '../../../../models/generated/format.model';\nimport { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\nimport { InsertTableModel } from '../../../../models/generated/insert-table.model';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';\nimport { ResizeTableColumnsModel } from '../../../../models/generated/resize-table-columns.model';\nimport { ResizerSide } from '../../custom-components/table/enums/reisizer-side.enum';\nimport { RowModel } from '../../../../models/generated/row.model';\nimport { TableModel } from '../../../../models/generated/table.model';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\nimport { VerticalMerge } from '../../custom-components/table/enums/vertical-merge.enum';\n\nexport class TableOperationsHelper {\n static insertContent(tables: TableModel[], insertIndex: number, tableModel: InsertTableModel, contentWidth: number): void {\n let rows: RowModel[] = [];\n for (let i = 0; i < tableModel.rowsCount; i++) {\n let cells: CellModel[] = [];\n for (let j = 0; j < tableModel.columnsCount; j++) {\n const cell = new CellModel({\n breaks: [],\n content: '',\n contentLength: 0,\n elements: [],\n formats: [new FormatModel({ startIndex: 0, endIndex: 0, textStyle: DEFAULT_TEXT_STYLE })],\n images: [],\n paragraphs: [new ParagraphModel({ insertIndex: 0, paragraphStyle: DEFAULT_PARAGRAPH_STYLE })],\n tables: [],\n tabs: []\n });\n cells.push(cell);\n }\n\n rows.push(new RowModel({ cells: cells }));\n }\n\n const columnWidth = Math.round(contentWidth / tableModel.columnsCount);\n const columns = [];\n for (let i = 0; i < tableModel.columnsCount; i++) {\n const column = new ColumnModel({\n width: columnWidth\n });\n columns.push(column);\n }\n const table = new TableModel({ insertIndex: tableModel.insertTableIndex, alignment: 0, rows, columns });\n\n IndexedElementOperationsHelper.insertContent(tables, insertIndex, tableModel.content.length);\n const index = tables.findIndex(x => x.insertIndex > table.insertIndex);\n if (index < 0) {\n tables.push(table);\n } else {\n tables.splice(index, 0, table);\n }\n }\n static insertTableRows(tables: TableModel[], insertIndex: number, rowsCount: number, targetIndex: number, inheritIndex: number): void {\n const table = tables.find(x => x.insertIndex === insertIndex);\n const matrix = this.getMatrix(table);\n const newCells = this.getNewRowCells(matrix, targetIndex, inheritIndex);\n this.insertNewRowCells(table, newCells, rowsCount, targetIndex, inheritIndex);\n }\n\n static insertTableColumns(\n tables: TableModel[],\n insertIndex: number,\n columnsCount: number,\n targetIndex: number,\n inheritIndex: number,\n contentWidth: number\n ): void {\n const table = tables.find(x => x.insertIndex === insertIndex);\n const matrix = this.getMatrix(table);\n const targetIndexes = this.getTargetIndexes(matrix, targetIndex);\n const newCells = this.getNewColumnCells(matrix, columnsCount, targetIndex, inheritIndex);\n this.insertNewColumnCells(table, targetIndexes, newCells);\n this.insertNewColumns(table, columnsCount, targetIndex, inheritIndex);\n this.calculateColumnsWidth(table, contentWidth);\n }\n\n static removeTableRows(tables: TableModel[], insertIndex: number, startIndex: number, endIndex: number): void {\n const table = tables.find(x => x.insertIndex === insertIndex);\n const matrix = this.getMatrix(table);\n this.removeMatrixRows(matrix, startIndex, endIndex);\n table.rows.splice(startIndex, endIndex - startIndex + 1);\n }\n\n static removeTableColumns(tables: TableModel[], insertIndex: number, startIndex: number, endIndex: number, contentWidth: number): void {\n const table = tables.find(x => x.insertIndex === insertIndex);\n const matrix = this.getMatrix(table);\n table.columns.splice(startIndex, endIndex - startIndex + 1);\n this.removeMatrixRowCells(matrix, table, startIndex, endIndex);\n for (let i = 0; i < table.rows.length; i++) {\n table.rows[i].cells = table.rows[i].cells.filter(x => matrix[i].cells.includes(x));\n }\n\n this.calculateColumnsWidth(table, contentWidth);\n }\n\n static resizeTableColumns(tables: TableModel[], resizeTableColumns: ResizeTableColumnsModel): void {\n const table = tables.find(x => x.insertIndex === resizeTableColumns.insertIndex);\n this.resizeColumns(table, resizeTableColumns);\n this.calculateCellsWidth(table);\n }\n\n static restoreTable(tables: TableModel[], insertIndex: number, oldTable: TableModel): void {\n const table = tables.find(x => x.insertIndex === insertIndex);\n table.alignment = oldTable.alignment;\n table.borders = oldTable.borders;\n table.callSpacing = oldTable.callSpacing;\n table.columns = oldTable.columns;\n table.headingStyleId = oldTable.headingStyleId;\n table.indentLeft = oldTable.indentLeft;\n table.indentLeftFromText = oldTable.indentLeftFromText;\n table.indentRightFromText = oldTable.indentRightFromText;\n table.margins = oldTable.margins;\n table.rows = oldTable.rows;\n }\n\n static getMatrix(table: TableModel): RowModel[] {\n const matrix: RowModel[] = [];\n\n table.rows.forEach((row, rowIndex) => {\n matrix.push(new RowModel({ ...row, cells: [] }));\n\n row.cells.forEach(cell => {\n for (let i = 0; i < (cell.horizontalMerge ?? 1); i++) {\n matrix[rowIndex].cells.push(cell);\n }\n });\n });\n\n return matrix;\n }\n\n static getNewRowCells(matrix: RowModel[], targetIndex: number, inheritIndex: number): CellModel[] {\n const newCells: CellModel[] = [];\n\n for (let i = 0; i < matrix[inheritIndex].cells.length; i++) {\n if (matrix[inheritIndex].cells[i] === matrix[inheritIndex].cells[i - 1]) {\n continue;\n }\n\n const newCell = new CellModel({\n ...matrix[inheritIndex].cells[i],\n breaks: [],\n content: '',\n contentLength: 0,\n elements: [],\n images: [],\n formats: [\n new FormatModel({\n startIndex: 0,\n endIndex: 0,\n textStyle: new TextStyleModel(matrix[inheritIndex].cells[i].formats[0].textStyle)\n })\n ],\n paragraphs: [\n new ParagraphModel({\n insertIndex: 0,\n paragraphStyle: new ParagraphStyleModel(matrix[inheritIndex].cells[i].paragraphs[0].paragraphStyle)\n })\n ],\n verticalMerge: this.getCellVerticalMerge(\n matrix[inheritIndex].cells[i].verticalMerge as VerticalMerge,\n targetIndex,\n inheritIndex\n ),\n tables: [],\n tabs: []\n });\n newCells.push(newCell);\n }\n\n return newCells;\n }\n\n static getCellVerticalMerge(currentVerticalMerge: VerticalMerge, targetIndex: number, inheritIndex: number): string | null {\n if (currentVerticalMerge !== VerticalMerge.Restart) {\n return currentVerticalMerge;\n }\n\n return targetIndex > inheritIndex ? VerticalMerge.Merge : null;\n }\n\n static insertNewRowCells(table: TableModel, newCells: CellModel[], rowsCount: number, targetIndex: number, inheritIndex: number): void {\n for (let i = 0; i < rowsCount; i++) {\n const newRowCells = newCells.map(\n x =>\n new CellModel({\n ...x,\n breaks: [],\n content: '',\n contentLength: 0,\n elements: [],\n formats: [new FormatModel({ startIndex: 0, endIndex: 0, textStyle: new TextStyleModel(x.formats[0].textStyle) })],\n images: [],\n paragraphs: [\n new ParagraphModel({ insertIndex: 0, paragraphStyle: new ParagraphStyleModel(x.paragraphs[0].paragraphStyle) })\n ],\n tables: [],\n tabs: []\n })\n );\n const newRow = new RowModel({ ...table.rows[inheritIndex], cells: newRowCells });\n table.rows.splice(targetIndex, 0, newRow);\n }\n }\n\n static getTargetIndexes(matrix: RowModel[], targetIndex: number): number[] {\n const targetIndexes: number[] = [];\n\n for (const row of matrix) {\n let absoluteCellIndex = 0;\n let currentTargetIndex = 0;\n let cellMatrixIndex = 0;\n\n while (absoluteCellIndex < targetIndex) {\n if (row.cells[cellMatrixIndex] === row.cells[cellMatrixIndex - 1]) {\n cellMatrixIndex++;\n continue;\n }\n\n if (!row.cells[cellMatrixIndex]) {\n break;\n }\n\n absoluteCellIndex += row.cells[cellMatrixIndex].horizontalMerge ?? 1;\n cellMatrixIndex++;\n currentTargetIndex++;\n }\n\n targetIndexes.push(currentTargetIndex);\n }\n\n return targetIndexes;\n }\n\n static getNewColumnCells(matrix: RowModel[], columnsCount: number, targetIndex: number, inheritIndex: number): CellModel[][] {\n return matrix.map(row => {\n const newRowCells: CellModel[] = [];\n const isContinuousCell =\n inheritIndex === targetIndex\n ? row.cells[inheritIndex] === row.cells[targetIndex - 1] && row.cells[inheritIndex].horizontalMerge\n : row.cells[inheritIndex] === row.cells[targetIndex] && row.cells[inheritIndex].horizontalMerge;\n\n if (isContinuousCell) {\n row.cells[inheritIndex].horizontalMerge += columnsCount;\n return newRowCells;\n }\n\n for (let i = 0; i < columnsCount; i++) {\n const newCell = new CellModel({\n ...row.cells[inheritIndex],\n breaks: [],\n content: '',\n contentLength: 0,\n elements: [],\n formats: [new FormatModel({ startIndex: 0, endIndex: 0, textStyle: row.cells[inheritIndex].formats[0].textStyle })],\n horizontalMerge: null,\n images: [],\n paragraphs: [\n new ParagraphModel({ insertIndex: 0, paragraphStyle: row.cells[inheritIndex].paragraphs[0].paragraphStyle })\n ],\n tables: [],\n tabs: [],\n verticalMerge: null,\n width: row.cells[inheritIndex].width\n });\n\n newRowCells.push(newCell);\n }\n\n return newRowCells;\n });\n }\n\n static insertNewColumnCells(table: TableModel, targetIndexes: number[], newCells: CellModel[][]): void {\n for (let i = 0; i < targetIndexes.length; i++) {\n if (!newCells[i].length) {\n continue;\n }\n\n table.rows[i].cells.splice(targetIndexes[i], 0, ...newCells[i]);\n }\n }\n\n static insertNewColumns(table: TableModel, columnsCount: number, targetIndex: number, inheritIndex: number): void {\n const newColumn = table.columns[inheritIndex];\n for (let i = 0; i < columnsCount; i++) {\n table.columns.splice(targetIndex, 0, new ColumnModel(newColumn));\n }\n }\n\n static calculateColumnsWidth(table: TableModel, contentWidth: number): void {\n let currentTableWidth = table.columns.reduce((prev, next) => prev + next.width, 0);\n table.columns.forEach(x => (x.width = Math.round((x.width / currentTableWidth) * contentWidth)));\n\n table.rows.forEach(row => {\n for (let i = 0; i < row.cells.length; i++) {\n if (row.cells[i].horizontalMerge) {\n let width = table.columns[i].width;\n\n for (let j = 1; j < row.cells[i].horizontalMerge; j++) {\n width += table.columns[i + j].width;\n }\n\n row.cells[i].width = width;\n } else {\n row.cells[i].width = table.columns[i].width;\n }\n }\n });\n }\n\n static removeMatrixRows(matrix: RowModel[], startIndex: number, endIndex: number): void {\n const removedRows = matrix.slice(startIndex, endIndex + 1);\n matrix.splice(startIndex, endIndex - startIndex + 1);\n let i = 0;\n\n while (i < matrix.length) {\n let j = 0;\n\n while (j < matrix[i].cells.length) {\n if (\n (matrix[i].cells[j].verticalMerge as VerticalMerge) === VerticalMerge.Restart &&\n (!matrix[i + 1] || (matrix[i].cells[j].verticalMerge as VerticalMerge) !== VerticalMerge.Merge)\n ) {\n matrix[i].cells[j].verticalMerge = null;\n }\n\n if (\n (matrix[i].cells[j].verticalMerge as VerticalMerge) === VerticalMerge.Merge &&\n ![VerticalMerge.Restart, VerticalMerge.Merge].includes(matrix[i - 1]?.cells[j].verticalMerge as VerticalMerge)\n ) {\n this.fillMergedCellAfterRemove(matrix, removedRows, i, j);\n }\n\n j++;\n }\n\n i++;\n }\n }\n\n static fillMergedCellAfterRemove(matrix: RowModel[], removedRows: RowModel[], rowIndex: number, cellIndex: number): void {\n let i = removedRows.length - 1;\n let removedCell: CellModel;\n\n while (!removedCell) {\n if ((removedRows[i].cells[cellIndex].verticalMerge as VerticalMerge) === VerticalMerge.Restart) {\n removedCell = removedRows[i].cells[cellIndex];\n }\n\n i--;\n }\n\n matrix[rowIndex].cells[cellIndex].backgroundColor = removedCell.backgroundColor;\n matrix[rowIndex].cells[cellIndex].borders = removedCell.borders;\n matrix[rowIndex].cells[cellIndex].breaks = removedCell.breaks;\n matrix[rowIndex].cells[cellIndex].columnSections = removedCell.columnSections;\n matrix[rowIndex].cells[cellIndex].content = removedCell.content;\n matrix[rowIndex].cells[cellIndex].contentLength = removedCell.contentLength;\n matrix[rowIndex].cells[cellIndex].elements = removedCell.elements;\n matrix[rowIndex].cells[cellIndex].formats = removedCell.formats;\n matrix[rowIndex].cells[cellIndex].horizontalMerge = removedCell.horizontalMerge;\n matrix[rowIndex].cells[cellIndex].images = removedCell.images;\n matrix[rowIndex].cells[cellIndex].margins = removedCell.margins;\n matrix[rowIndex].cells[cellIndex].paragraphs = removedCell.paragraphs;\n matrix[rowIndex].cells[cellIndex].tables = removedCell.tables;\n matrix[rowIndex].cells[cellIndex].verticalAlign = removedCell.verticalAlign;\n matrix[rowIndex].cells[cellIndex].verticalMerge = removedCell.verticalMerge;\n matrix[rowIndex].cells[cellIndex].width = removedCell.width;\n }\n\n static removeMatrixRowCells(matrix: RowModel[], table: TableModel, startIndex: number, endIndex: number): void {\n let i = 0;\n\n while (i < matrix.length) {\n let j = 0;\n matrix[i].cells.splice(startIndex, endIndex - startIndex + 1);\n\n while (j < matrix[i].cells.length) {\n if (matrix[i].cells[j].horizontalMerge > 1) {\n const mergedCellsCount = this.fillDataForHorizontalMergedCell(matrix, table, i, j);\n j += mergedCellsCount;\n } else {\n j++;\n }\n }\n\n i++;\n }\n }\n\n static fillDataForHorizontalMergedCell(matrix: RowModel[], table: TableModel, rowIndex: number, cellIndex: number): number {\n const mergedCells = matrix[rowIndex].cells.filter(x => x === matrix[rowIndex].cells[cellIndex]);\n\n if (mergedCells.length > 1) {\n matrix[rowIndex].cells[cellIndex].horizontalMerge = mergedCells.length;\n matrix[rowIndex].cells[cellIndex].width = 0;\n\n for (let i = 0; i < matrix[rowIndex].cells[cellIndex].horizontalMerge; i++) {\n matrix[rowIndex].cells[cellIndex].width += table.columns[cellIndex + i].width;\n }\n } else {\n matrix[rowIndex].cells[cellIndex].horizontalMerge = null;\n matrix[rowIndex].cells[cellIndex].width = table.columns[cellIndex].width;\n }\n\n matrix[rowIndex].cells[cellIndex].horizontalMerge = mergedCells.length > 1 ? mergedCells.length : null;\n return mergedCells.length;\n }\n\n static resizeColumns(table: TableModel, resizeTableColumns: ResizeTableColumnsModel): void {\n if (resizeTableColumns.resizerSide === ResizerSide.Left) {\n table.columns[resizeTableColumns.columnIndex].width += resizeTableColumns.distance;\n return;\n }\n\n const cellHorizontalMerge = table.rows[resizeTableColumns.rowIndex].cells[resizeTableColumns.cellIndex].horizontalMerge ?? 1;\n const resizerColumnIndex = resizeTableColumns.columnIndex + cellHorizontalMerge - 1;\n table.columns[resizerColumnIndex].width += resizeTableColumns.distance;\n\n if (table.rows[resizeTableColumns.rowIndex].cells[resizeTableColumns.cellIndex + 1]) {\n table.columns[resizerColumnIndex + 1].width -= resizeTableColumns.distance;\n }\n }\n\n static calculateCellsWidth(table: TableModel): void {\n table.rows.forEach(row => {\n let columnIndex = 0;\n for (let i = 0; i < row.cells.length; i++) {\n if (row.cells[i].horizontalMerge) {\n let width = table.columns[columnIndex].width;\n\n for (let j = 1; j < row.cells[i].horizontalMerge; j++) {\n width += table.columns[columnIndex + j].width;\n }\n\n row.cells[i].width = width;\n columnIndex += row.cells[i].horizontalMerge;\n } else {\n row.cells[i].width = table.columns[columnIndex].width;\n columnIndex++;\n }\n }\n });\n }\n}\n","import { ContentsInterface } from '../../interfaces/contents.interface';\nimport { DocxModel } from '../../../../models/generated/docx.model';\nimport { EdgeType } from '../../core/components/edges/edge-type.enum';\nimport { TargetModel } from '../../../../models/generated/target.model';\nimport { TargetType } from '../enums/target-type.enum';\n\nexport class TargetOperationsHelper {\n static getContents(contents: ContentsInterface, target: TargetModel, document: DocxModel): ContentsInterface {\n switch (target.type) {\n case TargetType.Document:\n return contents;\n case TargetType.TableCell: {\n const cellTarget = target.tableCell;\n const table = contents.tables.find(x => x.insertIndex === cellTarget.insertIndex);\n return table.rows[cellTarget.row].cells[cellTarget.column];\n }\n case TargetType.Edge: {\n const edgeTarget = target.edgeData;\n const edges = edgeTarget.type === EdgeType.Header ? document.headers : document.footers;\n return edges.find(x => x.pageType === edgeTarget.pageType);\n }\n default:\n throw new Error('Invalid target type for operation');\n }\n }\n}\n","import { ApplyElementStyleModel } from '../../../../models/generated/apply-element-style.model';\nimport { ApplyImageStyleModel } from '../../../../models/generated/apply-image-style.model';\nimport { BreakOperationsHelper } from './break-operations.helper';\nimport { BreakTypes } from '../../core/enums/break-types.enum';\nimport { CUSTOM_ELEMENT_MARKER } from '../../custom-components/shared/constants/custom-content-markers.const';\nimport { CellModel } from '../../../../models/generated/cell.model';\nimport { CommandModel } from '../../../../models/generated/command.model';\nimport { CommandType } from '../enums/command-type.enum';\nimport { ContentOperationsHelper } from './content-operations.helper';\nimport { ContentsInterface } from '../../interfaces/contents.interface';\nimport { DocxModel } from '../../../../models/generated/docx.model';\nimport { FormatModel } from '../../../../models/generated/format.model';\nimport { FormatOperationsHelper } from './format-operations.helper';\nimport { HYPERLINK_HEADING_STYLE_ID, NEW_LINE_MARKUP } from '../../core/constants/editor.const';\nimport { ImageDataModel } from '../../../../models/generated/image-data.model';\nimport { ImageOperationsHelper } from './image-operations.helper';\nimport { IndexedElementOperationsHelper } from './indexed-element-operations.helper';\nimport { InsertElementModel } from '../../../../models/generated/insert-element.model';\nimport { InsertTableModel } from '../../../../models/generated/insert-table.model';\nimport { LinkOperationsHelper } from './link-operations.helper';\nimport { NumberingLevelModel } from '../../../../models/generated/numbering-level.model';\nimport { NumberingModel } from '../../../../models/generated/numbering.model';\nimport { NumberingOperationsHelper } from './numbering-operations.helper';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { ParagraphOperationsHelper } from './paragraph-operations.helper';\nimport { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';\nimport { ReplaceModel } from '../../../../models/generated/replace.model';\nimport { ResizeTableColumnsModel } from '../../../../models/generated/resize-table-columns.model';\nimport { RestoreModel } from '../../../../models/generated/restore.model';\nimport { TabOperationsHelper } from './tab-operations.helper';\nimport { TableModel } from '../../../../models/generated/table.model';\nimport { TableOperationsHelper } from './table-operations.helper';\nimport { TargetOperationsHelper } from './target-operations.helper';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class OperationsHelper {\n static applyOperations(document: DocxModel, commands: CommandModel[]): void {\n commands.forEach(command => {\n const contents = this.getTargetContents(document, command);\n switch (command.commandType) {\n case CommandType.InsertText:\n this.insertText(contents, command.insertText.text, command.insertText.insertIndex);\n break;\n case CommandType.InsertStyledText: {\n const model = command.insertStyledText;\n this.insertStyledText(contents, model.text, model.insertIndex, model.textStyle);\n break;\n }\n case CommandType.Restore:\n this.deleteRestore(contents, command.restore);\n break;\n case CommandType.Delete:\n this.delete(contents, command.delete.startIndex, command.delete.endIndex);\n break;\n case CommandType.ReplaceByText: {\n const model = command.replaceByText;\n this.replaceText(contents, model.startIndex, model.endIndex, model.text);\n break;\n }\n case CommandType.ApplyTextStyle: {\n const model = command.applyTextStyle;\n this.applyTextStyle(contents, model.startIndex, model.endIndex, model.textStyle);\n break;\n }\n case CommandType.RestoreTextStyles: {\n const model = command.restoreTextStyles;\n this.restoreTextStyles(contents, model.formats);\n break;\n }\n case CommandType.RestoreParagraphStyles: {\n const model = command.restoreParagraphStyles;\n this.restoreParagraphStyles(contents, model.paragraphs);\n break;\n }\n case CommandType.ApplyParagraphStyle: {\n const model = command.applyParagraphStyle;\n this.applyParagraphStyle(contents, model.startIndex, model.endIndex, model.paragraphStyle);\n break;\n }\n case CommandType.ApplyElementStyle:\n this.applyElementStyle(contents, command.applyElementStyle);\n break;\n case CommandType.InsertElement: {\n const model = command.insertElement;\n this.insertElement(contents, model);\n break;\n }\n case CommandType.InsertBreak: {\n const model = command.insertBreak;\n const text = model.isOnNewParagraph ? `${NEW_LINE_MARKUP}${CUSTOM_ELEMENT_MARKER}` : CUSTOM_ELEMENT_MARKER;\n this.insertBreak(document, text, model.insertIndex, model.breakType as BreakTypes);\n break;\n }\n case CommandType.AddNumbering: {\n const model = command.addNumbering;\n this.addNumbering(contents, document.numberings, model.startIndex, model.endIndex, model.levels);\n break;\n }\n case CommandType.RestoreNumberings: {\n const model = command.restoreNumberings;\n this.restoreNumberings(contents, document.numberings, model.paragraphs, model.numberings);\n break;\n }\n case CommandType.InsertTab: {\n const model = command.insertTab;\n this.insertTab(document, model.insertIndex);\n break;\n }\n case CommandType.InsertLink: {\n const model = command.insertLink;\n this.insertLink(\n contents,\n model.linkDataModel.text,\n model.linkDataModel.link,\n command.insertText.insertIndex,\n new TextStyleModel({ headingStyleId: HYPERLINK_HEADING_STYLE_ID, underline: true })\n );\n break;\n }\n case CommandType.InsertTableColumns: {\n const model = command.insertTableColumns;\n const contentWidth = this.getContentWidth(document, contents);\n this.insertTableColumns(\n contents,\n model.insertIndex,\n model.columnsCount,\n model.targetIndex,\n model.inheritIndex,\n contentWidth\n );\n break;\n }\n case CommandType.InsertTableRows: {\n const model = command.insertTableRows;\n this.insertTableRows(contents, model.insertIndex, model.rowsCount, model.targetIndex, model.inheritIndex);\n break;\n }\n case CommandType.RemoveTableColumns: {\n const model = command.removeTableColumns;\n const contentWidth = this.getContentWidth(document, contents);\n this.removeTableColumns(contents, model.insertIndex, model.startIndex, model.endIndex, contentWidth);\n break;\n }\n case CommandType.RemoveTableRows: {\n const model = command.removeTableRows;\n this.removeTableRows(contents, model.insertIndex, model.startIndex, model.endIndex);\n break;\n }\n case CommandType.ResizeTableColumns: {\n const model = command.resizeTableColumns;\n this.resizeTableColumns(document, model);\n break;\n }\n case CommandType.RestoreTable: {\n const model = command.restoreTable;\n this.restoreTable(document, model.insertIndex, model.oldTable);\n break;\n }\n case CommandType.InsertTable: {\n const model = command.insertTable;\n const contentWidth = this.getContentWidth(document, contents);\n this.insertTable(document, model.insertIndex, model, contentWidth);\n break;\n }\n case CommandType.ApplyImageStyle: {\n const model = command.applyImageStyle;\n this.applyImageStyle(document, model);\n break;\n }\n case CommandType.InsertImage: {\n const model = command.insertImage;\n this.insertImage(document, model.insertIndex, model.imageData);\n break;\n }\n case CommandType.RemoveNumberings: {\n const model = command.removeNumberings;\n this.removeNumberings(contents, document.numberings, model.startIndex, model.endIndex);\n break;\n }\n case CommandType.Replace: {\n const contentWidth = this.getContentWidth(document, contents);\n this.replace(contents, command.replace, contentWidth);\n break;\n }\n }\n });\n }\n\n static getTargetContents(document: DocxModel, command: CommandModel): ContentsInterface {\n let result: ContentsInterface = document;\n for (const target of command.targets) {\n result = TargetOperationsHelper.getContents(result, target, document);\n }\n return result;\n }\n\n static getContentWidth(document: DocxModel, contents: ContentsInterface): number {\n let contentWidth = 0;\n\n if (contents instanceof CellModel) {\n const margins = (contents.margins?.left ?? 0) + (contents.margins?.right ?? 0);\n contentWidth = contents.width - margins;\n } else {\n contentWidth = document.pageWidth - document.marginLeft - document.marginRight;\n }\n\n return contentWidth;\n }\n\n static insertText(document: ContentsInterface, text: string, index: number): void {\n document.content = ContentOperationsHelper.insertContent(document.content, text, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertContent(document.formats, index, text.length);\n ParagraphOperationsHelper.insertContent(document.paragraphs, text, index);\n IndexedElementOperationsHelper.insertContent(document.images, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.links, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tables, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.elements, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.breaks, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tabs, index, text.length);\n LinkOperationsHelper.insertTextIntoLink(document.links, text, index);\n }\n\n static insertElement(document: ContentsInterface, element: InsertElementModel): void {\n document.content = ContentOperationsHelper.insertContent(document.content, CUSTOM_ELEMENT_MARKER, element.element.insertIndex);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertContent(document.formats, element.element.insertIndex, 1);\n IndexedElementOperationsHelper.insertContent(document.paragraphs, element.element.insertIndex, 1);\n IndexedElementOperationsHelper.insertContent(document.images, element.element.insertIndex, 1);\n IndexedElementOperationsHelper.insertContent(document.links, element.element.insertIndex, 1);\n IndexedElementOperationsHelper.insertContent(document.tables, element.element.insertIndex, 1);\n IndexedElementOperationsHelper.insert(document.elements, element.element);\n IndexedElementOperationsHelper.insertContent(document.breaks, element.element.insertIndex, 1);\n IndexedElementOperationsHelper.insertContent(document.tabs, element.element.insertIndex, 1);\n }\n\n static insertBreak(document: ContentsInterface, text: string, index: number, breakType: BreakTypes): void {\n document.content = ContentOperationsHelper.insertContent(document.content, text, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertContent(document.formats, index, text.length);\n ParagraphOperationsHelper.insertContent(document.paragraphs, text, index);\n IndexedElementOperationsHelper.insertContent(document.images, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.links, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tables, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.elements, index, text.length);\n BreakOperationsHelper.insertContent(document.breaks, index + text.length - 1, breakType, text.length);\n IndexedElementOperationsHelper.insertContent(document.tabs, index, text.length);\n }\n\n static insertTab(document: ContentsInterface, index: number): void {\n document.content = ContentOperationsHelper.insertContent(document.content, CUSTOM_ELEMENT_MARKER, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertContent(document.formats, index, 1);\n IndexedElementOperationsHelper.insertContent(document.paragraphs, index, 1);\n IndexedElementOperationsHelper.insertContent(document.images, index, 1);\n IndexedElementOperationsHelper.insertContent(document.links, index, 1);\n IndexedElementOperationsHelper.insertContent(document.tables, index, 1);\n IndexedElementOperationsHelper.insertContent(document.elements, index, 1);\n IndexedElementOperationsHelper.insertContent(document.breaks, index, 1);\n TabOperationsHelper.insertContent(document.tabs, index);\n }\n\n static insertLink(document: ContentsInterface, text: string, link: string, index: number, style: TextStyleModel): void {\n document.content = ContentOperationsHelper.insertContent(document.content, text, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertStyledContent(document.formats, index, text.length, style);\n ParagraphOperationsHelper.insertContent(document.paragraphs, text, index);\n IndexedElementOperationsHelper.insertContent(document.images, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tables, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.elements, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.breaks, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tabs, index, text.length);\n LinkOperationsHelper.insertContent(document.links, link, index, index + text.length - 1);\n }\n\n static addNumbering(\n target: ContentsInterface,\n numberings: NumberingModel[],\n startIndex: number,\n endIndex: number,\n levels: NumberingLevelModel[]\n ): void {\n const newNumberingId = NumberingOperationsHelper.generateNumberingId(numberings);\n const oldNumberingIds = ParagraphOperationsHelper.applyNumbering(target.paragraphs, startIndex, endIndex, newNumberingId);\n NumberingOperationsHelper.addNumbering(numberings, newNumberingId, levels);\n NumberingOperationsHelper.deleteUnused(numberings, target.paragraphs, oldNumberingIds);\n }\n\n static removeNumberings(target: ContentsInterface, numberings: NumberingModel[], startIndex: number, endIndex: number): void {\n const oldNumberingIds = ParagraphOperationsHelper.applyNumbering(target.paragraphs, startIndex, endIndex, null);\n NumberingOperationsHelper.deleteUnused(numberings, target.paragraphs, oldNumberingIds);\n }\n\n static restoreNumberings(\n target: ContentsInterface,\n numberings: NumberingModel[],\n paragraphsToRestore: ParagraphModel[],\n numberingsToRestore: NumberingModel[]\n ): void {\n const oldNumberingIds = ParagraphOperationsHelper.restoreNumberingParagraphs(target.paragraphs, paragraphsToRestore);\n NumberingOperationsHelper.restore(numberings, numberingsToRestore);\n NumberingOperationsHelper.deleteUnused(numberings, target.paragraphs, oldNumberingIds);\n }\n\n static insertImage(document: ContentsInterface, index: number, imageData: ImageDataModel): void {\n document.content = ContentOperationsHelper.insertContent(document.content, CUSTOM_ELEMENT_MARKER, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertContent(document.formats, index, 1);\n IndexedElementOperationsHelper.insertContent(document.paragraphs, index, 1);\n IndexedElementOperationsHelper.insertContent(document.tables, index, 1);\n IndexedElementOperationsHelper.insertContent(document.links, index, 1);\n IndexedElementOperationsHelper.insertContent(document.elements, index, 1);\n IndexedElementOperationsHelper.insertContent(document.breaks, index, 1);\n ImageOperationsHelper.insertContent(document.images, index, imageData);\n IndexedElementOperationsHelper.insertContent(document.tabs, index, 1);\n }\n\n static insertTable(document: ContentsInterface, index: number, tableModel: InsertTableModel, contentWidth: number): void {\n document.content = ContentOperationsHelper.insertContent(document.content, tableModel.content, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertContent(document.formats, index, tableModel.content.length);\n ParagraphOperationsHelper.insertContent(document.paragraphs, tableModel.content, index);\n IndexedElementOperationsHelper.insertContent(document.images, index, tableModel.content.length);\n IndexedElementOperationsHelper.insertContent(document.links, index, tableModel.content.length);\n IndexedElementOperationsHelper.insertContent(document.elements, index, tableModel.content.length);\n IndexedElementOperationsHelper.insertContent(document.breaks, index, tableModel.content.length);\n TableOperationsHelper.insertContent(document.tables, index, tableModel, contentWidth);\n IndexedElementOperationsHelper.insertContent(document.tabs, index, tableModel.content.length);\n }\n\n static insertStyledText(document: ContentsInterface, text: string, index: number, style: TextStyleModel): void {\n document.content = ContentOperationsHelper.insertContent(document.content, text, index);\n document.contentLength = document.content.length;\n FormatOperationsHelper.insertStyledContent(document.formats, index, text.length, style);\n ParagraphOperationsHelper.insertContent(document.paragraphs, text, index);\n IndexedElementOperationsHelper.insertContent(document.images, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.links, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tables, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.elements, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.breaks, index, text.length);\n IndexedElementOperationsHelper.insertContent(document.tabs, index, text.length);\n LinkOperationsHelper.insertTextIntoLink(document.links, text, index);\n }\n\n static deleteRestore(document: ContentsInterface, model: RestoreModel): void {\n if (model.startIndex !== model.endIndex) {\n this.delete(document, model.startIndex, model.endIndex);\n }\n\n this.restore(document, model);\n }\n\n static restore(document: ContentsInterface, model: RestoreModel): void {\n document.content = ContentOperationsHelper.insertContent(document.content, model.text, model.startIndex);\n document.contentLength = document.content.length;\n FormatOperationsHelper.restore(document.formats, model.startIndex, model.text.length, model.formats);\n IndexedElementOperationsHelper.restore(document.paragraphs, model.startIndex, model.text.length, model.paragraphs);\n IndexedElementOperationsHelper.restore(document.images, model.startIndex, model.text.length, model.images);\n IndexedElementOperationsHelper.restore(document.links, model.startIndex, model.text.length, model.links);\n IndexedElementOperationsHelper.restore(document.tables, model.startIndex, model.text.length, model.tables);\n IndexedElementOperationsHelper.restore(document.elements, model.startIndex, model.text.length, model.elements);\n IndexedElementOperationsHelper.restore(document.breaks, model.startIndex, model.text.length, model.breaks);\n IndexedElementOperationsHelper.restore(document.tabs, model.startIndex, model.text.length, model.tabs);\n }\n\n static delete(document: ContentsInterface, startIndex: number, endIndex: number): void {\n document.content = ContentOperationsHelper.removeContent(document.content, startIndex, endIndex);\n document.contentLength = document.content.length;\n FormatOperationsHelper.removeContent(document.formats, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.paragraphs, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.images, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.links, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.tables, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.elements, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.breaks, startIndex, endIndex);\n IndexedElementOperationsHelper.removeContent(document.tabs, startIndex, endIndex);\n LinkOperationsHelper.removeTextFromLink(document.links, startIndex, endIndex);\n }\n\n static replaceText(document: ContentsInterface, startIndex: number, endIndex: number, text: string): void {\n document.content = ContentOperationsHelper.replaceContent(document.content, startIndex, endIndex, text);\n document.contentLength = document.content.length;\n FormatOperationsHelper.replaceContent(document.formats, startIndex, endIndex, text.length);\n ParagraphOperationsHelper.replace(document.paragraphs, text, startIndex, endIndex);\n IndexedElementOperationsHelper.replaceContent(document.images, startIndex, endIndex, text.length);\n IndexedElementOperationsHelper.replaceContent(document.tables, startIndex, endIndex, text.length);\n IndexedElementOperationsHelper.replaceContent(document.links, startIndex, endIndex, text.length);\n IndexedElementOperationsHelper.replaceContent(document.elements, startIndex, endIndex, text.length);\n IndexedElementOperationsHelper.replaceContent(document.breaks, startIndex, endIndex, text.length);\n IndexedElementOperationsHelper.replaceContent(document.tabs, startIndex, endIndex, text.length);\n }\n\n static replace(document: ContentsInterface, model: ReplaceModel, contentWidth: number): void {\n this.delete(document, model.delete.startIndex, model.delete.endIndex);\n if (model.insertText) {\n this.insertText(document, model.insertText.text, model.insertText.insertIndex);\n } else if (model.insertElement) {\n this.insertElement(document, model.insertElement);\n } else if (model.insertTab) {\n this.insertTab(document, model.insertTab.insertIndex);\n } else if (model.insertBreak) {\n const text = model.insertBreak.isOnNewParagraph ? `${NEW_LINE_MARKUP}${CUSTOM_ELEMENT_MARKER}` : CUSTOM_ELEMENT_MARKER;\n this.insertBreak(document, text, model.insertBreak.insertIndex, model.insertBreak.breakType as BreakTypes);\n } else if (model.insertImage) {\n this.insertImage(document, model.insertImage.insertIndex, model.insertImage.imageData);\n } else if (model.insertTable) {\n this.insertTable(document, model.insertTable.insertIndex, model.insertTable, contentWidth);\n } else if (model.insertLink) {\n this.insertLink(\n document,\n model.insertLink.linkDataModel.text,\n model.insertLink.linkDataModel.link,\n model.insertLink.insertIndex,\n new TextStyleModel({ headingStyleId: HYPERLINK_HEADING_STYLE_ID, underline: true })\n );\n }\n }\n\n static applyTextStyle(document: ContentsInterface, startIndex: number, endIndex: number, style: TextStyleModel): void {\n FormatOperationsHelper.apply(document.formats, startIndex, endIndex, style);\n }\n\n static restoreTextStyles(document: ContentsInterface, textFormats: FormatModel[]): void {\n FormatOperationsHelper.restoreFormats(document.formats, textFormats);\n }\n\n static restoreParagraphStyles(document: ContentsInterface, paragraphs: ParagraphModel[]): void {\n ParagraphOperationsHelper.restoreParagraphs(document.paragraphs, paragraphs);\n }\n\n static applyParagraphStyle(document: ContentsInterface, startIndex: number, endIndex: number, style: ParagraphStyleModel): void {\n ParagraphOperationsHelper.apply(document.paragraphs, startIndex, endIndex, style);\n }\n\n static applyElementStyle(document: ContentsInterface, model: ApplyElementStyleModel): void {\n const element = document.elements.find(x => x.insertIndex == model.insertIndex);\n element.width = model.width ?? element.width;\n element.height = model.height ?? element.height;\n }\n\n static applyImageStyle(document: ContentsInterface, image: ApplyImageStyleModel): void {\n ImageOperationsHelper.apply(document.images, image);\n }\n\n static insertTableRows(\n document: ContentsInterface,\n insertIndex: number,\n rowsCount: number,\n targetIndex: number,\n inheritIndex: number\n ): void {\n TableOperationsHelper.insertTableRows(document.tables, insertIndex, rowsCount, targetIndex, inheritIndex);\n }\n\n static insertTableColumns(\n document: ContentsInterface,\n insertIndex: number,\n columnsCount: number,\n targetIndex: number,\n inheritIndex: number,\n contentWidth: number\n ): void {\n TableOperationsHelper.insertTableColumns(document.tables, insertIndex, columnsCount, targetIndex, inheritIndex, contentWidth);\n }\n\n static removeTableRows(document: ContentsInterface, insertIndex: number, startIndex: number, endIndex: number): void {\n TableOperationsHelper.removeTableRows(document.tables, insertIndex, startIndex, endIndex);\n }\n\n static removeTableColumns(\n document: ContentsInterface,\n insertIndex: number,\n startIndex: number,\n endIndex: number,\n contentWidth: number\n ): void {\n TableOperationsHelper.removeTableColumns(document.tables, insertIndex, startIndex, endIndex, contentWidth);\n }\n\n static restoreTable(document: ContentsInterface, insertIndex: number, oldTable: TableModel): void {\n TableOperationsHelper.restoreTable(document.tables, insertIndex, oldTable);\n }\n\n static resizeTableColumns(document: ContentsInterface, resizeTableColumns: ResizeTableColumnsModel): void {\n TableOperationsHelper.resizeTableColumns(document.tables, resizeTableColumns);\n }\n}\n","import { PageType } from '../enums/page-type.enum';\n\nexport class PageVerticalDataModel {\n marginBottom: number;\n marginTop: number;\n contentHeight: number;\n pageType: PageType;\n\n constructor(fields?: Partial<PageVerticalDataModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n}\n","import { Alignment } from '../constants/alignments.const';\nimport { IndentModel } from '../models/indent.model';\nimport { LineInfoModel } from '../models/line-info.model';\n\nexport class TextLineInfo {\n width: number;\n\n height: number;\n\n page?: number;\n\n paddingLeft = 0;\n\n offsetBefore = 0;\n\n offsetAfter = 0;\n\n firstLinePageOffset = 0;\n\n endPageOffset = 0;\n\n screenLine = 0;\n\n isAfterPageBreak = false;\n\n isEndedByPageBreak = false;\n\n backgroundColor: string;\n\n constructor(contentWidth: number, align: number, indent: IndentModel, fields?: Partial<LineInfoModel>) {\n if (fields) {\n Object.assign(this, fields);\n }\n\n const diff = contentWidth - this.width;\n if (this.width === undefined || diff === 0) {\n return;\n }\n\n switch (align) {\n case Alignment.center:\n this.paddingLeft = indent.left + (diff - indent.left - indent.right) / 2;\n break;\n case Alignment.right:\n this.paddingLeft = diff - indent.right;\n break;\n default:\n this.paddingLeft = indent.left;\n break;\n }\n\n this.paddingLeft += indent.firstLine;\n this.paddingLeft -= indent.hanging;\n }\n}\n","import { LineInfoModel } from '../models/line-info.model';\nimport { NumberingDataModel } from '../models/numbering-data.model';\nimport { PageVerticalDataModel } from './page-vertical-data.model';\nimport { ParagraphHelper } from '../helpers/paragraph.helper';\nimport { TextLineInfo } from './text-line-info';\n\nexport class Paragraph {\n textLinesInfo: TextLineInfo[] = [];\n\n pagePreviousContentHeight = 0;\n\n width = 0;\n\n height = 0;\n\n distanceFromTop: number;\n\n pageNumbers: number[] = [];\n\n get firstPageNumber(): number {\n return this.pageNumbers[0] || 1;\n }\n\n get lastPageNumber(): number {\n return this.pageNumbers[this.pageNumbers.length - 1] || 1;\n }\n\n get firstScreenLine(): number {\n return this.textLinesInfo[0].screenLine;\n }\n\n get lastScreenLine(): number {\n return this.textLinesInfo[this.textLinesInfo.length - 1].screenLine;\n }\n\n get isEndedByPageBreak(): boolean {\n return this.textLinesInfo[this.textLinesInfo.length - 1].isEndedByPageBreak;\n }\n\n get backgroundColor(): string {\n return this.textLinesInfo[0].backgroundColor;\n }\n\n public constructor(\n public numberingData: NumberingDataModel,\n private offsetBefore: number,\n private processTextLinesProperties: (\n currentParagraph: Paragraph,\n prevParagraphInfo: { lastPage: number; paragraphHeight: number; paragraphLastLine: number },\n pagesInfo: { pagesVerticalData: PageVerticalDataModel[]; pagesSpace: number }\n ) => void\n ) {}\n\n setTextLinesInfo(linesInfos: LineInfoModel[]): void {\n this.textLinesInfo = linesInfos.map(lineInfo => new TextLineInfo(this.width, lineInfo.align, lineInfo.indent, lineInfo));\n }\n\n setIsAfterPageBreak(value: boolean): void {\n this.textLinesInfo[0].isAfterPageBreak = value;\n }\n\n getParagraphData(): { lastPage: number; paragraphHeight: number; paragraphLastLine: number } {\n const pageContentHeight =\n this.pageNumbers.length === 1\n ? this.height + this.pagePreviousContentHeight\n : ParagraphHelper.getPageLinesHeight(this.textLinesInfo, this.lastPageNumber);\n return { lastPage: this.lastPageNumber, paragraphHeight: pageContentHeight, paragraphLastLine: this.lastScreenLine };\n }\n\n processParagraphProperties(\n prevParagraphInfo: { lastPage: number; paragraphHeight: number; paragraphLastLine: number },\n pagesInfo: { pagesVerticalData: PageVerticalDataModel[]; pagesSpace: number }\n ): void {\n this.pagePreviousContentHeight = prevParagraphInfo.paragraphHeight;\n this.processTextLinesProperties(this, prevParagraphInfo, pagesInfo);\n ParagraphHelper.processOffsetLineWithNumberingMarker(this.textLinesInfo[0], this.numberingData.height, this.offsetBefore);\n this.pageNumbers = ParagraphHelper.getParagraphPages(this.textLinesInfo);\n this.height = ParagraphHelper.getParagraphHeight(this.textLinesInfo);\n }\n}\n","import { DisplayToken } from '../models/display-token.model';\nimport { Edges } from '../components/edges/edges';\nimport { EdgeType } from '../components/edges/edge-type.enum';\nimport { EventEmitting } from '../base/event-emitting';\nimport { LineInfoModel } from '../models/line-info.model';\nimport { MarginModel } from '../models/margin.model';\nimport { NumberingHelper } from '../helpers/numbering.helper';\nimport { NumberingModel } from '../../../../models/generated/numbering.model';\nimport { PageHelper } from '../helpers/page.helper';\nimport { PageType } from '../enums/page-type.enum';\nimport { PageVerticalDataModel } from './page-vertical-data.model';\nimport { Paragraph } from './paragraph';\nimport { ParagraphHelper } from '../helpers/paragraph.helper';\nimport { ParagraphModel } from '../../../../models/generated/paragraph.model';\nimport { VisibleRange } from '../interfaces/visible-range.interface';\n\nexport class PagesWrap extends EventEmitting {\n contentWidth: number;\n\n allPagesHeight = 0;\n\n minHeight = 0;\n\n paragraphs: Paragraph[] = [];\n\n tabTokens: DisplayToken[] = [];\n\n pagesVerticalData: PageVerticalDataModel[];\n\n get defaultVerticalData(): PageVerticalDataModel {\n return this.pagesVerticalData.find(x => x.pageType === PageType.Default);\n }\n\n private processTextLinesProperties: (\n currentParagraph: Paragraph,\n prevParagraphInfo: { lastPage: number; paragraphHeight: number; paragraphLastLine: number },\n pagesInfo: { pagesVerticalData: PageVerticalDataModel[]; pagesSpace: number }\n ) => void;\n\n constructor(\n public pagesSpace: number,\n public documentMargin: MarginModel,\n public pageWidth: number,\n public pageHeight = 0,\n public edges: Edges | null = null\n ) {\n super();\n this.minHeight = this.pageHeight + 2 * this.pagesSpace;\n this.contentWidth = this.pageWidth - this.documentMargin.left - this.documentMargin.right;\n this.initPagesVerticalData();\n\n this.processTextLinesProperties = !this.pageHeight\n ? ParagraphHelper.processTextLinesPropertiesForSinglePage\n : ParagraphHelper.processTextLinesProperties;\n }\n\n getParagraphTop(paragraphs: Paragraph[], index: number): number {\n return paragraphs[index] ? paragraphs[index].distanceFromTop : 0;\n }\n\n getParagraphTopForPrint(paragraphs: Paragraph[], index: number, pagesSpace: number): number {\n if (!paragraphs[index]) {\n return 0;\n }\n const paragraph = paragraphs[index];\n const pageNumber = paragraph.pageNumbers[0];\n let pageBreakHeight = 0;\n paragraph.textLinesInfo.forEach(linesInfo => {\n if (linesInfo.isAfterPageBreak) {\n pageBreakHeight = linesInfo.height;\n }\n });\n return paragraph.distanceFromTop - pageNumber * pagesSpace - pageBreakHeight;\n }\n\n getParagraphHeight(paragraphs: Paragraph[], index: number): number {\n return paragraphs[index] ? paragraphs[index].height : 0;\n }\n\n remove(index: number, length: number): void {\n this.paragraphs.splice(index, length);\n }\n\n reset(paragraphsLength: number): void {\n this.paragraphs.length = paragraphsLength;\n }\n\n set(row: number, lineInfos: LineInfoModel[], numberings: NumberingModel[], docParagraphs: ParagraphModel[]): void {\n if (!this.paragraphs[row]) {\n const numberingData = NumberingHelper.createDataModel(numberings, docParagraphs, row);\n this.paragraphs[row] = new Paragraph(numberingData, lineInfos[0].offsetBefore, this.processTextLinesProperties);\n }\n\n this.paragraphs[row].width = this.contentWidth;\n this.paragraphs[row].setTextLinesInfo(lineInfos);\n }\n\n getVisibleRange(offsetTop: number, scrollerHeight: number): VisibleRange {\n let start = this.paragraphs.findIndex(x => offsetTop <= x.distanceFromTop + x.height);\n if (start < 0) {\n start = 0;\n }\n\n let startLineInfo = null;\n const startParagraph = this.paragraphs[start];\n if (startParagraph) {\n const startParagraphOffsetTop = offsetTop - startParagraph.distanceFromTop;\n startLineInfo = ParagraphHelper.getVisibleLineInfo(startParagraph?.textLinesInfo, startParagraphOffsetTop, 1);\n }\n\n if (!startLineInfo) {\n return {\n startParagraph: 0,\n startLine: 0,\n startScreenLine: 0,\n startScreenFullLine: 0,\n endParagraph: 0,\n endLine: 0,\n endScreenLine: 0,\n endScreenFullLine: 0,\n pages: [1]\n };\n }\n\n let end = this.paragraphs.findIndex(x => offsetTop + scrollerHeight <= x.distanceFromTop + x.height);\n if (end < 0) {\n end = this.paragraphs.length - 1;\n }\n\n let endLineInfo = null;\n const endParagraph = this.paragraphs[end];\n if (endParagraph) {\n const endParagraphOffsetTop = offsetTop + scrollerHeight - endParagraph.distanceFromTop;\n endLineInfo = ParagraphHelper.getVisibleLineInfo(endParagraph?.textLinesInfo, endParagraphOffsetTop, -1);\n }\n\n const visiblePages = this.getVisiblePages(offsetTop, scrollerHeight);\n\n return {\n startParagraph: start,\n startLine: startLineInfo.index,\n startScreenLine: startLineInfo.screenIndex,\n startScreenFullLine: startLineInfo.visibleScreenIndex,\n endParagraph: end,\n endLine: endLineInfo.index,\n endScreenLine: endLineInfo.screenIndex,\n endScreenFullLine: endLineInfo.visibleScreenIndex,\n pages: visiblePages\n };\n }\n\n processParagraphsProperties(startParagraphIndex: number): void {\n const pagesInfo = { pagesVerticalData: this.pagesVerticalData, pagesSpace: this.pagesSpace };\n let currentPage = startParagraphIndex === 0 ? 1 : this.paragraphs[startParagraphIndex - 1].lastPageNumber;\n let pageVerticalData = PageHelper.getVerticalData(currentPage, this.pagesVerticalData);\n for (let i = startParagraphIndex; i < this.paragraphs.length; i++) {\n const prevParagraphInfo = this.getPreviousParagraphInfo(i);\n const paragraph = this.paragraphs[i];\n paragraph.processParagraphProperties(prevParagraphInfo, pagesInfo);\n if (paragraph.firstPageNumber !== currentPage) {\n currentPage = paragraph.firstPageNumber;\n pageVerticalData = PageHelper.getVerticalData(paragraph.firstPageNumber, this.pagesVerticalData);\n }\n\n paragraph.distanceFromTop =\n (paragraph.firstPageNumber - 1) * this.pageHeight +\n this.pagesSpace * paragraph.firstPageNumber +\n pageVerticalData.marginTop +\n paragraph.pagePreviousContentHeight;\n }\n\n let pageHeight = this.pageHeight;\n if (!pageHeight) {\n pageHeight = this.getAllParagraphsHeight() + this.documentMargin.top + this.documentMargin.bottom;\n this.minHeight = pageHeight + 2 * this.pagesSpace;\n this.defaultVerticalData.contentHeight = pageHeight;\n }\n\n const lastPageNumber = this.paragraphs[this.paragraphs.length - 1].lastPageNumber;\n this.allPagesHeight = lastPageNumber * (pageHeight + this.pagesSpace) + this.pagesSpace;\n this.emit('pagesCountChanged', { pagesCount: lastPageNumber, pageHeight: pageHeight + 2 * this.pagesSpace });\n }\n\n getAllParagraphsHeight(): number {\n return this.paragraphs.reduce((sum, x) => sum + x.height, 0);\n }\n\n destroy(): void {\n this.removeAllListeners('pagesCountChanged');\n }\n\n updatePageVerticalData(edgeType: EdgeType, page: number): void {\n const pageVerticalData = PageHelper.getVerticalData(page, this.pagesVerticalData);\n const componentHeight = this.edges.getComponentHeight(page, edgeType);\n if (edgeType === EdgeType.Header) {\n pageVerticalData.marginTop = componentHeight > this.documentMargin.top ? componentHeight : this.documentMargin.top;\n } else {\n pageVerticalData.marginBottom = componentHeight > this.documentMargin.bottom ? componentHeight : this.documentMargin.bottom;\n }\n\n const newContentHeight = this.pageHeight - pageVerticalData.marginTop - pageVerticalData.marginBottom;\n if (newContentHeight === pageVerticalData.contentHeight) {\n return;\n }\n\n pageVerticalData.contentHeight = newContentHeight;\n this.processParagraphsProperties(0);\n }\n\n private getPreviousParagraphInfo(row: number): { lastPage: number; paragraphHeight: number; paragraphLastLine: number } {\n if (!row || !this.paragraphs.length) {\n return { lastPage: 1, paragraphHeight: 0, paragraphLastLine: -1 };\n }\n\n const prevParagraph = this.paragraphs[row - 1];\n return prevParagraph.getParagraphData();\n }\n\n private getVisiblePages(offsetTop: number, containerHeight: number): number[] {\n const visiblePages: number[] = [];\n\n let firstVisiblePage = offsetTop / (this.pageHeight + this.pagesSpace);\n if (firstVisiblePage % 1 === 0) {\n firstVisiblePage++;\n }\n\n let visiblePagesCount = containerHeight / (this.pageHeight + this.pagesSpace);\n const partialPageOnScreenPercent = Math.trunc(((visiblePagesCount % 1) + (firstVisiblePage % 1)) * 100);\n const pageSpaceHeightPercent = Math.trunc((this.pagesSpace / containerHeight) * 100);\n if (partialPageOnScreenPercent - pageSpaceHeightPercent > 100) {\n visiblePagesCount++;\n }\n\n visiblePagesCount = Math.ceil(visiblePagesCount);\n firstVisiblePage = Math.ceil(firstVisiblePage);\n const documentPagesCount = this.paragraphs[this.paragraphs.length - 1].lastPageNumber;\n if (firstVisiblePage + visiblePagesCount - 1 > documentPagesCount) {\n visiblePagesCount = documentPagesCount - firstVisiblePage + 1;\n }\n\n for (let i = 0; i < visiblePagesCount; i++) {\n visiblePages.push(firstVisiblePage + i);\n }\n\n return visiblePages;\n }\n\n private initPagesVerticalData(): void {\n if (!this.edges || (!this.edges.headersComponents.length && !this.edges.footersComponents.length)) {\n this.pagesVerticalData = [\n new PageVerticalDataModel({\n marginTop: this.documentMargin.top,\n marginBottom: this.documentMargin.bottom,\n contentHeight: this.pageHeight - this.documentMargin.top - this.documentMargin.bottom,\n pageType: PageType.Default\n })\n ];\n return;\n }\n\n const pageTypes = this.edges.getUniquePageTypes();\n this.pagesVerticalData = pageTypes.map(pageType => {\n const headerHeight = this.edges.getComponentHeightByPageType(pageType, EdgeType.Header);\n const footerHeight = this.edges.getComponentHeightByPageType(pageType, EdgeType.Footer);\n const marginTop = Math.max(headerHeight, this.documentMargin.top);\n const marginBottom = Math.max(footerHeight, this.documentMargin.bottom);\n\n return new PageVerticalDataModel({\n marginTop,\n marginBottom,\n contentHeight: this.pageHeight - marginTop - marginBottom,\n pageType\n });\n });\n }\n}\n","import { ParagraphModel } from '../../../../models/generated/paragraph.model';\n\nexport class ParagraphStyleHelper {\n static getParagraphsAtRange(paragraphs: ParagraphModel[], startIndex: number, endIndex: number): ParagraphModel[] {\n if (!paragraphs?.length) {\n return [];\n }\n\n let firstModifierIndexInRange = paragraphs.findIndex(paragraph => paragraph.insertIndex >= startIndex);\n firstModifierIndexInRange = firstModifierIndexInRange === -1 ? paragraphs.length : firstModifierIndexInRange;\n let lastModifierIndexInRange = paragraphs.findIndex(x => x.insertIndex >= endIndex);\n lastModifierIndexInRange =\n startIndex === endIndex || lastModifierIndexInRange === -1 ? firstModifierIndexInRange : lastModifierIndexInRange;\n\n return paragraphs.slice(firstModifierIndexInRange, lastModifierIndexInRange + 1);\n }\n\n static getParagraphAtIndex(paragraphs: ParagraphModel[], insertIndex: number): ParagraphModel {\n if (!paragraphs?.length) {\n return null;\n }\n\n let startIndex = 0;\n let endIndex = paragraphs.length - 1;\n while (startIndex <= endIndex) {\n const middleIndex = Math.round((startIndex + endIndex) / 2);\n const paragraph = paragraphs[middleIndex];\n\n if (paragraph.insertIndex < insertIndex) {\n startIndex = middleIndex + 1;\n } else {\n endIndex = middleIndex - 1;\n }\n }\n\n return paragraphs[startIndex];\n }\n\n static isEndOfParagraph(paragraphs: ParagraphModel[], endIndex: number): boolean {\n const paragraph = this.getParagraphAtIndex(paragraphs, endIndex);\n let paragraphIndex = paragraphs.findIndex(x => x === paragraph);\n const endOfParagraphIsParagraph = paragraph && endIndex === paragraph.insertIndex && paragraphs.length - 1 > paragraphIndex;\n if (endOfParagraphIsParagraph) {\n paragraphIndex += 1;\n }\n return paragraphs[paragraphIndex].insertIndex === endIndex + 1;\n }\n}\n","export const CHARS = [\n // eslint-disable-next-line prettier/prettier\n 48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2\n];\n","import { CHARS } from '../constants/unicode-chars.const';\n\nexport class UnicodeHelper {\n static get wordChars(): string {\n if (!this._wordChars) {\n let code = 0;\n const str: number[] = [];\n for (let i = 0; i < CHARS.length; i += 2) {\n code += CHARS[i];\n str.push(code);\n\n if (CHARS[i + 1]) {\n code += CHARS[i + 1];\n str.push(45, code);\n }\n }\n\n this._wordChars = String.fromCharCode(...str);\n }\n\n return this._wordChars;\n }\n private static _wordChars: string;\n}\n","import { ComponentRef, Type } from '@angular/core';\n\nimport { Alignment } from './constants/alignments.const';\nimport { ApplyElementStyleModel } from '../../../models/generated/apply-element-style.model';\nimport { ApplyImageStyleModel } from '../../../models/generated/apply-image-style.model';\nimport { BaseNoderComponent } from '../custom-components/shared/abstract/base.component';\nimport { BreakHelper } from '../helpers/break.helper';\nimport { BreakTypes } from './enums/break-types.enum';\nimport { ContentHelper } from '../helpers/content.helper';\nimport { ContentsInterface } from '../interfaces/contents.interface';\nimport { ContentStyleHelper } from './helpers/content-style.helper';\nimport { CUSTOM_ELEMENT_MARKER } from '../custom-components/shared/constants/custom-content-markers.const';\nimport { CustomComponentHelper } from '../custom-components/shared/helpers/custom-component.hepler';\nimport { CustomContent } from '../custom-components/shared/types/custom-content';\nimport { CustomContentService } from '../custom-components/shared/services/custom-content/custom-content.service';\nimport {\n DEFAULT_BACKGROUND_COLOR,\n DEFAULT_FONT_COLOR,\n DEFAULT_FONT_FAMILY,\n DEFAULT_FONT_SIZE,\n DEFAULT_PARAGRAPH_STYLE,\n HYPERLINK_HEADING_STYLE_ID,\n NEW_LINE_MARKUP\n} from './constants/editor.const';\nimport { DisplayToken } from './models/display-token.model';\nimport { DisplayValue } from './constants/display-values.const';\nimport { Document } from './document';\nimport { ElementDataModel } from '../custom-components/external-element/models/element-data.model';\nimport { ElementModel } from '../../../models/generated/element.model';\nimport { EventEmitting } from './base/event-emitting';\nimport { FontMetrics } from './helpers/font-metrics.helper';\nimport { FormatModel } from '../../../models/generated/format.model';\nimport { FormatStyleHelper } from './helpers/format-style.helper';\nimport { GeneralPropertiesModel } from '../execution/models/general-properties.model';\nimport { ICustomComponents } from '../custom-components/shared/interfaces/custom-components.interface';\nimport { ImageDataModel } from '../../../models/generated/image-data.model';\nimport { IndentModel } from './models/indent.model';\nimport { InsertBreakModel } from '../../../models/generated/insert-break.model';\nimport { InsertElementModel } from '../../../models/generated/insert-element.model';\nimport { InsertImageModel } from '../../../models/generated/insert-image.model';\nimport { InsertTableModel } from '../../../models/generated/insert-table.model';\nimport { InsertTabModel } from '../../../models/generated/insert-tab.model';\nimport { IToolbarStyles } from './interfaces/toolbar-styles.interface';\nimport { LineInfoModel } from './models/line-info.model';\nimport { LinkDataModel } from '../../../models/generated/link-data.model';\nimport { LinkModel } from '../../../models/generated/link.model';\nimport { NoderImageComponent } from '../custom-components/image/components/image.component';\nimport { NoderTabComponent } from '../custom-components/tab/tab.component';\nimport { NoderTableComponent } from '../custom-components/table/components/table.component';\nimport { NumberingHelper } from './helpers/numbering.helper';\nimport { NumberingLevelModel } from '../../../models/generated/numbering-level.model';\nimport { NumberingMarkerType } from './enums/numbering-marker-type.enum';\nimport { NumberingModel } from '../../../models/generated/numbering.model';\nimport { OperationsHelper } from '../operations/helpers/operations-helper.helper';\nimport { PagesWrap } from './paging/pages.wrap';\nimport { Paragraph } from './paging/paragraph';\nimport { ParagraphHelper } from './helpers/paragraph.helper';\nimport { ParagraphModel } from '../../../models/generated/paragraph.model';\nimport { ParagraphStyleHelper } from './helpers/paragraph-style.helper';\nimport { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';\nimport { Point } from './point';\nimport { Range } from './range';\nimport { ReplaceModel } from '../../../models/generated/replace.model';\nimport { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';\nimport { RestoreModel } from '../../../models/generated/restore.model';\nimport { Selection } from '../positioning/selection';\nimport { TabHelper } from '../helpers/tab.helper';\nimport { TableModel } from '../../../models/generated/table.model';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\nimport { UnicodeHelper } from './helpers/unicode.helper';\n\nexport class EditSession extends EventEmitting {\n readonly customComponents: ICustomComponents;\n\n tokenRe = new RegExp('^[' + UnicodeHelper.wordChars + '\\\\$_]+', 'g');\n\n nonTokenRe = new RegExp('^(?:[^' + UnicodeHelper.wordChars + '\\\\$_]|\\\\s])+', 'g');\n\n pagesWrap: PagesWrap;\n\n wrapData: number[][] = [[]]; // Wrap indexes for document rows\n\n wrapParagraphLine: number[] = []; // line numbers that begin the paragraphs\n\n wrapParagraphIndex: number[] = []; // symbol indexes that begin the paragraphs\n\n scrollTop = 0;\n\n set styles(styles: { [key: string]: any[] }) {\n for (let key of Object.keys(styles)) {\n if (styles[key].length === 0) {\n this._stylesMap[key] = ContentStyleHelper.getDefaultStyleValueByKey(key);\n continue;\n } else if (styles[key].length > 1 && !styles[key].every(x => x === styles[key][0])) {\n this._stylesMap[key] = typeof styles[key][0] === 'boolean' && key !== 'isBulletMarker' ? false : null;\n continue;\n }\n\n this._stylesMap[key] = styles[key][0];\n }\n\n this.signal('setStyles', this._stylesMap);\n }\n\n get stylesMap(): IToolbarStyles {\n return this._stylesMap;\n }\n private readonly _stylesMap: IToolbarStyles = {\n fontFamily: DEFAULT_FONT_FAMILY,\n fontSize: DEFAULT_FONT_SIZE,\n fontColor: DEFAULT_FONT_COLOR,\n alignment: Alignment.left,\n backgroundColor: DEFAULT_BACKGROUND_COLOR,\n highlightColor: DEFAULT_BACKGROUND_COLOR\n };\n\n set contentWidth(value: number) {\n if (!value) {\n return;\n }\n\n this._contentWidth = value;\n this.updateWrapData(0, this.document.lines.length - 1);\n }\n get contentWidth(): number {\n return this._contentWidth;\n }\n private _contentWidth: number;\n\n set cursorStyle(model: TextStyleModel) {\n if (!model) {\n return;\n }\n\n if (!this._cursorStyle) {\n this._cursorStyle = model;\n this.emit('cursorStylesChanged', this._cursorStyle);\n\n return;\n }\n\n const changes = ContentStyleHelper.getTextStyleChanges(this._cursorStyle, model);\n if (!changes) {\n return;\n }\n\n ContentStyleHelper.applyTextStyleChanges(this._cursorStyle, model, changes);\n this.emit('cursorStylesChanged', this._cursorStyle);\n }\n get cursorStyle(): TextStyleModel {\n return this._cursorStyle;\n }\n private _cursorStyle: TextStyleModel;\n\n constructor(\n public document: Document,\n public sessionId: number,\n public customContentService: CustomContentService,\n public model: ContentsInterface,\n public selection: Selection,\n public properties: GeneralPropertiesModel\n ) {\n super();\n\n const maxWidth = document.pageWidth - (document.pageMargin.left + document.pageMargin.right);\n this.customComponents = this.customContentService.generateComponents(this.model, this.sessionId, this.properties, maxWidth);\n this.setDocument();\n }\n\n destroy(): void {\n this.pagesWrap.destroy();\n }\n\n setScrollTop(value: number): void {\n if (this.scrollTop === value || isNaN(value)) {\n return;\n }\n\n this.scrollTop = value;\n this.signal('changeScrollTop', value);\n }\n\n getRowLength(row: number): number {\n if (!this.wrapData[row]) {\n return 1;\n }\n\n return this.wrapData[row].length + 1;\n }\n\n updateWrapParagraphIndex(first: number): void {\n const count = this.document.lines.length;\n if (first === 0) {\n this.wrapParagraphIndex[first] = 0;\n first++;\n }\n for (let i = first; i < count; i++) {\n this.wrapParagraphIndex[i] = this.wrapParagraphIndex[i - 1] + this.document.lines[i - 1].length + 1;\n }\n this.wrapParagraphIndex.splice(count);\n }\n\n updateWrapParagraphLine(first: number): void {\n const count = this.document.lines.length;\n if (first === 0) {\n this.wrapParagraphLine[first] = 0;\n } else {\n this.wrapParagraphLine[first] = this.wrapParagraphLine[first - 1] + this.wrapData[first - 1].length + 1;\n }\n for (let i = first + 1; i < count; i++) {\n this.wrapParagraphLine[i] = this.wrapParagraphLine[i - 1] + this.wrapData[i - 1].length + 1;\n }\n this.wrapParagraphLine.splice(count);\n }\n\n updateParagraphNumberingData(index: number): void {\n if (this.pagesWrap.paragraphs[index].numberingData.numberingId !== this.model.paragraphs[index].paragraphStyle.numberingId) {\n this.pagesWrap.paragraphs[index].numberingData = NumberingHelper.createDataModel(\n this.properties.numberings,\n this.model.paragraphs,\n index\n );\n }\n\n if (this.pagesWrap.paragraphs[index].numberingData.numberingId !== null) {\n const paragraphFormat = FormatStyleHelper.getFormatAtIndex(this.model.formats, this.model.paragraphs[index].insertIndex);\n NumberingHelper.updateMarkerData(\n this.properties,\n this.pagesWrap.paragraphs[index],\n paragraphFormat.textStyle,\n this.model.paragraphs[index].paragraphStyle\n );\n }\n }\n\n updateWrapData(firstParagraph: number, lastParagraph: number): void {\n this.updateWrapParagraphIndex(firstParagraph);\n let indexOfParagraphAfterPageBreak = this.pagesWrap.paragraphs[firstParagraph - 1]?.isEndedByPageBreak ? firstParagraph : -1;\n let firstUsedTabIndex = this.customComponents.tabs.findIndex(\n x => x.instance.insertIndex >= this.wrapParagraphIndex[firstParagraph]\n );\n for (let i = firstParagraph; i <= lastParagraph; i++) {\n this.pagesWrap.tabTokens = [];\n const currentLine = this.document.getLine(this.document.lines, i);\n const isNextLineExists = this.document.lines.length > i + 1;\n const { splits, rowInfos } = this.getSplits(\n this.model,\n currentLine,\n this.wrapParagraphIndex[i],\n this.customComponents,\n i,\n isNextLineExists\n );\n this.wrapData[i] = splits;\n if (indexOfParagraphAfterPageBreak === i) {\n rowInfos[0].isAfterPageBreak = true;\n }\n indexOfParagraphAfterPageBreak = rowInfos[rowInfos.length - 1].isEndedByPageBreak ? i + 1 : -1;\n this.pagesWrap.set(i, rowInfos, this.properties.numberings, this.model.paragraphs);\n this.updateParagraphNumberingData(i);\n firstUsedTabIndex = this.updateParagraphTabs(firstUsedTabIndex, i, currentLine.length);\n }\n\n this.pagesWrap.paragraphs[lastParagraph + 1]?.setIsAfterPageBreak(indexOfParagraphAfterPageBreak > -1);\n const count = this.document.lines.length;\n this.pagesWrap.paragraphs.splice(count);\n this.wrapData.splice(count);\n this.updateWrapParagraphLine(firstParagraph);\n this.pagesWrap.processParagraphsProperties(firstParagraph);\n }\n\n /**\n * Given a string, returns an array of the display characters, including tabs and spaces.\n */\n getDisplayTokens(model: ContentsInterface, str: string, startIndex: number, customComponents: ICustomComponents): DisplayToken[] {\n if (!str.length) {\n return this.getEmptyLineTokens(startIndex);\n }\n\n return this.getFilledLineTokens(startIndex, str, model, customComponents);\n }\n\n getRowCacheIndex(cacheArray: number[], value: number): number {\n let start = 0;\n let end = cacheArray.length - 1;\n while (start <= end) {\n const mid = (start + end) >> 1;\n const center = cacheArray[mid];\n\n if (value > center) {\n start = mid + 1;\n } else if (value < center) {\n end = mid - 1;\n } else {\n return mid;\n }\n }\n\n return start - 1;\n }\n\n /**\n * Calculates the width of the string `str` on the screen while assuming that the string starts at the first column on the screen.\n * The first position indicates the number of columns for `str` on screen.\n * The second value contains the position of the document column that this function read until.\n */\n getStringScreenWidth(str: string, maxScreenColumn?: number): number[] {\n let screenColumn = 0;\n let column: number;\n for (column = 0; column < str.length; column++) {\n screenColumn += 1;\n\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n }\n\n /**\n * Given a starting row and column, this method returns the `Range` of the first word boundary it finds.\n */\n getWordRange(row: number, column: number): Range {\n const line = this.document.getLine(this.document.lines, row);\n let inToken = false;\n if (column > 0) {\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n }\n\n if (!inToken) {\n inToken = !!line.charAt(column).match(this.tokenRe);\n }\n\n let regexp: RegExp;\n if (inToken) {\n regexp = this.tokenRe;\n } else if (/^\\s+$/.test(line.slice(column - 1, column + 1))) {\n regexp = /\\s/;\n } else {\n regexp = this.nonTokenRe;\n }\n\n let start = column;\n if (start > 0) {\n do {\n start--;\n } while (start >= 0 && line.charAt(start).match(regexp));\n\n start++;\n }\n\n let end = column;\n while (end < line.length && line.charAt(end).match(regexp)) {\n end++;\n }\n\n return new Range(new Point(row, start), new Point(row, end));\n }\n\n getDisplayLine(row: number, endColumn: number, startColumn?: number): string {\n const line = this.document.getLine(this.document.lines, row);\n\n return line.substring(startColumn || 0, endColumn || line.length);\n }\n\n removeByDocumentIndexes(startIndex: number, endIndex: number): void {\n const startParagraphPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex);\n const endParagraphPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, endIndex);\n this.remove(new Range(startParagraphPosition, endParagraphPosition));\n }\n\n insertTextByDocumentIndex(index: number, text: string, style?: TextStyleModel): Point {\n const paragraphPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, index);\n return this.insertText(paragraphPosition, text, style);\n }\n\n insertElementByDocumentIndex(insertElement: InsertElementModel): Point {\n const elementPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, insertElement.element.insertIndex);\n return this.insertElement(elementPosition, insertElement.element);\n }\n\n insertBreakByDocumentIndex(insertElement: InsertBreakModel): Point {\n const elementPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, insertElement.insertIndex);\n return this.insertBreak(elementPosition, insertElement.breakType as BreakTypes);\n }\n\n insertTabByDocumentIndex(insertElement: InsertTabModel): Point {\n const elementPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, insertElement.insertIndex);\n return this.insertTab(elementPosition);\n }\n\n insertImageByDocumentIndex(insertElement: InsertImageModel): Point {\n const elementPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, insertElement.insertIndex);\n return this.insertImage(elementPosition, insertElement.imageData);\n }\n\n insertTableByDocumentIndex(insertElement: InsertTableModel): Point {\n const elementPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, insertElement.insertIndex);\n return this.insertTable(elementPosition, insertElement);\n }\n\n applyTextStyle(startIndex: number, endIndex: number, textStyle: TextStyleModel): void {\n this.cursorStyle = new TextStyleModel(textStyle);\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, endIndex).row;\n OperationsHelper.applyTextStyle(this.model, startIndex, endIndex, textStyle);\n this.updateWrapData(startParagraph, endParagraph);\n this.setStyle(textStyle);\n }\n\n applyParagraphStyle(startIndex: number, endIndex: number, paragraphStyle: ParagraphStyleModel): void {\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, endIndex).row;\n OperationsHelper.applyParagraphStyle(this.model, startIndex, endIndex, paragraphStyle);\n this.updateWrapData(startParagraph, endParagraph);\n this.setStyle(paragraphStyle);\n }\n\n applyElementStyle(model: ApplyElementStyleModel): void {\n OperationsHelper.applyElementStyle(this.model, model);\n const imageComponentRef = this.customComponents.customElements.find(x => x.instance.insertIndex === model.insertIndex);\n imageComponentRef.instance.initialize();\n const paragraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, model.insertIndex).row;\n this.updateWrapData(paragraph, paragraph);\n }\n\n addNumbering(levels: NumberingLevelModel[], startIndex: number, endIndex: number): void {\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, endIndex).row;\n OperationsHelper.addNumbering(this.model, this.properties.numberings, startIndex, endIndex, levels);\n for (let i = startParagraph; i <= endParagraph; i++) {\n if (this.pagesWrap.paragraphs[i].numberingData.numberingId !== null) {\n this.updateNumberingsDataOnChange(endParagraph);\n break;\n }\n }\n\n this.updateWrapData(startParagraph, endParagraph);\n this.setNumberingStyle(startIndex, endIndex);\n }\n\n removeNumberings(startIndex: number, endIndex: number): void {\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, endIndex).row;\n OperationsHelper.removeNumberings(this.model, this.properties.numberings, startIndex, endIndex);\n for (let i = startParagraph; i <= endParagraph; i++) {\n if (this.pagesWrap.paragraphs[i].numberingData.numberingId !== null) {\n this.updateNumberingsDataOnChange(endParagraph);\n break;\n }\n }\n\n this.updateWrapData(startParagraph, endParagraph);\n this.setNumberingStyle(startIndex, endIndex);\n }\n\n restoreNumberings(paragraphs: ParagraphModel[], numberings: NumberingModel[]): void {\n const startIndex = paragraphs[0].insertIndex;\n const endIndex = paragraphs[paragraphs.length - 1].insertIndex;\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endPosition = ContentHelper.documentIndexToParagraphWithOffset(this.wrapParagraphIndex, this.document.lines, endIndex);\n OperationsHelper.restoreNumberings(this.model, this.properties.numberings, paragraphs, numberings);\n for (const paragraph of paragraphs) {\n if (paragraph.paragraphStyle.numberingId !== null) {\n this.updateNumberingsDataOnChange(endPosition.row);\n break;\n }\n }\n\n this.updateWrapData(startParagraph, endPosition.row);\n this.selection.placeCursor(endPosition);\n this.setNumberingStyle(startIndex, endIndex);\n }\n\n applyImageStyle(applyImage: ApplyImageStyleModel): void {\n const imageComponentRef = this.customComponents.images.find(x => x.instance.insertIndex === applyImage.insertIndex);\n imageComponentRef.instance.resize({ width: applyImage.width, height: applyImage.height });\n OperationsHelper.applyImageStyle(this.model, applyImage);\n const start = this.document.indexToPosition(applyImage.insertIndex, 0);\n this.updateWrapData(start.row, this.document.lines.length - 1);\n }\n\n restoreTextStyles(formats: FormatModel[]): void {\n const startIndex = formats[0].startIndex;\n const endIndex = formats[formats.length - 1].endIndex;\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endPosition = ContentHelper.documentIndexToParagraphWithOffset(this.wrapParagraphIndex, this.document.lines, endIndex);\n OperationsHelper.restoreTextStyles(this.model, formats);\n this.updateWrapData(startParagraph, endPosition.row);\n this.selection.placeCursor(endPosition);\n this.processSelectionStyles();\n }\n\n restoreParagraphStyles(paragraphs: ParagraphModel[]): void {\n const startIndex = paragraphs[0].insertIndex;\n const endIndex = paragraphs[paragraphs.length - 1].insertIndex;\n const startParagraph = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, startIndex).row;\n const endPosition = ContentHelper.documentIndexToParagraphWithOffset(this.wrapParagraphIndex, this.document.lines, endIndex);\n OperationsHelper.restoreParagraphStyles(this.model, paragraphs);\n this.updateWrapData(startParagraph, endPosition.row);\n this.selection.placeCursor(endPosition);\n this.processSelectionStyles();\n }\n\n setTextStyle(textStyle: TextStyleModel): void {\n this.cursorStyle = new TextStyleModel(textStyle);\n this.setStyle(textStyle);\n }\n\n /**\n * Removes the `range` from the document.\n * If `range` is empty, this function returns the unmodified value of `range.start`.\n */\n remove(range: Range): void {\n const startIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, range.start);\n const endIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, range.end) - 1;\n\n this.document.removeRange(range);\n\n CustomComponentHelper.applyRemovingComponents(this.customComponents.tables, startIndex, endIndex);\n CustomComponentHelper.applyRemovingComponents(this.customComponents.images, startIndex, endIndex);\n CustomComponentHelper.applyRemovingComponents(this.customComponents.customElements, startIndex, endIndex);\n CustomComponentHelper.applyRemovingComponents(this.customComponents.tabs, startIndex, endIndex);\n\n OperationsHelper.delete(this.model, startIndex, endIndex);\n\n this.selection.placeCursor(range.start);\n this.updateInternalDataOnDeleteText(range.start.row, range.end.row);\n\n this.processSelectionStyles();\n }\n\n replace(model: ReplaceModel): Point {\n this.removeByDocumentIndexes(model.delete.startIndex, model.delete.endIndex + 1);\n let endPoint: Point;\n if (model.insertText) {\n endPoint = this.insertTextByDocumentIndex(model.insertText.insertIndex, model.insertText.text);\n } else if (model.insertElement) {\n endPoint = this.insertElementByDocumentIndex(model.insertElement);\n } else if (model.insertBreak) {\n endPoint = this.insertBreakByDocumentIndex(model.insertBreak);\n } else if (model.insertTab) {\n endPoint = this.insertTabByDocumentIndex(model.insertTab);\n } else if (model.insertImage) {\n endPoint = this.insertImageByDocumentIndex(model.insertImage);\n } else if (model.insertTable) {\n endPoint = this.insertTableByDocumentIndex(model.insertTable);\n }\n\n return endPoint;\n }\n\n insertText(position: Point, text: string, cursorStyle?: TextStyleModel): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n if (cursorStyle) {\n OperationsHelper.insertStyledText(this.model, text, insertIndex, cursorStyle);\n } else {\n OperationsHelper.insertText(this.model, text, insertIndex);\n }\n\n const endPoint = this.document.insertText(position, text);\n this.updateInternalDataOnInsertText(position.row, endPoint.row);\n this.selection.placeCursor(endPoint);\n return endPoint;\n }\n\n insertElement(position: Point, element: ElementDataModel): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n const insertElement = new InsertElementModel({ element: new ElementModel({ insertIndex, ...element }) });\n OperationsHelper.insertElement(this.model, insertElement);\n\n const model = this.model.elements.find(x => x.insertIndex === insertIndex);\n const type = this.customContentService.findComponentType(model.type);\n this.addComponent(this.customComponents.customElements, model, type);\n\n const endPoint = this.document.insertText(position, CUSTOM_ELEMENT_MARKER);\n this.updateWrapData(position.row, endPoint.row);\n this.selection.placeCursor(endPoint);\n return endPoint;\n }\n\n insertBreak(position: Point, breakType: BreakTypes): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n const isOnNewParagraph =\n breakType === BreakTypes.Page &&\n BreakHelper.getBreakType(this.model, CUSTOM_ELEMENT_MARKER, insertIndex - 1) !== BreakTypes.Page;\n const text = isOnNewParagraph ? `${NEW_LINE_MARKUP}${CUSTOM_ELEMENT_MARKER}` : CUSTOM_ELEMENT_MARKER;\n OperationsHelper.insertBreak(this.model, text, insertIndex, breakType);\n\n const endPoint = this.document.insertText(position, text);\n if (isOnNewParagraph) {\n this.updateInternalDataOnInsertText(position.row, endPoint.row);\n }\n this.updateWrapData(position.row, endPoint.row);\n const point = this.document.getPositionAfterBreak(endPoint, breakType);\n this.selection.placeCursor(point);\n\n return endPoint;\n }\n\n insertTab(position: Point): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n OperationsHelper.insertTab(this.model, insertIndex);\n\n const model = this.model.tabs.find(x => x.insertIndex === insertIndex);\n this.addComponent(this.customComponents.tabs, model, NoderTabComponent);\n\n const endPoint = this.document.insertText(position, CUSTOM_ELEMENT_MARKER);\n this.updateWrapData(position.row, position.row);\n this.selection.placeCursor(endPoint);\n return endPoint;\n }\n\n insertImage(position: Point, imageData: ImageDataModel): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n const adjustedImage = this.getImageWithAllowedSize(imageData, this.contentWidth);\n OperationsHelper.insertImage(this.model, insertIndex, adjustedImage);\n\n const model = this.model.images.find(x => x.insertIndex === insertIndex);\n this.addComponent(this.customComponents.images, model, NoderImageComponent);\n\n const endPoint = this.document.insertText(position, CUSTOM_ELEMENT_MARKER);\n this.updateWrapData(position.row, position.row);\n this.selection.placeCursor(endPoint);\n\n return endPoint;\n }\n\n insertLink(position: Point, linkData: LinkDataModel): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n const linkStyle = new TextStyleModel({ headingStyleId: HYPERLINK_HEADING_STYLE_ID, underline: true });\n OperationsHelper.insertLink(this.model, linkData.text, linkData.link, insertIndex, linkStyle);\n\n const endPoint = this.document.insertText(position, linkData.text);\n this.updateWrapData(position.row, position.row);\n this.selection.placeCursor(endPoint);\n return endPoint;\n }\n\n insertTable(position: Point, tableModel: InsertTableModel): Point {\n const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, position);\n\n OperationsHelper.insertTable(this.model, insertIndex, tableModel, this.pagesWrap.contentWidth);\n\n const model = this.model.tables.find(x => x.insertIndex === tableModel.insertTableIndex);\n this.addComponent(this.customComponents.tables, model, NoderTableComponent);\n\n const endPoint = this.document.insertText(position, tableModel.content);\n this.updateInternalDataOnInsertText(position.row, endPoint.row);\n this.selection.placeCursor(endPoint);\n\n return endPoint;\n }\n\n addComponent<T extends BaseNoderComponent>(customElements: ComponentRef<T>[], model: CustomContent, componentType: Type<T>) {\n const customElement = this.customContentService.componentService.generateComponent(componentType, {\n content: model,\n sessionId: this.sessionId,\n properties: this.properties,\n contentWidth: this.contentWidth\n });\n const newElementPosition = customElements.findIndex(x => x.instance.insertIndex > model.insertIndex);\n if (newElementPosition >= 0) {\n customElements.splice(newElementPosition, 0, customElement);\n } else {\n customElements.push(customElement);\n }\n }\n\n setStyle(style: TextStyleModel | ParagraphStyleModel): void {\n for (const key of Object.keys(style)) {\n this._stylesMap[key] = style[key];\n }\n\n this.signal('setStyles', this._stylesMap);\n }\n\n setNumberingStyle(startIndex: number, endIndex: number): void {\n const styles = {\n alignment: [this._stylesMap.alignment],\n backgroundColor: [this._stylesMap.backgroundColor],\n highlightColor: [this._stylesMap.highlightColor],\n fontColor: [this._stylesMap.fontColor],\n fontFamily: [this._stylesMap.fontFamily],\n fontSize: [this._stylesMap.fontSize],\n italic: [this._stylesMap.italic],\n bold: [this._stylesMap.bold],\n strikethrough: [this._stylesMap.strikethrough],\n underline: [this._stylesMap.underline],\n spaceBefore: [this._stylesMap.spaceBefore],\n spaceAfter: [this._stylesMap.spaceAfter],\n indentLeft: [this._stylesMap.indentLeft],\n indentRight: [this._stylesMap.indentRight],\n isBulletMarker: [],\n numberingLevelsStyles: []\n };\n this.updateNumberingStyles(styles, startIndex, endIndex);\n this.styles = styles;\n }\n\n restore(model: RestoreModel): void {\n const paragraphPosition = ContentHelper.documentIndexToParagraphIndex(this.wrapParagraphIndex, model.startIndex);\n if (model.startIndex !== model.endIndex) {\n this.removeByDocumentIndexes(model.startIndex, model.endIndex);\n }\n\n OperationsHelper.restore(this.model, model);\n\n const restoreEndIndex = model.startIndex + model.text.length;\n this.restoreComponents(this.model.tables, this.customComponents.tables, NoderTableComponent, model.startIndex, restoreEndIndex);\n this.restoreComponents(this.model.images, this.customComponents.images, NoderImageComponent, model.startIndex, restoreEndIndex);\n this.restoreComponents(this.model.tabs, this.customComponents.tabs, NoderTabComponent, model.startIndex, restoreEndIndex);\n this.restoreElementComponents(this.model.elements, model.startIndex, restoreEndIndex);\n\n const endPoint = this.document.insertText(paragraphPosition, model.text);\n this.updateInternalDataOnInsertText(paragraphPosition.row, endPoint.row);\n this.selection.placeCursor(endPoint);\n this.processSelectionStyles();\n }\n\n restoreComponents<T extends BaseNoderComponent>(\n models: CustomContent[],\n components: ComponentRef<BaseNoderComponent>[],\n componentType: Type<T>,\n restoreIndex: number,\n restoreEndIndex: number\n ): void {\n for (const model of models) {\n if (model.insertIndex < restoreIndex) {\n continue;\n } else if (model.insertIndex >= restoreEndIndex) {\n break;\n }\n this.addComponent(components, model, componentType);\n }\n }\n\n restoreElementComponents(elements: ElementModel[], restoreIndex: number, restoreEndIndex: number): void {\n for (const model of elements) {\n if (model.insertIndex < restoreIndex) {\n continue;\n } else if (model.insertIndex >= restoreEndIndex) {\n break;\n }\n const type = this.customContentService.findComponentType(model.type);\n this.addComponent(this.customComponents.customElements, model, type);\n }\n }\n\n processSelectionStyles(): void {\n const { startIndex, endIndex } = this.getRangeIndexes(this.selection.range);\n\n const styles = {\n alignment: [],\n backgroundColor: [],\n highlightColor: [],\n fontColor: [],\n fontFamily: [],\n fontSize: [],\n italic: [],\n bold: [],\n strikethrough: [],\n underline: [],\n spaceBefore: [],\n spaceAfter: [],\n indentLeft: [],\n indentRight: [],\n isBulletMarker: [],\n numberingLevelsStyles: []\n };\n this.updateParagraphStyles(styles, startIndex, endIndex);\n this.updateNumberingStyles(styles, startIndex, endIndex);\n const format = this.updateTextStyles(styles, startIndex, endIndex);\n this.styles = styles;\n\n if (format) {\n const newTextStyle = Object.assign({}, format.textStyle, this.cursorStyle);\n this.cursorStyle = new TextStyleModel(newTextStyle);\n this.setStyle(this.cursorStyle);\n } else {\n this.clearCursorStyle();\n }\n }\n\n getLinkModel(cursor: Point): LinkModel {\n const { startIndex, endIndex } = this.getRangeIndexes(new Range(cursor, cursor));\n return this.model.links.find(x => x.insertIndex <= startIndex + 1 && x.endIndex > endIndex);\n }\n\n insertTableRows(insertIndex: number, rowsCount: number, targetIndex: number, inheritIndex: number): void {\n OperationsHelper.insertTableRows(this.model, insertIndex, rowsCount, targetIndex, inheritIndex);\n const tableComponent = this.customComponents.tables.find(x => x.instance.insertIndex === insertIndex);\n tableComponent.instance.updateTable();\n }\n\n insertTableColumns(insertIndex: number, columnsCount: number, targetIndex: number, inheritIndex: number): void {\n OperationsHelper.insertTableColumns(this.model, insertIndex, columnsCount, targetIndex, inheritIndex, this.pagesWrap.contentWidth);\n const tableComponent = this.customComponents.tables.find(x => x.instance.insertIndex === insertIndex);\n tableComponent.instance.updateTable();\n }\n\n removeTableRows(insertIndex: number, startIndex: number, endIndex: number): void {\n OperationsHelper.removeTableRows(this.model, insertIndex, startIndex, endIndex);\n const tableComponent = this.customComponents.tables.find(x => x.instance.insertIndex === insertIndex);\n tableComponent.instance.updateTable();\n }\n\n removeTableColumns(insertIndex: number, startIndex: number, endIndex: number): void {\n OperationsHelper.removeTableColumns(this.model, insertIndex, startIndex, endIndex, this.pagesWrap.contentWidth);\n const tableComponent = this.customComponents.tables.find(x => x.instance.insertIndex === insertIndex);\n tableComponent.instance.updateTable();\n }\n\n resizeTableColumns(resizeTableColumns: ResizeTableColumnsModel): void {\n OperationsHelper.resizeTableColumns(this.model, resizeTableColumns);\n const tableComponent = this.customComponents.tables.find(x => x.instance.insertIndex === resizeTableColumns.insertIndex);\n tableComponent.instance.updateTable();\n }\n\n restoreTable(insertIndex: number, table: TableModel): void {\n const oldTable = JSON.parse(JSON.stringify(table)) as TableModel;\n OperationsHelper.restoreTable(this.model, insertIndex, oldTable);\n const tableComponent = this.customComponents.tables.find(x => x.instance.insertIndex === insertIndex);\n tableComponent.instance.updateTable();\n }\n\n private updateParagraphTabs(tabIndex: number, paragraphIndex: number, length: number): number {\n const paragraphLastIndex = this.wrapParagraphIndex[paragraphIndex] + length;\n if (\n tabIndex === -1 ||\n tabIndex >= this.customComponents.tabs.length ||\n this.customComponents.tabs[tabIndex].instance.insertIndex > paragraphLastIndex\n ) {\n return tabIndex;\n }\n\n const startIndex = tabIndex;\n while (this.customComponents.tabs[tabIndex] && this.customComponents.tabs[tabIndex].instance.insertIndex <= paragraphLastIndex) {\n this.customComponents.tabs[tabIndex].instance.width = this.pagesWrap.tabTokens[tabIndex - startIndex].width;\n this.customComponents.tabs[tabIndex].instance.height = this.pagesWrap.tabTokens[tabIndex - startIndex].font;\n tabIndex++;\n }\n\n return tabIndex;\n }\n\n private getRangeIndexes(range: Range): { startIndex: number; endIndex: number } {\n let startIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, range.start);\n let endIndex = ContentHelper.paragraphPositionToDocumentIndex(this.wrapParagraphIndex, range.end);\n const prevNewLineSymbol = this.document.isNewLineSymbol(endIndex - 1);\n if (!prevNewLineSymbol) {\n if (endIndex > startIndex) {\n endIndex--;\n } else if (startIndex === endIndex && startIndex > 0) {\n startIndex--;\n endIndex--;\n }\n }\n\n return { startIndex, endIndex };\n }\n\n private updateInternalDataOnInsertText(startRow: number, endRow: number): void {\n const length = endRow - startRow;\n const newParagraphs: Paragraph[] = Array(length);\n const newWrapData: number[][] = Array(length);\n for (let i = 0; i < length; i++) {\n newWrapData[i] = [];\n }\n\n this.wrapData.splice(startRow, 0, ...newWrapData);\n this.pagesWrap.paragraphs.splice(startRow, 0, ...newParagraphs);\n if (length) {\n this.updateNumberingsDataOnChange(endRow);\n }\n\n this.updateWrapData(startRow, endRow);\n }\n\n private updateInternalDataOnDeleteText(startRow: number, endRow: number): void {\n const length = endRow - startRow;\n\n this.wrapData.splice(startRow, length);\n this.pagesWrap.remove(startRow, length);\n if (length) {\n this.updateNumberingsDataOnChange(startRow);\n }\n\n this.updateWrapData(startRow, startRow);\n }\n\n private updateNumberingsDataOnChange(index: number): void {\n for (let i = index; i < this.pagesWrap.paragraphs.length; i++) {\n if (this.model.paragraphs[i].paragraphStyle.numberingId !== null) {\n this.pagesWrap.paragraphs[i].numberingData = NumberingHelper.createDataModel(\n this.properties.numberings,\n this.model.paragraphs,\n i\n );\n const paragraphFormat = FormatStyleHelper.getFormatAtIndex(this.model.formats, this.model.paragraphs[i].insertIndex);\n NumberingHelper.updateMarkerData(\n this.properties,\n this.pagesWrap.paragraphs[i],\n paragraphFormat.textStyle,\n this.model.paragraphs[i].paragraphStyle\n );\n }\n }\n }\n\n /**\n * Computes wrap index based on max row width\n */\n private computeWrapIndex(displayTokens: DisplayToken[]): number {\n if (!displayTokens[0]) {\n return 0;\n }\n\n if (displayTokens[0].isTable || (displayTokens[0].breaksLine && displayTokens.length === 1)) {\n return 1;\n }\n\n const indent =\n displayTokens[0].indentLeft +\n displayTokens[0].indentRight +\n displayTokens[0].indentFirstLine -\n displayTokens[0].indentHanging || 0;\n const maxRowWidth = (this.pagesWrap.contentWidth || this.contentWidth) - indent;\n let sum = 0;\n for (let i = 0; i < displayTokens.length; i++) {\n if (displayTokens[i].isTab) {\n displayTokens[i].width = TabHelper.calculateTabWidth(sum, this.properties.defaultTabWidth);\n }\n\n sum += displayTokens[i].width;\n if (i > 0 && (sum >= maxRowWidth || displayTokens[i - 1].breaksLine)) {\n return i;\n }\n\n if (displayTokens[i].isLineBreak) {\n return i + 1;\n }\n\n if (i === displayTokens.length - 1 && displayTokens[i].isPageBreak) {\n return i + 1;\n }\n }\n\n return 0;\n }\n\n private computeWrapSplit(tokens: DisplayToken[], wrapLimit: number): number | null {\n if (!tokens.length || tokens.length <= wrapLimit) {\n return null;\n }\n\n // If there is a space or tab at this split position, then making\n // a split is simple.\n if (\n wrapLimit === 0 ||\n tokens[wrapLimit].displayValue === DisplayValue.customContent ||\n (this.isWhiteSpace(tokens[wrapLimit - 1]) && this.isWhiteSpace(tokens[wrapLimit]))\n ) {\n return wrapLimit;\n }\n\n return this.calculateSplit(wrapLimit, tokens);\n }\n\n private getSplits(\n model: ContentsInterface,\n line: string,\n startIndex: number,\n customComponents: ICustomComponents,\n paragraphIndex: number,\n isNextLineExists: boolean\n ): { splits: number[]; rowInfos: LineInfoModel[] } {\n const strTokens = this.getDisplayTokens(model, line, startIndex, customComponents);\n if (!strTokens.length) {\n const defaultRowInfo = new LineInfoModel({\n height: (this.stylesMap.fontSize * 4) / 3,\n width: 0,\n align: DEFAULT_PARAGRAPH_STYLE.alignment,\n indent: new IndentModel(\n DEFAULT_PARAGRAPH_STYLE.indentFirstLine,\n DEFAULT_PARAGRAPH_STYLE.indentHanging,\n DEFAULT_PARAGRAPH_STYLE.indentLeft,\n DEFAULT_PARAGRAPH_STYLE.indentRight\n ),\n offsetAfter: DEFAULT_PARAGRAPH_STYLE.spaceAfter,\n offsetBefore: DEFAULT_PARAGRAPH_STYLE.spaceBefore,\n lineSpacing: DEFAULT_PARAGRAPH_STYLE.lineSpacing,\n isAfterPageBreak: false,\n isEndedByPageBreak: false,\n backgroundColor: DEFAULT_PARAGRAPH_STYLE.backgroundColor\n });\n\n return { splits: [], rowInfos: [defaultRowInfo] };\n }\n\n const splits: number[] = [];\n const rowInfos: LineInfoModel[] = [];\n\n let prevToken: DisplayToken;\n let index = -1;\n let initial = line;\n while (index) {\n initial = initial.slice(index > 0 ? index : 0);\n const tokens = strTokens.slice(line.length - initial.length);\n if (!tokens.length) {\n tokens.push(...this.getEmptyLineTokens(startIndex + index));\n }\n\n let wrapLimit = this.computeWrapIndex(tokens);\n if (tokens[tokens.length - 1].isPageBreak && wrapLimit === tokens.length && isNextLineExists) {\n wrapLimit = 0;\n }\n const wrapSplit =\n tokens[wrapLimit - 1]?.breaksLine || tokens[wrapLimit - 1]?.isTable ? wrapLimit : this.computeWrapSplit(tokens, wrapLimit);\n const wrapTokens = tokens.slice(0, wrapSplit || undefined);\n\n if (wrapTokens.length) {\n prevToken = wrapTokens[wrapTokens.length - 1];\n }\n\n const isAfterPageBreak = !rowInfos.length ? false : rowInfos[rowInfos.length - 1].isEndedByPageBreak;\n const lineInfo = this.getLineInfoFromToken(prevToken, wrapTokens[0], wrapTokens, isAfterPageBreak);\n lineInfo.backgroundColor = model.paragraphs[paragraphIndex].paragraphStyle.backgroundColor;\n rowInfos.push(lineInfo);\n\n if (!wrapLimit) {\n break;\n }\n\n index = wrapSplit;\n const splitsLength = splits.length;\n const splitIndex = splitsLength ? index + splits[splitsLength - 1] : index;\n splits.push(splitIndex);\n }\n\n this.pagesWrap.tabTokens.push(...strTokens.filter(x => x.isTab));\n\n ParagraphHelper.applyParagraphIndentsToLines(rowInfos, paragraphIndex, model.paragraphs);\n return { splits, rowInfos };\n }\n\n private setDocument(): void {\n const pageMargin = this.document.pageMargin;\n\n this.pagesWrap = new PagesWrap(\n this.document.pagesSpace,\n pageMargin,\n this.document.pageWidth,\n this.document.pageHeight,\n this.customComponents.edges\n );\n }\n\n private clearCursorStyle(): void {\n this._cursorStyle = null;\n }\n\n private getEmptyLineTokens(startIndex: number): DisplayToken[] {\n const storedFormat = FormatStyleHelper.getFormatAtIndex(this.model.formats, startIndex);\n if (!storedFormat) {\n return [];\n }\n\n const lineInfo = this.getLineInfoByBreakModifier(startIndex);\n const size = FontMetrics.measureCharSize('EMPTY_LINE', ContentStyleHelper.getFontStylesString(storedFormat.textStyle));\n size.width = 3;\n return [\n new DisplayToken({\n ...size,\n displayValue: DisplayValue.emptyLine,\n align: lineInfo.align,\n indentFirstLine: lineInfo.indent.firstLine,\n indentHanging: lineInfo.indent.hanging,\n indentLeft: lineInfo.indent.left,\n indentRight: lineInfo.indent.right,\n indentBefore: lineInfo.offsetBefore,\n indentAfter: lineInfo.offsetAfter,\n isPageBreak: false,\n isLineBreak: false,\n isTab: false,\n lineSpacing: lineInfo.lineSpacing\n })\n ];\n }\n\n private getFilledLineTokens(\n startIndex: number,\n line: string,\n model: ContentsInterface,\n customComponents: ICustomComponents\n ): DisplayToken[] {\n const lineInfo = this.getLineInfoByBreakModifier(startIndex + line.length);\n const tokens: DisplayToken[] = [];\n let characters: DisplayToken[] = [];\n let format = FormatStyleHelper.getFormatAtIndex(model.formats, startIndex);\n let prevFormat: FormatModel = null;\n let prevCharCode: number = null;\n let prevFontString: string = null;\n let prevChar: string = null;\n let fontString = ContentStyleHelper.getFontStylesString(format?.textStyle);\n let symbolChange = false;\n for (let i = 0; i < line.length; i++) {\n const char = line[i];\n const size = FontMetrics.measureCharSize(char, fontString);\n const customComponent = this.customContentService.getComponent(customComponents, char, startIndex);\n const breakType = BreakHelper.getBreakType(model, char, startIndex);\n\n if (customComponent && !breakType) {\n const token = this.customContentService.getTokenFromComponent(\n customComponent,\n lineInfo,\n DisplayValue.customContent,\n i === 0,\n size\n );\n tokens.push(token);\n\n prevCharCode = -1;\n prevChar = '';\n characters = [];\n } else {\n const charCode = char.charCodeAt(0);\n const displayValue = this.getDisplayValue(charCode);\n const isFirstCharacter = i === 0;\n const token = new DisplayToken({\n ...size,\n displayValue,\n align: lineInfo.align,\n indentFirstLine: isFirstCharacter ? lineInfo.indent.firstLine : DEFAULT_PARAGRAPH_STYLE.indentFirstLine,\n indentHanging: isFirstCharacter ? lineInfo.indent.hanging : DEFAULT_PARAGRAPH_STYLE.indentHanging,\n indentLeft: lineInfo.indent.left,\n indentRight: lineInfo.indent.right,\n indentBefore: lineInfo.offsetBefore,\n indentAfter: lineInfo.offsetAfter,\n lineSpacing: lineInfo.lineSpacing,\n isPageBreak: breakType === BreakTypes.Page,\n isLineBreak: breakType === BreakTypes.TextWrapping,\n isTab: false\n });\n\n tokens.push(token);\n\n if (\n charCode !== prevCharCode ||\n !prevFormat ||\n !FormatStyleHelper.areSameTextStyles(format?.textStyle, prevFormat?.textStyle)\n ) {\n symbolChange = true;\n } else if (i === line.length - 1) {\n characters.push(token);\n symbolChange = true;\n } else {\n characters.push(token);\n }\n\n if (characters.length > 1 && symbolChange) {\n this.processCharSizes(prevChar, prevFontString, characters);\n characters = [token];\n symbolChange = false;\n } else if (symbolChange) {\n characters = [token];\n }\n\n prevCharCode = charCode;\n prevChar = char;\n }\n\n prevFormat = format;\n prevFontString = fontString;\n startIndex++;\n\n if (startIndex > format?.endIndex) {\n format = FormatStyleHelper.getFormatAtIndex(model.formats, startIndex);\n fontString = ContentStyleHelper.getFontStylesString(format?.textStyle);\n }\n }\n\n return tokens;\n }\n\n private processCharSizes(prevChar: string, prevFontString: string, characters: DisplayToken[]): void {\n const newSize = FontMetrics.measureCharSize(prevChar, prevFontString);\n for (let item of characters) {\n Object.assign(item, newSize);\n }\n }\n\n private calculateSplit(index: number, tokens: DisplayToken[]): number {\n for (let i = index; i >= 0; i--) {\n if (this.isWhiteSpace(tokens[i]) || tokens[i].displayValue === DisplayValue.customContent) {\n return i + 1;\n }\n }\n return index;\n }\n\n private isWhiteSpace(token: DisplayToken): boolean {\n return [DisplayValue.space, DisplayValue.emptyLine].includes(token.displayValue);\n }\n\n private getLineInfoFromToken(\n prevToken: DisplayToken,\n firstWrapToken: DisplayToken,\n wrapTokens: DisplayToken[],\n isAfterPageBreak: boolean\n ): LineInfoModel {\n const info = new LineInfoModel({\n width: 0,\n height: 0,\n align: prevToken.align,\n indent: new IndentModel(prevToken.indentFirstLine, prevToken.indentHanging, prevToken.indentLeft, prevToken.indentRight),\n offsetBefore: prevToken.indentBefore,\n offsetAfter: prevToken.indentAfter,\n lineSpacing: prevToken.lineSpacing,\n isAfterPageBreak,\n isEndedByPageBreak: prevToken.isPageBreak\n });\n\n if (firstWrapToken) {\n info.align = firstWrapToken.align;\n info.indent.firstLine = firstWrapToken.indentFirstLine;\n info.indent.hanging = firstWrapToken.indentHanging;\n info.indent.left = firstWrapToken.indentLeft;\n info.indent.right = firstWrapToken.indentRight;\n info.offsetBefore = firstWrapToken.indentBefore;\n info.offsetAfter = firstWrapToken.indentAfter;\n info.lineSpacing = firstWrapToken.lineSpacing;\n }\n\n let fontSize = 0;\n let ascent = 0;\n let descent = 0;\n const tokens = isAfterPageBreak && !wrapTokens.length ? [prevToken] : wrapTokens;\n for (const wrapToken of tokens) {\n if (info.height < wrapToken.height) {\n info.height = wrapToken.height;\n }\n\n if (fontSize < wrapToken.font && wrapToken.displayValue !== DisplayValue.customContent) {\n fontSize = wrapToken.font;\n ascent = wrapToken.ascent;\n descent = wrapToken.descent;\n }\n\n info.width += wrapToken.width;\n }\n\n info.height = info.height || 18;\n if (info.lineSpacing > 1) {\n info.offsetAfter = (ascent + descent) * (info.lineSpacing - 1);\n } else if (ascent + descent === info.height) {\n info.height = info.height * info.lineSpacing;\n }\n\n return info;\n }\n\n private getDisplayValue(charCode: number): number {\n if (charCode === 32) {\n return DisplayValue.space;\n }\n\n if ((charCode > 39 && charCode < 48) || (charCode > 57 && charCode < 64)) {\n return DisplayValue.punctuation;\n }\n\n return DisplayValue.char;\n }\n\n private getLineInfoByBreakModifier(index: number): LineInfoModel {\n const paragraph = ParagraphStyleHelper.getParagraphAtIndex(this.model.paragraphs, index);\n if (!paragraph) {\n return new LineInfoModel({\n align: DEFAULT_PARAGRAPH_STYLE.alignment,\n indent: new IndentModel(\n DEFAULT_PARAGRAPH_STYLE.indentFirstLine,\n DEFAULT_PARAGRAPH_STYLE.indentHanging,\n DEFAULT_PARAGRAPH_STYLE.indentLeft,\n DEFAULT_PARAGRAPH_STYLE.indentRight\n ),\n offsetBefore: DEFAULT_PARAGRAPH_STYLE.spaceBefore,\n offsetAfter: DEFAULT_PARAGRAPH_STYLE.spaceAfter,\n lineSpacing: DEFAULT_PARAGRAPH_STYLE.lineSpacing\n });\n }\n\n const indentLeft = this.getParagraphIndentLeft(paragraph);\n const indentHanging = paragraph.paragraphStyle.numberingId === null ? paragraph.paragraphStyle.indentHanging : 0;\n\n return new LineInfoModel({\n align: paragraph.paragraphStyle.alignment ?? DEFAULT_PARAGRAPH_STYLE.alignment,\n indent: new IndentModel(\n paragraph.paragraphStyle.indentFirstLine ?? DEFAULT_PARAGRAPH_STYLE.indentFirstLine,\n indentHanging ?? DEFAULT_PARAGRAPH_STYLE.indentHanging,\n indentLeft ?? DEFAULT_PARAGRAPH_STYLE.indentLeft,\n paragraph.paragraphStyle.indentRight ?? DEFAULT_PARAGRAPH_STYLE.indentRight\n ),\n offsetBefore: DEFAULT_PARAGRAPH_STYLE.spaceBefore,\n offsetAfter: DEFAULT_PARAGRAPH_STYLE.spaceAfter,\n lineSpacing: paragraph.paragraphStyle.lineSpacing ?? DEFAULT_PARAGRAPH_STYLE.lineSpacing\n });\n }\n\n private getParagraphIndentLeft(paragraph: ParagraphModel): number {\n let paragraphIndent = paragraph.paragraphStyle.indentLeft;\n const numberingId = paragraph.paragraphStyle.numberingId;\n if (numberingId !== null) {\n const level = paragraph.paragraphStyle.numberingLevel;\n const paragraphIndex = this.model.paragraphs.indexOf(paragraph);\n const levelModel = NumberingHelper.find(this.properties.numberings, numberingId, level);\n const paragraphFormat = FormatStyleHelper.getFormatAtIndex(this.model.formats, paragraph.insertIndex);\n const markerTextStyle = FormatStyleHelper.combineTextStyles(levelModel.markerStyle, paragraphFormat.textStyle);\n let markerWidth = this.pagesWrap.paragraphs[paragraphIndex]?.numberingData?.width;\n if (\n !this.pagesWrap.paragraphs[paragraphIndex]?.numberingData.markerTextStyle ||\n !FormatStyleHelper.areSameTextStyles(\n markerTextStyle,\n this.pagesWrap.paragraphs[paragraphIndex].numberingData.markerTextStyle\n ) ||\n this.pagesWrap.paragraphs[paragraphIndex].numberingData.numberingId !== numberingId\n ) {\n const marker = NumberingHelper.getMarker(levelModel, numberingId, this.model.paragraphs, paragraphIndex);\n const markerSizes = NumberingHelper.getMarkerSizes(marker, markerTextStyle);\n markerWidth = markerSizes.width;\n }\n\n const hangingIndent = paragraph.paragraphStyle.indentHanging\n ? paragraph.paragraphStyle.indentHanging\n : levelModel.indentHanging;\n paragraphIndent = levelModel.indentLeft;\n if (markerWidth >= hangingIndent) {\n const markerOverflow = markerWidth - hangingIndent;\n const additionalMarkerIndent = TabHelper.calculateTabWidth(\n levelModel.indentLeft + markerOverflow,\n this.properties.defaultTabWidth\n );\n paragraphIndent += markerOverflow + additionalMarkerIndent;\n }\n }\n\n return paragraphIndent;\n }\n\n private updateTextStyles(styles: { [key: string]: any[] }, startIndex: number, endIndex: number): FormatModel {\n let textStyles = FormatStyleHelper.getFormatsAtRange(this.model.formats, startIndex, endIndex).map(format => format.textStyle);\n let prevFormat: FormatModel;\n if (!textStyles.length) {\n prevFormat = FormatStyleHelper.getPrevFormatAtIndex(this.model.formats, startIndex);\n\n if (prevFormat) {\n textStyles = [prevFormat.textStyle];\n }\n }\n\n for (const textStyle of textStyles) {\n for (const key of Object.keys(textStyle)) {\n if (styles[key]) {\n styles[key].push(textStyle[key]);\n }\n }\n }\n\n return prevFormat;\n }\n\n private updateParagraphStyles(styles: { [key: string]: any[] }, startIndex: number, endIndex: number): void {\n const paragraphStyles = ParagraphStyleHelper.getParagraphsAtRange(this.model.paragraphs, startIndex, endIndex).map(\n paragraph => paragraph.paragraphStyle\n );\n for (const paragraphStyle of paragraphStyles) {\n for (const key of Object.keys(paragraphStyle)) {\n if (styles[key]) {\n styles[key].push(paragraphStyle[key]);\n }\n }\n }\n }\n\n private updateNumberingStyles(styles: { [key: string]: any[] }, startIndex: number, endIndex: number): void {\n const paragraphStyles = ParagraphStyleHelper.getParagraphsAtRange(this.model.paragraphs, startIndex, endIndex).map(\n paragraph => paragraph.paragraphStyle\n );\n for (const paragraphStyle of paragraphStyles) {\n if (paragraphStyle.numberingId !== null) {\n const numberingLevels = this.properties.numberings.find(x => x.numberingId === paragraphStyle.numberingId).levels;\n const levelsMarkerStyles = numberingLevels.reduce((prev, next) => `${prev}${next.marker}${next.markerType}`, '');\n const level = numberingLevels.find(x => x.level === paragraphStyle.numberingLevel);\n const isBulletMarker = level.markerType === NumberingMarkerType.Bullet;\n styles['isBulletMarker'].push(isBulletMarker);\n styles['numberingLevelsStyles'].push(levelsMarkerStyles);\n } else {\n styles['isBulletMarker'].push(null);\n styles['numberingLevelsStyles'].push('');\n }\n }\n }\n\n private getImageWithAllowedSize(imageData: ImageDataModel, maxWidth: number): ImageDataModel {\n if (imageData.width <= maxWidth) {\n return imageData;\n }\n\n const aspectRatio = imageData.width / imageData.height;\n const height = maxWidth / aspectRatio;\n return new ImageDataModel({ width: Math.round(maxWidth), height: Math.round(height), content: imageData.content });\n }\n}\n","import { DEFAULT_TAB_WIDTH } from '../../core/constants/editor.const';\nimport { NumberingModel } from '../../../../models/generated/numbering.model';\n\nexport class GeneralPropertiesModel {\n defaultTabWidth: number;\n numberings: NumberingModel[];\n maxEdgeHeight: number;\n\n constructor(fields?: Partial<GeneralPropertiesModel>) {\n if (!fields) {\n return;\n }\n\n fields.defaultTabWidth ??= DEFAULT_TAB_WIDTH;\n\n Object.assign(this, fields);\n }\n}\n","import { SessionSourceModel } from './session-source.model';\nimport { TargetModel } from '../../../../models/generated/target.model';\nimport { TargetType } from '../../operations/enums/target-type.enum';\n\nexport class MainSessionSourceModel implements SessionSourceModel {\n public getTarget(): TargetModel {\n return new TargetModel({ type: TargetType.Document, edgeEditPage: null });\n }\n}\n","import { ContentStyleHelper } from '../helpers/content-style.helper';\nimport { CursorPosition } from '../interfaces/cursor-position.interface';\nimport { DomHelper } from '../helpers/dom.helper';\nimport { EditSession } from '../edit.session';\nimport { FontMetrics } from '../helpers/font-metrics.helper';\nimport { ILayerConfig } from '../interfaces/layer.config';\nimport { Point } from '../point';\nimport { PositionHelper } from '../helpers/position.helper';\nimport { TextStyleModel } from '../../../../models/generated/text-style.model';\n\nexport class CursorLayer {\n cursorPosition: CursorPosition;\n\n private readonly cursor: HTMLElement;\n\n private readonly layer: HTMLElement;\n\n private readonly blinkInterval = 1000;\n\n isVisible: boolean;\n\n private session: EditSession;\n\n constructor(parentElement: HTMLElement) {\n this.layer = document.createElement('div');\n this.layer.className = 'ace-layer ace-cursor-layer';\n parentElement.appendChild(this.layer);\n\n this.cursor = document.createElement('div');\n this.cursor.className = 'ace-cursor';\n this.layer.appendChild(this.cursor);\n\n this.hideCursor();\n }\n\n setSession(session: EditSession): void {\n this.session = session;\n }\n\n hideCursor(): void {\n this.isVisible = false;\n DomHelper.addCssClass(this.layer, 'ace-hidden-cursors');\n this.removeAnimationClass();\n }\n\n showCursor(): void {\n this.isVisible = true;\n DomHelper.removeCssClass(this.layer, 'ace-hidden-cursors');\n this.addAnimationClass();\n }\n\n detectVisibility(): void {\n const selectionRange = this.session.selection.range;\n if (selectionRange.isEmpty) {\n DomHelper.removeCssClass(this.layer, 'selecting');\n\n return;\n }\n\n DomHelper.addCssClass(this.layer, 'selecting');\n }\n\n update(config: ILayerConfig): void {\n this.cursorPosition = this.getPixelPosition();\n this.drawCursor(config.maxHeight);\n this.detectVisibility();\n this.restartAnimation();\n }\n\n getPixelPosition(position?: Point): CursorPosition {\n if (!position) {\n position = this.session.selection.cursor;\n }\n\n return PositionHelper.documentToPixel(this.session, position);\n }\n\n addTextStylesToCursor(): void {\n DomHelper.setStyle(this.cursor.style, 'border-color', this.session.stylesMap.fontColor);\n DomHelper.setStyle(this.cursor.style, 'fontSize', `${this.session.stylesMap.fontSize}px`);\n\n if (this.session.stylesMap.italic) {\n DomHelper.setStyle(this.cursor.style, '-webkit-transform', 'skewX(-13deg)');\n } else {\n DomHelper.setStyle(this.cursor.style, '-webkit-transform', 'skewX(0)');\n }\n\n const metricSize = FontMetrics.measureCharSize(\n 'EMPTY_LINE',\n ContentStyleHelper.getFontStylesString(\n new TextStyleModel({\n italic: this.session.stylesMap.italic,\n bold: this.session.stylesMap.bold,\n fontSize: this.session.stylesMap.fontSize,\n fontFamily: this.session.stylesMap.fontFamily\n })\n )\n );\n const fontMetricHeight = metricSize.ascent + metricSize.descent;\n const maxHeight = this.cursorPosition.sizeMax.ascent + this.cursorPosition.sizeMax.descent;\n const fontShoulders = fontMetricHeight - metricSize.font;\n const offset = metricSize.descent - fontShoulders;\n\n let top = this.cursorPosition.pageY + this.cursorPosition.sizeMax.ascent - metricSize.font + offset;\n if (fontMetricHeight !== maxHeight && maxHeight >= this.cursorPosition.lineHeight) {\n top -= maxHeight - this.cursorPosition.lineHeight;\n }\n\n DomHelper.setStyle(this.cursor.style, 'top', `${top < 0 ? 0 : top}px`);\n DomHelper.setStyle(this.cursor.style, 'height', `${fontMetricHeight}px`);\n }\n\n private restartAnimation(): void {\n this.removeAnimationClass();\n if (!this.isVisible) {\n return;\n }\n\n this.addAnimationClass();\n }\n\n private drawCursor(maxLayerHeight: number): void {\n const isCursorInView = this.cursorPosition.pageY >= 0 && this.cursorPosition.pageY < maxLayerHeight;\n if (!isCursorInView) {\n DomHelper.setStyle(this.cursor.style, 'display', 'none');\n return;\n }\n\n DomHelper.setStyle(this.cursor.style, 'display', 'block');\n const currentSize = this.cursorPosition.sizeCurrent;\n DomHelper.setStyle(this.cursor.style, 'left', `${this.cursorPosition.pageX}px`);\n DomHelper.setStyle(this.cursor.style, 'width', `${currentSize.width}px`);\n this.addTextStylesToCursor();\n }\n\n private removeAnimationClass(): void {\n DomHelper.removeCssClass(this.layer, 'ace-animate-blinking');\n }\n\n private addAnimationClass(): void {\n this.cursor.style.animationDuration = `${this.blinkInterval}ms`;\n DomHelper.addCssClass(this.layer, 'ace-animate-blinking');\n }\n}\n","import { IRenderChanges } from '../interfaces/render-changes.interface';\n\nexport class RenderChangesModel implements IRenderChanges {\n cursor = false;\n full = false;\n lines = false;\n marker = false;\n selection = false;\n scroll = false;\n size = false;\n text = false;\n\n get any(): boolean {\n return this.cursor || this.full || this.lines || this.marker || this.selection || this.scroll || this.size || this.text;\n }\n\n constructor(fields?: Partial<RenderChangesModel>) {\n if (!fields) {\n return;\n }\n\n Object.assign(this, fields);\n }\n\n apply(changes: IRenderChanges): void {\n for (let key of Object.keys(this)) {\n this[key] ||= changes[key];\n }\n }\n}\n","export class EventHelper {\n static get nextFrame(): (callback: TimerHandler) => number {\n if (!this._nextFrame) {\n const nextFrame = (callback: () => void) => {\n setTimeout(callback, 17);\n };\n this._nextFrame =\n window.requestAnimationFrame ||\n window['webkitRequestAnimationFrame'] ||\n window['mozRequestAnimationFrame'] ||\n window['msRequestAnimationFrame'] ||\n window['oRequestAnimationFrame'] ||\n nextFrame;\n }\n\n return this._nextFrame;\n }\n private static _nextFrame: (callback: TimerHandler) => number;\n}\n","import { EventHelper } from '../helpers/event.helper';\nimport { IRenderChanges } from '../interfaces/render-changes.interface';\nimport { RenderChangesModel } from '../models/render-changes.model';\n\nexport class RenderLoop {\n private readonly flush: () => void;\n\n private changes = new RenderChangesModel();\n\n constructor(onRender: (changes: RenderChangesModel) => void) {\n this.flush = () => {\n const changes = this.changes;\n\n if (changes.any) {\n this.changes = new RenderChangesModel();\n onRender(changes);\n }\n\n if (this.changes.any) {\n this.schedule();\n }\n };\n }\n\n schedule(changes?: IRenderChanges): void {\n if (changes) {\n this.changes.apply(changes);\n }\n\n if (this.changes) {\n EventHelper.nextFrame(this.flush);\n }\n }\n}\n","import { EditSession } from '../edit.session';\nimport { ILayerConfig } from '../interfaces/layer.config';\nimport { Point } from '../point';\nimport { PositionHelper } from '../helpers/position.helper';\nimport { Range } from '../range';\n\nexport class SelectionLayer {\n element: HTMLElement;\n\n session: EditSession;\n\n marker: Range | null = null;\n\n selectionIndex: number;\n\n config: ILayerConfig;\n\n constructor(parentEl: HTMLElement, cssClass: string) {\n this.element = document.createElement('div');\n this.element.className = `ace-layer ace-selection-layer ${cssClass}`;\n parentEl.appendChild(this.element);\n }\n\n setSession(session: EditSession): void {\n this.session = session;\n }\n\n renderSelection(css: string): void {\n let selectionElement = this.selectionIndex !== -1 ? <HTMLElement>this.element.childNodes[this.selectionIndex] : null;\n if (!selectionElement) {\n selectionElement = document.createElement('div');\n this.element.appendChild(selectionElement);\n this.selectionIndex = -1;\n } else {\n this.selectionIndex++;\n }\n\n selectionElement.style.cssText = css;\n selectionElement.className = 'ace-selection';\n }\n\n update(config: ILayerConfig): void {\n if (!config) {\n return;\n }\n\n this.config = config;\n this.selectionIndex = 0;\n\n if (this.marker) {\n let range = this.marker.clipRows(config.contentRange.start, config.contentRange.end);\n if (!range.isEmpty) {\n range = range.toScreenRange(this.session);\n if (range.isSingleLine) {\n this.drawSingleLineMarker(range);\n } else {\n this.drawMultiLineMarker(range);\n }\n }\n }\n\n if (this.selectionIndex !== -1) {\n while (this.selectionIndex < this.element.childElementCount) {\n this.element.removeChild(this.element.lastChild);\n }\n }\n }\n\n getTop(row: number): number {\n const paragraphs = this.session.pagesWrap.paragraphs;\n const paragraphInfo = PositionHelper.getParagraphInfoByRow(paragraphs, row);\n\n return paragraphs[paragraphInfo.paragraphIndex].distanceFromTop + paragraphInfo.lineTopOffset - this.session.scrollTop;\n }\n\n // Draws a multi line marker, where lines span the full width\n drawMultiLineMarker(range: Range): void {\n // from selection start to the end of the line\n const start = range.start.row;\n const end = range.end.row;\n const paragraphs = this.session.pagesWrap.paragraphs;\n const visibleParagraphs = paragraphs.filter(x => x.lastScreenLine >= start && x.firstScreenLine <= end);\n const textLinesInfo = visibleParagraphs.map(x => x.textLinesInfo.filter(l => start <= l.screenLine && l.screenLine <= end)).flat();\n const paragraphInfo = PositionHelper.getParagraphInfoByRow(paragraphs, start);\n let top = paragraphs[paragraphInfo.paragraphIndex].distanceFromTop + paragraphInfo.lineTopOffset - this.session.scrollTop;\n const padding = this.session.pagesWrap.documentMargin.left;\n for (let i = 0; i < textLinesInfo.length; i++) {\n const lineInfo = textLinesInfo[i];\n if (i !== 0) {\n top += lineInfo.firstLinePageOffset;\n top += lineInfo.offsetBefore;\n }\n\n let style: string;\n if (i === 0) {\n const rangeInfo = this.getRangeInfo(this.session, range);\n style = this.getMarkerStyle(\n lineInfo.height,\n lineInfo.width - rangeInfo.leftPos + lineInfo.paddingLeft + padding,\n top,\n rangeInfo.leftPos\n );\n } else if (i === textLinesInfo.length - 1) {\n const lastRowRange = new Range(new Point(range.end.row, 0), range.end);\n const rangeInfo = this.getRangeInfo(this.session, lastRowRange);\n style = this.getMarkerStyle(lineInfo.height, rangeInfo.screenWidth, top, padding + lineInfo.paddingLeft);\n } else {\n style = this.getMarkerStyle(lineInfo.height, lineInfo.width, top, padding + lineInfo.paddingLeft);\n }\n\n this.renderSelection(style);\n top += lineInfo.height + lineInfo.offsetAfter + lineInfo.endPageOffset;\n }\n }\n\n // Draws a marker which covers part or whole width of a single screen line\n drawSingleLineMarker(range: Range): void {\n const rangeInfo = this.getRangeInfo(this.session, range);\n const paragraphInfo = PositionHelper.getParagraphInfoByRow(this.session.pagesWrap.paragraphs, range.start.row);\n const height = rangeInfo.screenHeight || paragraphInfo.lineHeight;\n const width = rangeInfo.screenWidth;\n const top = this.getTop(range.start.row);\n const left = rangeInfo.leftPos;\n this.renderSelection(this.getMarkerStyle(height, width, top, left));\n }\n\n private getRangeInfo(session: EditSession, range: Range): { screenWidth: number; screenHeight: number; leftPos: number } {\n const start = range.start;\n const end = range.end;\n const startPos = PositionHelper.screenToPixel(session, start.row, start.column);\n const endPos = PositionHelper.screenToPixel(session, end.row, end.column);\n\n return {\n screenWidth: Math.abs(endPos.pageX - startPos.pageX),\n screenHeight: Math.abs(endPos.pageY - startPos.pageY),\n leftPos: startPos.pageX\n };\n }\n\n private getMarkerStyle(height: number, width: number, top: number, left: number): string {\n return `height:${height}px;width:${width}px;top:${top}px;left:${left}px`;\n }\n}\n","import { CursorLayer } from './layers/cursor.layer';\nimport { DistanceModel } from './models/distance.model';\nimport { DomHelper } from './helpers/dom.helper';\nimport { EditorService } from '../interaction/editor.service';\nimport { EditSession } from './edit.session';\nimport { EventEmitting } from './base/event-emitting';\nimport { ILayerConfig } from './interfaces/layer.config';\nimport { Point } from './point';\nimport { PositionHelper } from './helpers/position.helper';\nimport { Range } from './range';\nimport { RenderChangesModel } from './models/render-changes.model';\nimport { RenderLoop } from './layers/renderloop';\nimport { SelectionLayer } from './layers/selection.layer';\nimport { TextLayer } from './layers/text.layer';\n\nexport class Renderer extends EventEmitting {\n isMousePressed: boolean;\n\n container: HTMLElement;\n\n content: HTMLElement;\n\n cursorLayer: CursorLayer;\n\n textLayer: TextLayer;\n\n selectionLayer: SelectionLayer;\n\n session: EditSession;\n\n loop: RenderLoop;\n\n textarea: HTMLElement;\n\n layerConfig: ILayerConfig = {\n width: 1,\n contentRange: new DistanceModel({ start: 0, end: 0 }),\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n scrollTop: 0,\n pages: [],\n visibleRange: {\n startParagraph: 0,\n startLine: 0,\n startScreenLine: 0,\n startScreenFullLine: 0,\n endParagraph: 0,\n endLine: 0,\n endScreenLine: 0,\n endScreenFullLine: 0\n }\n };\n\n changes = new RenderChangesModel();\n\n readonly textareaSize = {\n height: 1,\n width: 1\n };\n\n constructor(parentContainer: HTMLElement, private editorService: EditorService) {\n super();\n this.container = parentContainer;\n this.container.className += ' ace-editor';\n this.createContentContainer();\n this.createLayers();\n this.createRenderLoop();\n }\n\n renderChanges(changes: RenderChangesModel, force?: boolean): void {\n changes.apply(this.changes);\n this.changes = new RenderChangesModel();\n\n if (!this.session || (!changes.any && !force)) {\n this.changes.apply(changes);\n\n return;\n }\n\n // text, scrolling and resize changes can cause the view port size to change\n if (changes.full || changes.size || changes.text || changes.lines || changes.scroll) {\n changes.apply(this.computeLayerConfig());\n\n DomHelper.translate(this.content, 0, -this.layerConfig.offset);\n\n DomHelper.setStyle(this.content.style, 'width', `${this.layerConfig.width}px`);\n DomHelper.setStyle(this.content.style, 'height', `${this.layerConfig.height}px`);\n }\n\n // full\n if (changes.full) {\n this.renderFull();\n this.editorService.rendererUpdated(this.session.sessionId);\n\n return;\n }\n\n if (changes.text || changes.scroll) {\n this.renderText();\n }\n\n if (changes.cursor) {\n this.renderCursor();\n }\n\n if (changes.marker || changes.selection) {\n this.renderSelection();\n }\n\n this.editorService.rendererUpdated(this.session.sessionId);\n }\n\n /**\n * Triggers a partial update of the text, from the range given by the two parameters.\n **/\n updateLines(firstRow: number, lastRow: number): void {\n // If the change happened offscreen above us then it's possible\n // that a new line wrap will affect the position of the lines on our\n // screen, so they need redrawn.\n if (lastRow < this.layerConfig.contentRange.start || firstRow > this.layerConfig.contentRange.end) {\n return;\n }\n\n this.loop.schedule({ lines: true });\n }\n\n moveTextAreaToCursor(): void {\n if (this.isMousePressed || !this.textarea) {\n return;\n }\n\n let cursorPosition = this.cursorLayer.cursorPosition;\n if (!cursorPosition) {\n return;\n }\n\n const posTop = cursorPosition.pageY - this.layerConfig.offset;\n if (posTop < 0 || posTop > this.layerConfig.height - this.textareaSize.height) {\n DomHelper.translate(this.textarea, 0, 0);\n return;\n }\n\n DomHelper.setStyle(this.textarea.style, 'height', `${this.textareaSize.height}px`);\n DomHelper.setStyle(this.textarea.style, 'width', `${this.textareaSize.width}px`);\n DomHelper.translate(\n this.textarea,\n Math.min(cursorPosition.pageX, this.textareaSize.width),\n Math.min(posTop, this.textareaSize.height)\n );\n }\n\n setSession(session: EditSession): void {\n this.session = session;\n this.textLayer.setSession(session);\n this.cursorLayer.setSession(session);\n this.selectionLayer.setSession(session);\n this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n }\n\n updateSelection(range: Range): void {\n if (range.isEmpty && this.selectionLayer.marker) {\n this.selectionLayer.marker = null;\n this.loop.schedule({ selection: true });\n } else if (!range.isEmpty && !this.selectionLayer.marker?.isEqual(range)) {\n this.selectionLayer.marker = range;\n this.loop.schedule({ selection: true });\n }\n }\n\n /**\n * Triggers a full update of the text, for all the rows.\n **/\n updateText(): void {\n this.loop.schedule({ text: true });\n }\n\n /**\n * Triggers a full update of all the layers, for all the rows.\n **/\n updateFull(force?: boolean): void {\n if (force) {\n this.renderChanges(new RenderChangesModel({ full: true }), true);\n\n return;\n }\n\n this.loop.schedule({ full: true });\n }\n\n updateCursor(): void {\n this.loop.schedule({ cursor: true });\n }\n\n screenToTextCoordinates(x: number, y: number): Point {\n const screen = PositionHelper.pixelToScreen(this.session, x, y, this.container.getBoundingClientRect());\n\n return PositionHelper.screenToDocument(this.session, screen.row, screen.column);\n }\n\n showCursor(): void {\n this.cursorLayer.showCursor();\n DomHelper.addCssClass(this.container, 'ace_focus');\n this.editorService.rendererUpdated(this.session.sessionId);\n }\n\n hideCursor(): void {\n this.cursorLayer.hideCursor();\n DomHelper.removeCssClass(this.container, 'ace_focus');\n this.editorService.rendererUpdated(this.session.sessionId);\n }\n\n destroy(): void {\n this.session.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);\n this.textLayer.destroy();\n DomHelper.removeChildren(this.container);\n }\n\n renderFull(): void {\n this.textLayer.update(this.layerConfig);\n this.selectionLayer.update(this.layerConfig);\n this.cursorLayer.update(this.layerConfig);\n this.moveTextAreaToCursor();\n }\n\n renderText(): void {\n this.textLayer.update(this.layerConfig);\n this.cursorLayer.detectVisibility();\n }\n\n renderCursor(): void {\n this.cursorLayer.update(this.layerConfig);\n this.moveTextAreaToCursor();\n }\n\n renderSelection(): void {\n this.selectionLayer.update(this.layerConfig);\n this.cursorLayer.detectVisibility();\n }\n\n private computeLayerConfig(): RenderChangesModel {\n const pagesWrap = this.session.pagesWrap;\n const maxHeight = pagesWrap.allPagesHeight;\n const minHeight = pagesWrap.minHeight;\n\n const changes = new RenderChangesModel({ scroll: true });\n this.layerConfig = {\n width: this.session.pagesWrap.contentWidth + pagesWrap.documentMargin.left + pagesWrap.documentMargin.right,\n height: pagesWrap.defaultVerticalData.contentHeight,\n contentRange: new DistanceModel({ start: 0, end: pagesWrap.paragraphs.length - 1 }),\n minHeight,\n maxHeight,\n offset: 0,\n scrollTop: this.session.scrollTop\n };\n\n return changes;\n }\n\n private pagesCountChangedHandler = (): void => {\n this.loop.schedule({ lines: true, selection: true });\n };\n\n private createContentContainer(): void {\n this.content = document.createElement('div');\n this.content.className = 'ace-content';\n\n if (this.container.firstChild) {\n this.container.firstChild.appendChild(this.content);\n } else {\n this.container.appendChild(this.content);\n }\n }\n\n private createLayers(): void {\n this.textLayer = new TextLayer(this.content);\n this.selectionLayer = new SelectionLayer(this.content, 'text-selection');\n this.cursorLayer = new CursorLayer(this.content);\n }\n\n private createRenderLoop(): void {\n this.loop = new RenderLoop(changes => this.renderChanges(changes));\n this.loop.schedule({ text: true });\n }\n}\n","import { EditSession } from '../../core/edit.session';\nimport { Renderer } from '../../core/renderer';\nimport { SessionSourceModel } from './session-source.model';\nimport { VirtualRenderer } from '../../core/virtual.renderer';\n\nexport class SessionModel {\n constructor(\n public session: EditSession,\n public renderer: Renderer | VirtualRenderer,\n public sessionId: number,\n public parentSessionId: number | null,\n public source: SessionSourceModel\n ) {}\n}\n","import { EventEmitting } from '../base/event-emitting';\n\n/**\n * Represents a vertical scroll bar.\n * @class ScrollBar\n **/\nexport class ScrollBar extends EventEmitting {\n // on ie maximal element height is smaller than what we get from 4-5K line document\n // so scrollbar doesn't work, as a workaround we do not set height higher than MAX_SCROLL_H\n // and rescale scrollTop\n readonly MAX_SCROLL_H = 0x8000;\n\n element: HTMLElement;\n\n inner: HTMLElement;\n\n isVisible: boolean;\n\n scrollTop = 0;\n\n private skipEvent = false;\n\n private coeff = 1;\n\n /**\n * Sets the scroll height of the scroll bar, in pixels.\n **/\n set scrollHeight(value: number) {\n this._scrollHeight = value;\n if (value > this.MAX_SCROLL_H) {\n this.coeff = this.MAX_SCROLL_H / value;\n value = this.MAX_SCROLL_H;\n } else if (this.coeff !== 1) {\n this.coeff = 1;\n }\n\n this.inner.style.height = `${value}px`;\n }\n get scrollHeight(): number {\n return this._scrollHeight;\n }\n private _scrollHeight = 0;\n\n /**\n * Sets the height of the scroll bar, in pixels.\n **/\n set height(value: number) {\n this.element.style.height = `${value}px`;\n }\n\n /**\n * Returns the width of the scroll bar.\n **/\n get width(): number {\n return Math.max(this.isVisible ? this._width : 0, this.element.offsetWidth, 0);\n }\n private _width = 20;\n\n constructor(private parent: HTMLElement) {\n super();\n\n this.init();\n\n // in OSX lion the scrollbars appear to have no width. In this case resize the\n // element to show the scrollbar but still pretend that the scrollbar has a width\n // of 0px\n // in Firefox 6+ scrollbar is hidden if element has the same width as scrollbar\n // make element a little bit wider to retain scrollbar when page is zoomed\n const newWidth = `${this._width}px`;\n this.inner.style.width = newWidth;\n this.element.style.width = newWidth;\n }\n\n /**\n * Emitted when the scroll bar, well, scrolls.\n **/\n onScroll = () => {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff !== 1) {\n const height = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = (this.scrollTop * (1 - height)) / (this.coeff - height);\n }\n\n this.emit('scroll', { data: this.scrollTop });\n }\n\n this.skipEvent = false;\n };\n\n setVisible(isVisible: boolean): void {\n this.element.style.display = isVisible ? '' : 'none';\n this.isVisible = isVisible;\n this.coeff = 1;\n }\n\n /**\n * Sets the scroll top of the scroll bar.\n **/\n setScrollTop(value: number): void {\n if (this.scrollTop === value) {\n return;\n }\n\n this.skipEvent = true;\n this.scrollTop = value;\n this.element.scrollTop = value * this.coeff;\n }\n\n private init(): void {\n this.element = document.createElement('div');\n this.element.className = 'ace-scrollbar';\n\n this.inner = document.createElement('div');\n this.inner.className = 'ace-scrollbar-inner';\n this.element.appendChild(this.inner);\n\n this.parent.appendChild(this.element);\n\n this.setVisible(false);\n\n this.element.addEventListener('scroll', this.onScroll);\n this.element.addEventListener('mousedown', (event: MouseEvent) => event.preventDefault());\n }\n}\n","import { CursorLayer } from './layers/cursor.layer';\nimport { DistanceModel } from './models/distance.model';\nimport { DomHelper } from './helpers/dom.helper';\nimport { EdgesLayer } from './layers/edges.layer';\nimport { EditorService } from '../interaction/editor.service';\nimport { EditSession } from './edit.session';\nimport { EventEmitting } from './base/event-emitting';\nimport { ILayerConfig } from './interfaces/layer.config';\nimport { PagesLayer } from './layers/pages.layer';\nimport { Point } from './point';\nimport { Range } from './range';\nimport { RenderChangesModel } from './models/render-changes.model';\nimport { Renderer } from './renderer';\nimport { RenderLoop } from './layers/renderloop';\nimport { ScrollBar } from './layers/scrollbar';\n\nexport class VirtualRenderer extends EventEmitting {\n get isMousePressed(): boolean {\n return this.renderer.isMousePressed;\n }\n set isMousePressed(val: boolean) {\n this.renderer.isMousePressed = val;\n }\n\n get cursorLayer(): CursorLayer {\n return this.renderer.cursorLayer;\n }\n\n get loop(): RenderLoop {\n return this.renderer.loop;\n }\n set loop(val: RenderLoop) {\n this.renderer.loop = val;\n }\n\n get textarea(): HTMLElement {\n return this.renderer.textarea;\n }\n set textarea(val: HTMLElement) {\n this.renderer.textarea = val;\n }\n\n get layerConfig(): ILayerConfig {\n return this.renderer.layerConfig;\n }\n set layerConfig(val: ILayerConfig) {\n this.renderer.layerConfig = val;\n }\n\n container: HTMLElement;\n\n scroller: HTMLElement;\n\n edgesLayer: EdgesLayer;\n\n pagesLayer: PagesLayer;\n\n scrollBar: ScrollBar;\n\n canScroll: boolean;\n\n scrollTop = 0;\n\n renderer!: Renderer;\n\n changes = new RenderChangesModel();\n\n size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n dirty: true\n };\n\n constructor(parentContainer: HTMLElement, private editorService: EditorService) {\n super();\n this.container = parentContainer;\n this.createScroller();\n this.renderer = new Renderer(parentContainer, editorService);\n this.renderer.layerConfig = this.getDefaultLayerConfig();\n this.createLayers();\n this.createScroll();\n this.createRenderLoop();\n }\n\n renderChanges(changes: RenderChangesModel, force?: boolean): void {\n changes.apply(this.changes);\n this.changes = new RenderChangesModel();\n\n if (!this.renderer.session || !this.container.offsetWidth || (!changes.any && !force)) {\n this.changes.apply(changes);\n\n return;\n }\n\n if (this.size.dirty) {\n this.changes.apply(changes);\n this.onResize(true);\n\n return;\n }\n\n // text, scrolling and resize changes can cause the view port size to change\n if (changes.full || changes.size || changes.text || changes.lines || changes.scroll) {\n changes.apply(this.computeLayerConfig());\n\n this.updateScrollBar();\n\n DomHelper.translate(this.renderer.content, 0, -this.layerConfig.offset);\n\n DomHelper.setStyle(this.renderer.content.style, 'width', `${this.layerConfig.width}px`);\n DomHelper.setStyle(this.renderer.content.style, 'height', `${this.layerConfig.height}px`);\n }\n\n // full\n if (changes.full) {\n this.renderFull();\n\n return;\n }\n\n // scrolling\n if (changes.scroll) {\n this.renderScroll(changes);\n }\n\n if (changes.text) {\n this.renderText();\n }\n\n if (changes.cursor) {\n this.renderCursor();\n }\n\n if (changes.marker || changes.selection) {\n this.renderSelection();\n }\n }\n\n /**\n * Triggers a resize of the editor\n **/\n onResize(force?: boolean): void {\n const height = this.container.clientHeight || this.container.scrollHeight;\n const width = this.container.clientWidth || this.container.scrollWidth;\n const changes = this.updateCachedSize(force, width, height);\n changes.apply(this.changes);\n\n if (force) {\n this.renderChanges(changes, true);\n } else {\n this.loop.schedule(changes);\n }\n this.scrollBar.scrollTop = null;\n }\n\n /**\n * Triggers a partial update of the text, from the range given by the two parameters.\n **/\n updateLines(firstRow: number, lastRow: number): void {\n this.renderer.updateLines(firstRow, lastRow);\n }\n\n updateCachedSize(force: boolean, width: number, height: number): RenderChangesModel {\n if (width && (force || this.size.width !== width)) {\n DomHelper.setStyle(this.scroller.style, 'left', 0);\n this.size.scrollerWidth = Math.max(0, this.container.parentElement.clientWidth - this.scrollBar.width);\n DomHelper.setStyle(this.scroller.style, 'right', 0);\n }\n\n let changes = new RenderChangesModel();\n if (height && (force || this.size.height !== height)) {\n this.size.height = height;\n changes.size = true;\n\n this.size.scrollerHeight = this.size.height;\n changes.scroll = true;\n }\n\n if (width && (force || this.size.width !== width)) {\n this.size.width = width;\n changes.size = true;\n }\n\n this.size.dirty = !width || !height;\n\n return changes;\n }\n\n moveTextAreaToCursor(): void {\n if (this.isMousePressed || !this.textarea) {\n return;\n }\n\n let cursorPosition = this.cursorLayer.cursorPosition;\n if (!cursorPosition) {\n return;\n }\n\n const posTop = cursorPosition.pageY - this.layerConfig.offset;\n if (posTop < 0 || posTop > this.layerConfig.height - this.renderer.textareaSize.height) {\n DomHelper.translate(this.textarea, 0, 0);\n return;\n }\n\n DomHelper.setStyle(this.textarea.style, 'height', `${this.renderer.textareaSize.height}px`);\n DomHelper.setStyle(this.textarea.style, 'width', `${this.renderer.textareaSize.width}px`);\n DomHelper.translate(\n this.textarea,\n Math.min(cursorPosition.pageX, this.size.scrollerWidth - this.renderer.textareaSize.width),\n Math.min(posTop, this.size.height - this.renderer.textareaSize.height)\n );\n }\n\n setSession(session: EditSession): void {\n this.pagesLayer.setSession(session);\n this.edgesLayer.setSession(session);\n this.renderer.setSession(session);\n this.scrollBar.scrollTop = null;\n }\n\n updateSelection(range: Range): void {\n this.renderer.updateSelection(range);\n }\n\n /**\n * Triggers a full update of the text, for all the rows.\n **/\n updateText(): void {\n this.renderer.updateText();\n }\n\n /**\n * Triggers a full update of all the layers, for all the rows.\n **/\n updateFull(force?: boolean): void {\n this.renderer.updateFull(force);\n }\n\n updateCursor(): void {\n this.renderer.updateCursor();\n }\n\n scrollSelectionIntoView(anchor: Point, lead: Point, offset?: number): void {\n // first scroll anchor into view then scroll lead into view\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n }\n\n /**\n * Scrolls the cursor into the first visibile area of the editor\n **/\n scrollCursorIntoView(cursor?: Point, offset?: number): void {\n if (!this.size.scrollerHeight) {\n return;\n }\n\n const position = this.cursorLayer.getPixelPosition(cursor);\n let top = position.pageY + this.scrollTop;\n\n if (this.scrollTop > top) {\n if (offset) {\n top -= offset * this.container.scrollHeight;\n }\n\n this.renderer.session.setScrollTop(top);\n this.loop.schedule({ scroll: true });\n } else if (this.scrollTop + this.container.scrollHeight < top + position.lineHeight) {\n if (offset) {\n top += offset * this.container.scrollHeight;\n }\n\n this.renderer.session.setScrollTop(top + position.lineHeight - this.container.scrollHeight);\n this.loop.schedule({ scroll: true });\n }\n }\n\n /**\n * Scrolls the editor to the y pixel indicated.\n **/\n scrollTo(scrollTop: number): void {\n // after calling scrollBar.setScrollTop\n // scrollbar sends us event with same scrollTop. ignore it\n if (this.scrollTop === scrollTop) {\n return;\n }\n\n this.loop.schedule({ scroll: true });\n this.scrollTop = scrollTop;\n }\n\n /**\n * Scrolls the editor across y-axe.\n **/\n scrollBy(deltaY: number): void {\n if (!deltaY || !this.scrollBar.isVisible) {\n return;\n }\n\n this.renderer.session.setScrollTop(this.renderer.session.scrollTop + deltaY);\n }\n\n screenToTextCoordinates(x: number, y: number): Point {\n return this.renderer.screenToTextCoordinates(x, y);\n }\n\n showCursor(): void {\n this.renderer.showCursor();\n }\n\n hideCursor(): void {\n this.renderer.hideCursor();\n }\n\n destroy(): void {\n this.scrollBar.removeAllListeners('scroll');\n DomHelper.removeElement(this.scrollBar.element);\n this.pagesLayer.destroy();\n this.edgesLayer.destroy();\n this.renderer.destroy();\n }\n\n private computeLayerConfig(): RenderChangesModel {\n const pagesWrap = this.renderer.session.pagesWrap;\n const maxHeight = pagesWrap.allPagesHeight;\n const minHeight = pagesWrap.minHeight;\n const scrollHidden = maxHeight < this.size.scrollerHeight;\n\n const newScrollTop = Math.max(Math.min(this.scrollTop, maxHeight - this.size.scrollerHeight), 0);\n this.renderer.session.scrollTop = newScrollTop;\n this.scrollTop = newScrollTop;\n\n const canScroll = !scrollHidden && this.size.scrollerHeight - maxHeight < 0;\n const scrollChanged = this.canScroll !== canScroll;\n if (scrollChanged) {\n this.canScroll = canScroll;\n this.scrollBar.setVisible(canScroll);\n }\n\n const changes = scrollChanged\n ? this.updateCachedSize(true, this.size.width, this.size.height)\n : new RenderChangesModel({ scroll: true });\n const visibleRange = pagesWrap.getVisibleRange(this.scrollTop, this.size.scrollerHeight);\n this.layerConfig = {\n width: this.renderer.textLayer.element.clientWidth + pagesWrap.documentMargin.left + pagesWrap.documentMargin.right,\n height: this.size.scrollerHeight,\n contentRange: new DistanceModel({ start: visibleRange.startParagraph, end: visibleRange.endParagraph }),\n minHeight,\n maxHeight,\n offset: 0,\n visibleRange,\n scrollTop: this.renderer.session.scrollTop,\n pages: visibleRange.pages\n };\n\n return changes;\n }\n\n private updateScrollBar(): void {\n this.scrollBar.scrollHeight = this.layerConfig.maxHeight;\n this.scrollBar.setScrollTop(this.scrollTop);\n }\n\n private createScroller(): void {\n this.scroller = document.createElement('div');\n this.scroller.className = 'ace-scroller';\n this.container.appendChild(this.scroller);\n }\n\n private createLayers(): void {\n this.edgesLayer = new EdgesLayer(this.renderer.content, this.editorService);\n this.pagesLayer = new PagesLayer(this.renderer.content);\n }\n\n private createScroll(): void {\n this.scrollBar = new ScrollBar(this.container.parentElement);\n this.scrollBar.addEventListener('scroll', (event: { data: number }) => {\n this.renderer.session.setScrollTop(event.data);\n });\n }\n\n private createRenderLoop(): void {\n this.loop = new RenderLoop(changes => this.renderChanges(changes));\n this.renderer.loop = this.loop;\n this.loop.schedule({ full: true });\n }\n\n private renderScroll(changes: RenderChangesModel): void {\n this.pagesLayer.update(this.layerConfig);\n if (changes.text || changes.lines) {\n this.edgesLayer.update(this.layerConfig);\n this.renderer.textLayer.update(this.layerConfig);\n } else {\n this.edgesLayer.scrollPages(this.layerConfig);\n this.renderer.textLayer.scrollLines(this.layerConfig);\n }\n\n this.renderer.selectionLayer.update(this.layerConfig);\n if (!this.renderer.cursorLayer.isVisible) {\n return;\n }\n\n this.cursorLayer.update(this.layerConfig);\n this.moveTextAreaToCursor();\n }\n\n private renderFull(): void {\n this.pagesLayer.update(this.layerConfig);\n this.edgesLayer.update(this.layerConfig);\n this.renderer.renderFull();\n }\n\n private renderText(): void {\n this.pagesLayer.update(this.layerConfig);\n this.renderer.renderText();\n }\n\n private renderCursor(): void {\n this.renderer.renderCursor();\n }\n\n private renderSelection(): void {\n this.renderer.renderSelection();\n }\n\n private getDefaultLayerConfig(): ILayerConfig {\n return {\n width: 1,\n contentRange: new DistanceModel({ start: 0, end: 0 }),\n minHeight: 1,\n maxHeight: 1,\n offset: 0,\n height: 1,\n scrollTop: 0,\n pages: [],\n visibleRange: {\n startParagraph: 0,\n startLine: 0,\n startScreenLine: 0,\n startScreenFullLine: 0,\n endParagraph: 0,\n endLine: 0,\n endScreenLine: 0,\n endScreenFullLine: 0\n }\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomHelper } from '../../helpers/dom.helper';\nimport { EdgeModel } from '../../../../../models/generated/edge.model';\nimport { EdgeType } from './edge-type.enum';\nimport { EditorService } from '../../../interaction/editor.service';\nimport { EditSession } from '../../edit.session';\nimport { GeneralPropertiesModel } from '../../../execution/models/general-properties.model';\nimport { MarginModel } from '../../models/margin.model';\nimport { ObserverComponent } from '../../../../abstract/observer.component';\nimport { RegulatorService } from '../../../execution/regulator.service';\nimport { Renderer } from '../../renderer';\nimport { SessionModel } from '../../../execution/models/session.model';\nimport { VirtualRenderer } from '../../virtual.renderer';\n\n@Component({\n selector: 'app-noder-edge',\n templateUrl: 'edge.component.html',\n styleUrls: ['edge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoderEdgeComponent extends ObserverComponent {\n @Input() model: EdgeModel;\n\n @Input() properties: GeneralPropertiesModel;\n\n @Input() margins: MarginModel;\n\n @Input() width: number;\n\n @Input() parentSessionId: number;\n\n @Input()\n set type(val: EdgeType) {\n this._type = val;\n if (val === EdgeType.Header) {\n this.editModeClass = 'header-edit-mode';\n this.typeContainerPosition = 'top';\n } else {\n this.editModeClass = 'footer-edit-mode';\n this.typeContainerPosition = 'bottom';\n }\n }\n get type(): EdgeType {\n return this._type;\n }\n private _type: EdgeType;\n\n @HostBinding('attr.data-session-id')\n sessionId: number;\n\n edgeSession: SessionModel;\n\n editModeClass: string;\n\n typeContainerPosition: string;\n\n get session(): EditSession {\n return this.edgeSession.session;\n }\n\n get renderer(): Renderer | VirtualRenderer {\n return this.edgeSession.renderer;\n }\n\n get height(): number {\n return this.session.pagesWrap.defaultVerticalData.contentHeight;\n }\n\n @ViewChild('container', { static: true }) container: ElementRef<HTMLElement>;\n\n @ViewChild('locationType', { static: true }) typeContainer: ElementRef<HTMLElement>;\n\n private _previousHeight: number;\n\n constructor(private regulatorService: RegulatorService, private editorService: EditorService) {\n super();\n }\n\n override ngOnDestroy(): void {\n this.regulatorService.removeSession(this.sessionId);\n super.ngOnDestroy();\n }\n\n initialize(): void {\n this.edgeSession = this.regulatorService.addEdgeSession(this);\n this.sessionId = this.edgeSession.sessionId;\n this._previousHeight = this.height;\n DomHelper.setStyle(this.container.nativeElement.style, 'overflow', 'hidden');\n DomHelper.setStyle(this.typeContainer.nativeElement.style, 'visibility', 'hidden');\n this.setTypeContainerPosition();\n this.subscriptions.push(this.rendererUpdatedSubscription());\n }\n\n enterEditMode(): void {\n DomHelper.addCssClass(this.container.nativeElement, this.editModeClass);\n DomHelper.setStyle(this.typeContainer.nativeElement.style, 'visibility', 'visible');\n }\n\n leaveEditMode(): void {\n DomHelper.removeCssClass(this.container.nativeElement, this.editModeClass);\n DomHelper.setStyle(this.typeContainer.nativeElement.style, 'visibility', 'hidden');\n }\n\n rendererUpdatedSubscription(): Subscription {\n return this.editorService.rendererUpdated$.subscribe(sessionId => {\n if (sessionId !== this.sessionId || this.height === this._previousHeight) {\n return;\n }\n\n this.editorService.changedEdgeHeight(this.type);\n this._previousHeight = this.height;\n this.setTypeContainerPosition();\n });\n }\n\n private setTypeContainerPosition(): void {\n const renderedEdgeHeight = this.height > this.properties.maxEdgeHeight ? this.properties.maxEdgeHeight : this.height;\n DomHelper.setStyle(this.typeContainer.nativeElement.style, this.typeContainerPosition, `${renderedEdgeHeight}px`);\n }\n}\n","<div\n #container\n class=\"edit-container\"></div>\n<div\n #locationType\n class=\"location-type\"></div>\n","import { ComponentRef } from '@angular/core';\n\nimport { ComponentService } from '../../../custom-components/shared/services/component/component.service';\nimport { EdgeModel } from '../../../../../models/generated/edge.model';\nimport { EdgeType } from './edge-type.enum';\nimport { GeneralPropertiesModel } from '../../../execution/models/general-properties.model';\nimport { MarginModel } from '../../models/margin.model';\nimport { NoderEdgeComponent } from './edge.component';\nimport { PageType } from '../../enums/page-type.enum';\nimport { RenderChangesModel } from '../../models/render-changes.model';\n\nexport class Edges {\n headersComponents: ComponentRef<NoderEdgeComponent>[] = [];\n\n footersComponents: ComponentRef<NoderEdgeComponent>[] = [];\n\n constructor(\n private componentService: ComponentService,\n headers: EdgeModel[],\n footers: EdgeModel[],\n margins: MarginModel,\n pageWidth: number,\n private parentSessionId: number,\n private properties: GeneralPropertiesModel\n ) {\n if (headers) {\n const headerMargins = new MarginModel({ ...margins, bottom: 0 });\n this.headersComponents = this.createComponents(headers, pageWidth, headerMargins, EdgeType.Header);\n }\n\n if (footers) {\n const footerMargins = new MarginModel({ ...margins, top: 0 });\n this.footersComponents = this.createComponents(footers, pageWidth, footerMargins, EdgeType.Footer);\n }\n\n this.setEdgeNameToComponents();\n }\n\n getComponentByPage(page: number, type: EdgeType): ComponentRef<NoderEdgeComponent> {\n const components = type === EdgeType.Header ? this.headersComponents : this.footersComponents;\n return this.getComponent(components, page);\n }\n\n getComponentByPageType(pageType: PageType, type: EdgeType): ComponentRef<NoderEdgeComponent> {\n const components = type === EdgeType.Header ? this.headersComponents : this.footersComponents;\n return components.find(x => x.instance.model.pageType === pageType);\n }\n\n getComponentHeightByPageType(pageType: PageType, type: EdgeType): number {\n const component = this.getComponentByPageType(pageType, type);\n if (!component) {\n return 0;\n }\n\n return component.instance.height > this.properties.maxEdgeHeight ? this.properties.maxEdgeHeight : component.instance.height;\n }\n\n getComponentHeight(page: number, type: EdgeType): number {\n const components = type === EdgeType.Header ? this.headersComponents : this.footersComponents;\n const component = this.getComponent(components, page);\n if (!component) {\n return 0;\n }\n\n return component.instance.height > this.properties.maxEdgeHeight ? this.properties.maxEdgeHeight : component.instance.height;\n }\n\n toggleEditMode(needEnable: boolean) {\n const edgeComponents = [...this.headersComponents, ...this.footersComponents];\n for (let component of edgeComponents) {\n needEnable ? component.instance.enterEditMode() : component.instance.leaveEditMode();\n }\n }\n\n getUniquePageTypes(): PageType[] {\n const edgeComponents = [...this.headersComponents, ...this.footersComponents];\n return [...new Set(edgeComponents.map(x => x.instance.model.pageType))];\n }\n\n private createComponents(\n edgeModels: EdgeModel[],\n pageWidth: number,\n margins: MarginModel,\n type: EdgeType\n ): ComponentRef<NoderEdgeComponent>[] {\n const resultComponents = [];\n for (let model of edgeModels) {\n const componentRef = this.componentService.generateComponent(NoderEdgeComponent, {\n model,\n margins,\n type,\n width: pageWidth,\n properties: this.properties,\n parentSessionId: this.parentSessionId\n });\n componentRef.instance.renderer.renderChanges(new RenderChangesModel({ text: true }));\n resultComponents.push(componentRef);\n }\n\n return resultComponents;\n }\n\n private getComponent(edgeComponents: ComponentRef<NoderEdgeComponent>[], page: number): ComponentRef<NoderEdgeComponent> {\n const defaultComponent = edgeComponents.find(x => x.instance.model.pageType === PageType.Default);\n if (page === 1) {\n return edgeComponents.find(x => x.instance.model.pageType === PageType.First) || defaultComponent;\n }\n\n const targetType = page % 2 === 0 ? PageType.Even : PageType.Default;\n return edgeComponents.find(x => x.instance.model.pageType === targetType) || defaultComponent;\n }\n\n private setEdgeNameToComponents(): void {\n const edgeComponents = [...this.headersComponents, ...this.footersComponents];\n if (!edgeComponents.length) {\n return;\n }\n\n const isEvenEdgesExist = edgeComponents.some(x => x.instance.model.pageType === PageType.Even);\n for (let component of edgeComponents) {\n component.instance.typeContainer.nativeElement.innerText = this.getEdgeNameByType(component.instance, isEvenEdgesExist);\n }\n }\n\n private getEdgeNameByType(component: NoderEdgeComponent, isEvenEdgesExist: boolean): string {\n let edgeName = component.type === EdgeType.Header ? 'Header' : 'Footer';\n if (component.model.pageType === PageType.First) {\n edgeName = `First Page ${edgeName}`;\n } else if (component.model.pageType === PageType.Even) {\n edgeName = `Even Pages ${edgeName}`;\n } else if (component.model.pageType === PageType.Default && isEvenEdgesExist) {\n edgeName = `Odd Pages ${edgeName}`;\n }\n\n return edgeName;\n }\n}\n","import { ComponentRef, Injectable, Injector, Type } from '@angular/core';\n\nimport { BaseNoderComponent } from '../../abstract/base.component';\nimport { ComponentService } from '../component/component.service';\nimport { ContentsInterface } from '../../../../interfaces/contents.interface';\nimport { CUSTOM_ELEMENT_MARKER, TABLE_MARKER } from '../../constants/custom-content-markers.const';\nimport { DEFAULT_PARAGRAPH_STYLE } from '../../../../core/constants/editor.const';\nimport { DisplayToken } from '../../../../core/models/display-token.model';\nimport { DistanceModel } from '../../../../core/models/distance.model';\nimport { DocxModel } from '../../../../../../models/generated/docx.model';\nimport { Edges } from '../../../../core/components/edges/edges';\nimport { ElementModel } from '../../../../../../models/generated/element.model';\nimport { EXTERNAL_ELEMENT_SERVICE } from '../../../external-element/external-elements.const';\nimport { ExternalElementModel } from '../../../external-element/models/external-element.model';\nimport { GeneralPropertiesModel } from '../../../../execution/models/general-properties.model';\nimport { ICustomComponents } from '../../interfaces/custom-components.interface';\nimport { IFontMetricSize } from '../../../../core/interfaces/font-metric-size.interface';\nimport { LineInfoModel } from '../../../../core/models/line-info.model';\nimport { MarginModel } from '../../../../core/models/margin.model';\nimport { NoderImageComponent } from '../../../image/components/image.component';\nimport { NoderTabComponent } from '../../../tab/tab.component';\nimport { NoderTableComponent } from '../../../table/components/table.component';\n\n@Injectable()\nexport class CustomContentService {\n elements: ExternalElementModel[];\n\n constructor(public componentService: ComponentService, private injector: Injector) {\n this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;\n }\n\n generateComponents(\n model: ContentsInterface,\n sessionId: number,\n properties: GeneralPropertiesModel,\n contentWidth: number\n ): ICustomComponents {\n return {\n images: this.componentService.generateComponents(NoderImageComponent, model?.images || [], x => {\n return { image: x, sessionId };\n }),\n tables: this.componentService.generateComponents(NoderTableComponent, model?.tables || [], x => {\n return { table: x, sessionId, properties };\n }),\n tabs: this.componentService.generateComponents(NoderTabComponent, model?.tabs || [], x => {\n return { tab: x, sessionId };\n }),\n customElements: this.generateElementComponents(model?.elements || [], sessionId, contentWidth),\n edges:\n model instanceof DocxModel\n ? new Edges(\n this.componentService,\n model.headers,\n model.footers,\n new MarginModel({\n left: model.marginLeft,\n right: model.marginRight,\n top: model.marginHeader,\n bottom: model.marginFooter\n }),\n model.pageWidth,\n sessionId,\n properties\n )\n : null\n };\n }\n\n generateElementComponents(elements: ElementModel[], sessionId: number, contentWidth: number): ComponentRef<BaseNoderComponent>[] {\n return elements.map(x => {\n const type = this.findComponentType(x.type);\n return this.componentService.generateComponent(type, { content: x, sessionId, contentWidth });\n });\n }\n\n isFragmentContainComponent(components: ICustomComponents, textFragment: string, fragmentDistance: DistanceModel): boolean {\n if (textFragment.includes(CUSTOM_ELEMENT_MARKER)) {\n return (\n this.isFragmentContainComponents(components.images, fragmentDistance) ||\n this.isFragmentContainComponents(components.tabs, fragmentDistance) ||\n this.isFragmentContainComponents(components.customElements, fragmentDistance)\n );\n }\n\n if (textFragment.includes(TABLE_MARKER)) {\n return this.isFragmentContainComponents(components.tables, fragmentDistance);\n }\n\n return false;\n }\n\n getComponents(components: ICustomComponents, distance: DistanceModel): ComponentRef<BaseNoderComponent>[] {\n const images = components.images.filter(x => x.instance.insertIndex >= distance.start && x.instance.insertIndex <= distance.end);\n const tables = components.tables.filter(x => x.instance.insertIndex >= distance.start && x.instance.insertIndex <= distance.end);\n const tabs = components.tabs.filter(x => x.instance.insertIndex >= distance.start && x.instance.insertIndex <= distance.end);\n const custom = components.customElements.filter(\n x => x.instance.insertIndex >= distance.start && x.instance.insertIndex <= distance.end\n );\n return [...images, ...tables, ...tabs, ...custom].sort((a, b) => a.instance.insertIndex - b.instance.insertIndex);\n }\n\n getComponent(components: ICustomComponents, char: string, charIndex: number): ComponentRef<BaseNoderComponent> {\n if (char === CUSTOM_ELEMENT_MARKER) {\n return (\n this.findComponent(components.images, charIndex) ??\n this.findComponent(components.tabs, charIndex) ??\n this.findComponent(components.customElements, charIndex)\n );\n }\n\n return this.findComponent(components.tables, charIndex);\n }\n\n getTokenFromComponent(\n component: ComponentRef<BaseNoderComponent>,\n lineInfo: LineInfoModel,\n displayValue: number,\n isFirst: boolean,\n size: IFontMetricSize\n ): DisplayToken {\n let height = size.height;\n if (component.instance.height > size.height) {\n height =\n component.instance instanceof NoderImageComponent ? component.instance.height + size.descent : component.instance.height;\n }\n\n return new DisplayToken({\n width: component.instance.width,\n height,\n baseline: 0,\n content: 0,\n font: size.font,\n ascent: component.instance.height ?? size.height,\n descent: 0,\n line: 0,\n lineSpacing: lineInfo.lineSpacing,\n multiplier: 0,\n align: lineInfo.align,\n indentFirstLine: isFirst ? lineInfo.indent.firstLine : DEFAULT_PARAGRAPH_STYLE.indentFirstLine,\n indentHanging: isFirst ? lineInfo.indent.hanging : DEFAULT_PARAGRAPH_STYLE.indentHanging,\n indentLeft: lineInfo.indent.left,\n indentRight: lineInfo.indent.right,\n indentBefore: lineInfo.offsetBefore,\n indentAfter: lineInfo.offsetAfter,\n isPageBreak: false,\n isLineBreak: false,\n displayValue,\n isTab: component.instance instanceof NoderTabComponent,\n isTable: component.instance instanceof NoderTableComponent\n });\n }\n\n findComponentType(type: number): Type<BaseNoderComponent> {\n return this.elements.find(x => x.type === type).componentType;\n }\n\n private isFragmentContainComponents(components: ComponentRef<BaseNoderComponent>[], distance: DistanceModel): boolean {\n return components.some(x => x.instance.insertIndex >= distance.start && x.instance.insertIndex <= distance.end);\n }\n\n private findComponent<T>(components: ComponentRef<T>[], insertIndex: number): ComponentRef<T> {\n return components.find((x: any) => x.instance.insertIndex === insertIndex);\n }\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { CellSessionSourceModel } from './models/cell-session-source.model';\nimport { CustomContentService } from '../custom-components/shared/services/custom-content/custom-content.service';\nimport { DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER } from '../core/constants/editor.const';\nimport { Document } from '../core/document';\nimport { DocumentInfo } from '../core/constants/document-info.const';\nimport { DocxModel } from '../../../models/generated/docx.model';\nimport { EdgeSessionSourceModel } from './models/edge-session-source.model';\nimport { EdgeType } from '../core/components/edges/edge-type.enum';\nimport { EditorService } from '../interaction/editor.service';\nimport { EditSession } from '../core/edit.session';\nimport { GeneralPropertiesModel } from './models/general-properties.model';\nimport { MainSessionSourceModel } from './models/main-session-source.model';\nimport { MarginModel } from '../core/models/margin.model';\nimport { NoderEdgeComponent } from '../core/components/edges/edge.component';\nimport { NoderTableCellComponent } from '../custom-components/table/components/table-cell.component';\nimport { PageType } from '../core/enums/page-type.enum';\nimport { Renderer } from '../core/renderer';\nimport { Selection } from '../positioning/selection';\nimport { SessionModel } from './models/session.model';\nimport { TableModel } from '../../../models/generated/table.model';\nimport { TargetModel } from '../../../models/generated/target.model';\nimport { TargetType } from '../operations/enums/target-type.enum';\nimport { VirtualRenderer } from '../core/virtual.renderer';\n\n@Injectable()\nexport class RegulatorService {\n mainSession: SessionModel;\n\n sessions: SessionModel[] = [];\n\n currentSession: SessionModel;\n\n selection: Selection;\n\n sessionIdIncrement = 0;\n\n edgeEditingPage: number | null = null;\n\n constructor(private customContentService: CustomContentService, private editorService: EditorService) {}\n\n addMainSession(model: DocxModel, margins: MarginModel, container: ElementRef<HTMLElement>): void {\n const currentSessionId = ++this.sessionIdIncrement;\n const document = new Document(model, margins, DocumentInfo.pagesSpace, model.pageWidth, model.pageHeight);\n const renderer = new VirtualRenderer(container.nativeElement, this.editorService);\n const session = new EditSession(\n document,\n currentSessionId,\n this.customContentService,\n model,\n this.selection,\n new GeneralPropertiesModel({\n numberings: model.numberings,\n defaultTabWidth: model.defaultTabWidth,\n maxEdgeHeight: model.pageHeight * DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER\n })\n );\n renderer.setSession(session);\n renderer.scrollTo(session.scrollTop);\n session.contentWidth = document.pageWidth - (document.pageMargin.left + document.pageMargin.right);\n this.editorService.styles = session.stylesMap;\n this.mainSession = new SessionModel(session, renderer, currentSessionId, null, new MainSessionSourceModel());\n this.sessions.push(this.mainSession);\n this.currentSession = this.mainSession;\n }\n\n addCellSession(\n table: TableModel,\n margins: MarginModel,\n component: NoderTableCellComponent,\n properties: GeneralPropertiesModel\n ): SessionModel {\n const currentSessionId = ++this.sessionIdIncrement;\n const document = new Document(component.cell, margins, 0, component.width, 0);\n const renderer = new Renderer(component.container.nativeElement, this.editorService);\n const session = new EditSession(document, currentSessionId, this.customContentService, component.cell, this.selection, properties);\n renderer.setSession(session);\n const contentWidth = component.width - (document.pageMargin.left + document.pageMargin.right);\n session.contentWidth = contentWidth === 0 ? 1 : contentWidth;\n const source = new CellSessionSourceModel(table, component);\n const newSession = new SessionModel(session, renderer, currentSessionId, component.parentSessionId, source);\n this.sessions.push(newSession);\n return newSession;\n }\n\n addEdgeSession(component: NoderEdgeComponent): SessionModel {\n const currentSessionId = ++this.sessionIdIncrement;\n const document = new Document(component.model, component.margins, 0, component.width, 0);\n const renderer = new Renderer(component.container.nativeElement, this.editorService);\n const session = new EditSession(\n document,\n currentSessionId,\n this.customContentService,\n component.model,\n this.selection,\n component.properties\n );\n renderer.setSession(session);\n session.contentWidth = component.width - (document.pageMargin.left + document.pageMargin.right);\n const source = new EdgeSessionSourceModel(component.model.pageType as PageType, component.type);\n const newSession = new SessionModel(session, renderer, currentSessionId, component.parentSessionId, source);\n this.sessions.push(newSession);\n return newSession;\n }\n\n removeSession(sessionId: number) {\n const index = this.sessions.findIndex(x => x.sessionId === sessionId);\n this.sessions[index].session.destroy();\n this.sessions[index].renderer.destroy();\n this.sessions.splice(index, 1);\n }\n\n setMainSessionAsCurrent(): void {\n if (this.mainSession.sessionId === this.currentSession.sessionId) {\n return;\n }\n this.toggleEdgeEditMode();\n this.setCurrentSession(this.mainSession);\n }\n\n setCustomSessionAsCurrent(sessionId: number): void {\n if (sessionId === this.currentSession.sessionId) {\n return;\n }\n this.toggleEdgeEditMode();\n this.setCurrentSessionById(sessionId);\n }\n\n setEdgeSessionAsCurrent(sessionId: number, clickedPage: number) {\n this.toggleEdgeEditMode(clickedPage);\n if (sessionId === this.currentSession.sessionId) {\n this.currentSession.source.edgeEditPage = clickedPage;\n return;\n }\n this.setCurrentSessionById(sessionId);\n }\n\n setTargetedSessionAsCurrent(targets: TargetModel[]): void {\n const targetedSession = this.getTargetedSession(targets);\n if (targetedSession.sessionId === this.currentSession.sessionId) {\n return;\n }\n const session = this.sessions.find(x => x.sessionId === targetedSession.sessionId);\n const edgeEditPage = targets.length ? targets[targets.length - 1].edgeEditPage : null;\n this.toggleEdgeEditMode(edgeEditPage);\n this.setCurrentSession(session);\n }\n\n setCurrentSessionById(sessionId: number): void {\n const index = this.sessions.findIndex(x => x.sessionId === sessionId);\n this.setCurrentSession(this.sessions[index]);\n }\n\n setCurrentSession(session: SessionModel): void {\n this.selection.clearSelection();\n this.currentSession.renderer.hideCursor();\n this.currentSession.renderer.updateSelection(this.selection.range);\n this.currentSession = session;\n this.currentSession.renderer.showCursor();\n this.currentSession.source.edgeEditPage = this.edgeEditingPage;\n }\n\n getSession(sessionId: number): EditSession {\n const session = this.sessions.find(x => x.sessionId === sessionId);\n return session.session;\n }\n\n setSelection(selection: Selection): void {\n this.selection = selection;\n }\n\n clearAllSessions(): void {\n this.sessions.forEach(session => {\n session.session.destroy();\n session.renderer.destroy();\n });\n this.sessions = [];\n }\n\n getCurrentSessionTargets(): TargetModel[] {\n return this.getTargets(this.currentSession);\n }\n\n getTargets(session: SessionModel): TargetModel[] {\n const result: TargetModel[] = [];\n let parentSession = this.sessions.find(x => x.sessionId === session.parentSessionId);\n while (parentSession) {\n const target = session.source.getTarget();\n result.splice(0, 0, target);\n session = parentSession;\n parentSession = this.sessions.find(x => x.sessionId === parentSession.parentSessionId);\n }\n return result;\n }\n\n getEdgeTarget(sessionId: number): TargetModel | null {\n let session = this.sessions.find(x => x.sessionId === sessionId);\n let parentSession = this.sessions.find(x => x.sessionId === session.parentSessionId);\n while (parentSession) {\n const target = session.source.getTarget();\n if (target.type === TargetType.Edge) {\n return target;\n }\n\n session = parentSession;\n parentSession = this.sessions.find(x => x.sessionId === parentSession.parentSessionId);\n }\n\n return null;\n }\n\n getTargetedSession(targets: TargetModel[]): EditSession {\n let result = this.mainSession.session;\n for (const target of targets) {\n switch (target.type) {\n case TargetType.Document:\n break;\n case TargetType.TableCell: {\n const table = result.customComponents.tables.find(x => x.instance.content.insertIndex === target.tableCell.insertIndex);\n result = table.instance.getCellSession(target.tableCell.row, target.tableCell.column);\n break;\n }\n case TargetType.Edge: {\n const edge = result.customComponents.edges.getComponentByPageType(\n target.edgeData.pageType as PageType,\n target.edgeData.type as EdgeType\n );\n result = edge.instance.edgeSession.session;\n break;\n }\n }\n }\n return result;\n }\n\n toggleEdgeEditMode(clickedPage: number | null = null): void {\n this.edgeEditingPage = clickedPage;\n if (!this.mainSession.session.customComponents.edges) {\n return;\n }\n\n this.mainSession.session.customComponents.edges.toggleEditMode(!!this.edgeEditingPage);\n const mainRenderer = this.mainSession.renderer as VirtualRenderer;\n mainRenderer.edgesLayer.update(mainRenderer.layerConfig);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { CommandModel } from '../../models/generated/command.model';\n\n@Injectable()\nexport class CommandsService {\n createCommand(command: CommandModel): void {\n this._createCommand$.next(command);\n }\n\n get createCommand$(): Observable<CommandModel> {\n return this._createCommand$.asObservable();\n }\n private _createCommand$: Subject<CommandModel> = new Subject<CommandModel>();\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ElementDataModel } from '../models/element-data.model';\nimport { ExternalElementModel } from '../models/external-element.model';\n\n@Component({\n selector: 'app-element-toolbar',\n templateUrl: './element-toolbar.component.html',\n styleUrls: ['./element-toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ElementToolbarComponent {\n @Input() isDisabled = false;\n\n @Input() elements: ExternalElementModel[];\n\n @Output() createElement = new EventEmitter<ElementDataModel>();\n\n isHide = false;\n\n changeVisibility(): void {\n this.isHide = !this.isHide;\n }\n\n async create(model: ExternalElementModel): Promise<void> {\n const data = await model.factoryMethod();\n const element = new ElementDataModel(model.type, data.width, data.height, data.guid);\n this.createElement.emit(element);\n }\n}\n","<button\n class=\"menu\"\n mat-raised-button\n (click)=\"changeVisibility()\">\n <div class=\"icon\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-menu-circle\"></mat-icon>\n </div>\n</button>\n<div\n class=\"menu-items\"\n *ngIf=\"!isHide\">\n <div class=\"empty-place\"></div>\n <button\n *ngFor=\"let element of elements\"\n mat-icon-button\n matTooltip=\"{{ element.name }}\"\n matTooltipPosition=\"left\"\n (click)=\"create(element)\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n ViewChild\n} from '@angular/core';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { MatDrawer } from '@angular/material/sidenav';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { CommandsService } from '../services/commands.service';\nimport { ComponentService } from './custom-components/shared/services/component/component.service';\nimport { DocxModel } from '../../models/generated/docx.model';\nimport { Editor } from './core/editor';\nimport { EDITOR_VERSION } from './core/constants/editor-version.const';\nimport { EditorService } from './interaction/editor.service';\nimport { ElementDataModel } from './custom-components/external-element/models/element-data.model';\nimport { EXTERNAL_ELEMENT_SERVICE, EXTERNAL_ELEMENT_SIDENAV } from './custom-components/external-element/external-elements.const';\nimport { ExternalElementModel } from './custom-components/external-element/models/external-element.model';\nimport { ExternalSidenavModel } from './custom-components/external-element/models/external-sidenav.model';\nimport { FontMetrics } from './core/helpers/font-metrics.helper';\nimport { RegulatorService } from './execution/regulator.service';\n\n@Component({\n selector: 'app-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EditorComponent implements OnDestroy {\n get isViewOnly$(): Observable<boolean> {\n return this.editorService.isViewOnly$;\n }\n\n @Input()\n set content(model: DocxModel) {\n if (model) {\n const deepCopy = JSON.parse(JSON.stringify(model));\n this._content = new DocxModel(deepCopy as DocxModel);\n }\n\n this.initEditor(this._content);\n }\n get content(): DocxModel {\n return this._content;\n }\n private _content: DocxModel;\n\n @ViewChild('container', { static: true }) container: ElementRef<HTMLElement>;\n\n @ViewChild('drawerContainer', { static: true }) sidenavContainer: ElementRef<HTMLElement>;\n\n @ViewChild('drawer', { static: true }) sidenav: MatDrawer;\n\n @HostBinding('class') class = 'base-editor';\n\n editor: Editor;\n\n elements: ExternalElementModel[];\n\n sidenavProperties: ExternalSidenavModel;\n\n readonly subscriptions: Subscription[] = [];\n\n private sidenavComponentRef: ComponentRef<any> | null = null;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private componentService: ComponentService,\n private editorService: EditorService,\n private injector: Injector,\n private regulatorService: RegulatorService,\n private commandsService: CommandsService,\n private clipboard: Clipboard\n ) {\n this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;\n this.sidenavProperties = this.injector.get(EXTERNAL_ELEMENT_SIDENAV);\n FontMetrics.checkVersion(EDITOR_VERSION);\n }\n\n ngOnDestroy(): void {\n this.editor?.destroy();\n this.regulatorService.clearAllSessions();\n this.subscriptions.forEach(x => x?.unsubscribe());\n this.subscriptions.splice(0);\n }\n\n initEditor(content: DocxModel): void {\n this.ngOnDestroy();\n this.editor = new Editor(content, this.container, this.editorService, this.regulatorService, this.commandsService, this.clipboard);\n this.subscriptions.push(this.toggleSidenavSubscription());\n }\n\n createElement(model: ElementDataModel) {\n this.editor.createCustomElement(model);\n this.editor.focus();\n }\n\n toggleSidenavSubscription(): Subscription {\n return this.editorService.toggleSidenav$.subscribe(data => {\n if (this.sidenav.opened === data.open) {\n return;\n }\n if (data.open) {\n this.sidenavComponentRef = this.componentService.createComponent(data.component, {\n model: data.model,\n contentWidth: data.contentWidth\n });\n this.componentService.attachComponent(this.sidenavContainer.nativeElement, this.sidenavComponentRef);\n } else {\n this.componentService.removeComponent(this.sidenavComponentRef);\n this.sidenavComponentRef = null;\n }\n this.sidenav.toggle().catch(() => {\n // continue regardless of error\n });\n this.cdr.markForCheck();\n });\n }\n}\n","<mat-drawer-container\n class=\"sidenav-container\"\n [hasBackdrop]=\"sidenavProperties.hasBackdrop\">\n <mat-drawer-content>\n <div class=\"container\">\n <div\n #container\n class=\"edit-container\"></div>\n <app-element-toolbar\n *ngIf=\"elements.length\"\n [elements]=\"elements\"\n [isDisabled]=\"isViewOnly$ | async\"\n (createElement)=\"createElement($event)\"></app-element-toolbar>\n </div>\n </mat-drawer-content>\n <mat-drawer\n #drawer\n [autoFocus]=\"sidenavProperties.autoFocus\"\n [position]=\"sidenavProperties.position\"\n [mode]=\"sidenavProperties.mode\">\n <div\n #drawerContainer\n class=\"drawer-container\"></div>\n </mat-drawer>\n</mat-drawer-container>\n","export class ExternalSidenavModel {\n autoFocus = false;\n\n hasBackdrop = false;\n\n position: 'start' | 'end' = 'end';\n\n mode: 'over' | 'side' = 'over';\n\n public constructor(fields?: Partial<ExternalSidenavModel>) {\n if (fields) {\n this.autoFocus = fields.autoFocus ?? this.autoFocus;\n this.hasBackdrop = fields.hasBackdrop ?? this.hasBackdrop;\n this.position = fields.position ?? this.position;\n this.mode = fields.mode ?? this.mode;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ModuleWithProviders, NgModule, Type } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { CommandsService } from '../services/commands.service';\nimport { ComponentService } from './custom-components/shared/services/component/component.service';\nimport { CustomContentService } from './custom-components/shared/services/custom-content/custom-content.service';\nimport { EditorComponent } from './editor.component';\nimport { ElementToolbarComponent } from './custom-components/external-element/element-toolbar/element-toolbar.component';\nimport { EXTERNAL_ELEMENT_SERVICE, EXTERNAL_ELEMENT_SIDENAV } from './custom-components/external-element/external-elements.const';\nimport { ExternalElementInterface, ExternalElementService } from './custom-components/external-element/external-element.service';\nimport { ExternalSidenavModel } from './custom-components/external-element/models/external-sidenav.model';\nimport { ImageApiService } from './custom-components/image/services/image-api.service';\nimport { NoderEdgeComponent } from './core/components/edges/edge.component';\nimport { NoderImageComponent } from './custom-components/image/components/image.component';\nimport { NoderTabComponent } from './custom-components/tab/tab.component';\nimport { NoderTableCellComponent } from './custom-components/table/components/table-cell.component';\nimport { NoderTableComponent } from './custom-components/table/components/table.component';\nimport { OverlayService } from './custom-components/shared/services/overlay/overlay.service';\nimport { RegulatorService } from './execution/regulator.service';\nimport { ResizerComponent } from './custom-components/image/resizer/resizer.component';\nimport { TableOverlayMenuComponent } from './custom-components/table/overlay-menu/overlay-menu.component';\n\nexport interface INoderOptions {\n sidenav?: Partial<ExternalSidenavModel>;\n elementService: Type<ExternalElementInterface>;\n}\n\n@NgModule({\n declarations: [\n EditorComponent,\n ElementToolbarComponent,\n NoderEdgeComponent,\n NoderImageComponent,\n NoderTabComponent,\n NoderTableCellComponent,\n NoderTableComponent,\n ResizerComponent,\n TableOverlayMenuComponent\n ],\n imports: [CommonModule, MatButtonModule, MatDialogModule, MatIconModule, MatSidenavModule, MatTooltipModule, ReactiveFormsModule],\n providers: [\n ComponentService,\n CustomContentService,\n ImageApiService,\n OverlayService,\n RegulatorService,\n ExternalElementService,\n CommandsService\n ],\n exports: [EditorComponent]\n})\nexport class EditorModule {\n static forRoot(options?: INoderOptions): ModuleWithProviders<EditorModule> {\n return {\n ngModule: EditorModule,\n providers: [\n { provide: EXTERNAL_ELEMENT_SIDENAV, useValue: new ExternalSidenavModel(options?.sidenav) },\n { provide: EXTERNAL_ELEMENT_SERVICE, useClass: options?.elementService ?? ExternalElementService }\n ]\n };\n }\n}\n","export enum Alignment {\n Left,\n Center,\n Right,\n Justify\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-insert-table',\n templateUrl: 'insert-table.component.html',\n styleUrls: ['insert-table.component.scss']\n})\nexport class InsertTableComponent {\n @Output() selectSizes = new EventEmitter<{ rows: number; columns: number }>();\n readonly maxRows = 20;\n\n readonly minRows = 5;\n\n readonly maxColumns = 20;\n\n readonly minColumns = 10;\n\n rows = Array(this.minRows)\n .fill(undefined)\n .map((_, i) => i + 1);\n\n columns = Array(this.minColumns)\n .fill(undefined)\n .map((_, i) => i + 1);\n\n currentRow = 1;\n\n currentColumn = 1;\n\n onCreateTable(rows: number, columns: number): void {\n this.selectSizes.emit({ rows, columns });\n }\n\n onCellHover(row: number, column: number): void {\n this.currentRow = row;\n this.currentColumn = column;\n this.rows = this.calculateArray(row, this.rows, this.minRows, this.maxRows);\n this.columns = this.calculateArray(column, this.columns, this.minColumns, this.maxColumns);\n }\n\n calculateArray(currentValue: number, arrayValues: number[], minValue: number, maxValue: number): number[] {\n if (currentValue >= arrayValues.length && currentValue <= maxValue) {\n const count = currentValue >= maxValue ? maxValue : arrayValues.length + 1;\n return Array(count)\n .fill(undefined)\n .map((_, i) => i + 1);\n } else if (currentValue < arrayValues.length && arrayValues.length > minValue) {\n const count = currentValue <= minValue ? minValue + 1 : arrayValues.length - (arrayValues.length - currentValue) + 1;\n return Array(count)\n .fill(undefined)\n .map((_, i) => i + 1);\n }\n\n return arrayValues;\n }\n}\n","<div class=\"table-size-container\">\n <ng-container *ngFor=\"let row of rows\">\n <div class=\"row\">\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"cell-container\"\n (mouseenter)=\"onCellHover(row, column)\"\n (click)=\"onCreateTable(row, column)\">\n <div\n class=\"cell\"\n [class.highlighted]=\"row <= currentRow && column <= currentColumn\"></div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"table-size\">{{ currentColumn }} x {{ currentRow }}</div>\n</div>\n","export enum Mode {\n Edit,\n Fill,\n View\n}\n","export enum NumberingTemplateType {\n BulletList1,\n BulletList2,\n BulletList3,\n BulletList4,\n BulletList5,\n BulletList6,\n NumberList1,\n NumberList2,\n NumberList3,\n NumberList4,\n NumberList5,\n NumberList6\n}\n","import { TextStyleModel } from './text-style.model';\n\nexport class NumberingLevelModel {\n public imageMarkerContent: string;\n public imageMarkerSourceId: string;\n public indentHanging: number;\n public indentLeft: number;\n public level: number;\n public marker: string;\n public markerAlignment: any;\n public markerStyle: TextStyleModel;\n public markerType: any;\n public startValue: number;\n\n public constructor(\n fields?: Partial<NumberingLevelModel>) {\n\n if (fields) {\n if (fields.markerStyle) { fields.markerStyle = new TextStyleModel(fields.markerStyle); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { Alignment } from '../enums/alignment.enum';\nimport { NumberingLevelModel } from '../../../models/generated/numbering-level.model';\nimport { NumberingMarkerType } from '../../editor/core/enums/numbering-marker-type.enum';\nimport { NumberingTemplateType } from '../enums/numbering-template-type.enum';\nimport { TextStyleModel } from '../../../models/generated/text-style.model';\n\nexport const NumberingTemplates = [\n {\n templateType: NumberingTemplateType.NumberList1,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%2.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%3.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Decimal,\n marker: '%4.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%5.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%6.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Decimal,\n marker: '%7.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%8.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%9.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.NumberList2,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%2)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%3)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Decimal,\n marker: '(%4)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '(%5)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '(%6)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Decimal,\n marker: '%7.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%8.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%9.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.NumberList3,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.%4.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.%4.%5.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.%4.%5.%6.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.%4.%5.%6.%7.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.%4.%5.%6.%7.%8.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Decimal,\n marker: '%1.%2.%3.%4.%5.%6.%7.%8.%9.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.NumberList4,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.UpperLetter,\n marker: '%1.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%2.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%3.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Decimal,\n marker: '%4.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%5.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%6.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Decimal,\n marker: '%7.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%8.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%9.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.NumberList5,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.UpperRoman,\n marker: '%1.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.UpperLetter,\n marker: '%2.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Decimal,\n marker: '%3.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%4)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Decimal,\n marker: '(%5)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '(%6)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '(%7)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '(%8)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '(%9)',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.NumberList6,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.DecimalZero,\n marker: '%1.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%2.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%3.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Decimal,\n marker: '%4.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%5.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%6.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Decimal,\n marker: '%7.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.LowerLetter,\n marker: '%8.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.LowerRoman,\n marker: '%9.',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Right,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.BulletList1,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Bullet,\n marker: '■',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Bullet,\n marker: '■',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Bullet,\n marker: '■',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.BulletList2,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Bullet,\n marker: '■',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Bullet,\n marker: '□',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Bullet,\n marker: '■',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Bullet,\n marker: '□',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Bullet,\n marker: '■',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Bullet,\n marker: '□',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.BulletList3,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Bullet,\n marker: '◆',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Bullet,\n marker: '◇',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Bullet,\n marker: '◆',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Bullet,\n marker: '◇',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Bullet,\n marker: '◆',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Bullet,\n marker: '◇',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.BulletList4,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Bullet,\n marker: '➢',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Bullet,\n marker: '◆',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Bullet,\n marker: '➢',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Bullet,\n marker: '◆',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Bullet,\n marker: '➢',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Bullet,\n marker: '◆',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.BulletList5,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Bullet,\n marker: '★',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Bullet,\n marker: '□',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Bullet,\n marker: '★',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Bullet,\n marker: '□',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Bullet,\n marker: '★',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Bullet,\n marker: '□',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n },\n {\n templateType: NumberingTemplateType.BulletList6,\n levels: [\n new NumberingLevelModel({\n level: 0,\n markerType: NumberingMarkerType.Bullet,\n marker: '➢',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 48\n }),\n new NumberingLevelModel({\n level: 1,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 96\n }),\n new NumberingLevelModel({\n level: 2,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 144\n }),\n new NumberingLevelModel({\n level: 3,\n markerType: NumberingMarkerType.Bullet,\n marker: '➢',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 192\n }),\n new NumberingLevelModel({\n level: 4,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 240\n }),\n new NumberingLevelModel({\n level: 5,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 288\n }),\n new NumberingLevelModel({\n level: 6,\n markerType: NumberingMarkerType.Bullet,\n marker: '➢',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 336\n }),\n new NumberingLevelModel({\n level: 7,\n markerType: NumberingMarkerType.Bullet,\n marker: '●',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 384\n }),\n new NumberingLevelModel({\n level: 8,\n markerType: NumberingMarkerType.Bullet,\n marker: '○',\n markerStyle: new TextStyleModel(),\n startValue: 1,\n markerAlignment: Alignment.Left,\n indentHanging: 24,\n indentLeft: 432\n })\n ]\n }\n];\n","export enum NumberingType {\n Bullet,\n Number\n}\n","import { NumberingMarkerType } from '../../editor/core/enums/numbering-marker-type.enum';\nimport { NumberingTemplateType } from '../enums/numbering-template-type.enum';\nimport { NumberingType } from '../enums/numbering-type.enum';\n\nexport class ToolbarStylesHelper {\n static getNumberingType(isBulletMarker: boolean | null): NumberingType | null {\n if (isBulletMarker === null) {\n return null;\n }\n\n return isBulletMarker ? NumberingType.Bullet : NumberingType.Number;\n }\n\n static getNumberingTemplateType(levelsMarkersStyles: string): NumberingTemplateType | null {\n const type = NumberingMarkerType;\n const bulletMarkerStyles1 = `●${type.Bullet}○${type.Bullet}■${type.Bullet}●${type.Bullet}○${type.Bullet}■${type.Bullet}●${type.Bullet}○${type.Bullet}■${type.Bullet}`;\n const bulletMarkerStyles2 = `■${type.Bullet}□${type.Bullet}○${type.Bullet}■${type.Bullet}□${type.Bullet}○${type.Bullet}■${type.Bullet}□${type.Bullet}○${type.Bullet}`;\n const bulletMarkerStyles3 = `◆${type.Bullet}◇${type.Bullet}○${type.Bullet}◆${type.Bullet}◇${type.Bullet}○${type.Bullet}◆${type.Bullet}◇${type.Bullet}○${type.Bullet}`;\n const bulletMarkerStyles4 = `➢${type.Bullet}◆${type.Bullet}●${type.Bullet}➢${type.Bullet}◆${type.Bullet}●${type.Bullet}➢${type.Bullet}◆${type.Bullet}●${type.Bullet}`;\n const bulletMarkerStyles5 = `★${type.Bullet}○${type.Bullet}□${type.Bullet}★${type.Bullet}○${type.Bullet}□${type.Bullet}★${type.Bullet}○${type.Bullet}□${type.Bullet}`;\n const bulletMarkerStyles6 = `➢${type.Bullet}●${type.Bullet}○${type.Bullet}➢${type.Bullet}●${type.Bullet}○${type.Bullet}➢${type.Bullet}●${type.Bullet}○${type.Bullet}`;\n const numberedMarkerStyles1 = `%1.${type.Decimal}%2.${type.LowerLetter}%3.${type.LowerRoman}%4.${type.Decimal}%5.${type.LowerLetter}%6.${type.LowerRoman}%7.${type.Decimal}%8.${type.LowerLetter}%9.${type.LowerRoman}`;\n const numberedMarkerStyles2 = `%1)${type.Decimal}%2)${type.LowerLetter}%3)${type.LowerRoman}(%4)${type.Decimal}(%5)${type.LowerLetter}(%6)${type.LowerRoman}%7.${type.Decimal}%8.${type.LowerLetter}%9.${type.LowerRoman}`;\n const numberedMarkerStyles3 = `%1.${type.Decimal}%1.%2.${type.Decimal}%1.%2.%3.${type.Decimal}%1.%2.%3.%4.${type.Decimal}%1.%2.%3.%4.%5.${type.Decimal}%1.%2.%3.%4.%5.%6.${type.Decimal}%1.%2.%3.%4.%5.%6.%7.${type.Decimal}%1.%2.%3.%4.%5.%6.%7.%8.${type.Decimal}%1.%2.%3.%4.%5.%6.%7.%8.%9.${type.Decimal}`;\n const numberedMarkerStyles4 = `%1.${type.UpperLetter}%2.${type.LowerLetter}%3.${type.LowerRoman}%4.${type.Decimal}%5.${type.LowerLetter}%6.${type.LowerRoman}%7.${type.Decimal}%8.${type.LowerLetter}%9.${type.LowerRoman}`;\n const numberedMarkerStyles5 = `%1.${type.UpperRoman}%2.${type.UpperLetter}%3.${type.Decimal}%4)${type.LowerLetter}(%5)${type.Decimal}(%6)${type.LowerLetter}(%7)${type.LowerRoman}(%8)${type.LowerLetter}(%9)${type.LowerRoman}`;\n const numberedMarkerStyles6 = `%1.${type.DecimalZero}%2.${type.LowerLetter}%3.${type.LowerRoman}%4.${type.Decimal}%5.${type.LowerLetter}%6.${type.LowerRoman}%7.${type.Decimal}%8.${type.LowerLetter}%9.${type.LowerRoman}`;\n\n switch (levelsMarkersStyles) {\n case numberedMarkerStyles1:\n return NumberingTemplateType.NumberList1;\n case numberedMarkerStyles2:\n return NumberingTemplateType.NumberList2;\n case numberedMarkerStyles3:\n return NumberingTemplateType.NumberList3;\n case numberedMarkerStyles4:\n return NumberingTemplateType.NumberList4;\n case numberedMarkerStyles5:\n return NumberingTemplateType.NumberList5;\n case numberedMarkerStyles6:\n return NumberingTemplateType.NumberList6;\n case bulletMarkerStyles1:\n return NumberingTemplateType.BulletList1;\n case bulletMarkerStyles2:\n return NumberingTemplateType.BulletList2;\n case bulletMarkerStyles3:\n return NumberingTemplateType.BulletList3;\n case bulletMarkerStyles4:\n return NumberingTemplateType.BulletList4;\n case bulletMarkerStyles5:\n return NumberingTemplateType.BulletList5;\n case bulletMarkerStyles6:\n return NumberingTemplateType.BulletList6;\n default:\n return null;\n }\n }\n}\n","export const SVG_MARKER_1 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<circle class=\"bullet filled\" cx=\"20\" cy=\"16\" r=\"4\"/>\n<rect class=\"line\" width=\"66\" height=\"6\" transform=\"translate(30 13)\"/>\n<circle class=\"bullet\" cx=\"36\" cy=\"38\" r=\"3.5\"/>\n<rect class=\"line\" width=\"50\" height=\"6\" transform=\"translate(46 35)\"/>\n<circle class=\"bullet\" cx=\"36\" cy=\"60\" r=\"3.5\"/>\n<rect class=\"line\" width=\"50\" height=\"6\" transform=\"translate(46 57)\"/>\n<rect class=\"bullet filled\" x=\"48\" y=\"78\" width=\"8\" height=\"8\"/>\n<rect class=\"line\" width=\"34\" height=\"6\" transform=\"translate(62 79)\"/>\n<circle class=\"bullet filled\" cx=\"20\" cy=\"104\" r=\"4\"/>\n<rect class=\"line\" width=\"66\" height=\"6\" transform=\"translate(30 101)\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\"/>\n</svg>`;\n\nexport const SVG_MARKER_2 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect class=\"bullet filled\" x=\"16\" y=\"12\" width=\"8\" height=\"8\"/>\n<rect class=\"line\" width=\"66\" height=\"6\" transform=\"translate(30 13)\"/>\n<rect class=\"bullet\" x=\"32.5\" y=\"34.5\" width=\"7\" height=\"7\"/>\n<rect class=\"line\" width=\"50\" height=\"6\" transform=\"translate(46 35)\"/>\n<rect class=\"bullet\" x=\"32.5\" y=\"56.5\" width=\"7\" height=\"7\"/>\n<rect class=\"line\" width=\"50\" height=\"6\" transform=\"translate(46 57)\"/>\n<circle class=\"bullet\" cx=\"52\" cy=\"82\" r=\"3.5\"/>\n<rect class=\"line\" width=\"34\" height=\"6\" transform=\"translate(62 79)\"/>\n<rect class=\"bullet filled\" x=\"20\" y=\"100\" width=\"8\" height=\"8\"/>\n<rect class=\"line\" width=\"62\" height=\"6\" transform=\"translate(34 101)\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\"/>\n</svg>`;\n\nexport const SVG_MARKER_3 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect class=\"bullet filled\" x=\"15.0504\" y=\"16\" width=\"7\" height=\"7\" transform=\"rotate(-45 15.0504 16)\"/>\n<rect class=\"line\" width=\"66\" height=\"6\" transform=\"translate(30 13)\"/>\n<rect class=\"bullet\" x=\"31.0504\" y=\"38\" width=\"7\" height=\"7\" transform=\"rotate(-45 31.0504 38)\"/>\n<rect class=\"line\" width=\"50\" height=\"6\" transform=\"translate(46 35)\"/>\n<rect class=\"bullet\" x=\"31.0504\" y=\"60\" width=\"7\" height=\"7\" transform=\"rotate(-45 31.0504 60)\"/>\n<rect class=\"line\" width=\"50\" height=\"6\" transform=\"translate(46 57)\"/>\n<circle class=\"bullet\" cx=\"52\" cy=\"82\" r=\"3.5\"/>\n<rect class=\"line\" width=\"34\" height=\"6\" transform=\"translate(62 79)\"/>\n<rect class=\"bullet filled\" x=\"15.0504\" y=\"104\" width=\"7\" height=\"7\" transform=\"rotate(-45 15.0504 104)\"/>\n<rect class=\"line\" width=\"66\" height=\"6\" transform=\"translate(30 101)\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\"/>\n</svg>`;\n\nexport const SVG_MARKER_4 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path class=\"bullet filled\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.0124 10.6388L16.643 15.6325H24.9999L15.0124 10.6388ZM16.5688 16.361L15 21.3613L24.9997 16.361H16.5688Z\" fill=\"black\"/>\n<rect class=\"line\" width=\"66\" height=\"6\" transform=\"translate(30 13)\"/>\n<rect class=\"bullet filled\" x=\"33.0504\" y=\"38\" width=\"7\" height=\"7\" transform=\"rotate(-45 33.0504 38)\"/>\n<rect class=\"line\" width=\"48\" height=\"6\" transform=\"translate(48 35)\" fill=\"#EAEAEA\"/>\n<rect class=\"bullet filled\" x=\"33.0504\" y=\"60\" width=\"7\" height=\"7\" transform=\"rotate(-45 33.0504 60)\"/>\n<rect class=\"line\" width=\"48\" height=\"6\" transform=\"translate(48 57)\"/>\n<circle class=\"bullet filled\" cx=\"54\" cy=\"82\" r=\"4\"/>\n<rect class=\"line\" width=\"32\" height=\"6\" transform=\"translate(64 79)\"/>\n<path class=\"bullet filled\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.0124 98.6388L20.643 103.633H28.9999L19.0124 98.6388ZM20.5688 104.361L19 109.361L28.9997 104.361H20.5688Z\"/>\n<rect class=\"line\" width=\"62\" height=\"6\" transform=\"translate(34 101)\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\"/>\n</svg>`;\n\nexport const SVG_MARKER_5 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path class=\"bullet filled\" d=\"M28.9804 14.789C28.9331 14.637 28.8077 14.5263 28.6568 14.5033L25.6874 14.0515L24.3593 11.234C24.2917 11.0908 24.1524 11 23.9998 11C23.8472 11 23.7078 11.0908 23.6402 11.234L22.3124 14.0515L19.3432 14.5033C19.1923 14.5263 19.0667 14.637 19.0196 14.789C18.9725 14.9411 19.0118 15.1079 19.1211 15.2194L21.2699 17.4123L20.7626 20.5092C20.7369 20.6667 20.7986 20.8259 20.9222 20.9198C20.992 20.9728 21.0746 20.9999 21.1579 20.9999C21.2218 20.9999 21.2858 20.984 21.3444 20.9517L24 19.4897L26.6558 20.9518C26.7909 21.026 26.9544 21.0139 27.078 20.9199C27.2013 20.826 27.2632 20.6668 27.2373 20.5092L26.7302 17.4124L28.8788 15.2195C28.9883 15.1078 29.0275 14.9411 28.9804 14.789H28.9804Z\"/>\n<rect class=\"line\" width=\"62\" height=\"6\" transform=\"translate(34 13)\"/>\n<circle class=\"bullet\" cx=\"38\" cy=\"38\" r=\"3.5\"/>\n<rect class=\"line\" width=\"48\" height=\"6\" transform=\"translate(48 35)\"/>\n<circle class=\"bullet\" cx=\"38\" cy=\"60\" r=\"3.5\"/>\n<rect class=\"line\" width=\"48\" height=\"6\" transform=\"translate(48 57)\"/>\n<rect class=\"bullet\" x=\"50.5\" y=\"78.5\" width=\"7\" height=\"7\"/>\n<rect class=\"line\" width=\"32\" height=\"6\" transform=\"translate(64 79)\"/>\n<path class=\"bullet filled\" d=\"M28.9804 102.789C28.9331 102.637 28.8077 102.526 28.6568 102.503L25.6874 102.052L24.3593 99.234C24.2917 99.0908 24.1524 99 23.9998 99C23.8472 99 23.7078 99.0908 23.6402 99.234L22.3124 102.052L19.3432 102.503C19.1923 102.526 19.0667 102.637 19.0196 102.789C18.9725 102.941 19.0118 103.108 19.1211 103.219L21.2699 105.412L20.7626 108.509C20.7369 108.667 20.7986 108.826 20.9222 108.92C20.992 108.973 21.0746 109 21.1579 109C21.2218 109 21.2858 108.984 21.3444 108.952L24 107.49L26.6558 108.952C26.7909 109.026 26.9544 109.014 27.078 108.92C27.2013 108.826 27.2632 108.667 27.2373 108.509L26.7302 105.412L28.8788 103.219C28.9883 103.108 29.0275 102.941 28.9804 102.789H28.9804Z\"/>\n<rect class=\"line\" width=\"62\" height=\"6\" transform=\"translate(34 101)\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\"/>\n</svg>`;\n\nexport const SVG_MARKER_6 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path class=\"bullet filled\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.0124 10.6388L20.643 15.6325H28.9999L19.0124 10.6388ZM20.5688 16.361L19 21.3613L28.9997 16.361H20.5688Z\"/>\n<rect class=\"line\" width=\"62\" height=\"6\" transform=\"translate(34 13)\"/>\n<circle class=\"bullet filled\" cx=\"38\" cy=\"38\" r=\"4\"/>\n<rect class=\"line\" width=\"48\" height=\"6\" transform=\"translate(48 35)\"/>\n<circle class=\"bullet filled\" cx=\"38\" cy=\"60\" r=\"4\"/>\n<rect class=\"line\" width=\"48\" height=\"6\" transform=\"translate(48 57)\"/>\n<circle class=\"bullet\" cx=\"54\" cy=\"82\" r=\"3.5\"/>\n<rect class=\"line\" width=\"32\" height=\"6\" transform=\"translate(64 79)\"/>\n<path class=\"bullet filled\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.0124 98.6388L20.643 103.633H28.9999L19.0124 98.6388ZM20.5688 104.361L19 109.361L28.9997 104.361H20.5688Z\"/>\n<rect class=\"line\" width=\"62\" height=\"6\" transform=\"translate(34 101)\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\"/>\n</svg>`;\n\nexport const SVG_NUMBER_1 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M20.25 11.0127V21H18.6025V12.9678L16.1621 13.7949V12.4346L20.0518 11.0127H20.25ZM23.873 20.1797C23.873 19.9245 23.9596 19.7103 24.1328 19.5371C24.306 19.3594 24.5407 19.2705 24.8369 19.2705C25.1377 19.2705 25.3724 19.3594 25.541 19.5371C25.7142 19.7103 25.8008 19.9245 25.8008 20.1797C25.8008 20.4349 25.7142 20.6491 25.541 20.8223C25.3724 20.9954 25.1377 21.082 24.8369 21.082C24.5407 21.082 24.306 20.9954 24.1328 20.8223C23.9596 20.6491 23.873 20.4349 23.873 20.1797Z\" fill=\"#212121\"/>\n<rect width=\"66\" height=\"6\" transform=\"translate(30 13)\" fill=\"#EAEAEA\"/>\n<path d=\"M35.0176 41.5166V37.9893C35.0176 37.7249 34.9697 37.4971 34.874 37.3057C34.7783 37.1143 34.6325 36.9661 34.4365 36.8613C34.2451 36.7565 34.0036 36.7041 33.7119 36.7041C33.443 36.7041 33.2106 36.7497 33.0146 36.8408C32.8187 36.932 32.666 37.055 32.5566 37.21C32.4473 37.3649 32.3926 37.5404 32.3926 37.7363H30.752C30.752 37.4447 30.8226 37.1621 30.9639 36.8887C31.1051 36.6152 31.3102 36.3714 31.5791 36.1572C31.848 35.943 32.1693 35.7744 32.543 35.6514C32.9167 35.5283 33.3359 35.4668 33.8008 35.4668C34.3568 35.4668 34.849 35.5602 35.2773 35.7471C35.7103 35.9339 36.0498 36.2165 36.2959 36.5947C36.5465 36.9684 36.6719 37.4378 36.6719 38.0029V41.291C36.6719 41.6283 36.6947 41.9313 36.7402 42.2002C36.7904 42.4645 36.861 42.6947 36.9521 42.8906V43H35.2637C35.1862 42.8223 35.1247 42.5967 35.0791 42.3232C35.0381 42.0452 35.0176 41.7764 35.0176 41.5166ZM35.2568 38.502L35.2705 39.5205H34.0879C33.7826 39.5205 33.5137 39.5501 33.2812 39.6094C33.0488 39.6641 32.8551 39.7461 32.7002 39.8555C32.5452 39.9648 32.429 40.097 32.3516 40.252C32.2741 40.4069 32.2354 40.5824 32.2354 40.7783C32.2354 40.9743 32.2809 41.1543 32.3721 41.3184C32.4632 41.4779 32.5954 41.6032 32.7686 41.6943C32.9463 41.7855 33.1605 41.8311 33.4111 41.8311C33.7484 41.8311 34.0423 41.7627 34.293 41.626C34.5482 41.4847 34.7487 41.3138 34.8945 41.1133C35.0404 40.9082 35.1178 40.7145 35.127 40.5322L35.6602 41.2637C35.6055 41.4505 35.512 41.651 35.3799 41.8652C35.2477 42.0794 35.0745 42.2845 34.8604 42.4805C34.6507 42.6719 34.3978 42.8291 34.1016 42.9521C33.8099 43.0752 33.4727 43.1367 33.0898 43.1367C32.6068 43.1367 32.1761 43.041 31.7979 42.8496C31.4196 42.6536 31.1234 42.3916 30.9092 42.0635C30.695 41.7308 30.5879 41.3548 30.5879 40.9355C30.5879 40.5436 30.6608 40.1973 30.8066 39.8965C30.957 39.5911 31.1758 39.3359 31.4629 39.1309C31.7546 38.9258 32.11 38.7708 32.5293 38.666C32.9486 38.5566 33.4271 38.502 33.9648 38.502H35.2568ZM38.4629 42.1797C38.4629 41.9245 38.5495 41.7103 38.7227 41.5371C38.8958 41.3594 39.1305 41.2705 39.4268 41.2705C39.7275 41.2705 39.9622 41.3594 40.1309 41.5371C40.304 41.7103 40.3906 41.9245 40.3906 42.1797C40.3906 42.4349 40.304 42.6491 40.1309 42.8223C39.9622 42.9954 39.7275 43.082 39.4268 43.082C39.1305 43.082 38.8958 42.9954 38.7227 42.8223C38.5495 42.6491 38.4629 42.4349 38.4629 42.1797Z\" fill=\"#212121\"/>\n<rect width=\"50\" height=\"6\" transform=\"translate(46 35)\" fill=\"#EAEAEA\"/>\n<path d=\"M30.8545 54.5H32.502V63.4209L32.3447 65H30.8545V54.5ZM37.3281 61.2334V61.377C37.3281 61.9238 37.2666 62.4274 37.1436 62.8877C37.0251 63.3434 36.8428 63.7399 36.5967 64.0771C36.3551 64.4144 36.0544 64.6764 35.6943 64.8633C35.3389 65.0456 34.9264 65.1367 34.457 65.1367C33.9967 65.1367 33.5957 65.0501 33.2539 64.877C32.9121 64.7038 32.625 64.4577 32.3926 64.1387C32.1647 63.8197 31.9801 63.4391 31.8389 62.9971C31.6976 62.555 31.5973 62.0674 31.5381 61.5342V61.0762C31.5973 60.5384 31.6976 60.0508 31.8389 59.6133C31.9801 59.1712 32.1647 58.7907 32.3926 58.4717C32.625 58.1481 32.9098 57.8997 33.2471 57.7266C33.5889 57.5534 33.9876 57.4668 34.4434 57.4668C34.9173 57.4668 35.3343 57.5579 35.6943 57.7402C36.0589 57.9225 36.362 58.1823 36.6035 58.5195C36.8451 58.8522 37.0251 59.2487 37.1436 59.709C37.2666 60.1693 37.3281 60.6774 37.3281 61.2334ZM35.6807 61.377V61.2334C35.6807 60.9007 35.6533 60.5885 35.5986 60.2969C35.5439 60.0007 35.4528 59.7409 35.3252 59.5176C35.2021 59.2943 35.0335 59.1188 34.8193 58.9912C34.6097 58.859 34.3477 58.793 34.0332 58.793C33.7415 58.793 33.4909 58.8431 33.2812 58.9434C33.0716 59.0436 32.8962 59.1803 32.7549 59.3535C32.6136 59.5267 32.502 59.7272 32.4199 59.9551C32.3424 60.1829 32.29 60.429 32.2627 60.6934V61.9307C32.3037 62.2725 32.3903 62.5869 32.5225 62.874C32.6592 63.1566 32.8506 63.3844 33.0967 63.5576C33.3428 63.7262 33.6595 63.8105 34.0469 63.8105C34.3522 63.8105 34.6097 63.749 34.8193 63.626C35.029 63.5029 35.1953 63.332 35.3184 63.1133C35.446 62.89 35.5371 62.6302 35.5918 62.334C35.651 62.0378 35.6807 61.7188 35.6807 61.377ZM38.791 64.1797C38.791 63.9245 38.8776 63.7103 39.0508 63.5371C39.224 63.3594 39.4587 63.2705 39.7549 63.2705C40.0557 63.2705 40.2904 63.3594 40.459 63.5371C40.6322 63.7103 40.7188 63.9245 40.7188 64.1797C40.7188 64.4349 40.6322 64.6491 40.459 64.8223C40.2904 64.9954 40.0557 65.082 39.7549 65.082C39.4587 65.082 39.224 64.9954 39.0508 64.8223C38.8776 64.6491 38.791 64.4349 38.791 64.1797Z\" fill=\"#212121\"/>\n<rect width=\"50\" height=\"6\" transform=\"translate(46 57)\" fill=\"#EAEAEA\"/>\n<path d=\"M48.6113 79.6035V87H46.957V79.6035H48.6113ZM46.8477 77.6621C46.8477 77.4115 46.9297 77.2041 47.0938 77.04C47.2624 76.8714 47.4948 76.7871 47.791 76.7871C48.0827 76.7871 48.3128 76.8714 48.4814 77.04C48.6501 77.2041 48.7344 77.4115 48.7344 77.6621C48.7344 77.9082 48.6501 78.1133 48.4814 78.2773C48.3128 78.4414 48.0827 78.5234 47.791 78.5234C47.4948 78.5234 47.2624 78.4414 47.0938 78.2773C46.9297 78.1133 46.8477 77.9082 46.8477 77.6621ZM50.4844 86.1797C50.4844 85.9245 50.571 85.7103 50.7441 85.5371C50.9173 85.3594 51.152 85.2705 51.4482 85.2705C51.749 85.2705 51.9837 85.3594 52.1523 85.5371C52.3255 85.7103 52.4121 85.9245 52.4121 86.1797C52.4121 86.4349 52.3255 86.6491 52.1523 86.8223C51.9837 86.9954 51.749 87.082 51.4482 87.082C51.152 87.082 50.9173 86.9954 50.7441 86.8223C50.571 86.6491 50.4844 86.4349 50.4844 86.1797Z\" fill=\"#212121\"/>\n<rect width=\"38\" height=\"6\" transform=\"translate(58 79)\" fill=\"#EAEAEA\"/>\n<path d=\"M23.4238 107.688V109H16.752V107.872L19.9922 104.338C20.3477 103.937 20.6279 103.59 20.833 103.299C21.0381 103.007 21.1816 102.745 21.2637 102.513C21.3503 102.276 21.3936 102.046 21.3936 101.822C21.3936 101.508 21.3343 101.232 21.2158 100.995C21.1019 100.754 20.9333 100.564 20.71 100.428C20.4867 100.286 20.2155 100.216 19.8965 100.216C19.5273 100.216 19.2174 100.296 18.9668 100.455C18.7161 100.615 18.527 100.836 18.3994 101.118C18.2718 101.396 18.208 101.715 18.208 102.075H16.5605C16.5605 101.496 16.6927 100.968 16.957 100.489C17.2214 100.006 17.6042 99.6234 18.1055 99.3408C18.6068 99.0537 19.2106 98.9102 19.917 98.9102C20.5824 98.9102 21.1475 99.0218 21.6123 99.2451C22.0771 99.4684 22.4303 99.7852 22.6719 100.195C22.918 100.605 23.041 101.091 23.041 101.651C23.041 101.961 22.9909 102.269 22.8906 102.574C22.7904 102.88 22.6468 103.185 22.46 103.49C22.2777 103.791 22.0612 104.094 21.8105 104.399C21.5599 104.7 21.2842 105.006 20.9834 105.315L18.8301 107.688H23.4238ZM24.873 108.18C24.873 107.924 24.9596 107.71 25.1328 107.537C25.306 107.359 25.5407 107.271 25.8369 107.271C26.1377 107.271 26.3724 107.359 26.541 107.537C26.7142 107.71 26.8008 107.924 26.8008 108.18C26.8008 108.435 26.7142 108.649 26.541 108.822C26.3724 108.995 26.1377 109.082 25.8369 109.082C25.5407 109.082 25.306 108.995 25.1328 108.822C24.9596 108.649 24.873 108.435 24.873 108.18Z\" fill=\"#212121\"/>\n<rect width=\"64\" height=\"6\" transform=\"translate(32 101)\" fill=\"#EAEAEA\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\" stroke=\"#DADADA\"/>\n</svg>`;\n\nexport const SVG_NUMBER_2 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M21.25 11.0127V21H19.6025V12.9678L17.1621 13.7949V12.4346L21.0518 11.0127H21.25ZM27.9834 16.9531V17.0693C27.9834 18.0309 27.874 18.9082 27.6553 19.7012C27.4411 20.4941 27.1608 21.1914 26.8145 21.793C26.4727 22.3945 26.1012 22.8958 25.7002 23.2969C25.3037 23.6979 24.9232 23.9873 24.5586 24.165L24.2236 23.2627C24.488 23.0622 24.75 22.7865 25.0098 22.4355C25.2741 22.0892 25.5133 21.6585 25.7275 21.1436C25.9463 20.6331 26.1195 20.0407 26.2471 19.3662C26.3792 18.6917 26.4453 17.9307 26.4453 17.083V16.9395C26.4453 16.0918 26.377 15.3307 26.2402 14.6562C26.1081 13.9772 25.9303 13.3848 25.707 12.8789C25.4837 12.3685 25.2422 11.9378 24.9824 11.5869C24.7227 11.236 24.4697 10.9626 24.2236 10.7666L24.5586 9.86426C24.9232 10.0374 25.3037 10.3245 25.7002 10.7256C26.1012 11.1266 26.4727 11.6302 26.8145 12.2363C27.1608 12.8379 27.4411 13.5352 27.6553 14.3281C27.874 15.1211 27.9834 15.9961 27.9834 16.9531Z\" fill=\"#212121\"/>\n<rect width=\"64\" height=\"6\" transform=\"translate(33 13)\" fill=\"#EAEAEA\"/>\n<path d=\"M35.0176 41.5166V37.9893C35.0176 37.7249 34.9697 37.4971 34.874 37.3057C34.7783 37.1143 34.6325 36.9661 34.4365 36.8613C34.2451 36.7565 34.0036 36.7041 33.7119 36.7041C33.443 36.7041 33.2106 36.7497 33.0146 36.8408C32.8187 36.932 32.666 37.055 32.5566 37.21C32.4473 37.3649 32.3926 37.5404 32.3926 37.7363H30.752C30.752 37.4447 30.8226 37.1621 30.9639 36.8887C31.1051 36.6152 31.3102 36.3714 31.5791 36.1572C31.848 35.943 32.1693 35.7744 32.543 35.6514C32.9167 35.5283 33.3359 35.4668 33.8008 35.4668C34.3568 35.4668 34.849 35.5602 35.2773 35.7471C35.7103 35.9339 36.0498 36.2165 36.2959 36.5947C36.5465 36.9684 36.6719 37.4378 36.6719 38.0029V41.291C36.6719 41.6283 36.6947 41.9313 36.7402 42.2002C36.7904 42.4645 36.861 42.6947 36.9521 42.8906V43H35.2637C35.1862 42.8223 35.1247 42.5967 35.0791 42.3232C35.0381 42.0452 35.0176 41.7764 35.0176 41.5166ZM35.2568 38.502L35.2705 39.5205H34.0879C33.7826 39.5205 33.5137 39.5501 33.2812 39.6094C33.0488 39.6641 32.8551 39.7461 32.7002 39.8555C32.5452 39.9648 32.429 40.097 32.3516 40.252C32.2741 40.4069 32.2354 40.5824 32.2354 40.7783C32.2354 40.9743 32.2809 41.1543 32.3721 41.3184C32.4632 41.4779 32.5954 41.6032 32.7686 41.6943C32.9463 41.7855 33.1605 41.8311 33.4111 41.8311C33.7484 41.8311 34.0423 41.7627 34.293 41.626C34.5482 41.4847 34.7487 41.3138 34.8945 41.1133C35.0404 40.9082 35.1178 40.7145 35.127 40.5322L35.6602 41.2637C35.6055 41.4505 35.512 41.651 35.3799 41.8652C35.2477 42.0794 35.0745 42.2845 34.8604 42.4805C34.6507 42.6719 34.3978 42.8291 34.1016 42.9521C33.8099 43.0752 33.4727 43.1367 33.0898 43.1367C32.6068 43.1367 32.1761 43.041 31.7979 42.8496C31.4196 42.6536 31.1234 42.3916 30.9092 42.0635C30.695 41.7308 30.5879 41.3548 30.5879 40.9355C30.5879 40.5436 30.6608 40.1973 30.8066 39.8965C30.957 39.5911 31.1758 39.3359 31.4629 39.1309C31.7546 38.9258 32.11 38.7708 32.5293 38.666C32.9486 38.5566 33.4271 38.502 33.9648 38.502H35.2568ZM41.5732 38.9531V39.0693C41.5732 40.0309 41.4639 40.9082 41.2451 41.7012C41.0309 42.4941 40.7507 43.1914 40.4043 43.793C40.0625 44.3945 39.6911 44.8958 39.29 45.2969C38.8936 45.6979 38.513 45.9873 38.1484 46.165L37.8135 45.2627C38.0778 45.0622 38.3398 44.7865 38.5996 44.4355C38.8639 44.0892 39.1032 43.6585 39.3174 43.1436C39.5361 42.6331 39.7093 42.0407 39.8369 41.3662C39.9691 40.6917 40.0352 39.9307 40.0352 39.083V38.9395C40.0352 38.0918 39.9668 37.3307 39.8301 36.6562C39.6979 35.9772 39.5202 35.3848 39.2969 34.8789C39.0736 34.3685 38.832 33.9378 38.5723 33.5869C38.3125 33.236 38.0596 32.9626 37.8135 32.7666L38.1484 31.8643C38.513 32.0374 38.8936 32.3245 39.29 32.7256C39.6911 33.1266 40.0625 33.6302 40.4043 34.2363C40.7507 34.8379 41.0309 35.5352 41.2451 36.3281C41.4639 37.1211 41.5732 37.9961 41.5732 38.9531Z\" fill=\"#212121\"/>\n<rect width=\"49\" height=\"6\" transform=\"translate(47 35)\" fill=\"#EAEAEA\"/>\n<path d=\"M30.8545 54.5H32.502V63.4209L32.3447 65H30.8545V54.5ZM37.3281 61.2334V61.377C37.3281 61.9238 37.2666 62.4274 37.1436 62.8877C37.0251 63.3434 36.8428 63.7399 36.5967 64.0771C36.3551 64.4144 36.0544 64.6764 35.6943 64.8633C35.3389 65.0456 34.9264 65.1367 34.457 65.1367C33.9967 65.1367 33.5957 65.0501 33.2539 64.877C32.9121 64.7038 32.625 64.4577 32.3926 64.1387C32.1647 63.8197 31.9801 63.4391 31.8389 62.9971C31.6976 62.555 31.5973 62.0674 31.5381 61.5342V61.0762C31.5973 60.5384 31.6976 60.0508 31.8389 59.6133C31.9801 59.1712 32.1647 58.7907 32.3926 58.4717C32.625 58.1481 32.9098 57.8997 33.2471 57.7266C33.5889 57.5534 33.9876 57.4668 34.4434 57.4668C34.9173 57.4668 35.3343 57.5579 35.6943 57.7402C36.0589 57.9225 36.362 58.1823 36.6035 58.5195C36.8451 58.8522 37.0251 59.2487 37.1436 59.709C37.2666 60.1693 37.3281 60.6774 37.3281 61.2334ZM35.6807 61.377V61.2334C35.6807 60.9007 35.6533 60.5885 35.5986 60.2969C35.5439 60.0007 35.4528 59.7409 35.3252 59.5176C35.2021 59.2943 35.0335 59.1188 34.8193 58.9912C34.6097 58.859 34.3477 58.793 34.0332 58.793C33.7415 58.793 33.4909 58.8431 33.2812 58.9434C33.0716 59.0436 32.8962 59.1803 32.7549 59.3535C32.6136 59.5267 32.502 59.7272 32.4199 59.9551C32.3424 60.1829 32.29 60.429 32.2627 60.6934V61.9307C32.3037 62.2725 32.3903 62.5869 32.5225 62.874C32.6592 63.1566 32.8506 63.3844 33.0967 63.5576C33.3428 63.7262 33.6595 63.8105 34.0469 63.8105C34.3522 63.8105 34.6097 63.749 34.8193 63.626C35.029 63.5029 35.1953 63.332 35.3184 63.1133C35.446 62.89 35.5371 62.6302 35.5918 62.334C35.651 62.0378 35.6807 61.7188 35.6807 61.377ZM41.9014 60.9531V61.0693C41.9014 62.0309 41.792 62.9082 41.5732 63.7012C41.359 64.4941 41.0788 65.1914 40.7324 65.793C40.3906 66.3945 40.0192 66.8958 39.6182 67.2969C39.2217 67.6979 38.8411 67.9873 38.4766 68.165L38.1416 67.2627C38.4059 67.0622 38.668 66.7865 38.9277 66.4355C39.1921 66.0892 39.4313 65.6585 39.6455 65.1436C39.8643 64.6331 40.0374 64.0407 40.165 63.3662C40.2972 62.6917 40.3633 61.9307 40.3633 61.083V60.9395C40.3633 60.0918 40.2949 59.3307 40.1582 58.6562C40.026 57.9772 39.8483 57.3848 39.625 56.8789C39.4017 56.3685 39.1602 55.9378 38.9004 55.5869C38.6406 55.236 38.3877 54.9626 38.1416 54.7666L38.4766 53.8643C38.8411 54.0374 39.2217 54.3245 39.6182 54.7256C40.0192 55.1266 40.3906 55.6302 40.7324 56.2363C41.0788 56.8379 41.359 57.5352 41.5732 58.3281C41.792 59.1211 41.9014 59.9961 41.9014 60.9531Z\" fill=\"#212121\"/>\n<rect width=\"49\" height=\"6\" transform=\"translate(47 57)\" fill=\"#EAEAEA\"/>\n<path d=\"M48.6113 79.6035V87H46.957V79.6035H48.6113ZM46.8477 77.6621C46.8477 77.4115 46.9297 77.2041 47.0938 77.04C47.2624 76.8714 47.4948 76.7871 47.791 76.7871C48.0827 76.7871 48.3128 76.8714 48.4814 77.04C48.6501 77.2041 48.7344 77.4115 48.7344 77.6621C48.7344 77.9082 48.6501 78.1133 48.4814 78.2773C48.3128 78.4414 48.0827 78.5234 47.791 78.5234C47.4948 78.5234 47.2624 78.4414 47.0938 78.2773C46.9297 78.1133 46.8477 77.9082 46.8477 77.6621ZM53.5947 82.9531V83.0693C53.5947 84.0309 53.4854 84.9082 53.2666 85.7012C53.0524 86.4941 52.7721 87.1914 52.4258 87.793C52.084 88.3945 51.7126 88.8958 51.3115 89.2969C50.915 89.6979 50.5345 89.9873 50.1699 90.165L49.835 89.2627C50.0993 89.0622 50.3613 88.7865 50.6211 88.4355C50.8854 88.0892 51.1247 87.6585 51.3389 87.1436C51.5576 86.6331 51.7308 86.0407 51.8584 85.3662C51.9906 84.6917 52.0566 83.9307 52.0566 83.083V82.9395C52.0566 82.0918 51.9883 81.3307 51.8516 80.6562C51.7194 79.9772 51.5417 79.3848 51.3184 78.8789C51.0951 78.3685 50.8535 77.9378 50.5938 77.5869C50.334 77.236 50.0811 76.9626 49.835 76.7666L50.1699 75.8643C50.5345 76.0374 50.915 76.3245 51.3115 76.7256C51.7126 77.1266 52.084 77.6302 52.4258 78.2363C52.7721 78.8379 53.0524 79.5352 53.2666 80.3281C53.4854 81.1211 53.5947 81.9961 53.5947 82.9531Z\" fill=\"#212121\"/>\n<rect width=\"37\" height=\"6\" transform=\"translate(59 79)\" fill=\"#EAEAEA\"/>\n<path d=\"M23.4238 107.688V109H16.752V107.872L19.9922 104.338C20.3477 103.937 20.6279 103.59 20.833 103.299C21.0381 103.007 21.1816 102.745 21.2637 102.513C21.3503 102.276 21.3936 102.046 21.3936 101.822C21.3936 101.508 21.3343 101.232 21.2158 100.995C21.1019 100.754 20.9333 100.564 20.71 100.428C20.4867 100.286 20.2155 100.216 19.8965 100.216C19.5273 100.216 19.2174 100.296 18.9668 100.455C18.7161 100.615 18.527 100.836 18.3994 101.118C18.2718 101.396 18.208 101.715 18.208 102.075H16.5605C16.5605 101.496 16.6927 100.968 16.957 100.489C17.2214 100.006 17.6042 99.6234 18.1055 99.3408C18.6068 99.0537 19.2106 98.9102 19.917 98.9102C20.5824 98.9102 21.1475 99.0218 21.6123 99.2451C22.0771 99.4684 22.4303 99.7852 22.6719 100.195C22.918 100.605 23.041 101.091 23.041 101.651C23.041 101.961 22.9909 102.269 22.8906 102.574C22.7904 102.88 22.6468 103.185 22.46 103.49C22.2777 103.791 22.0612 104.094 21.8105 104.399C21.5599 104.7 21.2842 105.006 20.9834 105.315L18.8301 107.688H23.4238ZM27.9834 104.953V105.069C27.9834 106.031 27.874 106.908 27.6553 107.701C27.4411 108.494 27.1608 109.191 26.8145 109.793C26.4727 110.395 26.1012 110.896 25.7002 111.297C25.3037 111.698 24.9232 111.987 24.5586 112.165L24.2236 111.263C24.488 111.062 24.75 110.786 25.0098 110.436C25.2741 110.089 25.5133 109.659 25.7275 109.144C25.9463 108.633 26.1195 108.041 26.2471 107.366C26.3792 106.692 26.4453 105.931 26.4453 105.083V104.939C26.4453 104.092 26.377 103.331 26.2402 102.656C26.1081 101.977 25.9303 101.385 25.707 100.879C25.4837 100.368 25.2422 99.9378 24.9824 99.5869C24.7227 99.236 24.4697 98.9626 24.2236 98.7666L24.5586 97.8643C24.9232 98.0374 25.3037 98.3245 25.7002 98.7256C26.1012 99.1266 26.4727 99.6302 26.8145 100.236C27.1608 100.838 27.4411 101.535 27.6553 102.328C27.874 103.121 27.9834 103.996 27.9834 104.953Z\" fill=\"#212121\"/>\n<rect width=\"63\" height=\"6\" transform=\"translate(33 101)\" fill=\"#EAEAEA\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\" stroke=\"#DADADA\"/>\n</svg>`;\n\nexport const SVG_NUMBER_3 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M21.25 11.0127V21H19.6025V12.9678L17.1621 13.7949V12.4346L21.0518 11.0127H21.25ZM24.873 20.1797C24.873 19.9245 24.9596 19.7103 25.1328 19.5371C25.306 19.3594 25.5407 19.2705 25.8369 19.2705C26.1377 19.2705 26.3724 19.3594 26.541 19.5371C26.7142 19.7103 26.8008 19.9245 26.8008 20.1797C26.8008 20.4349 26.7142 20.6491 26.541 20.8223C26.3724 20.9954 26.1377 21.082 25.8369 21.082C25.5407 21.082 25.306 20.9954 25.1328 20.8223C24.9596 20.6491 24.873 20.4349 24.873 20.1797Z\" fill=\"#212121\"/>\n<rect width=\"64\" height=\"6\" transform=\"translate(32 13)\" fill=\"#EAEAEA\"/>\n<path d=\"M35.25 33.0127V43H33.6025V34.9678L31.1621 35.7949V34.4346L35.0518 33.0127H35.25ZM38.873 42.1797C38.873 41.9245 38.9596 41.7103 39.1328 41.5371C39.306 41.3594 39.5407 41.2705 39.8369 41.2705C40.1377 41.2705 40.3724 41.3594 40.541 41.5371C40.7142 41.7103 40.8008 41.9245 40.8008 42.1797C40.8008 42.4349 40.7142 42.6491 40.541 42.8223C40.3724 42.9954 40.1377 43.082 39.8369 43.082C39.5407 43.082 39.306 42.9954 39.1328 42.8223C38.9596 42.6491 38.873 42.4349 38.873 42.1797ZM47.1035 33.0127V43H45.4561V34.9678L43.0156 35.7949V34.4346L46.9053 33.0127H47.1035Z\" fill=\"#212121\"/>\n<rect width=\"42\" height=\"6\" transform=\"translate(54 35)\" fill=\"#EAEAEA\"/>\n<path d=\"M35.25 55.0127V65H33.6025V56.9678L31.1621 57.7949V56.4346L35.0518 55.0127H35.25ZM38.873 64.1797C38.873 63.9245 38.9596 63.7103 39.1328 63.5371C39.306 63.3594 39.5407 63.2705 39.8369 63.2705C40.1377 63.2705 40.3724 63.3594 40.541 63.5371C40.7142 63.7103 40.8008 63.9245 40.8008 64.1797C40.8008 64.4349 40.7142 64.6491 40.541 64.8223C40.3724 64.9954 40.1377 65.082 39.8369 65.082C39.5407 65.082 39.306 64.9954 39.1328 64.8223C38.9596 64.6491 38.873 64.4349 38.873 64.1797ZM49.2773 63.6875V65H42.6055V63.8721L45.8457 60.3379C46.2012 59.9368 46.4814 59.5905 46.6865 59.2988C46.8916 59.0072 47.0352 58.7451 47.1172 58.5127C47.2038 58.2757 47.2471 58.0456 47.2471 57.8223C47.2471 57.5078 47.1878 57.2321 47.0693 56.9951C46.9554 56.7536 46.7868 56.5645 46.5635 56.4277C46.3402 56.2865 46.069 56.2158 45.75 56.2158C45.3809 56.2158 45.071 56.2956 44.8203 56.4551C44.5697 56.6146 44.3805 56.8356 44.2529 57.1182C44.1253 57.3962 44.0615 57.7152 44.0615 58.0752H42.4141C42.4141 57.4964 42.5462 56.9678 42.8105 56.4893C43.0749 56.0062 43.4577 55.6234 43.959 55.3408C44.4603 55.0537 45.0641 54.9102 45.7705 54.9102C46.4359 54.9102 47.001 55.0218 47.4658 55.2451C47.9307 55.4684 48.2839 55.7852 48.5254 56.1953C48.7715 56.6055 48.8945 57.0908 48.8945 57.6514C48.8945 57.9613 48.8444 58.2689 48.7441 58.5742C48.6439 58.8796 48.5003 59.1849 48.3135 59.4902C48.1312 59.791 47.9147 60.0941 47.6641 60.3994C47.4134 60.7002 47.1377 61.0055 46.8369 61.3154L44.6836 63.6875H49.2773Z\" fill=\"#212121\"/>\n<rect width=\"42\" height=\"6\" transform=\"translate(54 57)\" fill=\"#EAEAEA\"/>\n<path d=\"M51.25 77.0127V87H49.6025V78.9678L47.1621 79.7949V78.4346L51.0518 77.0127H51.25ZM54.873 86.1797C54.873 85.9245 54.9596 85.7103 55.1328 85.5371C55.306 85.3594 55.5407 85.2705 55.8369 85.2705C56.1377 85.2705 56.3724 85.3594 56.541 85.5371C56.7142 85.7103 56.8008 85.9245 56.8008 86.1797C56.8008 86.4349 56.7142 86.6491 56.541 86.8223C56.3724 86.9954 56.1377 87.082 55.8369 87.082C55.5407 87.082 55.306 86.9954 55.1328 86.8223C54.9596 86.6491 54.873 86.4349 54.873 86.1797ZM65.2773 85.6875V87H58.6055V85.8721L61.8457 82.3379C62.2012 81.9368 62.4814 81.5905 62.6865 81.2988C62.8916 81.0072 63.0352 80.7451 63.1172 80.5127C63.2038 80.2757 63.2471 80.0456 63.2471 79.8223C63.2471 79.5078 63.1878 79.2321 63.0693 78.9951C62.9554 78.7536 62.7868 78.5645 62.5635 78.4277C62.3402 78.2865 62.069 78.2158 61.75 78.2158C61.3809 78.2158 61.071 78.2956 60.8203 78.4551C60.5697 78.6146 60.3805 78.8356 60.2529 79.1182C60.1253 79.3962 60.0615 79.7152 60.0615 80.0752H58.4141C58.4141 79.4964 58.5462 78.9678 58.8105 78.4893C59.0749 78.0062 59.4577 77.6234 59.959 77.3408C60.4603 77.0537 61.0641 76.9102 61.7705 76.9102C62.4359 76.9102 63.001 77.0218 63.4658 77.2451C63.9307 77.4684 64.2839 77.7852 64.5254 78.1953C64.7715 78.6055 64.8945 79.0908 64.8945 79.6514C64.8945 79.9613 64.8444 80.2689 64.7441 80.5742C64.6439 80.8796 64.5003 81.1849 64.3135 81.4902C64.1312 81.791 63.9147 82.0941 63.6641 82.3994C63.4134 82.7002 63.1377 83.0055 62.8369 83.3154L60.6836 85.6875H65.2773ZM66.7266 86.1797C66.7266 85.9245 66.8132 85.7103 66.9863 85.5371C67.1595 85.3594 67.3942 85.2705 67.6904 85.2705C67.9912 85.2705 68.2259 85.3594 68.3945 85.5371C68.5677 85.7103 68.6543 85.9245 68.6543 86.1797C68.6543 86.4349 68.5677 86.6491 68.3945 86.8223C68.2259 86.9954 67.9912 87.082 67.6904 87.082C67.3942 87.082 67.1595 86.9954 66.9863 86.8223C66.8132 86.6491 66.7266 86.4349 66.7266 86.1797ZM74.957 77.0127V87H73.3096V78.9678L70.8691 79.7949V78.4346L74.7588 77.0127H74.957ZM78.5801 86.1797C78.5801 85.9245 78.6667 85.7103 78.8398 85.5371C79.013 85.3594 79.2477 85.2705 79.5439 85.2705C79.8447 85.2705 80.0794 85.3594 80.248 85.5371C80.4212 85.7103 80.5078 85.9245 80.5078 86.1797C80.5078 86.4349 80.4212 86.6491 80.248 86.8223C80.0794 86.9954 79.8447 87.082 79.5439 87.082C79.2477 87.082 79.013 86.9954 78.8398 86.8223C78.6667 86.6491 78.5801 86.4349 78.5801 86.1797Z\" fill=\"#212121\"/>\n<rect width=\"10\" height=\"6\" transform=\"translate(86 79)\" fill=\"#EAEAEA\"/>\n<path d=\"M23.4238 107.688V109H16.752V107.872L19.9922 104.338C20.3477 103.937 20.6279 103.59 20.833 103.299C21.0381 103.007 21.1816 102.745 21.2637 102.513C21.3503 102.276 21.3936 102.046 21.3936 101.822C21.3936 101.508 21.3343 101.232 21.2158 100.995C21.1019 100.754 20.9333 100.564 20.71 100.428C20.4867 100.286 20.2155 100.216 19.8965 100.216C19.5273 100.216 19.2174 100.296 18.9668 100.455C18.7161 100.615 18.527 100.836 18.3994 101.118C18.2718 101.396 18.208 101.715 18.208 102.075H16.5605C16.5605 101.496 16.6927 100.968 16.957 100.489C17.2214 100.006 17.6042 99.6234 18.1055 99.3408C18.6068 99.0537 19.2106 98.9102 19.917 98.9102C20.5824 98.9102 21.1475 99.0218 21.6123 99.2451C22.0771 99.4684 22.4303 99.7852 22.6719 100.195C22.918 100.605 23.041 101.091 23.041 101.651C23.041 101.961 22.9909 102.269 22.8906 102.574C22.7904 102.88 22.6468 103.185 22.46 103.49C22.2777 103.791 22.0612 104.094 21.8105 104.399C21.5599 104.7 21.2842 105.006 20.9834 105.315L18.8301 107.688H23.4238ZM24.873 108.18C24.873 107.924 24.9596 107.71 25.1328 107.537C25.306 107.359 25.5407 107.271 25.8369 107.271C26.1377 107.271 26.3724 107.359 26.541 107.537C26.7142 107.71 26.8008 107.924 26.8008 108.18C26.8008 108.435 26.7142 108.649 26.541 108.822C26.3724 108.995 26.1377 109.082 25.8369 109.082C25.5407 109.082 25.306 108.995 25.1328 108.822C24.9596 108.649 24.873 108.435 24.873 108.18Z\" fill=\"#212121\"/>\n<rect width=\"64\" height=\"6\" transform=\"translate(32 101)\" fill=\"#EAEAEA\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\" stroke=\"#DADADA\"/>\n</svg>`;\n\nexport const SVG_NUMBER_4 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18.8877 12.373L15.9141 21H14.1162L17.8623 11.0469H19.0107L18.8877 12.373ZM21.376 21L18.3955 12.373L18.2656 11.0469H19.4209L23.1807 21H21.376ZM21.2324 17.3086V18.6689H15.8184V17.3086H21.2324ZM24.1992 20.1797C24.1992 19.9245 24.2858 19.7103 24.459 19.5371C24.6322 19.3594 24.8669 19.2705 25.1631 19.2705C25.4639 19.2705 25.6986 19.3594 25.8672 19.5371C26.0404 19.7103 26.127 19.9245 26.127 20.1797C26.127 20.4349 26.0404 20.6491 25.8672 20.8223C25.6986 20.9954 25.4639 21.082 25.1631 21.082C24.8669 21.082 24.6322 20.9954 24.459 20.8223C24.2858 20.6491 24.1992 20.4349 24.1992 20.1797Z\" fill=\"#212121\"/>\n<rect width=\"64\" height=\"6\" transform=\"translate(30 13)\" fill=\"#EAEAEA\"/>\n<path d=\"M35.0176 41.5166V37.9893C35.0176 37.7249 34.9697 37.4971 34.874 37.3057C34.7783 37.1143 34.6325 36.9661 34.4365 36.8613C34.2451 36.7565 34.0036 36.7041 33.7119 36.7041C33.443 36.7041 33.2106 36.7497 33.0146 36.8408C32.8187 36.932 32.666 37.055 32.5566 37.21C32.4473 37.3649 32.3926 37.5404 32.3926 37.7363H30.752C30.752 37.4447 30.8226 37.1621 30.9639 36.8887C31.1051 36.6152 31.3102 36.3714 31.5791 36.1572C31.848 35.943 32.1693 35.7744 32.543 35.6514C32.9167 35.5283 33.3359 35.4668 33.8008 35.4668C34.3568 35.4668 34.849 35.5602 35.2773 35.7471C35.7103 35.9339 36.0498 36.2165 36.2959 36.5947C36.5465 36.9684 36.6719 37.4378 36.6719 38.0029V41.291C36.6719 41.6283 36.6947 41.9313 36.7402 42.2002C36.7904 42.4645 36.861 42.6947 36.9521 42.8906V43H35.2637C35.1862 42.8223 35.1247 42.5967 35.0791 42.3232C35.0381 42.0452 35.0176 41.7764 35.0176 41.5166ZM35.2568 38.502L35.2705 39.5205H34.0879C33.7826 39.5205 33.5137 39.5501 33.2812 39.6094C33.0488 39.6641 32.8551 39.7461 32.7002 39.8555C32.5452 39.9648 32.429 40.097 32.3516 40.252C32.2741 40.4069 32.2354 40.5824 32.2354 40.7783C32.2354 40.9743 32.2809 41.1543 32.3721 41.3184C32.4632 41.4779 32.5954 41.6032 32.7686 41.6943C32.9463 41.7855 33.1605 41.8311 33.4111 41.8311C33.7484 41.8311 34.0423 41.7627 34.293 41.626C34.5482 41.4847 34.7487 41.3138 34.8945 41.1133C35.0404 40.9082 35.1178 40.7145 35.127 40.5322L35.6602 41.2637C35.6055 41.4505 35.512 41.651 35.3799 41.8652C35.2477 42.0794 35.0745 42.2845 34.8604 42.4805C34.6507 42.6719 34.3978 42.8291 34.1016 42.9521C33.8099 43.0752 33.4727 43.1367 33.0898 43.1367C32.6068 43.1367 32.1761 43.041 31.7979 42.8496C31.4196 42.6536 31.1234 42.3916 30.9092 42.0635C30.695 41.7308 30.5879 41.3548 30.5879 40.9355C30.5879 40.5436 30.6608 40.1973 30.8066 39.8965C30.957 39.5911 31.1758 39.3359 31.4629 39.1309C31.7546 38.9258 32.11 38.7708 32.5293 38.666C32.9486 38.5566 33.4271 38.502 33.9648 38.502H35.2568ZM38.4629 42.1797C38.4629 41.9245 38.5495 41.7103 38.7227 41.5371C38.8958 41.3594 39.1305 41.2705 39.4268 41.2705C39.7275 41.2705 39.9622 41.3594 40.1309 41.5371C40.304 41.7103 40.3906 41.9245 40.3906 42.1797C40.3906 42.4349 40.304 42.6491 40.1309 42.8223C39.9622 42.9954 39.7275 43.082 39.4268 43.082C39.1305 43.082 38.8958 42.9954 38.7227 42.8223C38.5495 42.6491 38.4629 42.4349 38.4629 42.1797Z\" fill=\"#212121\"/>\n<rect width=\"50\" height=\"6\" transform=\"translate(46 35)\" fill=\"#EAEAEA\"/>\n<path d=\"M30.8545 54.5H32.502V63.4209L32.3447 65H30.8545V54.5ZM37.3281 61.2334V61.377C37.3281 61.9238 37.2666 62.4274 37.1436 62.8877C37.0251 63.3434 36.8428 63.7399 36.5967 64.0771C36.3551 64.4144 36.0544 64.6764 35.6943 64.8633C35.3389 65.0456 34.9264 65.1367 34.457 65.1367C33.9967 65.1367 33.5957 65.0501 33.2539 64.877C32.9121 64.7038 32.625 64.4577 32.3926 64.1387C32.1647 63.8197 31.9801 63.4391 31.8389 62.9971C31.6976 62.555 31.5973 62.0674 31.5381 61.5342V61.0762C31.5973 60.5384 31.6976 60.0508 31.8389 59.6133C31.9801 59.1712 32.1647 58.7907 32.3926 58.4717C32.625 58.1481 32.9098 57.8997 33.2471 57.7266C33.5889 57.5534 33.9876 57.4668 34.4434 57.4668C34.9173 57.4668 35.3343 57.5579 35.6943 57.7402C36.0589 57.9225 36.362 58.1823 36.6035 58.5195C36.8451 58.8522 37.0251 59.2487 37.1436 59.709C37.2666 60.1693 37.3281 60.6774 37.3281 61.2334ZM35.6807 61.377V61.2334C35.6807 60.9007 35.6533 60.5885 35.5986 60.2969C35.5439 60.0007 35.4528 59.7409 35.3252 59.5176C35.2021 59.2943 35.0335 59.1188 34.8193 58.9912C34.6097 58.859 34.3477 58.793 34.0332 58.793C33.7415 58.793 33.4909 58.8431 33.2812 58.9434C33.0716 59.0436 32.8962 59.1803 32.7549 59.3535C32.6136 59.5267 32.502 59.7272 32.4199 59.9551C32.3424 60.1829 32.29 60.429 32.2627 60.6934V61.9307C32.3037 62.2725 32.3903 62.5869 32.5225 62.874C32.6592 63.1566 32.8506 63.3844 33.0967 63.5576C33.3428 63.7262 33.6595 63.8105 34.0469 63.8105C34.3522 63.8105 34.6097 63.749 34.8193 63.626C35.029 63.5029 35.1953 63.332 35.3184 63.1133C35.446 62.89 35.5371 62.6302 35.5918 62.334C35.651 62.0378 35.6807 61.7188 35.6807 61.377ZM38.791 64.1797C38.791 63.9245 38.8776 63.7103 39.0508 63.5371C39.224 63.3594 39.4587 63.2705 39.7549 63.2705C40.0557 63.2705 40.2904 63.3594 40.459 63.5371C40.6322 63.7103 40.7188 63.9245 40.7188 64.1797C40.7188 64.4349 40.6322 64.6491 40.459 64.8223C40.2904 64.9954 40.0557 65.082 39.7549 65.082C39.4587 65.082 39.224 64.9954 39.0508 64.8223C38.8776 64.6491 38.791 64.4349 38.791 64.1797Z\" fill=\"#212121\"/>\n<rect width=\"50\" height=\"6\" transform=\"translate(46 57)\" fill=\"#EAEAEA\"/>\n<path d=\"M48.6113 79.6035V87H46.957V79.6035H48.6113ZM46.8477 77.6621C46.8477 77.4115 46.9297 77.2041 47.0938 77.04C47.2624 76.8714 47.4948 76.7871 47.791 76.7871C48.0827 76.7871 48.3128 76.8714 48.4814 77.04C48.6501 77.2041 48.7344 77.4115 48.7344 77.6621C48.7344 77.9082 48.6501 78.1133 48.4814 78.2773C48.3128 78.4414 48.0827 78.5234 47.791 78.5234C47.4948 78.5234 47.2624 78.4414 47.0938 78.2773C46.9297 78.1133 46.8477 77.9082 46.8477 77.6621ZM50.4844 86.1797C50.4844 85.9245 50.571 85.7103 50.7441 85.5371C50.9173 85.3594 51.152 85.2705 51.4482 85.2705C51.749 85.2705 51.9837 85.3594 52.1523 85.5371C52.3255 85.7103 52.4121 85.9245 52.4121 86.1797C52.4121 86.4349 52.3255 86.6491 52.1523 86.8223C51.9837 86.9954 51.749 87.082 51.4482 87.082C51.152 87.082 50.9173 86.9954 50.7441 86.8223C50.571 86.6491 50.4844 86.4349 50.4844 86.1797Z\" fill=\"#212121\"/>\n<rect width=\"38\" height=\"6\" transform=\"translate(58 79)\" fill=\"#EAEAEA\"/>\n<path d=\"M20.7441 104.502H18.208L18.1943 103.251H20.4092C20.7829 103.251 21.0996 103.196 21.3594 103.087C21.6237 102.973 21.8242 102.811 21.9609 102.602C22.0977 102.387 22.166 102.13 22.166 101.829C22.166 101.496 22.1022 101.225 21.9746 101.016C21.847 100.806 21.651 100.653 21.3867 100.558C21.127 100.462 20.7943 100.414 20.3887 100.414H18.7275V109H17.0117V99.0469H20.3887C20.9355 99.0469 21.4232 99.0993 21.8516 99.2041C22.2845 99.3089 22.6514 99.473 22.9521 99.6963C23.2575 99.915 23.4876 100.193 23.6426 100.53C23.8021 100.868 23.8818 101.269 23.8818 101.733C23.8818 102.144 23.7839 102.52 23.5879 102.861C23.3919 103.199 23.1025 103.474 22.7197 103.688C22.3369 103.903 21.8607 104.03 21.291 104.071L20.7441 104.502ZM20.6689 109H17.668L18.4404 107.64H20.6689C21.0563 107.64 21.3799 107.576 21.6396 107.448C21.8994 107.316 22.0931 107.136 22.2207 106.908C22.3529 106.676 22.4189 106.405 22.4189 106.095C22.4189 105.771 22.362 105.491 22.248 105.254C22.1341 105.012 21.9541 104.828 21.708 104.7C21.4619 104.568 21.1406 104.502 20.7441 104.502H18.8164L18.8301 103.251H21.3389L21.7285 103.723C22.2754 103.741 22.7243 103.862 23.0752 104.085C23.4307 104.308 23.695 104.598 23.8682 104.953C24.0413 105.309 24.1279 105.691 24.1279 106.102C24.1279 106.735 23.9889 107.266 23.7109 107.694C23.4375 108.123 23.0433 108.449 22.5283 108.672C22.0133 108.891 21.3936 109 20.6689 109ZM25.7617 108.18C25.7617 107.924 25.8483 107.71 26.0215 107.537C26.1947 107.359 26.4294 107.271 26.7256 107.271C27.0264 107.271 27.2611 107.359 27.4297 107.537C27.6029 107.71 27.6895 107.924 27.6895 108.18C27.6895 108.435 27.6029 108.649 27.4297 108.822C27.2611 108.995 27.0264 109.082 26.7256 109.082C26.4294 109.082 26.1947 108.995 26.0215 108.822C25.8483 108.649 25.7617 108.435 25.7617 108.18Z\" fill=\"#212121\"/>\n<rect width=\"63\" height=\"6\" transform=\"translate(33 101)\" fill=\"#EAEAEA\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\" stroke=\"#DADADA\"/>\n</svg>`;\n\nexport const SVG_NUMBER_5 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18.8438 11.0469V21H17.1279V11.0469H18.8438Z\" fill=\"#212121\"/>\n<rect width=\"72\" height=\"6\" transform=\"translate(24 13)\" fill=\"#EAEAEA\"/>\n<path d=\"M34.8877 34.373L31.9141 43H30.1162L33.8623 33.0469H35.0107L34.8877 34.373ZM37.376 43L34.3955 34.373L34.2656 33.0469H35.4209L39.1807 43H37.376ZM37.2324 39.3086V40.6689H31.8184V39.3086H37.2324ZM40.1992 42.1797C40.1992 41.9245 40.2858 41.7103 40.459 41.5371C40.6322 41.3594 40.8669 41.2705 41.1631 41.2705C41.4639 41.2705 41.6986 41.3594 41.8672 41.5371C42.0404 41.7103 42.127 41.9245 42.127 42.1797C42.127 42.4349 42.0404 42.6491 41.8672 42.8223C41.6986 42.9954 41.4639 43.082 41.1631 43.082C40.8669 43.082 40.6322 42.9954 40.459 42.8223C40.2858 42.6491 40.1992 42.4349 40.1992 42.1797Z\" fill=\"#212121\"/>\n<rect width=\"48\" height=\"6\" transform=\"translate(48 35)\" fill=\"#EAEAEA\"/>\n<path d=\"M34.7441 60.502H32.208L32.1943 59.251H34.4092C34.7829 59.251 35.0996 59.1963 35.3594 59.0869C35.6237 58.973 35.8242 58.8112 35.9609 58.6016C36.0977 58.3874 36.166 58.1299 36.166 57.8291C36.166 57.4964 36.1022 57.2253 35.9746 57.0156C35.847 56.806 35.651 56.6533 35.3867 56.5576C35.127 56.4619 34.7943 56.4141 34.3887 56.4141H32.7275V65H31.0117V55.0469H34.3887C34.9355 55.0469 35.4232 55.0993 35.8516 55.2041C36.2845 55.3089 36.6514 55.473 36.9521 55.6963C37.2575 55.915 37.4876 56.193 37.6426 56.5303C37.8021 56.8675 37.8818 57.2686 37.8818 57.7334C37.8818 58.1436 37.7839 58.5195 37.5879 58.8613C37.3919 59.1986 37.1025 59.4743 36.7197 59.6885C36.3369 59.9027 35.8607 60.0303 35.291 60.0713L34.7441 60.502ZM34.6689 65H31.668L32.4404 63.6396H34.6689C35.0563 63.6396 35.3799 63.5758 35.6396 63.4482C35.8994 63.3161 36.0931 63.1361 36.2207 62.9082C36.3529 62.6758 36.4189 62.4046 36.4189 62.0947C36.4189 61.7712 36.362 61.4909 36.248 61.2539C36.1341 61.0124 35.9541 60.8278 35.708 60.7002C35.4619 60.568 35.1406 60.502 34.7441 60.502H32.8164L32.8301 59.251H35.3389L35.7285 59.7227C36.2754 59.7409 36.7243 59.8617 37.0752 60.085C37.4307 60.3083 37.695 60.5977 37.8682 60.9531C38.0413 61.3086 38.1279 61.6914 38.1279 62.1016C38.1279 62.735 37.9889 63.266 37.7109 63.6943C37.4375 64.1227 37.0433 64.4486 36.5283 64.6719C36.0133 64.8906 35.3936 65 34.6689 65ZM39.7617 64.1797C39.7617 63.9245 39.8483 63.7103 40.0215 63.5371C40.1947 63.3594 40.4294 63.2705 40.7256 63.2705C41.0264 63.2705 41.2611 63.3594 41.4297 63.5371C41.6029 63.7103 41.6895 63.9245 41.6895 64.1797C41.6895 64.4349 41.6029 64.6491 41.4297 64.8223C41.2611 64.9954 41.0264 65.082 40.7256 65.082C40.4294 65.082 40.1947 64.9954 40.0215 64.8223C39.8483 64.6491 39.7617 64.4349 39.7617 64.1797Z\" fill=\"#212121\"/>\n<rect width=\"49\" height=\"6\" transform=\"translate(47 57)\" fill=\"#EAEAEA\"/>\n<path d=\"M51.25 77.0127V87H49.6025V78.9678L47.1621 79.7949V78.4346L51.0518 77.0127H51.25ZM54.873 86.1797C54.873 85.9245 54.9596 85.7103 55.1328 85.5371C55.306 85.3594 55.5407 85.2705 55.8369 85.2705C56.1377 85.2705 56.3724 85.3594 56.541 85.5371C56.7142 85.7103 56.8008 85.9245 56.8008 86.1797C56.8008 86.4349 56.7142 86.6491 56.541 86.8223C56.3724 86.9954 56.1377 87.082 55.8369 87.082C55.5407 87.082 55.306 86.9954 55.1328 86.8223C54.9596 86.6491 54.873 86.4349 54.873 86.1797Z\" fill=\"#212121\"/>\n<rect width=\"34\" height=\"6\" transform=\"translate(62 79)\" fill=\"#EAEAEA\"/>\n<path d=\"M18.8438 99.0469V109H17.1279V99.0469H18.8438ZM22.8086 99.0469V109H21.0928V99.0469H22.8086Z\" fill=\"#212121\"/>\n<rect width=\"68\" height=\"6\" transform=\"translate(28 101)\" fill=\"#EAEAEA\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\" stroke=\"#DADADA\"/>\n</svg>`;\n\nexport const SVG_NUMBER_6 = `<svg width=\"104\" height=\"120\" viewBox=\"0 0 104 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M23.2393 15.1895V16.8164C23.2393 17.5957 23.1618 18.2611 23.0068 18.8125C22.8564 19.3594 22.6377 19.8037 22.3506 20.1455C22.0635 20.4873 21.7194 20.738 21.3184 20.8975C20.9219 21.057 20.4775 21.1367 19.9854 21.1367C19.5934 21.1367 19.2288 21.0866 18.8916 20.9863C18.5589 20.8861 18.2581 20.7288 17.9893 20.5146C17.7204 20.3005 17.4902 20.0247 17.2988 19.6875C17.112 19.3457 16.9661 18.9378 16.8613 18.4639C16.7611 17.9899 16.7109 17.4408 16.7109 16.8164V15.1895C16.7109 14.4056 16.7884 13.7448 16.9434 13.207C17.0983 12.6647 17.3193 12.2249 17.6064 11.8877C17.8936 11.5459 18.2354 11.2975 18.6318 11.1426C19.0329 10.9876 19.4795 10.9102 19.9717 10.9102C20.3682 10.9102 20.7327 10.9603 21.0654 11.0605C21.4027 11.1562 21.7035 11.3089 21.9678 11.5186C22.2367 11.7282 22.4645 12.0016 22.6514 12.3389C22.8428 12.6715 22.9886 13.0749 23.0889 13.5488C23.1891 14.0182 23.2393 14.5651 23.2393 15.1895ZM21.5918 17.0488V14.9434C21.5918 14.5469 21.569 14.1982 21.5234 13.8975C21.4779 13.5921 21.4095 13.3346 21.3184 13.125C21.2318 12.9108 21.1224 12.7376 20.9902 12.6055C20.8581 12.4688 20.7077 12.3708 20.5391 12.3115C20.3704 12.2477 20.1813 12.2158 19.9717 12.2158C19.7165 12.2158 19.4886 12.266 19.2881 12.3662C19.0876 12.4619 18.9189 12.6169 18.7822 12.8311C18.6455 13.0452 18.5407 13.3278 18.4678 13.6787C18.3994 14.0251 18.3652 14.4466 18.3652 14.9434V17.0488C18.3652 17.4499 18.388 17.8031 18.4336 18.1084C18.4792 18.4137 18.5475 18.6758 18.6387 18.8945C18.7298 19.1087 18.8392 19.2865 18.9668 19.4277C19.099 19.5645 19.2493 19.6647 19.418 19.7285C19.5911 19.7923 19.7803 19.8242 19.9854 19.8242C20.2451 19.8242 20.4753 19.7741 20.6758 19.6738C20.8763 19.5736 21.0449 19.4141 21.1816 19.1953C21.3184 18.972 21.4209 18.6826 21.4893 18.3271C21.5576 17.9717 21.5918 17.5456 21.5918 17.0488ZM29.207 11.0127V21H27.5596V12.9678L25.1191 13.7949V12.4346L29.0088 11.0127H29.207ZM32.8301 20.1797C32.8301 19.9245 32.9167 19.7103 33.0898 19.5371C33.263 19.3594 33.4977 19.2705 33.7939 19.2705C34.0947 19.2705 34.3294 19.3594 34.498 19.5371C34.6712 19.7103 34.7578 19.9245 34.7578 20.1797C34.7578 20.4349 34.6712 20.6491 34.498 20.8223C34.3294 20.9954 34.0947 21.082 33.7939 21.082C33.4977 21.082 33.263 20.9954 33.0898 20.8223C32.9167 20.6491 32.8301 20.4349 32.8301 20.1797Z\" fill=\"#212121\"/>\n<rect width=\"56\" height=\"6\" transform=\"translate(40 13)\" fill=\"#EAEAEA\"/>\n<path d=\"M35.0176 41.5166V37.9893C35.0176 37.7249 34.9697 37.4971 34.874 37.3057C34.7783 37.1143 34.6325 36.9661 34.4365 36.8613C34.2451 36.7565 34.0036 36.7041 33.7119 36.7041C33.443 36.7041 33.2106 36.7497 33.0146 36.8408C32.8187 36.932 32.666 37.055 32.5566 37.21C32.4473 37.3649 32.3926 37.5404 32.3926 37.7363H30.752C30.752 37.4447 30.8226 37.1621 30.9639 36.8887C31.1051 36.6152 31.3102 36.3714 31.5791 36.1572C31.848 35.943 32.1693 35.7744 32.543 35.6514C32.9167 35.5283 33.3359 35.4668 33.8008 35.4668C34.3568 35.4668 34.849 35.5602 35.2773 35.7471C35.7103 35.9339 36.0498 36.2165 36.2959 36.5947C36.5465 36.9684 36.6719 37.4378 36.6719 38.0029V41.291C36.6719 41.6283 36.6947 41.9313 36.7402 42.2002C36.7904 42.4645 36.861 42.6947 36.9521 42.8906V43H35.2637C35.1862 42.8223 35.1247 42.5967 35.0791 42.3232C35.0381 42.0452 35.0176 41.7764 35.0176 41.5166ZM35.2568 38.502L35.2705 39.5205H34.0879C33.7826 39.5205 33.5137 39.5501 33.2812 39.6094C33.0488 39.6641 32.8551 39.7461 32.7002 39.8555C32.5452 39.9648 32.429 40.097 32.3516 40.252C32.2741 40.4069 32.2354 40.5824 32.2354 40.7783C32.2354 40.9743 32.2809 41.1543 32.3721 41.3184C32.4632 41.4779 32.5954 41.6032 32.7686 41.6943C32.9463 41.7855 33.1605 41.8311 33.4111 41.8311C33.7484 41.8311 34.0423 41.7627 34.293 41.626C34.5482 41.4847 34.7487 41.3138 34.8945 41.1133C35.0404 40.9082 35.1178 40.7145 35.127 40.5322L35.6602 41.2637C35.6055 41.4505 35.512 41.651 35.3799 41.8652C35.2477 42.0794 35.0745 42.2845 34.8604 42.4805C34.6507 42.6719 34.3978 42.8291 34.1016 42.9521C33.8099 43.0752 33.4727 43.1367 33.0898 43.1367C32.6068 43.1367 32.1761 43.041 31.7979 42.8496C31.4196 42.6536 31.1234 42.3916 30.9092 42.0635C30.695 41.7308 30.5879 41.3548 30.5879 40.9355C30.5879 40.5436 30.6608 40.1973 30.8066 39.8965C30.957 39.5911 31.1758 39.3359 31.4629 39.1309C31.7546 38.9258 32.11 38.7708 32.5293 38.666C32.9486 38.5566 33.4271 38.502 33.9648 38.502H35.2568ZM38.4629 42.1797C38.4629 41.9245 38.5495 41.7103 38.7227 41.5371C38.8958 41.3594 39.1305 41.2705 39.4268 41.2705C39.7275 41.2705 39.9622 41.3594 40.1309 41.5371C40.304 41.7103 40.3906 41.9245 40.3906 42.1797C40.3906 42.4349 40.304 42.6491 40.1309 42.8223C39.9622 42.9954 39.7275 43.082 39.4268 43.082C39.1305 43.082 38.8958 42.9954 38.7227 42.8223C38.5495 42.6491 38.4629 42.4349 38.4629 42.1797Z\" fill=\"#212121\"/>\n<rect width=\"50\" height=\"6\" transform=\"translate(46 35)\" fill=\"#EAEAEA\"/>\n<path d=\"M30.8545 54.5H32.502V63.4209L32.3447 65H30.8545V54.5ZM37.3281 61.2334V61.377C37.3281 61.9238 37.2666 62.4274 37.1436 62.8877C37.0251 63.3434 36.8428 63.7399 36.5967 64.0771C36.3551 64.4144 36.0544 64.6764 35.6943 64.8633C35.3389 65.0456 34.9264 65.1367 34.457 65.1367C33.9967 65.1367 33.5957 65.0501 33.2539 64.877C32.9121 64.7038 32.625 64.4577 32.3926 64.1387C32.1647 63.8197 31.9801 63.4391 31.8389 62.9971C31.6976 62.555 31.5973 62.0674 31.5381 61.5342V61.0762C31.5973 60.5384 31.6976 60.0508 31.8389 59.6133C31.9801 59.1712 32.1647 58.7907 32.3926 58.4717C32.625 58.1481 32.9098 57.8997 33.2471 57.7266C33.5889 57.5534 33.9876 57.4668 34.4434 57.4668C34.9173 57.4668 35.3343 57.5579 35.6943 57.7402C36.0589 57.9225 36.362 58.1823 36.6035 58.5195C36.8451 58.8522 37.0251 59.2487 37.1436 59.709C37.2666 60.1693 37.3281 60.6774 37.3281 61.2334ZM35.6807 61.377V61.2334C35.6807 60.9007 35.6533 60.5885 35.5986 60.2969C35.5439 60.0007 35.4528 59.7409 35.3252 59.5176C35.2021 59.2943 35.0335 59.1188 34.8193 58.9912C34.6097 58.859 34.3477 58.793 34.0332 58.793C33.7415 58.793 33.4909 58.8431 33.2812 58.9434C33.0716 59.0436 32.8962 59.1803 32.7549 59.3535C32.6136 59.5267 32.502 59.7272 32.4199 59.9551C32.3424 60.1829 32.29 60.429 32.2627 60.6934V61.9307C32.3037 62.2725 32.3903 62.5869 32.5225 62.874C32.6592 63.1566 32.8506 63.3844 33.0967 63.5576C33.3428 63.7262 33.6595 63.8105 34.0469 63.8105C34.3522 63.8105 34.6097 63.749 34.8193 63.626C35.029 63.5029 35.1953 63.332 35.3184 63.1133C35.446 62.89 35.5371 62.6302 35.5918 62.334C35.651 62.0378 35.6807 61.7188 35.6807 61.377ZM38.791 64.1797C38.791 63.9245 38.8776 63.7103 39.0508 63.5371C39.224 63.3594 39.4587 63.2705 39.7549 63.2705C40.0557 63.2705 40.2904 63.3594 40.459 63.5371C40.6322 63.7103 40.7188 63.9245 40.7188 64.1797C40.7188 64.4349 40.6322 64.6491 40.459 64.8223C40.2904 64.9954 40.0557 65.082 39.7549 65.082C39.4587 65.082 39.224 64.9954 39.0508 64.8223C38.8776 64.6491 38.791 64.4349 38.791 64.1797Z\" fill=\"#212121\"/>\n<rect width=\"50\" height=\"6\" transform=\"translate(46 57)\" fill=\"#EAEAEA\"/>\n<path d=\"M48.6113 79.6035V87H46.957V79.6035H48.6113ZM46.8477 77.6621C46.8477 77.4115 46.9297 77.2041 47.0938 77.04C47.2624 76.8714 47.4948 76.7871 47.791 76.7871C48.0827 76.7871 48.3128 76.8714 48.4814 77.04C48.6501 77.2041 48.7344 77.4115 48.7344 77.6621C48.7344 77.9082 48.6501 78.1133 48.4814 78.2773C48.3128 78.4414 48.0827 78.5234 47.791 78.5234C47.4948 78.5234 47.2624 78.4414 47.0938 78.2773C46.9297 78.1133 46.8477 77.9082 46.8477 77.6621ZM50.4844 86.1797C50.4844 85.9245 50.571 85.7103 50.7441 85.5371C50.9173 85.3594 51.152 85.2705 51.4482 85.2705C51.749 85.2705 51.9837 85.3594 52.1523 85.5371C52.3255 85.7103 52.4121 85.9245 52.4121 86.1797C52.4121 86.4349 52.3255 86.6491 52.1523 86.8223C51.9837 86.9954 51.749 87.082 51.4482 87.082C51.152 87.082 50.9173 86.9954 50.7441 86.8223C50.571 86.6491 50.4844 86.4349 50.4844 86.1797Z\" fill=\"#212121\"/>\n<rect width=\"38\" height=\"6\" transform=\"translate(58 79)\" fill=\"#EAEAEA\"/>\n<path d=\"M23.2393 103.189V104.816C23.2393 105.596 23.1618 106.261 23.0068 106.812C22.8564 107.359 22.6377 107.804 22.3506 108.146C22.0635 108.487 21.7194 108.738 21.3184 108.897C20.9219 109.057 20.4775 109.137 19.9854 109.137C19.5934 109.137 19.2288 109.087 18.8916 108.986C18.5589 108.886 18.2581 108.729 17.9893 108.515C17.7204 108.3 17.4902 108.025 17.2988 107.688C17.112 107.346 16.9661 106.938 16.8613 106.464C16.7611 105.99 16.7109 105.441 16.7109 104.816V103.189C16.7109 102.406 16.7884 101.745 16.9434 101.207C17.0983 100.665 17.3193 100.225 17.6064 99.8877C17.8936 99.5459 18.2354 99.2975 18.6318 99.1426C19.0329 98.9876 19.4795 98.9102 19.9717 98.9102C20.3682 98.9102 20.7327 98.9603 21.0654 99.0605C21.4027 99.1562 21.7035 99.3089 21.9678 99.5186C22.2367 99.7282 22.4645 100.002 22.6514 100.339C22.8428 100.672 22.9886 101.075 23.0889 101.549C23.1891 102.018 23.2393 102.565 23.2393 103.189ZM21.5918 105.049V102.943C21.5918 102.547 21.569 102.198 21.5234 101.897C21.4779 101.592 21.4095 101.335 21.3184 101.125C21.2318 100.911 21.1224 100.738 20.9902 100.605C20.8581 100.469 20.7077 100.371 20.5391 100.312C20.3704 100.248 20.1813 100.216 19.9717 100.216C19.7165 100.216 19.4886 100.266 19.2881 100.366C19.0876 100.462 18.9189 100.617 18.7822 100.831C18.6455 101.045 18.5407 101.328 18.4678 101.679C18.3994 102.025 18.3652 102.447 18.3652 102.943V105.049C18.3652 105.45 18.388 105.803 18.4336 106.108C18.4792 106.414 18.5475 106.676 18.6387 106.895C18.7298 107.109 18.8392 107.286 18.9668 107.428C19.099 107.564 19.2493 107.665 19.418 107.729C19.5911 107.792 19.7803 107.824 19.9854 107.824C20.2451 107.824 20.4753 107.774 20.6758 107.674C20.8763 107.574 21.0449 107.414 21.1816 107.195C21.3184 106.972 21.4209 106.683 21.4893 106.327C21.5576 105.972 21.5918 105.546 21.5918 105.049ZM31.3809 107.688V109H24.709V107.872L27.9492 104.338C28.3047 103.937 28.585 103.59 28.79 103.299C28.9951 103.007 29.1387 102.745 29.2207 102.513C29.3073 102.276 29.3506 102.046 29.3506 101.822C29.3506 101.508 29.2913 101.232 29.1729 100.995C29.0589 100.754 28.8903 100.564 28.667 100.428C28.4437 100.286 28.1725 100.216 27.8535 100.216C27.4844 100.216 27.1745 100.296 26.9238 100.455C26.6732 100.615 26.484 100.836 26.3564 101.118C26.2288 101.396 26.165 101.715 26.165 102.075H24.5176C24.5176 101.496 24.6497 100.968 24.9141 100.489C25.1784 100.006 25.5612 99.6234 26.0625 99.3408C26.5638 99.0537 27.1676 98.9102 27.874 98.9102C28.5394 98.9102 29.1045 99.0218 29.5693 99.2451C30.0342 99.4684 30.3874 99.7852 30.6289 100.195C30.875 100.605 30.998 101.091 30.998 101.651C30.998 101.961 30.9479 102.269 30.8477 102.574C30.7474 102.88 30.6038 103.185 30.417 103.49C30.2347 103.791 30.0182 104.094 29.7676 104.399C29.5169 104.7 29.2412 105.006 28.9404 105.315L26.7871 107.688H31.3809ZM32.8301 108.18C32.8301 107.924 32.9167 107.71 33.0898 107.537C33.263 107.359 33.4977 107.271 33.7939 107.271C34.0947 107.271 34.3294 107.359 34.498 107.537C34.6712 107.71 34.7578 107.924 34.7578 108.18C34.7578 108.435 34.6712 108.649 34.498 108.822C34.3294 108.995 34.0947 109.082 33.7939 109.082C33.4977 109.082 33.263 108.995 33.0898 108.822C32.9167 108.649 32.8301 108.435 32.8301 108.18Z\" fill=\"#212121\"/>\n<rect width=\"56\" height=\"6\" transform=\"translate(40 101)\" fill=\"#EAEAEA\"/>\n<rect x=\"0.5\" y=\"0.5\" width=\"103\" height=\"119\" stroke=\"#DADADA\"/>\n</svg>`;\n","import { DomSanitizer } from '@angular/platform-browser';\nimport { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\n\nimport {\n SVG_MARKER_1,\n SVG_MARKER_2,\n SVG_MARKER_3,\n SVG_MARKER_4,\n SVG_MARKER_5,\n SVG_MARKER_6,\n SVG_NUMBER_1,\n SVG_NUMBER_2,\n SVG_NUMBER_3,\n SVG_NUMBER_4,\n SVG_NUMBER_5,\n SVG_NUMBER_6\n} from '../editor-toolbar/constants/svg-icons.const';\n\n@Injectable({\n providedIn: 'any'\n})\nexport class CustomIconService {\n constructor(private matIconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {}\n\n register(): void {\n this.matIconRegistry.addSvgIconLiteral('marker-1', this.sanitizer.bypassSecurityTrustHtml(SVG_MARKER_1));\n this.matIconRegistry.addSvgIconLiteral('marker-2', this.sanitizer.bypassSecurityTrustHtml(SVG_MARKER_2));\n this.matIconRegistry.addSvgIconLiteral('marker-3', this.sanitizer.bypassSecurityTrustHtml(SVG_MARKER_3));\n this.matIconRegistry.addSvgIconLiteral('marker-4', this.sanitizer.bypassSecurityTrustHtml(SVG_MARKER_4));\n this.matIconRegistry.addSvgIconLiteral('marker-5', this.sanitizer.bypassSecurityTrustHtml(SVG_MARKER_5));\n this.matIconRegistry.addSvgIconLiteral('marker-6', this.sanitizer.bypassSecurityTrustHtml(SVG_MARKER_6));\n this.matIconRegistry.addSvgIconLiteral('number-1', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_1));\n this.matIconRegistry.addSvgIconLiteral('number-2', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_2));\n this.matIconRegistry.addSvgIconLiteral('number-3', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_3));\n this.matIconRegistry.addSvgIconLiteral('number-4', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_4));\n this.matIconRegistry.addSvgIconLiteral('number-5', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_5));\n this.matIconRegistry.addSvgIconLiteral('number-6', this.sanitizer.bypassSecurityTrustHtml(SVG_NUMBER_6));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Injector,\n Input,\n Output,\n ChangeDetectorRef,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { filter, take } from 'rxjs';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { Alignment } from '../editor-toolbar/enums/alignment.enum';\nimport { CustomIconService } from '../services/custom-icon.service';\nimport { DEFAULT_FILE_NAME } from '../constants/default-file-name.const';\nimport { DEFAULT_FONT_SIZE } from '../editor/core/constants/editor.const';\nimport { EXTERNAL_ELEMENT_SERVICE } from '../editor/custom-components/external-element/external-elements.const';\nimport { ElementDataModel } from '../editor/custom-components/external-element/models/element-data.model';\nimport { ExternalElementModel } from '../editor/custom-components/external-element/models/external-element.model';\nimport { ExternalElementService } from '../editor/custom-components/external-element/external-element.service';\nimport { IToolbarStyles } from '../editor/core/interfaces/toolbar-styles.interface';\nimport { InsertTableComponent } from '../insert-table/insert-table.component';\nimport { Mode } from '../enums/mode.enum';\nimport { NumberingLevelModel } from '../../models/generated/numbering-level.model';\nimport { NumberingTemplateType } from '../editor-toolbar/enums/numbering-template-type.enum';\nimport { NumberingTemplates } from '../editor-toolbar/constants/numbering-templates.const';\nimport { OperationsHistoryInfoModel } from '../editor/operation-history/operations-history-info.model';\nimport { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';\nimport { TextStyleModel } from '../../models/generated/text-style.model';\nimport { ToolbarStylesHelper } from '../editor-toolbar/helpers/toolbar-styles.helper';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n InsertTableComponent,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n MatSelectModule,\n MatTooltipModule\n ],\n providers: [ExternalElementService],\n selector: 'app-editor-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './editor-header.component.html',\n styleUrls: ['./editor-header.component.scss']\n})\nexport class EditorHeaderComponent {\n @Input() isViewOnly: boolean;\n\n @Input() hasSelection: boolean;\n\n @Input() clipboardData: string;\n\n @Input() title: string;\n\n @Input()\n set historyInfo(value: OperationsHistoryInfoModel) {\n this.canUndo = value.step !== -1;\n this.canRedo = value.step < value.lastStep;\n }\n\n @Output() openFileFromDisk = new EventEmitter<any>();\n\n @Output() addCustomElement = new EventEmitter<ElementDataModel>();\n\n @Output() saveAs = new EventEmitter();\n\n @Output() print = new EventEmitter();\n\n @Output() insertPageBreak = new EventEmitter<any>();\n\n @Output() createDocument = new EventEmitter<any>();\n\n @Output() insertImage = new EventEmitter<any>();\n\n @Output() changeMode = new EventEmitter<Mode>();\n\n @Output() renameDocumentTitle = new EventEmitter<string>();\n\n @Output() delete = new EventEmitter<string>();\n\n @Output() openEditMenu = new EventEmitter();\n\n @Output() undo = new EventEmitter<string>();\n\n @Output() redo = new EventEmitter<string>();\n\n @Output() cutSelected = new EventEmitter();\n\n @Output() copySelected = new EventEmitter();\n\n @Output() pasteClipboardData = new EventEmitter();\n\n @Output() selectAll = new EventEmitter();\n\n @Output() removeSelected = new EventEmitter();\n\n @Output() insertLink = new EventEmitter();\n\n @Output() createElement = new EventEmitter<ElementDataModel>();\n\n @Output() changeParagraphStyle = new EventEmitter<ParagraphStyleModel>();\n\n @Output() changeTextStyle = new EventEmitter<TextStyleModel>();\n\n @Output() setNumberingTemplateType = new EventEmitter<NumberingLevelModel[]>();\n\n @Output() removeNumberings = new EventEmitter<void>();\n\n @ViewChild('titleSpan', { static: true }) titleSpan: ElementRef<HTMLElement>;\n\n @Input()\n set styles(value: IToolbarStyles) {\n this._styles = value;\n this._styles = value;\n this.numberingTemplateType = ToolbarStylesHelper.getNumberingTemplateType(value.numberingLevelsStyles);\n }\n get styles(): IToolbarStyles {\n return this._styles;\n }\n private _styles: IToolbarStyles;\n\n @Output() insertTable = new EventEmitter<{ rows: number; columns: number }>();\n\n @ViewChild('tableInsert') tableInsertMenu: MatMenu;\n\n readonly elements: ExternalElementModel[];\n\n readonly mode = Mode;\n\n readonly alignments = Alignment;\n\n selectedMode = Mode.Edit;\n\n canUndo: boolean;\n\n canRedo: boolean;\n\n numberingTemplateType: NumberingTemplateType | null;\n\n numberingTemplateTypes = NumberingTemplateType;\n\n modeOptions = [\n {\n id: Mode.Edit,\n name: 'Editing',\n text: 'Edit document',\n icon: 'icon-edit'\n },\n {\n id: Mode.Fill,\n name: 'Filling',\n text: 'Fill or print document',\n icon: 'icon-fill-done'\n },\n {\n id: Mode.View,\n name: 'Viewing',\n text: 'Read or print document',\n icon: 'icon-view'\n }\n ];\n\n showInsertTableMenu = false;\n\n constructor(private cdr: ChangeDetectorRef, private injector: Injector, private customIconService: CustomIconService) {\n this.customIconService.register();\n this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;\n }\n\n onOpenFileFromDisk(event: any): void {\n this.openFileFromDisk.emit(event);\n event.target.value = null;\n }\n\n onSaveAs(): void {\n this.saveAs.emit();\n }\n\n onPrint(): void {\n this.print.emit();\n }\n\n onDelete(): void {\n this.delete.emit();\n }\n\n onInsertImage(event: any): void {\n this.insertImage.emit(event);\n event.target.value = null;\n }\n\n onInsertLink(): void {\n this.insertLink.emit();\n }\n\n onRenameTitle(event: FocusEvent): void {\n (event.target as HTMLElement).contentEditable = 'false';\n this.title = (event.target as HTMLElement).textContent || DEFAULT_FILE_NAME;\n (event.target as HTMLElement).innerText = this.title;\n this.renameDocumentTitle.emit(this.title);\n this.cdr.detectChanges();\n }\n\n onRename(): void {\n this.setTitleActive(this.titleSpan.nativeElement);\n }\n\n onFocus(event: MouseEvent) {\n this.setTitleActive(event.target as HTMLElement);\n }\n\n menuOpened(): void {\n this.openEditMenu.emit();\n }\n\n onUndo(): void {\n this.undo.emit();\n }\n\n onRedo(): void {\n this.redo.emit();\n }\n\n onCut(): void {\n this.cutSelected.emit();\n }\n\n onCopy(): void {\n this.copySelected.emit();\n }\n\n onPaste(): void {\n this.pasteClipboardData.emit();\n }\n\n onSelectAll(): void {\n this.selectAll.emit();\n }\n\n onRemoveSelected(): void {\n this.removeSelected.emit();\n }\n\n onSelectFormat(alignment: Alignment): void {\n this.changeParagraphStyle.emit(new ParagraphStyleModel({ alignment }));\n }\n\n onApplyBold(): void {\n const bold = !this.styles.bold;\n this.checkFontLoadedAndApplyStyle(new TextStyleModel({ bold }));\n }\n\n onApplyUnderline(): void {\n const underline = !this.styles.underline;\n this.changeTextStyle.emit(new TextStyleModel({ underline }));\n }\n\n onApplyItalic(): void {\n const italic = !this.styles.italic;\n this.checkFontLoadedAndApplyStyle(new TextStyleModel({ italic }));\n }\n\n onSelectNumberingTemplate(numberingTemplateType: NumberingTemplateType): void {\n if (this.numberingTemplateType === numberingTemplateType) {\n this.removeNumberings.emit();\n } else {\n const templateLevels = NumberingTemplates.find(x => x.templateType === numberingTemplateType).levels;\n this.setNumberingTemplateType.emit(templateLevels);\n }\n }\n\n async onCreate(model: ExternalElementModel): Promise<void> {\n const data = await model.factoryMethod();\n const element = new ElementDataModel(model.type, data.width, data.height, data.guid);\n this.createElement.emit(element);\n }\n\n private setTitleActive(element: HTMLElement): void {\n if (element.contentEditable === 'true') {\n return;\n }\n\n element.contentEditable = 'true';\n const range = document.createRange();\n const sel = window.getSelection();\n range.setStart(element.firstChild, element.textContent.length);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n element.focus();\n }\n\n private checkFontLoadedAndApplyStyle(style: TextStyleModel): void {\n const newStyles = { ...this.styles, ...style };\n const italic = newStyles.italic ? 'italic ' : '';\n const bold = newStyles.bold ? 'bold ' : '';\n const fontStyles = `${italic}${bold}${newStyles.fontSize ?? DEFAULT_FONT_SIZE}pt ${newStyles.fontFamily}`;\n\n if (document.fonts.check(fontStyles)) {\n this.changeTextStyle.emit(style);\n return;\n }\n\n document.fonts\n .load(fontStyles)\n .then(() => this.changeTextStyle.emit(style))\n .catch(() => {\n // continue regardless of error\n });\n }\n\n onTableInsertMenuClosed(): void {\n this.tableInsertMenu._animationDone\n .pipe(\n filter(e => e.toState === 'void'),\n take(1)\n )\n .subscribe(() => {\n this.showInsertTableMenu = false;\n this.cdr.markForCheck();\n });\n }\n}\n","<div class=\"menu-header\">\n <div class=\"file-name\">\n <span\n #titleSpan\n class=\"title\"\n matTooltip=\"Double click to rename\"\n (blur)=\"onRenameTitle($event)\"\n (keydown.enter)=\"$event.target.blur()\"\n (dblclick)=\"onFocus($event)\">\n {{ title }}\n </span>\n </div>\n <div class=\"menu-buttons\">\n <button\n id=\"editor-header-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n File\n </button>\n <mat-menu #fileMenu=\"matMenu\">\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">New</span>\n </div>\n </button>\n <input\n #fileInput\n class=\"upload-input\"\n accept=\".docx\"\n type=\"file\"\n id=\"file-input\"\n (change)=\"onOpenFileFromDisk($event)\" />\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-item-open-from\"\n mat-menu-item\n (click)=\"fileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">Open From</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-save-as\"\n mat-menu-item\n (click)=\"onSaveAs()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">Save As</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-rename\"\n mat-menu-item\n (click)=\"onRename()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">Rename</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-print\"\n mat-menu-item\n (click)=\"onPrint()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">Print</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-delete\"\n mat-menu-item\n (click)=\"onDelete()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"menuOpened()\">\n Edit\n </button>\n <mat-menu #editMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"onUndo()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">Undo</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"onRedo()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">Redo</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onCut()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">Cut</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onCopy()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">Copy</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!clipboardData?.length\"\n (click)=\"onPaste()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">Paste</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-select-all\"\n mat-menu-item\n (click)=\"onSelectAll()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">Select All</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!hasSelection\"\n (click)=\"onRemoveSelected()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">Delete</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"editor-header-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Insert\n </button>\n <mat-menu #insertMenu=\"matMenu\">\n <input\n #imageFileInput\n class=\"upload-input\"\n accept=\"image/gif, image/jpeg, image/png, image/bmp, image/webp\"\n type=\"file\"\n id=\"image-file-input\"\n (change)=\"onInsertImage($event)\" />\n <button\n id=\"editor-header-menu-item-image\"\n mat-menu-item\n (click)=\"imageFileInput.click()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">Image</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n Table\n </button>\n <button\n id=\"editor-header-menu-item-link\"\n mat-menu-item\n (click)=\"onInsertLink()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">Link</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"editor-header-menu-item-{{ element.title }}\"\n mat-menu-item\n (click)=\"onCreate(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.name }}</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n <mat-menu #listHeadersFootersMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">Header</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">Footer</span>\n </div>\n </button>\n </mat-menu>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Layout\n </button>\n <mat-menu #layoutMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">Page Break</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"!isViewOnly\"\n id=\"editor-header-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n Format\n </button>\n <mat-menu #formatMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Align</span>\n </div>\n </button>\n <mat-menu #listAlignMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">Left</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">Center</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">Right</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullets & Numbering</span>\n </div>\n </button>\n <mat-menu #listBulletsNumberingMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">Bullet List Menu</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">Numbered List Menu</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Text</span>\n </div>\n </button>\n <mat-menu #listTextMenu=\"matMenu\">\n <button\n id=\"editor-header-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">Bold</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">Italic</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"editor-header-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">Underlined</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"editor-header-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">Headers & Footers</span>\n </div>\n </button>\n </mat-menu>\n <mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table\">\n <app-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n </mat-menu>\n </div>\n</div>\n\n<div class=\"editor-mode\">\n <mat-form-field appearance=\"outline\">\n <mat-select\n [(value)]=\"selectedMode\"\n (selectionChange)=\"changeMode.emit($event)\">\n <mat-select-trigger>\n <div class=\"select-trigger\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ modeOptions[selectedMode].icon }}\"></mat-icon>\n <span class=\"item-title\">{{ modeOptions[selectedMode].name }}</span>\n <div class=\"separator\"></div>\n </div>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let mode of modeOptions\"\n class=\"editor-mode-option\"\n [value]=\"mode.id\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ mode.icon }}\"></mat-icon>\n <div class=\"item-content\">\n <span class=\"item-title\">{{ mode.name }}</span>\n <span class=\"item-text\">{{ mode.text }}</span>\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, distinctUntilChanged, Observable, Subscription } from 'rxjs';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EditorService } from '../editor/interaction/editor.service';\nimport { ExternalElementService } from '../editor/custom-components/external-element/external-element.service';\nimport { ObserverComponent } from '../abstract/observer.component';\nimport { SearchIteration } from '../editor/core/interfaces/search-iteration.interface';\n\n@Component({\n standalone: true,\n imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatInputModule, MatTooltipModule, ReactiveFormsModule],\n providers: [ExternalElementService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-editor-search-dialog',\n templateUrl: 'editor-search-dialog.component.html',\n styleUrls: ['editor-search-dialog.component.scss']\n})\nexport class EditorSearchDialogComponent extends ObserverComponent implements OnInit {\n searchControl = new FormControl('');\n\n replaceControl = new FormControl('');\n\n isReplace = false;\n\n searchIteration$: Observable<SearchIteration>;\n\n constructor(private editorService: EditorService) {\n super();\n this.searchIteration$ = this.editorService.searchIteration$;\n }\n\n ngOnInit(): void {\n this.subscriptions.push(this.searchSubscription());\n }\n\n onClose(): void {\n this.editorService.openSearchDialog = false;\n }\n\n findNext(): void {\n this.editorService.searchOptions = {\n term: this.searchControl.value,\n skipCurrent: true,\n backwards: false\n };\n }\n\n findPrev(): void {\n this.editorService.searchOptions = {\n term: this.searchControl.value,\n skipCurrent: true,\n backwards: true\n };\n }\n\n setReplace(): void {\n this.isReplace = !this.isReplace;\n }\n\n replace(): void {\n this.editorService.replace = { replaceValue: this.replaceControl.value, searchValue: this.searchControl.value };\n }\n\n searchSubscription(): Subscription {\n return this.searchControl.valueChanges.pipe(debounceTime(300), distinctUntilChanged()).subscribe(() => {\n this.editorService.searchOptions = {\n term: this.searchControl.value,\n skipCurrent: false,\n backwards: false\n };\n });\n }\n}\n","<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE } from '../../editor/core/constants/editor.const';\nimport { IToolbarStyles } from '../../editor/core/interfaces/toolbar-styles.interface';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-font',\n templateUrl: 'font.component.html',\n styleUrls: ['font.component.scss']\n})\nexport class FontComponent {\n @Input() isDisabled = false;\n\n @Input()\n set styles(value: IToolbarStyles) {\n if (!value?.fontFamily) {\n return;\n }\n\n for (let fontFamily of value.fontFamily.split(', ')) {\n const italic = value.italic ? 'italic ' : '';\n const bold = value.bold ? 'bold ' : '';\n const fontStyles = `${italic}${bold}${value.fontSize ?? DEFAULT_FONT_SIZE}pt ${fontFamily}`;\n if (document.fonts.check(fontStyles)) {\n this.font = fontFamily.replaceAll('\"', '');\n return;\n }\n }\n }\n\n @Output() selectFont = new EventEmitter<string>();\n\n fonts = [DEFAULT_FONT_FAMILY, 'Verdana', 'Arial', 'Times New Roman'];\n\n font = DEFAULT_FONT_FAMILY;\n\n onSelectFont(font: string): void {\n this.selectFont.emit(font);\n }\n}\n","<button\n mat-button\n [matMenuTriggerFor]=\"fontMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"font-menu\">\n <span>{{ font }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu #fontMenu=\"matMenu\">\n <ng-container *ngFor=\"let font of fonts\">\n <button\n mat-menu-item\n [disabled]=\"isDisabled\"\n (click)=\"onSelectFont(font)\">\n {{ font }}\n </button>\n </ng-container>\n</mat-menu>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\n\nimport { DEFAULT_FONT_SIZE } from '../../editor/core/constants/editor.const';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-font-size',\n templateUrl: 'font-size.component.html',\n styleUrls: ['font-size.component.scss']\n})\nexport class FontSizeComponent {\n @Input() set isDisabled(value: boolean) {\n this._isDisabled = value;\n if (value) {\n this.fontSizeControl.disable();\n } else {\n this.fontSizeControl.enable();\n }\n }\n get isDisabled(): boolean {\n return this._isDisabled;\n }\n private _isDisabled: boolean;\n\n @Input()\n set fontSize(value: number) {\n this.fontSizeControl.setValue(value);\n this._fontSize = value;\n this.highlightFontSize();\n }\n get fontSize(): number {\n return this._fontSize;\n }\n private _fontSize: number;\n\n @Output() selectFontSize = new EventEmitter<number>();\n\n @ViewChild('auto') autocomplete: MatAutocomplete;\n\n fontSizeControl = new FormControl<number>(0);\n\n fontSizes = [8, 9, 10, 11, 12, DEFAULT_FONT_SIZE, 18, 24, 30, 36, 48, 60, 72, 96];\n\n onIncrementFontSize(): void {\n if (this.fontSize >= 400) {\n return;\n }\n\n this.selectFontSize.emit(this.fontSize + 1);\n }\n\n onDecrementFontSize(): void {\n if (this.fontSize <= 1) {\n return;\n }\n\n this.selectFontSize.emit(this.fontSize - 1);\n }\n\n onSelectFontSize(size: number): void {\n this.selectFontSize.emit(size);\n }\n\n onSetFontSize(): void {\n const fontSize = +this.fontSizeControl.value;\n if (!fontSize || fontSize < 1) {\n return;\n }\n\n this.selectFontSize.emit(fontSize > 400 ? 400 : fontSize);\n this.autocomplete.showPanel = false;\n }\n\n resetFontSize(): void {\n this.fontSizeControl.setValue(this.fontSize);\n }\n\n private highlightFontSize(): void {\n if (this.autocomplete) {\n this.autocomplete.options.find(x => x.selected)?.deselect();\n this.autocomplete.options.find(x => x.value === this.fontSize)?.select();\n }\n }\n}\n","<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onDecrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-remove\"></mat-icon>\n</button>\n<input\n type=\"text\"\n [formControl]=\"fontSizeControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onSetFontSize()\"\n (blur)=\"resetFontSize()\" />\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"60\"\n disableRipple=\"false\"\n hideSingleSelectionIndicator=\"true\">\n <mat-option\n *ngFor=\"let fontSize of fontSizes\"\n [value]=\"fontSize\"\n (click)=\"onSelectFontSize(fontSize)\">\n {{ fontSize }}\n </mat-option>\n</mat-autocomplete>\n<button\n mat-button\n [disabled]=\"!fontSize || isDisabled\"\n (click)=\"onIncrementFontSize()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-add\"></mat-icon>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColorPickerComponent {\n @Input() color: string;\n\n @Input() icon: string;\n\n @Input() isDisabled: boolean;\n\n @Input() palette: string[];\n\n @Output() colorChange = new EventEmitter<string>();\n\n onChangeColor(color: string): void {\n this.colorChange.emit(color);\n }\n}\n","<button\n mat-button\n ngx-colors-trigger\n overlayClassName=\"color-picker-overlay\"\n [disabled]=\"isDisabled\"\n [(ngModel)]=\"color\"\n [palette]=\"palette\"\n [hideTextInput]=\"true\"\n [attachTo]=\"icon\"\n (input)=\"onChangeColor(color)\">\n <div\n class=\"color-text\"\n [ngStyle]=\"{ 'border-color': color ? color : 'transparent' }\">\n <mat-icon\n fontSet=\"nc-icon\"\n [fontIcon]=\"icon\"></mat-icon>\n </div>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { DEFAULT_FONT_COLOR } from './../../editor/core/constants/editor.const';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-font-style',\n templateUrl: 'font-style.component.html',\n styleUrls: ['font-style.component.scss']\n})\nexport class FontStyleComponent {\n @Input() isDisabled = false;\n\n @Input() bold: boolean;\n\n @Input() italic: boolean;\n\n @Input() underline: boolean;\n\n @Input() fontColor: string;\n\n @Input() highlightColor: string;\n\n @Output() toggleBold = new EventEmitter<boolean>();\n\n @Output() toggleItalic = new EventEmitter<boolean>();\n\n @Output() toggleUnderline = new EventEmitter<boolean>();\n\n @Output() selectFontColor = new EventEmitter<string>();\n\n @Output() selectHighlightColor = new EventEmitter<string>();\n\n textColorPalette = [\n DEFAULT_FONT_COLOR,\n '#b60205',\n '#d93f0b',\n '#fbca04',\n '#0e8a16',\n '#006b75',\n '#1d76db',\n '#0052cc',\n '#5319e7',\n '#e99695',\n '#f9d0c4',\n '#fef2c0',\n '#c2e0c6',\n '#bfdadc',\n '#c5def5',\n '#bfd4f2',\n '#d4c5f9'\n ];\n\n highlightColorPalette = ['none', ...this.textColorPalette];\n\n onToggleBold(): void {\n this.toggleBold.emit(!this.bold);\n }\n\n onToggleItalic(): void {\n this.toggleItalic.emit(!this.italic);\n }\n\n onToggleUnderline(): void {\n this.toggleUnderline.emit(!this.underline);\n }\n\n onSelectFontColor(color: string): void {\n this.selectFontColor.emit(color);\n }\n\n onSelectHighlightColor(color: string): void {\n this.selectHighlightColor.emit(color);\n }\n}\n","<mat-button-toggle-group multiple>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"bold\"\n (click)=\"onToggleBold()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"italic\"\n (click)=\"onToggleItalic()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle\n [disabled]=\"isDisabled\"\n [checked]=\"underline\"\n (click)=\"onToggleUnderline()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n<app-color-picker\n id=\"icon-format-colortext\"\n class=\"text-color\"\n [color]=\"fontColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-format-colortext\"\n [palette]=\"textColorPalette\"\n (colorChange)=\"onSelectFontColor($event)\"></app-color-picker>\n<app-color-picker\n id=\"icon-link-highlighter\"\n class=\"highlight-color\"\n [color]=\"highlightColor\"\n [isDisabled]=\"isDisabled\"\n icon=\"icon-link-highlighter\"\n [palette]=\"highlightColorPalette\"\n (colorChange)=\"onSelectHighlightColor($event)\"></app-color-picker>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Alignment } from '../enums/alignment.enum';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-format',\n templateUrl: 'format.component.html',\n styleUrls: ['format.component.scss']\n})\nexport class FormatComponent {\n @Input() isDisabled = false;\n\n @Input() alignment: number;\n\n @Output() selectAlignment = new EventEmitter<Alignment>();\n\n readonly alignments = Alignment;\n\n onSelectFormat(format: Alignment): void {\n this.selectAlignment.emit(format);\n }\n}\n","<mat-button-toggle-group\n name=\"format\"\n aria-label=\"format\"\n [disabled]=\"isDisabled\"\n [value]=\"alignment\"\n (change)=\"onSelectFormat($event.value)\">\n <mat-button-toggle [value]=\"alignments.Left\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle [value]=\"alignments.Center\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle [value]=\"alignments.Right\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { NumberingTemplateType } from '../enums/numbering-template-type.enum';\nimport { NumberingType } from '../enums/numbering-type.enum';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-numbering',\n templateUrl: 'numbering.component.html',\n styleUrls: ['numbering.component.scss']\n})\nexport class NumberingComponent {\n @Input() isDisabled = false;\n\n @Input() selectedNumberingType: NumberingType;\n\n @Input() selectedNumberingTemplate: NumberingTemplateType;\n\n @Output() selectNumberingTemplate = new EventEmitter<NumberingTemplateType>();\n\n @Output() removeNumberings = new EventEmitter<void>();\n\n numberingTemplateType = NumberingTemplateType;\n\n numberingType = NumberingType;\n\n onToggleNumberedNumbering(): void {\n if (this.selectedNumberingType === NumberingType.Number) {\n this.removeNumberings.emit();\n } else {\n this.selectNumberingTemplate.emit(NumberingTemplateType.NumberList3);\n }\n }\n\n onToggleBulletedNumbering(): void {\n if (this.selectedNumberingType === NumberingType.Bullet) {\n this.removeNumberings.emit();\n } else {\n this.selectNumberingTemplate.emit(NumberingTemplateType.BulletList1);\n }\n }\n\n onSelectNumberingTemplate(numberingTemplateType: NumberingTemplateType): void {\n this.selectNumberingTemplate.emit(numberingTemplateType);\n }\n}\n","<mat-button-toggle-group\n name=\"format\"\n aria-label=\"format\"\n [disabled]=\"isDisabled\">\n <mat-button-toggle\n (click)=\"onToggleBulletedNumbering()\"\n [value]=\"numberingType.Bullet\"\n [checked]=\"selectedNumberingType === numberingType.Bullet\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listBulletedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList1\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList2\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList4\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList5\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.BulletList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.BulletList6\"></mat-icon>\n </div>\n </mat-menu>\n <mat-button-toggle\n (click)=\"onToggleNumberedNumbering()\"\n [value]=\"numberingType.Number\"\n [checked]=\"selectedNumberingType === numberingType.Number\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n </mat-button-toggle>\n <button\n mat-button\n [matMenuTriggerFor]=\"listNumberedMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n [disabled]=\"isDisabled\"\n style=\"display: none\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList1)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList1\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList2)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList2\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList3)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList3\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList4)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList4\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList5)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList5\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateType.NumberList6)\"\n [class.selected]=\"selectedNumberingTemplate === numberingTemplateType.NumberList6\"></mat-icon>\n </div>\n </mat-menu>\n</mat-button-toggle-group>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-print',\n templateUrl: './print.component.html',\n styleUrls: ['./print.component.scss']\n})\nexport class PrintComponent {\n @Output() print = new EventEmitter<void>();\n}\n","<button\n mat-button\n (click)=\"print.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-undo-redo',\n templateUrl: './undo-redo.component.html',\n styleUrls: ['./undo-redo.component.scss']\n})\nexport class UndoRedoComponent {\n @Input() canUndo = false;\n\n @Input() canRedo = false;\n\n @Output() undo = new EventEmitter<void>();\n\n @Output() redo = new EventEmitter<void>();\n}\n","<button\n mat-button\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n</button>\n<button\n mat-button\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Alignment } from './enums/alignment.enum';\nimport { CustomIconService } from '../services/custom-icon.service';\nimport { DEFAULT_FONT_SIZE } from '../editor/core/constants/editor.const';\nimport { IToolbarStyles } from '../editor/core/interfaces/toolbar-styles.interface';\nimport { NumberingLevelModel } from '../../models/generated/numbering-level.model';\nimport { NumberingTemplates } from './constants/numbering-templates.const';\nimport { NumberingTemplateType } from './enums/numbering-template-type.enum';\nimport { NumberingType } from './enums/numbering-type.enum';\nimport { OperationsHistoryInfoModel } from '../editor/operation-history/operations-history-info.model';\nimport { ParagraphStyleModel } from '../../models/generated/paragraph-style.model';\nimport { TextStyleModel } from '../../models/generated/text-style.model';\nimport { ToolbarStylesHelper } from './helpers/toolbar-styles.helper';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-editor-toolbar',\n templateUrl: 'editor-toolbar.component.html',\n styleUrls: ['editor-toolbar.component.scss']\n})\nexport class EditorToolbarComponent {\n @Input() isViewOnly: boolean;\n\n @Input()\n set styles(value: IToolbarStyles) {\n this._styles = value;\n this.numberingType = ToolbarStylesHelper.getNumberingType(value.isBulletMarker);\n this.numberingTemplateType = ToolbarStylesHelper.getNumberingTemplateType(value.numberingLevelsStyles);\n }\n get styles(): IToolbarStyles {\n return this._styles;\n }\n private _styles: IToolbarStyles;\n\n @Input()\n set historyInfo(value: OperationsHistoryInfoModel) {\n this.canUndo = value.step !== -1;\n this.canRedo = value.step < value.lastStep;\n }\n\n canUndo: boolean;\n\n canRedo: boolean;\n\n numberingType: NumberingType | null;\n\n numberingTemplateType: NumberingTemplateType | null;\n\n @Output() changeTextStyle = new EventEmitter<TextStyleModel>();\n\n @Output() changeParagraphStyle = new EventEmitter<ParagraphStyleModel>();\n\n @Output() setNumberingTemplateType = new EventEmitter<NumberingLevelModel[]>();\n\n @Output() removeNumberings = new EventEmitter<void>();\n\n @Output() redo = new EventEmitter<void>();\n\n @Output() undo = new EventEmitter<void>();\n\n @Output() print = new EventEmitter<void>();\n\n constructor(private customIconService: CustomIconService) {\n this.customIconService.register();\n }\n\n onApplyFontFamily(font: string): void {\n this.checkFontLoadedAndApplyStyle(new TextStyleModel({ fontFamily: font }));\n }\n\n onApplyFontSize(size: number): void {\n this.checkFontLoadedAndApplyStyle(new TextStyleModel({ fontSize: size }));\n }\n\n onApplyBold(bold: boolean): void {\n this.checkFontLoadedAndApplyStyle(new TextStyleModel({ bold }));\n }\n\n onApplyUnderline(underline: boolean): void {\n this.changeTextStyle.emit(new TextStyleModel({ underline }));\n }\n\n onApplyItalic(italic: boolean): void {\n this.checkFontLoadedAndApplyStyle(new TextStyleModel({ italic }));\n }\n\n onApplyFontColor(color: string): void {\n this.changeTextStyle.emit(new TextStyleModel({ fontColor: color }));\n }\n\n onApplyHighlightColor(color: string): void {\n this.changeTextStyle.emit(new TextStyleModel({ highlightColor: color }));\n }\n\n onApplyAlignment(alignment: Alignment): void {\n this.changeParagraphStyle.emit(new ParagraphStyleModel({ alignment }));\n }\n\n onSetNumberingTemplateType(templateType: NumberingTemplateType): void {\n const templateLevels = NumberingTemplates.find(x => x.templateType === templateType).levels;\n this.setNumberingTemplateType.emit(templateLevels);\n }\n\n onRemoveNumberings(): void {\n this.removeNumberings.emit();\n }\n\n private checkFontLoadedAndApplyStyle(style: TextStyleModel): void {\n const newStyles = { ...this.styles, ...style };\n const italic = newStyles.italic ? 'italic ' : '';\n const bold = newStyles.bold ? 'bold ' : '';\n const fontStyles = `${italic}${bold}${newStyles.fontSize ?? DEFAULT_FONT_SIZE}pt ${newStyles.fontFamily}`;\n\n if (document.fonts.check(fontStyles)) {\n this.changeTextStyle.emit(style);\n return;\n }\n\n document.fonts\n .load(fontStyles)\n .then(() => this.changeTextStyle.emit(style))\n .catch(() => {\n // continue regardless of error\n });\n }\n}\n","<ng-container *ngIf=\"styles\">\n <app-undo-redo\n [canUndo]=\"canUndo\"\n [canRedo]=\"canRedo\"\n (undo)=\"undo.emit()\"\n (redo)=\"redo.emit()\"></app-undo-redo>\n <app-print (print)=\"print.emit()\"></app-print>\n <div class=\"separator\"></div>\n <app-font\n [isDisabled]=\"isViewOnly\"\n [styles]=\"styles\"\n (selectFont)=\"onApplyFontFamily($event)\"></app-font>\n <div class=\"separator\"></div>\n <app-font-size\n [isDisabled]=\"isViewOnly\"\n [fontSize]=\"styles.fontSize\"\n (selectFontSize)=\"onApplyFontSize($event)\"></app-font-size>\n <div class=\"separator\"></div>\n <app-font-style\n [isDisabled]=\"isViewOnly\"\n [bold]=\"styles.bold\"\n [italic]=\"styles.italic\"\n [underline]=\"styles.underline\"\n [fontColor]=\"styles.fontColor\"\n [highlightColor]=\"styles.highlightColor\"\n (selectFontColor)=\"onApplyFontColor($event)\"\n (toggleBold)=\"onApplyBold($event)\"\n (toggleItalic)=\"onApplyItalic($event)\"\n (toggleUnderline)=\"onApplyUnderline($event)\"\n (selectHighlightColor)=\"onApplyHighlightColor($event)\"></app-font-style>\n <div class=\"separator\"></div>\n <app-format\n [isDisabled]=\"isViewOnly\"\n [alignment]=\"styles.alignment\"\n (selectAlignment)=\"onApplyAlignment($event)\"></app-format>\n <div class=\"separator\"></div>\n <app-numbering\n [isDisabled]=\"isViewOnly\"\n [selectedNumberingType]=\"numberingType\"\n [selectedNumberingTemplate]=\"numberingTemplateType\"\n (selectNumberingTemplate)=\"onSetNumberingTemplateType($event)\"\n (removeNumberings)=\"onRemoveNumberings()\"></app-numbering>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-heading',\n templateUrl: 'heading.component.html',\n styleUrls: ['heading.component.scss']\n})\nexport class HeadingComponent {\n headings = ['Normal Text', 'Not Normal Text', 'Test Text'];\n\n selectedHeading = this.headings[0];\n\n onSelectHeading(heading: string): void {\n this.selectedHeading = heading;\n console.log('select heading', heading);\n }\n}\n","<button\n mat-button\n [matMenuTriggerFor]=\"headingMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n <div class=\"heading-menu\">\n <span>{{ selectedHeading }}</span>\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n </div>\n</button>\n<mat-menu #headingMenu=\"matMenu\">\n <ng-container *ngFor=\"let heading of headings\">\n <button\n mat-menu-item\n (click)=\"onSelectHeading(heading)\">\n {{ heading }}\n </button>\n </ng-container>\n</mat-menu>\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'app-zoom',\n templateUrl: 'zoom.component.html',\n styleUrls: ['zoom.component.scss']\n})\nexport class ZoomComponent {\n @ViewChild('zoom') zoom: ElementRef;\n\n readonly minZoom = 50;\n\n readonly maxZoom = 200;\n\n readonly enterCode = 13;\n\n readonly regexWithPercentage = new RegExp(/^\\d+%+$/);\n\n readonly regexOnlyNumbers = new RegExp(/^\\d+$/);\n\n zoomPercentages = [this.minZoom, 75, 90, 100, 125, 150, 175, this.maxZoom];\n\n myControl = new FormControl('');\n\n selectedZoom = this.zoomPercentages[2];\n\n constructor() {\n this.myControl.setValue(this.zoomPercentages[2] + '%');\n }\n\n onSelectZoom(zoom: number): void {\n this.myControl.setValue(zoom + '%');\n this.selectedZoom = zoom;\n console.log('select zoom', zoom);\n console.log(this.myControl.value);\n }\n\n onKeyDown(event: any, trigger: MatAutocompleteTrigger): void {\n if (event.keyCode != this.enterCode) {\n return;\n }\n\n let selectedNumber;\n if (this.regexOnlyNumbers.test(this.myControl.value)) {\n selectedNumber = +this.myControl.value;\n }\n\n if (this.regexWithPercentage.test(this.myControl.value)) {\n selectedNumber = +this.myControl.value.slice(0, -1);\n }\n\n if (!selectedNumber) {\n this.myControl.setValue(this.selectedZoom + '%');\n trigger.closePanel();\n this.zoom.nativeElement.blur();\n return;\n }\n\n if (selectedNumber < this.minZoom) {\n selectedNumber = this.minZoom;\n }\n\n if (selectedNumber > this.maxZoom) {\n selectedNumber = this.maxZoom;\n }\n\n this.selectedZoom = selectedNumber;\n this.myControl.setValue(this.selectedZoom + '%');\n trigger.closePanel();\n this.zoom.nativeElement.blur();\n }\n\n onSetPreviousValue(): void {\n this.myControl.setValue(this.selectedZoom + '%');\n console.log('onSetPreviousValue');\n }\n\n openPanel(event: any, trigger: MatAutocompleteTrigger): void {\n event.stopPropagation();\n trigger.panelOpen ? trigger.closePanel() : trigger.openPanel();\n }\n}\n","<input\n [matAutocomplete]=\"auto\"\n [formControl]=\"myControl\"\n #trigger=\"matAutocompleteTrigger\"\n #zoom\n (focusout)=\"onSetPreviousValue()\"\n (keydown)=\"onKeyDown($event, trigger)\" />\n<button\n mat-button\n (click)=\"openPanel($event, trigger)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-arrow-dropdown\"></mat-icon>\n</button>\n<mat-autocomplete\n class=\"zoom-autocomplite\"\n #auto=\"matAutocomplete\"\n [panelWidth]=\"80\">\n <mat-option\n *ngFor=\"let zoomPercentage of zoomPercentages\"\n (click)=\"onSelectZoom(zoomPercentage)\">\n {{ zoomPercentage }}%\n </mat-option>\n</mat-autocomplete>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NgModule } from '@angular/core';\nimport { NgxColorsModule } from 'ngx-colors';\n\nimport { ColorPickerComponent } from './color-picker/color-picker.component';\nimport { CustomIconService } from '../services/custom-icon.service';\nimport { EditorToolbarComponent } from './editor-toolbar.component';\nimport { FontComponent } from './font/font.component';\nimport { FontSizeComponent } from './font-size/font-size.component';\nimport { FontStyleComponent } from './font-style/font-style.component';\nimport { FormatComponent } from './format/format.component';\nimport { HeadingComponent } from './heading/heading.component';\nimport { NumberingComponent } from './numbering/numbering.component';\nimport { PrintComponent } from './print/print.component';\nimport { UndoRedoComponent } from './undo-redo/undo-redo.component';\nimport { ZoomComponent } from './zoom/zoom.component';\n\n@NgModule({\n declarations: [\n ColorPickerComponent,\n EditorToolbarComponent,\n FontComponent,\n FontComponent,\n FontSizeComponent,\n FontSizeComponent,\n FontStyleComponent,\n FontStyleComponent,\n FormatComponent,\n FormatComponent,\n HeadingComponent,\n HeadingComponent,\n NumberingComponent,\n PrintComponent,\n UndoRedoComponent,\n ZoomComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n MatSelectModule,\n MatToolbarModule,\n NgxColorsModule,\n ReactiveFormsModule\n ],\n providers: [CustomIconService],\n exports: [EditorToolbarComponent]\n})\nexport class EditorToolbarModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface IDialogData {\n cancel?: string;\n confirm?: string;\n message: string;\n title?: string;\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule],\n selector: 'app-confirm-dialog',\n templateUrl: 'confirm-dialog.component.html',\n styleUrls: ['confirm-dialog.component.scss']\n})\nexport class ConfirmDialogComponent {\n constructor(@Inject(MAT_DIALOG_DATA) public data: IDialogData, private ref: MatDialogRef<ConfirmDialogComponent>) {}\n\n onClose(status: boolean): void {\n this.ref.close(status);\n }\n}\n","<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"nc-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n","export class DocumentModel {\n public createTime: number;\n public id: number;\n public ownerId: number;\n public title: string;\n\n public constructor(\n fields?: Partial<DocumentModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class DocumentNameModel {\n public documentId: number;\n public name: string;\n\n public constructor(\n fields?: Partial<DocumentNameModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","export class FileSourceModel {\n public src: string;\n\n public constructor(\n fields?: Partial<FileSourceModel>) {\n\n if (fields) {\n\n\n Object.assign(this, fields);\n }\n }\n}\n","import { DocxModel } from './docx.model';\n\nexport class RevisionModel {\n public content: DocxModel;\n public createTime: number;\n public documentId: number;\n public id: number;\n public userId: number;\n\n public constructor(\n fields?: Partial<RevisionModel>) {\n\n if (fields) {\n if (fields.content) { fields.content = new DocxModel(fields.content); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { OperationModel } from './operation.model';\nimport { RevisionModel } from './revision.model';\n\nexport class LastDocumentRevisionModel {\n public documentId: number;\n public operations: OperationModel[];\n public revision: RevisionModel;\n public title: string;\n\n public constructor(\n fields?: Partial<LastDocumentRevisionModel>) {\n\n if (fields) {\n if (fields.revision) { fields.revision = new RevisionModel(fields.revision); }\n\n Object.assign(this, fields);\n }\n }\n}\n","import { CommandModel } from './command.model';\n\nexport class OperationModel {\n public command: CommandModel;\n public createTime: number;\n public revisionId: number;\n public userId: number;\n\n public constructor(\n fields?: Partial<OperationModel>) {\n\n if (fields) {\n if (fields.command) { fields.command = new CommandModel(fields.command); }\n\n Object.assign(this, fields);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Alignment","i1.ImageApiService","i2.EditorService","i3","i4.ResizerComponent","i1.EditorService","i2.RegulatorService","i1","i2.OverlayService","i4","i1.ComponentService","i3.OverlayService","i1.RegulatorService","i1.CustomContentService","i2","i3.RegulatorService","i4.CommandsService","i6","i8.ElementToolbarComponent","i1.CustomIconService","i5","i7","i8","i9","i3.ColorPickerComponent","i3.FontComponent","i4.FontSizeComponent","i5.FontStyleComponent","i6.FormatComponent","i7.NumberingComponent","i8.PrintComponent","i9.UndoRedoComponent"],"mappings":"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AE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACpxF;;MCDY,aAAa,CAAA;AACtB,IAAA,WAAW,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,MAAM,GAAG,GAAa,EAAE,CAAC;AACzB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,gBAAA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,gBAAA,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,oBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACtB,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;AACjD,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAEJ;;ACgDK,MAAO,WAAY,SAAQ,aAAa,CAAA;IAiB1C,IAAI,MAAM,CAAC,MAAgC,EAAA;QACvC,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;gBACzE,SAAS;AACZ,aAAA;AAAM,iBAAA,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChF,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,KAAK,gBAAgB,GAAG,KAAK,GAAG,IAAI,CAAC;gBACtG,SAAS;AACZ,aAAA;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAUD,IAAI,YAAY,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC1D;AACD,IAAA,IAAI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAGD,IAAI,WAAW,CAAC,KAAqB,EAAA;QACjC,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEpD,OAAO;AACV,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;AACV,SAAA;QAED,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACvD;AACD,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAGD,WACW,CAAA,QAAkB,EAClB,SAAiB,EACjB,oBAA0C,EAC1C,KAAwB,EACxB,SAAoB,EACpB,UAAkC,EAAA;AAEzC,QAAA,KAAK,EAAE,CAAC;QAPD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QACxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAwB;AAtF7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;AAErE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,SAAS,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC;AAIlF,QAAA,IAAA,CAAA,QAAQ,GAAe,CAAC,EAAE,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,iBAAiB,GAAa,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,kBAAkB,GAAa,EAAE,CAAC;QAElC,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AAqBG,QAAA,IAAA,CAAA,UAAU,GAAmB;AAC1C,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE,kBAAkB;YAC7B,SAAS,EAAEA,WAAS,CAAC,IAAI;AACzB,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,cAAc,EAAE,wBAAwB;SAC3C,CAAC;AAkDE,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5H,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;QACtB,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAC1C,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;KACzC;AAED,IAAA,YAAY,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACxC;AAED,IAAA,wBAAwB,CAAC,KAAa,EAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,KAAK,EAAE,CAAC;AACX,SAAA;QACD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACvG,SAAA;AACD,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACzC;AAED,IAAA,uBAAuB,CAAC,KAAa,EAAA;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3G,SAAA;AACD,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/F,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACxC;AAED,IAAA,4BAA4B,CAAC,KAAa,EAAA;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE;AACxH,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,eAAe,CAAC,eAAe,CAC5E,IAAI,CAAC,UAAU,CAAC,UAAU,EAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAK,CACR,CAAC;AACL,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,KAAK,IAAI,EAAE;YACrE,MAAM,eAAe,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;AACzH,YAAA,eAAe,CAAC,gBAAgB,CAC5B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,eAAe,CAAC,SAAS,EACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,CAC9C,CAAC;AACL,SAAA;KACJ;IAED,cAAc,CAAC,cAAsB,EAAE,aAAqB,EAAA;AACxD,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,kBAAkB,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;QAC7H,IAAI,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CACxD,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CACzE,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE;AAClD,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AAC9B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClE,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5D,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CACvC,IAAI,CAAC,KAAK,EACV,WAAW,EACX,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAC1B,IAAI,CAAC,gBAAgB,EACrB,CAAC,EACD,gBAAgB,CACnB,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;YAC1B,IAAI,8BAA8B,KAAK,CAAC,EAAE;AACtC,gBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACvC,aAAA;YACD,8BAA8B,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACnF,YAAA,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1F,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,8BAA8B,GAAG,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;KAC9D;AAED;;AAEG;AACH,IAAA,gBAAgB,CAAC,KAAwB,EAAE,GAAW,EAAE,UAAkB,EAAE,gBAAmC,EAAA;AAC3G,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAC9C,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;KAC7E;IAED,gBAAgB,CAAC,UAAoB,EAAE,KAAa,EAAA;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,OAAO,KAAK,IAAI,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC;AAC/B,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,KAAK,GAAG,MAAM,EAAE;AAChB,gBAAA,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;AACnB,aAAA;iBAAM,IAAI,KAAK,GAAG,MAAM,EAAE;AACvB,gBAAA,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACjB,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,GAAG,CAAC;AACd,aAAA;AACJ,SAAA;QAED,OAAO,KAAK,GAAG,CAAC,CAAC;KACpB;AAED;;;;AAIG;IACH,oBAAoB,CAAC,GAAW,EAAE,eAAwB,EAAA;QACtD,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,MAAc,CAAC;AACnB,QAAA,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;YAC5C,YAAY,IAAI,CAAC,CAAC;YAElB,IAAI,YAAY,GAAG,eAAe,EAAE;gBAChC,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;KACjC;AAED;;AAEG;IACH,YAAY,CAAC,GAAW,EAAE,MAAc,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,EAAE;AACZ,YAAA,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,SAAA;QAED,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,MAAc,CAAC;AACnB,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;YACzD,MAAM,GAAG,IAAI,CAAC;AACjB,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B,SAAA;QAED,IAAI,KAAK,GAAG,MAAM,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,GAAG;AACC,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,QAAQ,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAEzD,YAAA,KAAK,EAAE,CAAC;AACX,SAAA;QAED,IAAI,GAAG,GAAG,MAAM,CAAC;AACjB,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxD,YAAA,GAAG,EAAE,CAAC;AACT,SAAA;AAED,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,cAAc,CAAC,GAAW,EAAE,SAAiB,EAAE,WAAoB,EAAA;AAC/D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAE7D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;KACrE;IAED,uBAAuB,CAAC,UAAkB,EAAE,QAAgB,EAAA;AACxD,QAAA,MAAM,sBAAsB,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAChH,QAAA,MAAM,oBAAoB,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAC5G,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC,CAAC;KACxE;AAED,IAAA,yBAAyB,CAAC,KAAa,EAAE,IAAY,EAAE,KAAsB,EAAA;AACzE,QAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D;AAED,IAAA,4BAA4B,CAAC,aAAiC,EAAA;AAC1D,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChI,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;KACrE;AAED,IAAA,0BAA0B,CAAC,aAA+B,EAAA;AACtD,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QACxH,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,aAAa,CAAC,SAAuB,CAAC,CAAC;KACnF;AAED,IAAA,wBAAwB,CAAC,aAA6B,EAAA;AAClD,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;AACxH,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;KAC1C;AAED,IAAA,0BAA0B,CAAC,aAA+B,EAAA;AACtD,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QACxH,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;KACrE;AAED,IAAA,0BAA0B,CAAC,aAA+B,EAAA;AACtD,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QACxH,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;KAC3D;AAED,IAAA,cAAc,CAAC,UAAkB,EAAE,QAAgB,EAAE,SAAyB,EAAA;QAC1E,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;AACxG,QAAA,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAC5B;AAED,IAAA,mBAAmB,CAAC,UAAkB,EAAE,QAAgB,EAAE,cAAmC,EAAA;AACzF,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;AACxG,QAAA,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;KACjC;AAED,IAAA,iBAAiB,CAAC,KAA6B,EAAA;QAC3C,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;AACvH,QAAA,iBAAiB,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AACxC,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;AAC9G,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC7C;AAED,IAAA,YAAY,CAAC,MAA6B,EAAE,UAAkB,EAAE,QAAgB,EAAA;AAC5E,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;AACxG,QAAA,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpG,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,KAAK,IAAI,EAAE;AACjE,gBAAA,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KAChD;IAED,gBAAgB,CAAC,UAAkB,EAAE,QAAgB,EAAA;AACjD,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC;AACxG,QAAA,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChG,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,KAAK,IAAI,EAAE;AACjE,gBAAA,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KAChD;IAED,iBAAiB,CAAC,UAA4B,EAAE,UAA4B,EAAA;QACxE,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7H,QAAA,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACnG,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAChC,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW,KAAK,IAAI,EAAE;AAC/C,gBAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACnD,MAAM;AACT,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KAChD;AAED,IAAA,eAAe,CAAC,UAAgC,EAAA;QAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;AACpH,QAAA,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAClE;AAED,IAAA,iBAAiB,CAAC,OAAsB,EAAA;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACzC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7H,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED,IAAA,sBAAsB,CAAC,UAA4B,EAAA;QAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5G,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7H,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED,IAAA,YAAY,CAAC,SAAyB,EAAA;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAC5B;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAY,EAAA;AACf,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACxG,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExG,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClG,QAAA,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClG,QAAA,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC1G,QAAA,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEhG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE1D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpE,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED,IAAA,OAAO,CAAC,KAAmB,EAAA;AACvB,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,QAAe,CAAC;QACpB,IAAI,KAAK,CAAC,UAAU,EAAE;AAClB,YAAA,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClG,SAAA;aAAM,IAAI,KAAK,CAAC,aAAa,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACrE,SAAA;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjE,SAAA;aAAM,IAAI,KAAK,CAAC,SAAS,EAAE;YACxB,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7D,SAAA;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjE,SAAA;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,UAAU,CAAC,QAAe,EAAE,IAAY,EAAE,WAA4B,EAAA;AAClE,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACtG,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACjF,SAAA;AAAM,aAAA;YACH,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC9D,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC;KACnB;IAED,aAAa,CAAC,QAAe,EAAE,OAAyB,EAAA;AACpD,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACtG,MAAM,aAAa,GAAG,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzG,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AAC3E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAErE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC;KACnB;IAED,WAAW,CAAC,QAAe,EAAE,SAAqB,EAAA;AAC9C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACtG,QAAA,MAAM,gBAAgB,GAClB,SAAS,KAAK,UAAU,CAAC,IAAI;AAC7B,YAAA,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,WAAW,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC;AACrG,QAAA,MAAM,IAAI,GAAG,gBAAgB,GAAG,CAAA,EAAG,eAAe,CAAA,EAAG,qBAAqB,CAAE,CAAA,GAAG,qBAAqB,CAAC;AACrG,QAAA,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAEvE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAI,gBAAgB,EAAE;YAClB,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnE,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAElC,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,SAAS,CAAC,QAAe,EAAA;AACrB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QACtG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAExE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC;KACnB;IAED,WAAW,CAAC,QAAe,EAAE,SAAyB,EAAA;AAClD,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACtG,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjF,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;QAErE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAE5E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAErC,QAAA,OAAO,QAAQ,CAAC;KACnB;IAED,UAAU,CAAC,QAAe,EAAE,QAAuB,EAAA;AAC/C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACtG,QAAA,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,cAAc,EAAE,0BAA0B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACtG,QAAA,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAE9F,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC;KACnB;IAED,WAAW,CAAC,QAAe,EAAE,UAA4B,EAAA;AACrD,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AAEtG,QAAA,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE/F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAE5E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAErC,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,YAAY,CAA+B,cAAiC,EAAE,KAAoB,EAAE,aAAsB,EAAA;QACtH,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9F,YAAA,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;AAClC,SAAA,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACrG,IAAI,kBAAkB,IAAI,CAAC,EAAE;YACzB,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;AAC/D,SAAA;AAAM,aAAA;AACH,YAAA,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtC,SAAA;KACJ;AAED,IAAA,QAAQ,CAAC,KAA2C,EAAA;QAChD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7C;IAED,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG;AACX,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACtC,YAAA,eAAe,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;AAClD,YAAA,cAAc,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AAChD,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACtC,YAAA,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpC,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5B,YAAA,aAAa,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC9C,YAAA,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AACtC,YAAA,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1C,YAAA,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACxC,YAAA,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACxC,YAAA,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1C,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,qBAAqB,EAAE,EAAE;SAC5B,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;AAED,IAAA,OAAO,CAAC,KAAmB,EAAA;AACvB,QAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACjH,QAAA,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClE,SAAA;QAED,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE5C,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAChI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAChI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC1H,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAEtF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;IAED,iBAAiB,CACb,MAAuB,EACvB,UAA8C,EAC9C,aAAsB,EACtB,YAAoB,EACpB,eAAuB,EAAA;AAEvB,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE;gBAClC,SAAS;AACZ,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,WAAW,IAAI,eAAe,EAAE;gBAC7C,MAAM;AACT,aAAA;YACD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AACvD,SAAA;KACJ;AAED,IAAA,wBAAwB,CAAC,QAAwB,EAAE,YAAoB,EAAE,eAAuB,EAAA;AAC5F,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE;gBAClC,SAAS;AACZ,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,WAAW,IAAI,eAAe,EAAE;gBAC7C,MAAM;AACT,aAAA;AACD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxE,SAAA;KACJ;IAED,sBAAsB,GAAA;AAClB,QAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAE5E,QAAA,MAAM,MAAM,GAAG;AACX,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,qBAAqB,EAAE,EAAE;SAC5B,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAErB,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED,IAAA,YAAY,CAAC,MAAa,EAAA;AACtB,QAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;KAC/F;AAED,IAAA,eAAe,CAAC,WAAmB,EAAE,SAAiB,EAAE,WAAmB,EAAE,YAAoB,EAAA;AAC7F,QAAA,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAChG,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACtG,QAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,kBAAkB,CAAC,WAAmB,EAAE,YAAoB,EAAE,WAAmB,EAAE,YAAoB,EAAA;QACnG,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnI,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACtG,QAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,eAAe,CAAC,WAAmB,EAAE,UAAkB,EAAE,QAAgB,EAAA;AACrE,QAAA,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACtG,QAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,kBAAkB,CAAC,WAAmB,EAAE,UAAkB,EAAE,QAAgB,EAAA;AACxE,QAAA,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChH,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACtG,QAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KACzC;AAED,IAAA,kBAAkB,CAAC,kBAA2C,EAAA;QAC1D,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACzH,QAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KACzC;IAED,YAAY,CAAC,WAAmB,EAAE,KAAiB,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAe,CAAC;QACjE,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AACtG,QAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KACzC;AAEO,IAAA,mBAAmB,CAAC,QAAgB,EAAE,cAAsB,EAAE,MAAc,EAAA;QAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;QAC5E,IACI,QAAQ,KAAK,CAAC,CAAC;AACf,YAAA,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM;AAC7C,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,kBAAkB,EAChF;AACE,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC5B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,kBAAkB,EAAE;YAC5H,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,KAAK,CAAC;YAC5G,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC;AAC5G,YAAA,QAAQ,EAAE,CAAC;AACd,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEO,IAAA,eAAe,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,UAAU,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACtG,QAAA,IAAI,QAAQ,GAAG,aAAa,CAAC,gCAAgC,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAClG,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,EAAE;YACpB,IAAI,QAAQ,GAAG,UAAU,EAAE;AACvB,gBAAA,QAAQ,EAAE,CAAC;AACd,aAAA;AAAM,iBAAA,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,CAAC,EAAE;AAClD,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,QAAQ,EAAE,CAAC;AACd,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;KACnC;IAEO,8BAA8B,CAAC,QAAgB,EAAE,MAAc,EAAA;AACnE,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AACjC,QAAA,MAAM,aAAa,GAAgB,KAAK,CAAC,MAAM,CAAC,CAAC;AACjD,QAAA,MAAM,WAAW,GAAe,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC;AAChE,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KACzC;IAEO,8BAA8B,CAAC,QAAgB,EAAE,MAAc,EAAA;AACnE,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;QAEjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KAC3C;AAEO,IAAA,4BAA4B,CAAC,KAAa,EAAA;AAC9C,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,KAAK,IAAI,EAAE;AAC9D,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,eAAe,CAAC,eAAe,CACxE,IAAI,CAAC,UAAU,CAAC,UAAU,EAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,CAAC,CACJ,CAAC;gBACF,MAAM,eAAe,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACrH,gBAAA,eAAe,CAAC,gBAAgB,CAC5B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAC5B,eAAe,CAAC,SAAS,EACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAC1C,CAAC;AACL,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,gBAAgB,CAAC,aAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AACnB,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACzF,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AAED,QAAA,MAAM,MAAM,GACR,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU;AACvB,YAAA,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW;AAC5B,YAAA,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;AAChC,YAAA,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;AAC5C,QAAA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;QAChF,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACxB,gBAAA,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC9F,aAAA;AAED,YAAA,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,WAAW,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAClE,gBAAA,OAAO,CAAC,CAAC;AACZ,aAAA;AAED,YAAA,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,CAAC;AAChB,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAChE,OAAO,CAAC,GAAG,CAAC,CAAC;AAChB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,CAAC,CAAC;KACZ;IAEO,gBAAgB,CAAC,MAAsB,EAAE,SAAiB,EAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;;QAID,IACI,SAAS,KAAK,CAAC;YACf,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa;aAC5D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EACpF;AACE,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KACjD;IAEO,SAAS,CACb,KAAwB,EACxB,IAAY,EACZ,UAAkB,EAClB,gBAAmC,EACnC,cAAsB,EACtB,gBAAyB,EAAA;AAEzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACnB,YAAA,MAAM,cAAc,GAAG,IAAI,aAAa,CAAC;gBACrC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC;AACzC,gBAAA,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,uBAAuB,CAAC,SAAS;AACxC,gBAAA,MAAM,EAAE,IAAI,WAAW,CACnB,uBAAuB,CAAC,eAAe,EACvC,uBAAuB,CAAC,aAAa,EACrC,uBAAuB,CAAC,UAAU,EAClC,uBAAuB,CAAC,WAAW,CACtC;gBACD,WAAW,EAAE,uBAAuB,CAAC,UAAU;gBAC/C,YAAY,EAAE,uBAAuB,CAAC,WAAW;gBACjD,WAAW,EAAE,uBAAuB,CAAC,WAAW;AAChD,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,uBAAuB,CAAC,eAAe;AAC3D,aAAA,CAAC,CAAC;YAEH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;AACrD,SAAA;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAoB,EAAE,CAAC;AAErC,QAAA,IAAI,SAAuB,CAAC;AAC5B,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,QAAA,OAAO,KAAK,EAAE;AACV,YAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAChB,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/D,aAAA;YAED,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC9C,YAAA,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,IAAI,gBAAgB,EAAE;gBAC1F,SAAS,GAAG,CAAC,CAAC;AACjB,aAAA;AACD,YAAA,MAAM,SAAS,GACX,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/H,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;YAE3D,IAAI,UAAU,CAAC,MAAM,EAAE;gBACnB,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,aAAA;YAED,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACrG,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACnG,YAAA,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC;AAC3F,YAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAExB,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM;AACT,aAAA;YAED,KAAK,GAAG,SAAS,CAAC;AAClB,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,YAAA,MAAM,UAAU,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3E,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjE,eAAe,CAAC,4BAA4B,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACzF,QAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;KAC/B;IAEO,WAAW,GAAA;AACf,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAC9B,CAAC;KACL;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;AAEO,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AACzC,QAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC7D,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AACvH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,OAAO;AACH,YAAA,IAAI,YAAY,CAAC;AACb,gBAAA,GAAG,IAAI;gBACP,YAAY,EAAE,YAAY,CAAC,SAAS;gBACpC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;AAC1C,gBAAA,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;AACtC,gBAAA,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;AAChC,gBAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;gBAClC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,QAAQ,CAAC,WAAW;aACpC,CAAC;SACL,CAAC;KACL;AAEO,IAAA,mBAAmB,CACvB,UAAkB,EAClB,IAAY,EACZ,KAAwB,EACxB,gBAAmC,EAAA;AAEnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,UAAU,GAAmB,EAAE,CAAC;AACpC,QAAA,IAAI,MAAM,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,UAAU,GAAgB,IAAI,CAAC;QACnC,IAAI,YAAY,GAAW,IAAI,CAAC;QAChC,IAAI,cAAc,GAAW,IAAI,CAAC;QAClC,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,UAAU,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC3E,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC3D,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACnG,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAEpE,YAAA,IAAI,eAAe,IAAI,CAAC,SAAS,EAAE;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CACzD,eAAe,EACf,QAAQ,EACR,YAAY,CAAC,aAAa,EAC1B,CAAC,KAAK,CAAC,EACP,IAAI,CACP,CAAC;AACF,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEnB,YAAY,GAAG,CAAC,CAAC,CAAC;gBAClB,QAAQ,GAAG,EAAE,CAAC;gBACd,UAAU,GAAG,EAAE,CAAC;AACnB,aAAA;AAAM,iBAAA;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACpD,gBAAA,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC;AAC3B,oBAAA,GAAG,IAAI;oBACP,YAAY;oBACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,eAAe,EAAE,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,uBAAuB,CAAC,eAAe;AACvG,oBAAA,aAAa,EAAE,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,uBAAuB,CAAC,aAAa;AACjG,oBAAA,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;AAChC,oBAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;oBAClC,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,oBAAA,WAAW,EAAE,SAAS,KAAK,UAAU,CAAC,IAAI;AAC1C,oBAAA,WAAW,EAAE,SAAS,KAAK,UAAU,CAAC,YAAY;AAClD,oBAAA,KAAK,EAAE,KAAK;AACf,iBAAA,CAAC,CAAC;AAEH,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEnB,IACI,QAAQ,KAAK,YAAY;AACzB,oBAAA,CAAC,UAAU;AACX,oBAAA,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,EAChF;oBACE,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA;AAAM,qBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,oBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,iBAAA;AAED,gBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,EAAE;oBACvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAC5D,oBAAA,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrB,YAAY,GAAG,KAAK,CAAC;AACxB,iBAAA;AAAM,qBAAA,IAAI,YAAY,EAAE;AACrB,oBAAA,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;gBAED,YAAY,GAAG,QAAQ,CAAC;gBACxB,QAAQ,GAAG,IAAI,CAAC;AACnB,aAAA;YAED,UAAU,GAAG,MAAM,CAAC;YACpB,cAAc,GAAG,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE,CAAC;AAEb,YAAA,IAAI,UAAU,GAAG,MAAM,EAAE,QAAQ,EAAE;gBAC/B,MAAM,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACvE,UAAU,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC1E,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,gBAAgB,CAAC,QAAgB,EAAE,cAAsB,EAAE,UAA0B,EAAA;QACzF,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACtE,QAAA,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE;AACzB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChC,SAAA;KACJ;IAEO,cAAc,CAAC,KAAa,EAAE,MAAsB,EAAA;QACxD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa,EAAE;gBACvF,OAAO,CAAC,GAAG,CAAC,CAAC;AAChB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,YAAY,CAAC,KAAmB,EAAA;AACpC,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KACpF;AAEO,IAAA,oBAAoB,CACxB,SAAuB,EACvB,cAA4B,EAC5B,UAA0B,EAC1B,gBAAyB,EAAA;AAEzB,QAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;AAC3B,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,SAAS,CAAC,KAAK;AACtB,YAAA,MAAM,EAAE,IAAI,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC;YACxH,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,gBAAgB;YAChB,kBAAkB,EAAE,SAAS,CAAC,WAAW;AAC5C,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,eAAe,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;AAChD,YAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;AAC9C,YAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;AACjD,SAAA;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,MAAM,MAAM,GAAG,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;AACjF,QAAA,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;AAChC,gBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAClC,aAAA;AAED,YAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa,EAAE;AACpF,gBAAA,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1B,gBAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC1B,gBAAA,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AAC/B,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;AACjC,SAAA;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE;YACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,eAAe,CAAC,QAAgB,EAAA;QACpC,IAAI,QAAQ,KAAK,EAAE,EAAE;YACjB,OAAO,YAAY,CAAC,KAAK,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,QAAQ,GAAG,EAAE,MAAM,QAAQ,GAAG,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE;YACtE,OAAO,YAAY,CAAC,WAAW,CAAC;AACnC,SAAA;QAED,OAAO,YAAY,CAAC,IAAI,CAAC;KAC5B;AAEO,IAAA,0BAA0B,CAAC,KAAa,EAAA;AAC5C,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,IAAI,aAAa,CAAC;gBACrB,KAAK,EAAE,uBAAuB,CAAC,SAAS;AACxC,gBAAA,MAAM,EAAE,IAAI,WAAW,CACnB,uBAAuB,CAAC,eAAe,EACvC,uBAAuB,CAAC,aAAa,EACrC,uBAAuB,CAAC,UAAU,EAClC,uBAAuB,CAAC,WAAW,CACtC;gBACD,YAAY,EAAE,uBAAuB,CAAC,WAAW;gBACjD,WAAW,EAAE,uBAAuB,CAAC,UAAU;gBAC/C,WAAW,EAAE,uBAAuB,CAAC,WAAW;AACnD,aAAA,CAAC,CAAC;AACN,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;QAEjH,OAAO,IAAI,aAAa,CAAC;YACrB,KAAK,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,IAAI,uBAAuB,CAAC,SAAS;AAC9E,YAAA,MAAM,EAAE,IAAI,WAAW,CACnB,SAAS,CAAC,cAAc,CAAC,eAAe,IAAI,uBAAuB,CAAC,eAAe,EACnF,aAAa,IAAI,uBAAuB,CAAC,aAAa,EACtD,UAAU,IAAI,uBAAuB,CAAC,UAAU,EAChD,SAAS,CAAC,cAAc,CAAC,WAAW,IAAI,uBAAuB,CAAC,WAAW,CAC9E;YACD,YAAY,EAAE,uBAAuB,CAAC,WAAW;YACjD,WAAW,EAAE,uBAAuB,CAAC,UAAU;YAC/C,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,WAAW,IAAI,uBAAuB,CAAC,WAAW;AAC3F,SAAA,CAAC,CAAC;KACN;AAEO,IAAA,sBAAsB,CAAC,SAAyB,EAAA;AACpD,QAAA,IAAI,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC;AAC1D,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;QACzD,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChE,YAAA,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACxF,YAAA,MAAM,eAAe,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AACtG,YAAA,MAAM,eAAe,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/G,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC;AAClF,YAAA,IACI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,eAAe;AACzE,gBAAA,CAAC,iBAAiB,CAAC,iBAAiB,CAChC,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,eAAe,CAC1E;AACD,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,WAAW,KAAK,WAAW,EACrF;AACE,gBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACzG,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC5E,gBAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;AACnC,aAAA;AAED,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa;AACxD,kBAAE,SAAS,CAAC,cAAc,CAAC,aAAa;AACxC,kBAAE,UAAU,CAAC,aAAa,CAAC;AAC/B,YAAA,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC;YACxC,IAAI,WAAW,IAAI,aAAa,EAAE;AAC9B,gBAAA,MAAM,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;AACnD,gBAAA,MAAM,sBAAsB,GAAG,SAAS,CAAC,iBAAiB,CACtD,UAAU,CAAC,UAAU,GAAG,cAAc,EACtC,IAAI,CAAC,UAAU,CAAC,eAAe,CAClC,CAAC;AACF,gBAAA,eAAe,IAAI,cAAc,GAAG,sBAAsB,CAAC;AAC9D,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,eAAe,CAAC;KAC1B;AAEO,IAAA,gBAAgB,CAAC,MAAgC,EAAE,UAAkB,EAAE,QAAgB,EAAA;QAC3F,IAAI,UAAU,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/H,QAAA,IAAI,UAAuB,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACpB,YAAA,UAAU,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAEpF,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,UAAU,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACtC,gBAAA,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACrB;AAEO,IAAA,qBAAqB,CAAC,MAAgC,EAAE,UAAkB,EAAE,QAAgB,EAAA;QAChG,MAAM,eAAe,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,CAC9G,SAAS,IAAI,SAAS,CAAC,cAAc,CACxC,CAAC;AACF,QAAA,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC3C,gBAAA,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;oBACb,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,qBAAqB,CAAC,MAAgC,EAAE,UAAkB,EAAE,QAAgB,EAAA;QAChG,MAAM,eAAe,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,CAC9G,SAAS,IAAI,SAAS,CAAC,cAAc,CACxC,CAAC;AACF,QAAA,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;AAC1C,YAAA,IAAI,cAAc,CAAC,WAAW,KAAK,IAAI,EAAE;gBACrC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;gBAClH,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,CAAG,EAAA,IAAI,CAAG,EAAA,IAAI,CAAC,MAAM,CAAG,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,EAAE,CAAC,CAAC;AACjH,gBAAA,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,cAAc,CAAC,CAAC;gBACnF,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,KAAK,mBAAmB,CAAC,MAAM,CAAC;gBACvE,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9C,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,aAAA;AACJ,SAAA;KACJ;IAEO,uBAAuB,CAAC,SAAyB,EAAE,QAAgB,EAAA;AACvE,QAAA,IAAI,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE;AAC7B,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;QAED,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AACvD,QAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtC,QAAA,OAAO,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;KACtH;AACJ;;MCj4CY,sBAAsB,CAAA;AAK/B,IAAA,WAAA,CAAY,MAAwC,EAAA;QAChD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;AAED,QAAA,MAAM,CAAC,eAAe,KAAK,iBAAiB,CAAC;AAE7C,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC/B;AACJ;;MCbY,sBAAsB,CAAA;IACxB,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;KAC7E;AACJ;;MCEY,WAAW,CAAA;AAapB,IAAA,WAAA,CAAY,aAA0B,EAAA;QANrB,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QAOlC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,4BAA4B,CAAC;AACpD,QAAA,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAED,IAAA,UAAU,CAAC,OAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,gBAAgB,GAAA;QACZ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACpD,IAAI,cAAc,CAAC,OAAO,EAAE;YACxB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAElD,OAAO;AACV,SAAA;QAED,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAClD;AAED,IAAA,MAAM,CAAC,MAAoB,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;AAED,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAC7B,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAC5C,SAAA;QAED,OAAO,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACjE;IAED,qBAAqB,GAAA;AACjB,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxF,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAI,EAAA,CAAA,CAAC,CAAC;AAE1F,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;AAC/B,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAC/E,SAAA;AAAM,aAAA;AACH,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC1E,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,CAC1C,YAAY,EACZ,kBAAkB,CAAC,mBAAmB,CAClC,IAAI,cAAc,CAAC;AACf,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI;AACjC,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU;SAChD,CAAC,CACL,CACJ,CAAC;QACF,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;AAChE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3F,QAAA,MAAM,aAAa,GAAG,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC;AACzD,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,GAAG,aAAa,CAAC;QAElD,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;QACpG,IAAI,gBAAgB,KAAK,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YAC/E,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACrD,SAAA;QAED,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAI,EAAA,CAAA,CAAC,CAAC;AACvE,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAA,EAAG,gBAAgB,CAAA,EAAA,CAAI,CAAC,CAAC;KAC5E;IAEO,gBAAgB,GAAA;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAEO,IAAA,UAAU,CAAC,cAAsB,EAAA;AACrC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC;QACpG,IAAI,CAAC,cAAc,EAAE;AACjB,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACzD,OAAO;AACV,SAAA;AAED,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AACpD,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AAChF,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAG,EAAA,WAAW,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;QACzE,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;IAEO,oBAAoB,GAAA;QACxB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;KAChE;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,EAAA,CAAI,CAAC;QAChE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;KAC7D;AACJ;;MC7IY,kBAAkB,CAAA;AAU3B,IAAA,IAAI,GAAG,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;KAC3H;AAED,IAAA,WAAA,CAAY,MAAoC,EAAA;QAbhD,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QACb,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QACb,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QAOT,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,KAAK,CAAC,OAAuB,EAAA;QACzB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAA;KACJ;AACJ;;MC7BY,WAAW,CAAA;AACpB,IAAA,WAAW,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,SAAS,GAAG,CAAC,QAAoB,KAAI;AACvC,gBAAA,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC7B,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,UAAU;AACX,gBAAA,MAAM,CAAC,qBAAqB;oBAC5B,MAAM,CAAC,6BAA6B,CAAC;oBACrC,MAAM,CAAC,0BAA0B,CAAC;oBAClC,MAAM,CAAC,yBAAyB,CAAC;oBACjC,MAAM,CAAC,wBAAwB,CAAC;AAChC,oBAAA,SAAS,CAAC;AACjB,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAEJ;;MCdY,UAAU,CAAA;AAKnB,IAAA,WAAA,CAAY,QAA+C,EAAA;AAFnD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAGvC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAK;AACd,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAE7B,IAAI,OAAO,CAAC,GAAG,EAAE;AACb,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACxC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrB,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB,aAAA;AACL,SAAC,CAAC;KACL;AAED,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC7B,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAA;KACJ;AACJ;;MC3BY,cAAc,CAAA;IAWvB,WAAY,CAAA,QAAqB,EAAE,QAAgB,EAAA;QANnD,IAAM,CAAA,MAAA,GAAiB,IAAI,CAAC;QAOxB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAiC,8BAAA,EAAA,QAAQ,EAAE,CAAC;AACrE,QAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtC;AAED,IAAA,UAAU,CAAC,OAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;AAED,IAAA,eAAe,CAAC,GAAW,EAAA;QACvB,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,GAAgB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;QACrH,IAAI,CAAC,gBAAgB,EAAE;AACnB,YAAA,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AACrC,QAAA,gBAAgB,CAAC,SAAS,GAAG,eAAe,CAAC;KAChD;AAED,IAAA,MAAM,CAAC,MAAoB,EAAA;QACvB,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACrF,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChB,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,YAAY,EAAE;AACpB,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBACzD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,MAAM,CAAC,GAAW,EAAA;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QACrD,MAAM,aAAa,GAAG,cAAc,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAE5E,QAAA,OAAO,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,eAAe,GAAG,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;KAC1H;;AAGD,IAAA,mBAAmB,CAAC,KAAY,EAAA;;AAE5B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QACrD,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,IAAI,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC;AACxG,QAAA,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnI,MAAM,aAAa,GAAG,cAAc,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9E,IAAI,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,eAAe,GAAG,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1H,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;AAC3D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,EAAE;AACT,gBAAA,GAAG,IAAI,QAAQ,CAAC,mBAAmB,CAAC;AACpC,gBAAA,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC;AAChC,aAAA;AAED,YAAA,IAAI,KAAa,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,EAAE;AACT,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD,gBAAA,KAAK,GAAG,IAAI,CAAC,cAAc,CACvB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,WAAW,GAAG,OAAO,EACnE,GAAG,EACH,SAAS,CAAC,OAAO,CACpB,CAAC;AACL,aAAA;AAAM,iBAAA,IAAI,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACvE,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAChE,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5G,aAAA;AAAM,iBAAA;gBACH,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AACrG,aAAA;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAA,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC1E,SAAA;KACJ;;AAGD,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/G,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,IAAI,aAAa,CAAC,UAAU,CAAC;AAClE,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;KACvE;IAEO,YAAY,CAAC,OAAoB,EAAE,KAAY,EAAA;AACnD,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AACtB,QAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAChF,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAE1E,OAAO;AACH,YAAA,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AACpD,YAAA,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrD,OAAO,EAAE,QAAQ,CAAC,KAAK;SAC1B,CAAC;KACL;AAEO,IAAA,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW,EAAE,IAAY,EAAA;QAC3E,OAAO,CAAA,OAAA,EAAU,MAAM,CAAY,SAAA,EAAA,KAAK,UAAU,GAAG,CAAA,QAAA,EAAW,IAAI,CAAA,EAAA,CAAI,CAAC;KAC5E;AACJ;;AC/HK,MAAO,QAAS,SAAQ,aAAa,CAAA;IA+CvC,WAAY,CAAA,eAA4B,EAAU,aAA4B,EAAA;AAC1E,QAAA,KAAK,EAAE,CAAC;QADsC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AA5B9E,QAAA,IAAA,CAAA,WAAW,GAAiB;AACxB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,YAAY,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACrD,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,YAAY,EAAE;AACV,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,eAAe,EAAE,CAAC;AAClB,gBAAA,mBAAmB,EAAE,CAAC;AACtB,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,iBAAiB,EAAE,CAAC;AACvB,aAAA;SACJ,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,YAAY,GAAG;AACpB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;SACX,CAAC;QAwMM,IAAwB,CAAA,wBAAA,GAAG,MAAW;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,SAAC,CAAC;AAtME,QAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,aAAa,CAAC;QAC1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,aAAa,CAAC,OAA2B,EAAE,KAAe,EAAA;AACtD,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAExC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE5B,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YACjF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEzC,YAAA,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE/D,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AAC/E,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC,CAAC;AACpF,SAAA;;QAGD,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE3D,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;YAChC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;QAED,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC9D;AAED;;AAEI;IACJ,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAA;;;;AAIzC,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE;YAC/F,OAAO;AACV,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACvC;IAED,oBAAoB,GAAA;QAChB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;AACV,SAAA;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC9D,QAAA,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC3E,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;AACV,SAAA;AAED,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC,CAAC;AACnF,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AACjF,QAAA,SAAS,CAAC,SAAS,CACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EACvD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAC7C,CAAC;KACL;AAED,IAAA,UAAU,CAAC,OAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;KAC/F;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;QACxB,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,SAAA;KACJ;AAED;;AAEI;IACJ,UAAU,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACtC;AAED;;AAEI;AACJ,IAAA,UAAU,CAAC,KAAe,EAAA;AACtB,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAEjE,OAAO;AACV,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACtC;IAED,YAAY,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;KACxC;IAED,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAA;QACxC,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAExG,QAAA,OAAO,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KACnF;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC9B,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC9D;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC9B,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC9D;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzB,QAAA,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC5C;IAED,UAAU,GAAA;QACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,UAAU,GAAA;QACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;KACvC;IAED,YAAY,GAAA;QACR,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,eAAe,GAAA;QACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;KACvC;IAEO,kBAAkB,GAAA;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK;AAC3G,YAAA,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAAC,aAAa;AACnD,YAAA,YAAY,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnF,SAAS;YACT,SAAS;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SACpC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC;KAClB;IAMO,sBAAsB,GAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAA;KACJ;IAEO,YAAY,GAAA;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpD;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACtC;AACJ;;MCxRY,YAAY,CAAA;IACrB,WACW,CAAA,OAAoB,EACpB,QAAoC,EACpC,SAAiB,EACjB,eAA8B,EAC9B,MAA0B,EAAA;QAJ1B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAa;QACpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;QACpC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAe;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoB;KACjC;AACP;;ACXD;;;AAGI;AACE,MAAO,SAAU,SAAQ,aAAa,CAAA;AAkBxC;;AAEI;IACJ,IAAI,YAAY,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AACvC,YAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7B,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAClB,SAAA;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;KAC1C;AACD,IAAA,IAAI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAGD;;AAEI;IACJ,IAAI,MAAM,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;KAC5C;AAED;;AAEI;AACJ,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KAClF;AAGD,IAAA,WAAA,CAAoB,MAAmB,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;QADQ,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;;;;QAhD9B,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC;QAQ/B,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QAEN,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAmBV,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAelB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AAiBpB;;AAEI;QACJ,IAAQ,CAAA,QAAA,GAAG,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AACxC,gBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBAC7D,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AAC5E,iBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACjD,aAAA;AAED,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,SAAC,CAAC;QA3BE,IAAI,CAAC,IAAI,EAAE,CAAC;;;;;;AAOZ,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,IAAI,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;KACvC;AAmBD,IAAA,UAAU,CAAC,SAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAClB;AAED;;AAEI;AACJ,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC1B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC/C;IAEO,IAAI,GAAA;QACR,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,qBAAqB,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAiB,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;KAC7F;AACJ;;AC5GK,MAAO,eAAgB,SAAQ,aAAa,CAAA;AAC9C,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;KACvC;IACD,IAAI,cAAc,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,GAAG,CAAC;KACtC;AAED,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;KACpC;AAED,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KAC7B;IACD,IAAI,IAAI,CAAC,GAAe,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;KAC5B;AAED,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACjC;IACD,IAAI,QAAQ,CAAC,GAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;KAChC;AAED,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;KACpC;IACD,IAAI,WAAW,CAAC,GAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;KACnC;IA4BD,WAAY,CAAA,eAA4B,EAAU,aAA4B,EAAA;AAC1E,QAAA,KAAK,EAAE,CAAC;QADsC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAd9E,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AAId,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEnC,QAAA,IAAA,CAAA,IAAI,GAAG;AACH,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,KAAK,EAAE,IAAI;SACd,CAAC;AAIE,QAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,aAAa,CAAC,OAA2B,EAAE,KAAe,EAAA;AACtD,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE5B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YACjF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAEzC,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,YAAA,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAExE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC,CAAC;YACxF,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAI,EAAA,CAAA,CAAC,CAAC;AAC7F,SAAA;;QAGD,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,OAAO;AACV,SAAA;;QAGD,IAAI,OAAO,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;QAED,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;QAED,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;AAEI;AACJ,IAAA,QAAQ,CAAC,KAAe,EAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC1E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACvE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE5B,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;KACnC;AAED;;AAEI;IACJ,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KAChD;AAED,IAAA,gBAAgB,CAAC,KAAc,EAAE,KAAa,EAAE,MAAc,EAAA;AAC1D,QAAA,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AAC/C,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvG,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACvC,QAAA,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,YAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,YAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACxB,YAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC;AAEpC,QAAA,OAAO,OAAO,CAAC;KAClB;IAED,oBAAoB,GAAA;QAChB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;AACV,SAAA;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC9D,QAAA,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;YACpF,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO;AACV,SAAA;QAED,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAI,EAAA,CAAA,CAAC,CAAC;QAC5F,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC,CAAC;QAC1F,SAAS,CAAC,SAAS,CACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAC1F,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CACzE,CAAC;KACL;AAED,IAAA,UAAU,CAAC,OAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;KACnC;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACxC;AAED;;AAEI;IACJ,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;KAC9B;AAED;;AAEI;AACJ,IAAA,UAAU,CAAC,KAAe,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KAChC;AAED,IAAA,uBAAuB,CAAC,MAAa,EAAE,IAAW,EAAE,MAAe,EAAA;;AAE/D,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC3C;AAED;;AAEI;IACJ,oBAAoB,CAAC,MAAc,EAAE,MAAe,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC3B,OAAO;AACV,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AAE1C,QAAA,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE;AACtB,YAAA,IAAI,MAAM,EAAE;gBACR,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC/C,aAAA;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE;AACjF,YAAA,IAAI,MAAM,EAAE;gBACR,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC/C,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5F,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,SAAA;KACJ;AAED;;AAEI;AACJ,IAAA,QAAQ,CAAC,SAAiB,EAAA;;;AAGtB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAC9B,OAAO;AACV,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;AAED;;AAEI;AACJ,IAAA,QAAQ,CAAC,MAAc,EAAA;QACnB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YACtC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;KAChF;IAED,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAA;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACtD;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;KAC9B;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;KAC9B;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;KAC3B;IAEO,kBAAkB,GAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;AAClD,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAE1D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;AAE9B,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,CAAC;AAC5E,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AACnD,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACxC,SAAA;QAED,MAAM,OAAO,GAAG,aAAa;AACzB,cAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;cAC9D,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzF,IAAI,CAAC,WAAW,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK;AACnH,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;AAChC,YAAA,YAAY,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,cAAc,EAAE,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC;YACvG,SAAS;YACT,SAAS;AACT,YAAA,MAAM,EAAE,CAAC;YACT,YAAY;AACZ,YAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS;YAC1C,KAAK,EAAE,YAAY,CAAC,KAAK;SAC5B,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC;KAClB;IAEO,eAAe,GAAA;QACnB,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/C;IAEO,cAAc,GAAA;QAClB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,cAAc,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7C;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC3D;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAuB,KAAI;YAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACN;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACtC;AAEO,IAAA,YAAY,CAAC,OAA2B,EAAA;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzD,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;YACtC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEO,UAAU,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;KAC9B;IAEO,UAAU,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;KAC9B;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KAChC;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;KACnC;IAEO,qBAAqB,GAAA;QACzB,OAAO;AACH,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,YAAY,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACrD,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,YAAY,EAAE;AACV,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,eAAe,EAAE,CAAC;AAClB,gBAAA,mBAAmB,EAAE,CAAC;AACtB,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,iBAAiB,EAAE,CAAC;AACvB,aAAA;SACJ,CAAC;KACL;AACJ;;AC1aK,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;IAWrD,IACI,IAAI,CAAC,GAAa,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACjB,QAAA,IAAI,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;AACxC,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACtC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;AACxC,YAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;AACzC,SAAA;KACJ;AACD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAYD,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACnC;AAED,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;KACpC;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC;KACnE;IAQD,WAAoB,CAAA,gBAAkC,EAAU,aAA4B,EAAA;AACxF,QAAA,KAAK,EAAE,CAAC;QADQ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAE3F;IAEQ,WAAW,GAAA;QAChB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;IAED,UAAU,GAAA;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC7E,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;KAC/D;IAED,aAAa,GAAA;AACT,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACxE,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;KACvF;IAED,aAAa,GAAA;AACT,QAAA,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3E,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;KACtF;IAED,2BAA2B,GAAA;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,IAAG;AAC7D,YAAA,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE;gBACtE,OAAO;AACV,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;IAEO,wBAAwB,GAAA;QAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;AACrH,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAE,GAAG,kBAAkB,CAAA,EAAA,CAAI,CAAC,CAAC;KACrH;8GAlGQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAY,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,igBCtB/B,0HAMA,EAAA,MAAA,EAAA,CAAA,yVAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDgBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACI,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0HAAA,EAAA,MAAA,EAAA,CAAA,yVAAA,CAAA,EAAA,CAAA;2GAGtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAGF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAiBN,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,sBAAsB,CAAA;gBAqBO,SAAS,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEK,aAAa,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME7DlC,KAAK,CAAA;AAKd,IAAA,WAAA,CACY,gBAAkC,EAC1C,OAAoB,EACpB,OAAoB,EACpB,OAAoB,EACpB,SAAiB,EACT,eAAuB,EACvB,UAAkC,EAAA;QANlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAKlC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;QACvB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAwB;QAX9C,IAAiB,CAAA,iBAAA,GAAuC,EAAE,CAAC;QAE3D,IAAiB,CAAA,iBAAA,GAAuC,EAAE,CAAC;AAWvD,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtG,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtG,SAAA;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;IAED,kBAAkB,CAAC,IAAY,EAAE,IAAc,EAAA;AAC3C,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC9F,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAC9C;IAED,sBAAsB,CAAC,QAAkB,EAAE,IAAc,EAAA;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC9F,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;KACvE;IAED,4BAA4B,CAAC,QAAkB,EAAE,IAAc,EAAA;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;KAChI;IAED,kBAAkB,CAAC,IAAY,EAAE,IAAc,EAAA;AAC3C,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;KAChI;AAED,IAAA,cAAc,CAAC,UAAmB,EAAA;AAC9B,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9E,QAAA,KAAK,IAAI,SAAS,IAAI,cAAc,EAAE;AAClC,YAAA,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AACxF,SAAA;KACJ;IAED,kBAAkB,GAAA;AACd,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC3E;AAEO,IAAA,gBAAgB,CACpB,UAAuB,EACvB,SAAiB,EACjB,OAAoB,EACpB,IAAc,EAAA;QAEd,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,QAAA,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE;YAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,kBAAkB,EAAE;gBAC7E,KAAK;gBACL,OAAO;gBACP,IAAI;AACJ,gBAAA,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;AACxC,aAAA,CAAC,CAAC;AACH,YAAA,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACrF,YAAA,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC;KAC3B;IAEO,YAAY,CAAC,cAAkD,EAAE,IAAY,EAAA;QACjF,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClG,IAAI,IAAI,KAAK,CAAC,EAAE;YACZ,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC;AACrG,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,gBAAgB,CAAC;KACjG;IAEO,uBAAuB,GAAA;AAC3B,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACxB,OAAO;AACV,SAAA;QAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/F,QAAA,KAAK,IAAI,SAAS,IAAI,cAAc,EAAE;AAClC,YAAA,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC3H,SAAA;KACJ;IAEO,iBAAiB,CAAC,SAA6B,EAAE,gBAAyB,EAAA;AAC9E,QAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACxE,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE;AAC7C,YAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;AACvC,SAAA;aAAM,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE;AACnD,YAAA,QAAQ,GAAG,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;AACvC,SAAA;aAAM,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,OAAO,IAAI,gBAAgB,EAAE;AAC1E,YAAA,QAAQ,GAAG,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAE,CAAC;AACtC,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AACJ;;MChHY,oBAAoB,CAAA;IAG7B,WAAmB,CAAA,gBAAkC,EAAU,QAAkB,EAAA;QAA9D,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAC7E,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC;KACxE;AAED,IAAA,kBAAkB,CACd,KAAwB,EACxB,SAAiB,EACjB,UAAkC,EAClC,YAAoB,EAAA;QAEpB,OAAO;AACH,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,IAAG;AAC3F,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AACnC,aAAC,CAAC;AACF,YAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,IAAG;gBAC3F,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC/C,aAAC,CAAC;AACF,YAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,IAAG;AACrF,gBAAA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AACjC,aAAC,CAAC;AACF,YAAA,cAAc,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC;YAC9F,KAAK,EACD,KAAK,YAAY,SAAS;AACtB,kBAAE,IAAI,KAAK,CACL,IAAI,CAAC,gBAAgB,EACrB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAO,EACb,IAAI,WAAW,CAAC;oBACZ,IAAI,EAAE,KAAK,CAAC,UAAU;oBACtB,KAAK,EAAE,KAAK,CAAC,WAAW;oBACxB,GAAG,EAAE,KAAK,CAAC,YAAY;oBACvB,MAAM,EAAE,KAAK,CAAC,YAAY;iBAC7B,CAAC,EACF,KAAK,CAAC,SAAS,EACf,SAAS,EACT,UAAU,CACb;AACH,kBAAE,IAAI;SACjB,CAAC;KACL;AAED,IAAA,yBAAyB,CAAC,QAAwB,EAAE,SAAiB,EAAE,YAAoB,EAAA;AACvF,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;AAClG,SAAC,CAAC,CAAC;KACN;AAED,IAAA,0BAA0B,CAAC,UAA6B,EAAE,YAAoB,EAAE,gBAA+B,EAAA;AAC3G,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YAC9C,QACI,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBACrE,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC;gBACnE,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAC/E;AACL,SAAA;AAED,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAChF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAED,aAAa,CAAC,UAA6B,EAAE,QAAuB,EAAA;AAChE,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjI,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjI,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7H,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAC3C,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,CAC1F,CAAC;AACF,QAAA,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KACrH;AAED,IAAA,YAAY,CAAC,UAA6B,EAAE,IAAY,EAAE,SAAiB,EAAA;QACvE,IAAI,IAAI,KAAK,qBAAqB,EAAE;YAChC,QACI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;gBAChD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,EAC1D;AACL,SAAA;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC3D;IAED,qBAAqB,CACjB,SAA2C,EAC3C,QAAuB,EACvB,YAAoB,EACpB,OAAgB,EAChB,IAAqB,EAAA;AAErB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACzC,MAAM;gBACF,SAAS,CAAC,QAAQ,YAAY,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChI,SAAA;QAED,OAAO,IAAI,YAAY,CAAC;AACpB,YAAA,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;YAC/B,MAAM;AACN,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;AAChD,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,YAAA,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,YAAA,eAAe,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,uBAAuB,CAAC,eAAe;AAC9F,YAAA,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,uBAAuB,CAAC,aAAa;AACxF,YAAA,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;AAChC,YAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;YAClC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;YAClB,YAAY;AACZ,YAAA,KAAK,EAAE,SAAS,CAAC,QAAQ,YAAY,iBAAiB;AACtD,YAAA,OAAO,EAAE,SAAS,CAAC,QAAQ,YAAY,mBAAmB;AAC7D,SAAA,CAAC,CAAC;KACN;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,aAAa,CAAC;KACjE;IAEO,2BAA2B,CAAC,UAA8C,EAAE,QAAuB,EAAA;AACvG,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;KACnH;IAEO,aAAa,CAAI,UAA6B,EAAE,WAAmB,EAAA;AACvE,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;KAC9E;8GA1IQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;MCIE,gBAAgB,CAAA;IAazB,WAAoB,CAAA,oBAA0C,EAAU,aAA4B,EAAA;QAAhF,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAVpG,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;QAM9B,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QAEvB,IAAe,CAAA,eAAA,GAAkB,IAAI,CAAC;KAEkE;AAExG,IAAA,cAAc,CAAC,KAAgB,EAAE,OAAoB,EAAE,SAAkC,EAAA;AACrF,QAAA,MAAM,gBAAgB,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC1G,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,WAAW,CAC3B,QAAQ,EACR,gBAAgB,EAChB,IAAI,CAAC,oBAAoB,EACzB,KAAK,EACL,IAAI,CAAC,SAAS,EACd,IAAI,sBAAsB,CAAC;YACvB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;AACtC,YAAA,aAAa,EAAE,KAAK,CAAC,UAAU,GAAG,kCAAkC;AACvE,SAAA,CAAC,CACL,CAAC;AACF,QAAA,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,sBAAsB,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;KAC1C;AAED,IAAA,cAAc,CACV,KAAiB,EACjB,OAAoB,EACpB,SAAkC,EAClC,UAAkC,EAAA;AAElC,QAAA,MAAM,gBAAgB,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9E,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACnI,QAAA,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9F,QAAA,OAAO,CAAC,YAAY,GAAG,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5D,QAAA,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAA,OAAO,UAAU,CAAC;KACrB;AAED,IAAA,cAAc,CAAC,SAA6B,EAAA;AACxC,QAAA,MAAM,gBAAgB,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,WAAW,CAC3B,QAAQ,EACR,gBAAgB,EAChB,IAAI,CAAC,oBAAoB,EACzB,SAAS,CAAC,KAAK,EACf,IAAI,CAAC,SAAS,EACd,SAAS,CAAC,UAAU,CACvB,CAAC;AACF,QAAA,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAChG,QAAA,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,QAAoB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAChG,QAAA,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAA,OAAO,UAAU,CAAC;KACrB;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAClC;IAED,uBAAuB,GAAA;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC9D,OAAO;AACV,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC5C;AAED,IAAA,yBAAyB,CAAC,SAAiB,EAAA;AACvC,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC7C,OAAO;AACV,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;KACzC;IAED,uBAAuB,CAAC,SAAiB,EAAE,WAAmB,EAAA;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACrC,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;YACtD,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;KACzC;AAED,IAAA,2BAA2B,CAAC,OAAsB,EAAA;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YAC7D,OAAO;AACV,SAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC,SAAS,CAAC,CAAC;QACnF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;AACtF,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;KACnC;AAED,IAAA,qBAAqB,CAAC,SAAiB,EAAA;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KAChD;AAED,IAAA,iBAAiB,CAAC,OAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;KAClE;AAED,IAAA,UAAU,CAAC,SAAiB,EAAA;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,OAAO,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,SAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;IAED,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AAC5B,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,wBAAwB,GAAA;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC/C;AAED,IAAA,UAAU,CAAC,OAAqB,EAAA;QAC5B,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AACrF,QAAA,OAAO,aAAa,EAAE;YAClB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,GAAG,aAAa,CAAC;AACxB,YAAA,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,eAAe,CAAC,CAAC;AAC1F,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC3B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACjE,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AACrF,QAAA,OAAO,aAAa,EAAE;YAClB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAC1C,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AACjC,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;YAED,OAAO,GAAG,aAAa,CAAC;AACxB,YAAA,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,eAAe,CAAC,CAAC;AAC1F,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,kBAAkB,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACtC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,QAAQ,MAAM,CAAC,IAAI;gBACf,KAAK,UAAU,CAAC,QAAQ;oBACpB,MAAM;AACV,gBAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AACvB,oBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACxH,oBAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACtF,MAAM;AACT,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC,IAAI,EAAE;oBAClB,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,sBAAsB,CAC7D,MAAM,CAAC,QAAQ,CAAC,QAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,IAAgB,CACnC,CAAC;oBACF,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;oBAC3C,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IAED,kBAAkB,CAAC,cAA6B,IAAI,EAAA;AAChD,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAClD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAA2B,CAAC;QAClE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;KAC5D;8GA1NQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;MCpBE,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,eAAe,GAA0B,IAAI,OAAO,EAAgB,CAAC;AAChF,KAAA;AARG,IAAA,aAAa,CAAC,OAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC9C;8GAPQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAf,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCME,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAOa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAIlB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAoB,CAAC;QAE/D,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAWlB,KAAA;IATG,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9B;IAED,MAAM,MAAM,CAAC,KAA2B,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;8GAjBQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,oKCXpC,qsBA0BA,EAAA,MAAA,EAAA,CAAA,4iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDfa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qsBAAA,EAAA,MAAA,EAAA,CAAA,4iBAAA,CAAA,EAAA,CAAA;8BAGtC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEmBE,eAAe,CAAA;AACxB,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;KACzC;IAED,IACI,OAAO,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,QAAqB,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;AACD,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAqBD,IAAA,WAAA,CACY,GAAsB,EACtB,gBAAkC,EAClC,aAA4B,EAC5B,QAAkB,EAClB,gBAAkC,EAClC,eAAgC,EAChC,SAAoB,EAAA;QANpB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAnBV,IAAK,CAAA,KAAA,GAAG,aAAa,CAAC;QAQnC,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAEpC,IAAmB,CAAA,mBAAA,GAA6B,IAAI,CAAC;AAWzD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC;QACrE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACrE,QAAA,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KAC5C;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAChC;AAED,IAAA,UAAU,CAAC,OAAkB,EAAA;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;KAC7D;AAED,IAAA,aAAa,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACvB;IAED,yBAAyB,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAG;YACtD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE;gBACnC,OAAO;AACV,aAAA;YACD,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC7E,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;AAClC,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxG,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACnC,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAK;;AAEjC,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACN;8GAzFQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,+cCnC5B,k3BAyBA,EAAA,MAAA,EAAA,CAAA,woIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDUa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k3BAAA,EAAA,MAAA,EAAA,CAAA,woIAAA,CAAA,EAAA,CAAA;iPAQ3C,OAAO,EAAA,CAAA;sBADV,KAAK;gBAcoC,SAAS,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEQ,gBAAgB,EAAA,CAAA;sBAA/D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEP,OAAO,EAAA,CAAA;sBAA7C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEf,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO,CAAA;;;ME5DX,oBAAoB,CAAA;AAS7B,IAAA,WAAA,CAAmB,MAAsC,EAAA;QARzD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEpB,IAAQ,CAAA,QAAA,GAAoB,KAAK,CAAC;QAElC,IAAI,CAAA,IAAA,GAAoB,MAAM,CAAC;AAG3B,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;YAC1D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AACxC,SAAA;KACJ;AACJ;;MCwCY,YAAY,CAAA;IACrB,OAAO,OAAO,CAAC,OAAuB,EAAA;QAClC,OAAO;AACH,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;AACP,gBAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;gBAC3F,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE;AACrG,aAAA;SACJ,CAAC;KACL;8GATQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAtBjB,eAAe;YACf,uBAAuB;YACvB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,uBAAuB;YACvB,mBAAmB;YACnB,gBAAgB;AAChB,YAAA,yBAAyB,CAEnB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,aAUtH,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAXV,SAAA,EAAA;YACP,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,sBAAsB;YACtB,eAAe;AAClB,SAAA,EAAA,OAAA,EAAA,CATS,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAYvH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAxBxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,eAAe;wBACf,uBAAuB;wBACvB,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,uBAAuB;wBACvB,mBAAmB;wBACnB,gBAAgB;wBAChB,yBAAyB;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AACjI,oBAAA,SAAS,EAAE;wBACP,gBAAgB;wBAChB,oBAAoB;wBACpB,eAAe;wBACf,cAAc;wBACd,gBAAgB;wBAChB,sBAAsB;wBACtB,eAAe;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,eAAe,CAAC;AAC7B,iBAAA,CAAA;;;ICxDW,UAKX;AALD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EALW,SAAS,KAAT,SAAS,GAKpB,EAAA,CAAA,CAAA;;MCMY,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;AASc,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAqC,CAAC;QACrE,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QAEb,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;QAEZ,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAEhB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aACrB,IAAI,CAAC,SAAS,CAAC;AACf,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;aAC3B,IAAI,CAAC,SAAS,CAAC;AACf,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QAEf,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;AA4BrB,KAAA;IA1BG,aAAa,CAAC,IAAY,EAAE,OAAe,EAAA;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;KAC5C;IAED,WAAW,CAAC,GAAW,EAAE,MAAc,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9F;AAED,IAAA,cAAc,CAAC,YAAoB,EAAE,WAAqB,EAAE,QAAgB,EAAE,QAAgB,EAAA;QAC1F,IAAI,YAAY,IAAI,WAAW,CAAC,MAAM,IAAI,YAAY,IAAI,QAAQ,EAAE;AAChE,YAAA,MAAM,KAAK,GAAG,YAAY,IAAI,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC,KAAK,CAAC;iBACd,IAAI,CAAC,SAAS,CAAC;AACf,iBAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,SAAA;aAAM,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,QAAQ,EAAE;YAC3E,MAAM,KAAK,GAAG,YAAY,IAAI,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACrH,OAAO,KAAK,CAAC,KAAK,CAAC;iBACd,IAAI,CAAC,SAAS,CAAC;AACf,iBAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACtB;8GA/CQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXjC,ssBAiBA,EAAA,MAAA,EAAA,CAAA,sPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAMb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,mBACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,kBAAkB,EAAA,QAAA,EAAA,ssBAAA,EAAA,MAAA,EAAA,CAAA,sPAAA,CAAA,EAAA,CAAA;8BAKlB,WAAW,EAAA,CAAA;sBAApB,MAAM;;;IEZC,KAIX;AAJD,CAAA,UAAY,IAAI,EAAA;AACZ,IAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EAJW,IAAI,KAAJ,IAAI,GAIf,EAAA,CAAA,CAAA;;ACJD,IAAY,qBAaX,CAAA;AAbD,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW,CAAA;AACf,CAAC,EAbW,qBAAqB,KAArB,qBAAqB,GAahC,EAAA,CAAA,CAAA;;MCXY,mBAAmB,CAAA;AAY5B,IAAA,WAAA,CACI,MAAqC,EAAA;AAErC,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,WAAW,EAAE;gBAAE,MAAM,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAAE,aAAA;AAExF,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;ACjBM,MAAM,kBAAkB,GAAG;AAC9B,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,iBAAiB;gBACzB,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,oBAAoB;gBAC5B,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,uBAAuB;gBAC/B,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,0BAA0B;gBAClC,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,6BAA6B;gBACrC,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,OAAO;AACvC,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,WAAW;AAC3C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,UAAU;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,KAAK;AAChC,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;AACD,IAAA;QACI,YAAY,EAAE,qBAAqB,CAAC,WAAW;AAC/C,QAAA,MAAM,EAAE;AACJ,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACF,YAAA,IAAI,mBAAmB,CAAC;AACpB,gBAAA,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,mBAAmB,CAAC,MAAM;AACtC,gBAAA,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,IAAI,cAAc,EAAE;AACjC,gBAAA,UAAU,EAAE,CAAC;gBACb,eAAe,EAAE,SAAS,CAAC,IAAI;AAC/B,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,UAAU,EAAE,GAAG;aAClB,CAAC;AACL,SAAA;AACJ,KAAA;CACJ;;AC3nCD,IAAY,aAGX,CAAA;AAHD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA;;MCCY,mBAAmB,CAAA;IAC5B,OAAO,gBAAgB,CAAC,cAA8B,EAAA;QAClD,IAAI,cAAc,KAAK,IAAI,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,cAAc,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;KACvE;IAED,OAAO,wBAAwB,CAAC,mBAA2B,EAAA;QACvD,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,QAAA,MAAM,mBAAmB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACtK,QAAA,MAAM,mBAAmB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACtK,QAAA,MAAM,mBAAmB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACtK,QAAA,MAAM,mBAAmB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACtK,QAAA,MAAM,mBAAmB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACtK,QAAA,MAAM,mBAAmB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACtK,QAAA,MAAM,qBAAqB,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,UAAU,CAAM,GAAA,EAAA,IAAI,CAAC,OAAO,CAAA,GAAA,EAAM,IAAI,CAAC,WAAW,CAAM,GAAA,EAAA,IAAI,CAAC,UAAU,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxN,QAAA,MAAM,qBAAqB,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,UAAU,CAAO,IAAA,EAAA,IAAI,CAAC,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,WAAW,CAAO,IAAA,EAAA,IAAI,CAAC,UAAU,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3N,QAAA,MAAM,qBAAqB,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAS,MAAA,EAAA,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,OAAO,CAAe,YAAA,EAAA,IAAI,CAAC,OAAO,CAAA,eAAA,EAAkB,IAAI,CAAC,OAAO,CAAqB,kBAAA,EAAA,IAAI,CAAC,OAAO,CAAA,qBAAA,EAAwB,IAAI,CAAC,OAAO,CAA2B,wBAAA,EAAA,IAAI,CAAC,OAAO,CAAA,2BAAA,EAA8B,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/S,QAAA,MAAM,qBAAqB,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,WAAW,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,UAAU,CAAM,GAAA,EAAA,IAAI,CAAC,OAAO,CAAA,GAAA,EAAM,IAAI,CAAC,WAAW,CAAM,GAAA,EAAA,IAAI,CAAC,UAAU,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5N,QAAA,MAAM,qBAAqB,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,WAAW,CAAA,IAAA,EAAO,IAAI,CAAC,UAAU,CAAO,IAAA,EAAA,IAAI,CAAC,WAAW,CAAA,IAAA,EAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AACjO,QAAA,MAAM,qBAAqB,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,WAAW,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,UAAU,CAAM,GAAA,EAAA,IAAI,CAAC,OAAO,CAAA,GAAA,EAAM,IAAI,CAAC,WAAW,CAAM,GAAA,EAAA,IAAI,CAAC,UAAU,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAE5N,QAAA,QAAQ,mBAAmB;AACvB,YAAA,KAAK,qBAAqB;gBACtB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,qBAAqB;gBACtB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,qBAAqB;gBACtB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,qBAAqB;gBACtB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,qBAAqB;gBACtB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,qBAAqB;gBACtB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,mBAAmB;gBACpB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,mBAAmB;gBACpB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,mBAAmB;gBACpB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,mBAAmB;gBACpB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,mBAAmB;gBACpB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA,KAAK,mBAAmB;gBACpB,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AACJ;;ACzDM,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB,CAAC;AAED,MAAM,YAAY,GAAG,CAAA;;;;;;;;;;;;OAYrB;;MChJM,iBAAiB,CAAA;IAC1B,WAAoB,CAAA,eAAgC,EAAU,SAAuB,EAAA;QAAjE,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;KAAI;IAEzF,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;KAC5G;8GAhBQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,KAAK,EAAA,CAAA,CAAA,EAAA;;2FAER,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA,CAAA;;;MCwCY,qBAAqB,CAAA;IAS9B,IACI,WAAW,CAAC,KAAiC,EAAA;QAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC9C;IAoDD,IACI,MAAM,CAAC,KAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;KAC1G;AACD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AA8CD,IAAA,WAAA,CAAoB,GAAsB,EAAU,QAAkB,EAAU,iBAAoC,EAAA;QAAhG,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAxG1G,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO,CAAC;AAE3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAoB,CAAC;AAExD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;AAE3B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;AAE1C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAO,CAAC;AAEzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO,CAAC;AAEtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;AAEjD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAU,CAAC;AAEpC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAU,CAAC;AAElC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAU,CAAC;AAElC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAElC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE,CAAC;AAExC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;AAEpC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAEhC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAoB,CAAC;AAErD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAuB,CAAC;AAE/D,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAkB,CAAC;AAErD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAErE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAe5C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAqC,CAAC;QAMrE,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;QAEZ,IAAU,CAAA,UAAA,GAAG,SAAS,CAAC;AAEhC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;QAQzB,IAAsB,CAAA,sBAAA,GAAG,qBAAqB,CAAC;AAE/C,QAAA,IAAA,CAAA,WAAW,GAAG;AACV,YAAA;gBACI,EAAE,EAAE,IAAI,CAAC,IAAI;AACb,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA;AACD,YAAA;gBACI,EAAE,EAAE,IAAI,CAAC,IAAI;AACb,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,IAAI,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACI,EAAE,EAAE,IAAI,CAAC,IAAI;AACb,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA;SACJ,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAGxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC;KACxE;AAED,IAAA,kBAAkB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;KAC7B;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;AAED,IAAA,aAAa,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;KAC7B;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KAC1B;AAED,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC1B,QAAA,KAAK,CAAC,MAAsB,CAAC,eAAe,GAAG,OAAO,CAAC;QACxD,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAAsB,CAAC,WAAW,IAAI,iBAAiB,CAAC;QAC3E,KAAK,CAAC,MAAsB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;KACrD;AAED,IAAA,OAAO,CAAC,KAAiB,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;KACpD;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACpB;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KACpB;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAClC;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;AAED,IAAA,cAAc,CAAC,SAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KAC1E;IAED,WAAW,GAAA;QACP,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,4BAA4B,CAAC,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACnE;IAED,gBAAgB,GAAA;QACZ,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KAChE;IAED,aAAa,GAAA;QACT,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,4BAA4B,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;KACrE;AAED,IAAA,yBAAyB,CAAC,qBAA4C,EAAA;AAClE,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,qBAAqB,EAAE;AACtD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,qBAAqB,CAAC,CAAC,MAAM,CAAC;AACrG,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACtD,SAAA;KACJ;IAED,MAAM,QAAQ,CAAC,KAA2B,EAAA;AACtC,QAAA,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;AAEO,IAAA,cAAc,CAAC,OAAoB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,eAAe,KAAK,MAAM,EAAE;YACpC,OAAO;AACV,SAAA;AAED,QAAA,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACrC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAClC,QAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/D,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,CAAC;KACnB;AAEO,IAAA,4BAA4B,CAAC,KAAqB,EAAA;QACtD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;AACjD,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,CAAA,EAAG,MAAM,CAAA,EAAG,IAAI,CAAG,EAAA,SAAS,CAAC,QAAQ,IAAI,iBAAiB,CAAA,GAAA,EAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAE1G,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO;AACV,SAAA;AAED,QAAA,QAAQ,CAAC,KAAK;aACT,IAAI,CAAC,UAAU,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5C,KAAK,CAAC,MAAK;;AAEZ,SAAC,CAAC,CAAC;KACV;IAED,uBAAuB,GAAA;QACnB,IAAI,CAAC,eAAe,CAAC,cAAc;AAC9B,aAAA,IAAI,CACD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,EACjC,IAAI,CAAC,CAAC,CAAC,CACV;aACA,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACV;8GApRQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EANnB,CAAC,sBAAsB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDvC,+ryBA+jBA,EDnhBQ,MAAA,EAAA,CAAA,+9EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,sFACpB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAQX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApBjC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACL,YAAY;wBACZ,WAAW;wBACX,oBAAoB;wBACpB,eAAe;wBACf,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,gBAAgB;qBACnB,EACU,SAAA,EAAA,CAAC,sBAAsB,CAAC,EAAA,QAAA,EACzB,mBAAmB,EACZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+ryBAAA,EAAA,MAAA,EAAA,CAAA,+9EAAA,CAAA,EAAA,CAAA;0IAKtC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAMI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAEG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,KAAK,EAAA,CAAA;sBAAd,MAAM;gBAEG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAEG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAEG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAEG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBAEG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAEG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBAEG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAEG,wBAAwB,EAAA,CAAA;sBAAjC,MAAM;gBAEG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAEmC,SAAS,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAGpC,MAAM,EAAA,CAAA;sBADT,KAAK;gBAWI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEmB,eAAe,EAAA,CAAA;sBAAxC,SAAS;uBAAC,aAAa,CAAA;;;AEpHtB,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;AAS9D,IAAA,WAAA,CAAoB,aAA4B,EAAA;AAC5C,QAAA,KAAK,EAAE,CAAC;QADQ,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AARhD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;AAEpC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAErC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAMd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;KAC/D;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACtD;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/C;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC9B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,SAAS,EAAE,KAAK;SACnB,CAAC;KACL;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC9B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,SAAS,EAAE,IAAI;SAClB,CAAC;KACL;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KACpC;IAED,OAAO,GAAA;QACH,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACnH;IAED,kBAAkB,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAClG,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG;AAC/B,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;AAC9B,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,SAAS,EAAE,KAAK;aACnB,CAAC;AACN,SAAC,CAAC,CAAC;KACN;8GAtDQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,uEANzB,CAAC,sBAAsB,CAAC,ECjBvC,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4zEA2EA,yeD3Dc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4UAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,4TAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAOjH,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAChH,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAClB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,0BAA0B,EAAA,QAAA,EAAA,4zEAAA,EAAA,MAAA,EAAA,CAAA,kbAAA,CAAA,EAAA,CAAA;;;MER3B,aAAa,CAAA;AAN1B,IAAA,WAAA,GAAA;QAOa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAmBlB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QAElD,IAAK,CAAA,KAAA,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAErE,IAAI,CAAA,IAAA,GAAG,mBAAmB,CAAC;AAK9B,KAAA;IA1BG,IACI,MAAM,CAAC,KAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE;YACpB,OAAO;AACV,SAAA;QAED,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACjD,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC;AACvC,YAAA,MAAM,UAAU,GAAG,CAAG,EAAA,MAAM,GAAG,IAAI,CAAA,EAAG,KAAK,CAAC,QAAQ,IAAI,iBAAiB,CAAM,GAAA,EAAA,UAAU,EAAE,CAAC;YAC5F,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBAClC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3C,OAAO;AACV,aAAA;AACJ,SAAA;KACJ;AAQD,IAAA,YAAY,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;8GA5BQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,+ICX1B,mlBAqBA,EAAA,MAAA,EAAA,CAAA,wNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,UAAU,EAAA,QAAA,EAAA,mlBAAA,EAAA,MAAA,EAAA,CAAA,wNAAA,CAAA,EAAA,CAAA;8BAKX,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAiBI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEnBE,iBAAiB,CAAA;AAN9B,IAAA,WAAA,GAAA;AA+Bc,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;AAItD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,WAAW,CAAS,CAAC,CAAC,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AA0CrF,KAAA;IAxEG,IAAa,UAAU,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAClC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;AACjC,SAAA;KACJ;AACD,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAGD,IACI,QAAQ,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AACD,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAWD,mBAAmB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE;YACtB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KAC/C;IAED,mBAAmB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;YACpB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;IAED,aAAa,GAAA;QACT,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;YAC3B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;KACvC;IAED,aAAa,GAAA;QACT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChD;IAEO,iBAAiB,GAAA;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;AAC5E,SAAA;KACJ;8GAxEQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,sQCZ9B,+6BAkCA,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDtBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,EAAA,QAAA,EAAA,+6BAAA,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA,CAAA;8BAKZ,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAcF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEY,YAAY,EAAA,CAAA;sBAA9B,SAAS;uBAAC,MAAM,CAAA;;;ME/BR,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAec,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAKtD,KAAA;AAHG,IAAA,aAAa,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;8GAbQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,yLCRjC,+fAkBA,EAAA,MAAA,EAAA,CAAA,4KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+fAAA,EAAA,MAAA,EAAA,CAAA,4KAAA,CAAA,EAAA,CAAA;8BAGtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEPE,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;QAOa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAYlB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAW,CAAC;AAEzC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;AAE3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW,CAAC;AAE9C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;AAE7C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAU,CAAC;AAE5D,QAAA,IAAA,CAAA,gBAAgB,GAAG;YACf,kBAAkB;YAClB,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;SACZ,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAqB9D,KAAA;IAnBG,YAAY,GAAA;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpC;IAED,cAAc,GAAA;QACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxC;IAED,iBAAiB,GAAA;QACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC9C;AAED,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;8GA/DQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,yYCV/B,+5CA0CA,EAAA,MAAA,EAAA,CAAA,oiCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDhCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,gBAAgB,EAAA,QAAA,EAAA,+5CAAA,EAAA,MAAA,EAAA,CAAA,oiCAAA,CAAA,EAAA,CAAA;8BAKjB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAEG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAEG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;;;MErBE,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;QAOa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAIlB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAa,CAAC;QAEjD,IAAU,CAAA,UAAA,GAAG,SAAS,CAAC;AAKnC,KAAA;AAHG,IAAA,cAAc,CAAC,MAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;8GAXQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,iKCV5B,qxBAsBA,EAAA,MAAA,EAAA,CAAA,oSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDZa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,YAAY,EAAA,QAAA,EAAA,qxBAAA,EAAA,MAAA,EAAA,CAAA,oSAAA,CAAA,EAAA,CAAA;8BAKb,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEI,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEJE,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;QAOa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAMlB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAEpE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEtD,IAAqB,CAAA,qBAAA,GAAG,qBAAqB,CAAC;QAE9C,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;AAqBjC,KAAA;IAnBG,yBAAyB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,aAAa,CAAC,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACxE,SAAA;KACJ;IAED,yBAAyB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,aAAa,CAAC,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACxE,SAAA;KACJ;AAED,IAAA,yBAAyB,CAAC,qBAA4C,EAAA;AAClE,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAC5D;8GAjCQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,0SCX/B,y6JAwGA,EAAA,MAAA,EAAA,CAAA,mxBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Fa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,EAAA,QAAA,EAAA,y6JAAA,EAAA,MAAA,EAAA,CAAA,mxBAAA,CAAA,EAAA,CAAA;8BAKhB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAEG,yBAAyB,EAAA,CAAA;sBAAjC,KAAK;gBAEI,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBAEG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;;;MEZE,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;AAOc,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC9C,KAAA;8GAFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,8ECR3B,8JAOA,EAAA,MAAA,EAAA,CAAA,8KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDCa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,WAAW,EAAA,QAAA,EAAA,8JAAA,EAAA,MAAA,EAAA,CAAA,8KAAA,CAAA,EAAA,CAAA;8BAKX,KAAK,EAAA,CAAA;sBAAd,MAAM;;;MEDE,iBAAiB,CAAA;AAN9B,IAAA,WAAA,GAAA;QAOa,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAEhB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEf,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEhC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC7C,KAAA;8GARY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,kJCR9B,gXAgBA,EAAA,MAAA,EAAA,CAAA,8KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDRa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,EAAA,QAAA,EAAA,gXAAA,EAAA,MAAA,EAAA,CAAA,8KAAA,CAAA,EAAA,CAAA;8BAKhB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEG,IAAI,EAAA,CAAA;sBAAb,MAAM;;;MEME,sBAAsB,CAAA;IAG/B,IACI,MAAM,CAAC,KAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;KAC1G;AACD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAGD,IACI,WAAW,CAAC,KAAiC,EAAA;QAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC9C;AAwBD,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAd9C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAkB,CAAC;AAErD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAuB,CAAC;AAE/D,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAErE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAE5C,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEhC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KACrC;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,cAAc,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,eAAe,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7E;AAED,IAAA,WAAW,CAAC,IAAa,EAAA;QACrB,IAAI,CAAC,4BAA4B,CAAC,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACnE;AAED,IAAA,gBAAgB,CAAC,SAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,aAAa,CAAC,MAAe,EAAA;QACzB,IAAI,CAAC,4BAA4B,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;KACrE;AAED,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;KACvE;AAED,IAAA,qBAAqB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;KAC5E;AAED,IAAA,gBAAgB,CAAC,SAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KAC1E;AAED,IAAA,0BAA0B,CAAC,YAAmC,EAAA;AAC1D,QAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;AAC5F,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACtD;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;AAEO,IAAA,4BAA4B,CAAC,KAAqB,EAAA;QACtD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,CAAC;AACjD,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,CAAA,EAAG,MAAM,CAAA,EAAG,IAAI,CAAG,EAAA,SAAS,CAAC,QAAQ,IAAI,iBAAiB,CAAA,GAAA,EAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAE1G,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO;AACV,SAAA;AAED,QAAA,QAAQ,CAAC,KAAK;aACT,IAAI,CAAC,UAAU,CAAC;AAChB,aAAA,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5C,KAAK,CAAC,MAAK;;AAEZ,SAAC,CAAC,CAAC;KACV;8GAxGQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,qXCrBnC,0wDA2CA,EAAA,MAAA,EAAA,CAAA,+tBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,uBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDtBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,oBAAoB,EAAA,QAAA,EAAA,0wDAAA,EAAA,MAAA,EAAA,CAAA,+tBAAA,CAAA,EAAA,CAAA;mFAKrB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAYF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAcI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAEG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBAEG,wBAAwB,EAAA,CAAA;sBAAjC,MAAM;gBAEG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAEG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEG,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEG,KAAK,EAAA,CAAA;sBAAd,MAAM;;;MErDE,gBAAgB,CAAA;AAN7B,IAAA,WAAA,GAAA;QAOI,IAAQ,CAAA,QAAA,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAE3D,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAMtC,KAAA;AAJG,IAAA,eAAe,CAAC,OAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;AAC/B,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;KAC1C;8GARQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,mDCR7B,+kBAoBA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDZa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,aAAa,EAAA,QAAA,EAAA,+kBAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,CAAA;;;MEMd,aAAa,CAAA;AAmBtB,IAAA,WAAA,GAAA;QAhBS,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QAEb,IAAO,CAAA,OAAA,GAAG,GAAG,CAAC;QAEd,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAEf,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAE5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAe,CAAA,eAAA,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAE3E,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAGnC,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC1D;AAED,IAAA,YAAY,CAAC,IAAY,EAAA;QACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACrC;IAED,SAAS,CAAC,KAAU,EAAE,OAA+B,EAAA;AACjD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACjC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,cAAc,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACrD,YAAA,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,SAAA;QAED,IAAI,CAAC,cAAc,EAAE;YACjB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;YACjD,OAAO,CAAC,UAAU,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,UAAU,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAClC;IAED,kBAAkB,GAAA;QACd,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;KACrC;IAED,SAAS,CAAC,KAAU,EAAE,OAA+B,EAAA;QACjD,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;KAClE;8GAzEQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,8ICV1B,8rBAwBA,EAAA,MAAA,EAAA,CAAA,obAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDda,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,UAAU,EAAA,QAAA,EAAA,8rBAAA,EAAA,MAAA,EAAA,CAAA,obAAA,CAAA,EAAA,CAAA;wDAKD,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;;;MEmDR,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAlCxB,oBAAoB;YACpB,sBAAsB;YACtB,aAAa;YACb,aAAa;YACb,iBAAiB;YACjB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,kBAAkB;YAClB,cAAc;YACd,iBAAiB;AACjB,YAAA,aAAa,aAGb,YAAY;YACZ,WAAW;YACX,qBAAqB;YACrB,eAAe;YACf,qBAAqB;YACrB,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,eAAe;AACf,YAAA,mBAAmB,aAGb,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAHjB,SAAA,EAAA,CAAC,iBAAiB,CAAC,YAb1B,YAAY;YACZ,WAAW;YACX,qBAAqB;YACrB,eAAe;YACf,qBAAqB;YACrB,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApC/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,oBAAoB;wBACpB,sBAAsB;wBACtB,aAAa;wBACb,aAAa;wBACb,iBAAiB;wBACjB,iBAAiB;wBACjB,kBAAkB;wBAClB,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,kBAAkB;wBAClB,cAAc;wBACd,iBAAiB;wBACjB,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,qBAAqB;wBACrB,eAAe;wBACf,qBAAqB;wBACrB,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,mBAAmB;AACtB,qBAAA;oBACD,SAAS,EAAE,CAAC,iBAAiB,CAAC;oBAC9B,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;;MCzCY,sBAAsB,CAAA;IAC/B,WAA4C,CAAA,IAAiB,EAAU,GAAyC,EAAA;QAApE,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QAAU,IAAG,CAAA,GAAA,GAAH,GAAG,CAAsC;KAAI;AAEpH,IAAA,OAAO,CAAC,MAAe,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC1B;AALQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBACX,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAD1B,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBnC,syBA0BA,EDXc,MAAA,EAAA,CAAA,2jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAK9D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAC,EAAA,QAAA,EAC9D,oBAAoB,EAAA,QAAA,EAAA,syBAAA,EAAA,MAAA,EAAA,CAAA,2jBAAA,CAAA,EAAA,CAAA;;0BAKjB,MAAM;2BAAC,eAAe,CAAA;;;MErB1B,aAAa,CAAA;AAMtB,IAAA,WAAA,CACI,MAA+B,EAAA;AAE/B,QAAA,IAAI,MAAM,EAAE;AAGR,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;MCfY,iBAAiB,CAAA;AAI1B,IAAA,WAAA,CACI,MAAmC,EAAA;AAEnC,QAAA,IAAI,MAAM,EAAE;AAGR,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;MCbY,eAAe,CAAA;AAGxB,IAAA,WAAA,CACI,MAAiC,EAAA;AAEjC,QAAA,IAAI,MAAM,EAAE;AAGR,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;MCVY,aAAa,CAAA;AAOtB,IAAA,WAAA,CACI,MAA+B,EAAA;AAE/B,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,OAAO,EAAE;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAAE,aAAA;AAEvE,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;MCfY,yBAAyB,CAAA;AAMlC,IAAA,WAAA,CACI,MAA2C,EAAA;AAE3C,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,QAAQ,EAAE;gBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAAE,aAAA;AAE9E,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;MChBY,cAAc,CAAA;AAMvB,IAAA,WAAA,CACI,MAAgC,EAAA;AAEhC,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,MAAM,CAAC,OAAO,EAAE;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAAE,aAAA;AAE1E,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,SAAA;KACJ;AACJ;;ACjBD;;AAEG;;;;"}