@mediusinc/mng-commons 5.0.0-rc.0-c31d5206 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1436) hide show
  1. package/README.md +1 -0
  2. package/core/README.md +8 -0
  3. package/core/action/action-data.model.d.ts +3 -0
  4. package/core/action/action-parameters.model.d.ts +17 -0
  5. package/core/components/pages/error/error.page.component.d.ts +8 -0
  6. package/core/components/pages/not-found/not-found.page.component.d.ts +8 -0
  7. package/core/data-list/data-list-params-helpers.d.ts +82 -0
  8. package/core/data-providers/base.data-provider.d.ts +32 -0
  9. package/core/data-providers/lookup.data-provider.d.ts +10 -0
  10. package/core/descriptors/action.descriptor.d.ts +12 -0
  11. package/core/descriptors/column.descriptor.d.ts +3 -0
  12. package/core/descriptors/editor.descriptor.d.ts +11 -0
  13. package/core/descriptors/enum.descriptor.d.ts +6 -0
  14. package/core/descriptors/filter.descriptor.d.ts +3 -0
  15. package/core/descriptors/lookup.descriptor.d.ts +12 -0
  16. package/core/descriptors/model.descriptor.d.ts +8 -0
  17. package/core/descriptors/table.descriptor.d.ts +9 -0
  18. package/core/descriptors/tableview.descriptor.d.ts +11 -0
  19. package/core/directives/component.directive.d.ts +20 -0
  20. package/core/directives/dialog-keydown-handler.directive.d.ts +12 -0
  21. package/core/directives/template.directive.d.ts +12 -0
  22. package/core/enum/enum-helpers.d.ts +49 -0
  23. package/core/enum/enum.model.d.ts +8 -0
  24. package/core/error/error-handler.d.ts +6 -0
  25. package/core/error/error-helpers.d.ts +114 -0
  26. package/core/error/error.model.d.ts +47 -0
  27. package/core/helpers/coercion.d.ts +9 -0
  28. package/core/helpers/date.d.ts +14 -0
  29. package/core/helpers/notification.d.ts +2 -0
  30. package/core/helpers/object.d.ts +27 -0
  31. package/core/helpers/route.d.ts +35 -0
  32. package/core/helpers/string.d.ts +7 -0
  33. package/core/helpers/templates.d.ts +3 -0
  34. package/core/helpers/type-helpers.d.ts +16 -0
  35. package/core/i18n/i18n-common.d.ts +6 -0
  36. package/core/i18n/i18n-error.d.ts +4 -0
  37. package/core/i18n/i18n-type.d.ts +20 -0
  38. package/core/index.d.ts +83 -0
  39. package/core/log/log-publisher-console.service.d.ts +4 -0
  40. package/core/log/log.model.d.ts +40 -0
  41. package/core/log/logger.service.d.ts +33 -0
  42. package/core/models/class-service.model.d.ts +7 -0
  43. package/core/models/getter.model.d.ts +2 -0
  44. package/core/models/i18n.model.d.ts +1 -0
  45. package/core/models/menu.model.d.ts +32 -0
  46. package/core/models/user.model.d.ts +8 -0
  47. package/core/pipes/boolean.pipe.d.ts +7 -0
  48. package/core/pipes/class-map.pipe.d.ts +7 -0
  49. package/core/pipes/enum.pipe.d.ts +8 -0
  50. package/core/pipes/enumerate-async.pipe.d.ts +9 -0
  51. package/core/pipes/enumerate.pipe.d.ts +16 -0
  52. package/core/pipes/getter.pipe.d.ts +8 -0
  53. package/core/pipes/i18n-property.pipe.d.ts +8 -0
  54. package/core/pipes/json-path.pipe.d.ts +13 -0
  55. package/core/pipes/parametrize.pipe.d.ts +12 -0
  56. package/core/pipes/template.pipe.d.ts +8 -0
  57. package/core/provide.d.ts +12 -0
  58. package/core/reflect/type-enum-metadata.d.ts +32 -0
  59. package/core/registry/registry.model.d.ts +8 -0
  60. package/core/registry/type-registry.d.ts +27 -0
  61. package/core/router/route-builder.d.ts +65 -0
  62. package/core/router/router.model.d.ts +13 -0
  63. package/core/router/routes-builder.d.ts +18 -0
  64. package/core/rxjs/map-data-list-result-operator.d.ts +9 -0
  65. package/core/security/permission-helpers.d.ts +3 -0
  66. package/core/security/permission.guard.d.ts +2 -0
  67. package/core/security/permission.service.d.ts +16 -0
  68. package/core/security/permissions.model.d.ts +55 -0
  69. package/core/services/commons-configuration.service.d.ts +69 -0
  70. package/core/services/commons-init.service.d.ts +30 -0
  71. package/core/services/commons-router.service.d.ts +37 -0
  72. package/core/services/commons.service.d.ts +66 -0
  73. package/core/services/local-storage-config.service.d.ts +11 -0
  74. package/core/services/providers/commons-init.provider.d.ts +4 -0
  75. package/core/services/tokens/browser-storage.token.d.ts +2 -0
  76. package/core/services/tokens/commons-init.token.d.ts +3 -0
  77. package/core/services/tokens/log-publisher.token.d.ts +3 -0
  78. package/core/services/tokens/module-config.token.d.ts +34 -0
  79. package/core/styles/style-constants.d.ts +10 -0
  80. package/core/styles/style.model.d.ts +17 -0
  81. package/dev-scripts/version-info.js +1 -1
  82. package/esm2022/core/action/action-data.model.mjs +2 -0
  83. package/esm2022/core/action/action-parameters.model.mjs +2 -0
  84. package/esm2022/core/components/notification/notification-wrapper.component.mjs +50 -0
  85. package/esm2022/core/components/pages/error/error.page.component.mjs +21 -0
  86. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +21 -0
  87. package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
  88. package/esm2022/core/data-list/data-list.model.mjs +2 -0
  89. package/esm2022/core/data-list/filter-match.model.mjs +105 -0
  90. package/esm2022/core/data-providers/base.data-provider.mjs +48 -0
  91. package/esm2022/core/data-providers/lookup.data-provider.mjs +2 -0
  92. package/esm2022/core/descriptors/action.descriptor.mjs +2 -0
  93. package/esm2022/core/descriptors/column.descriptor.mjs +2 -0
  94. package/esm2022/core/descriptors/editor.descriptor.mjs +2 -0
  95. package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
  96. package/esm2022/core/descriptors/filter.descriptor.mjs +2 -0
  97. package/esm2022/core/descriptors/lookup.descriptor.mjs +2 -0
  98. package/esm2022/core/descriptors/model.descriptor.mjs +2 -0
  99. package/esm2022/core/descriptors/table.descriptor.mjs +2 -0
  100. package/esm2022/core/descriptors/tableview.descriptor.mjs +2 -0
  101. package/esm2022/core/directives/component.directive.mjs +72 -0
  102. package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +49 -0
  103. package/esm2022/core/directives/template.directive.mjs +29 -0
  104. package/esm2022/core/enum/enum-helpers.mjs +81 -0
  105. package/esm2022/core/enum/enum.model.mjs +2 -0
  106. package/esm2022/core/error/error-handler.mjs +20 -0
  107. package/esm2022/core/error/error-helpers.mjs +247 -0
  108. package/esm2022/core/error/error.model.mjs +32 -0
  109. package/esm2022/core/helpers/coercion.mjs +52 -0
  110. package/esm2022/core/helpers/date.mjs +119 -0
  111. package/esm2022/core/helpers/notification.mjs +6 -0
  112. package/esm2022/core/helpers/object.mjs +145 -0
  113. package/esm2022/core/helpers/route.mjs +58 -0
  114. package/esm2022/core/helpers/string.mjs +57 -0
  115. package/esm2022/core/helpers/templates.mjs +4 -0
  116. package/esm2022/core/helpers/type-helpers.mjs +2 -0
  117. package/esm2022/core/i18n/i18n-common.mjs +24 -0
  118. package/esm2022/core/i18n/i18n-error.mjs +27 -0
  119. package/esm2022/core/i18n/i18n-type.mjs +79 -0
  120. package/esm2022/core/index.mjs +105 -0
  121. package/esm2022/core/log/log-publisher-console.service.mjs +40 -0
  122. package/esm2022/core/log/log.model.mjs +10 -0
  123. package/esm2022/core/log/logger.service.mjs +131 -0
  124. package/esm2022/core/mediusinc-mng-commons-core.mjs +5 -0
  125. package/esm2022/core/models/class-attribute.model.mjs +2 -0
  126. package/esm2022/core/models/class-service.model.mjs +2 -0
  127. package/esm2022/core/models/getter.model.mjs +2 -0
  128. package/esm2022/core/models/i18n.model.mjs +2 -0
  129. package/esm2022/core/models/menu.model.mjs +2 -0
  130. package/esm2022/core/models/user.model.mjs +2 -0
  131. package/esm2022/core/models/version.model.mjs +2 -0
  132. package/esm2022/core/pipes/boolean.pipe.mjs +28 -0
  133. package/esm2022/core/pipes/class-map.pipe.mjs +23 -0
  134. package/esm2022/core/pipes/enum.pipe.mjs +27 -0
  135. package/esm2022/core/pipes/enumerate-async.pipe.mjs +36 -0
  136. package/esm2022/core/pipes/enumerate.pipe.mjs +49 -0
  137. package/esm2022/core/pipes/getter.pipe.mjs +21 -0
  138. package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
  139. package/esm2022/core/pipes/json-path.pipe.mjs +25 -0
  140. package/esm2022/core/pipes/parametrize.pipe.mjs +86 -0
  141. package/esm2022/core/pipes/template.pipe.mjs +25 -0
  142. package/esm2022/core/provide.mjs +78 -0
  143. package/esm2022/core/reflect/type-enum-decorator.mjs +12 -0
  144. package/esm2022/core/reflect/type-enum-metadata.mjs +62 -0
  145. package/esm2022/core/registry/registry.model.mjs +2 -0
  146. package/esm2022/core/registry/type-registry.mjs +106 -0
  147. package/esm2022/core/router/route-builder.mjs +320 -0
  148. package/esm2022/core/router/router.model.mjs +2 -0
  149. package/esm2022/core/router/routes-builder.mjs +54 -0
  150. package/esm2022/core/rxjs/map-data-list-result-operator.mjs +19 -0
  151. package/esm2022/core/security/permission-helpers.mjs +14 -0
  152. package/esm2022/core/security/permission.guard.mjs +15 -0
  153. package/esm2022/core/security/permission.service.mjs +49 -0
  154. package/esm2022/core/security/permissions.model.mjs +93 -0
  155. package/esm2022/core/services/commons-configuration.service.mjs +174 -0
  156. package/esm2022/core/services/commons-init.service.mjs +111 -0
  157. package/esm2022/core/services/commons-router.service.mjs +180 -0
  158. package/esm2022/core/services/commons.service.mjs +390 -0
  159. package/esm2022/core/services/local-storage-config.service.mjs +29 -0
  160. package/esm2022/core/services/providers/commons-init.provider.mjs +4 -0
  161. package/esm2022/core/services/tokens/browser-storage.token.mjs +3 -0
  162. package/esm2022/core/services/tokens/commons-init.token.mjs +3 -0
  163. package/esm2022/core/services/tokens/log-publisher.token.mjs +3 -0
  164. package/esm2022/core/services/tokens/module-config.token.mjs +3 -0
  165. package/esm2022/core/styles/style-constants.mjs +11 -0
  166. package/esm2022/core/styles/style.model.mjs +20 -0
  167. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +185 -0
  168. package/esm2022/filter/descriptors/filter.descriptor.mjs +197 -0
  169. package/esm2022/filter/index.mjs +6 -0
  170. package/esm2022/filter/mediusinc-mng-commons-filter.mjs +5 -0
  171. package/esm2022/filter/models/filter.model.mjs +15 -0
  172. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +45 -0
  173. package/esm2022/form/api/descriptors/action-button.descriptor.mjs +68 -0
  174. package/esm2022/form/api/descriptors/button-style.builder.mjs +174 -0
  175. package/esm2022/form/api/index.mjs +8 -0
  176. package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +5 -0
  177. package/esm2022/form/api/models/trim.model.mjs +2 -0
  178. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +404 -0
  179. package/esm2022/form/components/date-range/date-range.component.mjs +110 -0
  180. package/esm2022/form/components/dropdown/dropdown.component.mjs +213 -0
  181. package/esm2022/form/directives/input-trim.directive.mjs +55 -0
  182. package/esm2022/form/index.mjs +7 -0
  183. package/esm2022/form/mediusinc-mng-commons-form.mjs +5 -0
  184. package/esm2022/index.mjs +2 -74
  185. package/esm2022/model/descriptors/enum.descriptor.mjs +31 -0
  186. package/esm2022/model/descriptors/model.descriptor.mjs +78 -0
  187. package/esm2022/model/descriptors/type.descriptor.mjs +21 -0
  188. package/esm2022/model/helpers/i18n.mjs +45 -0
  189. package/esm2022/model/helpers/model.mjs +71 -0
  190. package/esm2022/model/index.mjs +8 -0
  191. package/esm2022/model/mediusinc-mng-commons-model.mjs +5 -0
  192. package/esm2022/provide.mjs +6 -0
  193. package/esm2022/table/api/data-providers/table.data-provider.mjs +63 -0
  194. package/esm2022/table/api/descriptors/column.descriptor.mjs +359 -0
  195. package/esm2022/table/api/descriptors/sort.descriptor.mjs +45 -0
  196. package/esm2022/table/api/descriptors/table.descriptor.mjs +778 -0
  197. package/esm2022/table/api/helpers/class-attribute-converter.mjs +104 -0
  198. package/esm2022/table/api/index.mjs +16 -0
  199. package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +5 -0
  200. package/esm2022/table/api/models/class-table-attribute.model.mjs +2 -0
  201. package/esm2022/table/api/models/column-value.model.mjs +2 -0
  202. package/esm2022/table/api/models/column.model.mjs +21 -0
  203. package/esm2022/table/api/models/table-columns.model.mjs +2 -0
  204. package/esm2022/table/api/models/table-event.model.mjs +2 -0
  205. package/esm2022/table/api/models/table.model.mjs +22 -0
  206. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +594 -0
  207. package/esm2022/table/components/column-value/column-value.component.mjs +86 -0
  208. package/esm2022/table/components/table/table.component.mjs +630 -0
  209. package/esm2022/table/helpers/notification.mjs +15 -0
  210. package/esm2022/table/helpers/table-layout-prefs.mjs +10 -0
  211. package/esm2022/table/index.mjs +13 -0
  212. package/esm2022/table/mediusinc-mng-commons-table.mjs +5 -0
  213. package/esm2022/table/models/column-preferences.model.mjs +2 -0
  214. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +27 -0
  215. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +25 -0
  216. package/esm2022/table/services/data-list.service.mjs +23 -0
  217. package/esm2022/tableview/action/components/action/action.component.mjs +323 -0
  218. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +97 -0
  219. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +398 -0
  220. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +53 -0
  221. package/esm2022/tableview/action/components/route/action-route.component.mjs +152 -0
  222. package/esm2022/tableview/action/components/table/action-table.component.mjs +146 -0
  223. package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +4 -0
  224. package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
  225. package/esm2022/tableview/action/helpers/notification.mjs +17 -0
  226. package/esm2022/tableview/action/helpers/styles.mjs +32 -0
  227. package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +2 -0
  228. package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +2 -0
  229. package/esm2022/tableview/action/models/execution/action-context.model.mjs +56 -0
  230. package/esm2022/tableview/action/models/execution/action-instance-state.model.mjs +32 -0
  231. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +170 -0
  232. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +20 -0
  233. package/esm2022/tableview/action/services/action-executor.service.mjs +767 -0
  234. package/esm2022/tableview/action/services/component-action-executor.service.mjs +19 -0
  235. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +26 -0
  236. package/esm2022/tableview/action/services/navigation.service.mjs +52 -0
  237. package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +9 -0
  238. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +17 -0
  239. package/esm2022/tableview/action/services/root-action-executor.service.mjs +18 -0
  240. package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +3 -0
  241. package/esm2022/tableview/action/services/view-container.service.mjs +56 -0
  242. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +76 -0
  243. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +264 -0
  244. package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +89 -0
  245. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +385 -0
  246. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +80 -0
  247. package/esm2022/tableview/api/action/models/action-component.model.mjs +2 -0
  248. package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +2 -0
  249. package/esm2022/tableview/api/action/models/action-editor.model.mjs +2 -0
  250. package/esm2022/tableview/api/action/models/action-error.model.mjs +14 -0
  251. package/esm2022/tableview/api/action/models/action.type.mjs +26 -0
  252. package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +2 -0
  253. package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +2 -0
  254. package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +2 -0
  255. package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +32 -0
  256. package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +2 -0
  257. package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +2 -0
  258. package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +11 -0
  259. package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +28 -0
  260. package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +3 -0
  261. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +104 -0
  262. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +626 -0
  263. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +49 -0
  264. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +288 -0
  265. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +97 -0
  266. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +213 -0
  267. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +153 -0
  268. package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +25 -0
  269. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +343 -0
  270. package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +85 -0
  271. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +33 -0
  272. package/esm2022/tableview/api/editor/models/class-tableview-attribute.model.mjs +2 -0
  273. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +2 -0
  274. package/esm2022/tableview/api/editor/models/editor.model.mjs +9 -0
  275. package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +2 -0
  276. package/esm2022/tableview/api/editor/models/field.model.mjs +56 -0
  277. package/esm2022/tableview/api/editor/models/form-editor.event.mjs +27 -0
  278. package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +2 -0
  279. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +69 -0
  280. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +2 -0
  281. package/esm2022/tableview/api/editor/models/radio.model.mjs +2 -0
  282. package/esm2022/tableview/api/index.mjs +64 -0
  283. package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +5 -0
  284. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +105 -0
  285. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +672 -0
  286. package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +34 -0
  287. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +34 -0
  288. package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +24 -0
  289. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +240 -0
  290. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +162 -0
  291. package/esm2022/tableview/api/tableview/models/class-tableview-attribute.model.mjs +2 -0
  292. package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +2 -0
  293. package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +2 -0
  294. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +285 -0
  295. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +61 -0
  296. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +54 -0
  297. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +39 -0
  298. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +49 -0
  299. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +27 -0
  300. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +220 -0
  301. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +24 -0
  302. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +215 -0
  303. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +217 -0
  304. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +196 -0
  305. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +18 -0
  306. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +33 -0
  307. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +30 -0
  308. package/esm2022/tableview/editor/helpers/editor-formly.mjs +335 -0
  309. package/esm2022/tableview/editor/helpers/formly-config.mjs +260 -0
  310. package/esm2022/tableview/editor/helpers/notification.mjs +11 -0
  311. package/esm2022/tableview/editor/models/formly-config.model.mjs +2 -0
  312. package/esm2022/tableview/editor/services/formly-config.provider.mjs +31 -0
  313. package/esm2022/tableview/index.mjs +62 -0
  314. package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +5 -0
  315. package/esm2022/tableview/provide.mjs +62 -0
  316. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +15 -0
  317. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +75 -0
  318. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +201 -0
  319. package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +3 -0
  320. package/fesm2022/mediusinc-mng-commons-core.mjs +3882 -0
  321. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -0
  322. package/fesm2022/mediusinc-mng-commons-filter.mjs +402 -0
  323. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -0
  324. package/fesm2022/mediusinc-mng-commons-form-api.mjs +294 -0
  325. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -0
  326. package/fesm2022/mediusinc-mng-commons-form.mjs +770 -0
  327. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -0
  328. package/fesm2022/mediusinc-mng-commons-model.mjs +251 -0
  329. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -0
  330. package/fesm2022/mediusinc-mng-commons-table-api.mjs +1391 -0
  331. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -0
  332. package/fesm2022/mediusinc-mng-commons-table.mjs +1376 -0
  333. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -0
  334. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +4372 -0
  335. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -0
  336. package/fesm2022/mediusinc-mng-commons-tableview.mjs +4691 -0
  337. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -0
  338. package/fesm2022/mediusinc-mng-commons.mjs +5 -18605
  339. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  340. package/filter/README.md +9 -0
  341. package/filter/descriptors/filter-lookup.descriptor.d.ts +67 -0
  342. package/filter/descriptors/filter.descriptor.d.ts +67 -0
  343. package/filter/index.d.ts +3 -0
  344. package/form/README.md +8 -0
  345. package/form/api/README.md +7 -0
  346. package/form/api/data-providers/lookup.data-provider.d.ts +19 -0
  347. package/form/api/descriptors/action-button.descriptor.d.ts +25 -0
  348. package/form/api/descriptors/button-style.builder.d.ts +68 -0
  349. package/form/api/index.d.ts +4 -0
  350. package/form/components/autocomplete/autocomplete.component.d.ts +82 -0
  351. package/form/components/date-range/date-range.component.d.ts +28 -0
  352. package/form/components/dropdown/dropdown.component.d.ts +55 -0
  353. package/form/directives/input-trim.directive.d.ts +14 -0
  354. package/form/index.d.ts +4 -0
  355. package/index.d.ts +1 -50
  356. package/model/README.md +7 -0
  357. package/model/descriptors/enum.descriptor.d.ts +14 -0
  358. package/model/descriptors/model.descriptor.d.ts +31 -0
  359. package/model/descriptors/type.descriptor.d.ts +10 -0
  360. package/model/helpers/i18n.d.ts +10 -0
  361. package/model/helpers/model.d.ts +5 -0
  362. package/model/index.d.ts +5 -0
  363. package/package.json +61 -25
  364. package/provide.d.ts +7 -0
  365. package/table/README.md +11 -0
  366. package/table/api/README.md +9 -0
  367. package/table/api/data-providers/table.data-provider.d.ts +38 -0
  368. package/table/api/descriptors/column.descriptor.d.ts +148 -0
  369. package/table/api/descriptors/table.descriptor.d.ts +281 -0
  370. package/table/api/helpers/class-attribute-converter.d.ts +22 -0
  371. package/table/api/index.d.ts +11 -0
  372. package/table/api/models/class-table-attribute.model.d.ts +8 -0
  373. package/table/api/models/column-value.model.d.ts +7 -0
  374. package/table/api/models/table-columns.model.d.ts +42 -0
  375. package/table/api/models/table-event.model.d.ts +17 -0
  376. package/table/api/models/table.model.d.ts +35 -0
  377. package/table/components/column-filter-full/column-filter-full.component.d.ts +100 -0
  378. package/table/components/column-value/column-value.component.d.ts +32 -0
  379. package/table/components/table/table.component.d.ts +114 -0
  380. package/table/helpers/notification.d.ts +4 -0
  381. package/table/helpers/table-layout-prefs.d.ts +7 -0
  382. package/table/index.d.ts +8 -0
  383. package/table/models/column-preferences.model.d.ts +12 -0
  384. package/table/pipes/locale-default-row-class.pipe.d.ts +10 -0
  385. package/table/pipes/table-column-filter-class.pipe.d.ts +8 -0
  386. package/table/services/data-list.service.d.ts +16 -0
  387. package/tableview/README.md +13 -0
  388. package/tableview/action/components/action/action.component.d.ts +73 -0
  389. package/tableview/action/components/editor/action-editor.component.d.ts +31 -0
  390. package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +76 -0
  391. package/tableview/action/components/localization/data-language-dropdown.component.d.ts +22 -0
  392. package/tableview/action/components/route/action-route.component.d.ts +31 -0
  393. package/tableview/action/components/table/action-table.component.d.ts +48 -0
  394. package/tableview/action/guards/unsaved-changes.guard.d.ts +3 -0
  395. package/tableview/action/helpers/i18n.d.ts +22 -0
  396. package/tableview/action/helpers/notification.d.ts +6 -0
  397. package/tableview/action/helpers/styles.d.ts +5 -0
  398. package/tableview/action/models/action-editor-dialog-data.model.d.ts +11 -0
  399. package/tableview/action/models/execution/action-context.model.d.ts +36 -0
  400. package/tableview/action/models/execution/action-instance-state.model.d.ts +30 -0
  401. package/tableview/action/models/execution/action-instance.model.d.ts +56 -0
  402. package/tableview/action/services/action-error-mapper.service.d.ts +18 -0
  403. package/tableview/action/services/action-executor.service.d.ts +175 -0
  404. package/tableview/action/services/component-action-executor.service.d.ts +9 -0
  405. package/tableview/action/services/data-provider-executor.service.d.ts +23 -0
  406. package/tableview/action/services/navigation.service.d.ts +15 -0
  407. package/tableview/action/services/root-action-executor.service.d.ts +9 -0
  408. package/tableview/action/services/tokens/action-editor.token.d.ts +2 -0
  409. package/tableview/action/services/view-container.service.d.ts +30 -0
  410. package/tableview/api/README.md +11 -0
  411. package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +36 -0
  412. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +117 -0
  413. package/tableview/api/action/descriptors/action-link.descriptor.d.ts +34 -0
  414. package/tableview/api/action/descriptors/action.descriptor.d.ts +151 -0
  415. package/tableview/api/action/helpers/data-provider-executors.d.ts +18 -0
  416. package/tableview/api/action/models/action-component.model.d.ts +12 -0
  417. package/tableview/api/action/models/action-descriptor.types.d.ts +5 -0
  418. package/tableview/api/action/models/action-editor.model.d.ts +4 -0
  419. package/tableview/api/action/models/action-error.model.d.ts +14 -0
  420. package/tableview/api/action/models/action.type.d.ts +21 -0
  421. package/tableview/api/action/models/execution/action-context-validation.model.d.ts +11 -0
  422. package/tableview/api/action/models/execution/action-context.model.d.ts +24 -0
  423. package/tableview/api/action/models/execution/action-execution-error.model.d.ts +4 -0
  424. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +30 -0
  425. package/tableview/api/action/models/execution/action-instance.model.d.ts +31 -0
  426. package/tableview/api/action/models/execution/view-container.model.d.ts +38 -0
  427. package/tableview/api/action/services/data-provider-executor.service.d.ts +38 -0
  428. package/tableview/api/action/services/tokens/data-language-dropdown.token.d.ts +2 -0
  429. package/tableview/api/editor/data-providers/editor.data-provider.d.ts +87 -0
  430. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +366 -0
  431. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +22 -0
  432. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +120 -0
  433. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +41 -0
  434. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +80 -0
  435. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +61 -0
  436. package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +19 -0
  437. package/tableview/api/editor/descriptors/field.descriptor.d.ts +168 -0
  438. package/tableview/api/editor/helpers/class-attribute-converter.d.ts +21 -0
  439. package/tableview/api/editor/helpers/field-validators.d.ts +3 -0
  440. package/tableview/api/editor/models/class-tableview-attribute.model.d.ts +7 -0
  441. package/tableview/api/editor/models/editor-fields.model.d.ts +34 -0
  442. package/tableview/api/editor/models/editor.model.d.ts +7 -0
  443. package/tableview/api/editor/models/field-action-context.model.d.ts +24 -0
  444. package/tableview/api/editor/models/field.model.d.ts +66 -0
  445. package/tableview/api/editor/models/form-editor.event.d.ts +55 -0
  446. package/tableview/api/editor/models/formly-custom-field.model.d.ts +27 -0
  447. package/tableview/api/editor/models/formly-field.model.d.ts +18 -0
  448. package/tableview/api/index.d.ts +50 -0
  449. package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +43 -0
  450. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +296 -0
  451. package/tableview/api/tableview/helpers/class-attribute-converter.d.ts +8 -0
  452. package/tableview/api/tableview/helpers/files-export.d.ts +4 -0
  453. package/tableview/api/tableview/helpers/tableview-create.d.ts +16 -0
  454. package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +38 -0
  455. package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +114 -0
  456. package/tableview/api/tableview/models/class-tableview-attribute.model.d.ts +3 -0
  457. package/tableview/api/tableview/models/tableview-input.model.d.ts +8 -0
  458. package/tableview/api/tableview/models/tableview-route.model.d.ts +20 -0
  459. package/tableview/editor/components/editor/form-editor.component.d.ts +50 -0
  460. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +14 -0
  461. package/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -0
  462. package/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +11 -0
  463. package/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -0
  464. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +12 -0
  465. package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +37 -0
  466. package/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.d.ts +11 -0
  467. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +43 -0
  468. package/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -0
  469. package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +41 -0
  470. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +7 -0
  471. package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -0
  472. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +9 -0
  473. package/tableview/editor/helpers/editor-formly.d.ts +10 -0
  474. package/tableview/editor/helpers/formly-config.d.ts +18 -0
  475. package/tableview/editor/helpers/notification.d.ts +4 -0
  476. package/tableview/editor/models/formly-config.model.d.ts +5 -0
  477. package/tableview/editor/services/formly-config.provider.d.ts +5 -0
  478. package/tableview/index.d.ts +48 -0
  479. package/tableview/provide.d.ts +8 -0
  480. package/tableview/tableview/components/route/tableview-route.component.d.ts +7 -0
  481. package/tableview/tableview/components/tableview/tableview.component.d.ts +26 -0
  482. package/tableview/tableview/router/tableview-route-builder.d.ts +42 -0
  483. package/tableview/tableview/services/tableview-feature-config.token.d.ts +18 -0
  484. package/assets/fonts/poppins-v20-latin-500.woff +0 -0
  485. package/assets/fonts/poppins-v20-latin-500.woff2 +0 -0
  486. package/assets/fonts/poppins-v20-latin-600.woff +0 -0
  487. package/assets/fonts/poppins-v20-latin-600.woff2 +0 -0
  488. package/assets/fonts/poppins-v20-latin-700.woff +0 -0
  489. package/assets/fonts/poppins-v20-latin-700.woff2 +0 -0
  490. package/assets/fonts/poppins-v20-latin-regular.woff +0 -0
  491. package/assets/fonts/poppins-v20-latin-regular.woff2 +0 -0
  492. package/assets/images/effect-ondark.png +0 -0
  493. package/assets/images/effect-ondark.svg +0 -38
  494. package/assets/images/effect-ondark@2x.png +0 -0
  495. package/assets/images/effect-onlight.png +0 -0
  496. package/assets/images/effect-onlight.svg +0 -38
  497. package/assets/images/effect-onlight@2x.png +0 -0
  498. package/assets/images/pages/exception-ondark.png +0 -0
  499. package/assets/images/pages/exception-onlight.png +0 -0
  500. package/assets/images/pages/login-ondark.png +0 -0
  501. package/assets/images/pages/login-onlight.png +0 -0
  502. package/data-api/README.md +0 -3
  503. package/data-api/class-dto/README.md +0 -3
  504. package/data-api/class-dto/helpers/tableview-crud-create.d.ts +0 -40
  505. package/data-api/class-dto/index.d.ts +0 -7
  506. package/data-api/class-dto/models/query-result.model.d.ts +0 -13
  507. package/data-api/class-dto/obsolete/README.md +0 -3
  508. package/data-api/class-dto/obsolete/helpers/query-param-convert.d.ts +0 -23
  509. package/data-api/class-dto/obsolete/helpers/tableview-crud-create.d.ts +0 -22
  510. package/data-api/class-dto/obsolete/index.d.ts +0 -14
  511. package/data-api/class-dto/obsolete/models/builders/query-param.builder.d.ts +0 -36
  512. package/data-api/class-dto/obsolete/models/filter-match-type.model.d.ts +0 -25
  513. package/data-api/class-dto/obsolete/models/filter-param.model.d.ts +0 -23
  514. package/data-api/class-dto/obsolete/models/query-mode.model.d.ts +0 -16
  515. package/data-api/class-dto/obsolete/models/query-param.model.d.ts +0 -31
  516. package/data-api/class-dto/obsolete/models/query-result.model.d.ts +0 -24
  517. package/data-api/class-dto/obsolete/provide.d.ts +0 -9
  518. package/data-api/class-dto/obsolete/services/api.abstract.service.d.ts +0 -36
  519. package/data-api/class-dto/obsolete/services/crud-api.abstract.service.d.ts +0 -37
  520. package/data-api/class-dto/obsolete/services/get-all-api.abstract.service.d.ts +0 -30
  521. package/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.d.ts +0 -28
  522. package/data-api/class-dto/obsolete/utils/query-param-map.util.d.ts +0 -22
  523. package/data-api/class-dto/serder/object-serializer.d.ts +0 -26
  524. package/data-api/class-dto/services/api.abstract.service.d.ts +0 -22
  525. package/data-api/class-dto/services/crud-api.abstract.service.d.ts +0 -25
  526. package/data-api/class-dto/services/get-all-api.abstract.service.d.ts +0 -14
  527. package/data-api/class-dto/tableview/tableview-crud.data-provider.d.ts +0 -17
  528. package/data-api/helpers/get-all-params.d.ts +0 -69
  529. package/data-api/helpers/tableview-get-all-params-create.d.ts +0 -14
  530. package/data-api/index.d.ts +0 -5
  531. package/data-api/models/request-params.model.d.ts +0 -61
  532. package/data-api/rxjs/map-to-data-list.operator.d.ts +0 -9
  533. package/data-api/types/extract-get-all-params.type.d.ts +0 -14
  534. package/esm2022/data-api/class-dto/helpers/tableview-crud-create.mjs +0 -40
  535. package/esm2022/data-api/class-dto/index.mjs +0 -13
  536. package/esm2022/data-api/class-dto/mediusinc-mng-commons-data-api-class-dto.mjs +0 -5
  537. package/esm2022/data-api/class-dto/models/query-result.model.mjs +0 -24
  538. package/esm2022/data-api/class-dto/obsolete/helpers/query-param-convert.mjs +0 -103
  539. package/esm2022/data-api/class-dto/obsolete/helpers/tableview-crud-create.mjs +0 -21
  540. package/esm2022/data-api/class-dto/obsolete/index.mjs +0 -21
  541. package/esm2022/data-api/class-dto/obsolete/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +0 -5
  542. package/esm2022/data-api/class-dto/obsolete/models/builders/query-param.builder.mjs +0 -83
  543. package/esm2022/data-api/class-dto/obsolete/models/filter-match-type.model.mjs +0 -27
  544. package/esm2022/data-api/class-dto/obsolete/models/filter-param.model.mjs +0 -33
  545. package/esm2022/data-api/class-dto/obsolete/models/query-mode.model.mjs +0 -18
  546. package/esm2022/data-api/class-dto/obsolete/models/query-param.model.mjs +0 -68
  547. package/esm2022/data-api/class-dto/obsolete/models/query-result.model.mjs +0 -24
  548. package/esm2022/data-api/class-dto/obsolete/provide.mjs +0 -40
  549. package/esm2022/data-api/class-dto/obsolete/services/api.abstract.service.mjs +0 -70
  550. package/esm2022/data-api/class-dto/obsolete/services/crud-api.abstract.service.mjs +0 -83
  551. package/esm2022/data-api/class-dto/obsolete/services/get-all-api.abstract.service.mjs +0 -38
  552. package/esm2022/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.mjs +0 -51
  553. package/esm2022/data-api/class-dto/obsolete/utils/query-param-map.util.mjs +0 -57
  554. package/esm2022/data-api/class-dto/serder/object-serializer.mjs +0 -184
  555. package/esm2022/data-api/class-dto/services/api.abstract.service.mjs +0 -55
  556. package/esm2022/data-api/class-dto/services/crud-api.abstract.service.mjs +0 -82
  557. package/esm2022/data-api/class-dto/services/get-all-api.abstract.service.mjs +0 -49
  558. package/esm2022/data-api/class-dto/tableview/tableview-crud.data-provider.mjs +0 -49
  559. package/esm2022/data-api/helpers/get-all-params.mjs +0 -180
  560. package/esm2022/data-api/helpers/tableview-get-all-params-create.mjs +0 -18
  561. package/esm2022/data-api/index.mjs +0 -10
  562. package/esm2022/data-api/mediusinc-mng-commons-data-api.mjs +0 -5
  563. package/esm2022/data-api/models/request-params.model.mjs +0 -2
  564. package/esm2022/data-api/rxjs/map-to-data-list.operator.mjs +0 -19
  565. package/esm2022/data-api/types/extract-get-all-params.type.mjs +0 -2
  566. package/esm2022/lib/components/action/action.component.mjs +0 -314
  567. package/esm2022/lib/components/action/editor/action-editor.component.mjs +0 -98
  568. package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +0 -394
  569. package/esm2022/lib/components/action/index.mjs +0 -6
  570. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +0 -53
  571. package/esm2022/lib/components/action/models/action-component.model.mjs +0 -2
  572. package/esm2022/lib/components/action/models/action-execution.model.mjs +0 -323
  573. package/esm2022/lib/components/action/models/index.mjs +0 -4
  574. package/esm2022/lib/components/action/models/tableview-action-default-categories.model.mjs +0 -11
  575. package/esm2022/lib/components/action/route/action-route.component.mjs +0 -141
  576. package/esm2022/lib/components/action/table/action-table.component.mjs +0 -152
  577. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +0 -408
  578. package/esm2022/lib/components/form/date-range/date-range.component.mjs +0 -110
  579. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +0 -210
  580. package/esm2022/lib/components/form/editor/form-editor.component.mjs +0 -281
  581. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -61
  582. package/esm2022/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -54
  583. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +0 -69
  584. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
  585. package/esm2022/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -49
  586. package/esm2022/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -27
  587. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -220
  588. package/esm2022/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -24
  589. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -219
  590. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -221
  591. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -212
  592. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -18
  593. package/esm2022/lib/components/form/formly/fields/index.mjs +0 -13
  594. package/esm2022/lib/components/form/formly/formly.config.mjs +0 -250
  595. package/esm2022/lib/components/form/formly/index.mjs +0 -2
  596. package/esm2022/lib/components/form/formly/models/formly-config.model.mjs +0 -2
  597. package/esm2022/lib/components/form/formly/models/formly-field.model.mjs +0 -2
  598. package/esm2022/lib/components/form/formly/models/index.mjs +0 -3
  599. package/esm2022/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
  600. package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -31
  601. package/esm2022/lib/components/form/formly/wrappers/index.mjs +0 -3
  602. package/esm2022/lib/components/form/index.mjs +0 -5
  603. package/esm2022/lib/components/form/models/field-action-context.model.mjs +0 -2
  604. package/esm2022/lib/components/form/models/form-editor.event.mjs +0 -49
  605. package/esm2022/lib/components/form/models/form-editor.interface.mjs +0 -2
  606. package/esm2022/lib/components/form/models/index.mjs +0 -4
  607. package/esm2022/lib/components/layout/breadcrumb.component.mjs +0 -34
  608. package/esm2022/lib/components/layout/footer.component.mjs +0 -19
  609. package/esm2022/lib/components/layout/index.mjs +0 -9
  610. package/esm2022/lib/components/layout/main-layout.component.mjs +0 -53
  611. package/esm2022/lib/components/layout/menu-item.component.mjs +0 -296
  612. package/esm2022/lib/components/layout/menu.component.mjs +0 -34
  613. package/esm2022/lib/components/layout/services/index.mjs +0 -2
  614. package/esm2022/lib/components/layout/services/main-layout.component.service.mjs +0 -196
  615. package/esm2022/lib/components/layout/topbar-user.component.mjs +0 -46
  616. package/esm2022/lib/components/layout/topbar.component.mjs +0 -66
  617. package/esm2022/lib/components/layout/version.component.mjs +0 -60
  618. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +0 -30
  619. package/esm2022/lib/components/layoutV2/footer.component.mjs +0 -29
  620. package/esm2022/lib/components/layoutV2/index.mjs +0 -8
  621. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +0 -95
  622. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +0 -275
  623. package/esm2022/lib/components/layoutV2/menu.component.mjs +0 -39
  624. package/esm2022/lib/components/layoutV2/model/index.mjs +0 -3
  625. package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +0 -2
  626. package/esm2022/lib/components/layoutV2/model/menu.model.mjs +0 -2
  627. package/esm2022/lib/components/layoutV2/services/index.mjs +0 -3
  628. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +0 -71
  629. package/esm2022/lib/components/layoutV2/services/menu.service.mjs +0 -122
  630. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +0 -62
  631. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +0 -40
  632. package/esm2022/lib/components/layoutV2/topbar.component.mjs +0 -69
  633. package/esm2022/lib/components/layoutV2/version.component.mjs +0 -63
  634. package/esm2022/lib/components/notification/notification-wrapper.component.mjs +0 -50
  635. package/esm2022/lib/components/pages/error/error.page.component.mjs +0 -21
  636. package/esm2022/lib/components/pages/index.mjs +0 -3
  637. package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +0 -21
  638. package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +0 -597
  639. package/esm2022/lib/components/table/column-value/column-value.component.mjs +0 -90
  640. package/esm2022/lib/components/table/models/table.event.mjs +0 -16
  641. package/esm2022/lib/components/table/models/table.interface.mjs +0 -2
  642. package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +0 -25
  643. package/esm2022/lib/components/table/table.component.mjs +0 -643
  644. package/esm2022/lib/components/tableview/actions/tableview-default-actions.mjs +0 -215
  645. package/esm2022/lib/components/tableview/builders/tableview-builder.mjs +0 -162
  646. package/esm2022/lib/components/tableview/helpers/tableview-create.mjs +0 -24
  647. package/esm2022/lib/components/tableview/index.mjs +0 -7
  648. package/esm2022/lib/components/tableview/models/tableview.model.mjs +0 -2
  649. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +0 -15
  650. package/esm2022/lib/components/tableview/tableview.component.mjs +0 -82
  651. package/esm2022/lib/data-providers/base.data-provider.mjs +0 -48
  652. package/esm2022/lib/data-providers/editor.data-provider.mjs +0 -105
  653. package/esm2022/lib/data-providers/index.mjs +0 -6
  654. package/esm2022/lib/data-providers/lookup.data-provider.mjs +0 -45
  655. package/esm2022/lib/data-providers/table.data-provider.mjs +0 -64
  656. package/esm2022/lib/data-providers/tableview.data-provider.mjs +0 -105
  657. package/esm2022/lib/descriptors/action/action-button.descriptor.mjs +0 -68
  658. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +0 -77
  659. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +0 -266
  660. package/esm2022/lib/descriptors/action/action-link.descriptor.mjs +0 -89
  661. package/esm2022/lib/descriptors/action/action.descriptor.mjs +0 -383
  662. package/esm2022/lib/descriptors/action/index.mjs +0 -6
  663. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +0 -510
  664. package/esm2022/lib/descriptors/editor/field-action.descriptor.mjs +0 -50
  665. package/esm2022/lib/descriptors/editor/field-base.descriptor.mjs +0 -285
  666. package/esm2022/lib/descriptors/editor/field-group.descriptor.mjs +0 -97
  667. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +0 -212
  668. package/esm2022/lib/descriptors/editor/field-many.descriptor.mjs +0 -153
  669. package/esm2022/lib/descriptors/editor/field-validation.descriptor.mjs +0 -25
  670. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +0 -343
  671. package/esm2022/lib/descriptors/editor/index.mjs +0 -9
  672. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +0 -2
  673. package/esm2022/lib/descriptors/editor/internal/editor.model.mjs +0 -2
  674. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +0 -186
  675. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +0 -198
  676. package/esm2022/lib/descriptors/filter/index.mjs +0 -3
  677. package/esm2022/lib/descriptors/interfaces/field-config.interface.mjs +0 -2
  678. package/esm2022/lib/descriptors/interfaces/index.mjs +0 -3
  679. package/esm2022/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +0 -2
  680. package/esm2022/lib/descriptors/model/enum.descriptor.mjs +0 -31
  681. package/esm2022/lib/descriptors/model/index.mjs +0 -4
  682. package/esm2022/lib/descriptors/model/model.descriptor.mjs +0 -79
  683. package/esm2022/lib/descriptors/model/type.descriptor.mjs +0 -11
  684. package/esm2022/lib/descriptors/table/column.descriptor.mjs +0 -359
  685. package/esm2022/lib/descriptors/table/index.mjs +0 -4
  686. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +0 -2
  687. package/esm2022/lib/descriptors/table/internal/table.model.mjs +0 -2
  688. package/esm2022/lib/descriptors/table/sort.descriptor.mjs +0 -45
  689. package/esm2022/lib/descriptors/table/table.descriptor.mjs +0 -751
  690. package/esm2022/lib/descriptors/tableview/index.mjs +0 -2
  691. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +0 -2
  692. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +0 -558
  693. package/esm2022/lib/descriptors/types/action.type.mjs +0 -26
  694. package/esm2022/lib/descriptors/types/column.type.mjs +0 -21
  695. package/esm2022/lib/descriptors/types/editor.type.mjs +0 -8
  696. package/esm2022/lib/descriptors/types/field.type.mjs +0 -56
  697. package/esm2022/lib/descriptors/types/filter.type.mjs +0 -15
  698. package/esm2022/lib/descriptors/types/index.mjs +0 -8
  699. package/esm2022/lib/descriptors/types/table.type.mjs +0 -22
  700. package/esm2022/lib/descriptors/types/trim.type.mjs +0 -2
  701. package/esm2022/lib/directives/component.directive.mjs +0 -66
  702. package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +0 -49
  703. package/esm2022/lib/directives/index.mjs +0 -5
  704. package/esm2022/lib/directives/input-trim.directive.mjs +0 -55
  705. package/esm2022/lib/directives/template.directive.mjs +0 -29
  706. package/esm2022/lib/error/error.handler.mjs +0 -20
  707. package/esm2022/lib/error/index.mjs +0 -2
  708. package/esm2022/lib/guards/index.mjs +0 -2
  709. package/esm2022/lib/guards/unsaved-changes.guard.mjs +0 -4
  710. package/esm2022/lib/helpers/coercion.mjs +0 -52
  711. package/esm2022/lib/helpers/data-provider-executors.mjs +0 -80
  712. package/esm2022/lib/models/action-editor.model.mjs +0 -2
  713. package/esm2022/lib/models/can-component-deactivate.model.mjs +0 -2
  714. package/esm2022/lib/models/class.model.mjs +0 -2
  715. package/esm2022/lib/models/column-value.model.mjs +0 -2
  716. package/esm2022/lib/models/common-init-event-enum.model.mjs +0 -11
  717. package/esm2022/lib/models/config.model.mjs +0 -2
  718. package/esm2022/lib/models/data-list.model.mjs +0 -2
  719. package/esm2022/lib/models/enum.model.mjs +0 -2
  720. package/esm2022/lib/models/error.model.mjs +0 -44
  721. package/esm2022/lib/models/filter-match.model.mjs +0 -105
  722. package/esm2022/lib/models/index.mjs +0 -20
  723. package/esm2022/lib/models/layout-config.model.mjs +0 -2
  724. package/esm2022/lib/models/log.model.mjs +0 -10
  725. package/esm2022/lib/models/menu.model.mjs +0 -2
  726. package/esm2022/lib/models/radio.model.mjs +0 -2
  727. package/esm2022/lib/models/tableview-attr.model.mjs +0 -2
  728. package/esm2022/lib/models/type-registry.model.mjs +0 -2
  729. package/esm2022/lib/models/user.model.mjs +0 -2
  730. package/esm2022/lib/models/version.model.mjs +0 -2
  731. package/esm2022/lib/models/view-container.model.mjs +0 -2
  732. package/esm2022/lib/pipes/boolean.pipe.mjs +0 -28
  733. package/esm2022/lib/pipes/class-map.pipe.mjs +0 -23
  734. package/esm2022/lib/pipes/enum.pipe.mjs +0 -26
  735. package/esm2022/lib/pipes/enumerate-async.pipe.mjs +0 -41
  736. package/esm2022/lib/pipes/enumerate.pipe.mjs +0 -58
  737. package/esm2022/lib/pipes/getter.pipe.mjs +0 -21
  738. package/esm2022/lib/pipes/i18n-property.pipe.mjs +0 -19
  739. package/esm2022/lib/pipes/index.mjs +0 -12
  740. package/esm2022/lib/pipes/json-path.pipe.mjs +0 -25
  741. package/esm2022/lib/pipes/locale-default-row-class.pipe.mjs +0 -27
  742. package/esm2022/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +0 -2
  743. package/esm2022/lib/pipes/models/internal/index.mjs +0 -2
  744. package/esm2022/lib/pipes/parametrize.pipe.mjs +0 -86
  745. package/esm2022/lib/pipes/template.pipe.mjs +0 -26
  746. package/esm2022/lib/provide.mjs +0 -101
  747. package/esm2022/lib/registry/type.registry.mjs +0 -106
  748. package/esm2022/lib/router/index.mjs +0 -4
  749. package/esm2022/lib/router/models/index.mjs +0 -2
  750. package/esm2022/lib/router/models/router.model.mjs +0 -2
  751. package/esm2022/lib/router/route-builder.mjs +0 -347
  752. package/esm2022/lib/router/routes-builder.mjs +0 -69
  753. package/esm2022/lib/router/tableview-route-builder.mjs +0 -201
  754. package/esm2022/lib/security/authorization.guard.mjs +0 -15
  755. package/esm2022/lib/security/authorization.service.mjs +0 -51
  756. package/esm2022/lib/security/authorization.util.mjs +0 -16
  757. package/esm2022/lib/security/index.mjs +0 -4
  758. package/esm2022/lib/security/model/authorization.type.mjs +0 -8
  759. package/esm2022/lib/security/model/index.mjs +0 -4
  760. package/esm2022/lib/security/model/permission-service.interface.mjs +0 -2
  761. package/esm2022/lib/security/model/permissions.model.mjs +0 -87
  762. package/esm2022/lib/services/action/action-executor.service.mjs +0 -747
  763. package/esm2022/lib/services/action/component-action-executor.service.mjs +0 -19
  764. package/esm2022/lib/services/action/index.mjs +0 -5
  765. package/esm2022/lib/services/action/provide-action-executor.mjs +0 -9
  766. package/esm2022/lib/services/action/root-action-executor.service.mjs +0 -18
  767. package/esm2022/lib/services/action-error-mapper.service.mjs +0 -20
  768. package/esm2022/lib/services/commons-init.service.mjs +0 -100
  769. package/esm2022/lib/services/commons.service.mjs +0 -459
  770. package/esm2022/lib/services/configuration.service.mjs +0 -174
  771. package/esm2022/lib/services/data-provider-executor.service.mjs +0 -52
  772. package/esm2022/lib/services/index.mjs +0 -12
  773. package/esm2022/lib/services/internal/commons-init.provider.mjs +0 -4
  774. package/esm2022/lib/services/internal/index.mjs +0 -2
  775. package/esm2022/lib/services/log-publisher-console.service.mjs +0 -40
  776. package/esm2022/lib/services/logger.service.mjs +0 -130
  777. package/esm2022/lib/services/mng-localstorage-config.service.mjs +0 -30
  778. package/esm2022/lib/services/navigation.service.mjs +0 -55
  779. package/esm2022/lib/services/providers/formly-config.provider.mjs +0 -31
  780. package/esm2022/lib/services/providers/index.mjs +0 -2
  781. package/esm2022/lib/services/router.service.mjs +0 -183
  782. package/esm2022/lib/services/tokens/browser-storage.token.mjs +0 -6
  783. package/esm2022/lib/services/tokens/commons-init.token.mjs +0 -3
  784. package/esm2022/lib/services/tokens/default-setting.token.mjs +0 -3
  785. package/esm2022/lib/services/tokens/index.mjs +0 -6
  786. package/esm2022/lib/services/tokens/log-publisher.token.mjs +0 -3
  787. package/esm2022/lib/services/tokens/module-config.token.mjs +0 -3
  788. package/esm2022/lib/services/version.service.mjs +0 -49
  789. package/esm2022/lib/services/view/index.mjs +0 -3
  790. package/esm2022/lib/services/view/provide-view-container.mjs +0 -17
  791. package/esm2022/lib/services/view/view-container.service.mjs +0 -59
  792. package/esm2022/lib/styles/button-style.builder.mjs +0 -174
  793. package/esm2022/lib/styles/index.mjs +0 -3
  794. package/esm2022/lib/styles/models/index.mjs +0 -3
  795. package/esm2022/lib/styles/models/style-level.enum.mjs +0 -12
  796. package/esm2022/lib/styles/models/style-size.enum.mjs +0 -9
  797. package/esm2022/lib/styles/styles.util.mjs +0 -42
  798. package/esm2022/lib/types/action-descriptor.types.mjs +0 -2
  799. package/esm2022/lib/types/data-provider.types.mjs +0 -2
  800. package/esm2022/lib/types/getter.type.mjs +0 -2
  801. package/esm2022/lib/types/i18n.type.mjs +0 -2
  802. package/esm2022/lib/types/index.mjs +0 -8
  803. package/esm2022/lib/types/localstorage-config-value.type.mjs +0 -2
  804. package/esm2022/lib/types/type.decorator.mjs +0 -12
  805. package/esm2022/lib/types/type.model.mjs +0 -2
  806. package/esm2022/lib/utils/data-list-params.util.mjs +0 -416
  807. package/esm2022/lib/utils/date.util.mjs +0 -136
  808. package/esm2022/lib/utils/decorator-metadata.util.mjs +0 -61
  809. package/esm2022/lib/utils/editor-formly.util.mjs +0 -339
  810. package/esm2022/lib/utils/enum.util.mjs +0 -83
  811. package/esm2022/lib/utils/error.util.mjs +0 -247
  812. package/esm2022/lib/utils/export.util.mjs +0 -21
  813. package/esm2022/lib/utils/file.util.mjs +0 -18
  814. package/esm2022/lib/utils/i18n.util.mjs +0 -274
  815. package/esm2022/lib/utils/index.mjs +0 -14
  816. package/esm2022/lib/utils/model.util.mjs +0 -73
  817. package/esm2022/lib/utils/notification.util.mjs +0 -45
  818. package/esm2022/lib/utils/object.util.mjs +0 -135
  819. package/esm2022/lib/utils/route.util.mjs +0 -60
  820. package/esm2022/lib/utils/string.util.mjs +0 -59
  821. package/esm2022/lib/utils/tableview.util.mjs +0 -193
  822. package/esm2022/lib/validators/field.validator.mjs +0 -33
  823. package/esm2022/lib/validators/index.mjs +0 -2
  824. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +0 -698
  825. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs.map +0 -1
  826. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs +0 -480
  827. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs.map +0 -1
  828. package/fesm2022/mediusinc-mng-commons-data-api.mjs +0 -224
  829. package/fesm2022/mediusinc-mng-commons-data-api.mjs.map +0 -1
  830. package/lib/components/action/action.component.d.ts +0 -76
  831. package/lib/components/action/editor/action-editor.component.d.ts +0 -33
  832. package/lib/components/action/editor/injector-context/action-editor-injector-context.component.d.ts +0 -80
  833. package/lib/components/action/index.d.ts +0 -5
  834. package/lib/components/action/localization/data-language-dropdown.component.d.ts +0 -24
  835. package/lib/components/action/models/action-component.model.d.ts +0 -13
  836. package/lib/components/action/models/action-execution.model.d.ts +0 -169
  837. package/lib/components/action/models/index.d.ts +0 -3
  838. package/lib/components/action/route/action-route.component.d.ts +0 -31
  839. package/lib/components/action/table/action-table.component.d.ts +0 -49
  840. package/lib/components/form/autocomplete/autocomplete.component.d.ts +0 -83
  841. package/lib/components/form/date-range/date-range.component.d.ts +0 -28
  842. package/lib/components/form/dropdown/dropdown.component.d.ts +0 -54
  843. package/lib/components/form/editor/form-editor.component.d.ts +0 -51
  844. package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +0 -16
  845. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +0 -16
  846. package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +0 -27
  847. package/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +0 -12
  848. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -15
  849. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +0 -14
  850. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +0 -39
  851. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +0 -11
  852. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -45
  853. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -25
  854. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -42
  855. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +0 -7
  856. package/lib/components/form/formly/fields/index.d.ts +0 -12
  857. package/lib/components/form/formly/formly.config.d.ts +0 -17
  858. package/lib/components/form/formly/index.d.ts +0 -1
  859. package/lib/components/form/formly/models/formly-config.model.d.ts +0 -11
  860. package/lib/components/form/formly/models/formly-field.model.d.ts +0 -17
  861. package/lib/components/form/formly/models/index.d.ts +0 -2
  862. package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +0 -11
  863. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +0 -11
  864. package/lib/components/form/formly/wrappers/index.d.ts +0 -2
  865. package/lib/components/form/index.d.ts +0 -4
  866. package/lib/components/form/models/field-action-context.model.d.ts +0 -24
  867. package/lib/components/form/models/form-editor.event.d.ts +0 -58
  868. package/lib/components/form/models/index.d.ts +0 -3
  869. package/lib/components/layout/breadcrumb.component.d.ts +0 -13
  870. package/lib/components/layout/footer.component.d.ts +0 -9
  871. package/lib/components/layout/index.d.ts +0 -8
  872. package/lib/components/layout/main-layout.component.d.ts +0 -19
  873. package/lib/components/layout/menu-item.component.d.ts +0 -55
  874. package/lib/components/layout/menu.component.d.ts +0 -16
  875. package/lib/components/layout/services/index.d.ts +0 -1
  876. package/lib/components/layout/services/main-layout.component.service.d.ts +0 -65
  877. package/lib/components/layout/topbar-user.component.d.ts +0 -22
  878. package/lib/components/layout/topbar.component.d.ts +0 -26
  879. package/lib/components/layout/version.component.d.ts +0 -19
  880. package/lib/components/layoutV2/breadcrumb.component.d.ts +0 -10
  881. package/lib/components/layoutV2/footer.component.d.ts +0 -12
  882. package/lib/components/layoutV2/index.d.ts +0 -7
  883. package/lib/components/layoutV2/main-layout.component.d.ts +0 -24
  884. package/lib/components/layoutV2/menu-item.component.d.ts +0 -42
  885. package/lib/components/layoutV2/menu.component.d.ts +0 -14
  886. package/lib/components/layoutV2/model/index.d.ts +0 -2
  887. package/lib/components/layoutV2/model/layout-state.model.d.ts +0 -10
  888. package/lib/components/layoutV2/model/menu.model.d.ts +0 -4
  889. package/lib/components/layoutV2/services/index.d.ts +0 -2
  890. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +0 -17
  891. package/lib/components/layoutV2/services/menu.service.d.ts +0 -22
  892. package/lib/components/layoutV2/sidebar.component.d.ts +0 -19
  893. package/lib/components/layoutV2/topbar-user.component.d.ts +0 -16
  894. package/lib/components/layoutV2/topbar.component.d.ts +0 -22
  895. package/lib/components/layoutV2/version.component.d.ts +0 -19
  896. package/lib/components/pages/error/error.page.component.d.ts +0 -8
  897. package/lib/components/pages/index.d.ts +0 -2
  898. package/lib/components/pages/not-found/not-found.page.component.d.ts +0 -8
  899. package/lib/components/table/column-filter-full/column-filter-full.component.d.ts +0 -101
  900. package/lib/components/table/column-value/column-value.component.d.ts +0 -35
  901. package/lib/components/table/models/table.event.d.ts +0 -17
  902. package/lib/components/table/models/table.interface.d.ts +0 -17
  903. package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +0 -8
  904. package/lib/components/table/table.component.d.ts +0 -123
  905. package/lib/components/tableview/actions/tableview-default-actions.d.ts +0 -36
  906. package/lib/components/tableview/builders/tableview-builder.d.ts +0 -115
  907. package/lib/components/tableview/helpers/tableview-create.d.ts +0 -16
  908. package/lib/components/tableview/index.d.ts +0 -6
  909. package/lib/components/tableview/models/tableview.model.d.ts +0 -8
  910. package/lib/components/tableview/route/tableview-route.component.d.ts +0 -7
  911. package/lib/components/tableview/tableview.component.d.ts +0 -29
  912. package/lib/data-providers/base.data-provider.d.ts +0 -32
  913. package/lib/data-providers/editor.data-provider.d.ts +0 -88
  914. package/lib/data-providers/index.d.ts +0 -5
  915. package/lib/data-providers/lookup.data-provider.d.ts +0 -27
  916. package/lib/data-providers/table.data-provider.d.ts +0 -40
  917. package/lib/data-providers/tableview.data-provider.d.ts +0 -45
  918. package/lib/descriptors/action/action-button.descriptor.d.ts +0 -25
  919. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +0 -36
  920. package/lib/descriptors/action/action-editor.descriptor.d.ts +0 -118
  921. package/lib/descriptors/action/action-link.descriptor.d.ts +0 -34
  922. package/lib/descriptors/action/action.descriptor.d.ts +0 -149
  923. package/lib/descriptors/action/index.d.ts +0 -5
  924. package/lib/descriptors/editor/editor.descriptor.d.ts +0 -270
  925. package/lib/descriptors/editor/field-action.descriptor.d.ts +0 -23
  926. package/lib/descriptors/editor/field-base.descriptor.d.ts +0 -122
  927. package/lib/descriptors/editor/field-group.descriptor.d.ts +0 -42
  928. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +0 -83
  929. package/lib/descriptors/editor/field-many.descriptor.d.ts +0 -63
  930. package/lib/descriptors/editor/field-validation.descriptor.d.ts +0 -19
  931. package/lib/descriptors/editor/field.descriptor.d.ts +0 -167
  932. package/lib/descriptors/editor/index.d.ts +0 -8
  933. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +0 -33
  934. package/lib/descriptors/editor/internal/editor.model.d.ts +0 -15
  935. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +0 -70
  936. package/lib/descriptors/filter/filter.descriptor.d.ts +0 -66
  937. package/lib/descriptors/filter/index.d.ts +0 -2
  938. package/lib/descriptors/interfaces/field-config.interface.d.ts +0 -9
  939. package/lib/descriptors/interfaces/index.d.ts +0 -2
  940. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +0 -12
  941. package/lib/descriptors/model/enum.descriptor.d.ts +0 -14
  942. package/lib/descriptors/model/index.d.ts +0 -3
  943. package/lib/descriptors/model/model.descriptor.d.ts +0 -31
  944. package/lib/descriptors/model/type.descriptor.d.ts +0 -5
  945. package/lib/descriptors/table/column.descriptor.d.ts +0 -148
  946. package/lib/descriptors/table/index.d.ts +0 -3
  947. package/lib/descriptors/table/internal/table-columns.model.d.ts +0 -42
  948. package/lib/descriptors/table/internal/table.model.d.ts +0 -12
  949. package/lib/descriptors/table/table.descriptor.d.ts +0 -272
  950. package/lib/descriptors/tableview/index.d.ts +0 -1
  951. package/lib/descriptors/tableview/internal/tableview.model.d.ts +0 -11
  952. package/lib/descriptors/tableview/tableview.descriptor.d.ts +0 -193
  953. package/lib/descriptors/types/action.type.d.ts +0 -21
  954. package/lib/descriptors/types/editor.type.d.ts +0 -6
  955. package/lib/descriptors/types/field.type.d.ts +0 -47
  956. package/lib/descriptors/types/index.d.ts +0 -7
  957. package/lib/descriptors/types/table.type.d.ts +0 -18
  958. package/lib/directives/component.directive.d.ts +0 -20
  959. package/lib/directives/dialog-keydown-handler.directive.d.ts +0 -12
  960. package/lib/directives/index.d.ts +0 -4
  961. package/lib/directives/input-trim.directive.d.ts +0 -14
  962. package/lib/directives/template.directive.d.ts +0 -12
  963. package/lib/error/error.handler.d.ts +0 -6
  964. package/lib/error/index.d.ts +0 -1
  965. package/lib/guards/index.d.ts +0 -1
  966. package/lib/guards/unsaved-changes.guard.d.ts +0 -3
  967. package/lib/helpers/coercion.d.ts +0 -9
  968. package/lib/helpers/data-provider-executors.d.ts +0 -19
  969. package/lib/models/action-editor.model.d.ts +0 -15
  970. package/lib/models/column-value.model.d.ts +0 -4
  971. package/lib/models/common-init-event-enum.model.d.ts +0 -9
  972. package/lib/models/config.model.d.ts +0 -53
  973. package/lib/models/enum.model.d.ts +0 -7
  974. package/lib/models/error.model.d.ts +0 -50
  975. package/lib/models/index.d.ts +0 -19
  976. package/lib/models/layout-config.model.d.ts +0 -34
  977. package/lib/models/log.model.d.ts +0 -40
  978. package/lib/models/menu.model.d.ts +0 -32
  979. package/lib/models/tableview-attr.model.d.ts +0 -10
  980. package/lib/models/type-registry.model.d.ts +0 -7
  981. package/lib/models/user.model.d.ts +0 -8
  982. package/lib/models/view-container.model.d.ts +0 -24
  983. package/lib/pipes/boolean.pipe.d.ts +0 -7
  984. package/lib/pipes/class-map.pipe.d.ts +0 -7
  985. package/lib/pipes/enum.pipe.d.ts +0 -8
  986. package/lib/pipes/enumerate-async.pipe.d.ts +0 -14
  987. package/lib/pipes/enumerate.pipe.d.ts +0 -21
  988. package/lib/pipes/getter.pipe.d.ts +0 -8
  989. package/lib/pipes/i18n-property.pipe.d.ts +0 -8
  990. package/lib/pipes/index.d.ts +0 -11
  991. package/lib/pipes/json-path.pipe.d.ts +0 -13
  992. package/lib/pipes/locale-default-row-class.pipe.d.ts +0 -10
  993. package/lib/pipes/models/internal/enumrate-pipe-i18n.model.d.ts +0 -5
  994. package/lib/pipes/models/internal/index.d.ts +0 -1
  995. package/lib/pipes/parametrize.pipe.d.ts +0 -13
  996. package/lib/pipes/template.pipe.d.ts +0 -10
  997. package/lib/provide.d.ts +0 -10
  998. package/lib/registry/type.registry.d.ts +0 -25
  999. package/lib/router/index.d.ts +0 -3
  1000. package/lib/router/models/index.d.ts +0 -1
  1001. package/lib/router/models/router.model.d.ts +0 -31
  1002. package/lib/router/route-builder.d.ts +0 -75
  1003. package/lib/router/routes-builder.d.ts +0 -28
  1004. package/lib/router/tableview-route-builder.d.ts +0 -44
  1005. package/lib/security/authorization.guard.d.ts +0 -2
  1006. package/lib/security/authorization.service.d.ts +0 -17
  1007. package/lib/security/authorization.util.d.ts +0 -5
  1008. package/lib/security/index.d.ts +0 -3
  1009. package/lib/security/model/authorization.type.d.ts +0 -6
  1010. package/lib/security/model/index.d.ts +0 -3
  1011. package/lib/security/model/permission-service.interface.d.ts +0 -6
  1012. package/lib/security/model/permissions.model.d.ts +0 -37
  1013. package/lib/services/action/action-executor.service.d.ts +0 -177
  1014. package/lib/services/action/component-action-executor.service.d.ts +0 -9
  1015. package/lib/services/action/index.d.ts +0 -4
  1016. package/lib/services/action/root-action-executor.service.d.ts +0 -9
  1017. package/lib/services/action-error-mapper.service.d.ts +0 -18
  1018. package/lib/services/commons-init.service.d.ts +0 -22
  1019. package/lib/services/commons.service.d.ts +0 -90
  1020. package/lib/services/configuration.service.d.ts +0 -68
  1021. package/lib/services/data-provider-executor.service.d.ts +0 -60
  1022. package/lib/services/index.d.ts +0 -11
  1023. package/lib/services/internal/commons-init.provider.d.ts +0 -4
  1024. package/lib/services/internal/index.d.ts +0 -1
  1025. package/lib/services/log-publisher-console.service.d.ts +0 -4
  1026. package/lib/services/logger.service.d.ts +0 -33
  1027. package/lib/services/mng-localstorage-config.service.d.ts +0 -11
  1028. package/lib/services/navigation.service.d.ts +0 -15
  1029. package/lib/services/providers/formly-config.provider.d.ts +0 -5
  1030. package/lib/services/providers/index.d.ts +0 -1
  1031. package/lib/services/router.service.d.ts +0 -37
  1032. package/lib/services/tokens/browser-storage.token.d.ts +0 -2
  1033. package/lib/services/tokens/commons-init.token.d.ts +0 -3
  1034. package/lib/services/tokens/default-setting.token.d.ts +0 -2
  1035. package/lib/services/tokens/index.d.ts +0 -5
  1036. package/lib/services/tokens/log-publisher.token.d.ts +0 -3
  1037. package/lib/services/tokens/module-config.token.d.ts +0 -3
  1038. package/lib/services/version.service.d.ts +0 -14
  1039. package/lib/services/view/index.d.ts +0 -2
  1040. package/lib/services/view/view-container.service.d.ts +0 -32
  1041. package/lib/styles/button-style.builder.d.ts +0 -68
  1042. package/lib/styles/index.d.ts +0 -2
  1043. package/lib/styles/models/index.d.ts +0 -2
  1044. package/lib/styles/models/style-level.enum.d.ts +0 -10
  1045. package/lib/styles/models/style-size.enum.d.ts +0 -7
  1046. package/lib/styles/styles.util.d.ts +0 -15
  1047. package/lib/types/action-descriptor.types.d.ts +0 -4
  1048. package/lib/types/data-provider.types.d.ts +0 -3
  1049. package/lib/types/getter.type.d.ts +0 -2
  1050. package/lib/types/i18n.type.d.ts +0 -1
  1051. package/lib/types/index.d.ts +0 -7
  1052. package/lib/types/localstorage-config-value.type.d.ts +0 -1
  1053. package/lib/types/type.model.d.ts +0 -31
  1054. package/lib/utils/data-list-params.util.d.ts +0 -84
  1055. package/lib/utils/date.util.d.ts +0 -20
  1056. package/lib/utils/decorator-metadata.util.d.ts +0 -33
  1057. package/lib/utils/editor-formly.util.d.ts +0 -13
  1058. package/lib/utils/enum.util.d.ts +0 -51
  1059. package/lib/utils/error.util.d.ts +0 -116
  1060. package/lib/utils/export.util.d.ts +0 -5
  1061. package/lib/utils/file.util.d.ts +0 -3
  1062. package/lib/utils/i18n.util.d.ts +0 -85
  1063. package/lib/utils/index.d.ts +0 -13
  1064. package/lib/utils/model.util.d.ts +0 -10
  1065. package/lib/utils/notification.util.d.ts +0 -13
  1066. package/lib/utils/object.util.d.ts +0 -30
  1067. package/lib/utils/route.util.d.ts +0 -37
  1068. package/lib/utils/string.util.d.ts +0 -9
  1069. package/lib/utils/tableview.util.d.ts +0 -53
  1070. package/lib/validators/field.validator.d.ts +0 -3
  1071. package/lib/validators/index.d.ts +0 -1
  1072. package/openapi/angular/README.mustache +0 -226
  1073. package/openapi/angular/api.module.mustache +0 -39
  1074. package/openapi/angular/api.service.mustache +0 -253
  1075. package/openapi/angular/apiInterface.mustache +0 -47
  1076. package/openapi/angular/apis.mustache +0 -12
  1077. package/openapi/angular/config.yaml +0 -23
  1078. package/openapi/angular/configuration.mustache +0 -128
  1079. package/openapi/angular/custom/base-api.service.mustache +0 -14
  1080. package/openapi/angular/custom/helpers.mustache +0 -71
  1081. package/openapi/angular/custom/modelSchema.mustache +0 -46
  1082. package/openapi/angular/custom/schema.mustache +0 -18
  1083. package/openapi/angular/encoder.mustache +0 -20
  1084. package/openapi/angular/git_push.sh.mustache +0 -57
  1085. package/openapi/angular/index.mustache +0 -0
  1086. package/openapi/angular/licenseInfo.mustache +0 -11
  1087. package/openapi/angular/model.mustache +0 -16
  1088. package/openapi/angular/modelAlias.mustache +0 -1
  1089. package/openapi/angular/modelEnum.mustache +0 -21
  1090. package/openapi/angular/modelGeneric.mustache +0 -14
  1091. package/openapi/angular/modelGenericAdditionalProperties.mustache +0 -5
  1092. package/openapi/angular/modelGenericEnums.mustache +0 -30
  1093. package/openapi/angular/modelOneOf.mustache +0 -14
  1094. package/openapi/angular/modelTaggedUnion.mustache +0 -21
  1095. package/openapi/angular/models.mustache +0 -5
  1096. package/openapi/angular/ng-package.mustache +0 -6
  1097. package/openapi/angular/package.mustache +0 -39
  1098. package/openapi/angular/param.mustache +0 -69
  1099. package/openapi/angular/tsconfig.mustache +0 -28
  1100. package/openapi/angular/variables.mustache +0 -9
  1101. package/openapi/node/model.mustache +0 -83
  1102. package/openapi/node/models.mustache +0 -6
  1103. package/scss/common/layout/_breadcrumb.scss +0 -99
  1104. package/scss/common/layout/_config.scss +0 -100
  1105. package/scss/common/layout/_dashboard.scss +0 -16
  1106. package/scss/common/layout/_exception.scss +0 -133
  1107. package/scss/common/layout/_footer.scss +0 -29
  1108. package/scss/common/layout/_help.scss +0 -156
  1109. package/scss/common/layout/_inlinemenu.scss +0 -68
  1110. package/scss/common/layout/_invoice.scss +0 -176
  1111. package/scss/common/layout/_landing.scss +0 -636
  1112. package/scss/common/layout/_layout_dark.scss +0 -23
  1113. package/scss/common/layout/_layout_light.scss +0 -23
  1114. package/scss/common/layout/_loader.scss +0 -17
  1115. package/scss/common/layout/_login.scss +0 -106
  1116. package/scss/common/layout/_main.scss +0 -45
  1117. package/scss/common/layout/_mixins.scss +0 -222
  1118. package/scss/common/layout/_rightmenu.scss +0 -130
  1119. package/scss/common/layout/_topbar.scss +0 -191
  1120. package/scss/common/layout/_typography.scss +0 -68
  1121. package/scss/common/layout/_utils.scss +0 -96
  1122. package/scss/common/layout/_widgets.scss +0 -392
  1123. package/scss/common/layout/menu/_menu.scss +0 -7
  1124. package/scss/common/layout/menu/_menu_common.scss +0 -183
  1125. package/scss/common/layout/menu/_menu_overlay.scss +0 -52
  1126. package/scss/common/layout/menu/_menu_sidebar.scss +0 -233
  1127. package/scss/common/layout/menu/_menu_slim.scss +0 -137
  1128. package/scss/common/layout/menu/_menu_static.scss +0 -70
  1129. package/scss/common/layout/menu/_menu_theme.scss +0 -364
  1130. package/scss/common/theme/_theme_dark.scss +0 -5
  1131. package/scss/common/theme/_theme_light.scss +0 -5
  1132. package/scss/common/theme/designer/_colors.scss +0 -17
  1133. package/scss/common/theme/designer/_common.scss +0 -41
  1134. package/scss/common/theme/designer/_components.scss +0 -102
  1135. package/scss/common/theme/designer/_mixins.scss +0 -203
  1136. package/scss/common/theme/designer/components/button/_button.scss +0 -572
  1137. package/scss/common/theme/designer/components/button/_speeddial.scss +0 -81
  1138. package/scss/common/theme/designer/components/button/_splitbutton.scss +0 -2
  1139. package/scss/common/theme/designer/components/data/_carousel.scss +0 -37
  1140. package/scss/common/theme/designer/components/data/_datatable.scss +0 -266
  1141. package/scss/common/theme/designer/components/data/_dataview.scss +0 -55
  1142. package/scss/common/theme/designer/components/data/_filter.scss +0 -137
  1143. package/scss/common/theme/designer/components/data/_fullcalendar.scss +0 -324
  1144. package/scss/common/theme/designer/components/data/_orderlist.scss +0 -91
  1145. package/scss/common/theme/designer/components/data/_organizationchart.scss +0 -50
  1146. package/scss/common/theme/designer/components/data/_paginator.scss +0 -83
  1147. package/scss/common/theme/designer/components/data/_picklist.scss +0 -91
  1148. package/scss/common/theme/designer/components/data/_timeline.scss +0 -35
  1149. package/scss/common/theme/designer/components/data/_tree.scss +0 -144
  1150. package/scss/common/theme/designer/components/data/_treetable.scss +0 -241
  1151. package/scss/common/theme/designer/components/data/_virtualscroller.scss +0 -28
  1152. package/scss/common/theme/designer/components/file/_fileupload.scss +0 -58
  1153. package/scss/common/theme/designer/components/input/_autocomplete.scss +0 -105
  1154. package/scss/common/theme/designer/components/input/_calendar.scss +0 -212
  1155. package/scss/common/theme/designer/components/input/_cascadeselect.scss +0 -98
  1156. package/scss/common/theme/designer/components/input/_checkbox.scss +0 -85
  1157. package/scss/common/theme/designer/components/input/_chips.scss +0 -43
  1158. package/scss/common/theme/designer/components/input/_colorpicker.scss +0 -19
  1159. package/scss/common/theme/designer/components/input/_dropdown.scss +0 -136
  1160. package/scss/common/theme/designer/components/input/_editor.scss +0 -122
  1161. package/scss/common/theme/designer/components/input/_inputgroup.scss +0 -69
  1162. package/scss/common/theme/designer/components/input/_inputmask.scss +0 -3
  1163. package/scss/common/theme/designer/components/input/_inputnumber.scss +0 -3
  1164. package/scss/common/theme/designer/components/input/_inputswitch.scss +0 -60
  1165. package/scss/common/theme/designer/components/input/_inputtext.scss +0 -97
  1166. package/scss/common/theme/designer/components/input/_listbox.scss +0 -82
  1167. package/scss/common/theme/designer/components/input/_multiselect.scss +0 -165
  1168. package/scss/common/theme/designer/components/input/_password.scss +0 -33
  1169. package/scss/common/theme/designer/components/input/_radiobutton.scss +0 -78
  1170. package/scss/common/theme/designer/components/input/_rating.scss +0 -48
  1171. package/scss/common/theme/designer/components/input/_selectbutton.scss +0 -50
  1172. package/scss/common/theme/designer/components/input/_slider.scss +0 -71
  1173. package/scss/common/theme/designer/components/input/_togglebutton.scss +0 -48
  1174. package/scss/common/theme/designer/components/input/_treeselect.scss +0 -91
  1175. package/scss/common/theme/designer/components/menu/_breadcrumb.scss +0 -42
  1176. package/scss/common/theme/designer/components/menu/_contextmenu.scss +0 -51
  1177. package/scss/common/theme/designer/components/menu/_dock.scss +0 -51
  1178. package/scss/common/theme/designer/components/menu/_megamenu.scss +0 -103
  1179. package/scss/common/theme/designer/components/menu/_menu.scss +0 -41
  1180. package/scss/common/theme/designer/components/menu/_menubar.scss +0 -180
  1181. package/scss/common/theme/designer/components/menu/_panelmenu.scss +0 -136
  1182. package/scss/common/theme/designer/components/menu/_slidemenu.scss +0 -56
  1183. package/scss/common/theme/designer/components/menu/_steps.scss +0 -56
  1184. package/scss/common/theme/designer/components/menu/_tabmenu.scss +0 -49
  1185. package/scss/common/theme/designer/components/menu/_tieredmenu.scss +0 -57
  1186. package/scss/common/theme/designer/components/messages/_inlinemessage.scss +0 -64
  1187. package/scss/common/theme/designer/components/messages/_message.scss +0 -102
  1188. package/scss/common/theme/designer/components/messages/_toast.scss +0 -94
  1189. package/scss/common/theme/designer/components/misc/_avatar.scss +0 -30
  1190. package/scss/common/theme/designer/components/misc/_badge.scss +0 -48
  1191. package/scss/common/theme/designer/components/misc/_blockui.scss +0 -3
  1192. package/scss/common/theme/designer/components/misc/_chip.scss +0 -38
  1193. package/scss/common/theme/designer/components/misc/_inplace.scss +0 -16
  1194. package/scss/common/theme/designer/components/misc/_progressbar.scss +0 -17
  1195. package/scss/common/theme/designer/components/misc/_scrolltop.scss +0 -20
  1196. package/scss/common/theme/designer/components/misc/_skeleton.scss +0 -8
  1197. package/scss/common/theme/designer/components/misc/_tag.scss +0 -35
  1198. package/scss/common/theme/designer/components/misc/_terminal.scss +0 -11
  1199. package/scss/common/theme/designer/components/multimedia/_galleria.scss +0 -141
  1200. package/scss/common/theme/designer/components/multimedia/_image.scss +0 -44
  1201. package/scss/common/theme/designer/components/overlay/_confirmpopup.scss +0 -65
  1202. package/scss/common/theme/designer/components/overlay/_dialog.scss +0 -63
  1203. package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +0 -62
  1204. package/scss/common/theme/designer/components/overlay/_sidebar.scss +0 -27
  1205. package/scss/common/theme/designer/components/overlay/_tooltip.scss +0 -33
  1206. package/scss/common/theme/designer/components/panel/_accordion.scss +0 -119
  1207. package/scss/common/theme/designer/components/panel/_card.scss +0 -30
  1208. package/scss/common/theme/designer/components/panel/_divider.scss +0 -31
  1209. package/scss/common/theme/designer/components/panel/_fieldset.scss +0 -47
  1210. package/scss/common/theme/designer/components/panel/_panel.scss +0 -42
  1211. package/scss/common/theme/designer/components/panel/_scrollpanel.scss +0 -6
  1212. package/scss/common/theme/designer/components/panel/_splitter.scss +0 -19
  1213. package/scss/common/theme/designer/components/panel/_tabview.scss +0 -66
  1214. package/scss/common/theme/designer/components/panel/_toolbar.scss +0 -10
  1215. package/scss/common/theme/extensions/_button.scss +0 -111
  1216. package/scss/common/theme/extensions/_calendar.scss +0 -18
  1217. package/scss/common/theme/extensions/_card.scss +0 -6
  1218. package/scss/common/theme/extensions/_carousel.scss +0 -13
  1219. package/scss/common/theme/extensions/_checkbox.scss +0 -10
  1220. package/scss/common/theme/extensions/_contextmenu.scss +0 -16
  1221. package/scss/common/theme/extensions/_datatable.scss +0 -83
  1222. package/scss/common/theme/extensions/_dialog.scss +0 -14
  1223. package/scss/common/theme/extensions/_fieldset.scss +0 -6
  1224. package/scss/common/theme/extensions/_galleria.scss +0 -25
  1225. package/scss/common/theme/extensions/_megamenu.scss +0 -18
  1226. package/scss/common/theme/extensions/_menu.scss +0 -14
  1227. package/scss/common/theme/extensions/_menubar.scss +0 -14
  1228. package/scss/common/theme/extensions/_orderlist.scss +0 -37
  1229. package/scss/common/theme/extensions/_paginator.scss +0 -19
  1230. package/scss/common/theme/extensions/_panelmenu.scss +0 -20
  1231. package/scss/common/theme/extensions/_password.scss +0 -5
  1232. package/scss/common/theme/extensions/_picklist.scss +0 -37
  1233. package/scss/common/theme/extensions/_radiobutton.scss +0 -8
  1234. package/scss/common/theme/extensions/_sidebar.scss +0 -19
  1235. package/scss/common/theme/extensions/_slidemenu.scss +0 -10
  1236. package/scss/common/theme/extensions/_slider.scss +0 -6
  1237. package/scss/common/theme/extensions/_steps.scss +0 -50
  1238. package/scss/common/theme/extensions/_tieredmenu.scss +0 -14
  1239. package/scss/common/theme/extensions/_toast.scss +0 -6
  1240. package/scss/common/theme/extensions/_tree.scss +0 -35
  1241. package/scss/common/theme/extensions/_treetable.scss +0 -35
  1242. package/scss/common/theme/extensions/_vendor_extensions.scss +0 -27
  1243. package/scss/common/variables/layout/_common.scss +0 -12
  1244. package/scss/common/variables/layout/_layout_dark.scss +0 -70
  1245. package/scss/common/variables/layout/_layout_light.scss +0 -70
  1246. package/scss/common/variables/theme/_theme_dark.scss +0 -937
  1247. package/scss/common/variables/theme/_theme_light.scss +0 -936
  1248. package/scss/layout/default/_mng-variables-layout-dark.scss +0 -2
  1249. package/scss/layout/default/_mng-variables-layout-light.scss +0 -2
  1250. package/scss/layout/default/layout-dark.scss +0 -2
  1251. package/scss/layout/default/layout-light.scss +0 -2
  1252. package/scss/mng-commons-dark-v2.scss +0 -9
  1253. package/scss/mng-commons-dark.scss +0 -5
  1254. package/scss/mng-commons-light-v2.scss +0 -9
  1255. package/scss/mng-commons-light.scss +0 -8
  1256. package/scss/mng-overrides/_layout_action.scss +0 -10
  1257. package/scss/mng-overrides/_layout_dialog.scss +0 -91
  1258. package/scss/mng-overrides/_layout_forms.scss +0 -38
  1259. package/scss/mng-overrides/_layout_menu.scss +0 -10
  1260. package/scss/mng-overrides/_layout_radio.scss +0 -3
  1261. package/scss/mng-overrides/_layout_styles.scss +0 -35
  1262. package/scss/mng-overrides/_layout_topbar.scss +0 -21
  1263. package/scss/mng-overrides/_mixins.scss +0 -69
  1264. package/scss/mng-overrides/_theme_autocomplete.scss +0 -29
  1265. package/scss/mng-overrides/_theme_button.scss +0 -61
  1266. package/scss/mng-overrides/_theme_datatable.scss +0 -160
  1267. package/scss/mng-overrides/_theme_datepicker.scss +0 -21
  1268. package/scss/mng-overrides/_theme_dialog.scss +0 -108
  1269. package/scss/mng-overrides/_theme_dropdown.scss +0 -22
  1270. package/scss/mng-overrides/_theme_fileupload.scss +0 -24
  1271. package/scss/mng-overrides/_theme_forms.scss +0 -29
  1272. package/scss/mng-overrides/_theme_image.scss +0 -27
  1273. package/scss/mng-overrides/_theme_input.scss +0 -27
  1274. package/scss/mng-overrides/_theme_menu.scss +0 -5
  1275. package/scss/mng-overrides/_theme_multiselect.scss +0 -20
  1276. package/scss/mng-overrides/_theme_styles.scss +0 -17
  1277. package/scss/mng-overrides/_theme_tableview.scss +0 -79
  1278. package/scss/mng-overrides/_theme_tabview.scss +0 -11
  1279. package/scss/mng-overrides/_theme_toast.scss +0 -3
  1280. package/scss/mng-overrides/_theme_toolbar.scss +0 -5
  1281. package/scss/mng-overrides/_variables.scss +0 -15
  1282. package/scss/theme/default/_mng-variables-theme-dark.scss +0 -11
  1283. package/scss/theme/default/_mng-variables-theme-light.scss +0 -13
  1284. package/scss/theme/default/theme-dark.scss +0 -2
  1285. package/scss/theme/default/theme-light.scss +0 -2
  1286. package/scss/v2/layout/_animation.scss +0 -53
  1287. package/scss/v2/layout/_breadcrumb.scss +0 -97
  1288. package/scss/v2/layout/_config.scss +0 -42
  1289. package/scss/v2/layout/_content.scss +0 -3
  1290. package/scss/v2/layout/_fonts.scss +0 -32
  1291. package/scss/v2/layout/_layout_dark.scss +0 -12
  1292. package/scss/v2/layout/_layout_light.scss +0 -12
  1293. package/scss/v2/layout/_main.scss +0 -54
  1294. package/scss/v2/layout/_profile.scss +0 -10
  1295. package/scss/v2/layout/_responsive.scss +0 -131
  1296. package/scss/v2/layout/_sidebar_drawer.scss +0 -283
  1297. package/scss/v2/layout/_sidebar_horizontal.scss +0 -168
  1298. package/scss/v2/layout/_sidebar_reveal.scss +0 -201
  1299. package/scss/v2/layout/_sidebar_slim.scss +0 -157
  1300. package/scss/v2/layout/_sidebar_slim_plus.scss +0 -167
  1301. package/scss/v2/layout/_sidebar_vertical.scss +0 -176
  1302. package/scss/v2/layout/_topbar.scss +0 -174
  1303. package/scss/v2/layout/_typography.scss +0 -62
  1304. package/scss/v2/layout/_utils.scss +0 -33
  1305. package/scss/v2/layout/layout.scss +0 -24
  1306. package/scss/v2/layout/mng/_mng_layout_footer.scss +0 -39
  1307. package/scss/v2/layout/mng/_mng_layout_menu.scss +0 -10
  1308. package/scss/v2/layout/mng/_mng_layout_styles.scss +0 -3
  1309. package/scss/v2/layout/mng/_mng_layout_topbar.scss +0 -18
  1310. package/scss/v2/layout/preloading.scss +0 -84
  1311. package/scss/v2/theme/extensions/_fullcalendar.scss +0 -328
  1312. package/scss/v2/theme/theme-base/_colors.scss +0 -17
  1313. package/scss/v2/theme/theme-base/_common.scss +0 -76
  1314. package/scss/v2/theme/theme-base/_components.scss +0 -110
  1315. package/scss/v2/theme/theme-base/_mixins.scss +0 -337
  1316. package/scss/v2/theme/theme-base/components/button/_button.scss +0 -576
  1317. package/scss/v2/theme/theme-base/components/button/_speeddial.scss +0 -96
  1318. package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +0 -348
  1319. package/scss/v2/theme/theme-base/components/data/_carousel.scss +0 -37
  1320. package/scss/v2/theme/theme-base/components/data/_datatable.scss +0 -338
  1321. package/scss/v2/theme/theme-base/components/data/_dataview.scss +0 -46
  1322. package/scss/v2/theme/theme-base/components/data/_filter.scss +0 -137
  1323. package/scss/v2/theme/theme-base/components/data/_orderlist.scss +0 -114
  1324. package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +0 -50
  1325. package/scss/v2/theme/theme-base/components/data/_paginator.scss +0 -92
  1326. package/scss/v2/theme/theme-base/components/data/_picklist.scss +0 -114
  1327. package/scss/v2/theme/theme-base/components/data/_timeline.scss +0 -35
  1328. package/scss/v2/theme/theme-base/components/data/_tree.scss +0 -150
  1329. package/scss/v2/theme/theme-base/components/data/_treetable.scss +0 -255
  1330. package/scss/v2/theme/theme-base/components/data/_virtualscroller.scss +0 -28
  1331. package/scss/v2/theme/theme-base/components/file/_fileupload.scss +0 -64
  1332. package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +0 -136
  1333. package/scss/v2/theme/theme-base/components/input/_calendar.scss +0 -267
  1334. package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +0 -135
  1335. package/scss/v2/theme/theme-base/components/input/_checkbox.scss +0 -94
  1336. package/scss/v2/theme/theme-base/components/input/_chips.scss +0 -65
  1337. package/scss/v2/theme/theme-base/components/input/_colorpicker.scss +0 -19
  1338. package/scss/v2/theme/theme-base/components/input/_dropdown.scss +0 -151
  1339. package/scss/v2/theme/theme-base/components/input/_editor.scss +0 -122
  1340. package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +0 -74
  1341. package/scss/v2/theme/theme-base/components/input/_inputmask.scss +0 -16
  1342. package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +0 -28
  1343. package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +0 -60
  1344. package/scss/v2/theme/theme-base/components/input/_inputtext.scss +0 -100
  1345. package/scss/v2/theme/theme-base/components/input/_listbox.scss +0 -97
  1346. package/scss/v2/theme/theme-base/components/input/_multiselect.scss +0 -177
  1347. package/scss/v2/theme/theme-base/components/input/_password.scss +0 -52
  1348. package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +0 -78
  1349. package/scss/v2/theme/theme-base/components/input/_rating.scss +0 -60
  1350. package/scss/v2/theme/theme-base/components/input/_selectbutton.scss +0 -50
  1351. package/scss/v2/theme/theme-base/components/input/_slider.scss +0 -71
  1352. package/scss/v2/theme/theme-base/components/input/_togglebutton.scss +0 -48
  1353. package/scss/v2/theme/theme-base/components/input/_treeselect.scss +0 -139
  1354. package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +0 -42
  1355. package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +0 -39
  1356. package/scss/v2/theme/theme-base/components/menu/_dock.scss +0 -95
  1357. package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +0 -55
  1358. package/scss/v2/theme/theme-base/components/menu/_menu.scss +0 -37
  1359. package/scss/v2/theme/theme-base/components/menu/_menubar.scss +0 -140
  1360. package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +0 -153
  1361. package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +0 -59
  1362. package/scss/v2/theme/theme-base/components/menu/_steps.scss +0 -56
  1363. package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +0 -73
  1364. package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +0 -43
  1365. package/scss/v2/theme/theme-base/components/messages/_inlinemessage.scss +0 -69
  1366. package/scss/v2/theme/theme-base/components/messages/_message.scss +0 -107
  1367. package/scss/v2/theme/theme-base/components/messages/_toast.scss +0 -99
  1368. package/scss/v2/theme/theme-base/components/misc/_avatar.scss +0 -30
  1369. package/scss/v2/theme/theme-base/components/misc/_badge.scss +0 -48
  1370. package/scss/v2/theme/theme-base/components/misc/_blockui.scss +0 -0
  1371. package/scss/v2/theme/theme-base/components/misc/_chip.scss +0 -42
  1372. package/scss/v2/theme/theme-base/components/misc/_inplace.scss +0 -16
  1373. package/scss/v2/theme/theme-base/components/misc/_progressbar.scss +0 -17
  1374. package/scss/v2/theme/theme-base/components/misc/_scrolltop.scss +0 -25
  1375. package/scss/v2/theme/theme-base/components/misc/_skeleton.scss +0 -8
  1376. package/scss/v2/theme/theme-base/components/misc/_tag.scss +0 -40
  1377. package/scss/v2/theme/theme-base/components/misc/_terminal.scss +0 -12
  1378. package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +0 -155
  1379. package/scss/v2/theme/theme-base/components/multimedia/_image.scss +0 -49
  1380. package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +0 -70
  1381. package/scss/v2/theme/theme-base/components/overlay/_dialog.scss +0 -69
  1382. package/scss/v2/theme/theme-base/components/overlay/_overlaypanel.scss +0 -64
  1383. package/scss/v2/theme/theme-base/components/overlay/_sidebar.scss +0 -27
  1384. package/scss/v2/theme/theme-base/components/overlay/_tooltip.scss +0 -33
  1385. package/scss/v2/theme/theme-base/components/panel/_accordion.scss +0 -119
  1386. package/scss/v2/theme/theme-base/components/panel/_card.scss +0 -30
  1387. package/scss/v2/theme/theme-base/components/panel/_divider.scss +0 -31
  1388. package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +0 -47
  1389. package/scss/v2/theme/theme-base/components/panel/_panel.scss +0 -63
  1390. package/scss/v2/theme/theme-base/components/panel/_scrollpanel.scss +0 -6
  1391. package/scss/v2/theme/theme-base/components/panel/_splitter.scss +0 -19
  1392. package/scss/v2/theme/theme-base/components/panel/_tabview.scss +0 -82
  1393. package/scss/v2/theme/theme-base/components/panel/_toolbar.scss +0 -11
  1394. package/scss/v2/theme/theme-base/mng/_mng_mixins.scss +0 -69
  1395. package/scss/v2/theme/theme-base/mng/_mng_theme_autocomplete.scss +0 -34
  1396. package/scss/v2/theme/theme-base/mng/_mng_theme_button.scss +0 -68
  1397. package/scss/v2/theme/theme-base/mng/_mng_theme_datatable.scss +0 -153
  1398. package/scss/v2/theme/theme-base/mng/_mng_theme_datepicker.scss +0 -21
  1399. package/scss/v2/theme/theme-base/mng/_mng_theme_dialog.scss +0 -206
  1400. package/scss/v2/theme/theme-base/mng/_mng_theme_dropdown.scss +0 -32
  1401. package/scss/v2/theme/theme-base/mng/_mng_theme_fileupload.scss +0 -24
  1402. package/scss/v2/theme/theme-base/mng/_mng_theme_forms.scss +0 -66
  1403. package/scss/v2/theme/theme-base/mng/_mng_theme_image.scss +0 -27
  1404. package/scss/v2/theme/theme-base/mng/_mng_theme_input.scss +0 -31
  1405. package/scss/v2/theme/theme-base/mng/_mng_theme_menu.scss +0 -5
  1406. package/scss/v2/theme/theme-base/mng/_mng_theme_multiselect.scss +0 -20
  1407. package/scss/v2/theme/theme-base/mng/_mng_theme_styles.scss +0 -17
  1408. package/scss/v2/theme/theme-base/mng/_mng_theme_tableview.scss +0 -97
  1409. package/scss/v2/theme/theme-base/mng/_mng_theme_tabview.scss +0 -11
  1410. package/scss/v2/theme/theme-base/mng/_mng_theme_toast.scss +0 -3
  1411. package/scss/v2/theme/theme-base/mng/_mng_theme_toolbar.scss +0 -5
  1412. package/scss/v2/theme/theme-base/mng/_mng_variables.scss +0 -15
  1413. package/scss/v2/theme/theme-dark/_extensions.scss +0 -100
  1414. package/scss/v2/theme/theme-dark/_variables.scss +0 -940
  1415. package/scss/v2/theme/theme-dark/blue/theme.scss +0 -14
  1416. package/scss/v2/theme/theme-light/_extensions.scss +0 -100
  1417. package/scss/v2/theme/theme-light/_variables.scss +0 -936
  1418. package/scss/v2/theme/theme-light/blue/theme.scss +0 -14
  1419. /package/{lib → core}/components/notification/notification-wrapper.component.d.ts +0 -0
  1420. /package/{lib/models → core/data-list}/data-list.model.d.ts +0 -0
  1421. /package/{lib/models → core/data-list}/filter-match.model.d.ts +0 -0
  1422. /package/{lib/models/class.model.d.ts → core/models/class-attribute.model.d.ts} +0 -0
  1423. /package/{lib → core}/models/version.model.d.ts +0 -0
  1424. /package/{lib/types/type.decorator.d.ts → core/reflect/type-enum-decorator.d.ts} +0 -0
  1425. /package/{lib/descriptors/types/filter.type.d.ts → filter/models/filter.model.d.ts} +0 -0
  1426. /package/{lib/descriptors/types/trim.type.d.ts → form/api/models/trim.model.d.ts} +0 -0
  1427. /package/{assets/i18n → i18n}/en.json +0 -0
  1428. /package/{assets/i18n → i18n}/sl.json +0 -0
  1429. /package/{lib/descriptors/table → table/api/descriptors}/sort.descriptor.d.ts +0 -0
  1430. /package/{lib/descriptors/types/column.type.d.ts → table/api/models/column.model.d.ts} +0 -0
  1431. /package/{lib → tableview/action}/models/can-component-deactivate.model.d.ts +0 -0
  1432. /package/{lib/services/action → tableview/action/services/providers}/provide-action-executor.d.ts +0 -0
  1433. /package/{lib/services/view → tableview/action/services/providers}/provide-view-container.d.ts +0 -0
  1434. /package/{lib/components → tableview/api}/action/models/tableview-action-default-categories.model.d.ts +0 -0
  1435. /package/{lib/components/form → tableview/api/editor}/models/form-editor.interface.d.ts +0 -0
  1436. /package/{lib → tableview/api/editor}/models/radio.model.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons.mjs","sources":["../../src/lib/descriptors/types/action.type.ts","../../src/lib/descriptors/types/column.type.ts","../../src/lib/descriptors/types/editor.type.ts","../../src/lib/descriptors/types/field.type.ts","../../src/lib/descriptors/types/filter.type.ts","../../src/lib/descriptors/types/table.type.ts","../../src/lib/services/action-error-mapper.service.ts","../../src/lib/models/error.model.ts","../../src/lib/models/filter-match.model.ts","../../src/lib/models/log.model.ts","../../src/lib/models/common-init-event-enum.model.ts","../../src/lib/utils/date.util.ts","../../src/lib/utils/data-list-params.util.ts","../../src/lib/components/form/models/form-editor.event.ts","../../src/lib/registry/type.registry.ts","../../src/lib/utils/tableview.util.ts","../../src/lib/descriptors/model/enum.descriptor.ts","../../src/lib/descriptors/model/model.descriptor.ts","../../src/lib/descriptors/model/type.descriptor.ts","../../src/lib/styles/models/style-level.enum.ts","../../src/lib/styles/models/style-size.enum.ts","../../src/lib/styles/styles.util.ts","../../src/lib/styles/button-style.builder.ts","../../src/lib/descriptors/editor/field-validation.descriptor.ts","../../src/lib/descriptors/editor/field-base.descriptor.ts","../../src/lib/descriptors/editor/field-action.descriptor.ts","../../src/lib/descriptors/editor/internal/editor.model.ts","../../src/lib/descriptors/editor/field-group.descriptor.ts","../../src/lib/data-providers/base.data-provider.ts","../../src/lib/data-providers/editor.data-provider.ts","../../src/lib/data-providers/lookup.data-provider.ts","../../src/lib/helpers/coercion.ts","../../src/lib/data-providers/table.data-provider.ts","../../src/lib/data-providers/tableview.data-provider.ts","../../src/lib/descriptors/editor/field-lookup.descriptor.ts","../../src/lib/descriptors/editor/field-many.descriptor.ts","../../src/lib/validators/field.validator.ts","../../src/lib/descriptors/editor/field.descriptor.ts","../../src/lib/descriptors/editor/editor.descriptor.ts","../../src/lib/descriptors/table/column.descriptor.ts","../../src/lib/descriptors/table/sort.descriptor.ts","../../src/lib/descriptors/filter/filter.descriptor.ts","../../src/lib/descriptors/filter/filter-lookup.descriptor.ts","../../src/lib/descriptors/table/table.descriptor.ts","../../src/lib/descriptors/tableview/tableview.descriptor.ts","../../src/lib/utils/editor-formly.util.ts","../../src/lib/utils/enum.util.ts","../../src/lib/utils/decorator-metadata.util.ts","../../src/lib/utils/object.util.ts","../../src/lib/utils/string.util.ts","../../src/lib/utils/error.util.ts","../../src/lib/utils/i18n.util.ts","../../src/lib/utils/model.util.ts","../../src/lib/utils/notification.util.ts","../../src/lib/pipes/boolean.pipe.ts","../../src/lib/pipes/enum.pipe.ts","../../src/lib/pipes/json-path.pipe.ts","../../src/lib/pipes/enumerate.pipe.ts","../../src/lib/pipes/enumerate-async.pipe.ts","../../src/lib/pipes/i18n-property.pipe.ts","../../src/lib/pipes/parametrize.pipe.ts","../../src/lib/pipes/getter.pipe.ts","../../src/lib/pipes/template.pipe.ts","../../src/lib/pipes/class-map.pipe.ts","../../src/lib/pipes/locale-default-row-class.pipe.ts","../../src/lib/utils/export.util.ts","../../src/lib/utils/file.util.ts","../../src/lib/services/configuration.service.ts","../../src/lib/services/logger.service.ts","../../src/lib/services/tokens/browser-storage.token.ts","../../src/lib/services/tokens/commons-init.token.ts","../../src/lib/services/tokens/default-setting.token.ts","../../src/lib/services/tokens/log-publisher.token.ts","../../src/lib/services/tokens/module-config.token.ts","../../src/lib/services/commons.service.ts","../../src/lib/helpers/data-provider-executors.ts","../../src/lib/services/data-provider-executor.service.ts","../../src/lib/services/navigation.service.ts","../../src/lib/services/router.service.ts","../../src/lib/services/version.service.ts","../../src/lib/services/mng-localstorage-config.service.ts","../../src/lib/services/log-publisher-console.service.ts","../../src/lib/services/commons-init.service.ts","../../src/lib/components/action/models/action-execution.model.ts","../../src/lib/components/action/models/tableview-action-default-categories.model.ts","../../src/lib/descriptors/action/action-button.descriptor.ts","../../src/lib/descriptors/action/action-confirmation.descriptor.ts","../../src/lib/descriptors/action/action.descriptor.ts","../../src/lib/descriptors/action/action-editor.descriptor.ts","../../src/lib/descriptors/action/action-link.descriptor.ts","../../src/lib/directives/component.directive.ts","../../src/lib/directives/dialog-keydown-handler.directive.ts","../../src/lib/directives/input-trim.directive.ts","../../src/lib/directives/template.directive.ts","../../src/lib/security/model/authorization.type.ts","../../src/lib/security/model/permissions.model.ts","../../src/lib/security/authorization.util.ts","../../src/lib/security/authorization.service.ts","../../src/lib/security/authorization.guard.ts","../../src/lib/services/view/view-container.service.ts","../../src/lib/services/view/provide-view-container.ts","../../src/lib/services/action/action-executor.service.ts","../../src/lib/services/action/root-action-executor.service.ts","../../src/lib/services/action/component-action-executor.service.ts","../../src/lib/services/action/provide-action-executor.ts","../../src/lib/components/action/action.component.ts","../../src/lib/components/action/action.component.html","../../src/lib/components/action/route/action-route.component.ts","../../src/lib/components/action/route/action-route.component.html","../../src/lib/components/form/editor/form-editor.component.ts","../../src/lib/components/form/editor/form-editor.component.html","../../src/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.html","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../src/lib/components/form/autocomplete/autocomplete.component.ts","../../src/lib/components/form/autocomplete/autocomplete.component.html","../../src/lib/components/form/dropdown/dropdown.component.ts","../../src/lib/components/form/dropdown/dropdown.component.html","../../src/lib/components/form/date-range/date-range.component.ts","../../src/lib/components/form/date-range/date-range.component.html","../../src/lib/components/action/editor/injector-context/action-editor-injector-context.component.ts","../../src/lib/components/action/editor/injector-context/action-editor-injector-context.component.html","../../src/lib/components/action/editor/action-editor.component.ts","../../src/lib/components/action/editor/action-editor.component.html","../../src/lib/components/table/column-filter-full/column-filter-full.component.ts","../../src/lib/components/table/column-filter-full/column-filter-full.component.html","../../src/lib/components/table/column-value/column-value.component.ts","../../src/lib/components/table/column-value/column-value.component.html","../../src/lib/components/table/models/table.event.ts","../../src/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.ts","../../src/lib/components/table/table.component.ts","../../src/lib/components/table/table.component.html","../../src/lib/components/action/table/action-table.component.ts","../../src/lib/components/action/table/action-table.component.html","../../src/lib/components/action/localization/data-language-dropdown.component.ts","../../src/lib/components/action/localization/data-language-dropdown.component.html","../../src/lib/error/error.handler.ts","../../src/lib/services/internal/commons-init.provider.ts","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.ts","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.html","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.ts","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.html","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../src/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.ts","../../src/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.html","../../src/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.ts","../../src/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.ts","../../src/lib/components/form/formly/formly.config.ts","../../src/lib/services/providers/formly-config.provider.ts","../../src/lib/provide.ts","../../src/lib/components/layout/services/main-layout.component.service.ts","../../src/lib/components/layout/breadcrumb.component.ts","../../src/lib/components/layout/breadcrumb.component.html","../../src/lib/components/layout/footer.component.ts","../../src/lib/components/layout/footer.component.html","../../src/lib/components/notification/notification-wrapper.component.ts","../../src/lib/components/notification/notification-wrapper.component.html","../../src/lib/utils/route.util.ts","../../src/lib/components/layout/menu-item.component.ts","../../src/lib/components/layout/menu-item.component.html","../../src/lib/components/layout/version.component.ts","../../src/lib/components/layout/version.component.html","../../src/lib/components/layout/menu.component.ts","../../src/lib/components/layout/menu.component.html","../../src/lib/components/layout/topbar-user.component.ts","../../src/lib/components/layout/topbar-user.component.html","../../src/lib/components/layout/topbar.component.ts","../../src/lib/components/layout/topbar.component.html","../../src/lib/components/layout/main-layout.component.ts","../../src/lib/components/layout/main-layout.component.html","../../src/lib/components/layoutV2/breadcrumb.component.ts","../../src/lib/components/layoutV2/breadcrumb.component.html","../../src/lib/components/layoutV2/version.component.ts","../../src/lib/components/layoutV2/version.component.html","../../src/lib/components/layoutV2/footer.component.ts","../../src/lib/components/layoutV2/footer.component.html","../../src/lib/components/layoutV2/services/main-layout.component.service.ts","../../src/lib/components/layoutV2/services/menu.service.ts","../../src/lib/components/layoutV2/menu-item.component.ts","../../src/lib/components/layoutV2/menu-item.component.html","../../src/lib/components/layoutV2/menu.component.ts","../../src/lib/components/layoutV2/menu.component.html","../../src/lib/components/layoutV2/sidebar.component.ts","../../src/lib/components/layoutV2/sidebar.component.html","../../src/lib/components/layoutV2/topbar-user.component.ts","../../src/lib/components/layoutV2/topbar-user.component.html","../../src/lib/components/layoutV2/topbar.component.ts","../../src/lib/components/layoutV2/topbar.component.html","../../src/lib/components/layoutV2/main-layout.component.ts","../../src/lib/components/layoutV2/main-layout.component.html","../../src/lib/components/tableview/actions/tableview-default-actions.ts","../../src/lib/components/tableview/builders/tableview-builder.ts","../../src/lib/components/tableview/tableview.component.ts","../../src/lib/components/tableview/tableview.component.html","../../src/lib/components/tableview/route/tableview-route.component.ts","../../src/lib/components/tableview/route/tableview-route.component.html","../../src/lib/components/tableview/helpers/tableview-create.ts","../../src/lib/components/pages/error/error.page.component.ts","../../src/lib/components/pages/error/error.page.component.html","../../src/lib/components/pages/not-found/not-found.page.component.ts","../../src/lib/components/pages/not-found/not-found.page.component.html","../../src/lib/router/route-builder.ts","../../src/lib/router/routes-builder.ts","../../src/lib/guards/unsaved-changes.guard.ts","../../src/lib/router/tableview-route-builder.ts","../../src/lib/types/type.decorator.ts","../../src/index.ts","../../src/mediusinc-mng-commons.ts"],"sourcesContent":["export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\n}\n\nexport enum ActionActivationTriggerEnum {\n OnClick, // action is triggered for activation on click\n OnRoute // action is triggered for activation by route url\n}\n\nexport enum ActionTypeEnum {\n Direct, // action is directly activated and executed\n Editor // editor providing middle step for activation\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","export enum ColumnTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Custom = 'CUSTOM'\n}\n\nexport enum ColumnDisplayTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Currency = 'CURRENCY',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Component = 'COMPONENT',\n Html = 'HTML'\n}\n","export enum TableviewEditorTypeEnum {\n None,\n Details,\n Edit,\n Add\n}\n","export enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n ImageFile,\n ImageUrl,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog,\n Custom\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Fieldset,\n Logical\n}\n","export enum FilterTypeEnum {\n String,\n Number,\n Boolean,\n Date,\n Lookup,\n LookupEnum\n}\n\nexport enum FilterLookupTypeEnum {\n Dropdown,\n Autocomplete\n}\n","export enum TablePaginationModeEnum {\n Pagination,\n InfiniteScroll,\n None\n}\n\nexport enum TableSizeEnum {\n Small,\n Normal,\n Large\n}\n\n/**\n * EXCLUDE default, all columns has sort and filter on by default, developer EXCLUDES properties from sort/filter\n * INCLUDE_ONLY only selected columns have sort/filter, developers INCLUDES properties\n */\nexport enum TableDynamicColumnsModeEnum {\n EXCLUDE,\n INCLUDE_ONLY\n}\n","import {IMngError} from '../models';\n\n/**\n * Service for transforming errors in action execution.\n * Can be used to transform errors to Commons MngError interface for correct error message display.\n */\nexport abstract class MngActionErrorMapperService {\n /**\n * Can be used to enrich data from error and make it more \"stable\". Most use cases cover extracting message or message code of an\n * error out of http response body/headers.\n *\n * @param error Original error (cause).\n * @param mngError Commons mng error that wraps original error.\n */\n abstract toMngError(error?: any, mngError?: IMngError): IMngError;\n}\n\nexport class DefaultActionMngErrorMapperService extends MngActionErrorMapperService {\n toMngError(error?: any, mngError?: IMngError): IMngError {\n if (!mngError) {\n mngError = {\n type: 'MngActionError',\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error',\n cause: error\n };\n }\n\n return mngError;\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {ActionContext} from '../components/action/models';\n\nexport type MngErrorTypes = 'MngInternalError' | 'MngActionError' | 'MngHttpError';\n\n/**\n * Main use for mng error from action execution.\n * If http error is thrown, add it in cause.\n */\nexport interface IMngError extends Error {\n type: MngErrorTypes;\n messageCode?: number | string;\n message: string;\n details?: any;\n stack?: string;\n cause?: Error | unknown;\n}\n\nexport interface MngErrorBaseOptions {\n name?: string;\n messageCode?: number | string;\n details?: any;\n cause?: Error;\n stack?: string;\n location?: string;\n}\n\nexport abstract class AMngErrorBase extends Error implements IMngError {\n public abstract readonly type: MngErrorTypes;\n\n public readonly messageCode?: number | string;\n public readonly location?: string;\n public readonly details?: any;\n\n protected constructor(message: string, options?: MngErrorBaseOptions) {\n super(message);\n\n this.name = options?.name ?? 'MngError';\n this.messageCode = options?.messageCode;\n this.location = options?.location ?? window?.location?.href;\n this.cause = options?.cause;\n this.stack = options?.stack ?? (options?.cause ? options.cause.stack : new Error(message).stack);\n this.details = options?.details;\n }\n}\n\nexport class MngInternalError extends AMngErrorBase implements IMngError {\n public readonly type = 'MngInternalError';\n\n constructor(message: string, options?: MngErrorBaseOptions) {\n super(message, {\n name: 'MngInternalError',\n ...options\n });\n }\n}\n\nexport class MngHttpError extends AMngErrorBase implements IMngError {\n public readonly type = 'MngHttpError';\n\n public readonly httpError: HttpErrorResponse;\n\n constructor(message: string, httpError: HttpErrorResponse, options?: MngErrorBaseOptions) {\n super(message, {\n name: 'MngHttpError_' + httpError.url,\n cause: httpError,\n ...options\n });\n this.httpError = httpError;\n }\n}\n\nexport interface MngActionErrorOptions extends MngErrorBaseOptions {\n actionContext?: ActionContext<any, any>;\n httpError?: HttpErrorResponse;\n}\n\nexport class MngActionError extends AMngErrorBase implements IMngError {\n public readonly type = 'MngActionError';\n public readonly actionId: string;\n\n public readonly actionContext?: ActionContext<any, any>;\n public readonly httpError?: HttpErrorResponse;\n\n constructor(message: string, actionName: string, options?: MngActionErrorOptions) {\n super(message, {\n name: 'MngActionError_' + actionName,\n ...options\n });\n\n this.actionId = actionName;\n this.actionContext = options?.actionContext;\n this.httpError = options?.httpError;\n }\n}\n","export type FilterMatchModeType =\n | 'equals'\n | 'notEquals'\n | 'contains'\n | 'notContains'\n | 'in'\n | 'notIn'\n | 'startsWith'\n | 'endsWith'\n | 'lessThan'\n | 'lessThanOrEqualTo'\n | 'greaterThan'\n | 'greaterThanOrEqualTo'\n | 'between'\n | 'exists'\n | 'doesNotExist';\nexport type FilterMatchModeExtendedType = FilterMatchModeType | string;\n\nexport class FilterMatchMode {\n public static Equals: FilterMatchModeType = 'equals';\n public static EqualsAbbr = 'eq';\n\n public static NotEquals: FilterMatchModeType = 'notEquals';\n public static NotEqualsAbbr = 'ne';\n\n public static Contains: FilterMatchModeType = 'contains';\n public static ContainsAbbr = 'cn';\n\n public static NotContains: FilterMatchModeType = 'notContains';\n public static NotContainsAbbr = 'nc';\n\n public static In: FilterMatchModeType = 'in';\n public static InAbbr = 'in';\n\n public static NotIn: FilterMatchModeType = 'notIn';\n public static NotInAbbr = 'ni';\n\n public static StartsWith: FilterMatchModeType = 'startsWith';\n public static StartsWithAbbr = 'sw';\n\n public static EndsWith: FilterMatchModeType = 'endsWith';\n public static EndsWithAbbr = 'ew';\n\n public static LessThan: FilterMatchModeType = 'lessThan';\n public static LessThanAbbr = 'lt';\n\n public static LessThanOrEqualTo: FilterMatchModeType = 'lessThanOrEqualTo';\n public static LessThanOrEqualToAbbr = 'le';\n\n public static GreaterThan: FilterMatchModeType = 'greaterThan';\n public static GreaterThanAbbr = 'gt';\n\n public static GreaterThanOrEqualTo: FilterMatchModeType = 'greaterThanOrEqualTo';\n public static GreaterThanOrEqualToAbbr = 'ge';\n\n public static Between: FilterMatchModeType = 'between';\n public static BetweenAbbr = 'bt';\n\n public static Exists: FilterMatchModeType = 'exists';\n public static ExistsAbbr = 'ex';\n\n public static DoesNotExist: FilterMatchModeType = 'doesNotExist';\n public static DoesNotExistAbbr = 'nx';\n\n public static getAbbreviation(mode: string): string | null {\n switch (mode) {\n case FilterMatchMode.Equals:\n return FilterMatchMode.EqualsAbbr;\n case FilterMatchMode.NotEquals:\n return FilterMatchMode.NotEqualsAbbr;\n case FilterMatchMode.Contains:\n return FilterMatchMode.ContainsAbbr;\n case FilterMatchMode.NotContains:\n return FilterMatchMode.NotContainsAbbr;\n case FilterMatchMode.In:\n return FilterMatchMode.InAbbr;\n case FilterMatchMode.NotIn:\n return FilterMatchMode.NotInAbbr;\n case FilterMatchMode.StartsWith:\n return FilterMatchMode.StartsWithAbbr;\n case FilterMatchMode.EndsWith:\n return FilterMatchMode.EndsWithAbbr;\n case FilterMatchMode.LessThan:\n return FilterMatchMode.LessThanAbbr;\n case FilterMatchMode.LessThanOrEqualTo:\n return FilterMatchMode.LessThanOrEqualToAbbr;\n case FilterMatchMode.GreaterThan:\n return FilterMatchMode.GreaterThanAbbr;\n case FilterMatchMode.GreaterThanOrEqualTo:\n return FilterMatchMode.GreaterThanOrEqualToAbbr;\n case FilterMatchMode.Between:\n return FilterMatchMode.BetweenAbbr;\n case FilterMatchMode.Exists:\n return FilterMatchMode.ExistsAbbr;\n case FilterMatchMode.DoesNotExist:\n return FilterMatchMode.DoesNotExistAbbr;\n default:\n return null;\n }\n }\n\n public static fromAbbreviation(abbr: string): string | null {\n switch (abbr) {\n case FilterMatchMode.EqualsAbbr:\n return FilterMatchMode.Equals;\n case FilterMatchMode.NotEqualsAbbr:\n return FilterMatchMode.NotEquals;\n case FilterMatchMode.ContainsAbbr:\n return FilterMatchMode.Contains;\n case FilterMatchMode.NotContainsAbbr:\n return FilterMatchMode.NotContains;\n case FilterMatchMode.InAbbr:\n return FilterMatchMode.In;\n case FilterMatchMode.NotInAbbr:\n return FilterMatchMode.NotIn;\n case FilterMatchMode.StartsWithAbbr:\n return FilterMatchMode.StartsWith;\n case FilterMatchMode.EndsWithAbbr:\n return FilterMatchMode.EndsWith;\n case FilterMatchMode.LessThanAbbr:\n return FilterMatchMode.LessThan;\n case FilterMatchMode.LessThanOrEqualToAbbr:\n return FilterMatchMode.LessThanOrEqualTo;\n case FilterMatchMode.GreaterThanAbbr:\n return FilterMatchMode.GreaterThan;\n case FilterMatchMode.GreaterThanOrEqualToAbbr:\n return FilterMatchMode.GreaterThanOrEqualTo;\n case FilterMatchMode.BetweenAbbr:\n return FilterMatchMode.Between;\n case FilterMatchMode.ExistsAbbr:\n return FilterMatchMode.Exists;\n case FilterMatchMode.DoesNotExistAbbr:\n return FilterMatchMode.DoesNotExist;\n default:\n return null;\n }\n }\n}\n","export enum LogLevelEnum {\n Trace,\n Debug,\n Log,\n Info,\n Warning,\n Error\n}\n\nexport interface MngLogEntry {\n level: LogLevelEnum;\n message: string;\n messageDetails?: string;\n timestamp: Date;\n timestampFormatted?: string;\n category?: string;\n error?: Error;\n data?: any[];\n}\n\nexport interface MngLogConfig {\n level?: LogLevelEnum;\n timestampFormat?: string;\n category?: {\n [category: string]: {\n level?: LogLevelEnum;\n };\n };\n}\n\nexport interface IMngLoggerService {\n create(context: string): IMngLoggerService;\n trace(msgOrError: string | Error, ...data: any[]): void;\n debug(msgOrError: string | Error, ...data: any[]): void;\n log(msgOrError: string | Error, logLevel: LogLevelEnum, category: string | undefined, ...data: any[]): void;\n logEntry(logEntry: Partial<MngLogEntry>): void;\n info(msgOrError: string | Error, ...data: any[]): void;\n warn(msgOrError: string | Error, ...data: any[]): void;\n error(msgOrError: string | Error, ...data: any[]): void;\n}\n\nexport interface IMngLogPublisher {\n addEntry(entry: MngLogEntry): void;\n}\n","export enum MngCommonsInitEventEnum {\n CommonsInitStart,\n ConfigSourceModuleLoaded,\n ConfigSourceProjectEnvLoaded,\n ConfigSourceJsonAdded,\n ConfigSourceJsonLoaded,\n CommonsInitEnd,\n CommonsInitError\n}\n","export type toIsoStringTypeOptType = 'date' | 'date-time' | 'dateTime';\nexport type toIsoStringDateTimeOptsType = {utc?: boolean; noTimezone?: boolean; noMillis?: boolean};\n\nexport class DateUtil {\n private static readonly NG_PRIME_FORMAT_SUPPORTED = [/d{1,2}/g, /E{1,5}/g, /c{1,5}/g, /M{1,5}/g, /L{1,5}/g, /y{1,4}/g, /Y{1,4}/g];\n private static readonly NG_PRIME_FORMAT_OTHER = [\n /G{1,5}/g,\n /w{1,2}/g,\n /W/g,\n /a{1,5}/g,\n /B{1,5}/g,\n /b{1,5}/g,\n /h{1,2}/g,\n /H{1,2}/g,\n /m{1,2}/g,\n /s{1,2}/g,\n /S{1,3}/g,\n /z{1,4}/g,\n /Z{1,5}/g,\n /O{1,4}/g\n ];\n private static readonly NG_PRIME_FORMAT_MAP = {\n // days\n d: 'd',\n dd: 'dd',\n E: 'D',\n EE: 'D',\n EEE: 'D',\n EEEE: 'DD',\n EEEEE: 'D',\n EEEEEE: 'D',\n c: 'd',\n cc: 'dd',\n ccc: 'D',\n cccc: 'DD',\n ccccc: 'D',\n cccccc: 'D',\n // months\n M: 'm',\n MM: 'mm',\n MMM: 'M',\n MMMM: 'MM',\n MMMMM: 'M',\n L: 'm',\n LL: 'mm',\n LLL: 'M',\n LLLL: 'MM',\n LLLLL: 'M',\n // year\n y: 'y',\n yy: 'y',\n yyy: 'yy',\n yyyy: 'yy',\n Y: 'y',\n YY: 'y',\n YYY: 'yy',\n YYYY: 'yy'\n };\n\n private static padNumber(num: number, size = 2) {\n let str = String(num);\n while (str.length < size) {\n str = '0' + str;\n }\n return str;\n }\n\n public static toIsoString(value: string | number | Date, type?: 'date'): string;\n public static toIsoString(value: string | number | Date, type: 'date-time' | 'dateTime', dateTimeOpts?: toIsoStringDateTimeOptsType): string;\n public static toIsoString(value: undefined | null | unknown, type?: 'date'): null;\n public static toIsoString(value: undefined | null | unknown, type: 'date-time' | 'dateTime', dateTimeOpts?: toIsoStringDateTimeOptsType): null;\n public static toIsoString(value: unknown, type?: toIsoStringTypeOptType, dateTimeOpts?: toIsoStringDateTimeOptsType): string | null;\n public static toIsoString(value: unknown, type: toIsoStringTypeOptType = 'date-time', dateTimeOpts: toIsoStringDateTimeOptsType = {}): string | null {\n if (typeof value === 'string') {\n value = new Date(value);\n }\n if (typeof value === 'number') {\n value = new Date(value);\n }\n if (!(value instanceof Date)) {\n return null;\n }\n if (type === 'date') {\n // date only, no time part (and timezone, millis, utc does not matter ...)\n return value.getFullYear() + '-' + DateUtil.padNumber(value.getMonth() + 1) + '-' + DateUtil.padNumber(value.getDate());\n }\n if (dateTimeOpts.utc) {\n let str = value.toISOString();\n if (dateTimeOpts.noMillis) {\n const dotIdx = str.lastIndexOf('.');\n str = str.substring(0, dotIdx) + str.substring(dotIdx + 4, str.length);\n }\n if (dateTimeOpts.noTimezone) {\n str = str.substring(0, str.length - 1);\n }\n return str;\n } else {\n let base =\n value.getFullYear() +\n '-' +\n DateUtil.padNumber(value.getMonth() + 1) +\n '-' +\n DateUtil.padNumber(value.getDate()) +\n 'T' +\n DateUtil.padNumber(value.getHours()) +\n ':' +\n DateUtil.padNumber(value.getMinutes()) +\n ':' +\n DateUtil.padNumber(value.getSeconds());\n\n if (!dateTimeOpts.noMillis) {\n base += '.' + DateUtil.padNumber(value.getMilliseconds());\n }\n if (!dateTimeOpts.noTimezone) {\n const tzo = -value.getTimezoneOffset(),\n dif = tzo >= 0 ? '+' : '-';\n\n base = base + (dif + DateUtil.padNumber(Math.floor(Math.abs(tzo) / 60)) + ':' + DateUtil.padNumber(Math.abs(tzo) % 60));\n }\n\n return base;\n }\n }\n\n public static fromAngularToPrimeDateFormat(ngDateFormat: string): string {\n let primeDateFormat = ngDateFormat;\n for (const regex of DateUtil.NG_PRIME_FORMAT_OTHER) {\n primeDateFormat = primeDateFormat.replace(regex, ' ');\n }\n for (const regex of DateUtil.NG_PRIME_FORMAT_SUPPORTED) {\n const matches = [...primeDateFormat.matchAll(regex)].reverse();\n for (const match of matches) {\n if (match.index) {\n const matchStr = match[0];\n const replacement = DateUtil.NG_PRIME_FORMAT_MAP[matchStr as keyof object] ?? match[0];\n primeDateFormat = primeDateFormat.substring(0, match.index) + replacement + primeDateFormat.substring(match.index + matchStr.length);\n }\n }\n }\n primeDateFormat = primeDateFormat.replace(/\\s+\\W\\s+/g, ' ');\n primeDateFormat = primeDateFormat.replace(/\\s\\s+/g, ' ');\n\n return primeDateFormat.trim();\n }\n\n public static fromAngularDateFormatHasTime(ngDateFormat: string): boolean {\n return /[hHmsS]/.test(ngDateFormat);\n }\n\n public static fromAngularDateFormatHasSeconds(ngDateFormat: string): boolean {\n return /[sS]/.test(ngDateFormat);\n }\n}\n","import {Params} from '@angular/router';\n\nimport {TableLazyLoadEvent} from 'primeng/table';\n\nimport {DataListFilter, DataListFilterValueType, DataListFiltersType, DataListParams, FilterMatchMode, MngInternalError} from '../models';\nimport {DateUtil} from './date.util';\n\nexport class DataListParamsUtil {\n /**\n * Converts a TableLazyLoadEvent to DataListParams.\n *\n * @param {TableLazyLoadEvent} event - The event containing the data to convert.\n * @return {DataListParams} - The converted DataListParams object.\n */\n public static fromPrimeTableLoad(event: TableLazyLoadEvent): DataListParams {\n const params: DataListParams = {};\n\n if (event.first != null) {\n params.offset = event.first;\n }\n if (event.rows != null) {\n params.limit = event.rows;\n }\n\n if (typeof event.globalFilter === 'string') {\n params.search = event.globalFilter;\n } else if (Array.isArray(event.globalFilter) && event.globalFilter.length > 0) {\n params.search = event.globalFilter.join(',');\n }\n\n if (Array.isArray(event.multiSortMeta) && event.multiSortMeta.length > 0) {\n params.sort = event.multiSortMeta.map(m => ({property: m.field, ascending: m.order >= 0}));\n }\n\n if (event.filters) {\n params.filters = Object.keys(event.filters).reduce((acc, key) => {\n const filter: DataListFilter = {};\n const eventFilter = event.filters?.[key as keyof object];\n if (Array.isArray(eventFilter)) {\n filter.value = eventFilter[0].value;\n filter.matchMode = eventFilter[0].matchMode;\n } else if (eventFilter !== undefined) {\n filter.value = eventFilter.value;\n filter.matchMode = eventFilter.matchMode;\n }\n return {...acc, [key]: filter};\n }, {});\n }\n\n return params;\n }\n\n /**\n * Converts the given parameters to URL query parameters.\n * Sorts are formatted in Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListParams} params - The parameters to convert.\n * @param {DataListParams|null} defaults - The default parameters used if no matching property in params is available. Defaults to { limit: 25, offset: 0 } if not provided.\n * @returns {Params} - The URL query parameters object.\n */\n public static toUrlQueryParams(\n params: DataListParams<any, any>,\n defaults: DataListParams<any, any> | null = {\n limit: 25,\n offset: 0\n }\n ): Params {\n const urlParams: Params = {};\n\n if (params.limit && params.limit !== defaults?.limit) {\n urlParams['limit'] = params.limit;\n }\n if (params.offset && params.offset !== defaults?.offset) {\n urlParams['offset'] = params.offset;\n }\n if (params.search && params.search !== defaults?.search) {\n urlParams['q'] = params.search;\n }\n if (params.sort && Array.isArray(params.sort) && params.sort.length > 0) {\n if (\n defaults?.sort == null ||\n !Array.isArray(defaults.sort) ||\n defaults.sort.length === 0 ||\n params.sort.length !== defaults.sort.length ||\n defaults.sort.some((ds, idx) => ds.property !== params.sort![idx].property || (ds.ascending ?? true) !== (params.sort![idx].ascending ?? true))\n ) {\n urlParams['sort'] = DataListParamsUtil.sortToUrlQuery(params);\n }\n }\n if (params.filters) {\n Object.keys(params.filters).forEach(k => {\n const paramFilter = params.filters![k as keyof object];\n const defaultFilter = defaults?.filters?.[k as keyof object];\n if (\n defaultFilter &&\n ((Array.isArray(defaultFilter.value) &&\n Array.isArray(paramFilter.value) &&\n defaultFilter.value.length === paramFilter.value.length &&\n defaultFilter.value.every((v, idx) => {\n const value = (paramFilter.value as Array<DataListFilterValueType>)[idx];\n if (value instanceof Date && v instanceof Date) return value.getTime() === v.getTime();\n else return value === v;\n })) || // handle arrays\n defaultFilter.value === paramFilter.value) &&\n defaultFilter.matchMode === paramFilter.matchMode &&\n (defaultFilter.caseSensitive ?? false) === (paramFilter.caseSensitive ?? false)\n ) {\n return;\n }\n\n if (paramFilter.value == null && defaultFilter?.value == null) {\n return;\n }\n\n urlParams[k] = DataListParamsUtil.paramsFilterToUrlQuery(params, k, true);\n });\n }\n if (defaults?.filters) {\n // add other defaults\n const paramFilterKeys = params.filters ? Object.keys(params.filters) : [];\n Object.keys(defaults.filters)\n .filter(k => paramFilterKeys.indexOf(k) < 0)\n .forEach(k => {\n urlParams[k] = DataListParamsUtil.paramsFilterToUrlQuery(defaults, k);\n });\n }\n\n return urlParams;\n }\n\n /**\n * Merges the provided parameters with default values and returns the merged object.\n *\n * @param {DataListParams} params - The parameters to merge with defaults.\n * @param {DataListParams} defaults - The default values to merge with params (optional, default is { limit: 25, offset: 0 }).\n * @returns {DataListParams} - The merged parameters object.\n */\n public static mergeWithDefaults<Sorts = any, Filters extends keyof any = any>(\n params: DataListParams<Sorts, Filters>,\n defaults: DataListParams<Sorts, Filters> = {\n limit: 25,\n offset: 0\n }\n ): DataListParams<Sorts, Filters> {\n const merged: DataListParams<Sorts, Filters> = {\n limit: params.limit ?? defaults.limit,\n offset: params.offset ?? defaults.offset,\n search: params.search ?? defaults.search,\n sort: (params.sort ?? defaults.sort)?.map(s => ({...s}))\n };\n\n if (params.filters) {\n merged.filters = {} as DataListFiltersType<Filters>;\n Object.entries(params.filters).forEach(([key, value]) => (merged.filters![key as Filters] = {...(value as DataListFilter)}));\n }\n if (defaults.filters) {\n if (!merged.filters) merged.filters = {} as DataListFiltersType<Filters>;\n Object.entries(defaults.filters).forEach(([key, value]) => {\n if (merged.filters![key as Filters] === undefined) {\n merged.filters![key as Filters] = {...(value as DataListFilter)};\n }\n });\n }\n\n return merged;\n }\n\n /**\n * Converts an object of parameters to a URL query string for sorting.\n * Sorts are formatted in Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n *\n * @param {DataListParams} params - An optional object containing sort parameters.\n * @returns A string representing the URL query or undefined if no sort parameters are provided.\n */\n public static sortToUrlQuery(params?: DataListParams<any, any>): string | undefined {\n return params && Array.isArray(params.sort)\n ? params.sort.map(s => `${s.ascending === true || s.ascending === undefined ? 'asc' : 'desc'}:${String(s.property)}`).join(',')\n : undefined;\n }\n\n /**\n * Converts a specific filter parameter (by key) from DataListParams object to a URL query string.\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListParams<any, Filters> | undefined} params - The DataListParams object containing the filters.\n * @param {Filters} key - The key of the filter to convert.\n * @param {boolean} [allowNull=false] - Indicates whether to allow null values in the query string.\n * @return {string | undefined} - The URL query string representing the specified filter, or undefined if the filter is not found.\n */\n public static paramsFilterToUrlQuery<Filters extends keyof any = string>(\n params: DataListParams<any, Filters> | undefined,\n key: Filters,\n allowNull = false\n ): string | undefined {\n const paramFilter = params?.filters?.[key];\n return DataListParamsUtil.filterToUrlQuery(paramFilter, allowNull);\n }\n\n /**\n * Converts a filter to a URL query string.\n * Filter keys are \"flattened\" in the new object, values are formatted in Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {DataListFilter} paramFilter - The filter object to be converted.\n * @param {boolean} [allowNull=false] - Indicates whether to allow null values in the filter.\n * @returns {string|undefined} - The filter converted to a URL query string, or undefined if no filter is provided or the filter has empty or invalid values.\n * @throws {MngInternalError} - If the filter has invalid values.\n */\n public static filterToUrlQuery(paramFilter?: DataListFilter, allowNull = false): string | undefined {\n const filterValueAsArray = Array.isArray(paramFilter?.value) ? paramFilter!.value.filter(v => v !== undefined && (allowNull || v !== null)) : undefined;\n if (\n paramFilter === undefined ||\n (!allowNull && paramFilter.value == null) ||\n (typeof paramFilter.value === 'string' && paramFilter.value.length === 0) ||\n (Array.isArray(filterValueAsArray) && filterValueAsArray.length === 0)\n ) {\n // no need to include filters for empty values\n return undefined;\n }\n\n const matchMode = paramFilter.matchMode ?? FilterMatchMode.Equals;\n\n if (matchMode === FilterMatchMode.Between && !(Array.isArray(filterValueAsArray) && filterValueAsArray.length === 2)) {\n throw new MngInternalError(`Filter match mode between requires exactly 2 values: ${paramFilter.value}`);\n }\n\n if ((matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn) && (!Array.isArray(filterValueAsArray) || filterValueAsArray.length === 0)) {\n throw new MngInternalError(`Filter match mode ${matchMode} requires non-empty array: ${paramFilter.value}`);\n }\n\n if (([FilterMatchMode.In, FilterMatchMode.NotIn, FilterMatchMode.Between] as string[]).indexOf(matchMode) === -1 && Array.isArray(filterValueAsArray)) {\n throw new MngInternalError(`Filter match mode ${matchMode} must not be array: ${paramFilter.value}`);\n }\n\n const noVal = paramFilter.matchMode === FilterMatchMode.Exists || paramFilter.matchMode === FilterMatchMode.DoesNotExist;\n const urlValuePart = noVal ? '' : `:${DataListParamsUtil.filterValueToUrlParam(filterValueAsArray ?? paramFilter.value, allowNull)}`;\n\n return `${paramFilter.caseSensitive ? 'cs:' : paramFilter.caseSensitive === false ? 'ci:' : ''}${FilterMatchMode.getAbbreviation(matchMode) ?? matchMode}${urlValuePart}`;\n }\n\n /**\n * Converts URL query parameters to a DataListParams object.\n * Sorts are formatted from Medius data API sort query language: `asc:prop1,desc:prop2`, ...\n * Filter keys are all keys in Params object that are not matched elsewhere, values are formatted from Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...\n *\n * @param {Params} urlParams - The URL query parameters.\n * @return {DataListParams} - The converted DataListParams object.\n */\n public static fromUrlQueryParams(urlParams: Params): DataListParams {\n const params: DataListParams = {};\n\n Object.entries(urlParams).forEach(([urlParamKey, urlParamValue]) => {\n if (urlParamKey === 'limit') {\n params.limit = +urlParamValue;\n if (isNaN(params.limit) || params.limit < 0) {\n delete params.limit;\n }\n } else if (urlParamKey === 'offset') {\n params.offset = +urlParamValue;\n if (isNaN(params.offset) || params.offset < 0) {\n delete params.offset;\n }\n } else if (urlParamKey === 'q') {\n params.search = urlParamValue;\n } else if (urlParamKey === 'sort') {\n if (typeof urlParamValue === 'string') {\n params.sort = urlParamValue.split(',').map(s => {\n const [direction, property] = s.split(':');\n return {property: (property ?? direction) as keyof object, ascending: direction !== 'desc'};\n });\n } else {\n throw new MngInternalError(`String is expected as value for '${urlParamKey}' when converting from urlParams`);\n }\n } else if (typeof urlParamValue === 'string') {\n if (urlParamValue.length === 0) {\n // empty string should be ignored\n return;\n }\n\n const filterParts = urlParamValue.split(':');\n let partIdx = 0;\n\n // case sensitive\n let caseSensitive: boolean | undefined = undefined;\n if (filterParts[partIdx] === 'cs' || filterParts[partIdx] === 'ci') {\n caseSensitive = filterParts[partIdx++] === 'cs';\n }\n\n // match mode\n const matchMode = filterParts[partIdx] ? FilterMatchMode.fromAbbreviation(filterParts[partIdx]) ?? filterParts[partIdx] : FilterMatchMode.Equals;\n partIdx++;\n\n const noVal = matchMode === FilterMatchMode.Exists || matchMode === FilterMatchMode.DoesNotExist;\n\n // value\n let value: string | string[] | undefined | null = undefined;\n if (!noVal) {\n if (filterParts.length < 2) {\n return;\n }\n\n if (partIdx === filterParts.length - 1) {\n value = filterParts[partIdx];\n } else if (partIdx < filterParts.length) {\n // array that should not be array, so join back together\n value = filterParts.slice(partIdx, filterParts.length).join(':');\n }\n\n if (value === undefined && matchMode !== FilterMatchMode.Exists && matchMode !== FilterMatchMode.DoesNotExist) {\n // if value undefined and match mode expects value, then skip\n return;\n }\n\n if (value === 'null') {\n value = null;\n }\n\n if ((matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn || matchMode === FilterMatchMode.Between) && typeof value === 'string') {\n let arrayVal: string[] = [];\n // these match modes expect array\n if (value.indexOf('\"') >= 0) {\n const tokens: string[] = [];\n let currentToken = '';\n let explicitQuotes = false; //token is quoted, e.g. in:1,2,\"22\"\"\",\",123\"\"\"\n let quotesOpened = false; //token has started processing\n let quotesExplicitlyClosed = false; //token processing has finished, after single \" in quoted mode, or before , in not quoted\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n\n // reset the tokenizer when seeing the token separator\n // only if either:\n // the quotes have not been opened yet (when there are no characters between separators),\n // the token has been explicitly closed (when we actually have explicit opening i.e., quotes as the first character)\n // or we have implicit quotes (i.e., quotes are not the first character)\n if (c === ',' && (!quotesOpened || quotesExplicitlyClosed || !explicitQuotes)) {\n tokens.push(currentToken);\n currentToken = '';\n quotesOpened = false;\n quotesExplicitlyClosed = false;\n explicitQuotes = false;\n } else if (c == '\"') {\n // escaped double-quotes\n if (explicitQuotes && i + 1 < value.length && value[i + 1] === '\"') {\n currentToken += c; // Append one double-quote to the current token\n i++; // Skip the next double-quote\n }\n // we encounter quotes again after they were the first character => we close the token\n else if (explicitQuotes) {\n quotesExplicitlyClosed = true;\n }\n // implicit quotes\n else if (quotesOpened) {\n currentToken += c;\n }\n // quotes are the first character => explicitly open the token\n else {\n currentToken = '';\n quotesOpened = true;\n explicitQuotes = true;\n }\n } else {\n if (quotesExplicitlyClosed) {\n return;\n }\n\n quotesOpened = true;\n currentToken += c;\n }\n }\n\n if (quotesOpened && !quotesExplicitlyClosed && explicitQuotes) {\n return;\n }\n\n // Append the last token after the loop ends\n tokens.push(currentToken.toString());\n\n arrayVal = tokens;\n } else {\n arrayVal = value.split(',');\n }\n\n if (matchMode === FilterMatchMode.Between && arrayVal.length !== 2) {\n return;\n }\n\n value = arrayVal;\n }\n\n if ((typeof value === 'string' && value.length === 0) || (Array.isArray(value) && value!.length === 0)) {\n // filter with empty value is to be ignored\n return;\n }\n } else {\n caseSensitive = undefined;\n }\n\n if (!params.filters) {\n params.filters = {};\n }\n\n params.filters[urlParamKey as keyof object] = {value: value, matchMode: matchMode, caseSensitive: caseSensitive};\n }\n });\n\n return params;\n }\n\n /**\n * Makes a copy of the given DataListParams object.\n *\n * @param {DataListParams<Sorts, Filters>} params - The DataListParams object to be copied.\n * @returns {DataListParams<Sorts, Filters>} - Returns a new copy of the DataListParams object.\n */\n public static copy<Sorts = string, Filters extends keyof any = string>(params: DataListParams<Sorts, Filters>): DataListParams<Sorts, Filters> {\n const copy: DataListParams<Sorts, Filters> = {\n offset: params.offset,\n limit: params.limit,\n search: params.search\n };\n\n if (params.sort) {\n copy.sort = params.sort?.map(s => ({...s}));\n }\n if (params.filters) {\n copy.filters = Object.entries(params.filters).reduce((acc, [key, value]) => {\n const filterValue = value as DataListFilter;\n return {\n ...acc,\n [key]: {\n ...filterValue,\n value: Array.isArray(filterValue.value) ? [...filterValue.value] : filterValue.value\n } as DataListFilter\n };\n }, {} as DataListFiltersType<Filters>);\n }\n\n return copy;\n }\n\n /**\n * Converts a value to a URL query param string representation.\n *\n * @param {unknown} value - The value to be converted.\n * @param {boolean} [allowNull=false] - Indicates whether null values are allowed.\n * @returns {string} The URL parameter representation of the value.\n * @throws {MngInternalError} If an undefined value is passed without allowNull set to true.\n * @throws {MngInternalError} If the value is an object (excluding Date).\n */\n public static filterValueToUrlParam(value: unknown, allowNull = false): string {\n if (value === null && allowNull) return 'null';\n if (value == null) throw new MngInternalError('Undefined value cannot be converted to url param.'); // this should not happen, should be filtered out earlier\n if (Array.isArray(value))\n return value\n .map(v => DataListParamsUtil.filterValueToUrlParam(v, allowNull))\n .map(v => (v.indexOf(',') >= 0 || v.indexOf('\"') >= 0 ? `\"${v.replaceAll('\"', '\"\"')}\"` : v))\n .join(',');\n if (typeof value === 'object') {\n if (value instanceof Date) return DateUtil.toIsoString(value, 'dateTime', {utc: true});\n else {\n throw new MngInternalError('Filter value cannot be object');\n }\n }\n return String(value);\n }\n}\n","import {Type} from '@angular/core';\n\nexport class MngFormEditorSubmitEvent<T> {\n public success = true;\n\n constructor(public readonly formItem: T) {}\n}\n\nexport enum MngFormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n Other = 'Other'\n}\n\nexport enum MngFormEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n Submit = 'Submit',\n Other = 'Other'\n}\n\nexport class MngFormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class MngFormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface MngFormFieldEventData<T, ET> {\n eventSubtype?: string;\n value?: T;\n formValue?: ET;\n [key: string]: any;\n}\n\nexport interface MngFieldEventData<ET> {\n eventSubtype?: string;\n value?: any; // direct value from form.valueChanges, disabled field values and setters are not included\n formValue?: () => ET; // function that returns calculated form value\n submitValid?: boolean; // true if form is valid\n submitValue?: ET; // value on submit\n [key: string]: any;\n}\n\nexport class MngFormFieldEvent<T, ET> {\n constructor(\n public readonly type: MngFormFieldEventTypeEnum,\n public readonly componentType: Type<any>,\n public readonly componentInstance: any,\n public readonly data: MngFormFieldEventData<T, ET> = {}\n ) {}\n}\n\nexport class MngFormEvent<ET> {\n constructor(\n public readonly type: MngFormEventTypeEnum,\n public readonly componentType: Type<any>,\n public readonly componentInstance: any,\n public readonly data: MngFieldEventData<ET> = {}\n ) {}\n}\n","import {ClassAttributeDef, LogLevelEnum, RegistryEnumMap, RegistryTypeMap} from '../models';\nimport {MngLoggerService} from '../services';\nimport {ClassType, EnumType} from '../types';\nimport {DecoratorMetadataUtil} from '../utils';\n\nexport class TypeRegistry {\n private static _instance: TypeRegistry = new TypeRegistry();\n private readonly _logCategory = 'TypeRegistry';\n private readonly _typeMap: RegistryTypeMap = {};\n private readonly _enumMap: RegistryEnumMap = {};\n\n public get typeMap() {\n return this._typeMap;\n }\n\n public get enumMap() {\n return this._enumMap;\n }\n\n /**\n * Only use one instance of object (out of Angular context)\n */\n public static get(): TypeRegistry {\n return TypeRegistry._instance;\n }\n\n public findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): ClassAttributeDef | null {\n const typeName = DecoratorMetadataUtil.findTypeName(type);\n return typeName ? this.findAttributeDefinition(typeName, attributeName) : null;\n }\n\n public findAttributeDefinition(typeName: string, attributeName: string): ClassAttributeDef | null {\n const attributeDefs = this.findAttributesDefinition(typeName);\n if (!attributeDefs) {\n return null;\n }\n for (const attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<ClassAttributeDef> | null {\n const typeName = DecoratorMetadataUtil.findTypeName(type);\n return typeName ? this.findAttributesDefinition(typeName) : null;\n }\n\n public findAttributesDefinition(typeName: string): Array<ClassAttributeDef> | null {\n const typeDef = this.findType(typeName);\n if (!typeDef || typeof typeDef.getAttributeTypeMap !== 'function') {\n return null;\n }\n return typeDef.getAttributeTypeMap() as Array<ClassAttributeDef>;\n }\n\n public findByClassType(type: ClassType<any>): any {\n const typeName = DecoratorMetadataUtil.findTypeName(type);\n return typeName ? this.findType(typeName) : null;\n }\n\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\n\n public findEnum(enumName: string): any {\n return this._enumMap[enumName];\n }\n\n public registerTypes(types: RegistryTypeMap) {\n for (const key in types) {\n this.registerType(types[key], key);\n }\n }\n\n public registerType(type: ClassType<any>, optTypeName?: string) {\n // try to find name from metadata\n let typeName: string | undefined;\n if (DecoratorMetadataUtil.typeNameExists(type)) {\n // defined name from optional type name\n typeName = DecoratorMetadataUtil.findTypeName(type) ?? undefined;\n } else if (optTypeName) {\n typeName = optTypeName;\n // register metadata\n DecoratorMetadataUtil.defineReflectTypeName(type, typeName);\n }\n\n if (!typeName) {\n // this._logger.debug(`WARNING: registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);\n MngLoggerService.get().log(\n `WARNING: registering type ${type} failed, because typeName could not be determined and optional name was not provided.`,\n LogLevelEnum.Debug,\n this._logCategory\n );\n return;\n }\n if (typeof this._typeMap[typeName] !== 'undefined') {\n // this._logger.debug(`WARNING: registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);\n MngLoggerService.get().log(\n `WARNING: registering type ${type} under key ${typeName} skipped, because type already exists for this key.`,\n LogLevelEnum.Debug,\n this._logCategory\n );\n } else {\n this._typeMap[typeName] = type;\n }\n }\n\n public registerEnums(enums: RegistryEnumMap) {\n for (const key in enums) {\n this.registerEnum(enums[key], key);\n }\n }\n\n public registerEnum(enumType: EnumType, enumName: string) {\n // try to find name from decorator\n DecoratorMetadataUtil.defineReflectEnumName(enumType, enumName);\n if (typeof this._enumMap[enumName] !== 'undefined') {\n MngLoggerService.get().log(`Registering enum ${enumName} skipped, because enum already exists.`, LogLevelEnum.Debug, this._logCategory);\n } else {\n this._enumMap[enumName] = enumType;\n }\n }\n}\n","import {ColumnDescriptor} from '../descriptors/table';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, FieldInputTypeEnum} from '../descriptors/types';\nimport {ClassAttributeDef, MngInternalError} from '../models';\nimport {TableviewAttributeDef} from '../models/tableview-attr.model';\nimport {TypeRegistry} from '../registry/type.registry';\nimport {ClassType, EnumType} from '../types';\n\nexport class TableviewUtil {\n private static _dateRegex = /\\d{4}-[01]\\d-[0-3]\\d/;\n private static _dateTimeRegex = /\\d{4}-[01]\\d-[0-3]\\dT([0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z?)|([0-2]\\d:[0-5]\\d:[0-5]\\d\\+[0-2]\\d:[0-5]\\d))/;\n\n /**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param type class type\n */\n public static getAttributeDefMap<T>(type: ClassType<T>): TableviewAttributeDef[] {\n return TableviewUtil.expandAttributeDefWithTableviewTypes(TypeRegistry.get().findAttributesDefinitionByClassType(type));\n }\n\n /**\n * expands AttributeDef to TableviewAttributeDef with defined input and column enum type\n * @param attributes open api specification model\n */\n public static expandAttributeDefWithTableviewTypes(attributes?: Array<ClassAttributeDef> | null): TableviewAttributeDef[] {\n if (!attributes) {\n throw new MngInternalError('AttributeDef is null, problem with TypeRegistry::findAttributesDefinitionByClassType?', {name: 'TableviewUtilsError'});\n }\n const typeRegistry = TypeRegistry.get();\n\n const tableviewAttributeDef: TableviewAttributeDef[] = [];\n\n for (const attribute of attributes) {\n const enumType = typeRegistry.findEnum(attribute.type);\n const columnType = enumType ? ColumnTypeEnum.Enum : TableviewUtil.toColumnType(attribute.type);\n tableviewAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n columnType: enumType ? ColumnTypeEnum.Enum : TableviewUtil.toColumnType(attribute.type),\n columnDisplayType: TableviewUtil.toColumnDisplayType(columnType, attribute.type),\n fieldType: TableviewUtil.toFieldInputType(attribute.type),\n enumType: typeRegistry.findEnum(attribute.type) as EnumType,\n classType: typeRegistry.findType(attribute.type) as ClassType<any>\n });\n }\n\n return tableviewAttributeDef;\n }\n\n /**\n * converts column to number or date on value based\n * @param column column to be transformed\n * @param value value to check if applicable\n */\n public static stringColumnConverter(column: ColumnDescriptor<any, any>, value: any): ColumnDescriptor<any, any> {\n if (typeof value === 'boolean') {\n return column.asBoolean();\n } else if (!isNaN(value) && typeof value === 'number') {\n return column.asNumber();\n } else if (this._dateRegex.test(value)) {\n if (this._dateTimeRegex.test(value)) {\n return column.asDate('dd. MMM yyyy HH:mm');\n }\n return column.asDate('dd. MMM yyyy');\n } else {\n return column;\n }\n }\n\n /**\n * converts string type to column type enum, default is string\n * @param propertyType\n */\n public static toColumnType(propertyType: string): ColumnTypeEnum {\n const typeRegistry = TypeRegistry.get();\n if (typeRegistry.findEnum(propertyType) as EnumType) {\n propertyType = 'enum';\n } else if (typeRegistry.findType(propertyType) as ClassType<any>) {\n propertyType = 'class';\n }\n\n switch (propertyType.toLowerCase()) {\n case 'number':\n case 'currency':\n return ColumnTypeEnum.Number;\n case 'boolean':\n return ColumnTypeEnum.Boolean;\n case 'date':\n return ColumnTypeEnum.Date;\n case 'enum':\n return ColumnTypeEnum.Enum;\n case 'custom':\n return ColumnTypeEnum.Custom;\n case 'class':\n return ColumnTypeEnum.String;\n case 'string':\n default:\n return ColumnTypeEnum.String;\n }\n }\n\n public static toColumnDisplayType(columnType: ColumnTypeEnum, propertyType: string): ColumnDisplayTypeEnum {\n switch (columnType) {\n case ColumnTypeEnum.Number:\n return propertyType === 'currency' ? ColumnDisplayTypeEnum.Currency : ColumnDisplayTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return ColumnDisplayTypeEnum.Boolean;\n case ColumnTypeEnum.Date:\n return ColumnDisplayTypeEnum.Date;\n case ColumnTypeEnum.Enum:\n return ColumnDisplayTypeEnum.Enum;\n case ColumnTypeEnum.Custom:\n return ColumnDisplayTypeEnum.Component;\n case ColumnTypeEnum.String:\n default:\n return ColumnDisplayTypeEnum.String;\n }\n }\n\n /**\n * converts string type to type enum, default is text\n * @param property\n */\n public static toFieldInputType(property: string): FieldInputTypeEnum {\n switch (property) {\n case 'hidden':\n return FieldInputTypeEnum.Hidden;\n case 'label':\n return FieldInputTypeEnum.Label;\n case 'textarea':\n return FieldInputTypeEnum.Textarea;\n case 'number':\n return FieldInputTypeEnum.Number;\n case 'currency':\n return FieldInputTypeEnum.Currency;\n case 'switch':\n case 'boolean':\n return FieldInputTypeEnum.Switch;\n case 'radio':\n return FieldInputTypeEnum.Radio;\n case 'datepicker':\n return FieldInputTypeEnum.Datepicker;\n case 'mask':\n return FieldInputTypeEnum.Mask;\n case 'file':\n return FieldInputTypeEnum.File;\n case 'custom':\n return FieldInputTypeEnum.Custom;\n case 'text':\n default:\n return FieldInputTypeEnum.Text;\n }\n }\n\n /**\n * convert column type to equivalent field input type\n * @param type column type\n * @param displayType column display type\n */\n public static toFieldInputTypeFromColumnType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum): FieldInputTypeEnum {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? FieldInputTypeEnum.Currency : FieldInputTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return FieldInputTypeEnum.Switch;\n case ColumnTypeEnum.Date:\n return FieldInputTypeEnum.Datepicker;\n case ColumnTypeEnum.Custom:\n return FieldInputTypeEnum.Custom;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Enum:\n default:\n return FieldInputTypeEnum.Text;\n }\n }\n\n /**\n * generates table layout preferences key used when saving preferences to localstorage\n * @param typeName string, required\n * @param url string, required\n * @param trackProperty string, not required\n */\n public static generateTableLayoutPrefsKey(typeName: string, url: string, trackProperty?: string): string {\n return `mngTableLayoutPrefs~~${typeName}~~${trackProperty ?? url.split('?')[0].split('#')[0]}`;\n }\n\n /**\n * Flatten an object of unknown type, used for generating fields and columns in dynamic tableviews\n */\n public static flattenObject(objectModel: any): string[] {\n const isObject = (entry: any) => {\n return !!entry && typeof entry === 'object' && !Array.isArray(entry);\n };\n\n const flatten = (object: any, parent?: any) => {\n let results: any[] = [];\n for (const key in object) {\n const value = object[key];\n const thisKey = parent ? `${parent}.${key}` : `${key}`;\n\n results = results.concat(isObject(value) ? flatten(value, thisKey) : [[`${thisKey}`, value]]);\n }\n return results;\n };\n\n return flatten(objectModel);\n }\n}\n","import {EnumType} from '../../types';\nimport {DecoratorMetadataUtil} from '../../utils';\n\nexport class EnumDescriptor<Enum> {\n private readonly _value: Enum;\n private readonly _type: EnumType;\n private readonly _nameAsValue;\n private readonly _i18nBaseKey?: string | null;\n\n protected constructor(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n this._value = value;\n this._type = type;\n this._nameAsValue = nameAsValue;\n\n if (typeof i18nBaseKey === 'undefined') {\n i18nBaseKey = DecoratorMetadataUtil.findEnumName(type);\n }\n this._i18nBaseKey = i18nBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get nameAsValue() {\n return this._nameAsValue;\n }\n\n public static create<Enum>(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n return new EnumDescriptor<Enum>(value, type, i18nBaseKey, nameAsValue);\n }\n}\n\nexport function enumModel<Enum>(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n return EnumDescriptor.create<Enum>(value, type, i18nBaseKey, nameAsValue);\n}\n\nexport function enumModelGeneric(type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n return EnumDescriptor.create<any>(undefined, type, i18nBaseKey, nameAsValue);\n}\n","import {MngInternalError} from '../../models';\nimport {ClassOptType, ClassType} from '../../types';\nimport {DecoratorMetadataUtil, ModelUtil} from '../../utils';\nimport {TypeDescriptor} from './type.descriptor';\n\nexport class ModelDescriptor<Model, ModelClass = ClassOptType<Model>> {\n private readonly _type: ModelClass;\n private readonly _typeName?: string;\n private _i18nBaseKey: string;\n private _idProperty?: string;\n private _titleProperty?: string;\n\n protected constructor(type: ModelClass, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>) {\n this._type = type;\n this._typeName = DecoratorMetadataUtil.findTypeName(type as ClassType<Model>) ?? undefined;\n this._idProperty = idProperty;\n this._titleProperty = titleProperty;\n if (!this._idProperty && type) {\n this._idProperty = ModelUtil.findIdAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n if (!this._titleProperty && type) {\n this._titleProperty = ModelUtil.findTitleAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n this._i18nBaseKey =\n (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : DecoratorMetadataUtil.findTypeName(i18nBaseKey)) ?? this._typeName ?? '';\n }\n\n public static create<Model>(idProperty?: keyof Model, titleProperty?: keyof Model, i18nBaseKey?: string | ClassType<unknown>): ModelDescriptor<Model, undefined> {\n return new ModelDescriptor(undefined, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n public static fromClass<Model>(\n type: ClassType<Model>,\n idProperty?: keyof Model,\n titleProperty?: keyof Model,\n i18nBaseKey?: string | ClassType<unknown>\n ): ModelDescriptor<Model, ClassType<Model>> {\n return new ModelDescriptor(type, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n public get type() {\n return this._type;\n }\n\n public get typeName() {\n return this._typeName;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get idProperty() {\n return this._idProperty;\n }\n\n public get titleProperty() {\n return this._titleProperty;\n }\n\n public withIdProperty(property: keyof Model): this {\n this._idProperty = property as string;\n return this;\n }\n\n public withIdPropertyUnsafe(property: string): this {\n this._idProperty = property;\n return this;\n }\n\n public withTitleProperty(property: keyof Model): this {\n this._titleProperty = property as string;\n return this;\n }\n\n public withTitlePropertyUnsafe(property: string): this {\n this._titleProperty = property;\n return this;\n }\n\n public withI18nBase(base: ClassType<any> | string): this {\n if (typeof base !== 'string') {\n const typeName = DecoratorMetadataUtil.findTypeName(base);\n if (!typeName) {\n throw new MngInternalError(`Could not find define i18nBaseKey for ${base} on model ${this.typeName}`);\n }\n base = typeName;\n }\n this._i18nBaseKey = base;\n return this;\n }\n\n public copy(): ModelDescriptor<Model, ModelClass> {\n return new ModelDescriptor<Model, ModelClass>(this._type, this._idProperty, this._titleProperty, this._i18nBaseKey);\n }\n}\n\nexport type ModelDescriptorCreateOpts<Model> = {\n id?: keyof Model;\n title?: keyof Model;\n i18nBase?: string | ClassType<any>;\n};\n\nexport function modelFromClass<Model>(type: ClassType<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, ClassType<Model>> {\n return ModelDescriptor.fromClass(type, opts?.id, opts?.title, opts?.i18nBase);\n}\n\nexport function modelFromType<Model>(type: TypeDescriptor<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined> {\n return ModelDescriptor.create<Model>(opts?.id, opts?.title, opts?.i18nBase);\n}\n\nexport function model<Model>(opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined> {\n return ModelDescriptor.create<Model>(opts?.id, opts?.title, opts?.i18nBase);\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class TypeDescriptor<Type> {\n protected constructor() {}\n\n public static create<Type>() {\n return new TypeDescriptor<Type>();\n }\n}\n\nexport function type<Type>(): TypeDescriptor<Type> {\n return TypeDescriptor.create<Type>();\n}\n","export enum StyleLevelEnum {\n Default,\n Primary,\n Secondary,\n Info,\n Help,\n Success,\n Warning,\n Danger\n}\n","export enum StyleSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n","import {ActionDescriptorInst} from '../descriptors/action';\nimport {TableDescriptorInst} from '../descriptors/table';\nimport {TableSizeEnum} from '../descriptors/types';\nimport {StyleSizeEnum} from './models';\n\nexport class StylesUtil {\n public static readonly BUTTON_ROUNDED_WIDTH_XS = 26;\n public static readonly BUTTON_ROUNDED_WIDTH_SM = 28;\n public static readonly BUTTON_ROUNDED_WIDTH = 32;\n public static readonly BUTTON_ROUNDED_WIDTH_LG = 45;\n\n public static readonly ACTION_BUTTON_MARGIN_X = 2;\n\n public static readonly TABLE_CELL_PADDING_X = 8; // left and right paddings are same\n public static readonly TABLE_CELL_PADDING_X_SM = 4;\n public static readonly TABLE_CELL_PADDING_X_LG = 12;\n\n public static calculateTableColumnActionWidth(table: TableDescriptorInst<unknown>, actions: Array<ActionDescriptorInst<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + StylesUtil.getActionButtonRoundedWidth(action) + 2 * StylesUtil.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = StylesUtil.getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n }\n\n public static getTableCellPaddingX(table: TableDescriptorInst<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return StylesUtil.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return StylesUtil.TABLE_CELL_PADDING_X_LG;\n default:\n return StylesUtil.TABLE_CELL_PADDING_X;\n }\n }\n\n public static getActionButtonRoundedWidth(action: ActionDescriptorInst<any>): number {\n switch (action.button.styleClass.size) {\n case StyleSizeEnum.ExtraSmall:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;\n case StyleSizeEnum.Small:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_SM;\n case StyleSizeEnum.Large:\n case StyleSizeEnum.ExtraLarge:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_LG;\n case StyleSizeEnum.Normal:\n default:\n return StylesUtil.BUTTON_ROUNDED_WIDTH;\n }\n }\n}\n","import {StyleLevelEnum, StyleSizeEnum} from './models';\n\nexport class ButtonStyleBuilder {\n private _size: StyleSizeEnum = StyleSizeEnum.Normal;\n private _actionLevel: StyleLevelEnum;\n\n private _textButton = false;\n private _outlineButton = false;\n private _raisedButton = false;\n private _roundedStyle = ButtonStyleRoundedEnum.DEFAULT;\n private _customClass?: string;\n\n constructor(level = StyleLevelEnum.Default, customClass?: string) {\n this._actionLevel = level;\n this._customClass = customClass;\n }\n\n public build(hasNoTitle = false): string {\n const styles = [this.convertActionLevelToStyleClass(), this.convertSizeToStyleClass(), this._customClass];\n\n if (hasNoTitle && this._roundedStyle === ButtonStyleRoundedEnum.DEFAULT) {\n styles.push(`p-button-rounded mng-action-button-icon`);\n }\n\n if (this._textButton) {\n styles.push(`p-button-text`);\n }\n\n if (this._outlineButton) {\n styles.push(`p-button-outlined`);\n }\n\n if (this._raisedButton) {\n styles.push(`p-button-raised`);\n }\n\n if (this._roundedStyle === ButtonStyleRoundedEnum.ROUNDED) {\n styles.push('p-button-rounded');\n }\n\n return styles.join(' ');\n }\n\n /**\n * creates instance of style builder with custom properties\n * @param actionLevel ActionLevelEnum\n * @param size ActionSizeEnum\n * @param textButton if true, text button will be applied\n * @param outlineButton if true, outlined button will be applied\n * @param raisedButton if true, raised button will be applied\n * @param customClass additional custom classes (will be added at generating)\n */\n public static create(\n actionLevel?: StyleLevelEnum,\n size?: StyleSizeEnum,\n textButton?: boolean,\n outlineButton?: boolean,\n raisedButton?: boolean,\n roundedButton?: ButtonStyleRoundedEnum,\n customClass?: string\n ): ButtonStyleBuilder {\n const descriptor = new ButtonStyleBuilder(actionLevel, customClass);\n descriptor._actionLevel = actionLevel ?? descriptor._actionLevel;\n descriptor._size = size ?? descriptor._size;\n descriptor._textButton = textButton ?? descriptor._textButton;\n descriptor._outlineButton = outlineButton ?? descriptor._outlineButton;\n descriptor._raisedButton = raisedButton ?? descriptor._raisedButton;\n descriptor._roundedStyle = roundedButton ?? descriptor._roundedStyle;\n descriptor._customClass = customClass;\n\n return descriptor;\n }\n\n /**\n * sets custom action level and returns this object\n * @param actionLevel\n */\n public withActionLevel(actionLevel: StyleLevelEnum): ButtonStyleBuilder {\n this._actionLevel = actionLevel;\n return this;\n }\n\n /**\n * sets custom size and return this object\n * @param size\n */\n public withSize(size: StyleSizeEnum): ButtonStyleBuilder {\n this._size = size;\n return this;\n }\n\n /**\n * sets text button property\n * @param withText default true\n */\n public withTextButton(withText = true): ButtonStyleBuilder {\n this._textButton = withText;\n return this;\n }\n\n /**\n * sets outline button property\n * @param withOutline default true\n */\n public withOutlineButton(withOutline = true): ButtonStyleBuilder {\n this._outlineButton = withOutline;\n return this;\n }\n\n /**\n * sets raised button property\n * @param withRaised default true\n */\n public withRaisedButton(withRaised = true): ButtonStyleBuilder {\n this._raisedButton = withRaised;\n return this;\n }\n\n public withRoundedButton(roundedStyle = ButtonStyleRoundedEnum.ROUNDED): ButtonStyleBuilder {\n this._roundedStyle = roundedStyle;\n return this;\n }\n\n /**\n * sets custom style class\n * @param customClass\n */\n public withCustomClass(customClass: string): ButtonStyleBuilder {\n this._customClass = customClass;\n return this;\n }\n\n private convertActionLevelToStyleClass(): string {\n switch (this._actionLevel) {\n case StyleLevelEnum.Default:\n case StyleLevelEnum.Primary:\n return 'p-button-primary';\n case StyleLevelEnum.Secondary:\n return 'p-button-secondary';\n case StyleLevelEnum.Info:\n return 'p-button-info';\n case StyleLevelEnum.Help:\n return 'p-button-help';\n case StyleLevelEnum.Success:\n return 'p-button-success';\n case StyleLevelEnum.Warning:\n return 'p-button-warning';\n case StyleLevelEnum.Danger:\n return 'p-button-danger';\n }\n }\n\n private convertSizeToStyleClass(): string {\n switch (this._size) {\n case StyleSizeEnum.ExtraSmall:\n return 'p-button-sm mng-button-xs';\n case StyleSizeEnum.Small:\n return 'p-button-sm mng-button-sm';\n case StyleSizeEnum.Large:\n return 'p-button-lg mng-button-lg';\n case StyleSizeEnum.ExtraLarge:\n return 'p-button-lg mng-button-xl';\n case StyleSizeEnum.Normal:\n default:\n return '';\n }\n }\n\n public copy(): ButtonStyleBuilder {\n const builder = new ButtonStyleBuilder(this._actionLevel, this._customClass);\n\n builder._size = this._size;\n builder._textButton = this._textButton;\n builder._outlineButton = this._outlineButton;\n builder._raisedButton = this._raisedButton;\n builder._roundedStyle = this._roundedStyle;\n\n return builder;\n }\n\n public get actionLevel() {\n return this._actionLevel;\n }\n\n public get size() {\n return this._size;\n }\n\n public get textButton() {\n return this._textButton;\n }\n\n public get outlineButton() {\n return this._outlineButton;\n }\n\n public get raisedButton() {\n return this._raisedButton;\n }\n\n public get roundedStyle() {\n return this._roundedStyle;\n }\n\n public get customClass() {\n return this._customClass;\n }\n}\n\nexport enum ButtonStyleRoundedEnum {\n DEFAULT,\n ROUNDED,\n SQUARE\n}\n","import {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\n\nimport {MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../../types';\n\nexport class FieldValidationDescriptor {\n private readonly _name: string;\n private readonly _validator?: MngFieldValidator | MngFieldAsyncValidator;\n private readonly _message?: MngFieldValidationMessage;\n private readonly _options?: {errorPath: string};\n\n constructor(\n name: string,\n validator?: MngFieldValidator | MngFieldAsyncValidator,\n message?: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>),\n options?: {errorPath: string}\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\n }\n\n public copy(): FieldValidationDescriptor {\n const opt = this._options ? {...this._options} : undefined;\n return new FieldValidationDescriptor(this._name, this._validator, this._message, opt);\n }\n}\n","import {Type} from '@angular/core';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject} from 'rxjs';\n\nimport {MngFormlyFieldConfig, MngFormlyHookFn} from '../../components/form/formly/models';\nimport {MngFormFieldEvent, MngFormFieldEventData, MngFormFieldEventTypeEnum} from '../../components/form/models';\nimport {MngInternalError} from '../../models';\nimport {GetterFn, MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {FieldConfig} from '../interfaces';\nimport {FieldSizeEnum} from '../types';\nimport {FieldValidationDescriptor} from './field-validation.descriptor';\nimport {IEditorDescriptorInternal} from './internal/editor.model';\n\nexport abstract class AGenericFieldDescriptor<EditorModel> {\n protected readonly _editor: IEditorDescriptorInternal<EditorModel>;\n protected _config: FieldConfig = {};\n\n protected constructor(editor: IEditorDescriptorInternal<EditorModel>) {\n this._editor = editor;\n }\n\n public get editor() {\n return this._editor;\n }\n\n public get config() {\n return this._config;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n\n /**\n * Override toJSON implementation to prevent overflow with circular dependency.\n * @ignore\n */\n protected toJSON(): string {\n const jsonObj = {\n ...this,\n _editor: undefined\n };\n const jsonObjStr = JSON.stringify(jsonObj);\n return jsonObjStr;\n }\n}\n\nexport abstract class AFieldDescriptor<FieldModel, EditorModel, FieldValue = FieldModel> extends AGenericFieldDescriptor<EditorModel> {\n /** @ignore */ protected readonly _property: string;\n /** @ignore */ protected _label?: string | null;\n\n /** @ignore */ protected _placeholder?: string;\n /** @ignore */ protected _helpText?: string;\n\n /** @ignore */ protected _required = false;\n /** @ignore */ protected _requiredHideLabelMarker = false;\n /** @ignore */ protected _disabled = false;\n /** @ignore */ protected _defaultValue?: FieldValue;\n /** @ignore */ protected _getter?: GetterFn<FieldValue, EditorModel>;\n /** @ignore */ protected _setter?: (item: EditorModel, value: FieldValue) => void;\n /** @ignore */ protected _validations: Array<FieldValidationDescriptor> = [];\n /** @ignore */ protected _asyncValidations: Array<FieldValidationDescriptor> = [];\n /** @ignore */ protected _requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _hiddenExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n /** @ignore */ protected _updateOn: 'change' | 'blur' | 'submit' = 'change';\n\n /** @ignore */ protected _onInit?: MngFormlyHookFn;\n /** @ignore */ protected _onChanges?: MngFormlyHookFn;\n /** @ignore */ protected _afterContentInit?: MngFormlyHookFn;\n /** @ignore */ protected _afterViewInit?: MngFormlyHookFn;\n /** @ignore */ protected _onDestroy?: MngFormlyHookFn;\n\n /** @ignore */ protected _onValueChange?: (field: MngFormlyFieldConfig, value: any) => void;\n\n /** @ignore */ protected _className = '';\n /** @ignore */ protected _fieldClassName?: string;\n /** @ignore */ protected _labelClassName = '';\n /** @ignore */ protected _inputClassName = '';\n /** @ignore */ protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n // localization\n /** @ignore */ protected _isLocalized = false;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<MngFormFieldEvent<FieldModel, EditorModel>>();\n\n protected constructor(editor: IEditorDescriptorInternal<EditorModel>, property: string) {\n super(editor);\n this._property = property;\n this._label = I18nUtils.Type.getPropertyKey(this._editor.model.i18nBaseKey, property);\n }\n\n public get property() {\n return this._property;\n }\n\n public get label() {\n return this._label;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get helpText() {\n return this._helpText;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get setter() {\n return this._setter;\n }\n\n public get validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get updateOn() {\n return this._updateOn;\n }\n\n public get onInit() {\n return this._onInit;\n }\n\n public get onChanges() {\n return this._onChanges;\n }\n\n public get afterContentInit() {\n return this._afterContentInit;\n }\n\n public get afterViewInit() {\n return this._afterViewInit;\n }\n\n public get onDestroy() {\n return this._onDestroy;\n }\n\n public get onValueChange() {\n return this._onValueChange;\n }\n\n public get className() {\n return this._className;\n }\n\n public get fieldClassName() {\n return this._fieldClassName;\n }\n\n public get labelClassName() {\n return this._labelClassName;\n }\n\n public get inputClassName() {\n return this._inputClassName;\n }\n\n public get size() {\n return this._size;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public abstract copy(): AFieldDescriptor<FieldModel, EditorModel, FieldValue>;\n\n public withLabel(label: string | null): this {\n this._label = label;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n public withRequired(required = true, requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, hideLabelMarker = false): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n\n public withUpdateOn(updateOn: 'change' | 'blur' | 'submit'): this {\n this._updateOn = updateOn;\n return this;\n }\n\n public withOnInit(onInit?: MngFormlyHookFn): this {\n this._onInit = onInit;\n return this;\n }\n\n public withOnChanges(onChanges?: MngFormlyHookFn): this {\n this._onChanges = onChanges;\n return this;\n }\n\n public withAfterContentInit(afterContentInit?: MngFormlyHookFn): this {\n this._afterContentInit = afterContentInit;\n return this;\n }\n\n public withAfterViewInit(afterViewInit?: MngFormlyHookFn): this {\n this._afterViewInit = afterViewInit;\n return this;\n }\n\n public withOnDestroy(onDestroy?: MngFormlyHookFn): this {\n this._onDestroy = onDestroy;\n return this;\n }\n\n public withOnValueChange(onValueChange?: (field: MngFormlyFieldConfig, value: any) => void): this {\n this._onValueChange = onValueChange;\n return this;\n }\n\n public withDefaultValue(defaultValue: FieldValue): this {\n this._defaultValue = defaultValue;\n return this;\n }\n\n public withGetter(fn?: GetterFn<FieldValue, EditorModel>): this {\n this._getter = fn;\n return this;\n }\n\n public withSetter(fn?: (item: EditorModel, value: FieldValue) => void): this {\n this._setter = fn;\n return this;\n }\n\n public withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage): this {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n\n public removeValidation(name: string): this {\n this._validations = this._validations.filter(v => v.name !== name);\n return this;\n }\n\n public withAsyncValidation(name: string, asyncValidator?: MngFieldAsyncValidator, message?: MngFieldValidationMessage): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n\n public removeAsyncValidation(name: string): this {\n this._asyncValidations = this._asyncValidations.filter(v => v.name !== name);\n return this;\n }\n\n public withClassName(className: string, labelClassName = '', inputClassName = '', fieldClassName?: string): this {\n this._className = className;\n this._labelClassName = labelClassName;\n this._inputClassName = inputClassName;\n this._fieldClassName = fieldClassName;\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n /**\n * This method adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n */\n public localized(): this {\n if (!this.editor.isLocalized) {\n throw new MngInternalError(`Localization cannot be set for field ${this.property}, localization must be enabled on editor first.`);\n }\n this._isLocalized = true;\n return this;\n }\n\n public nextEvent(type: MngFormFieldEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFormFieldEventData<FieldModel, EditorModel>) {\n this._eventsSubject.next(new MngFormFieldEvent(type, cmpType, cmpInstance, data));\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<FieldModel, EditorModel, FieldValue>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n }\n}\n","import {Observable} from 'rxjs';\n\nimport {FieldActionContext, FieldActionResult} from '../../components/form/models';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleLevelEnum} from '../../styles/models';\nimport {ActionButtonDescriptor} from '../action';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {IEditorDescriptorInternal} from './internal/editor.model';\n\nexport type FieldActionRunFnType<EditorModel> = (ctx: FieldActionContext<EditorModel>) => void | FieldActionResult | Observable<FieldActionResult>;\n\nexport class FieldActionDescriptor<EditorModel> extends AFieldDescriptor<void, EditorModel> {\n protected readonly _fieldActionName: string;\n protected readonly _fieldActionNameLong: string;\n\n protected _button = new ActionButtonDescriptor();\n\n protected _runFunction?: FieldActionRunFnType<EditorModel>;\n\n private _wrappers = ['field'];\n\n constructor(editor: IEditorDescriptorInternal<EditorModel>, property: string) {\n super(editor, property);\n this._fieldActionName = property;\n let displayName = property;\n if (this._editor.model) displayName = `${this._editor.model.typeName}.${displayName}`;\n this._fieldActionNameLong = displayName;\n }\n\n public get button() {\n return this._button;\n }\n\n public get runFunction() {\n return this._runFunction;\n }\n\n public get wrappers() {\n return this._wrappers;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withRunFunction(fn: FieldActionRunFnType<EditorModel>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withWrappers(wrappers: string[]): this {\n this._wrappers = wrappers;\n return this;\n }\n\n public copy(): FieldActionDescriptor<EditorModel> {\n const field = new FieldActionDescriptor<EditorModel>(this._editor, this._property);\n this.copyFieldsTo(field);\n field._button = this._button.copy();\n field._runFunction = this._runFunction?.bind(field);\n field._wrappers = [...this._wrappers];\n return field;\n }\n}\n","import {ArrayItemType} from '../../../types';\nimport {ModelDescriptor} from '../../model';\n\n/**\n * This one is internal only to prevent circular dependencies between editor and fields.\n */\nexport interface IEditorDescriptorInternal<EditorModel> {\n model: ModelDescriptor<EditorModel>;\n\n isLocalized: boolean;\n localizationLocaleProperty?: string;\n localizationModel?: ModelDescriptor<any>;\n localizationLocalizationProperty?: string;\n\n localized<K extends keyof EditorModel, LocalizationModel = ArrayItemType<EditorModel[K]>>(\n property: K,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this;\n\n localizedUnsafe<LocalizationModel>(property: string, model: ModelDescriptor<LocalizationModel>, localeProperty: string): this;\n}\n\nexport const EDITOR_DEFAULT_GROUP_NAME = '_default';\n","import {MngFieldValidationMessage, MngFieldValidator} from '../../types';\nimport {FieldGroupTypeEnum} from '../types';\nimport {AFieldDescriptor, AGenericFieldDescriptor} from './field-base.descriptor';\nimport {FieldValidationDescriptor} from './field-validation.descriptor';\nimport {EDITOR_DEFAULT_GROUP_NAME, IEditorDescriptorInternal} from './internal/editor.model';\n\nexport abstract class AFieldGroupDescriptor<EditorModel> extends AGenericFieldDescriptor<EditorModel> {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string;\n protected _fields: AGenericFieldDescriptor<EditorModel>[] = [];\n protected _validations: Array<FieldValidationDescriptor> = [];\n\n protected constructor(editor: IEditorDescriptorInternal<EditorModel>, name: string) {\n super(editor);\n this._name = `${this.baseName}${name}`;\n this._default = name === EDITOR_DEFAULT_GROUP_NAME;\n }\n\n public removeField(\n property: string,\n filterFunction: (fields: AGenericFieldDescriptor<EditorModel>[]) => AGenericFieldDescriptor<EditorModel>[]\n ): AGenericFieldDescriptor<EditorModel>[] {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n\n public get title() {\n return this._title;\n }\n\n abstract get fields(): AGenericFieldDescriptor<EditorModel>[];\n\n public get validations() {\n return this._validations;\n }\n\n public get baseName() {\n return `${this.groupName()}_`;\n }\n\n public get name() {\n return this._name;\n }\n\n public get default() {\n return this._default;\n }\n\n abstract groupName(): string;\n\n abstract addField(field: AGenericFieldDescriptor<EditorModel>): this;\n\n abstract copy(): AFieldGroupDescriptor<EditorModel>;\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<EditorModel> extends AFieldGroupDescriptor<EditorModel> {\n constructor(editor: IEditorDescriptorInternal<EditorModel>, name: string) {\n super(editor, name);\n }\n\n public get fields(): Array<FieldGroupDescriptor<EditorModel>> {\n return this._fields as Array<FieldGroupDescriptor<EditorModel>>;\n }\n\n public groupName(): string {\n return 'tab';\n }\n\n public addField(field: FieldGroupDescriptor<EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(): FieldTabGroupDescriptor<EditorModel> {\n const tab = new FieldTabGroupDescriptor<EditorModel>(this._editor, this.name.substring(this.baseName.length));\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy());\n tab._validations = this.validations.map(v => v.copy());\n return tab;\n }\n}\n\nexport class FieldGroupDescriptor<EditorModel> extends AFieldGroupDescriptor<EditorModel> {\n private _type = FieldGroupTypeEnum.Fieldset;\n\n constructor(editor: IEditorDescriptorInternal<EditorModel>, name: string) {\n super(editor, name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public get type() {\n return this._type;\n }\n\n public get fields(): Array<AFieldDescriptor<any, EditorModel>> {\n return this._fields as Array<AFieldDescriptor<any, EditorModel>>;\n }\n\n public groupName(): string {\n return 'group';\n }\n\n public addField(field: AFieldDescriptor<any, EditorModel>): this {\n this._fields.push(field);\n return this;\n }\n\n public asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n\n public copy(): FieldGroupDescriptor<EditorModel> {\n const group = new FieldGroupDescriptor<EditorModel>(this._editor, this.name.substring(this.baseName.length));\n group._type = this._type;\n group._title = this._title;\n group._fields = this.fields.map(f => f.copy());\n group._validations = this.validations.map(v => v.copy());\n return group;\n }\n}\n","import {ClassOptType, ClassType, ServiceClassOptType, ServiceClassType} from '../types';\n\nexport type IDataProvider<ModelType = any, ServiceType = any, CT = ClassOptType<ModelType>, ST = ServiceClassOptType<ServiceType>> = {\n classType: CT;\n serviceType: ST;\n isDataProvider: boolean;\n};\n\n/**\n * A base data provider class used for handling data operations.\n *\n * @tparam Model - The type of data this data provider will handle.\n * @tparam Service - The type of service used by this data provider (optional).\n * @tparam ModelClass - The model type for the data provider (optional).\n * @tparam ServiceClass - The service type for the data provider (optional).\n */\nexport class DataProviderInst<Model, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>>\n implements IDataProvider<Model, Service, ModelClass, ServiceClass>\n{\n protected constructor(\n public readonly classType: ModelClass,\n public readonly serviceType: ServiceClass\n ) {}\n\n public get isDataProvider() {\n return true;\n }\n}\n\nexport class DataProvider extends DataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>() {\n return new DataProviderInst<Model, undefined, undefined, undefined>(undefined, undefined);\n }\n\n public static fromClass<Model>(type: ClassType<Model>) {\n return new DataProviderInst<Model, undefined, ClassType<Model>, undefined>(type, undefined);\n }\n\n public static fromClassWithService<Model, Service>(type: ClassType<Model>, serviceType: ServiceClassType<Service>) {\n return new DataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>(type, serviceType);\n }\n\n public static fromService<Service, Model>(serviceType: ServiceClassType<Service>): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return new DataProviderInst<Model, Service, undefined, ServiceClassType<Service>>(undefined, serviceType);\n }\n\n public static fromAnyParam<Model>(): DataProviderInst<Model, undefined, undefined, undefined>;\n public static fromAnyParam<Model>(type: ClassType<Model>): DataProviderInst<Model, undefined, ClassType<Model>, undefined>;\n public static fromAnyParam<Model, Service = any>(\n type: undefined,\n serviceType: ServiceClassType<Service>\n ): DataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): DataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n type?: ModelClass,\n serviceType?: ServiceClass\n ): DataProviderInst<Model, Service, ModelClass, ServiceClass>;\n public static fromAnyParam<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(type?: ModelClass, serviceType?: ServiceClass) {\n if (typeof type !== 'undefined') {\n return typeof serviceType !== 'undefined'\n ? DataProvider.fromClassWithService(type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : DataProvider.fromClass(type as ClassType<Model>);\n } else if (typeof serviceType !== 'undefined') {\n return DataProvider.fromService(serviceType as ServiceClassType<Service>);\n } else {\n return DataProvider.create<Model>();\n }\n }\n}\n","import {throwError} from 'rxjs';\n\nimport {MngInternalError} from '../models';\nimport {ClassOptType, ClassType, IdType, ItemOrObservable, ServiceClassOptType, ServiceClassType} from '../types';\nimport {DataProviderInst, IDataProvider} from './base.data-provider';\n\nexport type EditorDataProviderFetchFnType<Model = any, Service = undefined, Id = IdType, Return = ItemOrObservable<Model>> = (\n id: Id,\n service: Service,\n locale: string | undefined\n) => Return;\nexport type EditorDataProviderCreateFnType<Model = any, Service = undefined, Item = Model | undefined, Return = ItemOrObservable<Model>> = (item: Item, service: Service) => Return;\nexport type EditorDataProviderUpdateFnType<Model = any, Service = undefined, Id = IdType, Item = Model | undefined, Return = ItemOrObservable<Model>> = (\n id: Id,\n item: Item,\n service: Service\n) => Return;\nexport type EditorDataProviderDeleteFnType<Model = any, Service = undefined, Id = IdType, Item = Model | undefined, Return = ItemOrObservable<Model | null>> = (\n id: Id,\n item: Item,\n service: Service\n) => Return;\n\nexport interface IEditorDataProviderFetch<Model, Service> {\n fetch: EditorDataProviderFetchFnType<Model, Service>;\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderCreate<Model, Service> {\n create?: EditorDataProviderCreateFnType<Model, Service>;\n\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderUpdate<Model, Service> {\n update?: EditorDataProviderUpdateFnType<Model, Service>;\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this;\n}\n\nexport interface IEditorDataProviderDelete<Model, Service> {\n delete?: EditorDataProviderDeleteFnType<Model, Service>;\n\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this;\n}\n\nexport type IEditorDataProviderFnsType<Model, Service> = IEditorDataProviderFetch<Model, Service> &\n IEditorDataProviderCreate<Model, Service> &\n IEditorDataProviderUpdate<Model, Service> &\n IEditorDataProviderDelete<Model, Service>;\nexport type IEditorDataProvider<Model = any, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>> = IDataProvider<\n Model,\n Service,\n ModelClass,\n ServiceClass\n> &\n IEditorDataProviderFnsType<Model, Service>;\n\nexport class EditorDataProviderInst<Model, Service = any, ModelClass = ClassOptType<Model>, ServiceClass = ServiceClassOptType<Service>>\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements IEditorDataProvider<Model, Service, ModelClass, ServiceClass>\n{\n protected _fetch: EditorDataProviderFetchFnType<Model, Service> = id => throwError(() => new MngInternalError(`No fetch function provided for id ${id}.`));\n protected _create?: EditorDataProviderCreateFnType<Model, Service>;\n protected _update?: EditorDataProviderUpdateFnType<Model, Service>;\n protected _delete?: EditorDataProviderDeleteFnType<Model, Service>;\n\n protected constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n }\n\n get fetch() {\n return this._fetch;\n }\n\n get create() {\n return this._create;\n }\n\n get update() {\n return this._update;\n }\n\n get delete() {\n return this._delete;\n }\n\n /**\n * Sets the fetch function for the EditorDataProvider instance.\n *\n * @param {EditorDataProviderFetchFnType<Model, Service>} fn - The fetch function to be set.\n * @returns {this} - The instance of the EditorDataProvider with the fetch function set.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this._fetch = fn;\n return this;\n }\n\n /**\n * Sets the create function for the EditorDataProvider.\n *\n * @param {EditorDataProviderCreateFnType<Model, Service>} fn - The function used for creating new items.\n * @returns {this} - Returns the instance of the class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this {\n this._create = fn;\n return this;\n }\n\n /**\n * Sets the update function for the EditorDataProvider.\n *\n * @param {EditorDataProviderUpdateFnType<Model, Service>} fn - The update function to be set.\n * @returns {this} - Returns the instance of the object calling this method.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this {\n this._update = fn;\n return this;\n }\n\n /**\n * Sets the delete function for the editor data provider.\n *\n * @param {EditorDataProviderDeleteFnType<Model, Service>} fn - The delete function to be set.\n *\n * @returns {this} - Returns the instance of the current class.\n *\n * @typeparam Model The type of data this DataProvider will handle.\n * @typeparam Service The type of service used by this DataProvider.\n */\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this {\n this._delete = fn;\n return this;\n }\n}\n\nexport class EditorDataProvider extends EditorDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>() {\n return new EditorDataProviderInst<Model, undefined, undefined, undefined>(undefined, undefined);\n }\n\n public static fromClass<Model>(type: ClassType<Model>) {\n return new EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined>(type, undefined);\n }\n\n public static fromClassWithService<Model, Service>(type: ClassType<Model>, serviceType: ServiceClassType<Service>) {\n return new EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>(type, serviceType);\n }\n\n public static fromService<Service, Model>(serviceType: ServiceClassType<Service>): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>> {\n return new EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>(undefined, serviceType);\n }\n\n public static fromAnyParam<Model>(): EditorDataProviderInst<Model, undefined, undefined, undefined>;\n public static fromAnyParam<Model>(type: ClassType<Model>): EditorDataProviderInst<Model, undefined, ClassType<Model>, undefined>;\n public static fromAnyParam<Model, Service = any>(\n type: undefined,\n serviceType: ServiceClassType<Service>\n ): EditorDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): EditorDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n type?: ModelClass,\n serviceType?: ServiceClass\n ): EditorDataProviderInst<Model, Service, ModelClass, ServiceClass>;\n public static fromAnyParam<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(type?: ModelClass, serviceType?: ServiceClass) {\n if (typeof type !== 'undefined') {\n return typeof serviceType !== 'undefined'\n ? EditorDataProvider.fromClassWithService(type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : EditorDataProvider.fromClass(type as ClassType<Model>);\n } else if (typeof serviceType !== 'undefined') {\n return EditorDataProvider.fromService(serviceType as ServiceClassType<Service>);\n } else {\n return EditorDataProvider.create<Model>();\n }\n }\n}\n","import {DataListParams} from '../models';\nimport {ClassOptType, ClassType, ItemOrObservable, ServiceClassOptType, ServiceClassType} from '../types';\nimport {DataProviderInst, IDataProvider} from './base.data-provider';\n\nexport type LookupDataProviderLookupFnType<ModelType = any, ServiceType = undefined, ReturnType = ItemOrObservable<Array<ModelType>>> = (\n params: DataListParams | undefined,\n service: ServiceType,\n search?: string\n) => ReturnType;\n\nexport interface ILookupDataProviderLookup<ModelType, ServiceType> {\n lookup: LookupDataProviderLookupFnType<ModelType, ServiceType>;\n\n withLookup(fn?: LookupDataProviderLookupFnType<ModelType, ServiceType>): this;\n}\n\nexport type ILookupDataProvider<ModelType = any, ServiceType = any, CT = ClassOptType<ModelType>, ST = ServiceClassOptType<ServiceType>> = IDataProvider<\n ModelType,\n ServiceType,\n CT,\n ST\n> &\n ILookupDataProviderLookup<ModelType, ServiceType>;\n\nexport class LookupDataProviderInst<ModelType, ServiceType = any, CT = ClassOptType<ModelType>, ST = ServiceClassOptType<ServiceType>>\n extends DataProviderInst<ModelType, ServiceType, CT, ST>\n implements ILookupDataProvider<ModelType, ServiceType, CT, ST>\n{\n protected _lookup: LookupDataProviderLookupFnType<ModelType, ServiceType> = () => [];\n\n protected constructor(type: CT, serviceType: ST) {\n super(type, serviceType);\n }\n\n get lookup() {\n return this._lookup;\n }\n\n withLookup(fn: LookupDataProviderLookupFnType<ModelType, ServiceType>): this {\n this._lookup = fn;\n return this;\n }\n}\n\nexport class LookupDataProvider extends LookupDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model>() {\n return new LookupDataProviderInst<Model, undefined, undefined, undefined>(undefined, undefined);\n }\n\n public static fromClass<Model>(type: ClassType<Model>) {\n return new LookupDataProviderInst<Model, undefined, ClassType<Model>, undefined>(type, undefined);\n }\n\n public static fromClassWithService<Model, Service>(type: ClassType<Model>, serviceType: ServiceClassType<Service>) {\n return new LookupDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>(type, serviceType);\n }\n\n public static fromService<ServiceType, ModelType>(\n serviceType: ServiceClassType<ServiceType>\n ): LookupDataProviderInst<ModelType, ServiceType, undefined, ServiceClassType<ServiceType>> {\n return new LookupDataProviderInst<ModelType, ServiceType, undefined, ServiceClassType<ServiceType>>(undefined, serviceType);\n }\n\n public static fromAnyParam<Model>(): LookupDataProviderInst<Model, undefined, undefined, undefined>;\n public static fromAnyParam<Model>(type: ClassType<Model>): LookupDataProviderInst<Model, undefined, ClassType<Model>, undefined>;\n public static fromAnyParam<Model, Service = any>(\n type: undefined,\n serviceType: ServiceClassType<Service>\n ): LookupDataProviderInst<Model, Service, undefined, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service = any>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): LookupDataProviderInst<Model, Service, ClassType<Model>, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(\n type?: ModelClass,\n serviceType?: ServiceClass\n ): LookupDataProviderInst<Model, Service, ModelClass, ServiceClass>;\n public static fromAnyParam<Model, Service = any, ModelClass = ClassType<Model>, ServiceClass = ServiceClassType<Service>>(type?: ModelClass, serviceType?: ServiceClass) {\n if (typeof type !== 'undefined') {\n return typeof serviceType !== 'undefined'\n ? LookupDataProvider.fromClassWithService(type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : LookupDataProvider.fromClass(type as ClassType<Model>);\n } else if (typeof serviceType !== 'undefined') {\n return LookupDataProvider.fromService(serviceType as ServiceClassType<Service>);\n } else {\n return LookupDataProvider.create<Model>();\n }\n }\n}\n","import {booleanAttribute, numberAttribute} from '@angular/core';\n\nimport {Observable, isObservable, of} from 'rxjs';\n\nimport {MngInternalError} from '../models';\nimport {IdType, Nullable} from '../types';\n\nexport function boolean$Attribute(value: unknown): Observable<boolean> {\n return isObservable(value) ? (value as Observable<boolean>) : of(booleanAttribute(value));\n}\n\nexport function number$Attribute(value: unknown): Observable<number> {\n return isObservable(value) ? (value as Observable<number>) : of(numberAttribute(value));\n}\n\nexport const toObservable = <T>(value: T | Observable<T>): Observable<T> => {\n return isObservable(value) ? (value as Observable<T>) : of(value);\n};\n\nexport const itemIdToNumber = (value?: IdType): number => {\n if (typeof value === 'number') {\n return value;\n } else if (typeof value === 'string') {\n const num = +value;\n if (!isNaN(num)) {\n return num;\n }\n throw new MngInternalError(`ItemId is a string, but could not be transformed to number: ${value}`);\n } else {\n throw new MngInternalError(`ItemId is not a number: ${value}`);\n }\n};\n\nexport const itemIdToString = (value?: IdType): string => {\n if (typeof value === 'string') {\n return value;\n } else {\n throw new MngInternalError(`ItemId is not a string: ${value}`);\n }\n};\n\nexport const itemIdToDefined = (value?: IdType): IdType => {\n if (typeof value === 'undefined') {\n throw new MngInternalError(`ItemId is not defined: ${value}`);\n } else {\n return value;\n }\n};\n\nexport const valueToDefined = <T>(value: Nullable<T>): T => {\n if (typeof value === 'undefined' || value === null) {\n throw new MngInternalError(`Value is null or not defined: ${value}`);\n } else {\n return value;\n }\n};\n","import {Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {toObservable} from '../helpers/coercion';\nimport {DataListParams, DataListResult} from '../models';\nimport {ClassOptType, ClassType, ItemOrObservable, ServiceClassOptType, ServiceClassType} from '../types';\nimport {DataProviderInst, IDataProvider} from './base.data-provider';\n\nexport type TableDataProviderGetAllFnType<\n Model = any,\n Service = undefined,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n Return = ItemOrObservable<DataListResult<Model>>\n> = (params: DataListParams<Sorts, Filters>, service: Service, locale?: string) => Return;\nexport type TableDataProviderGetAllEagerFnType<Model = any, Service = undefined, Return = ItemOrObservable<Model[]>> = (service: Service, locale?: string) => Return;\n\nexport interface ITableDataProviderGetAll<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model> {\n getAll: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>;\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this;\n}\n\nexport interface ITableDataProviderSupport<Sorts = any, Filters extends keyof any = any> {\n get isLazy(): boolean;\n\n get getAllReload$(): Observable<DataListParams<Sorts, Filters> | undefined>;\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void;\n}\n\nexport type ITableDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n> = IDataProvider<Model, Service, ModelClass, ServiceClass> & ITableDataProviderSupport<Sorts, Filters> & ITableDataProviderGetAll<Model, Service, Sorts, Filters>;\n\nexport class TableDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n >\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements ITableDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>\n{\n protected readonly _getAllReloadSubject = new Subject<DataListParams<Sorts, Filters> | undefined>();\n\n protected _isLazy = true;\n\n protected constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n }\n\n protected _getAll: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters> = () => ({data: []});\n\n get isLazy() {\n return this._isLazy;\n }\n\n get getAll() {\n return this._getAll;\n }\n\n get getAllReload$() {\n return this._getAllReloadSubject.asObservable();\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this {\n this._getAll = fn;\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<Model, Service>): this {\n this._getAll = (qp: DataListParams<Sorts, Filters>, service: Service, locale?: string) => toObservable(fn(service, locale)).pipe(map(data => ({data: data})));\n this._isLazy = false;\n return this;\n }\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void {\n this._getAllReloadSubject.next(queryParam);\n }\n}\n\nexport class TableDataProvider extends TableDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>() {\n return new TableDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>(undefined, undefined);\n }\n\n public static fromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(type: ClassType<Model>) {\n return new TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>(type, undefined);\n }\n\n public static fromClassWithService<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ) {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>(type, serviceType);\n }\n\n public static fromService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return new TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType);\n }\n\n public static fromAnyParam<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableDataProviderInst<\n Model,\n undefined,\n Sorts,\n Filters,\n undefined,\n undefined\n >;\n public static fromAnyParam<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n ): TableDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>;\n public static fromAnyParam<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: undefined,\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): TableDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>;\n public static fromAnyParam<\n Model,\n Service,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n >(type?: ModelClass, serviceType?: ServiceClass): TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n public static fromAnyParam<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n >(type?: ModelClass, serviceType?: ServiceClass) {\n if (typeof type !== 'undefined') {\n return typeof serviceType !== 'undefined'\n ? TableDataProvider.fromClassWithService<Model, Service, Sorts, Filters>(type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : TableDataProvider.fromClass<Model, Sorts, Filters>(type as ClassType<Model>);\n } else if (typeof serviceType !== 'undefined') {\n return TableDataProvider.fromService<Service, Model, Sorts, Filters>(serviceType as ServiceClassType<Service>);\n } else {\n return TableDataProvider.create<Model, Sorts, Filters>();\n }\n }\n}\n","import {DataListParams} from '../models';\nimport {ClassOptType, ClassType, ServiceClassOptType, ServiceClassType} from '../types';\nimport {DataProviderInst} from './base.data-provider';\nimport {\n EditorDataProvider,\n EditorDataProviderCreateFnType,\n EditorDataProviderDeleteFnType,\n EditorDataProviderFetchFnType,\n EditorDataProviderInst,\n EditorDataProviderUpdateFnType,\n IEditorDataProvider\n} from './editor.data-provider';\nimport {ITableDataProvider, TableDataProvider, TableDataProviderGetAllEagerFnType, TableDataProviderGetAllFnType, TableDataProviderInst} from './table.data-provider';\n\nexport type ITableviewDataProvider<\n Model = any,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n> = IEditorDataProvider<Model, Service, ModelClass, ServiceClass> & ITableDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n\nexport class TableviewDataProviderInst<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassOptType<Model>,\n ServiceClass = ServiceClassOptType<Service>\n >\n extends DataProviderInst<Model, Service, ModelClass, ServiceClass>\n implements ITableviewDataProvider<Model, Service, Sorts, Filters, ModelClass, ServiceClass>\n{\n protected readonly editorDataProvider: EditorDataProviderInst<Model, Service, ModelClass, ServiceClass>;\n protected readonly tableDataProvider: TableDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n\n protected constructor(type: ModelClass, serviceType: ServiceClass) {\n super(type, serviceType);\n this.editorDataProvider = EditorDataProvider.fromAnyParam<Model, Service, ModelClass, ServiceClass>(type, serviceType);\n this.tableDataProvider = TableDataProvider.fromAnyParam<Model, Service, Sorts, Filters, ModelClass, ServiceClass>(type, serviceType);\n }\n\n get isLazy() {\n return this.tableDataProvider.isLazy;\n }\n\n get getAllReload$() {\n return this.tableDataProvider.getAllReload$;\n }\n\n get getAll() {\n return this.tableDataProvider.getAll;\n }\n\n get fetch() {\n return this.editorDataProvider.fetch;\n }\n\n get create() {\n return this.editorDataProvider.create;\n }\n\n get update() {\n return this.editorDataProvider.update;\n }\n\n get delete() {\n return this.editorDataProvider.delete;\n }\n\n getAllReload(queryParam?: DataListParams<Sorts, Filters>): void {\n this.tableDataProvider.getAllReload(queryParam);\n }\n\n withGetAll(fn: TableDataProviderGetAllFnType<Model, Service, Sorts, Filters>): this {\n this.tableDataProvider.withGetAll(fn);\n return this;\n }\n\n withGetAllEagerly(fn: TableDataProviderGetAllEagerFnType<Model, Service>): this {\n this.tableDataProvider.withGetAllEagerly(fn);\n return this;\n }\n\n withFetch(fn: EditorDataProviderFetchFnType<Model, Service>): this {\n this.editorDataProvider.withFetch(fn);\n return this;\n }\n\n withCreate(fn?: EditorDataProviderCreateFnType<Model, Service>): this {\n this.editorDataProvider.withCreate(fn);\n return this;\n }\n\n withUpdate(fn?: EditorDataProviderUpdateFnType<Model, Service>): this {\n this.editorDataProvider.withUpdate(fn);\n return this;\n }\n\n withDelete(fn?: EditorDataProviderDeleteFnType<Model, Service>): this {\n this.editorDataProvider.withDelete(fn);\n return this;\n }\n}\n\nexport class TableviewDataProvider extends TableviewDataProviderInst<any> {\n protected constructor() {\n super(undefined, undefined);\n }\n\n public static create<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>() {\n return new TableviewDataProviderInst<Model, undefined, Sorts, Filters, undefined, undefined>(undefined, undefined);\n }\n\n public static fromClass<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(type: ClassType<Model>) {\n return new TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>(type, undefined);\n }\n\n public static fromClassWithService<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ) {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>(type, serviceType);\n }\n\n public static fromService<Service, Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>> {\n return new TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>(undefined, serviceType);\n }\n\n public static fromAnyParam<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(): TableviewDataProviderInst<\n Model,\n undefined,\n Sorts,\n Filters,\n undefined,\n undefined\n >;\n public static fromAnyParam<Model, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>\n ): TableviewDataProviderInst<Model, undefined, Sorts, Filters, ClassType<Model>, undefined>;\n public static fromAnyParam<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: undefined,\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, undefined, ServiceClassType<Service>>;\n public static fromAnyParam<Model, Service = any, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n type: ClassType<Model>,\n serviceType: ServiceClassType<Service>\n ): TableviewDataProviderInst<Model, Service, Sorts, Filters, ClassType<Model>, ServiceClassType<Service>>;\n public static fromAnyParam<\n Model,\n Service,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n >(type?: ModelClass, serviceType?: ServiceClass): TableviewDataProviderInst<Model, Service, Sorts, Filters, ModelClass, ServiceClass>;\n public static fromAnyParam<\n Model,\n Service = any,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model,\n ModelClass = ClassType<Model>,\n ServiceClass = ServiceClassType<Service>\n >(type?: ModelClass, serviceType?: ServiceClass) {\n if (typeof type !== 'undefined') {\n return typeof serviceType !== 'undefined'\n ? TableviewDataProvider.fromClassWithService<Model, Service, Sorts, Filters>(type as ClassType<Model>, serviceType as ServiceClassType<Service>)\n : TableviewDataProvider.fromClass<Model, Sorts, Filters>(type as ClassType<Model>);\n } else if (typeof serviceType !== 'undefined') {\n return TableviewDataProvider.fromService<Service, Model, Sorts, Filters>(serviceType as ServiceClassType<Service>);\n } else {\n return TableviewDataProvider.create<Model, Sorts, Filters>();\n }\n }\n}\n\nexport class DynamicTableviewDataProviderInst<Service = any, ServiceClass = ServiceClassOptType<Service>> extends TableviewDataProviderInst<\n any,\n Service,\n any,\n any,\n undefined,\n ServiceClass\n> {\n protected constructor(serviceType: ServiceClass) {\n super(undefined, serviceType);\n }\n}\n\nexport class DynamicTableviewDataProvider extends DynamicTableviewDataProviderInst {\n protected constructor() {\n super(undefined);\n }\n\n public static create(): DynamicTableviewDataProviderInst<undefined> {\n return new DynamicTableviewDataProviderInst<undefined>(undefined);\n }\n\n public static fromService<Service>(serviceType: ServiceClassType<Service>): DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>> {\n return new DynamicTableviewDataProviderInst<Service, ServiceClassType<Service>>(serviceType);\n }\n}\n","import {of} from 'rxjs';\n\nimport {IDataProvider, ILookupDataProvider, ITableDataProvider, LookupDataProvider, LookupDataProviderLookupFnType} from '../../data-providers';\nimport {EnumValue} from '../../models';\nimport {ClassType, EnumConstantType, ServiceClassType} from '../../types';\nimport {EnumUtil, ModelUtil} from '../../utils';\nimport {FieldLookupConfig, ILookupDescriptor} from '../interfaces';\nimport {EnumDescriptor} from '../model';\nimport {TableDescriptorInst} from '../table';\nimport {FieldLookupTypeEnum, InputTrimType} from '../types';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {IEditorDescriptorInternal} from './internal/editor.model';\n\nexport type FieldLookupDescriptorConstructorOptsType<EditorModel, Service> = FieldLookupDescriptorCreateOptsProviderType<EditorModel, Service> & {\n type?: ClassType<EditorModel>;\n optionsValueProperty?: string;\n};\n\nexport type FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: ILookupDataProvider<FieldModel, Service>;\n};\n\nexport type FieldLookupProviderType<FieldModel, Service> = ServiceClassType<Service> | ILookupDataProvider<FieldModel, Service>;\n\nexport type FieldLookupAutocompleteOptsType = {\n openOnFocus?: boolean;\n inlineSearch?: boolean;\n selectFirst?: boolean;\n autoClear?: boolean;\n};\n\nexport const fieldLookupGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldLookupProviderType<FieldModel, Service>) => {\n const cfg: FieldLookupDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as ILookupDataProvider<FieldModel, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldLookupDescriptor<FieldModel, EditorModel, Service = any, FieldValue = FieldModel, Property = string>\n extends AFieldDescriptor<FieldModel, EditorModel, FieldValue>\n implements ILookupDescriptor<FieldModel, Service>\n{\n protected readonly _dataProvider: ILookupDataProvider<FieldModel, Service>;\n protected readonly _optionsValueProperty?: string; // this defines VT!\n\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _optionsLabelProperty?: string;\n protected _optionsLabelTranslate = false;\n protected _optionsDisabledProperty?: string;\n protected _optionsTrackProperty?: string;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus?: boolean;\n protected _autocompleteInlineSearch?: boolean;\n protected _autocompleteAutoClear?: boolean;\n protected _autocompleteSelectFirst?: boolean;\n protected _autocompleteInputTrim?: InputTrimType;\n\n protected _dialogTableDescriptor?: TableDescriptorInst<FieldModel>;\n protected _dialogTableDataProvider?: ITableDataProvider<FieldModel, any, any, any>;\n\n protected _customComponentName?: string;\n\n constructor(editor: IEditorDescriptorInternal<EditorModel>, property: Property, cfg?: FieldLookupDescriptorConstructorOptsType<FieldModel, Service>) {\n super(editor, property as string);\n\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n } else {\n this._dataProvider = LookupDataProvider.fromAnyParam(cfg?.type, cfg?.serviceType);\n }\n\n this._optionsValueProperty = cfg?.optionsValueProperty;\n\n ModelUtil.trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n\n public get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n\n public get optionsValueProperty() {\n return this._optionsValueProperty;\n }\n\n public get optionsDisabledProperty() {\n return this._optionsDisabledProperty;\n }\n\n public get optionsTrackProperty() {\n return this._optionsTrackProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n\n public get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get trimOption() {\n return this._autocompleteInputTrim;\n }\n\n public withOptionsLabelProperty(property: keyof FieldModel, translate = false): this {\n return this.withOptionsLabelPropertyUnsafe(property as string, translate);\n }\n\n public withOptionsLabelPropertyUnsafe(property: string, translate = false): this {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n\n public withOptionsDisabledProperty(property: keyof FieldModel): this {\n return this.withOptionsDisabledPropertyUnsafe(property as string);\n }\n\n public withOptionsDisabledPropertyUnsafe(property: string): this {\n this._optionsDisabledProperty = property;\n return this;\n }\n\n public withOptionsTrackProperty(property: keyof FieldModel): this {\n return this.withOptionsTrackPropertyUnsafe(property as string);\n }\n\n public withOptionsTrackPropertyUnsafe(property: string): this {\n if (this._optionsValueProperty) {\n return this;\n }\n this._optionsTrackProperty = property;\n return this;\n }\n\n public withLookup(lookup?: LookupDataProviderLookupFnType<FieldModel, Service>): this {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._autocompleteInputTrim = trimOption;\n return this;\n }\n\n public override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteSelectFirst = opts?.selectFirst;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n\n public asDialog(lookupTableDescriptor: TableDescriptorInst<FieldModel>, tableDataProvider?: ITableDataProvider<FieldModel, any, any, any>): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public copy(): FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue> {\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue>(this._editor, this._property, {\n dataProvider: this._dataProvider,\n optionsValueProperty: this._optionsValueProperty\n });\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsLabelTranslate = this._optionsLabelTranslate;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<Enum, EditorModel> extends FieldLookupDescriptor<EnumValue, EditorModel, undefined, EnumConstantType> {\n private readonly _enumModel: EnumDescriptor<Enum>;\n private readonly _optionEnumValues: EnumValue[];\n\n constructor(editor: IEditorDescriptorInternal<EditorModel>, property: string, enumModel: EnumDescriptor<Enum>, options?: Array<Enum>) {\n super(editor, property, {\n dataProvider: LookupDataProvider.create<EnumValue>(),\n optionsValueProperty: 'value'\n });\n this._enumModel = enumModel;\n this._optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray<Enum>(this._enumModel.type, options, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(this._enumModel.type, this._enumModel.nameAsValue, this._enumModel.i18nBaseKey ?? undefined);\n this.withLookup(() => of(this._optionEnumValues));\n this.withOptionsLabelProperty('title', this._enumModel.i18nBaseKey !== null);\n this.withOptionsDisabledProperty('disabled');\n }\n\n public get enumModel() {\n return this._enumModel;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._enumModel.nameAsValue ? EnumUtil.getConstantName(this._enumModel.type, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._enumModel.nameAsValue ? EnumUtil.getConstantName(this._enumModel.type, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(option[this._optionsValueProperty as keyof object]);\n }\n }\n return this;\n }\n\n public override asAutocomplete(opts?: FieldLookupAutocompleteOptsType): this {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<Enum, EditorModel> {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel>(this._editor, this._property, this._enumModel, []);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._optionsLabelProperty = this._optionsLabelProperty;\n field._optionsDisabledProperty = this._optionsDisabledProperty;\n field._optionsTrackProperty = this._optionsTrackProperty;\n return field;\n }\n}\n","import {IDataProvider, ITableDataProvider, TableDataProvider, TableDataProviderGetAllFnType} from '../../data-providers';\nimport {ServiceClassType} from '../../types';\nimport {ActionDescriptorInst} from '../action';\nimport {TableDescriptorInst} from '../table';\nimport {TableviewDescriptorInst} from '../tableview';\nimport {FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum} from '../types';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {IEditorDescriptorInternal} from './internal/editor.model';\n\nexport type FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service> = FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service>;\n\nexport type FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {\n lookupServiceType?: ServiceClassType<Service>;\n lookupDataProvider?: ITableDataProvider<FieldModel, Service>;\n};\n\nexport type FieldManyToManyEditorProviderType<FieldModel, Service> = ServiceClassType<Service> | ITableDataProvider<FieldModel, Service>;\n\nexport const fieldManyToManyGetProviderCfgObj = <FieldModel, Service>(serviceOrDataProvider?: FieldManyToManyEditorProviderType<FieldModel, Service>) => {\n const cfg: FieldManyToManyEditorDescriptorCreateOptsProviderType<FieldModel, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.lookupDataProvider = serviceOrDataProvider as ITableDataProvider<FieldModel, Service>;\n } else {\n cfg.lookupServiceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service = any, FieldValue = FieldModel[]> extends AFieldDescriptor<FieldModel, EditorModel, FieldValue> {\n private readonly _mainTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for main table component\n private readonly _lookupTableDescriptor: TableDescriptorInst<FieldModel>; // table descriptor for where select will be applied\n private readonly _lookupTableDataProvider: ITableDataProvider<FieldModel, Service>;\n private _fieldType: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n private _searchEnabled = false;\n private _searchFields?: string[];\n\n constructor(\n editor: IEditorDescriptorInternal<EditorModel>,\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n cfg?: FieldManyToManyEditorDescriptorConstructorOptsType<FieldModel, Service>\n ) {\n super(editor, property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n\n if (cfg?.lookupDataProvider) {\n this._lookupTableDataProvider = cfg.lookupDataProvider;\n } else {\n this._lookupTableDataProvider = TableDataProvider.fromAnyParam(lookupTableDescriptor.model.type, cfg?.lookupServiceType);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n\n public get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n\n public get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n\n public get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n\n public get searchEnabled() {\n return this._searchEnabled;\n }\n\n public get searchFields() {\n return this._searchFields;\n }\n\n public withLookup(fn: TableDataProviderGetAllFnType<FieldModel, Service>): this {\n this._lookupTableDataProvider.withGetAll(fn);\n return this;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: keyof FieldModel, valueProperty: keyof FieldModel, hasLookupExclude = true): this {\n return this.withLookupExcludeUnsafe(filterProperty as string, valueProperty as string, hasLookupExclude);\n }\n\n public withLookupExcludeUnsafe(filterProperty: string, valueProperty: string, hasLookupExclude = true): this {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n\n public withSearch(enabled = true, searchFields?: string[]): this {\n this._searchEnabled = enabled;\n this._searchFields = searchFields;\n return this;\n }\n\n public copy(): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue> {\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue>(\n this._editor,\n this._property,\n this._mainTableDescriptor.copy(),\n this._lookupTableDescriptor.copy(),\n {\n lookupDataProvider: this.lookupTableDataProvider\n }\n );\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\n\nexport class FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue = FieldModel[]> extends AFieldDescriptor<FieldModel, EditorModel, FieldValue> {\n private readonly _tableviewDescriptor: TableviewDescriptorInst<FieldModel>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n private _actions: Array<ActionDescriptorInst<FieldModel>> = [];\n\n constructor(editor: IEditorDescriptorInternal<EditorModel>, property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel>) {\n super(editor, property);\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n\n public get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n\n public get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n\n public get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n\n public get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n\n public withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptorInst<FieldModel>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue> {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue>(this._editor, this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n return field;\n }\n}\n","import {AbstractControl} from '@angular/forms';\n\nimport {MngFieldValidator} from '../types';\n\nexport const minDateValidator = (min: Date): MngFieldValidator => {\n return (c: AbstractControl) => {\n const date: Date = c?.value;\n const valid = !date || date >= min;\n\n if (!valid) {\n const newErrors = {...c.errors, minDate: true};\n c?.markAsDirty();\n c.setErrors(newErrors);\n return newErrors;\n }\n\n if (c?.hasError('minDate')) {\n c.setErrors({...c.errors, minDate: null});\n }\n\n return null;\n };\n};\n\nexport const maxDateValidator = (max: Date): MngFieldValidator => {\n return (c: AbstractControl) => {\n const date: Date = c?.value;\n const valid = !date || date <= max;\n\n if (!valid) {\n const newErrors = {...c.errors, maxDate: true};\n c?.markAsDirty();\n c.setErrors(newErrors);\n return newErrors;\n }\n\n if (c?.hasError('maxDate')) {\n c.setErrors({...c.errors, maxDate: null});\n }\n\n return null;\n };\n};\n","import {Type} from '@angular/core';\nimport {AbstractControl, Validators} from '@angular/forms';\n\nimport {AMngFormlyCustomFieldComponent} from '../../components/form/formly/fields/';\nimport {RadioValue} from '../../models';\nimport {EnumUtil} from '../../utils';\nimport {maxDateValidator, minDateValidator} from '../../validators';\nimport {EnumDescriptor} from '../model';\nimport {FieldInputTypeEnum, InputTrimType} from '../types';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {IEditorDescriptorInternal} from './internal/editor.model';\n\nexport type FieldInputDescriptorType = string | string[] | number | boolean | Date | File | File[];\n\nexport type FieldInputTextOptsType = {\n email?: boolean;\n} & FieldInputTextValidationOptsType;\n\nexport type FieldInputTextareaOptsType = {\n rows?: number;\n} & FieldInputTextValidationOptsType;\n\nexport type FieldInputTextValidationOptsType = {\n minLength?: number;\n maxLength?: number;\n pattern?: string | RegExp;\n};\n\nexport type FieldInputCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & FieldInputNumberGroupingOptsType &\n FieldInputNumberFractionOptsType &\n FieldInputNumberValidationOptsType &\n FieldInputLocaleOptsType;\n\nexport type FieldInputNumberOptsType = FieldInputNumberGroupingOptsType & FieldInputNumberFractionOptsType & FieldInputNumberValidationOptsType & FieldInputLocaleOptsType;\n\nexport type FieldInputNumberGroupingOptsType = {\n groupSeparator?: boolean;\n};\n\nexport type FieldInputNumberValidationOptsType = {\n min?: number;\n max?: number;\n step?: number;\n autoCorrect?: boolean;\n};\n\nexport type FieldInputNumberFractionOptsType = {\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type FieldInputLocaleOptsType = {\n locale?: string;\n};\n\nexport type FieldInputDatePickerOptsType = {\n format?: string;\n min?: Date;\n max?: Date;\n showTime?: boolean;\n showSeconds?: boolean;\n};\n\nexport type FieldInputFileOpts = {\n multiple?: boolean;\n maxFileSize?: number;\n accept?: string;\n onFileSelectHandlerFn?: FieldInputFileOnSelectHandlerFnType;\n};\n\nexport type FieldInputImageUrlOpts = {\n multiple?: boolean;\n preview?: boolean;\n inputVisibleOnDisabled?: boolean;\n};\n\nexport type FieldInputComponentOpts = {\n fieldWrappers?: string[];\n inputs?: Record<string, any>;\n};\n\nexport type FieldInputFileOnSelectHandlerFnType = (file: File[] | null, control: AbstractControl) => void;\n\nexport class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDescriptorType, FieldValue = FieldModel> extends AFieldDescriptor<FieldModel, EditorModel, FieldValue> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.Text;\n\n // textarea specific properties\n private _rows?: number;\n\n // number specific properties\n private _numberMin?: number;\n private _numberMax?: number;\n private _numberStep?: number;\n private _numberAutoCorrect?: boolean;\n private _numberMinFractionDigits?: number;\n private _numberMaxFractionDigits?: number;\n private _numberUseGrouping = true;\n private _locale?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<RadioValue> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date;\n private _datePickerMax?: Date;\n private _datePickerShowTime?: boolean;\n private _datePickerShowSeconds?: boolean;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n private _inputTrim?: InputTrimType;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple?: boolean;\n private _fileMaxFileSize?: number;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: FieldInputFileOnSelectHandlerFnType;\n\n // image specific properties\n private _imagePreview?: boolean;\n private _imageUrlInputHiddenOnDisabled?: boolean;\n\n // custom component properties\n private _customComponentType?: Type<AMngFormlyCustomFieldComponent>;\n private _customComponentInputs?: Record<string, any>;\n private _customComponentWrappers?: string[];\n\n constructor(editor: IEditorDescriptorInternal<EditorModel>, property: string) {\n super(editor, property);\n }\n\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n public asType(fieldType: FieldInputTypeEnum, ...args: any[]): this {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(...args);\n case FieldInputTypeEnum.Number:\n return this.asNumber(...args);\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(...args);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(...args);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0], args[1]);\n case FieldInputTypeEnum.File:\n return this.asFile(...args);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile(...args);\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl(...args);\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0], args[1]);\n case FieldInputTypeEnum.Text:\n return this.asText(args[0]);\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get rows() {\n return this._rows;\n }\n\n public get numberMin() {\n return this._numberMin;\n }\n\n public get numberMax() {\n return this._numberMax;\n }\n\n public get numberStep() {\n return this._numberStep;\n }\n\n public get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get radioOptions() {\n return this._radioOptions;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerMin() {\n return this._datePickerMin;\n }\n\n public get datePickerMax() {\n return this._datePickerMax;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get trimOption() {\n return this._inputTrim;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get imagePreview() {\n return this._imagePreview;\n }\n\n public get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get customComponentInputs() {\n return this._customComponentInputs;\n }\n\n public get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(opts?: FieldInputTextOptsType): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this.withTextValidation(opts).withTextValidationEmail(opts?.email ?? false);\n }\n\n public asTextarea(opts?: FieldInputTextareaOptsType): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = opts?.rows;\n return this.withTextValidation(opts);\n }\n\n public asNumber(opts?: FieldInputNumberOptsType): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions(opts)\n .withNumberValidation(opts)\n .withLocale(opts?.locale);\n }\n\n public asCurrency(opts?: FieldInputCurrencyOptsType<keyof EditorModel>): this {\n return this.asCurrencyUnsafe(<FieldInputCurrencyOptsType>{\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n });\n }\n\n public asCurrencyUnsafe(opts?: FieldInputCurrencyOptsType): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = opts?.currencyProperty;\n this._currency = opts?.currency ?? this._currency;\n this._currencyDisplay = opts?.currencyDisplay ?? this._currencyDisplay;\n return this.withNumberGrouping(opts?.groupSeparator ?? false)\n .withNumberFractions({\n maxFractionDigits: opts?.maxFractionDigits ?? 2,\n minFractionDigits: opts?.minFractionDigits ?? 2\n })\n .withNumberValidation(opts)\n .withLocale(opts?.locale);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number | boolean>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <RadioValue>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum<Enum>(enumModel: EnumDescriptor<Enum>, values?: Array<Enum>): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = Array.isArray(values)\n ? EnumUtil.fromValuesAsEnumValueArray<Enum>(enumModel.type, values, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumModel.type, enumModel.nameAsValue, enumModel.i18nBaseKey ?? undefined);\n return this;\n }\n\n public asDatePicker(opts?: FieldInputDatePickerOptsType): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n this._datePickerFormat = opts?.format;\n this._datePickerMin = opts?.min;\n this._datePickerMax = opts?.max;\n this._datePickerShowTime = opts?.showTime;\n this._datePickerShowSeconds = opts?.showSeconds;\n\n if (opts?.min != undefined) {\n this.withValidation('minDate', minDateValidator(opts.min));\n }\n if (opts?.max !== undefined) {\n this.withValidation('maxDate', maxDateValidator(opts.max));\n }\n\n return this;\n }\n\n public asMask(mask: string, slotChar: string): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = mask;\n this._slotChar = slotChar;\n return this;\n }\n\n public asFile(opts?: FieldInputFileOpts): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = opts?.multiple;\n this._fileMaxFileSize = opts?.maxFileSize;\n this._fileAccept = opts?.accept;\n return this.withFileOnSelectHandler(opts?.onFileSelectHandlerFn);\n }\n\n public asImageFile(opts?: FieldInputFileOpts): this {\n this.asFile(opts);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n return this;\n }\n\n public asImageUrl(opts?: FieldInputImageUrlOpts): this {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = opts?.multiple;\n this._imagePreview = opts?.preview;\n this._imageUrlInputHiddenOnDisabled = opts?.inputVisibleOnDisabled;\n return this;\n }\n\n public asCustomComponent(component: Type<AMngFormlyCustomFieldComponent>, opts?: FieldInputComponentOpts): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n this._customComponentType = component;\n this._customComponentInputs = opts?.inputs;\n this._customComponentWrappers = opts?.fieldWrappers;\n return this;\n }\n\n public withNumberValidation(opts?: FieldInputNumberValidationOptsType): this {\n this._numberStep = opts?.step;\n this._numberAutoCorrect = opts?.autoCorrect;\n this._numberMin = opts?.min;\n this._numberMax = opts?.max;\n return this;\n }\n\n public withLocale(locale?: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(opts?: FieldInputNumberFractionOptsType) {\n this._numberMinFractionDigits = opts?.minFractionDigits;\n this._numberMaxFractionDigits = opts?.maxFractionDigits;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withTextValidation(opts?: FieldInputTextValidationOptsType): this {\n this._minLength = opts?.minLength;\n this._maxLength = opts?.maxLength;\n this._pattern = opts?.pattern;\n return this;\n }\n\n public withInputTrim(trimOption: InputTrimType = 'both'): this {\n this._inputTrim = trimOption;\n return this;\n }\n\n public withTextValidationEmail(email = true): this {\n if (this.fieldType === FieldInputTypeEnum.Text && email) {\n this.withValidation('email', Validators.email);\n } else if (!email) {\n this.removeValidation('email');\n }\n return this;\n }\n\n public withFileOnSelectHandler(fn?: FieldInputFileOnSelectHandlerFnType): this {\n this._fileOnSelectHandler = fn;\n return this;\n }\n\n public copy(): FieldInputDescriptor<EditorModel, FieldModel, FieldValue> {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue>(this._editor, this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._radioOptions = [...this._radioOptions];\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._customComponentType = this._customComponentType;\n field._customComponentInputs = this._customComponentInputs;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n field._inputTrim = this._inputTrim;\n return field;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {MngFieldEventData, MngFormEvent, MngFormEventTypeEnum} from '../../components/form/models';\nimport {ILookupDataProvider, ITableDataProvider} from '../../data-providers';\nimport {MngInternalError, TableviewAttributeDef} from '../../models';\nimport {TypeRegistry} from '../../registry/type.registry';\nimport {ArrayItemType, ClassType, EnumConstantType, EnumType, IdType, MngFieldValidationMessage, MngFieldValidator, Nullable} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {EnumDescriptor, ModelDescriptor, enumModelGeneric} from '../model';\nimport {TableDescriptorInst} from '../table';\nimport {TableviewDescriptorInst} from '../tableview';\nimport {FieldInputTypeEnum, TableviewEditorTypeEnum} from '../types';\nimport {FieldActionDescriptor} from './field-action.descriptor';\nimport {AFieldDescriptor} from './field-base.descriptor';\nimport {FieldGroupDescriptor, FieldTabGroupDescriptor} from './field-group.descriptor';\nimport {FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupProviderType, fieldLookupGetProviderCfgObj} from './field-lookup.descriptor';\nimport {FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj} from './field-many.descriptor';\nimport {FieldInputDescriptor, FieldInputDescriptorType} from './field.descriptor';\nimport {IFieldsManageInterface} from './internal/editor-fields.model';\nimport {EDITOR_DEFAULT_GROUP_NAME, IEditorDescriptorInternal} from './internal/editor.model';\n\nexport class EditorDescriptorInst<EditorModel> implements IEditorDescriptorInternal<EditorModel>, IFieldsManageInterface<EditorModel> {\n public static readonly defaultGroupName = EDITOR_DEFAULT_GROUP_NAME;\n\n /** @ignore */ protected readonly _model: ModelDescriptor<EditorModel>;\n /** @ignore */ protected readonly _tableviewEditorType: TableviewEditorTypeEnum;\n /** @ignore */ protected readonly _tabs: Array<FieldTabGroupDescriptor<EditorModel>> = [];\n /** @ignore */ protected readonly _groups: Array<FieldGroupDescriptor<EditorModel>> = [];\n /** @ignore */ protected _fields: Array<AFieldDescriptor<any, EditorModel>> = [];\n /** @ignore */ protected _currentTabGroup?: FieldTabGroupDescriptor<EditorModel>;\n /** @ignore */ protected _currentGroup?: FieldGroupDescriptor<EditorModel>;\n\n /** @ignore */ protected _disabled = false;\n\n /** @ignore */ protected _isLocalized = false;\n /** @ignore */ protected _localizationLocaleProperty?: string;\n /** @ignore */ protected _localizationModel?: ModelDescriptor<any>;\n /** @ignore */ protected _localizationLocalizationProperty?: string;\n\n /** @ignore */ protected readonly _eventsSubject = new Subject<MngFormEvent<EditorModel>>();\n\n /**\n * Creates new instance of editor descriptor.\n * @param model Model descriptor.\n * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).\n */\n protected constructor(model: ModelDescriptor<EditorModel>, tableviewEditorType = TableviewEditorTypeEnum.None) {\n this._model = model;\n this._tableviewEditorType = tableviewEditorType;\n }\n\n /**\n * Model descriptor for editor.\n */\n public get model() {\n return this._model;\n }\n\n /**\n * Editor's tabs.\n */\n public get tabs() {\n return this._tabs;\n }\n\n /**\n * Editor's fields.\n */\n public get fields() {\n return this._fields;\n }\n\n /**\n * Type of editor for tableview.\n */\n public get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n\n /**\n * If editor is disabled.\n */\n public get disabled() {\n return this._disabled;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n\n public get localizationModel() {\n return this._localizationModel;\n }\n\n /**\n * Creates new tab group. Next added fields are added to newly created tab group.\n * @param name Name of the group.\n * @param title Title key for the tab.\n */\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<EditorModel> {\n const tabGroup = new FieldTabGroupDescriptor<EditorModel>(this, name);\n if (!title) {\n title = I18nUtils.Type.getTabKey(this.model.i18nBaseKey, name);\n }\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n /**\n * Creates new field group. Next added fields are added to newly created field group.\n * @param name Name of the group.\n * @param title Title key for the group.\n */\n public createFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<EditorModel> {\n const fieldGroup = new FieldGroupDescriptor<EditorModel>(this, name);\n if (title !== null) {\n if (!title) {\n title = I18nUtils.Type.getGroupKey(this.model.i18nBaseKey, name);\n }\n fieldGroup.withTitle(title);\n }\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n\n /**\n * Gets field by the model property name.\n * @param property Model property name.\n */\n public getField(property: keyof EditorModel) {\n return this.getFieldUnsafe(property as string);\n }\n\n /**\n * Gets field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public getFieldUnsafe(property: string): AFieldDescriptor<any, EditorModel> | null {\n return this._fields.find(f => f.property === property) ?? null;\n }\n\n /**\n * Removes field by the model property name.\n * @param property Model property name.\n */\n public removeField(property: keyof EditorModel): void {\n return this.removeFieldUnsafe(property as string);\n }\n\n /**\n * Removes field by the model property name (UNSAFE).\n * @param property Model property name.\n */\n public removeFieldUnsafe(property: string): void {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new MngInternalError(`Field ${property} does not exist.`, {name: 'EditorDescriptorError'});\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n\n /**\n * Adds field by the descriptor.\n * @param field Field descriptor.\n */\n public addFieldDescriptor<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, EditorModel, FieldValue>): this {\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n\n /**\n * Adds field by the model property name.\n * @param property Model property name.\n */\n public addField<Property extends keyof EditorModel, FieldModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property) {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue>(this, property as string);\n this.addFieldDescriptor<FieldModel, FieldValue>(field);\n return field;\n }\n\n /**\n * Adds field by the model property name (UNSAFE). Property is not checked on editor model.\n * Use {addField} for safe usage.\n * @param property Model property name.\n */\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = new FieldInputDescriptor<EditorModel, FieldModel, FieldValue>(this, property);\n this.addFieldDescriptor<FieldModel, FieldValue>(field);\n return field;\n }\n\n public addFields(...properties: (keyof EditorModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<EditorModel> {\n const field = new FieldActionDescriptor(this, actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds lookup field.\n * @param property Model property name.\n * @param type Model's class type.\n */\n public addFieldLookup<K extends keyof EditorModel, FieldModel = NonNullable<EditorModel[K]>, FieldValue = EditorModel[K]>(property: K, type?: ClassType<FieldModel>) {\n return this.addFieldLookupUnsafe<FieldModel, FieldValue>(property as string, type);\n }\n\n /**\n * Adds lookup field (UNSAFE).\n * @param property Model property name.\n * @param type Model's class type.\n */\n public addFieldLookupUnsafe<FieldModel, FieldValue = FieldModel>(property: string, type?: ClassType<FieldModel>) {\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, undefined, FieldValue>(this, property, {\n type: type\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupWithPropertyAsValueUnsafe<FieldModel, FieldValue = Nullable<IdType>>(property: string, optionsValueProperty: string) {\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, undefined, FieldValue>(this, property, {\n optionsValueProperty: optionsValueProperty\n });\n this.addFieldDescriptor<FieldModel, FieldValue>(field);\n return field;\n }\n\n public addFieldLookupWithProvider<Service, Property extends keyof EditorModel, FieldModel = NonNullable<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n provider: FieldLookupProviderType<FieldModel, Service>,\n type?: ClassType<FieldModel>\n ) {\n return this.addFieldLookupWithProviderUnsafe<Service, FieldModel, FieldValue>(property as string, provider, type);\n }\n\n public addFieldLookupWithProviderUnsafe<Service, FieldModel, FieldValue = FieldModel>(\n property: string,\n provider: FieldLookupProviderType<FieldModel, Service>,\n type?: ClassType<FieldModel>\n ) {\n const cfg = fieldLookupGetProviderCfgObj(provider);\n const field = new FieldLookupDescriptor<FieldModel, EditorModel, Service, FieldValue>(this, property, {\n type: type,\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof EditorModel, Enum extends NonNullable<EditorModel[Property]>>(\n property: keyof EditorModel,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n return this.addFieldLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n /**\n * Adds enum lookup field.\n * @param property Model's property name.\n * @param enumDesc Type of enum or enum descriptor.\n * @param options Provides subset of enum's available constants.\n */\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = new FieldLookupEnumDescriptor<Enum, EditorModel>(this, property, enumDesc, options);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations.\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditor<Property extends keyof EditorModel, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel>\n ) {\n return this.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property as string, tableviewDescriptor);\n }\n\n /**\n * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param tableviewDescriptor Tableview descriptor for related model.\n */\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel>) {\n const field = new FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue>(this, property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Adds tables for many-to-many (m:n) relations.\n * @param property Model's property name.\n * @param mainTableDescriptor Main table descriptor for displaying items added to main model's property.\n * @param lookupTableDescriptor Lookup table descriptor for displaying items to be added to main model's property.\n */\n public addFieldManyToManyEditor<Property extends keyof EditorModel, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>\n ) {\n return this.addFieldManyToManyEditorUnsafe<FieldModel, FieldValue>(property as string, mainTableDescriptor, lookupTableDescriptor);\n }\n\n /**\n * Adds tables for many-to-many (m:n) relations (UNSAFE).\n * @param property Model's property name.\n * @param mainTableDescriptor Main table descriptor for displaying items added to main model's property.\n * @param lookupTableDescriptor Lookup table descriptor for displaying items to be added to main model's property.\n */\n public addFieldManyToManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>\n ) {\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, undefined, FieldValue>(this, property, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditorWithProvider<\n Property extends keyof EditorModel,\n ServiceType,\n FieldModel = ArrayItemType<EditorModel[Property]>,\n FieldValue = EditorModel[Property]\n >(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ) {\n return this.addFieldManyToManyEditorWithProviderUnsafe<FieldModel, ServiceType, FieldValue>(\n property as string,\n mainTableDescriptor,\n lookupTableDescriptor,\n lookupDataProvider\n );\n }\n\n public addFieldManyToManyEditorWithProviderUnsafe<FieldModel, ServiceType, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue> {\n const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);\n const field = new FieldManyToManyEditorDescriptor<FieldModel, EditorModel, ServiceType, FieldValue>(this, property, mainTableDescriptor, lookupTableDescriptor, {\n ...cfg\n });\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * Disables field on editor.\n * @param disabled\n */\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n /**\n * Adds group validator to editor.\n * @param name Name of the validation.\n * @param validator Field validator function.\n * @param message Field validation message.\n */\n public addValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message);\n }\n }\n\n /**\n * Creates a copy of editor descriptor object.\n */\n public copy(): EditorDescriptorInst<EditorModel> {\n const editor = new EditorDescriptorInst<EditorModel>(this.model.copy(), this.tableviewEditorType);\n for (const tabGroup of this._tabs) {\n editor.createTabGroupDescriptor(tabGroup.copy());\n }\n for (const tabGroup of editor._tabs) {\n for (const fieldGroup of tabGroup.fields) {\n editor._fields.push(...fieldGroup.fields);\n }\n editor._groups.push(...tabGroup.fields);\n }\n editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];\n editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];\n editor._disabled = this._disabled;\n return editor;\n }\n\n /**\n * Created group from field group descriptor.\n * @param fieldGroup Field group descriptor.\n * @internal\n */\n public createFieldGroupDescriptor(fieldGroup: FieldGroupDescriptor<EditorModel>): this {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n\n /**\n * Creates tab group from tab group descriptor.\n * @param tabGroup Tab group descriptor.\n * @internal\n */\n protected createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<EditorModel>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n /**\n * Creates default field group.\n * @internal\n */\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptorInst.defaultGroupName, null);\n }\n }\n\n /**\n * Creates default tab group.\n * @internal\n */\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');\n }\n }\n\n /**\n * Modifies selected field by field property. For enums use {withFieldModifiedEnum} instead.\n * @param property Model's property name.\n * @param fieldType new field type for selected field\n * @param args additional parameters for field\n */\n public withFieldModifiedType(property: keyof EditorModel, fieldType: FieldInputTypeEnum, ...args: any[]): this {\n return this.withFieldModifiedTypeUnsafe(property as string, fieldType, ...args);\n }\n\n public withFieldModifiedTypeUnsafe(property: string, fieldType: FieldInputTypeEnum, ...args: any[]): this {\n if (!this.model.type) {\n throw new MngInternalError(`withFieldModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attribute = TableviewUtil.getAttributeDefMap(this.model.type).find(attribute => attribute.name === property);\n if (attribute) {\n attribute.fieldType = fieldType;\n EditorDescriptorInst.upsertFieldFromAttributeDef(\n this,\n attribute,\n this.fields.find(fi => fi.property === property),\n ...args\n );\n }\n return this;\n }\n\n /**\n * Modifies selected field with enum type.\n * @param property Model's property name.\n * @param enumModel Enum descriptor.\n * @param values\n */\n public withFieldModifiedEnum<Property extends keyof EditorModel, Enum extends NonNullable<EditorModel[Property]>>(\n property: Property,\n enumModel?: EnumDescriptor<Enum>,\n values?: Array<Enum>\n ): this {\n return this.withFieldModifiedEnumUnsafe(property as string, enumModel, values);\n }\n\n public withFieldModifiedEnumUnsafe<Enum = any>(property: string, enumDesc?: EnumDescriptor<Enum>, values?: Array<Enum>): this {\n if (!this.model.type) {\n throw new MngInternalError(`withFieldModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attribute = TableviewUtil.getAttributeDefMap(this.model.type).find(a => a.name === property);\n if (attribute) {\n attribute.fieldType = FieldInputTypeEnum.Radio;\n const field = this.fields.find(f => f.property === property);\n if (field && field instanceof FieldInputDescriptor) {\n field.asRadioFromEnum(enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attribute.type) as EnumType), values);\n }\n }\n\n return this;\n }\n\n /**\n * Modifies selected field with lookup field.\n * @param property Model's property name.\n * @param lookupProvider provider to be added to field\n * @param titleProperty\n */\n public withFieldModifiedLookupWithProvider<ServiceType, FieldModel>(\n property: keyof EditorModel,\n lookupProvider: ILookupDataProvider<FieldModel, ServiceType>,\n titleProperty?: keyof FieldModel\n ): this {\n return this.withFieldModifiedLookupWithProviderUnsafe(property as string, lookupProvider, titleProperty as string);\n }\n\n public withFieldModifiedLookupWithProviderUnsafe<ServiceType, FieldModel>(\n property: string,\n lookupProvider: ILookupDataProvider<FieldModel, ServiceType>,\n titleProperty?: string\n ): this {\n this.removeFieldUnsafe(property);\n const field = this.addFieldLookupWithProviderUnsafe<ServiceType, FieldModel>(property, lookupProvider).asAutocomplete();\n\n if (titleProperty) {\n (field as FieldLookupDescriptor<any, any>).withOptionsLabelProperty(titleProperty);\n }\n\n return this;\n }\n\n /**\n * This method takes care of displaying correct/localized data in the editor\n * @param property property that tells us where on the model are localizations accessible\n * @param model Model for localizations\n * @param localeProperty property by which we find the locale\n */\n public localized<Property extends keyof EditorModel, LocalizationModel = ArrayItemType<EditorModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationType>(property: string, model: ModelDescriptor<LocalizationType>, localeProperty: string): this {\n this._localizationLocalizationProperty = property as string;\n this._localizationModel = model;\n this._localizationLocaleProperty = localeProperty as string;\n this._isLocalized = true;\n\n return this;\n }\n\n public nextEvent(type: MngFormEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFieldEventData<EditorModel>) {\n this._eventsSubject.next(new MngFormEvent(type, cmpType, cmpInstance, data));\n }\n\n public completeEvents() {\n this._eventsSubject.complete();\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n /**\n * Generates field based on attribute definition, used for auto model\n * @param descriptor Editor descriptor instance.\n * @param attribute Attribute definition.\n * @param field Optional, if defined will be replaced, otherwise new will be generated.\n * @param args Optional additional arguments mapped to filed type. Arguments depend on possible arguments on fields.\n * @internal\n */\n protected static upsertFieldFromAttributeDef<T>(\n descriptor: EditorDescriptorInst<T>,\n attribute: TableviewAttributeDef,\n field?: AFieldDescriptor<any, T>,\n ...args: any[]\n ): AFieldDescriptor<any, T> {\n if (field == null) {\n field = descriptor.addFieldUnsafe(attribute.name);\n }\n\n if (field instanceof FieldInputDescriptor) {\n if (attribute.enumType) {\n return field.asRadioFromEnum(enumModelGeneric(attribute.enumType));\n } else {\n return field.asType(attribute.fieldType ?? TableviewUtil.toFieldInputTypeFromColumnType(attribute.columnType, attribute.columnDisplayType), ...args);\n }\n }\n\n return field;\n }\n}\n\nexport class EditorDescriptor extends EditorDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<EditorModel>(\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n i18nBaseKey?: string | ClassType<unknown>,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel> {\n return new EditorDescriptorInst<EditorModel>(ModelDescriptor.create<EditorModel>(idProperty, titleProperty, i18nBaseKey), tableviewEditorType);\n }\n\n public static fromClass<EditorModel>(\n type: ClassType<EditorModel>,\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n i18nBaseKey?: ClassType<unknown> | string,\n tableviewEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel> {\n return new EditorDescriptorInst<EditorModel>(ModelDescriptor.fromClass(type, idProperty, titleProperty, i18nBaseKey), tableviewEditorType);\n }\n\n public static fromModel<EditorModel>(model: ModelDescriptor<EditorModel>, tableviewEditorType = TableviewEditorTypeEnum.None): EditorDescriptorInst<EditorModel> {\n return new EditorDescriptorInst<EditorModel>(model, tableviewEditorType);\n }\n\n /**\n * Creates editor descriptor automatically based on openapi model's attributes definition which is automatically extracted. All fields will be included.\n * @param type Model's class.\n * @param idProperty Id property representing model (optional).\n * @param titleProperty Title property representing model (optional). If not provided, it will be automatically chosen.\n * @param tableEditorType Type of editor in tableview (add, edit, view or none).\n */\n public static fromClassWithAutoAttrsDef<EditorModel>(\n type: ClassType<EditorModel>,\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n tableEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel> {\n return EditorDescriptor.fromClassWithCustomAttrsDef(type, TableviewUtil.getAttributeDefMap(type), idProperty, titleProperty, tableEditorType);\n }\n\n /**\n * Creates editor descriptor automatically based on openapi model's attributes definition provided in parameters. Only fields for provided attributes will be included.\n * @param type Model's class.\n * @param attributes List of attribute definitions from which fields should be created.\n * @param idProperty Id property representing model (optional).\n * @param titleProperty Title property representing model (optional). If not provided, it will be automatically chosen.\n * @param tableEditorType Type of editor in tableview (add, edit, view or none).\n */\n public static fromClassWithCustomAttrsDef<EditorModel>(\n type: ClassType<EditorModel>,\n attributes: TableviewAttributeDef[],\n idProperty?: keyof EditorModel,\n titleProperty?: keyof EditorModel,\n tableEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptorInst<EditorModel> {\n const descriptor = EditorDescriptor.fromClass(type, idProperty, titleProperty, undefined, tableEditorType);\n\n attributes\n .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))\n .forEach(attr =>\n EditorDescriptorInst.upsertFieldFromAttributeDef(\n descriptor,\n attr,\n descriptor.fields.find(col => col.property === attr.name)\n )\n );\n return descriptor;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {IColumnValueComponent} from '../../models';\nimport {GetterFn} from '../../types';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {FilterDescriptor} from '../filter';\nimport {EnumDescriptor} from '../model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum} from '../types';\nimport {ITableDescriptorInternal} from './internal/table.model';\n\nexport type ColumnCurrencyOptsType<Property = string> = {\n currencyProperty?: Property;\n currency?: string;\n currencyDisplay?: 'symbol' | 'code' | 'name';\n} & ColumnNumberGroupingOptsType &\n ColumnNumberFractionOptsType &\n ColumnLocaleOptsType;\n\nexport type ColumnNumberOptsType = ColumnNumberGroupingOptsType & ColumnNumberFractionOptsType & ColumnLocaleOptsType;\n\nexport type ColumnNumberGroupingOptsType = {\n groupSeparator?: boolean;\n};\n\nexport type ColumnNumberFractionOptsType = {\n minIntegerDigits?: number;\n minFractionDigits?: number;\n maxFractionDigits?: number;\n};\n\nexport type ColumnLocaleOptsType = {\n locale?: string;\n};\n\nexport class ColumnDescriptor<ColumnModel, TableModel, ColumnValue = ColumnModel> {\n protected readonly _table: ITableDescriptorInternal<TableModel>;\n protected readonly _property: string;\n private _columnType: ColumnTypeEnum = ColumnTypeEnum.String;\n private _columnDisplayType: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.String;\n protected _title?: string;\n private _displayFormat?: string;\n private _locale?: string;\n private _template?: string;\n private _getter?: GetterFn<ColumnValue, TableModel>;\n private _isMultiline = false;\n private _hasValueAsTooltip = false;\n private _isReorderable = false;\n private _isToggleable = false;\n private _isVisible = true;\n\n // styling\n private _headerClassName = '';\n private _className = '';\n private _classNameMapFn?: (className?: string, item?: TableModel) => string;\n private _width: number | null = null;\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n\n // enum specifics\n private _enum?: EnumDescriptor<any>;\n\n // boolean specifics\n private _booleanAsIcon = false;\n private _booleanYes?: string;\n private _booleanNo?: string;\n\n // currency specifics\n private _currencyCode?: string;\n private _currencyProperty?: string;\n private _currencyDisplay?: 'symbol' | 'code' | 'name';\n\n // custom specifics\n private _customComponentType?: Type<IColumnValueComponent<TableModel>>;\n\n // helpers\n private _hasCopyToClipboard = false;\n private _clipboardValueGetter?: GetterFn<ColumnValue, TableModel>;\n\n // localization\n private _isLocalized = false;\n private _localizationExistsProperty?: string;\n\n constructor(table: ITableDescriptorInternal<TableModel>, property: string) {\n this._table = table;\n this._property = property as string;\n }\n\n public get columnType() {\n return this._columnType;\n }\n\n public get columnDisplayType() {\n return this._columnDisplayType;\n }\n\n public get title() {\n return this._title;\n }\n\n public get displayFormat() {\n return this._displayFormat;\n }\n\n public get table() {\n return this._table;\n }\n\n public get property() {\n return this._property;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get className() {\n return this._className;\n }\n\n public get classNameMapFn() {\n return this._classNameMapFn;\n }\n\n public get width() {\n return this._width;\n }\n\n public get minWidth() {\n return this._minWidth;\n }\n\n public get maxWidth() {\n return this._maxWidth;\n }\n\n public get enum() {\n return this._enum;\n }\n\n public get booleanAsIcon() {\n return this._booleanAsIcon;\n }\n\n public get booleanYes() {\n return this._booleanYes;\n }\n\n public get booleanNo() {\n return this._booleanNo;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currencyCode() {\n return this._currencyCode;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public get currencyProperty() {\n return this._currencyProperty;\n }\n\n public get hasCopyToClipboard() {\n return this._hasCopyToClipboard;\n }\n\n public get clipboardValueGetter() {\n return this._clipboardValueGetter;\n }\n\n public get template() {\n return this._template;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get isMultiline() {\n return this._isMultiline;\n }\n\n public get hasValueAsTooltip() {\n return this._hasValueAsTooltip;\n }\n\n public get isReorderable() {\n return this._isReorderable;\n }\n\n public get isToggleable() {\n return this._isToggleable;\n }\n\n public get isVisible() {\n return this._isVisible;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationExistsProperty() {\n return this._localizationExistsProperty;\n }\n\n /**\n * Converts column to given type with additional arguments\n * @param type column type enum\n * @param displayType column display type\n * @param args any additional arguments for column (optional)\n */\n public asType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? this.asCurrency(...args) : this.asNumber(...args);\n case ColumnTypeEnum.Boolean:\n return this.asBoolean(...args);\n case ColumnTypeEnum.Date:\n return this.asDate(...args);\n case ColumnTypeEnum.Enum:\n return this.asEnumUnsafe(args[0] as EnumDescriptor<any>);\n case ColumnTypeEnum.Custom:\n return this.asCustomComponent(args[0]);\n case ColumnTypeEnum.String:\n default:\n return this;\n }\n }\n\n public asNumber(opts?: ColumnNumberOptsType): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Number;\n this._displayFormat =\n opts?.minIntegerDigits || opts?.minFractionDigits || opts?.maxFractionDigits\n ? `${opts?.minIntegerDigits ?? 0}.${opts?.minFractionDigits ?? 0}-${opts?.maxFractionDigits ?? opts?.minFractionDigits ?? 0}`\n : undefined;\n this._locale = opts?.locale;\n return this;\n }\n\n public asCurrency(opts?: ColumnCurrencyOptsType<keyof ColumnModel>): this {\n return this.asCurrencyUnsafe({\n ...opts,\n currencyProperty: opts?.currencyProperty ? (opts.currencyProperty as string) : undefined\n });\n }\n\n public asCurrencyUnsafe(opts?: ColumnCurrencyOptsType): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Currency;\n this._currencyCode = opts?.currency;\n this._currencyProperty = opts?.currencyProperty;\n this._currencyDisplay = opts?.currencyDisplay;\n this._displayFormat =\n opts?.minIntegerDigits || opts?.minFractionDigits || opts?.maxFractionDigits\n ? `${opts?.minIntegerDigits ?? 0}.${opts?.minFractionDigits ?? 0}-${opts?.maxFractionDigits ?? opts?.minFractionDigits ?? 0}`\n : undefined;\n this._locale = opts?.locale;\n return this;\n }\n\n public asDate(displayFormat = 'dd.MM.yyyy'): this {\n this._columnType = ColumnTypeEnum.Date;\n this._columnDisplayType = ColumnDisplayTypeEnum.Date;\n this._displayFormat = displayFormat;\n return this;\n }\n\n public asBoolean(yes?: string, no?: string, asIcon = false): this {\n this._columnType = ColumnTypeEnum.Boolean;\n this._columnDisplayType = ColumnDisplayTypeEnum.Boolean;\n this._booleanAsIcon = asIcon;\n this._booleanYes = yes;\n this._booleanNo = no;\n return this;\n }\n\n public asEnumUnsafe(enumDesc: EnumDescriptor<any>): this {\n this._columnType = ColumnTypeEnum.Enum;\n this._columnDisplayType = ColumnDisplayTypeEnum.Enum;\n this._enum = enumDesc;\n return this;\n }\n\n public asCustomComponent(customComponentType: Type<IColumnValueComponent<TableModel>>): this {\n this._columnType = ColumnTypeEnum.Custom;\n this._columnDisplayType = ColumnDisplayTypeEnum.Component;\n this._customComponentType = customComponentType;\n return this;\n }\n\n public asHtml(): this {\n this._columnDisplayType = ColumnDisplayTypeEnum.Html;\n return this;\n }\n\n public withClassName(className?: string, headerClassName?: string, classNameMapFn?: (className?: string, item?: TableModel) => string): this {\n this._className = className ?? '';\n this._headerClassName = headerClassName ?? '';\n this._classNameMapFn = classNameMapFn;\n return this;\n }\n\n public withWidth(width?: number, minWidth?: number, maxWidth?: number): this {\n this._width = width ?? null;\n this._minWidth = minWidth ?? null;\n this._maxWidth = maxWidth ?? null;\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withFilterUnsafe(forceSimple = false): FilterDescriptor<any, TableModel> {\n return this._table.addFilterFromColumnDescriptorUnsafe(this, forceSimple);\n }\n\n public withSortUnsafe(isDefault: boolean = false, ascending?: boolean): this {\n this._table.withSortUnsafe(this.property, isDefault, ascending);\n return this;\n }\n\n public withCopyToClipboard(hasCopyToClipboard = true, clipboardValueGetter?: GetterFn<ColumnValue, TableModel>): this {\n this._hasCopyToClipboard = hasCopyToClipboard;\n\n if (clipboardValueGetter) {\n this._clipboardValueGetter = clipboardValueGetter;\n }\n\n return this;\n }\n\n public withTemplate(template: string): this {\n this._template = template;\n return this;\n }\n\n public withGetter(getter?: GetterFn<ColumnValue, TableModel>): this {\n this._getter = getter;\n return this;\n }\n\n public withMultiline(isMultiline = true): this {\n this._isMultiline = isMultiline;\n return this;\n }\n\n public withValueAsTooltip(valueAsTooltip = true): this {\n this._hasValueAsTooltip = valueAsTooltip;\n return this;\n }\n\n public withReorderable(isReorderable = true): this {\n this._isReorderable = isReorderable;\n return this;\n }\n\n public withToggleable(isToggleable = true, isVisible = true): this {\n this._isToggleable = isToggleable;\n this._isVisible = isVisible;\n return this;\n }\n\n public localized(existsProperty?: string): this {\n if (existsProperty) {\n this._localizationExistsProperty = existsProperty;\n } else {\n this._localizationExistsProperty = `${this._property}Localized`;\n }\n return this;\n }\n\n public copy(): ColumnDescriptor<ColumnModel, TableModel, ColumnValue> {\n const descriptor = new ColumnDescriptor<ColumnModel, TableModel, ColumnValue>(this._table, this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(obj: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>) {\n obj._title = this._title;\n obj._columnType = this._columnType;\n obj._columnDisplayType = this._columnDisplayType;\n obj._enum = this._enum;\n obj._booleanAsIcon = this._booleanAsIcon;\n obj._booleanYes = this._booleanYes;\n obj._booleanNo = this._booleanNo;\n obj._locale = this._locale;\n obj._currencyCode = this._currencyCode;\n obj._currencyDisplay = this._currencyDisplay;\n obj._currencyProperty = this._currencyProperty;\n obj._displayFormat = this._displayFormat;\n obj._headerClassName = this._headerClassName;\n obj._className = this._className;\n obj._classNameMapFn = this._classNameMapFn;\n obj._width = this._width;\n obj._minWidth = this._minWidth;\n obj._maxWidth = this._maxWidth;\n obj._customComponentType = this._customComponentType;\n obj._hasCopyToClipboard = this._hasCopyToClipboard;\n obj._template = this._template;\n obj._getter = this._getter;\n obj._isMultiline = this._isMultiline;\n obj._hasValueAsTooltip = this._hasValueAsTooltip;\n obj._isReorderable = this._isReorderable;\n obj._isToggleable = this._isToggleable;\n obj._isVisible = this._isVisible;\n obj._isLocalized = this._isLocalized;\n obj._localizationExistsProperty = this._localizationExistsProperty;\n }\n}\n\nexport class ColumnDynamicDescriptor extends ColumnDescriptor<any, any> {\n protected override _title: string | undefined = undefined;\n private _visibility = true;\n\n // private _filterStatus;\n\n constructor(table: ITableDescriptorInternal<any>, property: string) {\n super(table, property);\n }\n\n public get visibility() {\n return this._visibility;\n }\n\n /**\n * sets column's title and returns this column\n * @param title title to be set\n * @param override should column title if all ready set?\n */\n public override withTitle(title: string, override = false): this {\n if (this._title == null || override) {\n this._title = title;\n }\n return this;\n }\n\n /**\n * defines automatic type and returns this column\n * @param value\n */\n public withAutomaticType(value: string): this {\n TableviewUtil.stringColumnConverter(this, value);\n return this;\n }\n\n /**\n * sets visibility state for column and returns this column\n * @param visibility\n */\n public withVisibility(visibility: boolean): this {\n this._visibility = visibility;\n return this;\n }\n\n /**\n * creates deep copy of column dynamic descriptor\n */\n public override copy(): ColumnDynamicDescriptor {\n const descriptor = new ColumnDynamicDescriptor(this._table, this._property);\n this.copyFieldsTo(descriptor);\n descriptor._title = this._title;\n descriptor._visibility = this._visibility;\n return descriptor;\n }\n\n public toColumnDescriptor(tableDescriptor: ITableDescriptorInternal<any>): ColumnDescriptor<any, any> {\n const descriptor = new ColumnDescriptor(tableDescriptor, this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","export class SortDescriptor<TableModel> {\n protected readonly _property: string;\n protected _showOnColumn: string;\n\n protected _defaultIsEnabled = false;\n protected _defaultIsAscending?: boolean = undefined;\n protected _defaultOrder?: number = undefined;\n\n constructor(property: string) {\n this._property = property;\n this._showOnColumn = property;\n }\n\n public get property() {\n return this._property;\n }\n\n public get showOnColumn() {\n return this._showOnColumn;\n }\n\n public get defaultIsEnabled() {\n return this._defaultIsEnabled;\n }\n\n public get defaultIsAscending() {\n return this._defaultIsAscending;\n }\n\n public get defaultOrder() {\n return this._defaultOrder;\n }\n\n public withShowOnColumn(property: keyof TableModel): this {\n return this.withShowOnColumnUnsafe(property as string);\n }\n\n public withShowOnColumnUnsafe(property: string): this {\n this._showOnColumn = property;\n return this;\n }\n\n public withDefaultSort(enabled = true, ascending?: boolean, order?: number): this {\n this._defaultIsEnabled = enabled;\n this._defaultIsAscending = true;\n this._defaultOrder = order;\n return this;\n }\n\n public copy(): SortDescriptor<TableModel> {\n const descriptor = new SortDescriptor<TableModel>(this._property);\n descriptor._defaultIsEnabled = this._defaultIsEnabled;\n descriptor._defaultIsAscending = this._defaultIsAscending;\n descriptor._defaultOrder = this._defaultOrder;\n return descriptor;\n }\n}\n","import {FilterMatchModeExtendedType, MngInternalError} from '../../models';\nimport {MngLoggerService} from '../../services';\nimport {FilterTypeEnum, InputTrimType} from '../types';\n\nexport class FilterDescriptor<FilterModel, TableModel> {\n protected readonly _property: string;\n protected _showOnColumn: string;\n\n protected _filterType = FilterTypeEnum.String;\n\n protected _hasDefaultValue = false;\n protected _defaultMatchMode?: FilterMatchModeExtendedType;\n protected _defaultValue?: FilterModel | FilterModel[];\n protected _matchModes: string[] | null = null;\n\n // number filter specific properties\n protected _numberMinFractionDigits?: number;\n protected _numberMaxFractionDigits?: number;\n protected _numberUseGrouping = true;\n\n // date filter specific properties\n protected _datePickerFormat?: string;\n protected _datePickerShowTime = false;\n protected _datePickerShowSeconds = false;\n protected _datePickerValueNoTime?: boolean = undefined;\n protected _datePickerValueNoTimezone?: boolean = undefined;\n protected _datePickerValueUtc?: boolean = undefined;\n\n protected _placeholder?: string;\n protected _className = '';\n protected _columnClassName = '';\n protected _columnWidth: number | null = null;\n protected _columnMinWidth: number | null = null;\n protected _inputTrim?: InputTrimType;\n\n constructor(property: string) {\n this._property = property;\n this._showOnColumn = property;\n }\n\n public get filterType() {\n return this._filterType;\n }\n\n public get showOnColumn() {\n return this._showOnColumn;\n }\n\n public get hasDefaultValue() {\n return this._hasDefaultValue;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get defaultMatchMode() {\n return this._defaultMatchMode;\n }\n\n public get matchModes() {\n return this._matchModes;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get datePickerValueUtc() {\n return this._datePickerValueUtc;\n }\n\n public get datePickerValueNoTimezone() {\n return this._datePickerValueNoTimezone;\n }\n\n public get datePickerValueNoTime() {\n return this._datePickerValueNoTime;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get className() {\n return this._className;\n }\n\n public get columnClassName() {\n return this._columnClassName;\n }\n\n public get columnWidth() {\n return this._columnWidth;\n }\n\n public get columnMinWidth() {\n return this._columnMinWidth;\n }\n\n public get trimOption() {\n return this._inputTrim;\n }\n\n public get property() {\n return this._property;\n }\n\n public asFilterType(filterType: FilterTypeEnum) {\n this._filterType = filterType;\n return this;\n }\n\n public withShowOnColumn(property: keyof TableModel): this {\n return this.withShowOnColumnUnsafe(property as string);\n }\n\n public withShowOnColumnUnsafe(property: string): this {\n this._showOnColumn = property;\n return this;\n }\n\n public withDefaultFilter(value: FilterModel | FilterModel[] | undefined, matchMode: FilterMatchModeExtendedType): this {\n this._hasDefaultValue = true;\n this._defaultValue = value;\n this._defaultMatchMode = matchMode;\n this.validateDefaultFilter(value, matchMode);\n return this;\n }\n\n protected validateDefaultFilter(value: FilterModel | FilterModel[] | undefined, matchMode: FilterMatchModeExtendedType) {\n if (matchMode === 'between' && (!Array.isArray(value) || value.filter(v => v != null).length !== 2)) {\n throw new MngInternalError(`Default value for filter match mode ${matchMode} must provide exactly 2 values in array`);\n }\n if ((matchMode === 'in' || matchMode === 'notIn') && (!Array.isArray(value) || value.filter(v => v != null).length === 0)) {\n throw new MngInternalError(`Default value for filter match mode ${matchMode} must be array and provide at least 1 non-null value`);\n }\n if (matchMode === 'exists' || matchMode === 'doesNotExist') {\n this._defaultValue = undefined;\n }\n\n if (matchMode && this._matchModes && this._matchModes.indexOf(matchMode) < 0) {\n this._defaultMatchMode = undefined;\n MngLoggerService.get().debug(`WARNING: Default filter match mode '${matchMode}' could not be assigned for property ${this._property}.`);\n }\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withDateFormat(format?: string, showTime = false, showSeconds = false): this {\n this._datePickerFormat = format;\n this._datePickerShowTime = showTime;\n this._datePickerShowSeconds = showSeconds;\n return this;\n }\n\n public withDateValue(utc?: boolean, noTimezone?: boolean, noTime?: boolean): this {\n if (typeof utc !== 'undefined') {\n this._datePickerValueUtc = utc;\n }\n if (typeof noTimezone !== 'undefined') {\n this._datePickerValueNoTimezone = noTimezone;\n }\n if (typeof noTime !== 'undefined') {\n this._datePickerValueNoTime = noTime;\n }\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withColumnClassName(className: string): this {\n this._columnClassName = className;\n return this;\n }\n\n public withColumnWidth(width?: number, minWidth?: number): this {\n this._columnWidth = width ?? null;\n this._columnMinWidth = minWidth ?? null;\n return this;\n }\n\n public withInputTrimming(trimOption: InputTrimType = 'both'): this {\n this._inputTrim = trimOption;\n return this;\n }\n\n public withMatchModes(matchModes: Array<FilterMatchModeExtendedType>): this {\n this._matchModes = matchModes;\n return this;\n }\n\n public copy(): FilterDescriptor<FilterModel, TableModel> {\n const descriptor = new FilterDescriptor<FilterModel, TableModel>(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(descriptor: FilterDescriptor<FilterModel, TableModel>) {\n descriptor._filterType = this._filterType;\n descriptor._hasDefaultValue = this._hasDefaultValue;\n descriptor._defaultValue = this._defaultValue;\n descriptor._defaultMatchMode = this._defaultMatchMode;\n descriptor._numberMinFractionDigits = this._numberMinFractionDigits;\n descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;\n descriptor._numberUseGrouping = this._numberUseGrouping;\n descriptor._datePickerFormat = this._datePickerFormat;\n descriptor._datePickerShowTime = this._datePickerShowTime;\n descriptor._datePickerValueUtc = this._datePickerValueUtc;\n descriptor._datePickerValueNoTimezone = this._datePickerValueNoTimezone;\n descriptor._datePickerValueNoTime = this._datePickerValueNoTime;\n descriptor._placeholder = this._placeholder;\n descriptor._className = this._className;\n descriptor._columnWidth = this._columnWidth;\n descriptor._columnMinWidth = this._columnMinWidth;\n descriptor._columnClassName = this._columnClassName;\n }\n}\n","import {of} from 'rxjs';\n\nimport {ILookupDataProvider, LookupDataProvider, LookupDataProviderLookupFnType} from '../../data-providers';\nimport {EnumValue, FilterMatchModeExtendedType, MngInternalError} from '../../models';\nimport {ClassType, EnumConstantType, ServiceClassType} from '../../types';\nimport {EnumUtil, ModelUtil} from '../../utils';\nimport {ILookupDescriptor} from '../interfaces';\nimport {EnumDescriptor} from '../model';\nimport {FilterLookupTypeEnum, FilterTypeEnum} from '../types';\nimport {FilterDescriptor} from './filter.descriptor';\n\nexport type FilterLookupDescriptorConstructorOptsType<FilterModel, Service> = FilterLookupDescriptorCreateOptsProviderType<FilterModel, Service> & {\n type?: ClassType<FilterModel>;\n optionsValueProperty?: string | null;\n};\n\nexport type FilterLookupDescriptorCreateOptsProviderType<FilterModel, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: ILookupDataProvider<FilterModel, Service>;\n};\n\nexport type FilterLookupAutocompleteOptsType = {\n openOnFocus?: boolean;\n inlineSearch?: boolean;\n autoClear?: boolean;\n};\n\nexport class FilterLookupDescriptor<FilterModel, TableModel, Service = any> extends FilterDescriptor<FilterModel, TableModel> implements ILookupDescriptor<FilterModel> {\n protected readonly _dataProvider: ILookupDataProvider<FilterModel, Service>;\n protected readonly _optionsValueProperty?: string | null;\n protected _lookupType?: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n protected _optionsLabelProperty?: string;\n protected _optionsLabelTranslate = false;\n protected _multiselect = false;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus?: boolean;\n protected _autocompleteInlineSearch?: boolean;\n protected _autocompleteAutoClear?: boolean;\n\n constructor(property: string, cfg?: FilterLookupDescriptorConstructorOptsType<FilterModel, Service>) {\n super(property);\n this._filterType = FilterTypeEnum.Lookup;\n\n if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n } else {\n this._dataProvider = LookupDataProvider.fromAnyParam(cfg?.type, cfg?.serviceType);\n }\n\n this._optionsValueProperty =\n typeof cfg?.optionsValueProperty === 'undefined' ? ModelUtil.findIdAttribute(this._dataProvider.classType) ?? undefined : cfg?.optionsValueProperty;\n\n ModelUtil.trySetLookupItemsProperties(this, false);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get optionsLabelProperty() {\n return this._optionsLabelProperty;\n }\n\n public get optionsLabelTranslate() {\n return this._optionsLabelTranslate;\n }\n\n public get optionsValueProperty() {\n return this._optionsValueProperty ?? undefined;\n }\n\n public get multiselect() {\n return this._multiselect;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public withOptionsLabelProperty(property: keyof FilterModel, translate = false): this {\n return this.withOptionsLabelPropertyUnsafe(property as string, translate);\n }\n\n public withOptionsLabelPropertyUnsafe(property: string, translate = false): this {\n this._optionsLabelProperty = property;\n this._optionsLabelTranslate = translate;\n return this;\n }\n\n /**\n * Method will set `optionsValueProperty`, because track properties are not supported here as filters need final value to work correctly.\n * Use `optionsValueProperty` instead.\n */\n public withOptionsTrackProperty(): this {\n return this;\n }\n\n public withOptionsTrackPropertyUnsafe(): this {\n return this;\n }\n\n public withLookup(lookup?: LookupDataProviderLookupFnType<FilterModel, Service>): this {\n this._dataProvider.withLookup(lookup);\n return this;\n }\n\n public withMultiselect(multiselect = true) {\n this._multiselect = multiselect;\n this._defaultMatchMode = 'in';\n this.withMatchModes(['in', 'notIn']);\n return this;\n }\n\n public withDropdownClassName(dropdownClassName: string): this {\n this._dropdownClassName = dropdownClassName;\n return this;\n }\n\n public override withDefaultFilter(value: FilterModel | FilterModel[] | undefined, matchMode: FilterMatchModeExtendedType): this {\n this._hasDefaultValue = true;\n this._defaultValue = value;\n this._defaultMatchMode = matchMode;\n\n this.validateDefaultFilter(value, matchMode);\n\n if ((Array.isArray(value) && !this.multiselect) || (this.multiselect && !Array.isArray(value))) {\n throw new MngInternalError(`Default value not in correct format for property ${this._property}.`, {name: 'FilterDescriptorError'});\n }\n\n return this;\n }\n\n public asAutocomplete(opts?: FilterLookupAutocompleteOptsType): this {\n this._lookupType = FilterLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = opts?.autoClear;\n this._autocompleteOpenOnFocus = opts?.openOnFocus;\n this._autocompleteInlineSearch = opts?.inlineSearch;\n return this;\n }\n\n public override copy(): FilterLookupDescriptor<FilterModel, TableModel, Service> {\n const descriptor = new FilterLookupDescriptor<FilterModel, TableModel, Service>(this._property, {\n dataProvider: this.dataProvider\n });\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected override copyFieldsTo(filter: FilterLookupDescriptor<FilterModel, TableModel, Service>) {\n super.copyFieldsTo(filter);\n filter._lookupType = this._lookupType;\n filter._optionsLabelProperty = this._optionsLabelProperty;\n filter._optionsLabelTranslate = this._optionsLabelTranslate;\n filter._multiselect = this._multiselect;\n filter._dropdownClassName = this._dropdownClassName;\n filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n filter._autocompleteInlineSearch = this._autocompleteInlineSearch;\n }\n}\n\nexport class FilterLookupEnumDescriptor<Enum, TableModel> extends FilterLookupDescriptor<EnumValue, TableModel> {\n private readonly _enum: EnumDescriptor<Enum>;\n private readonly _optionEnumValues: EnumValue[];\n private readonly _nameAsValue: boolean = false;\n\n constructor(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n super(property, {\n dataProvider: LookupDataProvider.create<EnumValue>(),\n optionsValueProperty: 'value'\n });\n\n this._enum = enumDesc;\n\n this._optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(this._enum.type, options, this._enum.nameAsValue, this._enum.i18nBaseKey ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(this._enum.type, this._enum.nameAsValue, this._enum.i18nBaseKey ?? undefined);\n\n this.withLookup(() => of(this._optionEnumValues));\n this.withOptionsLabelProperty('title', this._enum.i18nBaseKey !== null);\n }\n\n public get enum() {\n return this._enum;\n }\n\n public override asAutocomplete(opts?: FilterLookupAutocompleteOptsType): this {\n super.asAutocomplete({\n ...opts,\n openOnFocus: opts?.openOnFocus ?? true,\n inlineSearch: opts?.inlineSearch ?? true\n });\n return this;\n }\n\n public withMultiselectEnum(multiselect = true): FilterLookupEnumDescriptor<Enum, TableModel> {\n return super.withMultiselect(multiselect) as FilterLookupEnumDescriptor<Enum, TableModel>;\n }\n\n public override withDefaultFilter(): this {\n throw new MngInternalError(`withDefaultFilter on FilterLookupEnumDescriptor should not be used. Use withDefaultFilterEnum instead.`, {name: 'FilterDescriptorError'});\n }\n\n public withDefaultFilterEnum(value: EnumConstantType | EnumConstantType[] | undefined, matchMode: FilterMatchModeExtendedType): this {\n let defaultOptionValue: any | any[];\n if (Array.isArray(value)) {\n defaultOptionValue = this._nameAsValue ? value.map(value => EnumUtil.getConstantName(this.enum.type, value)) : value;\n } else if (value != null) {\n defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this.enum.type, value) : value;\n }\n\n if (defaultOptionValue != null) {\n let option: any | any[];\n if (Array.isArray(defaultOptionValue)) {\n option = defaultOptionValue.map(value => this._optionEnumValues.find(o => o.value === value));\n } else {\n option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n }\n\n let defaultFilterValue: any | any[];\n if (Array.isArray(option)) {\n defaultFilterValue = this._optionsValueProperty ? option.map(value => value[this._optionsValueProperty as keyof object]) : option;\n } else {\n defaultFilterValue = this._optionsValueProperty ? option[this._optionsValueProperty as keyof object] : option;\n }\n\n super.withDefaultFilter(defaultFilterValue, matchMode);\n }\n return this;\n }\n\n public override copy(): FilterLookupEnumDescriptor<Enum, TableModel> {\n const field = new FilterLookupEnumDescriptor<Enum, TableModel>(this._property, this.enum, []);\n this.copyFieldsTo(field);\n return field;\n }\n}\n","import {ILookupDataProvider} from '../../data-providers';\nimport {DataListResult, MngInternalError, TableviewAttributeDef} from '../../models';\nimport {TypeRegistry} from '../../registry/type.registry';\nimport {ClassType, EnumConstantType, EnumType} from '../../types';\nimport {DateUtil, ModelUtil} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor} from '../filter';\nimport {EnumDescriptor, ModelDescriptor, enumModelGeneric} from '../model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, FilterTypeEnum, TableDynamicColumnsModeEnum, TablePaginationModeEnum, TableSizeEnum} from '../types';\nimport {ColumnDescriptor, ColumnDynamicDescriptor} from './column.descriptor';\nimport {IColumnsManageInterface} from './internal/table-columns.model';\nimport {ITableDescriptorInternal} from './internal/table.model';\nimport {SortDescriptor} from './sort.descriptor';\n\nexport class TableDescriptorInst<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>\n implements ITableDescriptorInternal<TableModel>, IColumnsManageInterface<TableModel, Sorts, Filters>\n{\n private readonly _model: ModelDescriptor<TableModel>;\n protected readonly _autoGenerated;\n\n private _identifier?: string;\n private _trackProperty?: string;\n private _paginationMode?: TablePaginationModeEnum;\n private _rowsPerPageOptions?: number[];\n private _defaultNumRows?: number;\n protected _columns: Array<ColumnDescriptor<any, TableModel>> = [];\n private _title?: string;\n private _hideHeader = false;\n private _loadingText?: string;\n private _loadingIcon: string | null = 'pi pi-spinner';\n\n // extra\n private _hasHover = true;\n private _hasGridlines = false;\n private _hasResizableColumns = false;\n private _columnResizeMode?: 'fit' | 'expand';\n\n // special columns\n private _selectionColumnFrozen?: boolean;\n private _actionColumnFrozen?: boolean;\n\n // styling\n private _size: TableSizeEnum = TableSizeEnum.Large;\n private _className = '';\n private _headerClassName?: string;\n private _rowClassName?: string;\n private _rowClassNameMapFn?: (className?: string, item?: TableModel) => string;\n private _tableFullHeightOffset?: number;\n private _rowHeight?: number;\n\n // filters&sorts\n private _filters: FilterDescriptor<any, TableModel>[] = [];\n private _sorts: SortDescriptor<TableModel>[] = [];\n\n // localization\n private _isLocalized = false;\n private _localizationLocaleProperty?: string;\n\n protected constructor(model: ModelDescriptor<TableModel>, autoGenerated = false) {\n this._model = model;\n this._trackProperty = this._model.idProperty;\n this._autoGenerated = autoGenerated;\n }\n\n public get identifier() {\n return this._identifier;\n }\n\n public get trackProperty() {\n return this._trackProperty;\n }\n\n public get paginationMode() {\n return this._paginationMode;\n }\n\n get rowsPerPageOptions() {\n return this._rowsPerPageOptions;\n }\n\n get defaultNumRows() {\n return this._defaultNumRows;\n }\n\n public get columns() {\n return this._columns;\n }\n\n public get title() {\n return this._title;\n }\n\n public get hideHeader() {\n return this._hideHeader;\n }\n\n public get loadingText() {\n return this._loadingText;\n }\n\n public get loadingIcon() {\n return this._loadingIcon;\n }\n\n public get filters() {\n return this._filters;\n }\n\n public get sorts() {\n return this._sorts;\n }\n\n public get model() {\n return this._model;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get tableFullHeightOffset() {\n return this._tableFullHeightOffset;\n }\n\n public get rowHeight() {\n return this._rowHeight;\n }\n\n public get hasHover() {\n return this._hasHover;\n }\n\n public get hasGridlines() {\n return this._hasGridlines;\n }\n\n public get hasResizableColumns() {\n return this._hasResizableColumns;\n }\n\n public get columnResizeMode() {\n return this._columnResizeMode;\n }\n\n public get rowClassName() {\n return this._rowClassName;\n }\n\n public get rowClassNameMapFn() {\n return this._rowClassNameMapFn;\n }\n\n public get selectionColumnFrozen() {\n return this._selectionColumnFrozen;\n }\n\n public get actionColumnFrozen() {\n return this._actionColumnFrozen;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n /**\n * Track property is used for the purpose of combined saving user preferences in localstorage if 2 tables have the same track properties they will share the same localstorage entry.\n * Similarly, this property can also be used to differentiate two tables of the same model on the same url (so that they have separate entries in localstorage).\n * @param identifier\n */\n public withIdentifier(identifier: string): this {\n this._identifier = identifier;\n return this;\n }\n\n public withTrackProperty(property?: keyof TableModel): this {\n return this.withTrackPropertyUnsafe(property as string);\n }\n\n public withTrackPropertyUnsafe(property?: string): this {\n this._trackProperty = property;\n return this;\n }\n\n public getColumn(property: keyof TableModel) {\n return this.getColumnUnsafe(property as string);\n }\n\n public getColumnUnsafe(property: string) {\n return this._columns.find(col => col.property === property) ?? null;\n }\n\n public removeColumn(property: keyof TableModel): void {\n this.removeColumnUnsafe(property as string);\n }\n\n public removeColumnUnsafe(property: string): void {\n const columnIdx = this._columns.findIndex(c => c.property === property);\n this._columns.splice(columnIdx, 1);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>): this {\n this._columns.push(column);\n return this;\n }\n\n public addColumn<PropertyKey extends keyof TableModel>(property: PropertyKey) {\n const column = new ColumnDescriptor<NonNullable<TableModel[PropertyKey]>, TableModel, TableModel[PropertyKey]>(this, property as string);\n this._columns.push(column);\n return column;\n }\n\n public addColumnEnum<PropertyKey extends keyof TableModel, Enum extends NonNullable<TableModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n const column = new ColumnDescriptor<Enum, TableModel, TableModel[PropertyKey]>(this, property as string);\n column.asEnumUnsafe(enumDesc);\n this._columns.push(column);\n return column;\n }\n\n public addColumnUnsafe<ColumnModel = unknown>(property: string): ColumnDescriptor<ColumnModel, TableModel> {\n const column = new ColumnDescriptor<ColumnModel, TableModel>(this, property);\n this._columns.push(column);\n return column;\n }\n\n public withColumns(...properties: (keyof TableModel)[]): this {\n properties.forEach(p => this.addColumn(p));\n return this;\n }\n\n public withPaginationMode(paginationMode: TablePaginationModeEnum): this {\n this._paginationMode = paginationMode;\n return this;\n }\n\n public withRowsPerPage(rows: number, options?: Array<number>) {\n this._defaultNumRows = rows;\n this._rowsPerPageOptions = options;\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n\n return this;\n }\n\n public withHideHeader(hideHeader = true) {\n this._hideHeader = hideHeader;\n return this;\n }\n\n public withLoading(text?: string, icon?: string | null): this {\n this._loadingText = text;\n this._loadingIcon = icon === undefined ? 'pi pi-spinner' : icon;\n return this;\n }\n\n /**\n * Helper method that enables/disables reorderable property on all columns currently in the descriptor.\n * @param columnsReorderable\n */\n public withCurrentColumnsReorderable(columnsReorderable = true): this {\n for (const col of this.columns) {\n col.withReorderable(columnsReorderable);\n }\n return this;\n }\n\n /**\n * Helper method that enables/disables toggleable property on all columns currently in the descriptor.\n * @param columnsToggleable\n */\n public withCurrentColumnsToggleable(columnsToggleable = true): this {\n for (const col of this.columns) {\n col.withToggleable(columnsToggleable);\n }\n return this;\n }\n\n public getSort(property: Sorts) {\n return this.getSortUnsafe(property as string);\n }\n\n public getSortUnsafe(property: string) {\n return this._sorts.find(s => s.property === property) ?? null;\n }\n\n public removeSort(property: Sorts) {\n return this.removeSortUnsafe(property as string);\n }\n\n public removeSortUnsafe(property: string) {\n const sortIdx = this._sorts.findIndex(c => c.property === property);\n this._sorts.splice(sortIdx, 1);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this.addSortUnsafe(property as string, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n const sort = new SortDescriptor<TableModel>(property);\n if (isDefault) {\n const defaultOrderMax = this._sorts\n .filter(s => s.defaultIsEnabled)\n .reduce((acc, s) => (s.defaultOrder !== undefined && s.defaultOrder > acc ? s.defaultOrder : acc), -1);\n sort.withDefaultSort(true, ascending, defaultOrderMax + 1);\n }\n this._sorts.push(sort);\n return sort;\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n return this.withSortUnsafe(property as string, isDefault, ascending);\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this.addSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, order?: number, enabled?: boolean): this {\n return this.withDefaultSortUnsafe(property as string, ascending, order, enabled);\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this {\n let sort = this._sorts.find(s => s.property === property);\n if (!sort) {\n sort = new SortDescriptor(property);\n this._sorts.push(sort);\n }\n sort.withDefaultSort(enabled ?? true, ascending, order);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n return this.withSortsUnsafe(...(properties as string[]));\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n properties.forEach(p => {\n this._sorts.push(new SortDescriptor(p));\n });\n return this;\n }\n\n public getFilter(property: Filters) {\n return this.getFilterUnsafe(property as string);\n }\n\n public getFilterUnsafe(property: string) {\n return this._filters.find(s => s.property === property) ?? null;\n }\n\n public removeFilter(property: Filters) {\n return this.removeFilterUnsafe(property as string);\n }\n\n public removeFilterUnsafe(property: string) {\n const filterIdx = this._filters.findIndex(c => c.property === property);\n this._filters.splice(filterIdx, 1);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableModel ? TableModel[Filters] : never>(property: Filters) {\n return this.addFilterUnsafe<FilterModel>(property as string);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n const filter = new FilterDescriptor<FilterModel, TableModel>(property);\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableModel ? NonNullable<TableModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this.addFilterLookupUnsafe(property as string, provider, optionsValueProperty as string);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string) {\n const filter = new FilterLookupDescriptor<FilterModel, TableModel, Service>(property, {\n dataProvider: provider,\n optionsValueProperty: optionsValueProperty\n });\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this.addFilterLookupEnumUnsafe<Enum>(property as string, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const filter = new FilterLookupEnumDescriptor(property, enumDesc, options);\n this._filters.push(filter);\n return filter;\n }\n\n public addFilterFromColumn(property: Extract<Filters, keyof TableModel>, forceSimple = false) {\n return this.addFilterFromColumnUnsafe(property as string, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableModel>[]): this {\n return this.withFiltersFromColumnsUnsafe(...(properties as string[]));\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n properties.forEach(p => {\n this.addFilterFromColumnUnsafe(p);\n });\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, forceSimple = false) {\n const column = this.getColumnUnsafe(property);\n if (!column) {\n throw new MngInternalError(`No column found for filter property \"${property}\"`);\n }\n return this.addFilterFromColumnDescriptorUnsafe(column, forceSimple);\n }\n\n public addFilterFromColumnDescriptorUnsafe<ColumnModel, ColumnValue>(\n column: ColumnDescriptor<ColumnModel, TableModel, ColumnValue>,\n forceSimple: boolean\n ): FilterDescriptor<any, TableModel> {\n let filterDescriptor = new FilterDescriptor<any, TableModel>(column.property);\n let filterType: FilterTypeEnum;\n\n switch (column.columnType) {\n case ColumnTypeEnum.Number:\n filterType = FilterTypeEnum.Number;\n break;\n case ColumnTypeEnum.Boolean:\n filterType = FilterTypeEnum.Boolean;\n break;\n case ColumnTypeEnum.Date:\n filterType = FilterTypeEnum.Date;\n break;\n case ColumnTypeEnum.Enum:\n if (!forceSimple && column.enum) {\n filterDescriptor = new FilterLookupEnumDescriptor(column.property, column.enum);\n filterType = FilterTypeEnum.LookupEnum;\n } else {\n filterType = FilterTypeEnum.String;\n }\n break;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Custom:\n default:\n filterType = FilterTypeEnum.String;\n break;\n }\n\n filterDescriptor.asFilterType(filterType);\n if (filterType === FilterTypeEnum.Number) {\n const displayFormatFractions = column.displayFormat?.split('.')?.[1]?.split('-');\n if (displayFormatFractions && displayFormatFractions.length > 2) {\n filterDescriptor.withNumberFractions(parseInt(displayFormatFractions[0]), parseInt(displayFormatFractions[1]));\n }\n } else if (filterType === FilterTypeEnum.Date) {\n const displayFormat = column.displayFormat;\n if (displayFormat) {\n const filterDisplayFormat = DateUtil.fromAngularToPrimeDateFormat(displayFormat);\n const hasTime = DateUtil.fromAngularDateFormatHasTime(displayFormat);\n const hasSeconds = DateUtil.fromAngularDateFormatHasSeconds(displayFormat);\n filterDescriptor.withDateFormat(filterDisplayFormat, hasTime, hasSeconds);\n }\n }\n\n this._filters.push(filterDescriptor);\n\n return filterDescriptor;\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableModel>): this {\n if (filter.property !== property) {\n throw new MngInternalError(`Filter property \"${property}\" and Filter descriptor property \"${filter.property}\" do not match.`);\n }\n return this.withFilterUnsafe<FilterModel>(filter);\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableModel>): this {\n this._filters.push(filter);\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: TableSizeEnum = TableSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withTableFullHeightOffset(tableFullHeightOffset: number): this {\n this._tableFullHeightOffset = tableFullHeightOffset;\n return this;\n }\n\n public withRowHeight(rowHeight: number): this {\n this._rowHeight = rowHeight;\n return this;\n }\n\n public withHover(hover: boolean): this {\n this._hasHover = hover;\n return this;\n }\n\n public withGridlines(gridlines: boolean): this {\n this._hasGridlines = gridlines;\n return this;\n }\n\n /**\n * Method that enables/disabled column resize feature with columnResizeMode on all columns.\n * @param resizableColumns True if enabled\n * @param columnResizeMode 'fit' or 'expand' mode\n */\n public withColumnsResizable(resizableColumns = true, columnResizeMode: 'fit' | 'expand' = 'fit'): this {\n this._hasResizableColumns = resizableColumns;\n this._columnResizeMode = columnResizeMode;\n return this;\n }\n\n /**\n * Sets column to (un)frozen.\n * @param selectionColumnFrozen True to freeze selection column, false to unfreeze it.\n * @param actionColumnFrozen True to freeze action column, false to unfreeze it.\n */\n public withColumnFrozen(selectionColumnFrozen?: boolean, actionColumnFrozen?: boolean): this {\n this._selectionColumnFrozen = selectionColumnFrozen;\n this._actionColumnFrozen = actionColumnFrozen;\n return this;\n }\n\n public withRowClassName(rowClassName?: string, classNameMapFn?: (className?: string, item?: TableModel) => string): this {\n this._rowClassName = rowClassName;\n this._rowClassNameMapFn = classNameMapFn;\n return this;\n }\n\n public withHeaderClassName(headerClassName: string): this {\n this._headerClassName = headerClassName;\n return this;\n }\n\n public withLocalized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public withLocalizationLocaleProperty(localizationLocaleProperty: string): this {\n this._isLocalized = true;\n this._localizationLocaleProperty = localizationLocaleProperty;\n return this;\n }\n\n protected copyFieldsTo(obj: TableDescriptorInst<any, any, any>) {\n obj._title = this._title;\n obj._hideHeader = this._hideHeader;\n obj._trackProperty = this._trackProperty;\n obj._filters = this._filters.map(f => f.copy());\n obj._sorts = this._sorts.map(s => s.copy());\n obj._className = this._className;\n obj._size = this._size;\n obj._tableFullHeightOffset = this._tableFullHeightOffset;\n obj._rowHeight = this._rowHeight;\n obj._hasHover = this._hasHover;\n obj._hasGridlines = this._hasGridlines;\n obj._hasResizableColumns = this._hasResizableColumns;\n obj._columnResizeMode = this._columnResizeMode;\n obj._actionColumnFrozen = this._actionColumnFrozen;\n obj._selectionColumnFrozen = this._selectionColumnFrozen;\n obj._isLocalized = this._isLocalized;\n obj._localizationLocaleProperty = this._localizationLocaleProperty;\n obj._paginationMode = this._paginationMode;\n obj._rowsPerPageOptions = this._rowsPerPageOptions;\n }\n\n public copy(): TableDescriptorInst<TableModel, Sorts, Filters> {\n const descriptor = new TableDescriptorInst<TableModel, Sorts, Filters>(this.model.copy());\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n return descriptor;\n }\n\n /**\n * defines modified type of column\n * DO NOT USE with enum (use withCustomEnumType)\n * @param property column name\n * @param columnType modified type\n * @param args additional attributes\n * @param columnDisplayType\n */\n public withColumnModifiedType(property: keyof TableModel, columnType?: ColumnTypeEnum, columnDisplayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n return this.withColumnModifiedTypeUnsafe(property as string, columnType, columnDisplayType, ...args);\n }\n\n public withColumnModifiedTypeUnsafe(property: string, columnType?: ColumnTypeEnum, columnDisplayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n if (!this.model.type) {\n throw new MngInternalError(`withColumnModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = TableviewUtil.getAttributeDefMap(this.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = columnType ?? attributeDef.columnType;\n attributeDef.columnDisplayType = columnDisplayType ?? attributeDef.columnDisplayType;\n TableDescriptorInst.upsertColumnFromAttributeDef(\n this,\n attributeDef,\n this.columns.find(col => col.property === attributeDef.name),\n ...args\n );\n }\n\n return this;\n }\n\n /**\n * defines custom enum type for column\n * @param property column name\n * @param enumDesc Enum descriptor.\n */\n public withColumnModifiedEnum<Property extends keyof TableModel, Enum extends NonNullable<TableModel[Property]>>(\n property: keyof TableModel,\n enumDesc?: EnumDescriptor<Enum>\n ): this {\n return this.withColumnModifiedEnumUnsafe(property as string, enumDesc);\n }\n\n public withColumnModifiedEnumUnsafe<Enum = any>(property: string, enumDesc?: EnumDescriptor<Enum>): this {\n if (!this.model.type) {\n throw new MngInternalError(`withColumnModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = TableviewUtil.getAttributeDefMap(this.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = ColumnTypeEnum.Enum;\n TableDescriptorInst.upsertColumnFromAttributeDef(\n this,\n attributeDef,\n this.columns.find(col => col.property === property),\n enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attributeDef.type) as EnumType)\n );\n }\n\n return this;\n }\n\n /**\n * modifies column with class and lookup provider\n * @param property column name\n * @param lookupProvider lookupProvider for class\n * @param optionsLabelProperty\n * @param filterProperty\n */\n public withModifiedLookup<ColumnLookupModel>(\n property: keyof TableModel,\n lookupProvider?: ILookupDataProvider<ColumnLookupModel>,\n optionsLabelProperty?: string,\n filterProperty?: string\n ): this {\n return this.withColumnModifiedLookupUnsafe(property as string, lookupProvider, optionsLabelProperty, filterProperty);\n }\n\n public withColumnModifiedLookupUnsafe<ColumnLookupModel>(\n property: string,\n lookupProvider?: ILookupDataProvider<ColumnLookupModel>,\n optionsLabelProperty?: string,\n filterProperty?: string\n ): this {\n const column = this.columns.find(col => col.property === property);\n if (column) {\n const filter = this.addFilterLookupUnsafe(column.property, lookupProvider, filterProperty);\n if (optionsLabelProperty) {\n filter.withOptionsLabelPropertyUnsafe(optionsLabelProperty);\n }\n }\n return this;\n }\n\n /**\n * generates column based on attributes\n * @param desc Table descriptor\n * @param attribute attribute map\n * @param column if provided, replaced by new, otherwise new is created\n * @param args additional parameters\n */\n protected static upsertColumnFromAttributeDef<ColumnModel, TableModel>(\n desc: TableDescriptorInst<TableModel, any, any>,\n attribute: TableviewAttributeDef,\n column?: ColumnDescriptor<ColumnModel, TableModel>,\n ...args: any[]\n ): ColumnDescriptor<ColumnModel, TableModel> {\n if (column == null) {\n column = desc.addColumnUnsafe(attribute.name);\n }\n\n if (attribute.columnType === ColumnTypeEnum.Enum && args.length === 0 && attribute.enumType) {\n args = [enumModelGeneric(attribute.enumType)];\n }\n\n column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);\n if (attribute.classType) {\n const titleProperty = ModelUtil.findTitleAttribute(attribute.classType) ?? undefined;\n if (titleProperty) {\n column.withGetter(value => value?.[titleProperty as keyof object]);\n }\n } else {\n column.withSortUnsafe().withFilterUnsafe();\n }\n\n return column;\n }\n}\n\nexport class TableDescriptor extends TableDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel,\n i18nBaseKey?: string | ClassType<unknown>\n ): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(ModelDescriptor.create<TableModel>(idProperty, titleProperty, i18nBaseKey));\n }\n\n public static fromClass<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(\n type: ClassType<TableModel>,\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel,\n i18nBaseKey?: ClassType<unknown> | string,\n isAutoGenerated = false\n ): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(ModelDescriptor.fromClass(type, idProperty, titleProperty, i18nBaseKey), isAutoGenerated);\n }\n\n public static fromModel<TableModel, Sorts = keyof TableModel, Filters = keyof TableModel>(model: ModelDescriptor<TableModel>): TableDescriptorInst<TableModel, Sorts, Filters> {\n return new TableDescriptorInst<TableModel, Sorts, Filters>(model);\n }\n\n /**\n * generates descriptor based on type attribute definition\n * @param type class type\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithAutoAttrsDef<TableModel>(\n type: ClassType<TableModel>,\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel\n ): TableDescriptorInst<TableModel> {\n return TableDescriptor.fromClassWithCustomAttrsDef(type, TableviewUtil.getAttributeDefMap(type), idProperty, titleProperty);\n }\n\n /**\n * generates descriptor base on given attribute definition\n * @param type class type\n * @param attributes attributes from which descriptor is generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithCustomAttrsDef<TableModel>(\n type: ClassType<TableModel>,\n attributes: TableviewAttributeDef[],\n idProperty?: keyof TableModel,\n titleProperty?: keyof TableModel\n ): TableDescriptorInst<TableModel> {\n const descriptor = TableDescriptor.fromClass(type, idProperty, titleProperty, undefined, true);\n attributes.filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array')).forEach(attr => TableDescriptorInst.upsertColumnFromAttributeDef(descriptor, attr));\n return descriptor;\n }\n}\n\nexport class TableDynamicDescriptorInst extends TableDescriptorInst<any> {\n private _excludedColumns: Array<string> = [];\n private _filterColumns: Array<string> = [];\n private _sortColumns: Array<string> = [];\n private _sortColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n private _filterColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n\n protected override _columns: ColumnDynamicDescriptor[] = [];\n\n protected constructor(model: ModelDescriptor<any>) {\n super(model);\n\n if (model.titleProperty) {\n this.withTitle(model.titleProperty);\n }\n }\n\n public override get columns() {\n return this._columns;\n }\n\n /**\n * defines excluded columns when generating descriptor\n * @param excludedColumn names of excluded columns\n */\n public withColumnsExcluded(excludedColumn: string[]): this {\n this._excludedColumns = excludedColumn;\n return this;\n }\n\n /**\n * defines column properties on which sort is defined or not depending on sortColumnMode\n * @param sortOnColumns column names\n * @param sortColumnMode INCLUDE_ONLY (default) only given columns will have sort, EXCLUDE given columns will NOT have sort\n */\n public withColumnsSort(sortOnColumns: string[], sortColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._sortColumnMode = sortColumnMode;\n this._sortColumns = sortOnColumns;\n return this;\n }\n\n /**\n * defines column properties on which filter is defined or not depending on filterColumnMode\n * @param filterOnColumn column names\n * @param filterColumnMode INCLUDE_ONLY (default) only given columns will have filter, EXCLUDE given columns will NOT have filter\n */\n public withColumnsFilter(filterOnColumn: string[], filterColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._filterColumnMode = filterColumnMode;\n this._filterColumns = filterOnColumn;\n return this;\n }\n\n /**\n * sets given type to column with given property and returns this table\n * @param property column's property\n * @param type custom type for column\n * @param displayType custom column value display type\n * @param args addition arguments for column\n */\n public override withColumnModifiedType(property: string, type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property).withTitle(property);\n if (column) {\n column.asType(type, displayType, ...args);\n }\n return this;\n }\n\n /**\n * sets title to column with given property and returns this table\n * @param property column's property\n * @param title column's title\n */\n public withColumnTitle(property: string, title: string): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property);\n column.withTitle(title, true);\n return this;\n }\n\n /**\n * generates columns defined on table based on data fetched from api\n * @param data data from api\n */\n public toTableDescriptorFromData(data: DataListResult): TableDescriptorInst<any> {\n const tableDescriptor = this.toTableDescriptor();\n\n if (data.data == null || data.data.length == 0) {\n return tableDescriptor;\n }\n\n const objectModel = data.data[0];\n const entries = TableviewUtil.flattenObject(objectModel)\n .filter(([key]) => !this._excludedColumns.includes(key))\n .filter(([, value]) => !Array.isArray(value)); //exclude arrays and sets\n\n for (const [key, value] of entries) {\n const metaColumn = this._columns.find(col => col.property === key);\n let column: ColumnDescriptor<any, any>;\n if (metaColumn) {\n if (!metaColumn.visibility) {\n continue;\n }\n column = metaColumn.toColumnDescriptor(tableDescriptor);\n tableDescriptor.withColumn(column);\n } else {\n column = tableDescriptor.addColumn(key).withTitle(key);\n TableviewUtil.stringColumnConverter(column, value);\n }\n\n if (this.model.i18nBaseKey && !column.property.includes('rev')) {\n column.withTitle([this.model.i18nBaseKey, 'properties', column.property].join('.').replace('state.', ''));\n }\n\n const elementOfSortColumns = this._sortColumns.includes(column.property);\n if (\n (this._sortColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfSortColumns) ||\n (this._sortColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfSortColumns)\n ) {\n column.withSortUnsafe();\n }\n\n const elementOfFilterColumns = this._filterColumns.includes(column.property);\n if (\n this._filterColumns.length > 0 &&\n ((this._filterColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfFilterColumns) ||\n (this._filterColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfFilterColumns))\n ) {\n column.withFilterUnsafe();\n }\n }\n\n return tableDescriptor;\n }\n\n /**\n * adds ColumnDynamicDescriptor to this table\n * @param property column's property\n */\n public override addColumn(property: keyof any): ColumnDynamicDescriptor {\n const column = new ColumnDynamicDescriptor(this, property as string);\n this._columns.push(column);\n return column;\n }\n\n public override removeColumn(property: keyof any): this {\n const column = this.columns.find(col => col.property === property) ?? this.addColumn(property);\n column.withVisibility(false);\n return this;\n }\n\n /**\n * creates deep copy of table dynamic descriptor\n */\n public override copy(): TableDynamicDescriptorInst {\n const descriptor = new TableDynamicDescriptorInst(this.model.copy());\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n descriptor._excludedColumns = [...this._excludedColumns];\n descriptor._filterColumns = [...this._filterColumns];\n descriptor._sortColumns = [...this._sortColumns];\n descriptor._filterColumnMode = this._filterColumnMode;\n descriptor._sortColumnMode = this._sortColumnMode;\n return descriptor;\n }\n\n public toTableDescriptor(): TableDescriptorInst<any> {\n const descriptor = new TableDescriptorInst<any>(this.model);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n\nexport class TableDynamicDescriptor extends TableDynamicDescriptorInst {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create(idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>): TableDynamicDescriptorInst {\n return new TableDynamicDescriptorInst(ModelDescriptor.create<any>(idProperty, titleProperty, i18nBaseKey));\n }\n\n public static fromModel(model: ModelDescriptor<any>): TableDynamicDescriptorInst {\n return new TableDynamicDescriptorInst(model);\n }\n}\n","import {FieldValidatorFn} from '@ngx-formly/core/lib/models/config';\n\nimport {ILookupDataProvider, ITableDataProvider} from '../../data-providers';\nimport {MngInternalError, TableviewAttributeDef} from '../../models';\nimport {TypeRegistry} from '../../registry/type.registry';\nimport {ArrayItemType, ClassType, EnumConstantType, IdType, Nullable} from '../../types';\nimport {ModelUtil} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {AFieldDescriptor, EditorDescriptor, EditorDescriptorInst, FieldInputDescriptorType, FieldLookupProviderType} from '../editor';\nimport {IFieldsManageInterface} from '../editor/internal/editor-fields.model';\nimport {FilterDescriptor} from '../filter';\nimport {EnumDescriptor, ModelDescriptor} from '../model';\nimport {ColumnDescriptor, TableDescriptor, TableDescriptorInst, TableDynamicDescriptor, TableDynamicDescriptorInst} from '../table';\nimport {IColumnsManageInterface} from '../table/internal/table-columns.model';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, FieldInputTypeEnum, TableviewEditorTypeEnum} from '../types';\nimport {ITableviewDescriptorInternal} from './internal/tableview.model';\n\nexport class TableviewDescriptorInst<TableviewModel, Sorts = keyof TableviewModel, Filters = keyof TableviewModel>\n implements ITableviewDescriptorInternal<TableviewModel, Sorts, Filters>, IColumnsManageInterface<TableviewModel, Sorts, Filters>, IFieldsManageInterface<TableviewModel>\n{\n private readonly _model: ModelDescriptor<TableviewModel>;\n\n protected _table: TableDescriptorInst<TableviewModel, Sorts, Filters>;\n protected _detailsEditor: EditorDescriptorInst<TableviewModel>;\n protected _addEditor: EditorDescriptorInst<TableviewModel>;\n protected _editEditor: EditorDescriptorInst<TableviewModel>;\n\n protected _tableTitle?: string;\n\n protected _isLocalized = false;\n\n protected constructor(model: ModelDescriptor<TableviewModel>) {\n this._model = model;\n this._table = TableDescriptor.fromModel(model);\n this._tableTitle = `${this._model.i18nBaseKey}.name`;\n this._detailsEditor = EditorDescriptor.fromModel(model, TableviewEditorTypeEnum.Details);\n this._detailsEditor.withDisabled();\n this._addEditor = EditorDescriptor.fromModel(model, TableviewEditorTypeEnum.Add);\n this._editEditor = EditorDescriptor.fromModel(model, TableviewEditorTypeEnum.Edit);\n }\n\n public get table() {\n return this._table;\n }\n\n public get detailsEditor() {\n return this._detailsEditor;\n }\n\n public get addEditor() {\n return this._addEditor;\n }\n\n public get editEditor() {\n return this._editEditor;\n }\n\n public get tableTitle() {\n return this._tableTitle;\n }\n\n public get model() {\n return this._model;\n }\n\n public isLocalized() {\n return this._isLocalized;\n }\n\n public withTableDescriptor(descriptor: TableDescriptorInst<TableviewModel, Sorts, Filters>): this {\n this._table = descriptor;\n return this;\n }\n\n public withEditorDescriptors(descriptor: EditorDescriptorInst<TableviewModel>): this {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n\n public withDetailsDescriptor(descriptor: EditorDescriptorInst<TableviewModel>): this {\n this._detailsEditor = descriptor;\n return this;\n }\n\n public withAddDescriptor(descriptor: EditorDescriptorInst<TableviewModel>): this {\n this._addEditor = descriptor;\n return this;\n }\n\n public withEditDescriptor(descriptor: EditorDescriptorInst<TableviewModel>): this {\n this._editEditor = descriptor;\n return this;\n }\n\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non-disabled\n * @param type which editor type to set to disabled\n */\n public withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details): this {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n\n public withTableTitle(title: string): this {\n this._tableTitle = title;\n return this;\n }\n\n public withValidator(name: string, expression: FieldValidatorFn): this {\n this._detailsEditor.addValidation(name, expression);\n this._addEditor.addValidation(name, expression);\n this._editEditor.addValidation(name, expression);\n return this;\n }\n\n public getColumn(property: keyof TableviewModel) {\n return this._table.getColumn(property);\n }\n\n public getColumnUnsafe(property: string) {\n return this._table.getColumnUnsafe(property);\n }\n\n public removeColumn(property: keyof TableviewModel): void {\n this._table.removeColumn(property);\n }\n\n public removeColumnUnsafe(property: string): void {\n this._table.removeColumnUnsafe(property);\n }\n\n public withColumn<ColumnModel, ColumnValue = ColumnModel>(column: ColumnDescriptor<ColumnModel, TableviewModel, ColumnValue>): this {\n this._table.withColumn<ColumnModel, ColumnValue>(column);\n return this;\n }\n\n public addColumn<Property extends keyof TableviewModel>(property: Property): ColumnDescriptor<NonNullable<TableviewModel[Property]>, TableviewModel, TableviewModel[Property]> {\n return this._table.addColumn(property);\n }\n\n public addColumnEnum<PropertyKey extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[PropertyKey]>>(property: PropertyKey, enumDesc: EnumDescriptor<Enum>) {\n return this._table.addColumnEnum(property, enumDesc);\n }\n\n public addColumnUnsafe<ColumnModel = any>(property: string): ColumnDescriptor<ColumnModel, TableviewModel> {\n return this._table.addColumnUnsafe(property);\n }\n\n public withColumns(...properties: (keyof TableviewModel)[]): this {\n this._table.withColumns(...properties);\n return this;\n }\n\n public getSort(property: Sorts) {\n return this._table.getSort(property);\n }\n\n public getSortUnsafe(property: string) {\n return this._table.getSortUnsafe(property);\n }\n\n public removeSort(property: Sorts) {\n this._table.removeSort(property);\n }\n\n public removeSortUnsafe(property: string) {\n this._table.removeSortUnsafe(property);\n }\n\n public addSort(property: Sorts, isDefault = false, ascending?: boolean) {\n return this._table.addSort(property, isDefault, ascending);\n }\n\n public addSortUnsafe(property: string, isDefault = false, ascending?: boolean) {\n return this._table.addSortUnsafe(property, isDefault, ascending);\n }\n\n public withSort(property: Sorts, isDefault = false, ascending?: boolean): this {\n this._table.withSort(property, isDefault, ascending);\n return this;\n }\n\n public withSortUnsafe(property: string, isDefault = false, ascending?: boolean): this {\n this._table.withSortUnsafe(property, isDefault, ascending);\n return this;\n }\n\n public withDefaultSort(property: Sorts, ascending?: boolean, order?: number, enabled?: boolean): this {\n this._table.withDefaultSort(property, ascending, order, enabled);\n return this;\n }\n\n public withDefaultSortUnsafe(property: string, ascending?: boolean, order?: number, enabled?: boolean): this {\n this._table.withDefaultSortUnsafe(property, ascending, order, enabled);\n return this;\n }\n\n public withSorts(...properties: Sorts[]): this {\n this._table.withSorts(...properties);\n return this;\n }\n\n public withSortsUnsafe(...properties: string[]): this {\n this._table.withSortsUnsafe(...properties);\n return this;\n }\n\n public getFilter(property: Filters) {\n return this._table.getFilter(property);\n }\n\n public getFilterUnsafe(property: string) {\n return this._table.getFilterUnsafe(property);\n }\n\n public removeFilter(property: Filters) {\n this._table.removeFilter(property);\n }\n\n public removeFilterUnsafe(property: string) {\n this._table.removeFilterUnsafe(property);\n }\n\n public addFilter<FilterModel = Filters extends keyof TableviewModel ? TableviewModel[Filters] : never>(property: Filters) {\n return this._table.addFilter<FilterModel>(property);\n }\n\n public addFilterUnsafe<FilterModel>(property: string) {\n return this._table.addFilterUnsafe<FilterModel>(property);\n }\n\n public addFilterLookup<FilterModel = Filters extends keyof TableviewModel ? NonNullable<TableviewModel[Filters]> : never, Service = undefined>(\n property: Filters,\n provider?: ILookupDataProvider<FilterModel, Service>,\n optionsValueProperty?: keyof FilterModel\n ) {\n return this._table.addFilterLookup<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string) {\n return this._table.addFilterLookupUnsafe<FilterModel, Service>(property, provider, optionsValueProperty);\n }\n\n public addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnum<Enum>(property, enumDesc, options);\n }\n\n public addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n return this._table.addFilterLookupEnumUnsafe<Enum>(property, enumDesc, options);\n }\n\n public addFilterFromColumn(property: Extract<Filters, keyof TableviewModel>, forceSimple = false) {\n return this._table.addFilterFromColumn(property, forceSimple);\n }\n\n public withFiltersFromColumns(...properties: Extract<Filters, keyof TableviewModel>[]): this {\n this._table.withFiltersFromColumns(...properties);\n return this;\n }\n\n public withFiltersFromColumnsUnsafe(...properties: string[]): this {\n this._table.withFiltersFromColumnsUnsafe(...properties);\n return this;\n }\n\n public addFilterFromColumnUnsafe(property: string, forceSimple = false) {\n return this._table.addFilterFromColumnUnsafe(property, forceSimple);\n }\n\n public withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableviewModel>): this {\n this._table.withFilter<FilterModel>(property, filter);\n return this;\n }\n\n public withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableviewModel>): this {\n this._table.withFilterUnsafe<FilterModel>(filter);\n return this;\n }\n\n public getField(property: keyof TableviewModel, editorType: TableviewEditorTypeEnum): AFieldDescriptor<any, TableviewModel> | null {\n return this.getFieldUnsafe(property as string, editorType);\n }\n\n public getFieldUnsafe(property: string, editorType: TableviewEditorTypeEnum): AFieldDescriptor<any, TableviewModel> | null {\n switch (editorType) {\n case TableviewEditorTypeEnum.Edit:\n return this._editEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.Add:\n return this._addEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.Details:\n return this._detailsEditor.getFieldUnsafe(property);\n case TableviewEditorTypeEnum.None:\n return null;\n }\n }\n\n public removeField(property: keyof TableviewModel): void {\n this.removeFieldUnsafe(property as string);\n }\n\n public removeFieldUnsafe(property: string): void {\n this._editEditor.removeFieldUnsafe(property);\n this._addEditor.removeFieldUnsafe(property);\n this._detailsEditor.removeFieldUnsafe(property);\n }\n\n public addFieldDescriptor<FieldModel>(field: AFieldDescriptor<FieldModel, TableviewModel>): this {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n\n public addField<Property extends keyof TableviewModel, FieldModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(property: Property) {\n const field = this._detailsEditor.addField<Property, FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldUnsafe<FieldModel = FieldInputDescriptorType, FieldValue = FieldModel>(property: string) {\n const field = this._detailsEditor.addFieldUnsafe<FieldModel, FieldValue>(property);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFields(...properties: (keyof TableviewModel)[]): this {\n properties.forEach(p => this.addField(p));\n return this;\n }\n\n private addFieldToEditAndAdd<FieldModel, FieldValue = FieldModel>(field: AFieldDescriptor<FieldModel, TableviewModel, FieldValue>) {\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n }\n\n /**\n * Adds lookup field.\n * @param property Model property name.\n * @param type Model's class type.\n */\n public addFieldLookup<Property extends keyof TableviewModel, FieldModel = NonNullable<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n type?: ClassType<FieldModel>\n ) {\n const field = this._detailsEditor.addFieldLookup<Property, FieldModel, FieldValue>(property, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupUnsafe<FieldModel, FieldValue = FieldModel>(property: string, type?: ClassType<FieldModel>) {\n const field = this._detailsEditor.addFieldLookupUnsafe<FieldModel, FieldValue>(property, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupWithPropertyAsValueUnsafe<FieldModel, FieldValue = Nullable<IdType>>(property: string, optionsValueProperty: string) {\n const field = this._detailsEditor.addFieldLookupWithPropertyAsValueUnsafe<FieldModel, FieldValue>(property, optionsValueProperty);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupWithProvider<\n ServiceType,\n Property extends keyof TableviewModel,\n FieldModel = NonNullable<TableviewModel[Property]>,\n FieldValue = TableviewModel[Property]\n >(property: Property, provider: FieldLookupProviderType<FieldModel, ServiceType>, type?: ClassType<FieldModel>) {\n const field = this._detailsEditor.addFieldLookupWithProvider<ServiceType, Property, FieldModel, FieldValue>(property, provider, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupWithProviderUnsafe<ServiceType, FieldModel, FieldValue = FieldModel>(\n property: string,\n provider: FieldLookupProviderType<FieldModel, ServiceType>,\n type?: ClassType<FieldModel>\n ) {\n const field = this._detailsEditor.addFieldLookupWithProviderUnsafe<ServiceType, FieldModel, FieldValue>(property, provider, type);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupEnum<Property extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[Property]>>(\n property: Property,\n enumDesc: EnumDescriptor<Enum>,\n options?: Array<Enum>\n ) {\n const field = this._detailsEditor.addFieldLookupEnum(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>) {\n const field = this._detailsEditor.addFieldLookupEnumUnsafe<Enum>(property, enumDesc, options);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyEditor<Property extends keyof TableviewModel, FieldModel = ArrayItemType<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n tableviewDescriptor: TableviewDescriptorInst<FieldModel>\n ) {\n const field = this._detailsEditor.addFieldManyEditor<Property, FieldModel, FieldValue>(property, tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(property: string, tableviewDescriptor: TableviewDescriptorInst<FieldModel>) {\n const field = this._detailsEditor.addFieldManyEditorUnsafe<FieldModel, FieldValue>(property, tableviewDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditor<Property extends keyof TableviewModel, FieldModel = ArrayItemType<TableviewModel[Property]>, FieldValue = TableviewModel[Property]>(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditor<Property, FieldModel, FieldValue>(property, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditorUnsafe<FieldModel, FieldValue>(property, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditorWithProvider<\n Property extends keyof TableviewModel,\n ServiceType,\n FieldModel = ArrayItemType<TableviewModel[Property]>,\n FieldValue = TableviewModel[Property]\n >(\n property: Property,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditorWithProvider<Property, ServiceType, FieldModel, FieldValue>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n lookupDataProvider\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public addFieldManyToManyEditorWithProviderUnsafe<FieldModel, ServiceType, FieldValue = FieldModel[]>(\n property: string,\n mainTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupTableDescriptor: TableDescriptorInst<FieldModel>,\n lookupDataProvider: ITableDataProvider<FieldModel, ServiceType>\n ) {\n const field = this._detailsEditor.addFieldManyToManyEditorWithProviderUnsafe<FieldModel, ServiceType, FieldValue>(\n property,\n mainTableDescriptor,\n lookupTableDescriptor,\n lookupDataProvider\n );\n this.addFieldToEditAndAdd(field);\n return field;\n }\n\n public createTabGroup(name: string, title?: string): this {\n this._detailsEditor.createTabGroup(name, title);\n this._addEditor.createTabGroup(name, title);\n this._editEditor.createTabGroup(name, title);\n return this;\n }\n\n public createFieldGroup(name: string, title?: string): this {\n this._detailsEditor.createFieldGroup(name, title);\n this._addEditor.createFieldGroup(name, title);\n this._editEditor.createFieldGroup(name, title);\n return this;\n }\n\n public copy(): TableviewDescriptorInst<TableviewModel, Sorts, Filters> {\n const tableview = new TableviewDescriptorInst<TableviewModel, Sorts, Filters>(this._model.copy());\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._tableTitle = this._tableTitle;\n tableview._isLocalized = this._isLocalized;\n return tableview;\n }\n\n /**\n * creates column and field with custom type, for example currency\n * if field exists, it is replaced\n * DO NOT USE WITH TYPES WHERE ARGS ARE REQUIRED - ERROR WILL BE THROWN\n * for enum use withEnumType\n * for custom class use withClassType\n * @param property name of field\n * @param columnType required column type\n * @param fieldType optional, if not provided it is converted from column type\n * @param columnDisplayType optional\n */\n public withModifiedType(property: keyof TableviewModel, columnType: ColumnTypeEnum, fieldType?: FieldInputTypeEnum, columnDisplayType?: ColumnDisplayTypeEnum): this {\n return this.withModifiedTypeUnsafe(property as string, columnType, fieldType, columnDisplayType);\n }\n\n public withModifiedTypeUnsafe(property: string, columnType: ColumnTypeEnum, fieldType?: FieldInputTypeEnum, columnDisplayType?: ColumnDisplayTypeEnum): this {\n if (!this.model.type) {\n throw new MngInternalError(`withModifiedType cannot be executed for property ${property}: Model type is not defined.`);\n }\n if (columnType === ColumnTypeEnum.Enum) {\n throw new MngInternalError('Do not use with types where args are required', {name: 'TableviewDescriptorError'});\n }\n\n const attributeDef = TableviewUtil.getAttributeDefMap(this.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n fieldType ??= TableviewUtil.toFieldInputTypeFromColumnType(columnType, columnDisplayType);\n attributeDef.fieldType = fieldType;\n\n this._table.withColumnModifiedTypeUnsafe(property, columnType, columnDisplayType);\n this._editEditor.withFieldModifiedTypeUnsafe(property, fieldType);\n this._addEditor.withFieldModifiedTypeUnsafe(property, fieldType);\n this._detailsEditor.withFieldModifiedTypeUnsafe(property, fieldType);\n }\n\n return this;\n }\n\n /**\n * creates column with enum type\n * if fields exists, it is replaced\n * @param property property name\n * @param enumDesc type of enum\n * @param fieldType type of field, optional, default is Text\n */\n public withModifiedEnum<Property extends keyof TableviewModel, Enum extends NonNullable<TableviewModel[Property]>>(\n property: Property,\n enumDesc?: EnumDescriptor<Enum>,\n fieldType?: FieldInputTypeEnum\n ): this {\n return this.withModifiedEnumUnsafe<Enum>(property as string, enumDesc, fieldType);\n }\n\n public withModifiedEnumUnsafe<Enum = any>(property: string, enumDesc?: EnumDescriptor<Enum>, fieldType?: FieldInputTypeEnum): this {\n if (!this.model.type) {\n throw new MngInternalError(`withModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);\n }\n const attributeDef = TableviewUtil.getAttributeDefMap(this.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n attributeDef.fieldType = fieldType ?? FieldInputTypeEnum.Text;\n\n this._table.withColumnModifiedEnumUnsafe<Enum>(property, enumDesc);\n this._editEditor.withFieldModifiedEnumUnsafe<Enum>(property, enumDesc);\n this._detailsEditor.withFieldModifiedEnumUnsafe<Enum>(property, enumDesc);\n this._addEditor.withFieldModifiedEnumUnsafe<Enum>(property, enumDesc);\n }\n\n return this;\n }\n\n /**\n * generates column with custom class type\n * field is generated only if lookupProvider is provided\n * @param property property name\n * @param type class type of object\n * @param titleProperty\n * @param lookupProvider\n * @param optionsLabelProperty\n * @param filterProperty\n */\n public withModifiedLookup<LookupModel>(\n property: keyof TableviewModel,\n type?: ClassType<LookupModel>,\n lookupProvider?: ILookupDataProvider<LookupModel>,\n titleProperty?: string,\n optionsLabelProperty?: string,\n filterProperty?: string\n ): this {\n return this.withModifiedLookupUnsafe(property as string, type, lookupProvider, titleProperty, optionsLabelProperty, filterProperty);\n }\n\n public withModifiedLookupUnsafe<LookupModel>(\n property: string,\n type?: ClassType<LookupModel>,\n lookupProvider?: ILookupDataProvider<LookupModel>,\n titleProperty?: string,\n optionsLabelProperty?: string,\n filterProperty?: string\n ): this {\n if (!this.model.type) {\n throw new MngInternalError(`withModifiedLookup cannot be executed for property ${property}: Model type is not defined.`);\n }\n\n const attributeDef = TableviewUtil.getAttributeDefMap(this.model.type).find(attr => attr.name === property);\n\n if (attributeDef != null) {\n type ??= attributeDef.classType ?? TypeRegistry.get().findType(attributeDef.type);\n titleProperty ??= type ? ModelUtil.findTitleAttribute(type) ?? undefined : undefined;\n optionsLabelProperty ??= titleProperty;\n attributeDef.columnType = ColumnTypeEnum.String;\n attributeDef.fieldType = FieldInputTypeEnum.Text;\n\n if (lookupProvider != null) {\n this._table.withColumnModifiedLookupUnsafe(property, lookupProvider, optionsLabelProperty, filterProperty);\n this._addEditor.withFieldModifiedLookupWithProviderUnsafe(property, lookupProvider, optionsLabelProperty);\n this._detailsEditor.withFieldModifiedLookupWithProviderUnsafe(property, lookupProvider, optionsLabelProperty);\n this._editEditor.withFieldModifiedLookupWithProviderUnsafe(property, lookupProvider, optionsLabelProperty);\n } else {\n const column = this._table.getColumnUnsafe(property) ?? this.addColumnUnsafe(property);\n if (titleProperty) {\n column.withGetter(value => value?.[titleProperty as keyof object]);\n }\n }\n }\n\n return this;\n }\n\n public localized<Property extends keyof TableviewModel, LocalizationModel = ArrayItemType<TableviewModel[Property]>>(\n property: Property,\n model: ModelDescriptor<LocalizationModel>,\n localeProperty: keyof LocalizationModel\n ): this {\n return this.localizedUnsafe(property as string, model, localeProperty as string);\n }\n\n public localizedUnsafe<LocalizationModel>(property: string, model: ModelDescriptor<LocalizationModel>, localeProperty: string): this {\n this._isLocalized = true;\n this._table.withLocalizationLocaleProperty(localeProperty as string);\n this.detailsEditor.localizedUnsafe(property, model, localeProperty);\n this.addEditor.localizedUnsafe(property, model, localeProperty);\n this.editEditor.localizedUnsafe(property, model, localeProperty);\n\n return this;\n }\n}\n\nexport class TableviewDescriptor extends TableviewDescriptorInst<any> {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel>(\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel,\n i18nBaseKey?: string | ClassType<unknown>\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty>(ModelDescriptor.create<TableviewModel>(idProperty, titleProperty, i18nBaseKey));\n }\n\n public static fromClass<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel>(\n type: ClassType<TableviewModel>,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel,\n i18nBaseKey?: ClassType<unknown> | string\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty>(ModelDescriptor.fromClass(type, idProperty, titleProperty, i18nBaseKey));\n }\n\n public static fromModel<TableviewModel, SortProperty = keyof TableviewModel, FilterProperty = keyof TableviewModel>(\n model: ModelDescriptor<TableviewModel>\n ): TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty> {\n return new TableviewDescriptorInst<TableviewModel, SortProperty, FilterProperty>(model);\n }\n\n /**\n * generates descriptor from attribute definition of openapi model\n * @param type class type\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithAutoAttrsDef<TableviewModel>(\n type: ClassType<TableviewModel>,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel\n ): TableviewDescriptorInst<TableviewModel> {\n const model = ModelDescriptor.fromClass(type, idProperty, titleProperty);\n const descriptor = TableviewDescriptor.fromModel(model);\n descriptor.withTableDescriptor(TableDescriptor.fromClassWithAutoAttrsDef(type, idProperty, titleProperty));\n descriptor.withEditDescriptor(EditorDescriptor.fromClassWithAutoAttrsDef(type, idProperty, titleProperty, TableviewEditorTypeEnum.Edit));\n descriptor.withDetailsDescriptor(EditorDescriptor.fromClassWithAutoAttrsDef(type, idProperty, titleProperty, TableviewEditorTypeEnum.Details).withDisabled());\n descriptor.withAddDescriptor(EditorDescriptor.fromClassWithAutoAttrsDef(type, idProperty, titleProperty, TableviewEditorTypeEnum.Add));\n\n return descriptor;\n }\n\n /**\n * generates descriptor from given attribute definition\n * @param type class type\n * @param columnAttributes attribute definition to generate columns\n * @param fieldAttributes attribute definition to generate fields, if undefined columnDefinition is used, if null editors are not generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromClassWithCustomAttrsDef<TableviewModel>(\n type: ClassType<TableviewModel>,\n columnAttributes: TableviewAttributeDef[],\n fieldAttributes?: TableviewAttributeDef[] | null,\n idProperty?: keyof TableviewModel,\n titleProperty?: keyof TableviewModel\n ): TableviewDescriptorInst<TableviewModel> {\n const descriptor = TableviewDescriptor.fromModel(ModelDescriptor.fromClass(type, idProperty, titleProperty));\n descriptor.withTableDescriptor(TableDescriptor.fromClassWithCustomAttrsDef(type, columnAttributes, idProperty, titleProperty));\n\n if (fieldAttributes !== null) {\n descriptor.withEditDescriptor(\n EditorDescriptor.fromClassWithCustomAttrsDef(type, fieldAttributes ?? columnAttributes, idProperty, titleProperty, TableviewEditorTypeEnum.Edit)\n );\n descriptor.withDetailsDescriptor(\n EditorDescriptor.fromClassWithCustomAttrsDef(type, fieldAttributes ?? columnAttributes, idProperty, titleProperty, TableviewEditorTypeEnum.Details)\n );\n descriptor.withAddDescriptor(\n EditorDescriptor.fromClassWithCustomAttrsDef(type, fieldAttributes ?? columnAttributes, idProperty, titleProperty, TableviewEditorTypeEnum.Add)\n );\n }\n\n return descriptor;\n }\n}\n\nexport class TableviewDynamicDescriptorInt extends TableviewDescriptorInst<any> {\n protected override _table: TableDynamicDescriptorInst;\n\n protected constructor(model: ModelDescriptor<any>) {\n super(model);\n this._table = TableDynamicDescriptor.fromModel(this.model);\n super._tableTitle = undefined;\n }\n\n public override get table() {\n return this._table;\n }\n\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n public override withTableDescriptor(descriptor: TableDynamicDescriptorInst): this {\n this._table = descriptor;\n return this;\n }\n\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n public override removeColumn(property: string): this {\n this._table.removeColumn(property);\n return this;\n }\n\n public withEntityForTranslations(i18nBaseKey: string): this {\n this._table.model.withI18nBase(i18nBaseKey);\n this._detailsEditor.model.withI18nBase(i18nBaseKey);\n return this;\n }\n\n /**\n * creates deep copy of tableview object and its children\n */\n public override copy(): TableviewDynamicDescriptorInt {\n const descriptor = new TableviewDynamicDescriptorInt(this.model.copy());\n descriptor._table = this._table.copy();\n descriptor._tableTitle = this._tableTitle;\n return descriptor;\n }\n}\n\nexport class TableviewDynamicDescriptor extends TableviewDynamicDescriptorInt {\n protected constructor() {\n super(ModelDescriptor.create());\n }\n\n public static create(idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>): TableviewDynamicDescriptorInt {\n return new TableviewDynamicDescriptorInt(ModelDescriptor.create<any>(idProperty, titleProperty, i18nBaseKey));\n }\n\n public static fromModel(model: ModelDescriptor<any>): TableviewDynamicDescriptorInt {\n return new TableviewDynamicDescriptorInt(model);\n }\n}\n","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngFormlyFieldConfig} from '../components/form/formly/models';\nimport {IFormEditorComponent} from '../components/form/models';\nimport {\n AFieldDescriptor,\n EditorDescriptorInst,\n FieldActionDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor\n} from '../descriptors/editor';\nimport {TableviewDescriptor} from '../descriptors/tableview';\nimport {FieldInputTypeEnum, FieldLookupTypeEnum, TableviewEditorTypeEnum} from '../descriptors/types';\nimport {MngInternalError} from '../models';\nimport {MngCommonsService} from '../services';\nimport {MngFieldAsyncValidator} from '../types';\n\nexport class EditorFormlyUtil {\n public static createFormlyConfigFromDescriptor(descriptor: EditorDescriptorInst<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n\n if (descriptor.isLocalized) {\n descriptor = EditorFormlyUtil.createLocalizationsTab(descriptor);\n }\n\n if (!descriptor.isLocalized && descriptor.tabs.length === 1 && descriptor.tabs[0].default) {\n // dont use tabs\n fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields, formEditorComponent));\n } else {\n fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs, formEditorComponent));\n }\n\n return fields;\n }\n public static createLocalizationsTab(descriptor: EditorDescriptorInst<any>) {\n if (descriptor.isLocalized && descriptor.tableviewEditorType !== TableviewEditorTypeEnum.Details) {\n if (!descriptor.localizationModel) {\n throw new MngInternalError('Localization model must be defined.');\n }\n const localizationsTableViewDescriptor = TableviewDescriptor.fromModel(descriptor.localizationModel);\n if (!descriptor.localizationLocaleProperty) {\n throw new MngInternalError('Localization locale property must be defined.');\n }\n localizationsTableViewDescriptor.addColumn(descriptor.localizationLocaleProperty);\n localizationsTableViewDescriptor.editEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.detailsEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.addEditor\n .addFieldLookupWithProvider<MngCommonsService, string>(descriptor.localizationLocaleProperty, MngCommonsService)\n .withLookup((qp, service) => service.appDataLanguages)\n .withDisabled(false)\n .withRequired();\n descriptor.fields.forEach(field => {\n if (field.isLocalized) {\n localizationsTableViewDescriptor.addColumn(field.property);\n localizationsTableViewDescriptor.addField(field.property);\n }\n });\n const descriptorWithLocalizations = descriptor.copy();\n descriptorWithLocalizations.createTabGroup('localizations');\n if (!descriptor.localizationLocalizationProperty) {\n throw new MngInternalError('Localization localization property must be defined');\n }\n descriptorWithLocalizations.addFieldManyEditor(descriptor.localizationLocalizationProperty, localizationsTableViewDescriptor);\n\n return descriptorWithLocalizations;\n }\n return descriptor;\n }\n public static createFormlyTabType(tabGroups: FieldTabGroupDescriptor<any>[], formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const tabsField: FormlyFieldConfig = {\n type: 'tabs',\n fieldGroup: [],\n props: {\n formEditorComponent\n }\n };\n for (const tab of tabGroups) {\n const tabField: MngFormlyFieldConfig = {\n id: tab.name,\n props: {\n formEditorComponent\n },\n expressions: {},\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n tabField.fieldGroup!.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields, formEditorComponent));\n tabsField.fieldGroup!.push(tabField);\n }\n return [tabsField];\n }\n\n public static createFormlyGroupType(groups: FieldGroupDescriptor<any>[], formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n if (groups.length === 1 && groups[0].default) {\n // dont use fieldset, just create fields\n return EditorFormlyUtil.createFormlyFields(groups[0], formEditorComponent);\n } else {\n const groupsField: MngFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {\n formEditorComponent\n },\n expressions: {}\n };\n for (const group of groups) {\n const groupField: MngFormlyFieldConfig = {\n id: group.name,\n props: {\n descriptor: group\n },\n expressions: {},\n fieldGroup: []\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n groupField.fieldGroup!.push(...EditorFormlyUtil.createFormlyFields(group, formEditorComponent));\n groupsField.fieldGroup!.push(groupField);\n }\n return [groupsField];\n }\n }\n\n public static createFormlyFields(descriptor: FieldGroupDescriptor<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n for (const descriptorField of descriptor.fields) {\n fields.push(EditorFormlyUtil.createFormlyField(descriptorField, formEditorComponent));\n }\n // wrap in group to be able to use flex grid\n const wrapperGroup: FormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields\n };\n\n EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);\n\n return [wrapperGroup];\n }\n\n public static createFormlyField(descriptor: AFieldDescriptor<any, any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig {\n const field: MngFormlyFieldConfig = {\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn\n },\n hooks: {\n onInit: () => (descriptor.onInit ? descriptor.onInit(field) : undefined),\n onChanges: () => (descriptor.onChanges ? descriptor.onChanges(field) : undefined),\n afterContentInit: () => (descriptor.afterContentInit ? descriptor.afterContentInit(field) : undefined),\n afterViewInit: () => (descriptor.afterViewInit ? descriptor.afterViewInit(field) : undefined),\n onDestroy: () => (descriptor.onDestroy ? descriptor.onDestroy(field) : undefined)\n },\n props: {\n descriptor,\n formEditorComponent,\n onValueChange: descriptor.onValueChange\n },\n expressions: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n field.props.maxLength = descriptor.maxLength;\n field.props.minLength = descriptor.minLength;\n field.props.pattern = descriptor.pattern;\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n field.defaultValue = false;\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n case FieldInputTypeEnum.ImageFile:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.ImageUrl:\n field.type = 'imageUrl';\n break;\n case FieldInputTypeEnum.Custom:\n if (descriptor.customComponentType) {\n field.type = 'custom';\n field.props['customComponentType'] = descriptor.customComponentType;\n if (Array.isArray(descriptor.customComponentWrappers)) {\n field.wrappers = descriptor.customComponentWrappers;\n } else {\n // default wrapper\n field.wrappers = ['field'];\n }\n }\n break;\n default:\n field.type = 'input';\n field.props.minLength = descriptor.minLength;\n field.props.maxLength = descriptor.maxLength;\n field.props.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldActionDescriptor) {\n field.type = 'action';\n field.wrappers = descriptor.wrappers;\n delete field.key;\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'enum';\n break;\n }\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n case FieldLookupTypeEnum.Dropdown:\n default:\n field.type = 'dropdown';\n break;\n }\n } else if (descriptor instanceof FieldManyToManyEditorDescriptor) {\n field.type = 'table-dialog-multiselect';\n } else if (descriptor instanceof FieldManyEditorDescriptor) {\n field.type = 'table-dialog-form';\n }\n\n if (descriptor.label) {\n field.props.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressions!['props.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.props!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.props!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressions!['hide'] = descriptor.hiddenExpression;\n }\n\n if (descriptor.disabledExpression) {\n field.expressions!['props.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.props.disabled = true;\n } else {\n field.expressions!['props.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);\n EditorFormlyUtil.addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);\n\n return field;\n }\n\n public static addValidationsToFormlyField(config: FormlyFieldConfig, validations: Array<FieldValidationDescriptor>) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n if (typeof validation.validator === 'function') {\n config.validators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validatorRes = validation.validator!(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;\n }\n };\n if (typeof validation.message === 'function') {\n config.validators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.validators.validation)) {\n config.validators.validation = [];\n }\n config.validators.validation.push(validation.name);\n }\n }\n }\n\n public static addAsyncValidationsToFormlyField(config: FormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor>) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n if (typeof validation.validator === 'function') {\n config.asyncValidators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validator = <MngFieldAsyncValidator>validation.validator;\n\n const validatorObs: Observable<ValidationErrors | boolean | null> = validator(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));\n }\n };\n if (typeof validation.message === 'function') {\n config.asyncValidators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.asyncValidators.validation)) {\n config.asyncValidators.validation = [];\n }\n config.asyncValidators.validation.push(validation.name);\n }\n }\n }\n}\n","import {EnumValue} from '../models';\nimport {EnumConstantType, EnumType} from '../types';\n\nexport class EnumUtil {\n /**\n * Returns array of names for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantNames(enumType: EnumType): Array<string> {\n return EnumUtil.getConstantNamesFromEnumObject(enumType);\n }\n\n /**\n * Returns array of names for constants in enum.\n * @param enumObj Enum object.\n */\n public static getConstantNamesFromEnumObject(enumObj: object): Array<string> {\n // in number enum, the numbers are also represented in objects and should be filtered out\n return Object.keys(enumObj).filter(v => isNaN(+v));\n }\n\n /**\n * Returns array of string values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsString(enumType: EnumType): Array<string> {\n return Object.keys(enumType).map(v => enumType[v as keyof object] as string);\n }\n\n /**\n * Returns array of number values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsNumber(enumType: EnumType): Array<number> {\n return Object.keys(enumType)\n .filter(v => !isNaN(+v))\n .map(v => +v);\n }\n\n /**\n * Returns array of type EnumValue for all constants in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromConstantsAsEnumValueArray(enumType: EnumType, nameAsValue = false, titlePath?: string) {\n return EnumUtil.getConstantNames(enumType).map(n => <EnumValue>{name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n]});\n }\n\n /**\n * Returns array of type EnumValue for provided values in enum.\n * @param enumType Enum object.\n * @param values Enum values (constants).\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromValuesAsEnumValueArray<EnumConstant = EnumConstantType>(enumType: EnumType, values: Array<EnumConstant>, nameAsValue = false, titlePath?: string) {\n return values.map(v => {\n const k = EnumUtil.getConstantName(enumType, v);\n return {name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v} as EnumValue;\n });\n }\n\n /**\n * Gets constant name for value.\n * @param enumType Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantName<EnumConstant = EnumConstantType>(enumType: EnumType, value: EnumConstant): string | null {\n if (typeof value === 'string') {\n return EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value) ?? null;\n } else {\n return typeof enumType[value as keyof object] !== 'undefined' ? (enumType[value as keyof object] as string) : null;\n }\n }\n\n /**\n * Gets constant name for value.\n * @param enumObj Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantNameFromEnumObject<EnumConstant = EnumConstantType>(enumObj: object, value: EnumConstant): string | null {\n const enumObjAny = enumObj as any;\n if (typeof value === 'string') {\n return EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value) ?? null;\n } else {\n return typeof enumObjAny[value] !== 'undefined' ? (enumObjAny[value] as string) : null;\n }\n }\n}\n","import 'reflect-metadata';\n\nimport {MngInternalError} from '../models';\nimport {MngLoggerService} from '../services';\nimport {ClassType, EnumType} from '../types';\n\nexport class DecoratorMetadataUtil {\n public static readonly reflectTypeNameKey = 'typeName';\n public static readonly reflectEnumNameKey = 'enumName';\n\n /**\n * Defines type name decorator.\n * @param targetType class.\n * @param typeName Name of the type.\n */\n public static defineReflectTypeName(targetType: ClassType<any>, typeName: string) {\n if (!Reflect.hasOwnMetadata(DecoratorMetadataUtil.reflectTypeNameKey, targetType)) {\n Reflect.defineMetadata(DecoratorMetadataUtil.reflectTypeNameKey, typeName, targetType);\n }\n }\n\n /**\n * Defines enum name decorator.\n * @param targetType enum object.\n * @param enumName Name of the enum.\n */\n public static defineReflectEnumName(targetType: EnumType, enumName: string) {\n if (!Reflect.hasOwnMetadata(DecoratorMetadataUtil.reflectEnumNameKey, targetType)) {\n Reflect.defineMetadata(DecoratorMetadataUtil.reflectEnumNameKey, enumName, targetType);\n }\n }\n\n /**\n * Gets type name from reflect metadata.\n * @param type Class.\n */\n public static findTypeName<T>(type?: ClassType<T>): string | null {\n if (!type) {\n return null;\n }\n const typeName = Reflect.getMetadata(DecoratorMetadataUtil.reflectTypeNameKey, type);\n if (typeName) {\n return typeName;\n }\n MngLoggerService.get().debug('WARNING: Reflect metadata could not be found for type, you might experience some issues in production build.', type?.name);\n return type.name;\n }\n\n /**\n * Gets type name from either decorator or reflect metadata.\n * @param type Class.\n */\n public static typeNameExists(type: ClassType<any>): boolean {\n return Reflect.hasOwnMetadata(DecoratorMetadataUtil.reflectTypeNameKey, type);\n }\n\n /**\n * Gets enum name from either decorator or reflect metadata.\n * @param enumType Class.\n */\n public static findEnumName(enumType: EnumType): string {\n const enumName = Reflect.getMetadata(DecoratorMetadataUtil.reflectEnumNameKey, enumType);\n if (enumName) {\n return enumName;\n }\n throw new MngInternalError('Could not fined enum name', {name: 'TypeUtilsError'});\n }\n}\n","import {ClassType} from '../types';\n\ninterface DeepCopyPropsOptions {\n mapGettersToProperties?: boolean;\n}\n\nexport interface DeepCopyOptions<P = object> extends DeepCopyPropsOptions {\n objectPrototype?: ClassType<P>;\n}\n\nexport class ObjectUtil {\n public static deepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {mapGettersToProperties: true}): T | Record<string, any>;\n public static deepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties?: false}): P;\n public static deepCopy<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties: true}): P | Record<string, any>;\n public static deepCopy<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T;\n\n public static deepCopy<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T | P | Record<string, any> {\n if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {\n return obj;\n }\n\n if (obj instanceof Date) {\n return new Date(+obj);\n }\n\n let copy;\n if (options?.mapGettersToProperties) {\n copy = {};\n } else {\n copy = options?.objectPrototype ? Object.create(options.objectPrototype['prototype' as keyof object]) : Object.create(Object.getPrototypeOf(obj));\n Object.assign(copy, obj);\n }\n\n for (const key of ObjectUtil.getProperties(obj)) {\n const prop = obj[key as keyof object];\n copy[key] = ObjectUtil.handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n\n if (options?.mapGettersToProperties) {\n for (const getterKey of ObjectUtil.getGetters(obj)) {\n const prop = obj[getterKey as keyof object];\n copy[getterKey] = ObjectUtil.handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n }\n\n return copy;\n }\n\n public static deepMerge(target: Record<string, any>, source: Record<string, any>): Record<string, any> {\n if (!ObjectUtil.isObject(source)) {\n return target;\n }\n\n for (const key of ObjectUtil.getProperties(source)) {\n if (ObjectUtil.isObject(source[key])) {\n if (ObjectUtil.isObject(target[key])) {\n target[key] = ObjectUtil.deepMerge(target[key], source[key]);\n } else {\n target[key] = ObjectUtil.deepCopy(source[key]);\n }\n } else if (Array.isArray(source[key])) {\n if (!Array.isArray(target[key])) {\n target[key] = (source[key] as Array<unknown>).map(i => (ObjectUtil.isObject(i) ? ObjectUtil.deepMerge({}, i as Record<string, unknown>) : i));\n }\n } else if (typeof target[key] === 'undefined') {\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n private static isObject(obj: any) {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj);\n }\n\n private static handleProp(prop: any, options?: DeepCopyPropsOptions) {\n if (Array.isArray(prop)) {\n return prop.map(i => ObjectUtil.deepCopy(i, options));\n } else if (typeof prop === 'object' && prop !== null) {\n return ObjectUtil.deepCopy(prop, options);\n } else {\n return prop;\n }\n }\n\n public static getProperties(obj: object) {\n return Object.keys(obj);\n }\n\n public static getGetters(obj: any): string[] {\n const getterSet = new Set<string>();\n let currObj = obj;\n\n while (currObj) {\n const getters = Object.entries(Object.getOwnPropertyDescriptors(currObj))\n .filter(([, descriptor]) => typeof descriptor.get === 'function')\n .filter(([key]) => key !== '__proto__')\n .map(([key]) => key);\n\n for (const getter of getters) {\n getterSet.add(getter);\n }\n\n currObj = Object.getPrototypeOf(currObj);\n }\n\n return Array.from(getterSet);\n }\n\n public static getPropertyByPath(value: any, path: string): any | undefined {\n if (path === '$') {\n // only return the root\n return value;\n }\n\n // Check for leading root object notation\n if (path.startsWith('$')) {\n path = path.substring(1);\n }\n\n // Check for leading .\n if (path.startsWith('.')) {\n path = path.substring(1);\n }\n\n if (path.indexOf('.') >= 0) {\n const pathSplit = path.split('.');\n let currValue = value;\n for (const p of pathSplit) {\n if (typeof currValue === 'undefined' || currValue === null) {\n return currValue;\n }\n\n if (!p.length) {\n // empty path, return current value\n return currValue;\n }\n\n const leftBracketIdx = p.indexOf('[');\n if (leftBracketIdx >= 0 && p.endsWith(']')) {\n // should be reference to array\n const arrayPath = p.substring(0, leftBracketIdx);\n const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);\n const array = currValue[arrayPath];\n if (Array.isArray(array)) {\n if (arrayIdx >= 0 && arrayIdx < array.length) {\n // valid index, continue on the path\n currValue = array[arrayIdx];\n continue;\n }\n }\n\n return undefined;\n } else if (typeof currValue === 'object') {\n currValue = currValue[p];\n }\n }\n return currValue;\n } else {\n return value[path];\n }\n }\n}\n","import {DateUtil} from './date.util';\nimport {ObjectUtil} from './object.util';\n\nexport class StringUtil {\n public static escapeHtml(value: string): any {\n return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n }\n\n public static escapeHtmlAny(value?: any): any {\n if (typeof value === 'string') {\n return StringUtil.escapeHtml(value);\n } else if (typeof value === 'object') {\n const escapedValue: any = ObjectUtil.deepCopy(value, {mapGettersToProperties: true});\n\n for (const key in value) {\n if (typeof value[key] === 'string') {\n escapedValue[key] = StringUtil.escapeHtml(value[key]);\n } else if (typeof value[key] === 'object') {\n escapedValue[key] = StringUtil.escapeHtmlAny(value[key]);\n } else {\n escapedValue[key] = value[key];\n }\n }\n return escapedValue;\n }\n\n return value;\n }\n\n /**\n * Stringifies a value - primitives with toString, dates with dateUtil, objects with JSON.stringify.\n * @param value Any value.\n */\n public static stringify(value: any): string {\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'undefined') {\n return 'undefined';\n }\n // eliminate functions, cause they could fall into objects\n if (typeof value === 'function') {\n return `Function ${value.name ?? 'anonymous'}()`;\n }\n if (typeof value === 'object') {\n // date is object, but would like it in ISO string representation\n if (value instanceof Date) {\n return DateUtil.toIsoString(value) ?? 'null';\n }\n try {\n return JSON.stringify(value);\n } catch (e) {\n return value.toString();\n }\n }\n // only primitives should be left to be printed like this (string, number, boolean)\n return value.toString();\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\n\nimport {AMngErrorBase, LogLevelEnum, MngActionError, MngErrorBaseOptions, MngHttpError, MngInternalError} from '../models';\nimport {StringUtil} from './string.util';\n\nexport class ErrorUtil {\n /**\n * Converts RxJS subscription error to MngError.\n * @param error Error.\n * @param name Optional name to write in mngError.\n * @param details Optional details of error.\n */\n public static fromSubscribeError(error: any, name?: string, details?: any): AMngErrorBase {\n const opts: MngErrorBaseOptions = {\n name,\n details,\n location: window?.location?.href\n };\n\n if (error instanceof HttpErrorResponse) {\n return new MngHttpError(error.message ?? 'Http Error occurred', error, opts);\n } else {\n opts.cause = error;\n return new MngInternalError(error.message ?? 'Internal Error occurred', opts);\n }\n }\n\n /**\n * Checks if error is Http error (Angular or Mng).\n * @param error\n */\n public static isHttpErrorResponse(error: any) {\n return error instanceof HttpErrorResponse || error instanceof MngHttpError || (error instanceof MngActionError && (error as MngActionError).httpError);\n }\n\n /**\n * Gets HttpErrorResponse from error (Angular or Mng).\n * @param error Error.\n */\n public static getHttpErrorResponse(error: any): HttpErrorResponse | null {\n if (error instanceof HttpErrorResponse) {\n return error;\n } else if (error instanceof MngHttpError) {\n return error.httpError;\n } else if (error instanceof MngActionError) {\n return error.httpError ?? null;\n } else {\n return null;\n }\n }\n\n /**\n * Gets HttpErrorResponse status from error (Angular or Mng).\n * @param error Error.\n */\n public static getHttpErrorResponseStatus(error: any): number | null {\n return ErrorUtil.getHttpErrorResponse(error)?.status ?? null;\n }\n\n /**\n * Get error log level. All is error, except if error is http error with status >=400 and <500.\n * @param error Error.\n */\n public static getErrorLogLevel(error: any): LogLevelEnum {\n if (ErrorUtil.isHttpErrorResponse(error)) {\n const status = ErrorUtil.getHttpErrorResponseStatus(error);\n if (status && status >= 400 && status < 500) {\n return LogLevelEnum.Warning;\n }\n }\n return LogLevelEnum.Error;\n }\n\n /**\n * Get error name (prototype name or type from mng error if name is not provided).\n * @param error Error.\n */\n public static getErrorName(error: any): string {\n if (error instanceof AMngErrorBase) {\n return error.name ?? error.type;\n } else {\n return error.name;\n }\n }\n\n /**\n * Writes http error to string with all headers and body.\n * @param error Http response error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error (message include url, status and status text!).\n * - hideHeaders Hides headers.\n * - hideBody Hides JSON representation of body.\n */\n public static httpErrorResponseToString(error: HttpErrorResponse, opts?: HttpErrorResponseToStringOptions): string {\n let str = opts?.hideMessage ? '' : `${error.message}\\n`; // message should already include url, status, etc.\n if (!opts?.hideHeaders) {\n str += `Http Response Headers: ${error.headers.keys().reduce((acc, key) => `${acc}[${key}: ${error.headers.get(key)}]`, '')}`;\n }\n if (!opts?.hideBody) {\n str += `\\nHttp Response Body: ${StringUtil.stringify(error.error)}`;\n }\n return str;\n }\n\n /**\n * Error to string.\n * @param error Error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error.\n * - hideName Hides error name.\n * - hideCause Hides cause of an error (if present, see @link(errorCauseToString) for other options).\n * - hideStack Hides stack of an error (if present).\n * - hideDetails Hides JSON detail's representation of error (if present).\n * - hideLocation Hides location (URL) where error was thrown.\n * - hideHttp Hides http error portion of error if http error response (see @link(httpErrorResponseToString) for other options).\n */\n public static errorToString(error: Error, opts?: ErrorToStringOptions): string {\n if (error instanceof AMngErrorBase) {\n return ErrorUtil.mngErrorToString(error, opts);\n } else if (error instanceof HttpErrorResponse) {\n return ErrorUtil.httpErrorResponseToString(error, opts);\n }\n\n const strBlocks: string[] = [];\n if (!opts?.hideMessage) {\n strBlocks.push(error.message);\n }\n if (error.name) {\n strBlocks.push(`Error name: ${error.name}`);\n }\n if (!opts?.hideCause) {\n strBlocks.push(ErrorUtil.errorCauseToString(error, opts));\n }\n if (!opts?.hideStack && error.stack) {\n strBlocks.push(`Stack trace:\\n${error.stack}`);\n }\n\n return strBlocks.filter(s => s.trim().length > 0).join('\\n');\n }\n\n /**\n * Mng error to string.\n * @param error Mng error.\n * @param opts Options for hiding parts of error:\n * - hideMessage Hides message of error.\n * - hideName Hides error name.\n * - hideCause Hides cause of an error (if present, see @link(errorCauseToString) for other options).\n * - hideStack Hides stack of an error (if present).\n * - hideDetails Hides JSON detail's representation of error (if present).\n * - hideLocation Hides location (URL) where error was thrown.\n * - hideHttp Hides http error portion of error if http error response (see @link(httpErrorResponseToString) for other options).\n * - hideItems Hides all item information (http body, action context data).\n * - hideActionData See @link(mngActionErrorContextToString) for additional info.\n * - hideQueryParams See @link(mngActionErrorContextToString) for additional info.\n */\n public static mngErrorToString(error: AMngErrorBase, opts?: MngErrorToStringOptions): string {\n const strBlocks: string[] = [];\n if (!opts?.hideMessage) {\n strBlocks.push(`${error.message}${error.messageCode ? ` (code: ${error.messageCode})` : ''}`);\n }\n if (!opts?.hideName) {\n strBlocks.push(`Error name: ${error.name ?? error.type} ${error.name ? `(${error.type})` : ''}`);\n }\n if (!opts?.hideLocation && error.location) {\n strBlocks.push(`Location: ${error.location}`);\n }\n\n let isHttp = false;\n if (!opts?.hideHttp && error instanceof MngHttpError) {\n strBlocks.push(\n ErrorUtil.httpErrorResponseToString(error.httpError, {\n hideBody: opts?.hideItems || opts?.hideBody,\n hideHeaders: opts?.hideHeaders,\n hideMessage: error.message.indexOf(error.httpError.message) >= 0\n })\n );\n isHttp = true;\n }\n if (error instanceof MngActionError) {\n if (error.actionContext) {\n strBlocks.push(ErrorUtil.mngActionErrorContextToString(error, opts));\n }\n if (!opts?.hideHttp && error.httpError) {\n strBlocks.push(\n ErrorUtil.httpErrorResponseToString(error.httpError, {\n hideBody: opts?.hideItems || opts?.hideBody,\n hideHeaders: opts?.hideHeaders,\n hideMessage: error.message.indexOf(error.httpError.message) >= 0\n })\n );\n isHttp = true;\n }\n }\n\n if (!opts?.hideDetails && error.details) {\n strBlocks.push(`Details: ${StringUtil.stringify(error.details)}`);\n }\n if (!opts?.hideCause && (!isHttp || !(error.cause instanceof HttpErrorResponse))) {\n strBlocks.push(ErrorUtil.errorCauseToString(error, opts));\n }\n if (!opts?.hideStack && error.stack) {\n strBlocks.push(`Stack trace:\\n${error.stack}`);\n }\n\n return strBlocks.filter(s => s.trim().length > 0).join('\\n');\n }\n\n /**\n * Writes Mng action error info from context as string.\n * @param error Mng action error.\n * @param opts Options for hiding parts of error:\n * - hideItems Hides all item related information (item, form item, submit item, ...).\n * - hideActionData Hides action data.\n * - hideQueryParams Hides query params.\n */\n public static mngActionErrorContextToString(error: MngActionError, opts?: MngActionErrorContextToStringOptions): string {\n let paramsMessage = '';\n if (error.actionContext?.parameters) {\n if (error.actionContext?.parameters.itemId) {\n paramsMessage += `[itemId: ${error.actionContext.parameters.itemId}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.item) {\n paramsMessage += `[item: ${StringUtil.stringify(error.actionContext.parameters.item)}]`;\n }\n if (!opts?.hideActionData && error.actionContext?.parameters.actionData) {\n paramsMessage += Object.entries(error.actionContext?.parameters.actionData).reduce(\n (acc, [key, value]) => `${acc}[actionData ${key}: ${StringUtil.stringify(value)}]`,\n ''\n );\n }\n if (!opts?.hideQueryParams && error.actionContext?.parameters.dataListParams) {\n paramsMessage += `[queryParam: ${StringUtil.stringify(error.actionContext.parameters.dataListParams)}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.formItem) {\n paramsMessage += `[formItem: ${StringUtil.stringify(error.actionContext.parameters.formItem)}]`;\n }\n if (!opts?.hideItems && error.actionContext?.parameters.submitResult) {\n paramsMessage += `[formItem: ${StringUtil.stringify(error.actionContext.parameters.submitResult)}]`;\n }\n if (error.actionContext?.parameters.locale) {\n paramsMessage += `[locale: ${StringUtil.stringify(error.actionContext.parameters.locale)}]`;\n }\n }\n\n return paramsMessage;\n }\n\n /**\n * Writes cause of an error as string.\n * @param error Error.\n * @param opts Options for hiding parts of error:\n * - causeOnErrorOnly Prints only if cause is instance of error.\n * - causeAsJson Print error cause as a JSON (by default, if error only message and name will be printed).\n */\n public static errorCauseToString(error: Error, opts?: ErrorCauseToStringOptions): string {\n // if already logged as http error, check that cause is not also http error (cause it is usually duplicated)\n if (error.cause && (!opts?.causeOnErrorOnly || error.cause instanceof Error)) {\n const stringify = opts?.causeAsJson || !(error.cause instanceof Error);\n if (!opts?.causeOnErrorOnly || error.cause instanceof Error) {\n return (\n 'Caused by: ' +\n (stringify ? StringUtil.stringify(error.cause) : `${(error.cause as Error).message}${(error.cause as Error).name ? ` (${(error.cause as Error).name})` : ''}`)\n );\n }\n }\n return '';\n }\n}\n\nexport type ErrorToStringOptions = MngErrorToStringOptions;\n\nexport type MngErrorToStringOptions = ErrorToStringOptionsBase &\n HttpErrorResponseToStringOptions &\n MngActionErrorContextToStringOptions &\n ErrorCauseToStringOptions & {\n hideDetails?: boolean;\n hideLocation?: boolean;\n };\n\nexport interface ErrorToStringOptionsBase {\n hideName?: boolean;\n hideStack?: boolean;\n hideCause?: boolean;\n hideHttp?: boolean;\n}\n\nexport interface HttpErrorResponseToStringOptions {\n hideMessage?: boolean;\n hideHeaders?: boolean;\n hideBody?: boolean;\n}\n\nexport interface MngActionErrorContextToStringOptions {\n hideItems?: boolean;\n hideActionData?: boolean;\n hideQueryParams?: boolean;\n}\n\nexport interface ErrorCauseToStringOptions {\n causeOnErrorOnly?: boolean;\n causeAsJson?: boolean;\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {ActionDescriptorInst, ActionEditorDescriptorInst} from '../descriptors/action';\nimport {ModelDescriptor} from '../descriptors/model';\nimport {IMngError} from '../models';\nimport {ClassType, I18nType, KeyOfType} from '../types';\nimport {DecoratorMetadataUtil} from './decorator-metadata.util';\nimport {ErrorUtil} from './error.util';\n\nexport namespace I18nUtils {\n export class Common {\n public static getAsync(translate: TranslateService, params?: any, ...keys: Array<string>): Observable<string | null> {\n return translate.stream(keys, params).pipe(map(i18n => I18nUtils.Common.selectI18n(keys, i18n)));\n }\n\n public static get(translate: TranslateService, params?: any, ...keys: Array<string>): string | null {\n const i18n = translate.instant(keys, params);\n return I18nUtils.Common.selectI18n(keys, i18n);\n }\n\n public static populateParams(item?: any, params: any = {}) {\n const paramsRes = {...params};\n if (item) {\n paramsRes.item = item;\n }\n return paramsRes;\n }\n\n public static selectI18n(keys: string[], i18n: any): string | null {\n for (const key of keys) {\n if (key !== i18n[key]) {\n return i18n[key];\n }\n }\n return null;\n }\n }\n\n export class Type {\n public static getClassNameAsync(translate: TranslateService, classType: ClassType<any>, singular?: boolean): Observable<string | null> {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getNameAsync(translate, typeName ?? '', singular);\n }\n\n public static getClassName(translate: TranslateService, classType: ClassType<any>, singular?: boolean): string | null {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getName(translate, typeName ?? '', singular);\n }\n\n public static getNameAsync(translate: TranslateService, typeName: string, singular?: boolean): Observable<string | null> {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.getAsync(translate, undefined, ...keys);\n }\n\n public static getName(translate: TranslateService, typeName: string, singular?: boolean): string | null {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.get(translate, undefined, ...keys);\n }\n\n public static getClassTabKey(classType: ClassType<any>, tab: string): string {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getTabKey(typeName ?? '', tab);\n }\n\n public static getTabKey(typeName: string, tab: string): string {\n return I18nUtils.Type.getPath(typeName, 'tabs', tab);\n }\n\n public static getClassGroupKey(classType: ClassType<any>, group: string): string {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getGroupKey(typeName ?? '', group);\n }\n\n public static getGroupKey(typeName: string, group: string): string {\n return I18nUtils.Type.getPath(typeName, 'groups', group);\n }\n\n public static getClassPropertyKey(classType: ClassType<any>, property: string): string {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getPropertyKey(typeName ?? '', property);\n }\n\n public static getPropertyKey(typeName: string, property: string): string {\n return I18nUtils.Type.getPath(typeName, 'properties', property);\n }\n\n public static getClassPath(classType: ClassType<any>, ...path: Array<string>): string {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getPath(typeName ?? '', ...path);\n }\n\n public static getPath(typeName: string, ...path: Array<string>): string {\n return `${typeName.length ? `${typeName}.` : ''}${path.join('.')}`;\n }\n\n public static getClassParams(translate: TranslateService, classType: ClassType<any>, item: any, params: any = {}): any {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getParams(translate, typeName ?? undefined, item, params);\n }\n\n public static getParams(translate: TranslateService, typeName?: string, item?: any, params: any = {}): any {\n const i18nTypeName = typeName ? I18nUtils.Type.getName(translate, typeName, true) : null;\n return I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params);\n }\n\n public static getClassParamsAsync(translate: TranslateService, classType: ClassType<any>, item?: any, params: any = {}): Observable<any> {\n const typeName = DecoratorMetadataUtil.findTypeName(classType);\n return I18nUtils.Type.getParamsAsync(translate, typeName ?? undefined, item, params);\n }\n\n public static getParamsAsync(translate: TranslateService, typeName?: string, item?: any, params: any = {}): Observable<any> {\n return (typeName ? I18nUtils.Type.getNameAsync(translate, typeName, true) : of(null)).pipe(\n map(i18nTypeName => I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params))\n );\n }\n\n public static populateParams(i18nTypeName?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params};\n if (i18nTypeName) {\n paramsRes.typeName = i18nTypeName;\n }\n return I18nUtils.Common.populateParams(item, paramsRes);\n }\n\n private static getNameKeys(typeName: string, singular?: boolean): Array<string> {\n const keys = [];\n if (typeof singular !== 'undefined') {\n keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);\n }\n keys.push(`${typeName.length ? `${typeName}.` : ''}name`);\n return keys;\n }\n }\n\n export class Model {\n public static get(\n translate: TranslateService,\n model: ModelDescriptor<any>,\n keyPath: string,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): string | null {\n const keys = I18nUtils.Model.getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = I18nUtils.Model.getParams(translate, model, item, params);\n return I18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string | null {\n return I18nUtils.Type.getName(translate, model.i18nBaseKey, singular);\n }\n\n public static getNameAsync(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): Observable<string | null> {\n return I18nUtils.Type.getNameAsync(translate, model.i18nBaseKey, singular);\n }\n\n public static getParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Type.getParams(translate, model?.i18nBaseKey, item, params);\n return I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Type.getParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(\n map(i18nParams => I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams))\n );\n }\n\n public static populateParams(idProperty?: KeyOfType, titleProperty?: KeyOfType, item?: any, params: any = {}): any {\n const paramsRes = {...params, itemId: '', itemTitle: ''};\n if (item) {\n if (idProperty && item[idProperty]) {\n paramsRes.itemId = item[idProperty];\n }\n if (titleProperty && item[titleProperty]) {\n paramsRes.itemTitle = item[titleProperty];\n }\n }\n return paramsRes;\n }\n\n private static getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = I18nUtils.Type.getPath(model.i18nBaseKey, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Action {\n /**\n * Returns translation for action with given keys and params\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item\n * @param fallbackKey fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\n public static get(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nType = 'returnFirstKey'\n ): string | null {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = I18nUtils.Action.getParams(translate, action, item, params);\n const i18nValue = I18nUtils.Common.get(translate, i18nParams, ...keys);\n return this.getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey});\n }\n\n /**\n * Returns async translation for given keys with given params.\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item item\n * @param fallbackKey fallback key, used as fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\n public static getAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nType = 'returnFirstKey'\n ): Observable<string | null> {\n return I18nUtils.Action.getParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return I18nUtils.Common.getAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => this.getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey}))\n );\n })\n );\n }\n\n /**\n * Returns translation depending on missingTranslationStrategy\n * @param missingTranslationStrategy strategy when no translation is found\n * @param values object with values, i18nValue is translation, firstKey is first key in array of keys, fallbackKey is fallback key\n */\n private static getTranslationDependingOnStrategy(\n missingTranslationStrategy: I18nType,\n {i18nValue, firstKey, fallbackKey}: {i18nValue: string | null; firstKey?: string; fallbackKey?: string}\n ): string | null {\n if (i18nValue !== null) {\n return i18nValue;\n } else {\n switch (missingTranslationStrategy) {\n case 'returnNull':\n return null;\n case 'returnFallbackKey':\n return fallbackKey ?? null;\n case 'returnFirstKey':\n return firstKey ?? null;\n }\n }\n }\n\n public static getTitleAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, 'title', undefined, item);\n }\n\n public static getEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item, undefined, action.editorTitleParams ?? undefined);\n }\n\n public static getParams(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Model.getParams(translate, action.model ?? undefined, item, params);\n return I18nUtils.Action.populateParams(i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Model.getParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => I18nUtils.Action.populateParams(i18nParams)));\n }\n\n public static populateParams(params: any = {}): any {\n params = {...params};\n return params;\n }\n\n private static getKeysByPriority(action: ActionDescriptorInst<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n const modelActionKey = `${action.i18nModelActionBaseKey}.${k}`;\n const actionKey = `${action.actionName}.${k}`;\n keys.push(modelActionKey, actionKey);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Error {\n public static get(translate: TranslateService, error: IMngError, params: any = {}): string | null {\n const i18nParams = I18nUtils.Error.getParams(error, params);\n if (error.messageCode) {\n const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];\n const i18n = I18nUtils.Common.get(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return I18nUtils.Common.get(translate, i18nParams, error.message);\n }\n\n public static getParams(error: IMngError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (ErrorUtil.isHttpErrorResponse(error)) {\n const httpError = ErrorUtil.getHttpErrorResponse(error);\n paramsRes.errorStatus = httpError?.status;\n paramsRes.errorMessage = httpError?.message;\n paramsRes.errorStatusDescription = httpError?.statusText;\n }\n\n paramsRes.error = error;\n return paramsRes;\n }\n }\n}\n","import {ILookupDescriptor} from '../descriptors/interfaces';\nimport {ClassAttributeDef} from '../models';\nimport {TypeRegistry} from '../registry/type.registry';\nimport {ClassType} from '../types';\n\nexport class ModelUtil {\n public static findIdAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = ModelUtil.getAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let idAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attrDef[0];\n }\n\n return idAttribute?.name ?? null;\n }\n\n public static findTitleAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = ModelUtil.getAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let titleAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attrDef[0];\n }\n\n return titleAttribute?.name ?? null;\n }\n\n public static getAttributeDef<T>(classType?: ClassType<T>) {\n if (!classType) return null;\n const attrDefByFn = (classType as any).getAttributeTypeMap?.() as Array<ClassAttributeDef> | undefined;\n if (attrDefByFn) return attrDefByFn;\n const attrDefByProp = (classType as any).attributeTypeMap as Array<ClassAttributeDef> | undefined;\n if (attrDefByProp) return attrDefByProp;\n const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);\n if (attrByObjSer) return attrByObjSer;\n return null;\n }\n\n private static findAttributeByTypeAndName(attributes: ClassAttributeDef[], types: string[], ...names: string[]): ClassAttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n }\n\n public static trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsTrack = true) {\n if (lookup.dataProvider.classType) {\n if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n const idProperty = ModelUtil.findIdAttribute(lookup.dataProvider.classType) ?? undefined;\n if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n if (idAsTrack) {\n lookup.withOptionsTrackPropertyUnsafe(idProperty);\n }\n }\n }\n if (!lookup.optionsLabelProperty) {\n const labelProperty = ModelUtil.findTitleAttribute(lookup.dataProvider.classType);\n if (labelProperty) {\n lookup.withOptionsLabelPropertyUnsafe(labelProperty);\n }\n }\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message, MessageService} from 'primeng/api';\n\nimport {ActionDescriptor} from '../descriptors/action';\nimport {TableDescriptorInst} from '../descriptors/table';\nimport {IMngError} from '../models';\nimport {I18nUtils} from './i18n.util';\n\nexport class NotificationUtil {\n public static notification(messageService: MessageService, title?: string, message?: string, severity: 'success' | 'warn' | 'error' = 'success', icon?: string): Message {\n const notification: Message = {severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000, icon: icon};\n messageService.add(notification);\n return notification;\n }\n\n public static tableNotificationError(translate: TranslateService, table: TableDescriptorInst<any>, error: any, messageService: MessageService): Message {\n const params: any = {};\n if (error?.message) {\n params.errorMessage = `: ${error.message}`;\n } else {\n params.errorMessage = '.';\n }\n const tableErrorTitle = I18nUtils.Model.get(translate, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;\n const tableErrorMessage = I18nUtils.Model.get(translate, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;\n return NotificationUtil.notification(messageService, tableErrorTitle, tableErrorMessage, 'error', 'pi-exclamation-triangle');\n }\n\n public static actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptor,\n functionName: string,\n messageService: MessageService,\n customTitleKey?: string,\n customMessageKey?: string,\n item?: any\n ): Message {\n const actionSuccessTitle = I18nUtils.Action.get(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = I18nUtils.Action.get(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return NotificationUtil.notification(messageService, actionSuccessTitle, actionSuccessMessage);\n }\n\n public static actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptor,\n error: IMngError,\n functionName: string,\n messageService: MessageService,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n ): Message {\n const params = {\n errorMessage: I18nUtils.Error.get(translate, error) ?? error.message\n };\n const actionErrorTitle =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return NotificationUtil.notification(messageService, actionErrorTitle, actionErrorMessage, severity, 'pi-exclamation-triangle');\n }\n\n public static getFormEditorInfoMessage(translate: TranslateService, title: string, message: string, params?: any): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', summary: actionErrorTitle, detail: actionErrorMessage};\n }\n\n public static getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'boolean',\n pure: true\n})\nexport class MngBooleanPipe implements PipeTransform {\n transform(value: any, yes?: string, no?: string, icon = false): any {\n if (typeof value === 'boolean') {\n if (icon) {\n return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';\n } else {\n return value ? yes ?? 'general.yes' : no ?? 'general.no';\n }\n } else {\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {EnumDescriptor} from '../descriptors/model';\nimport {EnumType} from '../types';\nimport {DecoratorMetadataUtil, EnumUtil} from '../utils';\n\n@Pipe({\n standalone: true,\n name: 'enum',\n pure: true\n})\nexport class MngEnumPipe implements PipeTransform {\n transform(value: unknown, enumDesc?: EnumDescriptor<any>, i18nPath?: string | null): any {\n if (!value || (typeof value !== 'number' && typeof value !== 'string')) {\n return value;\n }\n const enumConstantName = !enumDesc || enumDesc.nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumDesc.type, value) ?? value;\n if (typeof i18nPath === 'undefined' && enumDesc) {\n i18nPath = enumDesc.i18nBaseKey ?? DecoratorMetadataUtil.findEnumName(enumDesc.type as EnumType);\n }\n return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ObjectUtil} from '../utils';\n\n/**\n * Imitation of JSONPath Syntax. Supports:\n * - Root object notation with '$'\n * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties\n * - Array notation (e.g.: [0])\n */\n@Pipe({\n standalone: true,\n name: 'jsonPath',\n pure: true\n})\nexport class JsonPathPipe implements PipeTransform {\n transform(value: any, path = ''): any {\n return ObjectUtil.getPropertyByPath(value, path);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {JsonPathPipe} from './json-path.pipe';\nimport {EnumeratePipeI18nInternal} from './models/internal';\n\n@Pipe({\n standalone: true,\n name: 'mgnEnumerate',\n pure: true\n})\nexport class MngEnumeratePipe implements PipeTransform {\n private helper: EnumeratePipeI18nHelper;\n\n constructor(\n private jsonPath: JsonPathPipe,\n private translate: TranslateService\n ) {\n this.helper = new EnumeratePipeI18nHelper(this.jsonPath);\n }\n\n transform<T>(value: Array<T> | Set<T>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): string {\n if (!value) {\n return emptyValueReturn;\n }\n i18nBaseKey = EnumeratePipeI18nHelper.getI18nBaseKey(i18nBaseKey);\n return Array.from(value)\n .map(i => {\n const itemEnumerate = this.helper.toI18nEnumerate(i, jsonPath, i18nBaseKey);\n itemEnumerate.i18n = this.translate.instant(itemEnumerate.i18nKey);\n // return i18n only if used and transl. was found\n return EnumeratePipeI18nHelper.selectI18n(itemEnumerate, i18nBaseKey);\n })\n .join(valueSeparator);\n }\n}\n\nexport class EnumeratePipeI18nHelper {\n constructor(private jsonPathPipe: JsonPathPipe) {}\n\n public static getI18nBaseKey(baseKey: string): string {\n return baseKey.endsWith('.') ? baseKey?.substring(0, baseKey.length - 1) : baseKey;\n }\n\n public static selectI18n(value: EnumeratePipeI18nInternal, baseKey: string): string {\n return baseKey && value.i18nKey === value.i18n ? value.value : value.i18n;\n }\n\n public toI18nEnumerate(value: unknown, jsonPath: string, baseKey: string): EnumeratePipeI18nInternal {\n const valueTrans = this.jsonPathPipe.transform(value, jsonPath);\n const valueAsString = valueTrans.toString();\n return <EnumeratePipeI18nInternal>{\n value: valueAsString,\n i18nKey: baseKey ? `${baseKey}.${valueAsString}` : valueAsString,\n i18n: valueAsString\n };\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {EnumeratePipeI18nHelper} from './enumerate.pipe';\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mgnEnumerateAsync',\n pure: true\n})\nexport class MngEnumerateAsyncPipe implements PipeTransform {\n private helper: EnumeratePipeI18nHelper;\n\n constructor(\n private jsonPath: JsonPathPipe,\n private translate: TranslateService\n ) {\n this.helper = new EnumeratePipeI18nHelper(this.jsonPath);\n }\n\n transform(value: Observable<Array<unknown> | Set<unknown>>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): Observable<string> {\n i18nBaseKey = EnumeratePipeI18nHelper.getI18nBaseKey(i18nBaseKey);\n return value.pipe(\n mergeMap(v => {\n if (!v) {\n return of([emptyValueReturn]);\n }\n return combineLatest(\n Array.from(v)\n .map(ai => this.helper.toI18nEnumerate(ai, jsonPath, i18nBaseKey))\n .map(i =>\n this.translate.stream(i.i18nKey).pipe(\n map((i18n: string) => {\n i.i18n = i18n;\n return EnumeratePipeI18nHelper.selectI18n(i, i18nBaseKey);\n })\n )\n )\n );\n }),\n map(i => i.join(valueSeparator))\n );\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ModelDescriptor} from '../descriptors/model';\nimport {I18nUtils} from '../utils';\n\n@Pipe({\n standalone: true,\n name: 'i18nProperty',\n pure: true\n})\nexport class MngI18nPropertyPipe implements PipeTransform {\n transform(property: string, model: ModelDescriptor<any>): any {\n return I18nUtils.Type.getPropertyKey(model.i18nBaseKey, property);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ActionData} from '../components/action/models';\nimport {IdType} from '../types';\nimport {StringUtil} from '../utils';\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'parametrize',\n pure: true\n})\nexport class MngParametrizePipe implements PipeTransform {\n private jsonPath = new JsonPathPipe();\n\n transform(value: unknown, itemId?: IdType, item?: any, actionData?: ActionData): any {\n let params: any = {};\n if (actionData) {\n params = {\n ...params,\n ...actionData\n };\n }\n if (item) {\n params = {\n ...params,\n item: StringUtil.escapeHtmlAny(item)\n };\n }\n if (itemId) {\n params = {\n ...params,\n itemId: itemId\n };\n }\n\n if (typeof value === 'string') {\n return this.transformString(value, params);\n } else if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n return value.map((s: string) => this.transformString(s, params));\n } else if (typeof value === 'object') {\n // process only first level citizens\n const obj: any = {...value};\n for (const key in obj) {\n const objProp = obj[key];\n if (typeof objProp === 'string') {\n obj[key] = this.transformString(objProp, params);\n }\n }\n return obj;\n } else {\n return value;\n }\n }\n\n private transformString(s: string, params: any) {\n if ((s.indexOf('/') >= 0 && s.indexOf(':') >= 0 && !s.startsWith('http://') && !s.startsWith('https://')) || s.startsWith(':')) {\n // this is router link\n return s\n .split('/')\n .map(s => this.parametrizeStringAsRouterLink(s, params))\n .join('/');\n } else {\n // parametrize normally\n return this.parametrizeString(s, params);\n }\n }\n\n private parametrizeStringAsRouterLink(s: string, params: any): any {\n if (s.startsWith(':')) {\n const itemProperty = s.substring(1);\n return this.jsonPath.transform(params, itemProperty) ?? '';\n } else {\n return s;\n }\n }\n\n private parametrizeString(s: string, params: any): any {\n return s.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (subs: string, key: string) => this.jsonPath.transform(params, key) ?? subs);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {GetterFn} from '../types';\n\n@Pipe({\n standalone: true,\n name: 'getter',\n pure: true\n})\nexport class MngGetterPipe implements PipeTransform {\n transform(value: unknown, getterFn?: GetterFn, item?: unknown): any {\n if (typeof getterFn === 'function') {\n return getterFn(item, value);\n }\n\n return value;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {MngParametrizePipe} from './parametrize.pipe';\n\n@Pipe({\n standalone: true,\n name: 'template',\n pure: true\n})\nexport class MngTemplatePipe implements PipeTransform {\n constructor(private parametrizePipe: MngParametrizePipe) {}\n\n transform(value: unknown, template?: string): any {\n if (typeof template === 'string') {\n return this.parametrizePipe.transform(template, undefined, value);\n }\n\n return value;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'mngClassMapPipe',\n pure: true\n})\nexport class MngClassMapPipe<T> implements PipeTransform {\n transform(className?: string, classNameMapFn?: (className?: string, item?: T) => string, item?: T): string {\n if (classNameMapFn && typeof classNameMapFn === 'function') {\n return classNameMapFn(className, item);\n } else {\n return className ?? '';\n }\n }\n}\n","import {Injector, Pipe, PipeTransform} from '@angular/core';\n\nimport {TableDescriptorInst} from '../descriptors/table';\nimport {MngCommonsService} from '../services';\n\n@Pipe({\n standalone: true,\n name: 'mngLocaleDefaultRowClass',\n pure: true\n})\nexport class MngLocaleDefaultRowClassPipe<T> implements PipeTransform {\n constructor(private injector: Injector) {}\n\n transform(value?: any, descriptor?: TableDescriptorInst<T>, item?: T): string {\n if (descriptor?.isLocalized) {\n if ((item as any)[descriptor.localizationLocaleProperty!] === this.injector.get(MngCommonsService).defaultDataLanguage) {\n return value + ' all-translations-default-value';\n }\n }\n return value ?? '';\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {TableviewDescriptorInst} from '../descriptors/tableview';\nimport {MngGetterPipe} from '../pipes';\n\nexport class ExportUtils {\n public static prepareDataForExport(pageData: any[], delimiter: string, descriptor: TableviewDescriptorInst<any, any, any>, translate: TranslateService): string {\n const replaceNullValue = (key: any, value: any) => (value === null ? '' : value);\n const getterPipe = new MngGetterPipe();\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.typeName + '.properties.' + col.property)).join(delimiter),\n ...pageData.map((row: any) =>\n descriptor.table.columns\n .map(column => {\n if (typeof column.getter === 'function') {\n return JSON.stringify(getterPipe.transform(row[column.property], column.getter, row), replaceNullValue);\n } else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter)\n )\n ].join('\\r\\n');\n }\n}\n","export class FileUtil {\n public static saveAs(blob: Blob, filename: string) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n\n document.body.appendChild(link);\n\n link.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n\n document.body.removeChild(link);\n }\n}\n","import {HttpClient, HttpErrorResponse} from '@angular/common/http';\n\nimport {Observable, combineLatest, of, tap} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {IMngLoggerService, MngModuleConfig} from '../models';\nimport {ObjectUtil} from '../utils';\n\nexport class MngConfigurationService {\n private static _instance: MngConfigurationService = new MngConfigurationService();\n\n public static get(): MngConfigurationService {\n return MngConfigurationService._instance;\n }\n\n private logger?: IMngLoggerService;\n\n private http?: HttpClient;\n private moduleConfig?: MngModuleConfig;\n private projectEnvironment?: any;\n private jsonSources: Array<JsonSourceLoadInfo> = [];\n private objectSources: Array<any> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor() {\n // empty, but needed for private constructor\n }\n\n public init(httpClient: HttpClient, logger?: IMngLoggerService): this {\n this.http = httpClient;\n this.logger = logger?.create('MngConfigurationService');\n return this;\n }\n\n /**\n * Add mng commons module config.\n * @param config Module config.\n */\n public addModuleConfigSource(config?: MngModuleConfig): void {\n this.moduleConfig = config;\n this.mergeConfigs();\n this.logger?.debug(`Module configuration source added.`);\n }\n\n /**\n * Add project environment source.\n * @param environment Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n this.mergeConfigs();\n this.logger?.debug(`Environment configuration source added.`);\n }\n\n /**\n * Adds new config source from JSON file loaded from HTTP.\n * @param config Config for JSON file.\n * @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.\n */\n public addJsonSource(config: {url?: string; enableEnvProd?: boolean} = {}, loadImmediately = false): Observable<boolean> {\n if (!config) {\n config = {};\n }\n const url = config?.url ?? 'assets/config/env{{environment}}.json';\n const enableEnvProdReplace = config?.enableEnvProd ?? false;\n\n const sourceInfo: JsonSourceLoadInfo = {\n url: url,\n isEnvironment: false,\n environmentEnableEnvProd: enableEnvProdReplace,\n isLoaded: false\n };\n this.jsonSources.push(sourceInfo);\n\n this.logger?.debug(`JSON configuration source added: ${url}.`);\n\n if (loadImmediately) {\n return this.loadJsonConfigurations();\n } else {\n return of(true);\n }\n }\n\n /**\n * Adds new config object from any object.\n * @param config Config object.\n */\n public addObjectSource(config: any): void {\n this.objectSources.push(config);\n this.logger?.debug(`Object configuration source added.`);\n this.mergeConfigs();\n }\n\n /**\n * returns true if there is no jsonSources\n */\n private skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;\n\n /**\n * loads json sources or skips them returning true in both cases\n * used for `skipJsonSourceInit` configuration parameter\n */\n public loadJsonConfigurations = (): Observable<boolean> => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());\n\n private loadJsonSources(): Observable<boolean> {\n if (!this.http) {\n this.logger?.warn('HTTP client was not initialized. Json source cannot be loaded');\n return of(false);\n }\n\n const httpClient = this.http;\n\n return combineLatest(\n this.jsonSources\n .filter(source => !source.isLoaded)\n .map(sourceInfo => {\n let url = sourceInfo.url;\n sourceInfo.environment = this.projectEnvironment.name || (this.projectEnvironment.production ? (sourceInfo.environmentEnableEnvProd ? 'prod' : null) : 'dev');\n sourceInfo.isEnvironment = !!sourceInfo.environment;\n\n if (sourceInfo.isEnvironment) {\n url = url.replace('{{environment}}', '.' + sourceInfo.environment);\n } else {\n // replace possible environment entry and change source info url\n url = url.replace('{{environment}}', '');\n sourceInfo.url = url;\n }\n\n this.logger?.debug(`Loading JSON configuration source from ${url}.`);\n\n return httpClient.get<object>(url).pipe(\n catchError((err: HttpErrorResponse) => {\n if (sourceInfo.isEnvironment) {\n const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');\n sourceInfo.environment = null;\n return httpClient.get<object>(noEnvUrl);\n } else {\n this.logger?.warn(`Configuration file ${url} not loaded`, err);\n\n return of(false);\n }\n }),\n map(configuration => {\n if (typeof configuration !== 'object') {\n return false;\n }\n\n sourceInfo.configuration = configuration;\n sourceInfo.isLoaded = true;\n\n return true;\n })\n );\n })\n ).pipe(\n map(sourceResults => sourceResults.every(sr => sr)),\n tap(() => this.mergeConfigs())\n );\n }\n\n /**\n * Get configuration.\n */\n public getConfig() {\n return this.configuration;\n }\n\n /**\n * Get configuration value for key.\n * @param key Configuration key.\n */\n public getConfigValue<T = any>(key: string): T | null {\n return this.configuration[key] ? this.configuration[key] : null;\n }\n\n /**\n * Has configuration for key.\n * @param key Configuration key.\n */\n public hasConfigKey(key: string): boolean {\n return Object.keys(this.configuration).some(k => k === key);\n }\n\n /**\n * Merges configuration from multiple sources with\n */\n private mergeConfigs() {\n let config = {};\n\n // 1. object sources have highest priority\n if (this.objectSources.length) {\n for (const objConfig of this.objectSources) {\n config = ObjectUtil.deepMerge(config, objConfig);\n }\n }\n\n // 2. JSON sources come next\n const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);\n if (jsonConfigs.length) {\n for (const jsonConfig of jsonConfigs) {\n if (jsonConfig) {\n config = ObjectUtil.deepMerge(config, jsonConfig);\n }\n }\n }\n\n // 3. project env has the next priority\n if (this.projectEnvironment) {\n config = ObjectUtil.deepMerge(config, this.projectEnvironment);\n }\n\n // 4. module config has the lowest priority\n if (this.moduleConfig) {\n config = ObjectUtil.deepMerge(config, this.moduleConfig);\n }\n\n this.configuration = config;\n }\n}\n\ninterface JsonSourceLoadInfo {\n url: string;\n isLoaded: boolean;\n isEnvironment: boolean;\n environment?: string | null;\n environmentEnableEnvProd?: boolean;\n configuration?: object;\n}\n","import {DatePipe} from '@angular/common';\n\nimport {IMngLogPublisher, IMngLoggerService, LogLevelEnum, MngInternalError, MngLogConfig, MngLogEntry} from '../models';\nimport {DateUtil} from '../utils';\nimport {MngConfigurationService} from './configuration.service';\n\nexport class MngLoggerService implements IMngLoggerService {\n private static _instance: MngLoggerService = new MngLoggerService();\n private static _isInit = false;\n private static _configurationService?: MngConfigurationService;\n private static _publishers: IMngLogPublisher[] = [];\n private static _entriesBuffer: MngLogEntry[] = [];\n private static _categoryInstances: Record<string, MngLoggerService> = {};\n private static _timestampFormat = 'yyyy-MM-dd HH:mm:ss.SSS';\n\n private category?: string;\n\n // Temporary settings that cover logging calls before initialisation\n private readonly defaultLogLevel: LogLevelEnum = LogLevelEnum.Info;\n private datePipe = new DatePipe('en-US');\n\n private constructor() {\n // empty\n }\n\n public static get() {\n return MngLoggerService._instance;\n }\n\n public static configure(config: {timestampFormat?: string}) {\n if (config.timestampFormat) {\n MngLoggerService._timestampFormat = config.timestampFormat;\n }\n }\n\n public static init(configurationService: MngConfigurationService, publishers: IMngLogPublisher[]) {\n if (MngLoggerService._isInit) {\n return;\n }\n\n MngLoggerService._configurationService = configurationService;\n MngLoggerService._publishers = publishers;\n\n MngLoggerService._isInit = true;\n MngLoggerService._flushBuffer();\n }\n\n private static _flushBuffer() {\n if (!MngLoggerService._isInit) {\n return;\n }\n MngLoggerService._entriesBuffer.forEach(e => this._instance._log(e));\n MngLoggerService._entriesBuffer = [];\n }\n\n public static create(category: string): MngLoggerService {\n return MngLoggerService._instance.create(category);\n }\n\n public create(category: string): MngLoggerService {\n if (this.category) {\n throw new MngInternalError(`Cannot create logger with category inside another category (${this.category}). Must create logger on root.`);\n }\n if (MngLoggerService._categoryInstances[category]) {\n return MngLoggerService._categoryInstances[category];\n }\n\n const logger = new MngLoggerService();\n logger.category = category;\n\n MngLoggerService._categoryInstances[category] = logger;\n\n return logger;\n }\n\n private _processLog(msgOrError: string | Error, logLevel: LogLevelEnum, category: string | undefined = undefined, data?: any[]) {\n const [timestamp, timestampFormatted] = [...this._getTimestamps()];\n\n const logEntry = <MngLogEntry>{\n level: logLevel,\n message: typeof msgOrError === 'string' ? msgOrError : msgOrError.message,\n data: data,\n category: this.category ?? category,\n timestamp: timestamp,\n timestampFormatted: timestampFormatted ?? undefined\n };\n\n if (msgOrError instanceof Error) {\n // set error from message param\n logEntry.error = msgOrError;\n } else if (data?.length && data[0] instanceof Error) {\n // if first data is error, also consider as error\n logEntry.error = data[0];\n logEntry.data = data.splice(1);\n }\n\n this._log(logEntry);\n }\n\n private _getTimestamps(): [Date, string | null] {\n const timestamp = new Date();\n const timestampFormatted = this.datePipe.transform(timestamp, MngLoggerService._timestampFormat) ?? DateUtil.toIsoString(timestamp);\n return [timestamp, timestampFormatted];\n }\n\n private _log(log: MngLogEntry) {\n if (!MngLoggerService._isInit) {\n // add to buffer\n MngLoggerService._entriesBuffer.push(log);\n return;\n }\n\n const logConfig = MngLoggerService._configurationService?.getConfigValue<MngLogConfig>?.('log');\n if (\n (this.category && log.level < (logConfig?.category?.[this.category]?.level ?? logConfig?.level ?? this.defaultLogLevel)) ||\n (!this.category && log.level < (logConfig?.level ?? this.defaultLogLevel))\n ) {\n return;\n }\n\n if (logConfig?.timestampFormat) {\n log.timestampFormatted = this.datePipe.transform(log.timestamp, logConfig.timestampFormat) ?? undefined;\n }\n\n MngLoggerService._publishers.forEach(p => p.addEntry(log));\n }\n\n public trace(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Trace, undefined, data);\n }\n\n public debug(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Debug, undefined, data);\n }\n\n public log(msgOrError: string | Error, logLevel: LogLevelEnum = LogLevelEnum.Log, category: string | undefined = undefined, ...data: any[]) {\n this._processLog(msgOrError, logLevel, category, data);\n }\n\n public logEntry<E extends Partial<MngLogEntry>>(logEntry: E) {\n const [timestamp, timestampFormatted] = [...this._getTimestamps()];\n const logEntryFinal: MngLogEntry = {\n timestamp: timestamp,\n timestampFormatted: timestampFormatted ?? undefined,\n category: this.category ?? logEntry.category,\n message: '',\n messageDetails: logEntry.messageDetails,\n level: LogLevelEnum.Log,\n ...logEntry\n };\n this._log(logEntryFinal);\n }\n\n public info(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Info, undefined, data);\n }\n\n public warn(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Warning, undefined, data);\n }\n\n public error(msgOrError: string | Error, ...data: any[]) {\n this._processLog(msgOrError, LogLevelEnum.Error, undefined, data);\n }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const MNG_BROWSER_STORAGE_IT = new InjectionToken<Storage>('Browser storage', {\n providedIn: 'root',\n factory: () => localStorage\n});\n","import {InjectionToken} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nexport const MNG_COMMONS_INITIALIZER_IT = new InjectionToken<ReadonlyArray<() => Observable<unknown>>>('MNG Commons Initializer');\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_DIALOG_COMPONENT_SETTING: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_DIALOG_COMPONENT_SETTING');\n","import {InjectionToken} from '@angular/core';\n\nimport {IMngLogPublisher} from '../../models';\n\nexport const MNG_LOG_PUBLISHERS = new InjectionToken<IMngLogPublisher[]>('MNG_LOG_PUBLISHERS');\n","import {InjectionToken} from '@angular/core';\n\nimport {MngModuleConfig} from '../../models';\n\nexport const MNG_MODULE_CONFIG_IT = new InjectionToken<MngModuleConfig>('MngModuleConfig');\n","import {Injectable, inject} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {FilterService, PrimeNGConfig} from 'primeng/api';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {IUser, MngMenuItem} from '../models';\nimport {MngBreadcrumbMenuItem, MngRouterData} from '../router/models';\nimport {MngLoggerService} from './logger.service';\nimport {MNG_BROWSER_STORAGE_IT, MNG_MODULE_CONFIG_IT} from './tokens';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngCommonsService {\n // internal\n private readonly logger = inject(MngLoggerService).create('MngCommonsService');\n private readonly router = inject(Router);\n private readonly primengConfig = inject(PrimeNGConfig);\n private readonly translate = inject(TranslateService);\n private readonly titleService = inject(Title);\n private readonly filterService = inject(FilterService);\n private readonly moduleConfig = inject(MNG_MODULE_CONFIG_IT);\n private readonly localStorage = inject(MNG_BROWSER_STORAGE_IT);\n\n private routerEventsSubscription?: Subscription;\n private translateLangChangeSubscription?: Subscription;\n\n // menu\n private _menuMode: 'static' | 'sidebar' | 'slim' | 'overlay' = 'sidebar';\n private _menuModeSubject: Subject<'static' | 'sidebar' | 'slim' | 'overlay'> = new BehaviorSubject(this._menuMode);\n private _menuItems?: MngMenuItem[] = undefined;\n private _menuPinEnabled = false;\n private _menuSidebarSlim = false;\n private _menuActiveKeySubject = new Subject<string>();\n private _menuResetSubject = new Subject();\n\n // breadcrumbs\n private readonly breadcrumbHomeSubject = new BehaviorSubject<MngMenuItem | null>({\n icon: 'pi pi-home',\n routerLink: '/'\n });\n private readonly breadcrumbsSubject = new BehaviorSubject<MngMenuItem[]>([]);\n private breadcrumbsTranslateSubscription?: Subscription;\n private breadcrumbHomeTranslateSubscription?: Subscription;\n\n // visual\n private _colorScheme: 'light' | 'dark' = 'light';\n\n // user\n private _user?: IUser;\n private userSubject: Subject<IUser | undefined> = new ReplaySubject(1);\n private _userRoles: Array<string> = [];\n private userRolesSubject: Subject<Array<string>> = new BehaviorSubject<Array<string>>([]);\n\n // language\n private languageSubject = new ReplaySubject<string | null>(1);\n private dataLanguageSubject = new ReplaySubject<string | null>(1);\n\n // APP section\n\n public get appName() {\n return this.moduleConfig?.app?.name ?? 'app.name';\n }\n\n public get appOwner() {\n return this.moduleConfig?.app?.owner ?? 'app.owner';\n }\n\n public get appLogoLight() {\n return this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoDark() {\n return this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoNameLight() {\n return this.moduleConfig?.app?.logoNamePathLight\n ? this.moduleConfig.app.logoNamePathLight\n : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLogoNameDark() {\n return this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLanguages() {\n return this.moduleConfig?.app?.languages ?? ['en'];\n }\n\n public get appLanguage(): string | null {\n const lsLang = this.localStorage.getItem('lang');\n if (lsLang && this.appLanguages.some(l => l === lsLang)) {\n return lsLang;\n }\n return null;\n }\n\n public set appLanguage(language: string | null) {\n if (language === null) {\n this.localStorage.removeItem('lang');\n this.languageSubject.next(language);\n return;\n }\n if (this.appLanguages.some(l => l === language)) {\n this.localStorage.setItem('lang', language);\n this.languageSubject.next(language);\n this.translate.use(language);\n }\n }\n\n public get appLanguage$() {\n return this.languageSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public initLanguage(): string {\n const browserLang = this.translate.getBrowserLang();\n if (browserLang && this.appLanguages.some(l => l === browserLang)) {\n this.appLanguage = browserLang;\n return browserLang;\n }\n const defaultLanguage = this.appLanguages?.length > 0 ? this.appLanguages[0] : 'en';\n this.appLanguage = defaultLanguage;\n return defaultLanguage;\n }\n\n public getOrInitLanguage(): string {\n return this.appLanguage || this.initLanguage();\n }\n\n public get appDataLanguages() {\n return this.moduleConfig?.app?.dataLanguages ?? ['en'];\n }\n\n public get appDataLanguageDefault() {\n return this.appDataLanguages[0];\n }\n\n public get appDataLanguage(): string | null {\n const dataLang = this.localStorage.getItem('dataLang');\n if (dataLang && this.appDataLanguages.some(dl => dl === dataLang)) {\n return dataLang;\n }\n return this.defaultDataLanguage;\n }\n\n public set appDataLanguage(dataLanguage: string | null) {\n if (dataLanguage === null) {\n this.localStorage.removeItem('dataLang');\n this.dataLanguageSubject.next(dataLanguage);\n return;\n }\n if (this.appDataLanguages.some(dl => dl === dataLanguage)) {\n this.localStorage.setItem('dataLang', dataLanguage);\n this.dataLanguageSubject.next(dataLanguage);\n }\n }\n\n public get appDataLanguage$() {\n return this.dataLanguageSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // We assume, that default data language is the first one from the array of all available data languages\n public get defaultDataLanguage() {\n return this.appDataLanguages[0];\n }\n\n public get appVersion() {\n return this.moduleConfig?.app?.version;\n }\n\n // MENU section\n\n public get menuModeIsStatic() {\n return this._menuMode === 'static';\n }\n\n public get menuModeIsStatic$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'static'));\n }\n\n public get menuModeIsOverlay() {\n return this._menuMode === 'overlay';\n }\n\n public get menuModeIsOverlay$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'overlay'));\n }\n\n public get menuModeIsSlim() {\n return this._menuMode === 'slim';\n }\n\n public get menuModeIsSlim$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'slim'));\n }\n\n public get menuModeIsSidebar() {\n return this._menuMode === 'sidebar';\n }\n\n public get menuModeIsSidebar$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'sidebar'));\n }\n\n public get menuActiveKey$(): Observable<string> {\n return this._menuActiveKeySubject.asObservable();\n }\n\n public get menuReset$(): Observable<any> {\n return this._menuResetSubject.asObservable();\n }\n\n public get menuItems() {\n return this._menuItems;\n }\n\n public set menuItems(menuItems: MngMenuItem[] | undefined) {\n this._menuItems = menuItems;\n }\n\n public get menuPinEnabled() {\n return this._menuPinEnabled;\n }\n\n public get menuSidebarSlim() {\n return this._menuSidebarSlim;\n }\n\n // BREADCRUMB section\n public get breadcrumbHome$() {\n return this.breadcrumbHomeSubject.asObservable();\n }\n\n public get breadcrumbs$() {\n return this.breadcrumbsSubject.asObservable();\n }\n\n // VISUAL section\n\n public get colorSchemeIsLight() {\n return this._colorScheme === 'light';\n }\n\n public get colorSchemeIsDark() {\n return this._colorScheme === 'dark';\n }\n\n // USER section\n\n public get user() {\n return this._user;\n }\n\n public set user(user: IUser | undefined) {\n this._user = user;\n this.userSubject.next(user);\n }\n\n public get user$() {\n return this.userSubject.asObservable();\n }\n\n public get userRoles() {\n return this._userRoles;\n }\n\n public set userRoles(roles: Array<string>) {\n this._userRoles = roles;\n this.userRolesSubject.next(roles);\n }\n\n public get userRoles$() {\n return this.userRolesSubject.asObservable();\n }\n\n // ACTIONS section\n public get actionsDebugInstances(): boolean {\n return this.moduleConfig.actions?.debugInstances ?? false;\n }\n\n public reset() {\n this._menuMode = this.moduleConfig?.layout?.menuMode ?? 'sidebar';\n this._menuModeSubject.next(this._menuMode);\n this._menuItems = this.moduleConfig?.layout?.menuItems;\n this._menuPinEnabled = this.moduleConfig?.layout?.pinEnabled ?? false;\n this._menuSidebarSlim = this.moduleConfig?.layout?.sidebarSlim ?? false;\n\n // visual\n this._colorScheme = this.moduleConfig?.app?.colorScheme ?? 'light';\n\n // ripple\n this.primengConfig.ripple = true;\n\n // translate\n this.translate.langs = this.appLanguages;\n const lang = this.getOrInitLanguage();\n\n this.languageSubject.next(lang);\n this.dataLanguageSubject.next(this.appDataLanguage);\n\n this.translate.use(lang);\n this.translate.get('mngPrime').subscribe(value => this.primengConfig.setTranslation(value));\n\n this.routerEventsSubscription?.unsubscribe();\n this.routerEventsSubscription = this.router.events\n .pipe(\n // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end\n filter(event => event instanceof NavigationEnd)\n )\n .subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n this.translateLangChangeSubscription?.unsubscribe();\n this.translateLangChangeSubscription = this.translate.onLangChange.subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n\n this.logger.debug('Reset');\n }\n\n // MENU actions\n\n menuChangeActiveKey(key: string) {\n this._menuActiveKeySubject.next(key);\n }\n\n menuReset() {\n this._menuResetSubject.next(null);\n }\n\n // BREADCRUMB actions\n public findBreadcrumbItem(item: MngMenuItem): MngMenuItem | null {\n const items = this.breadcrumbsSubject.value;\n if (item.id) {\n return items.find(i => i.id && i.id === item.id) ?? null;\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n return items.find(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr) ?? null;\n } else if (item.positionIndex) {\n return items.find(i => i.positionIndex && i.positionIndex === i.positionIndex) ?? null;\n } else if (item.label) {\n return items.find(i => i.label && i.label === i.label) ?? null;\n } else if (item.icon) {\n return items.find(i => i.icon && i.icon === i.icon) ?? null;\n }\n return null;\n }\n\n public updateBreadcrumbItem(item: MngMenuItem): boolean {\n const items = [...this.breadcrumbsSubject.value];\n let posIdx = -1;\n if (item.id) {\n posIdx = items.findIndex(i => i.id && i.id === item.id);\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n posIdx = items.findIndex(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr);\n } else if (item.positionIndex) {\n posIdx = items.findIndex(i => i.positionIndex && i.positionIndex === i.positionIndex);\n } else if (item.label) {\n posIdx = items.findIndex(i => i.label && i.label === i.label);\n } else if (item.icon) {\n posIdx = items.findIndex(i => i.icon && i.icon === i.icon);\n }\n\n if (posIdx < 0) {\n return false;\n }\n\n items[posIdx] = {\n ...items[posIdx],\n ...item,\n updated: true\n };\n\n this.breadcrumbsSubject.next(items);\n\n return true;\n }\n\n private updateBreadcrumbs() {\n if (this.breadcrumbsTranslateSubscription) {\n this.breadcrumbsTranslateSubscription.unsubscribe();\n this.breadcrumbsTranslateSubscription = undefined;\n }\n if (this.breadcrumbHomeTranslateSubscription) {\n this.breadcrumbHomeTranslateSubscription.unsubscribe();\n this.breadcrumbHomeTranslateSubscription = undefined;\n }\n\n const rootRoute = this.router.routerState.snapshot.root;\n\n const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);\n if (homeBreadcrumb) {\n if (homeBreadcrumb.label) {\n this.breadcrumbHomeTranslateSubscription = this.translate.get(homeBreadcrumb.label).subscribe(i18n => {\n homeBreadcrumb.label = i18n;\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n });\n } else {\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n }\n }\n\n const breadcrumbs: MngMenuItem[] = [];\n this.generateBreadcrumbs(rootRoute, [], breadcrumbs);\n\n breadcrumbs.forEach((b, idx) => {\n b.positionIndex = idx;\n });\n\n const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label!);\n if (i18nKeys.length > 0) {\n this.breadcrumbsTranslateSubscription = this.translate.get(i18nKeys).subscribe(i18n => {\n // Construct the breadcrumb hierarchy\n breadcrumbs.forEach(b => {\n if (b.label && i18n[b.label]) {\n b.label = i18n[b.label];\n }\n });\n\n // Emit the new breadcrumbs\n this.breadcrumbsSubject.next(breadcrumbs);\n });\n } else {\n this.breadcrumbsSubject.next(breadcrumbs);\n }\n }\n\n private generateHomeBreadcrumb(route: ActivatedRouteSnapshot | null): MngMenuItem | null {\n if (!route) {\n return null;\n }\n\n const routeData = route.data as MngRouterData;\n const breadcrumbRouteData = routeData?.breadcrumb;\n if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {\n if (breadcrumbRouteData.isHome === false) {\n return null;\n }\n const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);\n if (breadcrumb) {\n if (typeof breadcrumb.icon === 'undefined') {\n breadcrumb.icon = 'pi pi-home';\n }\n return breadcrumb;\n }\n } else {\n return this.generateHomeBreadcrumb(route.firstChild);\n }\n return null;\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: MngMenuItem[]) {\n if (!route) {\n return;\n }\n\n const routeData = route.data as MngRouterData;\n const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));\n const routeUrl = `/${routeUrlSegments.join('/')}`;\n if (routeData?.breadcrumb) {\n const breadcrumbRouteData = routeData.breadcrumb;\n\n if (Array.isArray(breadcrumbRouteData)) {\n for (const breadcrumbRouteDataItem of breadcrumbRouteData) {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n } else if (typeof breadcrumbRouteData === 'function') {\n breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));\n } else {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n }\n this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);\n }\n\n private createBreadcrumb(routeUrl: string, routeBreadcrumb: string | MngBreadcrumbMenuItem, includeHome = false): MngMenuItem | null {\n const existingBreadcrumb = this.findBreadcrumbItem({routerLink: routeUrl});\n if (existingBreadcrumb?.updated) {\n return existingBreadcrumb;\n }\n if (typeof routeBreadcrumb === 'string') {\n // check for updated existing breadcrumb\n return {\n id: routeUrl,\n label: routeBreadcrumb,\n routerLink: routeUrl\n };\n } else {\n if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {\n // home should not be included\n return null;\n }\n if (typeof routeBreadcrumb.routerLink === 'undefined') {\n routeBreadcrumb.routerLink = routeUrl;\n }\n routeBreadcrumb.id = routeUrl;\n return routeBreadcrumb;\n }\n }\n\n // TITLE section\n\n public setPageTitle(title?: string) {\n let currentRoute = this.router.routerState.snapshot.root;\n while (currentRoute.firstChild) {\n currentRoute = currentRoute.firstChild;\n }\n\n const routeData = currentRoute.data as MngRouterData;\n const pageTitle = title ?? routeData.pageTitle;\n\n this.titleService.setTitle(this.formatPageTitle(pageTitle));\n }\n\n private formatPageTitle(titlePrefix?: string) {\n const titlePieces = [];\n\n if (titlePrefix) {\n titlePieces.push(this.translate.instant(titlePrefix));\n }\n\n titlePieces.push(this.translate.instant('app.name'));\n\n return titlePieces.join(' - ');\n }\n}\n","import {Injector} from '@angular/core';\n\nimport {Observable, isObservable, throwError} from 'rxjs';\n\nimport {ActionContext} from '../components/action/models';\nimport {IDataProvider, IEditorDataProvider, ITableDataProvider} from '../data-providers';\nimport {DataListResult, MngActionError, MngInternalError} from '../models';\nimport {toObservable} from './coercion';\n\nexport function runFnFromDataProviderOrFallback<Item, Service, Return, FallbackReturn = Return>(\n ctx: ActionContext<Item, Service>,\n fn: (ctx: ActionContext<Item, Service>) => Observable<Return> | null,\n fallback: Observable<FallbackReturn>\n): Observable<Return | FallbackReturn> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return fallback;\n}\n\nexport function runFnFromDataProviderOrFail<Item, Service, Return>(\n ctx: ActionContext<Item, Service>,\n fn: (ctx: ActionContext<Item, Service>) => Observable<Return> | null\n): Observable<Return> {\n const dataProviderExec = fn(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n return throwError(\n () =>\n new MngActionError(\n `Data provider could not extract function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`,\n ctx.contextLongName,\n {actionContext: ctx}\n )\n );\n}\n\nexport function runGetAllFromDataProvider<Item, Service>(ctx: ActionContext<Item, Service>): Observable<DataListResult<Item>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<Item, any>;\n const queryParam = ctx.parameters?.dataListParams ?? {};\n return toObservable(tableDataProvider.getAll(queryParam, ctx.serviceInstance));\n }\n return null;\n}\n\nexport function runFetchFromDataProvider<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale)) : null;\n }\n }\n return null;\n}\n\nexport function runCreateFromDataProvider<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? toObservable(editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runUpdateFromDataProvider<Item, service>(ctx: ActionContext<Item, service>): Observable<Item> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\nexport function runDeleteFromDataProvider<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item | null> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<Item, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? toObservable(editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance)) : null;\n }\n }\n return null;\n}\n\n/**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\nexport function getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n if (dataProvider?.serviceType) {\n const service = injector.get<Service>(dataProvider.serviceType, undefined, {optional: true});\n if (!service) {\n throw new MngInternalError(`Data provider service type ${dataProvider.serviceType} could not be injected.`);\n }\n return service;\n } else {\n return null;\n }\n}\n","import {Injectable, Injector} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {ActionContext} from '../components/action/models';\nimport {IDataProvider} from '../data-providers';\nimport {\n getDataProviderService,\n runCreateFromDataProvider,\n runDeleteFromDataProvider,\n runFetchFromDataProvider,\n runFnFromDataProviderOrFail,\n runFnFromDataProviderOrFallback,\n runGetAllFromDataProvider,\n runUpdateFromDataProvider\n} from '../helpers/data-provider-executors';\nimport {DataListResult} from '../models';\nimport {Nullable} from '../types';\n\nexport abstract class DataProviderExecutor {\n public runGetAllOrFail<Item, Service>(ctx: ActionContext<Item, Service>): Observable<DataListResult<Item>> {\n return runFnFromDataProviderOrFail<Item, Service, DataListResult<Item>>(ctx, this.runGetAll.bind(this));\n }\n\n public abstract runGetAll<Item, Service>(ctx: ActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public abstract runGetAll<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public abstract runGetAll<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null;\n\n public runFetchOrFail<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runFetch.bind(this));\n }\n\n public abstract runFetch<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null;\n public abstract runFetch<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runFetch<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runFetch<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runCreateOrFail<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runCreate.bind(this));\n }\n\n public abstract runCreate<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null;\n public abstract runCreate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runCreate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runCreate<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runUpdateOrFail<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runUpdate.bind(this));\n }\n\n public abstract runUpdate<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null;\n public abstract runUpdate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runUpdate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runUpdate<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n public runDeleteOrFail<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item | null> {\n return runFnFromDataProviderOrFail<Item, Service, Item>(ctx, this.runDelete.bind(this));\n }\n\n public abstract runDelete<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public abstract runDelete<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public abstract runDelete<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null;\n\n /**\n * Gets service instance of data provider.\n *\n * @param injector Injector instance\n * @param dataProvider Data provider instance.\n */\n public getDataProviderService<Item, Service>(injector: Injector, dataProvider?: IDataProvider<Item, Service>): Service | null {\n return getDataProviderService(injector, dataProvider);\n }\n}\n\n@Injectable()\nexport class DefaultDataProviderExecutor extends DataProviderExecutor {\n public override runGetAll<Item, Service>(ctx: ActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public override runGetAll<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null;\n public override runFetch<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runFetch<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runFetch<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null;\n public override runCreate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Item> | null;\n public override runUpdate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, Service>(ctx: ActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: ActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, Service>(ctx: ActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: ActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngNavigationService {\n private history: Array<string> = [];\n\n constructor(\n private router: Router,\n private location: Location\n ) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n }\n });\n }\n\n public getCurrentLocationFromHistory(): string | null {\n if (this.history.length > 0) {\n return this.history[this.history.length - 1];\n } else {\n return null;\n }\n }\n\n public getCurrentLocationFromUrl() {\n return this.location.path(true);\n }\n\n public getPreviousLocationFromHistory(): string | null {\n if (this.history.length > 1) {\n return this.history[this.history.length - 2];\n } else {\n return null;\n }\n }\n\n public back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n } else {\n this.router.navigateByUrl('/');\n }\n }\n}\n","import {Injectable, inject} from '@angular/core';\nimport {NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Route, RouteConfigLoadEnd, RouteConfigLoadStart, Router, Routes} from '@angular/router';\n\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {MngLoggerService} from './logger.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngRouterService {\n private readonly logger = inject(MngLoggerService).create('MngRouterService');\n private readonly routesLoadedPropKey = '_loadedRoutes';\n\n private currentNavigationPath?: string;\n private currentNavigationModuleKeys: string[] = [];\n\n private lazyLoadedRoutesConfig: {\n [path: string]: {\n route?: Route;\n isLoadEnd: boolean;\n loadedRoutes?: Routes;\n loadedRoutesSubject: Subject<Routes>;\n };\n } = {};\n\n constructor(private router: Router) {}\n\n public getRouteLoadedChildren(path: string | Array<string>): Routes | undefined {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutes;\n }\n\n public getRouteLoadedChildren$(path: string | Array<string>): Observable<Routes> {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutesSubject.asObservable().pipe(first());\n }\n\n public initialize() {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.startNavigation(event.url);\n } else if (event instanceof RouteConfigLoadStart) {\n this.markNavigationConfigLoad(event.route);\n } else if (event instanceof RouteConfigLoadEnd) {\n this.markNavigationConfigLoad(event.route, true);\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n this.finishNavigation();\n }\n });\n }\n\n private startNavigation(url: string) {\n this.currentNavigationPath = url.split('?')[0].split('#')[0];\n this.currentNavigationModuleKeys = [];\n }\n\n private finishNavigation() {\n if (this.currentNavigationModuleKeys.length) {\n this.currentNavigationModuleKeys.forEach(k => this.getLoadedRoutesFromRoute(k, true));\n }\n this.currentNavigationPath = undefined;\n }\n\n private markNavigationConfigLoad(route: Route, isEnd = false) {\n const routePath = route.path ?? '';\n\n let moduleKey = routePath;\n const currentNavigationPathRoutePathIdx = this.currentNavigationPath?.indexOf(routePath) ?? -1;\n if (this.currentNavigationPath && currentNavigationPathRoutePathIdx >= 0) {\n moduleKey = this.currentNavigationPath.substring(0, currentNavigationPathRoutePathIdx + routePath.length);\n } else if (this.currentNavigationPath && routePath !== this.currentNavigationPath && !routePath.startsWith('/')) {\n // usually means that redirect to currentNavigationPath was done, additionally, route path was also triggered on lazy routes load\n moduleKey = `${this.currentNavigationPath}/${routePath}`;\n }\n\n if (!isEnd && this.currentNavigationModuleKeys.indexOf(moduleKey) < 0) {\n this.currentNavigationModuleKeys.push(moduleKey);\n }\n\n this.logger.trace(`Config load ${isEnd ? 'end' : 'start'} for ${moduleKey} (routePath: ${routePath}; navigationUrl: ${this.currentNavigationPath})`);\n\n const config = this.getOrCreateRouteForModule(moduleKey);\n config.route = route;\n config.isLoadEnd = isEnd;\n\n if (isEnd) {\n this.getLoadedRoutesFromRoute(moduleKey);\n }\n }\n\n private getLoadedRoutesFromRoute(moduleKey: string, isFinish = false) {\n const moduleConfig = this.lazyLoadedRoutesConfig[moduleKey];\n if (!moduleConfig?.route || Array.isArray(moduleConfig.loadedRoutes)) {\n return;\n }\n\n moduleConfig.loadedRoutes = moduleConfig.route![this.routesLoadedPropKey as keyof object];\n\n if (!Array.isArray(moduleConfig.loadedRoutes) && isFinish) {\n // if is called from finish and no lazy loaded routes are matched from router events, try finding in route config, it should be there!\n this.logger.trace(`Route loadedRoutes for ${moduleKey} not found, searching in router config now`);\n const route = this.findRouteInRouteConfig(moduleKey);\n if (route) {\n moduleConfig.route = route;\n moduleConfig.loadedRoutes = moduleConfig.route![this.routesLoadedPropKey as keyof object];\n } else {\n this.logger.warn(`Route loadedRoutes for ${moduleKey} were not found in router config`);\n }\n }\n\n if (typeof moduleConfig.loadedRoutes !== 'undefined') {\n moduleConfig.loadedRoutesSubject.next(moduleConfig.loadedRoutes!);\n moduleConfig.loadedRoutesSubject.complete();\n\n this.logger.trace(`Config load for ${moduleKey} is complete`, moduleConfig);\n }\n }\n\n /**\n * Search for route config by module path by recursive scanning of router config tree.\n * @param modulePath Path of module that is searched.\n * @param routes Routes to be scanned. If not provided, it starts on root router config.\n * @private\n */\n private findRouteInRouteConfig(modulePath: string, routes: Routes = this.router.config): Route | null {\n if (modulePath.startsWith('/')) {\n modulePath = modulePath.substring(1);\n }\n\n for (const route of routes) {\n if (typeof route.path === 'undefined') {\n continue;\n }\n let routePath = route.path;\n if (routePath.startsWith('/')) {\n routePath = routePath.substring(1);\n }\n\n const longestPathMatch = this.findLongestPathMatch(modulePath, routePath);\n if (longestPathMatch === null) {\n continue;\n }\n\n // there is a partial or full match\n if (route.loadChildren && modulePath === longestPathMatch) {\n // it's a hit!\n return route;\n } else if (route.loadChildren && Array.isArray(route[this.routesLoadedPropKey as keyof object])) {\n const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route[this.routesLoadedPropKey as keyof object]);\n if (result) {\n return result;\n }\n } else if (route.children) {\n const result = this.findRouteInRouteConfig(modulePath.substring(longestPathMatch.length, modulePath.length), route.children);\n if (result) {\n return result;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Finds longest path match of source to match string. If match is '', it is considered as a match in Angular routing.\n * @param source Source string from on which comparison is based.\n * @param match Match string to which the source is matched to.\n * @private\n */\n private findLongestPathMatch(source: string, match: string): string | null {\n const sourceSegments = source.split('/');\n const matchSegments = match.split('/');\n\n if (matchSegments.length === 1 && matchSegments[0] === '') {\n // it's a hit, because empty route must always be processed (kind of a \"abstract\" route)\n return '';\n }\n\n if (sourceSegments[0] === matchSegments[0]) {\n // there is a match, find how long it is\n for (let i = 1; i < sourceSegments.length; i++) {\n if (sourceSegments[i] !== matchSegments[i]) {\n // end of match\n return sourceSegments.slice(0, i).join('/');\n }\n }\n\n // there is full match\n return sourceSegments.join('/');\n }\n\n return null;\n }\n\n private getOrCreateRouteForModule(moduleKey: string) {\n if (!this.lazyLoadedRoutesConfig[moduleKey]) {\n this.lazyLoadedRoutesConfig[moduleKey] = {\n loadedRoutesSubject: new ReplaySubject<Routes>(1),\n isLoadEnd: false\n };\n }\n\n return this.lazyLoadedRoutesConfig[moduleKey];\n }\n\n private getModulePathFromRouterLink(path: string | Array<string>) {\n return ('/' + (Array.isArray(path) ? path.join('/') : path)).replace(/\\/\\//g, '/');\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {MngConfigurationService} from './configuration.service';\nimport {MngLoggerService} from './logger.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngVersionService {\n private readonly logger = inject(MngLoggerService).create('MngVersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: MngConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {LocalstorageConfigValueType} from '../types';\n\n@Injectable({providedIn: 'root'})\nexport class MngLocalStorageService {\n private readonly _configKey = 'MngUserPrefs';\n\n private buildLocalStorageKey(type: string, key: string): string {\n return `${this._configKey}_${type}_${key}`;\n }\n\n public getItem<T = LocalstorageConfigValueType>(type: string, key: string): T | undefined {\n const localstorageData = localStorage.getItem(this.buildLocalStorageKey(type, key));\n if (localstorageData) {\n return JSON.parse(localstorageData);\n }\n return undefined;\n }\n\n public setItem<T = LocalstorageConfigValueType>(type: string, key: string, value: T): void {\n localStorage.setItem(this.buildLocalStorageKey(type, key), JSON.stringify(value));\n }\n\n public removeItem(type: string, key: string) {\n localStorage.removeItem(this.buildLocalStorageKey(type, key));\n }\n}\n","/* eslint-disable no-console */\nimport {IMngLogPublisher, LogLevelEnum, MngLogEntry} from '../models';\nimport {ErrorUtil} from '../utils';\n\nexport class MngLogPublisherConsoleService implements IMngLogPublisher {\n addEntry(entry: MngLogEntry): void {\n let prefix = `${entry.timestampFormatted}`;\n if (entry.category) prefix += ` [${entry.category}]`;\n prefix += ':';\n\n const message = `${entry.message}${entry.messageDetails ? `\\n${entry.messageDetails}` : ''}`;\n const logParams: any[] = [prefix, message];\n if (entry.error) {\n logParams.push(`\\n${ErrorUtil.getErrorName(entry.error)}:`, entry.error);\n }\n if (entry.data?.length) {\n logParams.push(`\\nData:\\n`, ...entry.data);\n }\n\n switch (entry.level) {\n case LogLevelEnum.Trace:\n console.trace(...logParams);\n break;\n case LogLevelEnum.Debug:\n console.debug(...logParams);\n break;\n case LogLevelEnum.Log:\n console.log(...logParams);\n break;\n case LogLevelEnum.Info:\n console.info(...logParams);\n break;\n case LogLevelEnum.Warning:\n console.warn(...logParams);\n break;\n case LogLevelEnum.Error:\n console.error(...logParams);\n break;\n }\n }\n}\n","import {HttpBackend, HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject, Subject, combineLatest, mergeMap, of, take, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {MngCommonsInitEventEnum} from '../models';\nimport {MngCommonsService, MngConfigurationService, MngLoggerService, MngRouterService} from './index';\nimport {MNG_COMMONS_INITIALIZER_IT, MNG_LOG_PUBLISHERS, MNG_MODULE_CONFIG_IT} from './tokens';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngCommonsInitService {\n private readonly logger = inject(MngLoggerService);\n private readonly logPublishers = inject(MNG_LOG_PUBLISHERS, {optional: true});\n private readonly config = inject(MngConfigurationService);\n private readonly mngCommons = inject(MngCommonsService);\n private readonly mngRouter = inject(MngRouterService);\n private readonly moduleConfig = inject(MNG_MODULE_CONFIG_IT, {optional: true});\n private readonly commonsInitializers = inject(MNG_COMMONS_INITIALIZER_IT, {optional: true});\n\n private isInitialized = false;\n\n private httpClient!: HttpClient;\n\n private isInitializedSubject = new ReplaySubject<boolean>();\n private commonsInitServiceEvents = new Subject<MngCommonsInitEventEnum>();\n\n public get events$(): Observable<MngCommonsInitEventEnum> {\n return this.commonsInitServiceEvents.asObservable();\n }\n\n public get isInitialized$(): Observable<boolean> {\n return this.isInitializedSubject.asObservable().pipe(take(1));\n }\n\n public initialize(handler: HttpBackend): Observable<void> {\n if (this.isInitialized) {\n return of(void 0);\n }\n this.isInitialized = true;\n\n MngLoggerService.configure({timestampFormat: this.moduleConfig?.log?.timestampFormat});\n\n const ctxLogger = this.logger.create('MngCommonsInitService');\n ctxLogger.debug('Commons initialization is starting');\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.CommonsInitStart);\n\n // init http client\n this.httpClient = new HttpClient(handler);\n\n // init router\n this.mngRouter.initialize();\n\n // init configurations with settings from module config\n this.config.init(this.httpClient, this.logger);\n this.config.addModuleConfigSource(this.moduleConfig ?? undefined);\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceModuleLoaded);\n if (this.moduleConfig?.configuration?.projectEnvironment) {\n this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceProjectEnvLoaded);\n }\n\n // init configurations with settings from module config for json source\n if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {\n const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;\n const jsonSource = this.moduleConfig?.configuration?.jsonSource;\n if (!jsonSource) {\n this.config.addJsonSource({enableEnvProd: jsonSourceEnableEnvProd});\n } else if (Array.isArray(jsonSource)) {\n jsonSource.forEach(source => this.config.addJsonSource({url: source, enableEnvProd: jsonSourceEnableEnvProd}));\n } else {\n this.config.addJsonSource({url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd});\n }\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceJsonAdded);\n }\n\n return this.config.loadJsonConfigurations().pipe(\n mergeMap(() => {\n if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceJsonLoaded);\n }\n // init logger\n MngLoggerService.init(this.config, this.logPublishers ?? []);\n\n if (this.commonsInitializers) {\n ctxLogger.debug('Project initializers are being initialized');\n return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));\n } else {\n return of(true);\n }\n }),\n map(() => {\n ctxLogger.debug('Commons initialization is finished');\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.CommonsInitEnd);\n this.commonsInitServiceEvents.complete();\n this.isInitializedSubject.next(true);\n return this.mngCommons.reset();\n }),\n catchError(err => {\n ctxLogger.warn('Commons initialization failed with error', err);\n this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.CommonsInitError);\n this.commonsInitServiceEvents.complete();\n this.isInitializedSubject.next(false);\n return throwError(() => err);\n })\n );\n }\n}\n","import {Injector} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {IDataProvider} from '../../../data-providers';\nimport {ActionDescriptorInst} from '../../../descriptors/action';\nimport {ActionActivationTriggerEnum, ActionTypeEnum} from '../../../descriptors/types';\nimport {DataListParams, IActionEditorComponent, IMngError} from '../../../models';\nimport {MngLoggerService} from '../../../services';\nimport {ViewContainer} from '../../../services/view';\nimport {IdType} from '../../../types';\n\nexport class ActionError {\n constructor(\n public readonly error: any, // error details\n public readonly dismissed: boolean = false // by user\n ) {}\n}\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<Item, Service = undefined> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptorInst<Item>;\n public readonly createdDate: Date = new Date();\n private readonly logger = MngLoggerService.get().create('ActionInstance');\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<Item>;\n public activationParameters?: ActionParameters<Item>;\n private readonly contexts: Array<ActionContext<Item, Service>> = [];\n private readonly executionSubject = new Subject<Item | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<Item | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: Item | null;\n private _error?: ActionError;\n\n // additional data from trigger/activation\n public activationDialogRef?: DynamicDialogRef;\n public activationEditorComponentRef?: IActionEditorComponent;\n\n // linked actions\n private _reactivationInstanceSubject = new BehaviorSubject<ActionInstance<Item, Service> | undefined>(undefined); // editor action with resubmit enabled\n public previousInstance?: ActionInstance<Item, Service>;\n public nextActionInstance?: ActionInstance<any, any>; // as defined in action descriptor\n public errorActionInstance?: ActionInstance<Item, Service>; // error action must rely on same type, as defined in action descriptor\n\n constructor(action: ActionDescriptorInst<Item>, state = ActionInstanceStateEnum.TriggerStart) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value || (this.stateSubject.value === ActionInstanceStateEnum.RunError && state === ActionInstanceStateEnum.RunStart)) {\n this.logger.trace(`Instance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n this.stateSubject.next(state);\n switch (state) {\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnClick) {\n this.finish();\n }\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n // partially finish reactivation because new instance event must still be emitted\n if (this.action.type === ActionTypeEnum.Editor) {\n this.finish(true);\n }\n break;\n case ActionInstanceStateEnum.FinishComponentDestroyFinal:\n this.finish();\n break;\n case ActionInstanceStateEnum.FinishRouteUntriggerEndFinal:\n case ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.finish();\n }\n break;\n }\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: Item | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - result`, result);\n\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - error`, error);\n\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public set reactivationInstance(instance: ActionInstance<Item, Service> | undefined) {\n // this is allowed to only be executed once for subject and must be in correct status!\n if (this.state !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n return;\n }\n this._reactivationInstanceSubject.next(instance);\n this._reactivationInstanceSubject.complete();\n }\n\n public get reactivationInstance() {\n return this._reactivationInstanceSubject.value;\n }\n\n public get reactivationInstance$(): Observable<ActionInstance<Item, Service>> {\n return this._reactivationInstanceSubject.asObservable().pipe(\n filter(i => !!i), // ignore undefined events (usually initial)\n map(i => i!),\n take(1)\n );\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<Item, Service>, finishPrevious = true) {\n this.logger.trace(`Instance ${this.instanceLongName} - new context ${context.contextLongName}`);\n\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public forceFinish() {\n this.logger.warn(`Force finishing instance '${this.instanceLongName}'. Try completing instance with states instead.`);\n this.state = ActionInstanceStateEnum.FinishDismissedFinal;\n this.finish();\n }\n\n private finish(reactivate = false) {\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n if (!reactivate) {\n // allow reactivation instance to be emitted separately\n this._reactivationInstanceSubject.complete();\n }\n }\n\n public isClosed(): boolean {\n return (\n this.executionSubject.isStopped &&\n this.executionIsRunningSubject.isStopped &&\n this.stateSubject.isStopped &&\n this.resultSubject.isStopped &&\n this.errorSubject.isStopped &&\n this._reactivationInstanceSubject.isStopped &&\n this.contextExecutionSubscriptions.every(s => s.closed) &&\n this.contexts.every(c => c.isClosed())\n );\n }\n}\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<Item, Service = undefined> {\n private readonly logger = MngLoggerService.get().create('ActionContext');\n public readonly contextLongName: string;\n public previousActionInstance?: ActionInstance<unknown, unknown>;\n public confirmation?: Confirmation;\n public notification?: Message;\n public runSubscription?: Subscription;\n\n constructor(\n public readonly injector: Injector,\n public readonly instance: ActionInstance<Item, Service>,\n public readonly parameters: ActionParameters<Item>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly serviceInstance: Service,\n public readonly dataProvider?: IDataProvider<Item, Service>,\n public readonly viewContainer?: ViewContainer<Item, Service>,\n private readonly executionSubject = new ReplaySubject<Item | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n this.logger.trace(`Context ${this.contextLongName} - execution start`);\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: Item | null | undefined, finish = true) {\n this.logger.trace(`Context ${this.contextLongName} - execution next event`, next, finish);\n\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n this.logger.trace(`Context ${this.contextLongName} - execution complete`);\n\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: IMngError) {\n this.logger.trace(`Context ${this.contextLongName} - execution error`, err);\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.runSubscription?.unsubscribe();\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n\n public isClosed() {\n return this.executionSubject.isStopped && this.executionIsRunningSubject.isStopped && (this.runSubscription?.closed ?? true);\n }\n}\n\n/**\n * Class containing all main data for action validations (enabled/visible) to be executed in validation states.\n */\nexport class ActionContextValidation<Item, Service = undefined> {\n constructor(\n public readonly descriptor: ActionDescriptorInst<Item, Service>,\n public readonly parameters: ActionParameters<Item>,\n public readonly serviceInstance: Service,\n public readonly dataProvider?: IDataProvider<Item, Service>\n ) {}\n}\n\nexport class ActionParameters<Item> {\n public actionData?: ActionData;\n public dataListParams?: DataListParams<any, any>;\n public sourceComponent?: any;\n public hostComponent?: unknown;\n public route?: ActivatedRoute;\n public selectedItems: Item[] = [];\n public locale?: string;\n\n public formItem?: Item | null;\n public submitResult?: Item | null;\n\n constructor(\n public itemId?: IdType,\n public item?: Item\n ) {}\n\n public withActionData(actionData?: ActionData) {\n this.actionData = actionData;\n return this;\n }\n\n public withDataListParams(params?: DataListParams) {\n this.dataListParams = params;\n return this;\n }\n\n public withSourceComponent(sourceComponent?: any) {\n this.sourceComponent = sourceComponent;\n return this;\n }\n\n public withHostComponent(hostComponent?: unknown) {\n this.hostComponent = hostComponent;\n return this;\n }\n\n public withRoute(route?: ActivatedRoute) {\n this.route = route;\n return this;\n }\n\n public withSelectedItems(selectedItems: Item[]): this {\n this.selectedItems = selectedItems;\n return this;\n }\n\n public withLocale(locale: string): this {\n this.locale = locale;\n return this;\n }\n\n /**\n * Used for action editor re-fetch.\n * @param item Form item.\n */\n public withFormItem(item: Item | null | undefined): this {\n this.formItem = item;\n return this;\n }\n\n /**\n * Used for action editor re-fetch.\n * @param item Submit result.\n */\n public withSubmitResult(item: Item | null | undefined): this {\n this.submitResult = item;\n return this;\n }\n}\n\n/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n\nexport type ActionData = {\n [key: string]: any;\n};\n","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n public static readonly READ = 'read';\n public static readonly ADD = 'add';\n public static readonly EDIT = 'edit';\n public static readonly DELETE = 'delete';\n public static readonly DETAILS = 'details';\n}\n","import {ButtonStyleBuilder} from '../../styles';\n\nexport class ActionButtonDescriptor {\n private _label?: string | null;\n\n private _icon?: string | null;\n private _iconPosition: 'left' | 'right' = 'left';\n\n private _styleClass = new ButtonStyleBuilder();\n\n private _badge?: string;\n private _tooltip?: string;\n private _tooltipPosition?: 'top' | 'bottom' | 'left' | 'right';\n\n public withLabel(label?: string | null): this {\n this._label = label;\n return this;\n }\n\n public withIcon(icon: string | null): this {\n this._icon = icon;\n return this;\n }\n\n public withIconPosition(iconPosition: 'left' | 'right'): this {\n this._iconPosition = iconPosition;\n return this;\n }\n\n public withStyleClass(style: ButtonStyleBuilder): this {\n this._styleClass = style;\n return this;\n }\n\n public withBadge(badge: string): this {\n this._badge = badge;\n return this;\n }\n\n public withTooltip(tooltip: string, position?: 'top' | 'bottom' | 'left' | 'right'): this {\n this._tooltip = tooltip;\n this._tooltipPosition = position ?? 'top';\n return this;\n }\n\n public withTooltipPosition(position: 'top' | 'bottom' | 'left' | 'right'): this {\n this._tooltipPosition = position;\n return this;\n }\n\n public get label() {\n return this._label;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get iconPosition() {\n return this._iconPosition;\n }\n\n public get styleClass() {\n return this._styleClass;\n }\n\n public get badge() {\n return this._badge;\n }\n\n public get tooltip() {\n return this._tooltip;\n }\n\n public get tooltipPosition() {\n return this._tooltipPosition;\n }\n\n public copy(): ActionButtonDescriptor {\n const descriptor = new ActionButtonDescriptor();\n descriptor._label = this._label;\n descriptor._icon = this._icon;\n descriptor._iconPosition = this._iconPosition;\n descriptor._styleClass = this._styleClass.copy();\n descriptor._badge = this._badge;\n descriptor._tooltip = this._tooltip;\n return descriptor;\n }\n}\n","import {Confirmation} from 'primeng/api';\n\nimport {ActionContext} from '../../components/action/models';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleLevelEnum} from '../../styles/models';\nimport {ActionButtonDescriptor} from './action-button.descriptor';\n\nexport class ActionConfirmationDescriptor<Model> {\n private _icon?: string; // Icon to display next to message.\n private _title?: string | null; // Translation for title text of the dialog.\n private _message?: string | null; // Translation for body text of the dialog.\n\n private _acceptButton: ActionButtonDescriptor;\n private _rejectButton?: ActionButtonDescriptor;\n\n private _closeOnEscape = true; // Defines if dialog closes when esc key is pressed.\n private _closable = true; // Defines if dialog is closable.\n private _runConfirmationConfigMapFn?: ConfigurationConfigMapFn<Model>; //function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter may lead to unexpected behaviour\n\n constructor() {\n this._acceptButton = new ActionButtonDescriptor().withIcon('pi pi-check').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default));\n this._rejectButton = new ActionButtonDescriptor().withIcon('pi pi-times').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default).withTextButton());\n this._icon = 'pi pi-exclamation-triangle';\n }\n\n public withIcon(icon?: string): this {\n this._icon = icon;\n return this;\n }\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withMessage(message?: string | null): this {\n this._message = message;\n return this;\n }\n\n public withAcceptButton(actionButtonDescriptor: ActionButtonDescriptor): this {\n this._acceptButton = actionButtonDescriptor;\n return this;\n }\n\n public withRejectButton(actionButtonDescriptor?: ActionButtonDescriptor): this {\n this._rejectButton = actionButtonDescriptor;\n return this;\n }\n\n /**\n * set if dialog can be closed on escaped pressed\n * if true, then closable is also set to true\n * @param closeOnEscape\n */\n public withCloseOnEscape(closeOnEscape: boolean): this {\n if (closeOnEscape) {\n this._closable = true;\n }\n this._closeOnEscape = closeOnEscape;\n return this;\n }\n\n public withClosable(closable: boolean): this {\n this._closable = closable;\n return this;\n }\n\n public withRunConfirmationConfigMapFn(runConfirmationConfigMapFn?: ConfigurationConfigMapFn<Model>): this {\n this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;\n return this;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get title() {\n return this._title;\n }\n\n public get message() {\n return this._message;\n }\n\n public get closeOnEscape() {\n return this._closeOnEscape;\n }\n\n public get closable() {\n return this._closable;\n }\n\n public get runConfirmationConfigMapFn() {\n return this._runConfirmationConfigMapFn;\n }\n\n public get acceptButton() {\n return this._acceptButton;\n }\n\n public get rejectButton() {\n return this._rejectButton;\n }\n}\n\nexport type ConfigurationConfigMapFn<Item> = (ctx: ActionContext<Item, any>, confirmConfig: Confirmation) => Confirmation;\n","import {Type} from '@angular/core';\n\nimport {of} from 'rxjs';\n\nimport {ActionContext, IActionComponent, TableviewActionDefaultCategories} from '../../components/action/models';\nimport {DataProvider, IDataProvider} from '../../data-providers';\nimport {MngInternalError} from '../../models';\nimport {APermissions} from '../../security/model';\nimport {MngLoggerService} from '../../services';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleLevelEnum, StyleSizeEnum} from '../../styles/models';\nimport {ActionRunFnType, ActionValidationFnType, ClassType, ServiceClassType} from '../../types';\nimport {DecoratorMetadataUtil} from '../../utils';\nimport {ModelDescriptor} from '../model';\nimport {ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum} from '../types';\nimport {ActionButtonDescriptor} from './action-button.descriptor';\nimport {ActionConfirmationDescriptor} from './action-confirmation.descriptor';\n\nexport type ActionDescriptorConstructorOptsType<Model, Service> = ActionDescriptorCreateOptsParentType &\n ActionDescriptorCreateOptsProviderType<Model, Service> & {\n model?: ModelDescriptor<Model>;\n };\n\nexport type ActionDescriptorCreateFromClassOpts<Model> = ActionDescriptorCreateOptsModel<Model> & ActionDescriptorCreateOptsI18nType & ActionDescriptorCreateOptsParentType;\n\nexport type ActionDescriptorCreateOptsProviderType<Model, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IDataProvider<Model, Service>;\n};\n\nexport type ActionDescriptorCreateOptsI18nType = {\n i18nBaseKey?: string | ClassType<any>;\n};\n\nexport type ActionDescriptorCreateOptsModel<Model> = {\n idProperty?: keyof Model;\n titleProperty?: keyof Model;\n};\n\nexport type ActionDescriptorCreateOptsParentType = {\n parentType?: ClassType<unknown>;\n parentProperty?: string;\n};\n\nexport type ActionProviderType<Model, Service> = ServiceClassType<Service> | IDataProvider<Model, Service>;\n\nexport const actionGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionProviderType<Model, Service>) => {\n const cfg: ActionDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class ActionDescriptorInst<Model, Service = any> {\n protected readonly _model?: ModelDescriptor<Model>;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: string;\n protected readonly _parentType?: ClassType<unknown>;\n protected readonly _parentTypeName?: string;\n protected readonly _parentProperty?: string;\n\n protected readonly _dataProvider?: IDataProvider<Model, Service>;\n\n protected _i18nModelActionBaseKey?: string;\n\n protected _type: ActionTypeEnum = ActionTypeEnum.Direct;\n protected _activationTrigger: ActionActivationTriggerEnum = ActionActivationTriggerEnum.OnClick;\n protected _position: ActionPositionEnum = ActionPositionEnum.ToolbarRight;\n protected _level: StyleLevelEnum = StyleLevelEnum.Default;\n private _positionTableviewCategories?: string[];\n protected _tableviewCategory?: string;\n\n protected _routeUrl: string | null = null;\n\n protected _runFunction?: ActionRunFnType<Model, Service>;\n protected _isVisibleFunction?: ActionValidationFnType<Model, Service>;\n protected _isEnabledFunction?: ActionValidationFnType<Model, Service>;\n\n protected _runConfirmationDialogDescriptor?: ActionConfirmationDescriptor<Model>;\n\n protected _hasRunNotificationSuccess = true;\n protected _runNotificationSuccessTitle?: string;\n protected _runNotificationSuccessMessage?: string;\n\n protected _hasRunNotificationError = true;\n protected _runNotificationErrorTitle?: string;\n protected _runNotificationErrorMessage?: string;\n\n protected _afterRunAction?: ActionDescriptorInst<any> | ((ctx: ActionContext<Model, any>) => ActionDescriptorInst<any>);\n protected _onRunErrorAction?: ActionDescriptorInst<Model> | ((ctx: ActionContext<Model, any>) => ActionDescriptorInst<Model>);\n\n // security\n protected _permissions?: APermissions;\n\n //button\n protected _button = new ActionButtonDescriptor();\n\n // multiple row selection\n protected _hasItemsSelection = false;\n\n // custom action component\n protected _component?: Type<IActionComponent<Model>>;\n\n // subactions\n protected _subactionsAsMenu = false;\n protected _subactions: Array<ActionDescriptorInst<Model>> = [];\n\n protected constructor(actionName: string, cfg?: ActionDescriptorConstructorOptsType<Model, Service>) {\n this._model = cfg?.model;\n this._actionName = actionName;\n\n if ((cfg?.parentType && !cfg?.parentProperty) || (!cfg?.parentProperty && cfg?.parentProperty)) {\n throw new MngInternalError(`Provide both the parent type and parent property or none: ${this._actionName}, ${cfg?.parentType}, ${cfg?.parentProperty}.`);\n }\n this._parentType = cfg?.parentType;\n this._parentTypeName = cfg?.parentType ? DecoratorMetadataUtil.findTypeName(cfg?.parentType) ?? undefined : undefined;\n this._parentProperty = cfg?.parentProperty;\n\n this.setI18nModelActionBaseKey();\n\n if (cfg?.serviceType) {\n this._dataProvider = DataProvider.fromAnyParam<Model, Service>(this._model?.type, cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n let displayName = actionName;\n if (this._model) displayName = `${this._model.typeName}.${displayName}`;\n if (this._parentTypeName) {\n displayName = `${this._parentTypeName}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n\n public get model() {\n return this._model;\n }\n\n public get parentTypeName() {\n return this._parentTypeName;\n }\n\n public get parentProperty() {\n return this._parentProperty;\n }\n\n public get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get activationTrigger() {\n return this._activationTrigger;\n }\n\n public get position() {\n return this._position;\n }\n\n public get level() {\n return this._level;\n }\n\n public get routeUrl() {\n return this._routeUrl;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): ActionRunFnType<Model, Service> {\n if (!this._runFunction) {\n throw new MngInternalError(`Run function is not defined for action ${this._actionNameLong} and cannot be invoked`);\n }\n return this._runFunction;\n }\n\n public get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n\n public get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n\n public get actionName() {\n return this._actionName;\n }\n\n public get actionNameLong() {\n return this._actionNameLong;\n }\n\n public get className() {\n return this.button.styleClass.customClass;\n }\n\n public get runConfirmationDialogDescriptor() {\n return this._runConfirmationDialogDescriptor;\n }\n\n public get hasRunConfirmation() {\n return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;\n }\n\n public get hasRunNotificationSuccess() {\n return this._hasRunNotificationSuccess;\n }\n\n public get runNotificationSuccessTitle() {\n return this._runNotificationSuccessTitle;\n }\n\n public get runNotificationSuccessMessage() {\n return this._runNotificationSuccessMessage;\n }\n\n public get hasRunNotificationError() {\n return this._hasRunNotificationError;\n }\n\n public get runNotificationErrorTitle() {\n return this._runNotificationErrorTitle;\n }\n\n public get runNotificationErrorMessage() {\n return this._runNotificationErrorMessage;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get tableviewCategory() {\n return this._tableviewCategory;\n }\n\n public get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n\n public get button() {\n return this._button;\n }\n\n public get component() {\n return this._component;\n }\n\n public get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n\n public get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n\n public get subactions() {\n return this._subactions;\n }\n\n protected setI18nModelActionBaseKey(base?: string) {\n if (this._parentTypeName || this._model) {\n this._i18nModelActionBaseKey = this._parentTypeName\n ? `${this._parentTypeName}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model!.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n\n public withRunFunction(fn: ActionRunFnType<Model, Service>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction(fn?: ActionValidationFnType<Model, Service>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction(fn?: ActionValidationFnType<Model, Service>): this {\n this._isEnabledFunction = fn;\n return this;\n }\n\n public withRouteTrigger(routeUrl: string): this {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * creates confirmation action with default style based on action descriptor\n */\n public withRunConfirmation(): ActionConfirmationDescriptor<Model> {\n this._runConfirmationDialogDescriptor = new ActionConfirmationDescriptor<Model>();\n this._runConfirmationDialogDescriptor.acceptButton.styleClass.withActionLevel(this._level);\n this._runConfirmationDialogDescriptor.rejectButton?.styleClass.withActionLevel(this._level);\n\n return this._runConfirmationDialogDescriptor;\n }\n\n /**\n * Add a configuration dialogue to action using ActionConfigurationDescriptor\n * @param runConfirmationDialogDescriptor descriptor with customizable information for dialog\n */\n public withRunConfirmationDescriptor(runConfirmationDialogDescriptor?: ActionConfirmationDescriptor<Model>): this {\n this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;\n return this;\n }\n\n public withRunNotificationSuccess(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationSuccess = hasNotification;\n this._runNotificationSuccessTitle = title;\n this._runNotificationSuccessMessage = message;\n return this;\n }\n\n public withRunNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationError = hasNotification;\n this._runNotificationErrorTitle = title;\n this._runNotificationErrorMessage = message;\n return this;\n }\n\n public withAfterRunAction<Return, Service = any>(action?: ActionDescriptorInst<Return> | ((ctx: ActionContext<Model, Service>) => ActionDescriptorInst<Return>)): this {\n this._afterRunAction = action;\n return this;\n }\n\n public withOnRunErrorAction<S = any>(action?: ActionDescriptorInst<Model> | ((ctx: ActionContext<Model, S>) => ActionDescriptorInst<Model>)): this {\n this._onRunErrorAction = action;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._tableviewCategory) {\n MngLoggerService.get().debug(\n `WARNING: Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`\n );\n }\n this._permissions = permissions;\n return this;\n }\n\n public withTableviewCategory(permissionsRouteType: string): this {\n this._tableviewCategory = permissionsRouteType;\n return this;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withItemsSelection(hasSelection = true): this {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n\n public withComponent(component: Type<IActionComponent<Model>>): this {\n this._component = component;\n return this;\n }\n\n public withPositionTableviewCategories(positionTableviewCategories: string[]): this {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n\n public withI18nBase(base: ClassType<unknown> | string): this {\n if (typeof base !== 'string') {\n const typeName = DecoratorMetadataUtil.findTypeName(base);\n if (!typeName) {\n throw new MngInternalError(`Could not find define i18nBaseKey for ${base} on action ${this.actionNameLong}`);\n }\n base = typeName;\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n\n public withSubactionsAsMenu(subactionsAsMenu = true): this {\n this._subactionsAsMenu = subactionsAsMenu;\n return this;\n }\n\n public withSubactions(...subactions: Array<ActionDescriptorInst<Model>>): this {\n this._subactions.push(...subactions);\n return this;\n }\n\n public copyTo(descriptor: ActionDescriptorInst<Model, Service>): ActionDescriptorInst<Model, Service> {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories;\n\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n\n descriptor._runConfirmationDialogDescriptor = this._runConfirmationDialogDescriptor;\n\n descriptor._hasRunNotificationSuccess = this._hasRunNotificationSuccess;\n descriptor._runNotificationSuccessTitle = this._runNotificationSuccessTitle;\n descriptor._runNotificationSuccessMessage = this._runNotificationSuccessMessage;\n\n descriptor._hasRunNotificationError = this._hasRunNotificationError;\n descriptor._runNotificationErrorTitle = this._runNotificationErrorTitle;\n descriptor._runNotificationErrorMessage = this._runNotificationErrorMessage;\n\n descriptor._afterRunAction = this._afterRunAction;\n descriptor._onRunErrorAction = this._onRunErrorAction;\n\n descriptor._permissions = this._permissions;\n\n descriptor._button = this._button.copy();\n\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions;\n\n return descriptor;\n }\n}\n\nexport class ActionDescriptor extends ActionDescriptorInst<any> {\n protected constructor() {\n super('internal');\n }\n\n public static create<Model>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionDescriptorInst<Model, undefined>(actionName, {\n ...cfg\n });\n }\n\n public static createWithProvider<Service, Model>(serviceProvider: ActionProviderType<Model, Service>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n ...actionGetProviderCfgObj(serviceProvider),\n ...cfg\n });\n }\n\n public static fromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionDescriptorInst<Model, undefined>(actionName, {\n model,\n ...cfg\n });\n }\n\n public static fromModelWithProvider<Model, Service>(\n model: ModelDescriptor<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ) {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n model,\n ...actionGetProviderCfgObj(serviceProvider),\n ...cfg\n });\n }\n\n public static fromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>) {\n return new ActionDescriptorInst<Model, undefined>(actionName, {\n model: ModelDescriptor.fromClass<Model>(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),\n ...cfg\n });\n }\n\n public static fromClassWithProvider<Model, Service>(\n classType: ClassType<Model>,\n serviceProvider: ActionProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateFromClassOpts<Model>\n ) {\n return new ActionDescriptorInst<Model, Service>(actionName, {\n model: ModelDescriptor.fromClass<Model>(classType, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),\n ...actionGetProviderCfgObj(serviceProvider),\n ...cfg\n });\n }\n}\n\nexport class ActionDeleteDescriptorInst<Model, Service = any> extends ActionDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'delete';\n\n constructor(model: ModelDescriptor<Model>, cfg?: ActionDescriptorCreateOptsProviderType<Model, Service>) {\n super(ActionDeleteDescriptorInst.ACTION_NAME, {model, ...cfg});\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.button.styleClass.withActionLevel(StyleLevelEnum.Danger);\n this.withRunConfirmation();\n this.withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n this.button.withLabel(null).withIcon('pi pi-trash');\n }\n}\n\nexport class ActionDeleteDescriptor {\n public static create<Model>(model: ModelDescriptor<Model>) {\n return new ActionDeleteDescriptorInst<Model, undefined>(model);\n }\n\n public static createWithProvider<Model, Service>(model: ModelDescriptor<Model>, serviceProvider: ActionProviderType<Model, Service>) {\n return new ActionDeleteDescriptorInst<Model, Service>(model, {\n ...actionGetProviderCfgObj(serviceProvider)\n });\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {ActionContext, TableviewActionDefaultCategories} from '../../components/action/models';\nimport {EditorDataProvider, IEditorDataProvider} from '../../data-providers';\nimport {MngInternalError} from '../../models';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleSizeEnum} from '../../styles/models';\nimport {ServiceClassType} from '../../types';\nimport {EditorDescriptorInst} from '../editor';\nimport {ModelDescriptor} from '../model';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum} from '../types';\nimport {ActionButtonDescriptor} from './action-button.descriptor';\nimport {ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionEditorDescriptorConstructorOptsType<Model, Service> = ActionDescriptorCreateOptsParentType &\n ActionEditorDescriptorCreateOptsProviderType<Model, Service> & {\n model?: ModelDescriptor<Model>;\n };\n\nexport type ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {\n serviceType?: ServiceClassType<Service>;\n dataProvider?: IEditorDataProvider<Model, Service>;\n};\n\nexport type ActionEditorProviderType<Model, Service> = ServiceClassType<Service> | IEditorDataProvider<Model, Service>;\n\nexport const actionEditorGetProviderCfgObj = <Model, Service>(serviceOrDataProvider?: ActionEditorProviderType<Model, Service>) => {\n const cfg: ActionEditorDescriptorCreateOptsProviderType<Model, Service> = {};\n if (serviceOrDataProvider) {\n if ((serviceOrDataProvider as IEditorDataProvider).isDataProvider) {\n // type casting needed, cause there was no other way found to differentiate the types\n cfg.dataProvider = serviceOrDataProvider as IEditorDataProvider<Model, Service>;\n } else {\n cfg.serviceType = serviceOrDataProvider as ServiceClassType<Service>;\n }\n }\n return cfg;\n};\n\nexport class ActionEditorDescriptorInst<Item, Service = any> extends ActionDescriptorInst<Item, Service> {\n private readonly _editorDescriptor: EditorDescriptorInst<Item>;\n protected override readonly _dataProvider?: IEditorDataProvider<Item, any> = undefined;\n\n protected _editorActions: ActionDescriptorInst<Item>[] = [];\n protected _editorTitle?: string | null = undefined;\n protected _editorTitleParams?: any = undefined;\n\n protected _hasFetchNotificationSuccess = false;\n protected _fetchNotificationSuccessTitle?: string;\n protected _fetchNotificationSuccessMessage?: string;\n\n protected _dialogSize = StyleSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected _fetchFunction?: (ctx: ActionContext<Item, Service>) => Observable<Item>;\n protected _submitFunction?: (ctx: ActionContext<Item, Service>) => Observable<Item>;\n\n protected _editorComponent?: Type<any>;\n\n protected _resubmitEnabled?: boolean;\n protected _resubmitRefetch = true;\n protected _unsavedChangesConfirmation = false;\n\n public constructor(editorDescriptor: EditorDescriptorInst<Item>, actionName: string, cfg?: ActionEditorDescriptorConstructorOptsType<Item, Service>) {\n super(actionName, {\n model: editorDescriptor.model,\n ...cfg\n });\n\n if (cfg?.serviceType) {\n this._dataProvider = EditorDataProvider.fromAnyParam<Item, Service>(this._model?.type, cfg.serviceType);\n } else if (cfg?.dataProvider) {\n this._dataProvider = cfg.dataProvider;\n }\n\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(ActionEditorSubmitDescriptor.forPrimary(this), ActionEditorSubmitDescriptor.forSecondary(this));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorTitleParams() {\n return this._editorTitleParams;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get hasFetchNotificationSuccess() {\n return this._hasFetchNotificationSuccess;\n }\n\n public get fetchNotificationSuccessTitle() {\n return this._fetchNotificationSuccessTitle;\n }\n\n public get fetchNotificationSuccessMessage() {\n return this._fetchNotificationSuccessMessage;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get hasRunFunction(): boolean {\n throw new MngInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public override get runFunction(): (ctx: ActionContext<Item, unknown>) => Observable<Item> {\n throw new MngInternalError(`Run function cannot be used in editor action for ${this._actionNameLong}. Use submit function instead`);\n }\n\n public get hasFetchFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get fetchFunction() {\n return this._fetchFunction;\n }\n\n public get hasSubmitFunction(): boolean {\n return typeof this._fetchFunction === 'function';\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n\n public get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n\n public get unsavedChangesConfirmation() {\n return this._unsavedChangesConfirmation;\n }\n\n public withEditorTitle(title: string | null, params?: any): this {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n\n public withDialogSize(size = StyleSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction(fn: (ctx: ActionContext<Item, Service>) => Observable<Item>): this {\n return this.withSubmitFunction(fn as (ctx: ActionContext<Item, Service>) => Observable<Item>);\n }\n\n public withFetchFunction(fn: (ctx: ActionContext<Item, Service>) => Observable<Item>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction(fn: (ctx: ActionContext<Item, Service>) => Observable<Item>): this {\n this._submitFunction = fn;\n return this;\n }\n\n public withFetchNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasFetchNotificationSuccess = hasNotification;\n this._fetchNotificationSuccessTitle = title;\n this._fetchNotificationSuccessMessage = message;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptorInst<Item>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptorInst<Item>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n\n public withResubmit(enabled?: boolean, refetch = true): this {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n\n public withUnsavedChangesConfirmation(unsavedChangesConfirmation = true): this {\n this._unsavedChangesConfirmation = unsavedChangesConfirmation;\n return this;\n }\n}\n\nexport class ActionEditorDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionEditorDescriptorInst<Model, undefined>(editor, actionName, {\n parentType: cfg?.parentType,\n parentProperty: cfg?.parentProperty\n });\n }\n\n public static createWithProvider<Model, Service>(\n editor: EditorDescriptorInst<Model>,\n serviceProvider: ActionEditorProviderType<Model, Service>,\n actionName: string,\n cfg?: ActionDescriptorCreateOptsParentType\n ) {\n return new ActionEditorDescriptorInst(editor, actionName, {\n ...actionEditorGetProviderCfgObj(serviceProvider),\n parentType: cfg?.parentType,\n parentProperty: cfg?.parentProperty\n });\n }\n}\n\nexport class ActionEditorSubmitDescriptorInst<Model> extends ActionDescriptorInst<Model> {\n private readonly _editorAction: ActionEditorDescriptorInst<Model>;\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n constructor(editorAction: ActionEditorDescriptorInst<Model>, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorAction.actionName}.submit` : `${editorAction.actionName}.cancel`, {model: editorAction.model});\n this._editorAction = editorAction;\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n\n this.button.styleClass.withActionLevel(editorAction.level).withTextButton();\n }\n\n public get submitType() {\n return this._submitType;\n }\n}\n\nexport class ActionEditorSubmitDescriptor {\n /**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\n static forPrimary<Model>(editorAction: ActionEditorDescriptorInst<Model>, submitType = ActionEditorSubmitTypeEnum.Submit): ActionEditorSubmitDescriptorInst<Model> {\n return new ActionEditorSubmitDescriptorInst(editorAction, submitType).withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder()));\n }\n\n /**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\n static forSecondary<Model>(editorAction: ActionEditorDescriptorInst<Model>, submitType = ActionEditorSubmitTypeEnum.Cancel): ActionEditorSubmitDescriptorInst<Model> {\n return new ActionEditorSubmitDescriptorInst(editorAction, submitType).withButtonDescriptor(\n new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton())\n );\n }\n}\n\nexport class ActionEditorDetailsDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'details';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorDetailsDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withEditorActions([ActionEditorSubmitDescriptor.forSecondary(this, ActionEditorSubmitTypeEnum.Cancel)]);\n this.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n }\n}\n\nexport class ActionEditorDetailsDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model>) {\n return new ActionEditorDetailsDescriptorInst<Model, undefined>(editor);\n }\n\n public static createWithProvider<Model, Service>(editor: EditorDescriptorInst<Model>, serviceProvider: ActionEditorProviderType<Model, Service>) {\n return new ActionEditorDetailsDescriptorInst<Model, Service>(editor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n });\n }\n}\n\nexport class ActionEditorAddDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'add';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorAddDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.button.withIcon('pi pi-plus');\n this.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n this.withUnsavedChangesConfirmation();\n }\n}\n\nexport class ActionEditorAddDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model>) {\n return new ActionEditorAddDescriptorInst<Model, undefined>(editor);\n }\n\n public static createWithProvider<Model, Service>(editor: EditorDescriptorInst<Model>, serviceProvider: ActionEditorProviderType<Model, Service>) {\n return new ActionEditorAddDescriptorInst<Model, Service>(editor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n });\n }\n}\n\nexport class ActionEditorEditDescriptorInst<Model, Service = any> extends ActionEditorDescriptorInst<Model, Service> {\n public static readonly ACTION_NAME = 'edit';\n\n constructor(editorDescriptor: EditorDescriptorInst<Model>, cfg?: ActionEditorDescriptorCreateOptsProviderType<Model, Service>) {\n super(editorDescriptor, ActionEditorEditDescriptorInst.ACTION_NAME, cfg);\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.withRouteTrigger(':itemId/edit');\n this.withTableviewCategory(TableviewActionDefaultCategories.EDIT);\n this.button.withLabel(null).withIcon('pi pi-pencil');\n this.withUnsavedChangesConfirmation();\n }\n}\n\nexport class ActionEditorEditDescriptor {\n public static create<Model>(editor: EditorDescriptorInst<Model>) {\n return new ActionEditorEditDescriptorInst<Model, undefined>(editor);\n }\n\n public static createWithProvider<Model, Service>(editor: EditorDescriptorInst<Model>, serviceProvider: ActionEditorProviderType<Model, Service>) {\n return new ActionEditorEditDescriptorInst<Model, Service>(editor, {\n ...actionEditorGetProviderCfgObj(serviceProvider)\n });\n }\n}\n","import {Params, QueryParamsHandling} from '@angular/router';\n\nimport {ClassType} from '../../types';\nimport {ModelDescriptor} from '../model';\nimport {ActionDescriptorConstructorOptsType, ActionDescriptorCreateFromClassOpts, ActionDescriptorCreateOptsParentType, ActionDescriptorInst} from './action.descriptor';\n\nexport type ActionLinkDescriptorConstructorOpts<Model> = Omit<ActionDescriptorConstructorOptsType<Model, undefined>, 'serviceType' | 'dataProvider'>;\nexport class ActionLinkDescriptorInst<Model> extends ActionDescriptorInst<Model, undefined> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(actionName = 'link', cfg?: ActionLinkDescriptorConstructorOpts<Model>) {\n super(actionName, cfg);\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n}\n\nexport class ActionLinkDescriptor {\n public static create<Model = any>(actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n ...cfg\n });\n }\n\n public static fromModel<Model>(model: ModelDescriptor<Model>, actionName: string, cfg?: ActionDescriptorCreateOptsParentType) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n model,\n ...cfg\n });\n }\n\n public static fromClass<Model>(type: ClassType<Model>, actionName: string, cfg?: ActionDescriptorCreateFromClassOpts<Model>) {\n return new ActionLinkDescriptorInst<Model>(actionName, {\n model: ModelDescriptor.fromClass<Model>(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),\n ...cfg\n });\n }\n\n public static fromAction<Model>(action: ActionDescriptorInst<Model>) {\n const descriptor = new ActionLinkDescriptorInst<Model>(action.actionName, {model: action.model});\n\n action.copyTo(descriptor);\n\n descriptor.withRunConfirmationDescriptor();\n\n descriptor.withRunNotificationSuccess(undefined, undefined, false);\n descriptor.withRunNotificationError(undefined, undefined, false);\n\n descriptor.withAfterRunAction();\n descriptor.withOnRunErrorAction();\n\n descriptor.withSubactionsAsMenu(false);\n\n return descriptor;\n }\n}\n","import {ApplicationRef, ComponentRef, Directive, ElementRef, EventEmitter, Injector, Input, OnInit, Output, Type, ViewContainerRef, createComponent, inject} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\n\n@Directive({\n standalone: true,\n selector: '[mngComponent]'\n})\nexport class MngComponentDirective<C> implements OnInit {\n private readonly injector = inject(Injector);\n private readonly elementRef = inject(ElementRef);\n private readonly applicationRef = inject(ApplicationRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n @Input({required: true, alias: 'mngComponent'}) component!: Type<C>;\n @Input() inputs?: {[key: string]: any};\n @Input() attachToHost = false;\n @Input() nodeInjector?: Injector;\n @Output('instanceCreated') private componentInstanceEventEmitter = new EventEmitter<C>();\n\n public componentRef!: ComponentRef<C>;\n\n ngOnInit() {\n if (this.attachToHost) {\n this.componentRef = createComponent(this.component, {\n hostElement: this.elementRef.nativeElement,\n environmentInjector: this.applicationRef.injector,\n elementInjector: this.nodeInjector ?? this.injector\n });\n } else {\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent<any>(this.component, {\n injector: this.nodeInjector ?? undefined\n });\n }\n\n if (this.inputs) {\n if (this.isCmpInstanceOfColumnValue(this.componentRef.instance)) {\n this.componentRef.instance.setColumnValue(this.inputs['value'], this.inputs['item'], this.inputs['descriptor']);\n } else {\n for (const input in this.inputs) {\n this.componentRef.setInput(input, this.inputs[input]);\n }\n }\n }\n\n if (this.attachToHost) {\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n this.componentInstanceEventEmitter.next(this.componentRef.instance);\n }\n\n private isCmpInstanceOfColumnValue(cmp: any): cmp is IColumnValueComponent<any> {\n return typeof cmp.setColumnValue === 'function';\n }\n}\n","import {Directive, OnDestroy, OnInit, inject} from '@angular/core';\n\nimport {Dialog} from 'primeng/dialog';\nimport {DialogService, DynamicDialogComponent} from 'primeng/dynamicdialog';\n\n@Directive({\n standalone: true,\n selector: '[mngDialogKeydownHandler]'\n})\nexport class MngDialogKeydownHandlerDirective implements OnInit, OnDestroy {\n private readonly dialogService = inject(DialogService);\n private readonly dynamicDialog = inject(DynamicDialogComponent, {optional: true});\n private readonly dialog = inject(Dialog, {optional: true});\n private readonly dialogsWithKeydownListener: DynamicDialogComponent[] = [];\n\n ngOnInit(): void {\n if (!this.dialog && !this.dynamicDialog) {\n // not a dialog, return\n return;\n }\n\n this.dialogService.dialogComponentRefMap.forEach(v => {\n if ((this.dialog || v.instance !== this.dynamicDialog) && v.instance.documentKeydownListener) {\n // exclude self dynamic dialog\n this.dialogsWithKeydownListener.push(v.instance);\n v.instance.unbindDocumentKeydownListener();\n }\n });\n\n if (!this.dialog) {\n // if dialog is present, then do not bind (because it will bind on unbind-ed dynamic dialog\n this.dynamicDialog?.bindDocumentKeydownListener();\n }\n }\n\n ngOnDestroy(): void {\n if (!this.dialog && !this.dynamicDialog) {\n // not a dialog, return\n return;\n }\n\n if (!this.dialog) {\n this.dynamicDialog?.unbindDocumentKeydownListener();\n }\n\n this.dialogsWithKeydownListener.forEach(c => c.bindDocumentKeydownListener());\n }\n}\n","import {Directive, ElementRef, HostListener, Input, Optional} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {InputTrimType} from '../descriptors/types';\n\n@Directive({\n standalone: true,\n selector: '[mngInputTrim]'\n})\nexport class MngInputTrimDirective {\n @Input() mngInputTrim?: InputTrimType;\n\n constructor(\n private el: ElementRef,\n @Optional() private ngControl: NgControl\n ) {}\n\n @HostListener('blur')\n onBlur() {\n const control = this.ngControl?.control;\n const value = control ? control.value : this.el.nativeElement.value;\n let trimmedValue: string;\n\n if (typeof value === 'string') {\n trimmedValue = this.getTrimmedValue(value);\n\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, {emitEvent: false});\n } else {\n this.el.nativeElement.value = trimmedValue;\n }\n }\n }\n }\n\n private getTrimmedValue(value: string): string {\n switch (this.mngInputTrim) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef, inject} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[mngTemplate]'\n})\nexport class MngTemplateDirective {\n public readonly template = inject(TemplateRef<any>);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n @Input() type!: string;\n @Input({required: true, alias: 'mngTemplate'}) name!: string;\n\n public getType(): string {\n return this.name;\n }\n\n public getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n}\n","export enum AuthorizationTypeEnum {\n All = 'ALL',\n Any = 'ANY',\n Rbac = 'ROLE_BASED_ACCESS_CONTROL',\n Service = 'SERVICE'\n}\n","import {Type} from '@angular/core';\n\nimport {AuthorizationTypeEnum} from './authorization.type';\nimport {IPermissionService} from './permission-service.interface';\n\nexport abstract class APermissions {\n private readonly _authorizationType: AuthorizationTypeEnum;\n\n constructor(type: AuthorizationTypeEnum) {\n this._authorizationType = type;\n }\n\n public get authorizationType() {\n return this._authorizationType;\n }\n}\n\nexport namespace Permissions {\n export class All extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.All);\n }\n\n public static of(...permissions: Array<APermissions>): All {\n const inst = new All();\n inst.and(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public and(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Any extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Any);\n }\n\n public static of(...permissions: Array<APermissions>): Any {\n const inst = new Any();\n inst.or(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public or(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Roles extends APermissions {\n private _roles: Array<Array<string>> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Rbac);\n }\n\n public static of(...roles: Array<string>): Roles {\n const inst = new Roles();\n inst.or(...roles);\n return inst;\n }\n\n public get roles() {\n return this._roles;\n }\n\n public and(...roles: Array<string>): this {\n if (this._roles.length === 0) {\n this._roles.push([]);\n }\n this._roles[this._roles.length - 1].push(...roles);\n return this;\n }\n\n public or(...roles: Array<string>): this {\n this._roles.push(...roles.map(s => [s]));\n return this;\n }\n }\n\n export class Service extends APermissions {\n private constructor(public readonly service: Type<IPermissionService>) {\n super(AuthorizationTypeEnum.Service);\n }\n\n public static of(service: Type<IPermissionService>): Service {\n return new Service(service);\n }\n }\n}\n","import {MngInternalError} from '../models';\nimport {APermissions, AuthorizationTypeEnum, Permissions} from './model';\n\nexport class AuthorizationUtil {\n public static isPermitted(permissions: APermissions, userRoles: Array<string>): boolean {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.Rbac:\n return AuthorizationUtil.isRbacPermitted(permissions as Permissions.Roles, userRoles);\n default:\n throw new MngInternalError(`Permission type \"${permissions.authorizationType}\" not implemented`);\n }\n }\n\n public static isRbacPermitted(permissions: Permissions.Roles, userRoles: Array<string>): boolean {\n return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));\n }\n}\n","import {Injectable, Injector, inject} from '@angular/core';\nimport {ActivatedRouteSnapshot, Router} from '@angular/router';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ActionContextValidation} from '../components/action/models';\nimport {APermissions, AuthorizationTypeEnum, Permissions} from '../security/model';\nimport {MngCommonsService, MngLoggerService} from '../services';\nimport {AuthorizationUtil} from './authorization.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngAuthorizationService {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly commons = inject(MngCommonsService);\n private readonly logger = inject(MngLoggerService).create('MngAuthorizationService');\n\n public isPermitted(permissions: APermissions, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>): Observable<boolean> {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.All:\n return this.isPermittedAll(permissions as Permissions.All, route, actionCtx);\n case AuthorizationTypeEnum.Any:\n return this.isPermittedAny(permissions as Permissions.Any, route, actionCtx);\n case AuthorizationTypeEnum.Service:\n return this.isPermittedService(permissions as Permissions.Service, route, actionCtx);\n default:\n return this.commons.userRoles$.pipe(map(ur => AuthorizationUtil.isPermitted(permissions, ur)));\n }\n }\n\n private isPermittedAll(permission: Permissions.All, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isPermittedAny(permission: Permissions.Any, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isPermittedService(permission: Permissions.Service, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isPermitted(route, this.router.routerState.snapshot, actionCtx);\n }\n}\n","import {inject} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivateFn, UrlTree} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {MngRouterData} from '../router/models';\nimport {MngAuthorizationService} from './authorization.service';\n\nexport const mngAuthorizationGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree => {\n const authorization = inject(MngAuthorizationService);\n\n const data = route.data as MngRouterData;\n\n if (data.permissions) {\n return authorization.isPermitted(data.permissions).pipe(first());\n } else {\n return of(true);\n }\n};\n","import {Injectable} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {ActionInstance} from '../../components/action/models';\nimport {IDataProvider} from '../../data-providers';\nimport {ActionDescriptorInst} from '../../descriptors/action';\nimport {ViewContainerEditorCloseEvent, ViewContainerEditorResetEvent, ViewContainerTableReloadEvent} from '../../models';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class ViewContainer<Item, Service = undefined> {\n private _dataProvider?: IDataProvider<Item, Service>;\n private _routeTriggeredActionInstance?: ActionInstance<Item, Service>;\n private actions: Array<ActionDescriptorInst<Item>> = [];\n\n private _tableReloadSubject: Subject<ViewContainerTableReloadEvent> = new Subject();\n private _editorResetSubject: Subject<ViewContainerEditorResetEvent<Item>> = new Subject();\n private _editorCloseSubject: Subject<ViewContainerEditorCloseEvent<Item>> = new Subject();\n\n public set dataProvider(dataProvider: IDataProvider<Item, Service>) {\n this._dataProvider = dataProvider;\n }\n\n public getDataProvider(): IDataProvider<Item, Service> | undefined {\n return this._dataProvider;\n }\n\n public getActions(): Array<ActionDescriptorInst<Item>> {\n return this.actions;\n }\n\n public setActions(actions: Array<ActionDescriptorInst<Item>>) {\n this.actions = actions;\n }\n\n getTableReload$(): Observable<ViewContainerTableReloadEvent> {\n return this._tableReloadSubject.asObservable();\n }\n\n reloadTable(event?: ViewContainerTableReloadEvent): void {\n this._tableReloadSubject.next(event ?? {});\n }\n\n getEditorReset$(): Observable<ViewContainerEditorResetEvent<Item>> {\n return this._editorResetSubject.asObservable();\n }\n\n resetEditor(event?: ViewContainerEditorResetEvent<Item> | undefined): void {\n this._editorResetSubject.next(event ?? {});\n }\n\n getEditorClose$(): Observable<ViewContainerEditorCloseEvent<Item>> {\n return this._editorCloseSubject.asObservable();\n }\n\n closeEditor(event?: ViewContainerEditorCloseEvent<Item>): void {\n this._editorCloseSubject.next(event ?? {});\n }\n\n getRouteTriggeredActionInstance(): ActionInstance<Item, Service> | undefined {\n return this._routeTriggeredActionInstance;\n }\n\n setRouteTriggeredActionInstance(instance: ActionInstance<Item, Service>): void {\n this._routeTriggeredActionInstance = instance;\n }\n\n unsetRouteTriggeredActionInstance(): void {\n this._routeTriggeredActionInstance = undefined;\n }\n}\n","import {Injector, Provider} from '@angular/core';\n\nimport {ViewContainer} from './view-container.service';\n\nexport function provideViewContainer(provideParentIfPresent = true): Provider {\n return {\n provide: ViewContainer,\n useFactory: (injector: Injector) => {\n if (provideParentIfPresent) {\n return injector.get(ViewContainer, null, {optional: true, skipSelf: true}) ?? new ViewContainer();\n } else {\n return new ViewContainer();\n }\n },\n deps: [Injector]\n };\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Injector, inject} from '@angular/core';\nimport {Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, take, timeout} from 'rxjs';\nimport {catchError, filter, first, map, startWith} from 'rxjs/operators';\n\nimport {ActionContext, ActionContextValidation, ActionInstance, ActionInstanceStateEnum, ActionParameters} from '../../components/action/models';\nimport {IDataProvider} from '../../data-providers';\nimport {\n ActionConfirmationDescriptor,\n ActionDeleteDescriptorInst,\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorEditDescriptorInst\n} from '../../descriptors/action';\nimport {ActionActivationTriggerEnum, ActionTypeEnum} from '../../descriptors/types';\nimport {toObservable} from '../../helpers/coercion';\nimport {ActionEditorDialogData, IActionEditorComponent, IMngError, MngActionError, MngActionErrorOptions, MngHttpError, MngInternalError} from '../../models';\nimport {MngParametrizePipe} from '../../pipes';\nimport {StyleSizeEnum} from '../../styles/models';\nimport {ActionRunFnType} from '../../types';\nimport {I18nUtils, NotificationUtil, StringUtil} from '../../utils';\nimport {MngActionErrorMapperService} from '../action-error-mapper.service';\nimport {MngCommonsService} from '../commons.service';\nimport {DataProviderExecutor} from '../data-provider-executor.service';\nimport {MngLoggerService} from '../logger.service';\nimport {MngNavigationService} from '../navigation.service';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING} from '../tokens';\nimport {ViewContainer} from '../view';\n\nexport abstract class MngActionExecutorService {\n protected readonly injector = inject(Injector);\n protected readonly router = inject(Router);\n protected readonly dialogService = inject(DialogService);\n protected readonly translate = inject(TranslateService);\n protected readonly mngCommons = inject(MngCommonsService);\n protected readonly dataProviderExecutor = inject(DataProviderExecutor);\n protected readonly navigationService = inject(MngNavigationService);\n protected readonly errorMapper = inject(MngActionErrorMapperService);\n protected readonly parametrize = inject(MngParametrizePipe);\n protected readonly defaultEditorDialogComponent = inject(ACTION_EDITOR_DIALOG_COMPONENT_SETTING);\n protected readonly messageService = inject(MessageService);\n protected readonly confirmationService = inject(ConfirmationService);\n protected readonly viewContainer = inject(ViewContainer, {optional: true});\n\n protected readonly instancesBufferMax = 100;\n protected logger = inject(MngLoggerService).create('MngActionExecutorService');\n\n public abstract get instances(): ActionInstance<any, any>[];\n\n /**\n * Prepares action context for usage in validation.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param dataProvider Data provider.\n */\n public prepareActionContextValidation<Item, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, Service> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? this.viewContainer?.getDataProvider();\n return new ActionContextValidation<Item, Service>(\n action,\n parameters,\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider\n );\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation is also processed here.\n *\n * @param ctx Action context to run.\n */\n public run<Item, Service = undefined>(ctx: ActionContext<Item, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n // if (ctx.instance.action.type === ActionTypeEnum.Direct && ctx.instance.action.hasRunConfirmation) {\n if (isMainRunFn && ctx.instance.action.hasRunConfirmation) {\n // only direct action can be configured with run confirmation\n // if editor, then run confirmation is mapped to submit action and ignored as editor run\n const confirmationDescriptor = ctx.instance.action.runConfirmationDialogDescriptor as ActionConfirmationDescriptor<Item>;\n\n const item = ctx.parameters.item;\n let confirmParams: Confirmation = {\n icon: confirmationDescriptor.icon,\n acceptVisible: true,\n acceptIcon: confirmationDescriptor.acceptButton.icon ?? undefined,\n acceptButtonStyleClass: confirmationDescriptor.acceptButton.styleClass.build(),\n rejectVisible: true,\n rejectIcon: confirmationDescriptor.rejectButton?.icon ?? undefined,\n rejectButtonStyleClass: confirmationDescriptor.rejectButton?.styleClass.build(),\n closeOnEscape: confirmationDescriptor.closeOnEscape\n };\n\n if (confirmationDescriptor.title !== null) {\n confirmParams.header =\n I18nUtils.Action.get(this.translate, ctx.instance.action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation') ?? undefined;\n }\n\n if (confirmationDescriptor.message !== null) {\n confirmParams.message =\n I18nUtils.Action.get(\n this.translate,\n ctx.instance.action,\n 'confirm.message',\n confirmationDescriptor.message,\n StringUtil.escapeHtmlAny(item),\n 'general.confirmation'\n ) ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.label !== null) {\n confirmParams.acceptLabel =\n I18nUtils.Action.get(this.translate, ctx.instance.action, 'confirm.accept', confirmationDescriptor.acceptButton.label, item, 'general.yes') ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.icon !== null) {\n confirmParams.acceptIcon = confirmationDescriptor.acceptButton.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.icon !== null) {\n confirmParams.rejectIcon = confirmationDescriptor.rejectButton?.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.label !== null) {\n confirmParams.rejectLabel =\n I18nUtils.Action.get(this.translate, ctx.instance.action, 'confirm.reject', confirmationDescriptor.rejectButton?.label, item, 'general.no') ?? undefined;\n }\n\n if (confirmationDescriptor.rejectButton == null || (confirmationDescriptor.rejectButton.label === null && confirmationDescriptor.rejectButton.icon === null)) {\n confirmParams.rejectVisible = false;\n }\n\n confirmParams.accept = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n };\n\n confirmParams.reject = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n if (ctx.instance.action.type !== ActionTypeEnum.Editor) {\n // if not editor, the it can be closed\n this.finishAction(ctx.instance);\n }\n };\n\n if (confirmationDescriptor.runConfirmationConfigMapFn) {\n confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(ctx, confirmParams);\n }\n\n ctx.confirmation = confirmParams;\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n\n this.confirmationService.confirm(confirmParams);\n } else {\n this.runWithoutConfirmation(ctx);\n }\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation\n *\n * @param ctx Action context to run.\n *\n * @returns Action context for submit (=run) function.\n */\n private runWithoutConfirmation<Item, Service = undefined>(ctx: ActionContext<Item, Service>): Observable<Item | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n const isErrorCriticalRunFn = ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptorInst<Item>;\n\n let fnObs: ActionRunFnType<Item, Service>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n } else {\n // try to guess this one\n const defaultSubmit = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId) {\n return this.dataProviderExecutor.runUpdate(ctx, defaultSubmit);\n } else {\n return this.dataProviderExecutor.runCreate(ctx, defaultSubmit);\n }\n };\n }\n } else {\n fnObs = actionEditor.submitFunction;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n } else {\n const defaultFetch = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, defaultFetch);\n }\n return defaultFetch;\n };\n }\n } else {\n fnObs = actionEditor.fetchFunction;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction;\n }\n break;\n }\n\n const retObs = of(void 0).pipe(\n take(1),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return toObservable(fnObs(ctx));\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = NotificationUtil.actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n this.messageService,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n {\n ...ctx.parameters?.item,\n ...runResult\n }\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n const afterRunAction =\n typeof ctx.instance.action.afterRunAction === 'function' ? ctx.instance.action.afterRunAction(ctx) : ctx.instance.action.afterRunAction;\n const nextActionInstance = this.activateAction(\n afterRunAction,\n new ActionParameters<unknown>(ctx.parameters.itemId, runResult)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent),\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>,\n true\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n startWith(nextActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n } else {\n if (actionEditor.hasFetchNotificationSuccess) {\n NotificationUtil.actionNotificationSuccess(\n this.translate,\n actionEditor,\n 'fetch',\n this.messageService,\n actionEditor.fetchNotificationSuccessTitle,\n actionEditor.fetchNotificationSuccessMessage,\n ctx.parameters.item\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.finishAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to mng action error\n const actionError = this.toMngActionError(err, ctx);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n if (ctx.instance.action.hasRunNotificationError) {\n NotificationUtil.actionNotificationError(this.translate, ctx.instance.action, actionError, 'fetch', this.messageService, ctx.parameters.item);\n }\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n const onRunErrorAction =\n typeof ctx.instance.action.onRunErrorAction === 'function' ? ctx.instance.action.onRunErrorAction(ctx) : ctx.instance.action.onRunErrorAction;\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction<Item, Service>(\n onRunErrorAction,\n new ActionParameters<Item>(ctx.parameters.itemId, ctx.parameters.item)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent),\n undefined,\n undefined,\n true\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionStart;\n\n errorObs = errorActionInstance.state$.pipe(\n startWith(errorActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionEnd;\n return void 0;\n })\n );\n }\n }\n\n // list and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action only if critical (fetch on editor or run on button actions)\n if (isErrorCriticalRunFn) {\n this.finishAction(ctx.instance);\n }\n // rethrow error to propagate further\n throw actionError;\n })\n );\n })\n );\n\n ctx.runSubscription = retObs.subscribe({\n next: res => {\n this.logger.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n },\n error: err => {\n if ((err as IMngError | undefined)?.type !== 'MngActionError') {\n this.logger.error(`Non action error occurred`, err);\n } else {\n this.logger.debug(`Action context ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Prepares editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for fetch function.\n */\n public prepareContextForEditorFetch<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for submit (=run) function.\n */\n public prepareContextForEditorSubmit<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n }\n\n /**\n * Prepares action exec context for action of type editor.\n *\n * @param instance Action instance.\n * @param parameters Action parameters for context.\n * @param functionName Action function name parameter.\n * @param dataProvider Optional data provider. If not provided data provider from either the action editor or view container will be used.\n * @param previousActionInstance Optional previous action instance to link in next instance.\n */\n private prepareContextForEditor<Item, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<Item>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, Service> {\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new MngInternalError(`Cannot create editor context for action ${instance.action.actionNameLong} of type ${instance.action.type}.`);\n }\n const editorAction = instance.action as ActionEditorDescriptorInst<Item>;\n let ctxDataProvider = dataProvider;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = this.viewContainer?.getDataProvider();\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider;\n }\n }\n const ctx = new ActionContext<Item, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider,\n this.viewContainer ?? undefined\n );\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param dataProvider Data provider for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for run function.\n */\n private prepareContext<Item, Service = undefined>(\n action: ActionDescriptorInst<Item, Service>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n const ctxDataProvider = dataProvider ?? instance.action.dataProvider ?? this.viewContainer?.getDataProvider();\n const ctx = new ActionContext<Item, Service>(\n this.injector,\n instance,\n parameters,\n 'run',\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider,\n this.viewContainer ?? undefined\n );\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n\n return ctx;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<Item, Service = undefined>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>,\n runContext = false\n ): ActionInstance<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationStart;\n instance.activationParameters = parameters;\n // start activation instance\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n const dialogClassNames = ['mng-dialog'];\n if (action instanceof ActionEditorDescriptorInst) {\n dialogClassNames.push(action.dialogClassName ?? 'mng-action-editor-dialog');\n switch (action.dialogSize) {\n case StyleSizeEnum.ExtraSmall:\n dialogClassNames.push('mng-dialog-xs');\n break;\n case StyleSizeEnum.Small:\n dialogClassNames.push('mng-dialog-sm');\n break;\n case StyleSizeEnum.Large:\n dialogClassNames.push('mng-dialog-lg');\n break;\n case StyleSizeEnum.ExtraLarge:\n dialogClassNames.push('mng-dialog-xl');\n break;\n case StyleSizeEnum.Normal:\n default:\n break;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n }\n const dialogConfig: DynamicDialogConfig = {\n data: <ActionEditorDialogData<Item, Service>>{\n action: {\n descriptor: action,\n instance: instance,\n previousInstance: previousActionInstance\n },\n injector: this.injector\n },\n duplicate: true,\n styleClass: dialogClassNames.join(' ')\n };\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(take(1)).subscribe(() => {\n // to close dialog on 'X' click or esc button\n this.finishAction(instance!);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, Service>(action, parameters, undefined, instance, previousActionInstance);\n\n if (runContext) {\n this.run(context);\n }\n\n return context.instance;\n }\n }\n\n /**\n * To be called when action editor is initialized to correctly activate action.\n * @param action Action descriptor.\n * @param instance Action instance (if available).\n * @param componentRef Optional action editor component reference.\n */\n public onActionEditorInit<T, S>(action: ActionDescriptorInst<T>, instance?: ActionInstance<T, S>, componentRef?: IActionEditorComponent): ActionInstance<T, S> {\n if (action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action ${action.actionName} is not of type editor, cannot be activated through \"onActionEditorOnInit\"`);\n }\n if (instance && action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const triggeredInstance = this.viewContainer?.getRouteTriggeredActionInstance();\n const activationInstance = this.viewContainer?.getRouteTriggeredActionInstance();\n if (triggeredInstance && triggeredInstance.instanceLongName !== instance.instanceLongName) {\n this.logger.debug(\n `WARNING: Found triggered parameters view container instance ${triggeredInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n if (activationInstance && activationInstance.instanceLongName !== instance.instanceLongName) {\n this.logger.debug(\n `WARNING: Found triggered parameters view container instance ${activationInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n }\n instance = this.getOrCreateInstance(instance, action, undefined, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n instance.activationEditorComponentRef = componentRef;\n\n return instance;\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnClick) {\n return;\n }\n this.finishAction(instance, true);\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionEditorDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action instance ${instance.instanceLongName} is not of type editor, cannot be deactivated through \"onActionEditorOnDestroy\"`);\n }\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n this.finishAction(instance, true);\n }\n }\n\n /**\n * To be called when action route cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionRouteDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n throw new Error(`Action instance ${instance.instanceLongName} is not triggered on route, cannot be deactivated through \"onActionRouteOnDestroy\"`);\n }\n this.finishAction(instance, true);\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param onDestroy Marks if finish is called on component destroy lifecycle hook.\n */\n public finishAction<Item, Service = undefined>(instance: ActionInstance<Item, Service>, onDestroy = false) {\n instance = this.getOrCreateInstance(instance);\n if (instance.state >= ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.trace(`ActionInstance ${instance.instanceLongName} already finished`);\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccessFinal;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishErrorFinal;\n } else if (onDestroy) {\n finalState = ActionInstanceStateEnum.FinishComponentDestroyFinal;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissedFinal;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n const resubmitEnabled = (instance.action as ActionEditorDescriptorInst<Item>).resubmitEnabled;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessFinal) {\n if ((hasDialog && resubmitEnabled === true) || (!hasDialog && resubmitEnabled !== false)) {\n finalState = ActionInstanceStateEnum.FinishSuccessReactivateFinal;\n }\n }\n\n if (hasDialog && finalState !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n }\n\n // unset instance in view container\n this.viewContainer?.unsetRouteTriggeredActionInstance();\n\n // set final state on instance\n instance.state = finalState;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // prepare reactivation instance\n const newInstanceStatus = (instance.action as ActionEditorDescriptorInst<Item>).resubmitRefetch\n ? ActionInstanceStateEnum.ActivationEnd\n : ActionInstanceStateEnum.FetchEnd;\n // must skip initialization from view container, because it would only get old instance.\n // we need new instance before we can set new one on the view container.\n const newInstance = this.getOrCreateInstance<Item, Service>(undefined, instance.action, undefined, newInstanceStatus, true);\n newInstance.previousInstance = instance;\n // copy some additional settings\n newInstance.activationDialogRef = instance.activationDialogRef;\n newInstance.triggerParameters = instance.triggerParameters;\n newInstance.activationParameters = instance.activationParameters;\n\n this.viewContainer?.setRouteTriggeredActionInstance(newInstance);\n instance.reactivationInstance = newInstance;\n }\n\n // finish related actions\n if (instance.nextActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related next action instance: ${instance.nextActionInstance.instanceLongName}`);\n this.finishAction(instance.nextActionInstance, onDestroy);\n }\n if (instance.errorActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related error action instance: ${instance.errorActionInstance.instanceLongName}`);\n this.finishAction(instance.errorActionInstance, onDestroy);\n }\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<Item, Service = undefined>(action: ActionDescriptorInst<Item>, parameters: ActionParameters<Item>, runContext = false): ActionInstance<Item, Service> {\n const instance = this.getOrCreateInstance<Item, Service>(undefined, action, parameters);\n instance.triggerParameters = parameters;\n instance.state = ActionInstanceStateEnum.TriggerStart;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(this.router.url);\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n\n const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');\n\n // set instance in view container\n this.viewContainer?.setRouteTriggeredActionInstance(instance);\n\n from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}))\n .pipe(take(1))\n .subscribe(() => (instance.state = ActionInstanceStateEnum.TriggerEnd));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n this.activateAction(action, parameters, instance);\n\n if (runContext) {\n const context = instance.context;\n if (context) {\n this.run(context);\n }\n }\n\n return instance;\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public finishActionRouteUntrigger<Item, Service = undefined>(instance: ActionInstance<Item, Service>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\n }\n\n instance = this.getOrCreateInstance<Item, Service>(instance);\n\n instance.state = ActionInstanceStateEnum.FinishRouteUntriggerStart;\n\n let url = this.navigationService.getCurrentLocationFromHistory() ?? this.navigationService.getCurrentLocationFromUrl();\n if (!url) {\n this.navigationService.back();\n } else {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n\n const splitUrlQueryParam = url.split('?');\n const urlPathSegments = splitUrlQueryParam[0].split('#')[0].split('/');\n const queryParam = splitUrlQueryParam[1]?.split('#')[0];\n\n let actionUrl = instance.action?.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n let redirectUrl = '/' + urlPathSegments.slice(0, urlPathSegments.length - actionUrlSegments.length).join('/');\n if (typeof queryParam !== 'undefined') {\n redirectUrl = `${redirectUrl}?${queryParam}`;\n }\n\n // No URL replaces, probably ok, to allow going back\n from(this.router.navigateByUrl(redirectUrl))\n .pipe(first(), timeout(1000))\n .subscribe({\n next: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerEndFinal),\n error: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal)\n });\n }\n }\n\n /**\n * Transform error of any type to mng error by using error mapper that could be provided by final project.\n * @param error error of any type.\n * @param context Action context.\n *\n * @returns mapped MngError.\n */\n public toMngActionError(error?: any, context?: ActionContext<any, any>): IMngError {\n let mngError: IMngError;\n if (context) {\n const options: MngActionErrorOptions = {\n cause: error,\n location: this.router.url\n };\n if (error instanceof HttpErrorResponse) {\n options.httpError = error;\n }\n\n mngError = new MngActionError(error?.message ?? 'Unknown error', context.contextLongName);\n } else if (error instanceof HttpErrorResponse) {\n // should not really happen (should always be wrapped in MngActionError), just in case\n mngError = new MngHttpError(`Http Error occurred in action`, error, {\n location: this.router.url\n });\n } else {\n // not from action, so unknown source of error\n mngError = new MngInternalError(error?.message ?? 'Unknown error', {\n name: error?.name ?? 'UnknownError',\n location: this.router.url,\n cause: error\n });\n }\n\n // just trace it, allow user to set if this is error or not\n this.logger.trace(mngError);\n\n return this.errorMapper.toMngError(error, mngError);\n }\n\n /**\n * Creates or gets existing action instance.\n * @param instance Action instance.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param instanceInitialStatus Action instance initial status.\n * @param skipInitializationFromViewContainer If initialization of instance from view container should be skipped.\n * @private\n */\n protected getOrCreateInstance<Item, Service = undefined>(\n instance: ActionInstance<Item, Service> | undefined,\n action?: ActionDescriptorInst<Item, Service>,\n parameters?: ActionParameters<Item>,\n instanceInitialStatus?: ActionInstanceStateEnum,\n skipInitializationFromViewContainer = false\n ): ActionInstance<Item, Service> {\n if (!skipInitializationFromViewContainer && !instance && action?.activationTrigger === ActionActivationTriggerEnum.OnRoute && parameters) {\n instance = this.viewContainer?.getRouteTriggeredActionInstance();\n }\n if (!instance) {\n if (!action) {\n throw new MngInternalError('Action descriptor is not provided, instance cannot be created.', {name: 'ActionExecutorServiceError'});\n }\n // create new instance if non provided\n instance = new ActionInstance<Item, Service>(action, instanceInitialStatus);\n }\n\n if (this.mngCommons.actionsDebugInstances && !this.instances.some(i => i.instanceLongName === instance!.instanceLongName)) {\n if (this.instances.length >= this.instancesBufferMax) {\n const lastInstance = this.instances.shift();\n\n if (lastInstance!.state < ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.debug(`ERROR: Not all instances are finished! Finishing instance ${instance.instanceLongName} with dismissal.`);\n lastInstance!.forceFinish();\n }\n }\n\n this.instances.push(instance);\n }\n\n return instance;\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {ActionInstance} from '../../components/action/models';\nimport {MngActionExecutorService} from './action-executor.service';\n\n@Injectable()\nexport class MngRootActionExecutorService extends MngActionExecutorService {\n private readonly _instances: ActionInstance<any, any>[] = [];\n\n public get instances(): ActionInstance<any, any>[] {\n return this._instances;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {ActionInstance} from '../../components/action/models';\nimport {MngActionExecutorService} from './action-executor.service';\nimport {MngRootActionExecutorService} from './root-action-executor.service';\n\n@Injectable()\nexport class MngComponentActionExecutorService extends MngActionExecutorService {\n private readonly rootActionExecutorService = inject(MngRootActionExecutorService);\n public get instances(): ActionInstance<any, any>[] {\n return this.rootActionExecutorService.instances;\n }\n}\n","import {Provider} from '@angular/core';\n\nimport {MngActionExecutorService} from './action-executor.service';\nimport {MngComponentActionExecutorService} from './component-action-executor.service';\n\nexport function provideActionExecutor(): Provider {\n return {\n provide: MngActionExecutorService,\n useClass: MngComponentActionExecutorService\n };\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Menu, MenuModule} from 'primeng/menu';\nimport {RippleModule} from 'primeng/ripple';\nimport {SplitButtonModule} from 'primeng/splitbutton';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Observable, ReplaySubject, Subscription, combineLatest, distinctUntilChanged, of} from 'rxjs';\n\nimport {IDataProvider} from '../../data-providers';\nimport {ActionDescriptorInst, ActionLinkDescriptorInst} from '../../descriptors/action';\nimport {ActionTypeEnum} from '../../descriptors/types';\nimport {MngComponentDirective} from '../../directives';\nimport {boolean$Attribute, toObservable} from '../../helpers/coercion';\nimport {DataListParams} from '../../models';\nimport {MngParametrizePipe} from '../../pipes';\nimport {MngRouterData} from '../../router/models';\nimport {MngAuthorizationService} from '../../security';\nimport {APermissions, Permissions} from '../../security/model';\nimport {MngActionExecutorService, provideActionExecutor} from '../../services/action';\nimport {ViewContainer} from '../../services/view';\nimport {IdType} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {ActionContextValidation, ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionComponent} from './models';\n\n@Component({\n standalone: true,\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, MngParametrizePipe, MngComponentDirective, SplitButtonModule, MenuModule],\n providers: [provideActionExecutor()]\n})\nexport class MngActionComponent<Item = any, Service = undefined> implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class') hostClass = 'mng-action-button';\n @HostBinding('class.m-0') isHostHidden = false;\n\n // metadata and editor mode input\n @Input({required: true}) public action!: ActionDescriptorInst<Item, Service>;\n @Input() public item?: Item;\n @Input() public itemId?: IdType;\n @Input() public actionData?: ActionData;\n @Input() public dataListParams?: DataListParams;\n @Input() public dataProvider?: IDataProvider<Item, Service>;\n @Input() public hostComponent?: unknown;\n @Input('route') public routeInit?: ActivatedRoute;\n @Input({alias: 'disabled', transform: boolean$Attribute}) public inputDisabled: Observable<boolean> = of(false);\n @Input({alias: 'loading', transform: boolean$Attribute}) public inputLoading: Observable<boolean> = of(false);\n @Input() public selectedItems: Array<Item> = [];\n\n @Output('finish') public finishEventEmitter = new EventEmitter<ActionInstance<Item, Service>>();\n\n @ViewChild('subactionsMenu') public subactionsMenu?: Menu;\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public $loading: Observable<boolean> = this.loadingSubject.asObservable();\n\n private isVisibleSubject = new ReplaySubject<boolean>(1);\n private isVisibleSubscription?: Subscription;\n public $isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n private isPermittedSubject = new ReplaySubject<boolean>(1);\n private isPermittedSubscription?: Subscription;\n public $isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n private isEnabledSubject = new ReplaySubject<boolean>(1);\n private isEnabledSubscription?: Subscription;\n public $isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());\n private labelSubject = new ReplaySubject<string | null>(1);\n private labelSubscription?: Subscription;\n public $label = this.labelSubject.asObservable().pipe(distinctUntilChanged());\n private tooltipSubject = new ReplaySubject<string | null>(1);\n private tooltipSubscription?: Subscription;\n public $tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());\n\n public actionLink?: ActionLinkDescriptorInst<Item>;\n public hasNoTitle = false;\n\n private subscriptions: Subscription[] = [];\n\n public route!: ActivatedRoute; // value will be determined in ngOnInit\n private routePermissions?: APermissions;\n\n public buttonClass = 'p-button-primary';\n public subactions: MenuItem[] = [];\n private subactionSubscriptions: Subscription[] = [];\n public actionOrSubactionHasRunConfirmation = false;\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor(\n private routeService: ActivatedRoute,\n private translate: TranslateService,\n private authorization: MngAuthorizationService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n this.route = this.routeInit ?? this.routeService;\n\n this.hasNoTitle = this.action.button.label === null;\n this.isEnabledSubject.next(true);\n this.isVisibleSubject.next(true);\n this.isPermittedSubject.next(true);\n this.labelSubject.next(null);\n this.tooltipSubject.next(null);\n\n const routeData = this.route.snapshot.data as MngRouterData;\n if (this.action instanceof ActionLinkDescriptorInst) {\n this.actionLink = this.action;\n }\n\n if (this.action.tableviewCategory && routeData.tableviewPermissions) {\n if (routeData.tableviewPermissions[this.action.tableviewCategory]) {\n this.routePermissions = routeData.tableviewPermissions[this.action.tableviewCategory];\n }\n }\n this.processSubscriptions();\n\n if (this.action.className) {\n this.hostClass = this.action.className;\n }\n const hostVisibilitySubscription = combineLatest([this.$isVisible, this.$isPermitted]).subscribe(([isVisible, isPermitted]) => {\n this.isHostHidden = !isVisible || !isPermitted;\n });\n this.subscriptions.push(hostVisibilitySubscription);\n\n this.buttonClass = this.action.button.styleClass.build(this.hasNoTitle);\n\n // Here we check if an action or any subaction has confirmation dialog\n this.actionOrSubactionHasRunConfirmation = this.action.subactions.some(sub => sub.hasRunConfirmation) || this.action.hasRunConfirmation;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n !(changes['item']?.firstChange ?? true) ||\n !(changes['itemId']?.firstChange ?? true) ||\n !(changes['actionData']?.firstChange ?? true) ||\n (this.action.hasItemsSelection && !(changes['selectedItems']?.firstChange ?? true))\n ) {\n this.processSubscriptions();\n }\n }\n\n ngOnDestroy(): void {\n this.actionExecutor.onActionDestroy(this.instance);\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n }\n\n public triggerAction(action: ActionDescriptorInst<Item, Service>, parameters?: ActionParameters<Item>, event?: Event) {\n if (action.subactionsAsMenu) {\n this.subactionsMenu?.toggle(event ?? new Event('trigger'));\n return;\n }\n\n const actionData = this.actionData ? this.actionData : {};\n\n parameters ??= new ActionParameters<Item>(this.itemId, this.item)\n .withActionData(actionData)\n .withDataListParams(this.dataListParams)\n .withRoute(this.route)\n .withSourceComponent(this)\n .withHostComponent(this.hostComponent)\n .withSelectedItems(this.selectedItems);\n\n const instance = this.actionExecutor.triggerAction<Item, Service>(action, parameters);\n this.instance = instance;\n const context = instance.context;\n if (!context) {\n // no context is provided if routing is triggered or editor is opened via dialog\n // it is in another component jurisdiction to handle contexts\n return;\n }\n\n this.subscriptions.push(\n instance.result$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n if (action.hasItemsSelection) {\n this.viewContainer?.reloadTable({data: {event: event}});\n }\n }\n })\n );\n this.subscriptions.push(\n instance.error$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n\n this.subscriptions.push(\n this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.RunStart:\n this.loadingSubject.next(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.loadingSubject.next(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(false);\n }\n break;\n }\n })\n );\n\n this.actionExecutor.run(context);\n }\n\n public onCustomActionCmpInst(instance: IActionComponent<Item>) {\n const cmpInstSubscription = instance.triggerActionEventEmitter.subscribe(params => this.triggerAction(this.action, params));\n this.subscriptions.push(cmpInstSubscription);\n }\n\n private processSubactions(): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n const menuItems: MenuItem[] = [];\n for (const subaction of this.action.subactions) {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button.icon ?? undefined;\n this.subactionSubscriptions.push(\n I18nUtils.Action.getAsync(this.translate, subaction, 'title', subaction.button.label ?? undefined, this.item).subscribe({\n next: res => (menuItem.label = res!)\n })\n );\n this.subactionSubscriptions.push(\n I18nUtils.Action.getAsync(this.translate, subaction, 'tooltip', this.action.button.tooltip, this.item).subscribe({\n next: res => (menuItem.tooltip = res!)\n })\n );\n\n const parameters = new ActionParameters(this.itemId, this.item).withActionData(this.actionData).withSourceComponent(this);\n\n if (subaction.hasItemsSelection) {\n parameters.withSelectedItems(this.selectedItems);\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, this.dataProvider);\n\n if (typeof subaction.isEnabledFunction === 'function') {\n this.subactionSubscriptions.push(\n toObservable(subaction.isEnabledFunction(context)).subscribe({\n next: res => (menuItem.disabled = !res)\n })\n );\n }\n\n const visibilityObservables: Observable<boolean>[] = [];\n if (typeof subaction.isVisibleFunction === 'function') {\n visibilityObservables.push(toObservable(subaction.isVisibleFunction(context)));\n }\n if (typeof subaction.permissions !== 'undefined') {\n visibilityObservables.push(this.authorization.isPermitted(subaction.permissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>));\n }\n\n const routeData = this.route.snapshot.data as MngRouterData;\n if (subaction.tableviewCategory && routeData.tableviewPermissions && routeData.tableviewPermissions[subaction.tableviewCategory]) {\n const routePermissions = routeData.tableviewPermissions[subaction.tableviewCategory];\n visibilityObservables.push(this.authorization.isPermitted(routePermissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>));\n }\n\n this.subactionSubscriptions.push(\n combineLatest(visibilityObservables).subscribe(visibilities => {\n menuItem.visible = visibilities.every(value => value);\n })\n );\n\n menuItem.command = () => this.triggerAction(subaction);\n\n menuItems.push(menuItem);\n }\n return menuItems;\n }\n\n private processSubscriptions() {\n const parameters = new ActionParameters(this.itemId, this.item).withActionData(this.actionData).withSourceComponent(this);\n\n if (this.action.hasItemsSelection) {\n parameters.withSelectedItems(this.selectedItems);\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);\n\n if (typeof this.action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = toObservable(this.action.isVisibleFunction(context)).subscribe({\n next: res => this.isVisibleSubject.next(res)\n });\n }\n if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n this.action.permissions && this.routePermissions\n ? Permissions.All.of(this.routePermissions, this.action.permissions)\n : this.routePermissions ?? this.action.permissions!;\n this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>).subscribe({\n next: res => this.isPermittedSubject.next(res)\n });\n }\n if (typeof this.action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = toObservable(this.action.isEnabledFunction(context)).subscribe({\n next: res => this.isEnabledSubject.next(res)\n });\n }\n\n if (!this.hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action.button.label ?? undefined, this.item).subscribe({\n next: i18n => this.labelSubject.next(i18n)\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (this.action.button.tooltip) {\n this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action.button.tooltip, this.item, undefined, undefined).subscribe({\n next: i18n => this.tooltipSubject.next(i18n)\n });\n }\n\n this.subactions = this.processSubactions();\n }\n}\n","@if (($isVisible | async) && ($isPermitted | async)) {\n @if (actionLink && actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"($label | async) ?? ''\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId : item : actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass\"></a>\n } @else if (actionLink) {\n <a\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId : item : actionData)\"\n [relativeTo]=\"route\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId : item : actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass\"></a>\n } @else if (action.component) {\n <ng-container\n [mngComponent]=\"action.component\"\n [inputs]=\"{\n action: action,\n item: item,\n itemId: itemId,\n actionData: actionData,\n enabled: $isEnabled,\n loading: $loading\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action.subactions.length > 0 && !action.subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action.button.icon ?? undefined\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (onClick)=\"triggerAction(action)\"\n [class]=\"buttonClass\"\n [model]=\"subactions\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction(action, undefined, $event)\"\n [class]=\"buttonClass\"></button>\n <p-menu #subactionsMenu [model]=\"subactions\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional} from '@angular/core';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Params, Router} from '@angular/router';\n\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {ActionDescriptorInst} from '../../../descriptors/action';\nimport {ActionActivationTriggerEnum, ActionTypeEnum} from '../../../descriptors/types';\nimport {CanComponentDeactivate} from '../../../models';\nimport {MngActionExecutorService, provideActionExecutor} from '../../../services/action';\nimport {ViewContainer} from '../../../services/view';\nimport {ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters} from '../models';\n\n@Component({\n standalone: true,\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class MngActionRouteComponent<T, S> implements OnInit, OnDestroy, CanComponentDeactivate {\n public cmpId: string = Math.random().toString(36).substring(2);\n private actions: Array<ActionDescriptorInst<any>> = [];\n private instance?: ActionInstance<T, S>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private subscriptions: Array<Subscription> = [];\n private isRouterNavigationInProgress = false;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainer: ViewContainer<T, S> | null\n ) {}\n\n public ngOnInit() {\n this.actions = this.viewContainer?.getActions().filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];\n this.subscriptions.push(\n this.route.params.subscribe(p => {\n const action = this.findActionForRoute(p) ?? undefined;\n if (action) {\n this.activateAction(action, p, this.route.snapshot.queryParams);\n }\n })\n );\n this.subscriptions.push(\n this.router.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n this.isRouterNavigationInProgress = true;\n } else if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped) {\n this.isRouterNavigationInProgress = false;\n }\n })\n );\n }\n\n public ngOnDestroy() {\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionRouteDestroy(instance);\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private activateAction(action: ActionDescriptorInst<any>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n\n this.processActionInstance(\n this.actionExecutor.activateAction(action, new ActionParameters<T>(itemId).withActionData(actionData).withSourceComponent(this).withRoute(this.route))\n );\n }\n\n private untriggerAction() {\n if (!this.instance || this.isRouterNavigationInProgress) {\n return;\n }\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.finishActionRouteUntrigger(instance);\n }\n\n private findActionForRoute(params: Params): ActionDescriptorInst<any> | null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n if (actionUrlSegments.length !== urlSegments.length) {\n continue;\n }\n let isMatch = true;\n for (let i = 0; i < actionUrlSegments.length; i++) {\n if (actionUrlSegments[i].startsWith(':')) {\n const paramName = actionUrlSegments[i].substring(1);\n if (!params[paramName]) {\n isMatch = false;\n break;\n }\n } else if (actionUrlSegments[i] !== urlSegments[i].path) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n return action;\n }\n }\n return null;\n }\n\n private processActionInstance(instance: ActionInstance<T, S>) {\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n this.untriggerAction();\n break;\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.untriggerAction();\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n public canDeactivate(): Observable<boolean> {\n if (this.instance?.action.type === ActionTypeEnum.Editor && this.instance.activationEditorComponentRef) {\n return this.instance.activationEditorComponentRef.closeWithUnsavedChangesConfirmation(true);\n }\n\n return of(true);\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n}\n","","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n Type,\n ViewChild,\n inject\n} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions, FormlyModule} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {Observable, Subscription, debounceTime, distinctUntilChanged, of} from 'rxjs';\n\nimport {EditorDescriptorInst} from '../../../descriptors/editor';\nimport {TableviewEditorTypeEnum} from '../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../directives';\nimport {MngCommonsService, MngLoggerService} from '../../../services';\nimport {ViewContainer} from '../../../services/view';\nimport {EditorFormlyUtil, NotificationUtil, ObjectUtil} from '../../../utils';\nimport {MngFormlyFieldConfig} from '../formly/models';\nimport {IFormEditorComponent, MngFormEditorSubmitEvent, MngFormEventTypeEnum, MngFormFieldEventComponentSubtype} from '../models';\n\n@Component({\n standalone: true,\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n imports: [FormlyModule, ReactiveFormsModule, MessagesModule, AsyncPipe, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormEditorComponent<T = any> implements IFormEditorComponent<T>, OnInit, OnChanges, OnDestroy {\n private readonly translateService = inject(TranslateService);\n private readonly mngCommonsService = inject(MngCommonsService);\n private readonly logger = inject(MngLoggerService).create('MngFormEditorComponent');\n private viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n @Input() public descriptor?: EditorDescriptorInst<T>;\n @Input() public submitLoading: Observable<boolean> | boolean = false;\n\n // data source inputs;\n @Input() public item?: T;\n\n // extra features input\n @Input() public isFormDisabled = false;\n\n // event outputs\n @Output('formSubmit') public formSubmitEventEmitter = new EventEmitter<MngFormEditorSubmitEvent<T>>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChild('submitButton') public submitButtonElementRef?: ElementRef;\n\n public form: FormGroup = new FormGroup({});\n public formOptions: FormlyFormOptions = {\n formState: {\n add: false,\n edit: false,\n disabled: false\n }\n };\n public formFields!: FormlyFieldConfig[];\n public formModel: any = {};\n public formMessages: Message[] = [];\n public submitLoading$!: Observable<boolean>;\n private originalItemPrototype?: Type<T>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.setInitialFormState();\n this.resetFormModel(this.item);\n this.submitLoading$ = this.submitLoading instanceof Observable ? this.submitLoading : of(this.submitLoading);\n\n if (this.descriptor) {\n // init fields for formly\n this.formFields = EditorFormlyUtil.createFormlyConfigFromDescriptor(this.descriptor, this);\n this.updateFormState();\n\n // let the user know, that adding new value in table view with localizations is only supported in the default language\n if (\n this.descriptor.isLocalized &&\n (this.descriptor.tableviewEditorType === TableviewEditorTypeEnum.Add || this.descriptor.tableviewEditorType === TableviewEditorTypeEnum.Edit)\n ) {\n this.formMessages.push(\n NotificationUtil.getFormEditorInfoMessage(\n this.translateService,\n 'mngEditor.localizations.addInDefaultLanguageTitle',\n 'mngEditor.localizations.addInDefaultLanguageDescription',\n {defaultLanguage: this.mngCommonsService.defaultDataLanguage}\n )\n );\n }\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormEventTypeEnum.ComponentLifecycle, MngFormEditorComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n this.subscriptions.push(\n this.form.valueChanges.pipe(debounceTime(250), distinctUntilChanged()).subscribe(v => {\n this.descriptor?.nextEvent(MngFormEventTypeEnum.ValueChange, MngFormEditorComponent, this, {\n value: v,\n formValue: () => this.getFormValue()\n });\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isFormDisabled'] && !changes['isFormDisabled'].firstChange) {\n this.updateFormState();\n }\n if (changes['item'] && !changes['item'].firstChange) {\n this.resetFormModel(this.item);\n }\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormEventTypeEnum.ComponentLifecycle, MngFormEditorComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n // complete emitting events\n this.descriptor?.completeEvents();\n }\n\n public submit() {\n this.submitButtonElementRef?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this.formOptions.formState.submittedOn = Date.now();\n this.formMessages = [];\n\n const formSubmitItem = this.getFormValue();\n if (this.form.valid) {\n this.formSubmitEventEmitter.next(new MngFormEditorSubmitEvent(formSubmitItem));\n this.descriptor?.nextEvent(MngFormEventTypeEnum.Submit, MngFormEditorComponent, this, {\n submitValid: true,\n submitValue: formSubmitItem\n });\n } else {\n // find and mark invalid tabs\n if (this.formFields[0].type === 'tabs' && this.formFields[0].fieldGroup) {\n for (const tab of this.formFields[0].fieldGroup) {\n const isInvalid = this.isAnyFieldInvalid(tab.fieldGroup);\n this.formOptions.formState['tab_' + (tab.id ? tab.id : (tab.props as MngFormlyFieldConfig).props.label) + '_invalid'] = isInvalid;\n }\n }\n const event = new MngFormEditorSubmitEvent(formSubmitItem);\n event.success = false;\n this.formMessages.push(NotificationUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n\n this.formSubmitEventEmitter.next(event);\n this.descriptor?.nextEvent(MngFormEventTypeEnum.Submit, MngFormEditorComponent, this, {\n submitValid: false,\n submitValue: formSubmitItem\n });\n }\n }\n\n public getFormValue(): T {\n const formValue = ObjectUtil.deepCopy(this.form.getRawValue(), {mapGettersToProperties: true});\n\n this.descriptor?.fields.forEach(field => {\n if (field && field.setter) {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length - 1; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n\n fieldValue = fieldValue[splitPath[splitPath.length - 1]];\n field.setter(formValue, fieldValue);\n }\n });\n return formValue;\n }\n\n public resetFormModel(item?: T) {\n if (typeof item !== 'undefined') {\n this.originalItemPrototype = Object.getPrototypeOf(item);\n }\n\n const formModel = (ObjectUtil.deepCopy(item, {mapGettersToProperties: true}) as Record<string, any>) ?? {};\n\n this.descriptor?.fields.forEach(field => {\n if (field.getter && item) {\n const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(item?.[field.property as keyof object], item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n if (typeof this.formOptions.resetModel === 'function') {\n // could not be initiated yet\n this.formOptions.resetModel(this.formModel);\n }\n this.formModel = formModel;\n }\n\n public getFormField(key: string) {\n return this.findFormField(this.form, key.split('.'));\n }\n\n public setFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.setValue(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public patchFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.patchValue(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public resetFormFieldValue(key: string, value?: any) {\n const control = this.getFormField(key);\n if (control) {\n control.reset(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\n }\n\n private isAnyFieldInvalid(fields: FormlyFieldConfig[] = []): boolean {\n for (const field of fields) {\n let fieldInvalid = false;\n if (Array.isArray(field.fieldGroup)) {\n fieldInvalid = this.isAnyFieldInvalid(field.fieldGroup);\n } else if (typeof field.type !== 'undefined') {\n fieldInvalid = !field.formControl?.valid;\n }\n if (fieldInvalid) {\n return true;\n }\n }\n return false;\n }\n\n private updateFormState() {\n const isDisabled = this.isFormDisabled || this.descriptor?.disabled === true || this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Details;\n this.formOptions.formState.disabled = isDisabled;\n }\n\n /**\n * @private Sets form state based on editor descriptor type.\n * Possible options are: disabled, add or edit.\n */\n private setInitialFormState(): void {\n if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Add) {\n this.formOptions.formState.add = true;\n } else if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Edit) {\n this.formOptions.formState.edit = true;\n }\n this.updateFormState();\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button\n #submitButton\n pButton\n type=\"submit\"\n class=\"hidden\"\n [disabled]=\"form.disabled\"\n [loading]=\"(submitLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldNoLabelWrapperComponent extends FieldWrapper {\n public shouldShowError() {\n if (this.field.type !== 'formly-group' || (this.field.validators && Object.keys(this.field.validators).length > 0)) {\n return true;\n }\n return false;\n }\n\n public sanitizeErrorsForGroups(field: FormlyFieldConfig) {\n if (field.type === 'formly-group' && field.formControl?.errors && field.validators) {\n const errors: {[key: string]: any} = {};\n for (const key of Object.keys(field.formControl.errors)) {\n if (Object.prototype.hasOwnProperty.call(field.validators, key)) {\n errors[key] = field.validators[key];\n }\n }\n\n return {...field, formControl: {...field.formControl, errors}} as FormlyFieldConfig;\n }\n\n return field;\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block p-error\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {ActionDescriptorInst} from '../../../../../descriptors/action';\nimport {AFieldDescriptor} from '../../../../../descriptors/editor';\nimport {MngActionComponent} from '../../../../action';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslateModule, FormlyModule, MngActionComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldWrapperComponent extends FieldWrapper implements OnInit {\n public localizationAction!: ActionDescriptorInst<any>;\n\n public ngOnInit() {\n const descriptor = this.props?.['descriptor'] as AFieldDescriptor<any, any>;\n if (this.formState.disabled && descriptor.isLocalized) {\n this.addMissingTranslationHelperText();\n }\n }\n\n private addMissingTranslationHelperText(): void {\n if (!this.model[this.props?.['descriptor'].property + 'Translated'] && this.props?.['descriptor']?.property !== 'id') {\n this.props?.['descriptor']?.withHelpText('mngEditor.localizations.missingTranslation');\n this.field.className += ' localized-input-border-orange';\n } else {\n this.props?.['descriptor']?.withHelpText('');\n }\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (props.label) {\n <label [for]=\"key\" class=\"col\" [class]=\"props['descriptor']?.['labelClassName'] ?? ''\"\n >{{ props!.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n ExistingProvider,\n Injector,\n OnDestroy,\n OnInit,\n Output,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {AutoComplete, AutoCompleteModule, AutoCompleteSelectEvent} from 'primeng/autocomplete';\nimport {AutoCompleteCompleteEvent} from 'primeng/autocomplete/autocomplete.interface';\nimport {Observable, ReplaySubject, Subscription, of, switchMap, take} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {InputTrimType} from '../../../descriptors/types';\nimport {toObservable} from '../../../helpers/coercion';\nimport {DataListParams, FilterMatchMode, MngInternalError} from '../../../models';\nimport {MngLoggerService} from '../../../services';\nimport {ErrorUtil} from '../../../utils';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngAutocompleteComponent),\n multi: true\n};\n\n@Component({\n standalone: true,\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR],\n imports: [AutoCompleteModule, ReactiveFormsModule, AsyncPipe, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor {\n private readonly injector = inject(Injector);\n private readonly translate = inject(TranslateService);\n private readonly logger = inject(MngLoggerService).create('MngAutocompleteComponent');\n private readonly formlyWrapper = inject(MngFormlyFieldWrapperComponent, {optional: true});\n private readonly destroyRef = inject(DestroyRef);\n\n public dataProvider = input.required<ILookupDataProvider<any, any>>();\n public optionsTrackProperty = input<string>();\n public optionsValuePropertyInit = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false);\n public inlineSearch = input(false);\n public openOnFocus = input(false);\n public multiselect = input(false);\n public placeholder = input<string>();\n public className = input<string>();\n public dropdownClassName = input<string>();\n public showClear = input(false);\n public autoClear = input(false);\n public selectFirst = input(false); //on every input field change return first given value (or null)\n public searchTrim = input<InputTrimType | undefined>(undefined);\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n public primeAutocomplete = viewChild(AutoComplete);\n\n private isInited = false;\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public autocompleteFormControl: FormControl = new FormControl();\n public suggestions = signal<Array<any>>([]);\n private isPanelShown = false;\n private isFocused = false;\n private userSelectedItem?: any | any[];\n public queryResultCacheSubject?: ReplaySubject<any>;\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n } else {\n throw new MngInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'MngAutocompleteComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new MngInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'MngAutocompleteComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInit();\n });\n\n ngOnInit() {\n this.autocompleteFormControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n this.propagateValueChange(v);\n });\n this.setItemsAndDataProvider();\n if (this.selectFirst() && !this.autocompleteFormControl?.value) {\n this.onSearch(undefined, true);\n }\n }\n\n ngOnDestroy() {\n this.searchSubscription?.unsubscribe();\n }\n\n onSearch(event?: AutoCompleteCompleteEvent, isInit = false) {\n this.searchSubscription?.unsubscribe();\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n\n const params: DataListParams = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject<any>(1);\n }\n this.searchSubscription = this.getLookup(params, query).subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this.autocompleteFormControl.value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n\n const mngError = ErrorUtil.fromSubscribeError(err, 'MngAutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(mngError, ErrorUtil.getErrorLogLevel(mngError));\n }\n });\n } else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n\n private selectFirstItem() {\n if (!this.selectFirst() || this.multiselect()) return;\n\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? suggestions[0][optionsValueProperty] : suggestions[0];\n this.setValue(value);\n } else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event: AutoCompleteSelectEvent) {\n this.setValue(event.value, true);\n this.isFocused = false;\n if (this.openOnFocus()) {\n this.primeAutocomplete()?.hide();\n }\n }\n\n /**\n * Selects and sets new value\n */\n private setValue(value: any, fromUser = false) {\n let outputValue = value;\n const optionsValueProperty = this.optionsValueProperty();\n if (optionsValueProperty && value && typeof value === 'object') {\n outputValue = value[optionsValueProperty];\n }\n if (fromUser) {\n this.userSelectedItem = outputValue;\n } else {\n this.autocompleteFormControl.setValue(outputValue);\n }\n }\n\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n this.isFocused = true;\n if (this.openOnFocus()) {\n this.primeAutocomplete()?.show();\n }\n }\n\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onBlur(event: Event) {\n this.isFocused = false;\n if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.formlyWrapper?.formControl?.markAsTouched();\n }\n\n onShow() {\n this.isPanelShown = true;\n }\n\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n\n onClear() {\n this.onChangeFn();\n this.valueChangeEventEmitter.next(null);\n }\n\n private propagateValueChange(value: any | any[]) {\n let output = value;\n const optionsValueProperty = this.optionsValueProperty();\n if (this.multiselect() && Array.isArray(value)) {\n output = output.map((item: any) => {\n if (optionsValueProperty && item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n } else {\n if (optionsValueProperty && value && typeof value === 'object') {\n output = value[optionsValueProperty];\n }\n }\n this.onChangeFn(output);\n this.valueChangeEventEmitter.next(output);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.autocompleteFormControl.disable();\n } else {\n this.autocompleteFormControl.enable();\n }\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[optionsValuePropertyInit]: value};\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.autocompleteFormControl.setValue(matchedItem, {emitEvent: false});\n } else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(first())\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.autocompleteFormControl.setValue(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setAutocompleteValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n });\n }\n } else {\n this.setAutocompleteValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n\n if (this.openOnFocus()) {\n this.onSearch();\n }\n\n this.isInited = true;\n }\n\n private setAutocompleteValueFromWrite(value: any) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n this.autocompleteFormControl.setValue(value, {emitEvent: false});\n }\n\n private getLookup(params: DataListParams, query?: string): Observable<Array<any>> {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(\n switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translatedItems).pipe(map(translations => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: any): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = i18nMap[label];\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = i18nMap[item];\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n } else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n}\n","<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"placeholder()\"\n [dropdown]=\"true\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [suggestions]=\"suggestions()\"\n [multiple]=\"multiselect()\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [minLength]=\"openOnFocus() ? 0 : 1\"\n [showClear]=\"showClear()\"\n [forceSelection]=\"autoClear()\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear()\"\n (onShow)=\"onShow()\"\n (onHide)=\"onHide()\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n ExistingProvider,\n Injector,\n OnInit,\n Output,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Dropdown, DropdownModule} from 'primeng/dropdown';\nimport {MultiSelectModule} from 'primeng/multiselect';\nimport {of, switchMap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {toObservable} from '../../../helpers/coercion';\nimport {MngInternalError} from '../../../models';\nimport {MngLoggerService} from '../../../services';\nimport {ErrorUtil} from '../../../utils';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngDropdownComponent),\n multi: true\n};\n\n@Component({\n standalone: true,\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [MNG_DROPDOWN_VALUE_ACCESSOR],\n imports: [DropdownModule, MultiSelectModule, TranslateModule, AsyncPipe, ReactiveFormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngDropdownComponent implements OnInit, ControlValueAccessor {\n private readonly logger = inject(MngLoggerService).create('MngDropdownComponent');\n\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n private readonly formlyWrapper = inject(MngFormlyFieldWrapperComponent, {optional: true});\n\n public readonly dropdownFormControl: FormControl = new FormControl();\n\n public dataProvider = input<ILookupDataProvider<any, any>>();\n public optionsTrackProperty = input<string>();\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input<boolean>(false);\n public optionsValuePropertyInit = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsDisabledProperty = input<string>();\n public multiselect = input<boolean>(false);\n public placeholder = input<string>();\n public showClear = input<boolean>(false);\n public selectFirstItem = input<boolean>(false);\n public className = input<string>();\n public dropdownClassName = input<string>();\n public changeValueOnBlur = input<boolean>(false);\n\n public loading = signal(false);\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n public primeDropdown = viewChild(Dropdown);\n\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public items = signal<Array<any>>([]);\n private firstTimeSettingItems = true;\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n } else {\n throw new MngInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'MngDropdownComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new MngInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'MngDropdownComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInit();\n });\n\n ngOnInit(): void {\n this.dropdownFormControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(v => {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(v);\n }\n });\n\n const dataProvider = this.dataProvider();\n if (dataProvider) {\n this.loading.set(true);\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n\n toObservable(dataProvider.lookup({limit: 50}, this.dataProviderService))\n .pipe(\n switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translationKeys: string[] = items.map(\n item =>\n (typeof item === 'object' && this.optionsLabelPropertyInit()\n ? (item[this.optionsLabelPropertyInit() as keyof object] as string)\n : item) as string\n );\n\n if (translationKeys.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translationKeys).pipe(\n map(translations =>\n items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = translations[label];\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: res => {\n this.items.set(res);\n this.loading.set(false);\n\n if (this.firstTimeSettingItems && this.selectFirstItem() && !this.dropdownFormControl?.value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? res[0][optionsValueProperty] : res[0];\n this.dropdownFormControl?.setValue(value);\n this.firstTimeSettingItems = false;\n }\n },\n error: err => {\n const mngError = ErrorUtil.fromSubscribeError(err, 'MngDropdownComponentError');\n this.logger.log(mngError, ErrorUtil.getErrorLogLevel(mngError));\n }\n });\n } else {\n this.logger.debug(`WARNING: Data provider should be provided for MngDropdownComponent.`);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.dropdownFormControl.disable();\n } else {\n this.dropdownFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (!this.optionsValuePropertyInit() && obj === null && !this.isValueAccessorInitialized()) {\n return;\n }\n this.dropdownFormControl.setValue(obj, {emitEvent: false});\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDropdownBlur(event: any) {\n if (this.changeValueOnBlur()) {\n this.propagateValueChange(this.dropdownFormControl.value);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onPanelHide(event: any) {\n if (this.changeValueOnBlur()) {\n this.propagateValueChange(this.dropdownFormControl.value);\n }\n }\n\n private propagateValueChange(value: any) {\n if (!this.isValueAccessorInitialized()) {\n return;\n }\n\n this.formlyWrapper?.formControl?.markAsTouched();\n\n this.onChangeFn(value);\n this.valueChangeEventEmitter.next(value);\n }\n\n /**\n * Prevents executions for writing and outputting value which is sometimes committed as null in cmp initialization stage.\n * In dropdown (from ang. 15 and switch to standalone cmp) null value was always committed to dropdown even if default value was set (using ngModel or formControl) which is incorrect.\n * Github issue: https://github.com/angular/angular/issues/14988\n * @private\n */\n private isValueAccessorInitialized() {\n return typeof this.onChangeFn !== 'undefined';\n }\n}\n","@if (!multiselect()) {\n <p-dropdown\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [showClear]=\"showClear()\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n (onBlur)=\"onDropdownBlur($event)\"\n [dropdownIcon]=\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n appendTo=\"body\">\n </p-dropdown>\n} @else {\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n}\n","import {ChangeDetectionStrategy, Component, DestroyRef, ExistingProvider, Injector, OnInit, booleanAttribute, effect, forwardRef, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormBuilder, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\n\nimport {CalendarModule} from 'primeng/calendar';\nimport {merge} from 'rxjs';\n\nexport const MNG_DATE_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngDateRangeComponent),\n multi: true\n};\n\n@Component({\n standalone: true,\n selector: 'mng-date-range',\n templateUrl: './date-range.component.html',\n providers: [MNG_DATE_RANGE_VALUE_ACCESSOR],\n imports: [CalendarModule, ReactiveFormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngDateRangeComponent implements OnInit, ControlValueAccessor {\n private readonly formBuilder = inject(FormBuilder);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n\n public placeholder = input<string>();\n public showTime = input(false);\n public showSeconds = input(false);\n public dateFormat = input<string>();\n\n public disabled = input(false, {\n transform: booleanAttribute\n });\n\n private fromToFormControl!: FormGroup;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouchedFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n public get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange') as FormControl;\n }\n\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [],\n to: [],\n dateRange: []\n });\n\n effect(\n () => {\n this.setDisabledState(this.disabled());\n },\n {injector: this.injector}\n );\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n } else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate);\n this.toCtrl.setValue(endDate);\n } else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate]);\n } else {\n this.dateRangeCtrl.setValue(null);\n }\n }\n\n private onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n } else {\n const date = this.dateRangeCtrl.value as Date[];\n this.onChangeFn(date);\n }\n }\n}\n","@if (showTime()) {\n <div class=\"flex gap-2\">\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"fromCtrl\"\n [maxDate]=\"toCtrl.value\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n [showTime]=\"true\"\n [showSeconds]=\"showSeconds()\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onFocus)=\"onTouchedFn()\"></p-calendar>\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"toCtrl\"\n [minDate]=\"fromCtrl.value\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n [showTime]=\"true\"\n [showSeconds]=\"showSeconds()\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onFocus)=\"onTouchedFn()\"></p-calendar>\n </div>\n} @else {\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"dateRangeCtrl\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n selectionMode=\"range\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onFocus)=\"onTouchedFn()\"></p-calendar>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n WritableSignal,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {Observable, Subject, Subscription, of} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {IDataProvider} from '../../../../data-providers';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst, ActionEditorSubmitDescriptorInst} from '../../../../descriptors/action';\nimport {ActionActivationTriggerEnum, ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum} from '../../../../descriptors/types';\nimport {MngComponentDirective} from '../../../../directives';\nimport {IActionEditorComponent, MngInternalError} from '../../../../models';\nimport {MngCommonsService, MngLoggerService} from '../../../../services';\nimport {MngActionExecutorService, provideActionExecutor} from '../../../../services/action';\nimport {ViewContainer} from '../../../../services/view';\nimport {IdType} from '../../../../types';\nimport {I18nUtils} from '../../../../utils';\nimport {MngFormEditorComponent} from '../../../form';\nimport {MngFormEditorSubmitEvent} from '../../../form/models';\nimport {MngActionComponent} from '../../action.component';\nimport {ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrls: ['action-editor-injector-context.component.scss'],\n imports: [MngActionComponent, ProgressSpinnerModule, MngFormEditorComponent, MngComponentDirective, ToolbarModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class MngActionEditorInjectorContextComponent<T = any, S = any> implements OnInit, OnDestroy, IActionEditorComponent {\n protected readonly ActionActivationTriggerEnum = ActionActivationTriggerEnum;\n public readonly actionEditorSubmitTypeSubmit = ActionEditorSubmitTypeEnum.Submit;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly route = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly dialogService = inject(DialogService);\n private readonly logger = inject(MngLoggerService).create('MngActionEditorInjectorContextComponent');\n private readonly commonsService = inject(MngCommonsService);\n private readonly actionExecutor = inject(MngActionExecutorService);\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n @Input({required: true}) data!: ActionEditorInjectorContextInputData<T, S>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<T | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<T | null | undefined>();\n\n // content and view queries\n @ViewChild('submitButton') public submitButtonElementRef!: ElementRef;\n @ViewChild(MngFormEditorComponent) public formEditorCmp?: MngFormEditorComponent;\n\n public title: WritableSignal<string | undefined> = signal(undefined);\n public isFormDisabled = signal(false);\n\n // data\n public item: WritableSignal<T | undefined> = signal(undefined);\n public itemId: WritableSignal<IdType | undefined> = signal(undefined);\n public actionData: WritableSignal<ActionData | undefined> = signal(undefined);\n\n // actions\n public toolbarLeftActions: WritableSignal<ActionDescriptorInst<T, S>[]> = signal([]);\n public toolbarRightActions: WritableSignal<ActionDescriptorInst<T, S>[]> = signal([]);\n public footerLeftActions: WritableSignal<ActionDescriptorInst<T, S>[]> = signal([]);\n public footerRightActions: WritableSignal<ActionDescriptorInst<T, S>[]> = signal([]);\n private instance?: ActionInstance<T, S>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n private instanceSubmitFormItem?: T | null;\n private instanceSubmitResult?: T | null;\n\n public loading = signal(false);\n private fetchExecutionSubscription?: Subscription;\n public submitLoading = signal(false);\n private submitExecutionSubscription?: Subscription;\n\n constructor() {\n effect(() => {\n const title = this.title();\n requestAnimationFrame(() => {\n if (this.data.dialogConfig) {\n this.data.dialogConfig.header = title;\n }\n if (this.data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title);\n }\n });\n });\n }\n\n ngOnInit() {\n if (this.data.actionInstance) {\n this.processActionInstance(this.data.actionInstance);\n }\n\n if (!this.data.dataProvider) {\n this.data.dataProvider = this.viewContainer?.getDataProvider();\n }\n\n this.item.set(this.data.item);\n this.itemId.set(this.data.itemId);\n this.actionData.set(this.data.actionData);\n\n // arrange the sub-actions\n this.initializeSubActions();\n\n // notify executor to for activation to end\n this.processActionInstance(this.actionExecutor.onActionEditorInit(this.data.descriptor, this.instance, this));\n\n // set title\n this.updateTitle();\n\n // subscribe to events that could be triggered from outside from any reason\n this.viewContainer\n ?.getEditorReset$()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: e => {\n if (e.fetch) {\n this.fetchItem();\n } else if (e.item) {\n this.formEditorCmp?.resetFormModel(e.item);\n } else if (e.fields) {\n for (const key in e.fields) {\n this.formEditorCmp?.resetFormFieldValue(key, e.fields[key]);\n }\n }\n }\n });\n\n this.viewContainer\n ?.getEditorClose$()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.cancel();\n }\n });\n }\n\n public ngOnDestroy() {\n this.fetchExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription?.unsubscribe();\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionEditorDestroy(instance);\n }\n\n public onSubmit(event: MngFormEditorSubmitEvent<T>) {\n if (!this.instance) {\n throw new MngInternalError(`Action is not instantiated in action editor for action ${this.data.descriptor.actionName}.`);\n }\n if (event.success) {\n this.instanceSubmitFormItem = event.formItem;\n\n // prepare parameters\n const actionParameters = new ActionParameters(this.itemId(), event.formItem).withActionData(this.actionData());\n if (this.data.descriptor.editorDescriptor.isLocalized) {\n actionParameters.withLocale(this.commonsService.appDataLanguageDefault);\n }\n\n const context = this.actionExecutor.prepareContextForEditorSubmit(\n this.data.descriptor,\n actionParameters,\n this.data.dataProvider,\n this.instance,\n this.data.previousActionInstance\n );\n\n this.submitExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription = context.execution$.pipe(take(1)).subscribe({\n next: res => {\n if (res && typeof res === 'object' && !this.itemId() && this.data.descriptor.model?.idProperty) {\n // to cover creation!\n this.updateItemId(res[this.data.descriptor.model.idProperty as keyof object]);\n }\n this.actionRunEventEmitter.next(res);\n this.instanceSubmitResult = res;\n }\n });\n\n this.actionExecutor.run(context);\n }\n }\n\n public cancel() {\n if (!this.instance) {\n this.logger.warn(`Action editor cannot be canceled for ${this.data.descriptor.actionName}, because no action instance is present`);\n return;\n }\n this.actionCancelEventEmitter.next(undefined);\n this.actionExecutor.finishAction(this.instance);\n }\n\n public updateItemId(itemId: IdType | undefined) {\n this.itemId.set(itemId);\n }\n\n public updateItem(item: T | undefined) {\n this.item.set(item);\n }\n\n public triggerSubmit() {\n this.formEditorCmp?.submit();\n }\n\n private initializeSubActions() {\n for (const action of this.data.descriptor.editorActions) {\n if (action instanceof ActionEditorSubmitDescriptorInst) {\n if (typeof action.button.icon === 'undefined') {\n action.button.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.button.label === 'undefined') {\n action.button.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.data.isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(null);\n });\n } else {\n action.withRunFunction(() => {\n this.closeWithUnsavedChangesConfirmation();\n return of(null);\n });\n }\n }\n this.placeActionsOnPositions(action);\n }\n\n for (const action of this.viewContainer?.getActions().filter(value => value.positionTableviewCategories?.includes(this.data.descriptor.tableviewCategory!)) ?? []) {\n this.placeActionsOnPositions(action);\n }\n\n this.toolbarRightActions.update(v => v.reverse());\n this.footerRightActions.update(v => v.reverse());\n }\n\n private fetchItem() {\n if (!this.instance) {\n throw new MngInternalError(`Action is not instantiated in action editor for action ${this.data.descriptor.actionName}.`);\n }\n\n const actionParameters = new ActionParameters(this.itemId(), this.item()).withActionData(this.actionData());\n if (this.data.descriptor.editorDescriptor.isLocalized) {\n if (this.data.descriptor.editorDescriptor.disabled) {\n actionParameters.withLocale(this.commonsService.appDataLanguage!);\n } else {\n actionParameters.withLocale(this.commonsService.appDataLanguageDefault);\n }\n }\n if (this.instance?.previousInstance?.context?.parameters.item) {\n actionParameters.withFormItem(this.instance?.previousInstance?.context?.parameters.item);\n }\n if (typeof this.instance?.previousInstance?.result !== 'undefined') {\n actionParameters.withSubmitResult(this.instance?.previousInstance?.result);\n }\n\n const context = this.actionExecutor.prepareContextForEditorFetch(\n this.data.descriptor,\n actionParameters,\n this.data.dataProvider,\n this.instance,\n this.data.previousActionInstance\n );\n this.fetchExecutionSubscription?.unsubscribe();\n this.fetchExecutionSubscription = context.execution$.pipe(take(1)).subscribe(res => {\n this.updateItem(res ?? undefined);\n this.updateTitle();\n });\n\n this.actionExecutor.run(context);\n }\n\n private updateTitle() {\n if (this.data.descriptor.editorTitle === null) {\n this.title.set(undefined);\n return;\n }\n I18nUtils.Action.getEditorTitleAsync(this.translate, this.data.descriptor, this.item()).subscribe(t => {\n this.title.set(t ?? undefined);\n });\n }\n\n private placeActionsOnPositions(action: ActionDescriptorInst<any>) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.FooterLeft:\n this.footerLeftActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.FooterRight:\n this.footerRightActions.update(v => [...v, action]);\n break;\n }\n }\n\n private setEditorEnabled(isEnabled = true) {\n this.isFormDisabled.set(!isEnabled);\n }\n\n private processActionInstance(instance: ActionInstance<T, S>) {\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.ActivationEnd:\n this.fetchItem();\n break;\n case ActionInstanceStateEnum.FetchStart:\n this.setEditorEnabled(false);\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.FetchError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.FetchEnd:\n this.setEditorEnabled(true);\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.RunStart:\n this.setEditorEnabled(false);\n this.submitLoading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.setEditorEnabled(true);\n this.submitLoading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n this.setEditorEnabled(false);\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.setEditorEnabled(false);\n this.unsetInstance();\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.setEditorEnabled(false);\n // should also unsetInstance, but let this for reactivationInstance$ listener to not interfere\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n\n @HostListener('window:beforeunload')\n private beforeWindowUnload() {\n if (this.data.isDialog && this.formEditorCmp?.form.pristine === false) {\n return confirm(this.translate.instant('mngEditor.unsavedChangesConfirmation.message'));\n }\n return true;\n }\n\n @HostListener('window:keydown.Escape')\n private onEscapePressed() {\n if (\n this.data.isDialog &&\n this.data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute &&\n this.instance?.activationDialogRef &&\n parseInt(this.dialogService.dialogComponentRefMap.get(this.instance?.activationDialogRef)?.instance.container?.style.zIndex ?? '') === ZIndexUtils.getCurrent()\n )\n this.closeWithUnsavedChangesConfirmation();\n }\n\n private showUnsavedChangesConfirmationDialog(callFromGuard: boolean): Observable<boolean> {\n const subject = new Subject<boolean>();\n this.confirmationService.confirm({\n header: this.translate.instant('mngEditor.unsavedChangesConfirmation.header'),\n message: this.translate.instant('mngEditor.unsavedChangesConfirmation.message'),\n acceptLabel: this.translate.instant('general.yes'),\n rejectLabel: this.translate.instant('general.no'),\n icon: 'pi pi-exclamation-triangle',\n accept: () => {\n if (!callFromGuard) {\n this.cancel();\n }\n subject.next(true);\n subject.complete();\n },\n reject: () => {\n subject.next(false);\n subject.complete();\n }\n });\n return subject.asObservable();\n }\n\n public closeWithUnsavedChangesConfirmation(callFromGuard = false): Observable<boolean> {\n if (this.formEditorCmp?.form.pristine === false && this.data.descriptor.unsavedChangesConfirmation) {\n return this.showUnsavedChangesConfirmationDialog(callFromGuard);\n } else {\n if (!callFromGuard) {\n this.cancel();\n }\n }\n\n return of(true);\n }\n}\n\nexport interface ActionEditorInjectorContextInputData<T, S> {\n descriptor: ActionEditorDescriptorInst<T, S>;\n isDialog: boolean;\n dialogConfig?: DynamicDialogConfig;\n itemId?: IdType;\n item?: T;\n actionData?: ActionData;\n dataProvider?: IDataProvider<T, S>;\n actionInstance?: ActionInstance<T, S>;\n previousActionInstance?: ActionInstance<any, any>;\n}\n","@if (!data.isDialog && title()) {\n <h5>{{ title() }}</h5>\n}\n@if (data.isDialog && data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n <span class=\"p-dialog-header dialog-close-button-wrapper\">\n <button\n class=\"p-dialog-header-icon p-dialog-header-maximize p-link\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-column\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"flex-grow-1 mng-action-editor-toolbar-container\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n </div>\n }\n\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (loading()) {\n <div class=\"text-center\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n }\n @if (data.descriptor.editorDescriptor && !loading()) {\n <mng-form-editor [descriptor]=\"data.descriptor.editorDescriptor\" [item]=\"item()\" [isFormDisabled]=\"isFormDisabled()\" (formSubmit)=\"onSubmit($event)\"> </mng-form-editor>\n }\n </div>\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div>\n @for (action of footerLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n <div>\n @for (action of footerRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Injector, Input, OnChanges, OnInit, Output, SimpleChanges, Type, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\n\nimport {IDataProvider} from '../../../data-providers';\nimport {ActionEditorDescriptorInst} from '../../../descriptors/action';\nimport {MngComponentDirective, MngDialogKeydownHandlerDirective} from '../../../directives';\nimport {ActionEditorDialogData, MngInternalError} from '../../../models';\nimport {IdType} from '../../../types';\nimport {ActionData} from '../models';\nimport {ActionEditorInjectorContextInputData, MngActionEditorInjectorContextComponent} from './injector-context/action-editor-injector-context.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n imports: [MngComponentDirective],\n hostDirectives: [MngDialogKeydownHandlerDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngActionEditorComponent<T = any, S = any> implements OnInit, OnChanges {\n public readonly injContextCmpType = MngActionEditorInjectorContextComponent as Type<any>;\n\n public injector = inject(Injector);\n public readonly destroyRef = inject(DestroyRef);\n private readonly dialogConfig = inject(DynamicDialogConfig, {optional: true});\n\n // metadata and editor mode input\n @Input({required: true}) public action!: ActionEditorDescriptorInst<T, S>;\n\n // data source inputs\n @Input('itemId') public itemIdInput?: IdType;\n @Input('item') public itemInput?: T;\n @Input() public actionData?: ActionData;\n @Input() public dataProvider?: IDataProvider<T, S>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<T | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<T | null | undefined>();\n\n private actionEditorWInjContextCmp?: MngActionEditorInjectorContextComponent<T, S>;\n public actionEditorWInjContextInputData?: ActionEditorInjectorContextInputData<T, S>;\n\n private isDialog = false;\n\n public get actionEditor() {\n return this.actionEditorWInjContextCmp;\n }\n\n public get formEditorCmp() {\n return this.actionEditor?.formEditorCmp;\n }\n\n ngOnInit() {\n let dialogData: ActionEditorDialogData<T, S> | undefined = undefined;\n\n if (this.dialogConfig?.data) {\n dialogData = this.dialogConfig.data as ActionEditorDialogData<T, S>;\n this.isDialog = true;\n\n // set injector from provided one\n this.injector = dialogData.injector;\n }\n\n this.actionEditorWInjContextInputData = {\n isDialog: this.isDialog,\n dialogConfig: this.dialogConfig ?? undefined,\n descriptor: dialogData?.action.descriptor ?? this.action,\n actionInstance: dialogData?.action.instance,\n previousActionInstance: dialogData?.action.previousInstance,\n itemId: dialogData?.action.instance.activationParameters?.itemId ?? this.itemIdInput,\n item: dialogData?.action.instance.activationParameters?.item ?? this.itemInput,\n actionData: dialogData?.action.instance.activationParameters?.actionData ?? this.actionData,\n dataProvider: this.dataProvider\n };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['itemIdInput'] && !changes['itemIdInput'].firstChange) {\n this.actionEditorWInjContextCmp?.updateItemId(this.itemIdInput);\n }\n if (changes['itemInput'] && !changes['itemInput'].firstChange) {\n this.actionEditorWInjContextCmp?.updateItem(this.itemInput);\n }\n }\n\n public onActionEditorWInjContextCmp(cmp: MngActionEditorInjectorContextComponent<T, S>) {\n if (this.actionEditorWInjContextCmp) {\n throw new MngInternalError('Action editor injection context component is already initialized');\n }\n this.actionEditorWInjContextCmp = cmp;\n this.actionEditorWInjContextCmp.actionCancelEventEmitter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(action => {\n this.actionCancelEventEmitter.emit(action);\n });\n this.actionEditorWInjContextCmp.actionRunEventEmitter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(action => {\n this.actionRunEventEmitter.emit(action);\n });\n }\n\n public cancel() {\n this.actionEditorWInjContextCmp?.cancel();\n }\n\n public triggerSubmit() {\n this.actionEditorWInjContextCmp?.triggerSubmit();\n }\n}\n","<div\n [mngComponent]=\"injContextCmpType\"\n [inputs]=\"{\n data: actionEditorWInjContextInputData\n }\"\n [nodeInjector]=\"injector\"\n (instanceCreated)=\"onActionEditorWInjContextCmp($event)\"></div>\n","import {animate, style, transition, trigger} from '@angular/animations';\nimport {NgClass} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n computed,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FilterMetadata, OverlayService, PrimeNGConfig, SelectItem, TranslationKeys} from 'primeng/api';\nimport {CalendarModule} from 'primeng/calendar';\nimport {ConnectedOverlayScrollHandler, DomHandler} from 'primeng/dom';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {FilterIcon} from 'primeng/icons/filter';\nimport {FilterSlashIcon} from 'primeng/icons/filterslash';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {Table, TableModule} from 'primeng/table';\nimport {TriStateCheckboxModule} from 'primeng/tristatecheckbox';\nimport {Nullable, VoidListener} from 'primeng/ts-helpers';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\n\nimport {FilterDescriptor, FilterLookupDescriptor} from '../../../descriptors/filter';\nimport {FilterLookupTypeEnum, FilterTypeEnum} from '../../../descriptors/types';\nimport {MngInputTrimDirective} from '../../../directives';\nimport {FilterMatchMode, FilterMatchModeExtendedType} from '../../../models';\nimport {MNG_MODULE_CONFIG_IT} from '../../../services/tokens';\nimport {DateUtil} from '../../../utils';\nimport {MngAutocompleteComponent, MngDateRangeComponent, MngDropdownComponent} from '../../form';\nimport {MngTableComponent} from '../table.component';\n\n/**\n * Cannot be on push change detection strategy because of filter updates triggered from route which causes to force update values in force metadata\n * and these must be propagated through to this component and beyond to primeNG.\n */\n@Component({\n standalone: true,\n selector: 'mng-table-column-filter-full',\n imports: [\n TableModule,\n TranslateModule,\n MngDateRangeComponent,\n CalendarModule,\n FormsModule,\n MngAutocompleteComponent,\n MngDropdownComponent,\n TriStateCheckboxModule,\n InputNumberModule,\n InputTextModule,\n FilterIcon,\n FilterSlashIcon,\n NgClass,\n DropdownModule,\n MngInputTrimDirective\n ],\n templateUrl: './column-filter-full.component.html',\n animations: [\n trigger('overlayAnimation', [\n transition(':enter', [style({opacity: 0, transform: 'scaleY(0.8)'}), animate('.12s cubic-bezier(0, 0, 0.2, 1)')]),\n transition(':leave', [animate('.1s linear', style({opacity: 0}))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableColumnFilterFullComponent implements OnInit, OnDestroy {\n public readonly lookupTypeDropdown: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n public readonly lookupTypeAutocomplete: FilterLookupTypeEnum = FilterLookupTypeEnum.Autocomplete;\n private readonly el = inject(ElementRef);\n private readonly primeTable = inject(Table);\n private readonly mngTable = inject(MngTableComponent);\n private readonly mngConfig = inject(MNG_MODULE_CONFIG_IT);\n private readonly renderer = inject(Renderer2);\n private readonly primeConfig = inject(PrimeNGConfig);\n private readonly overlayService = inject(OverlayService);\n private readonly cd = inject(ChangeDetectorRef);\n private readonly document: Document = window.document;\n\n @Input({required: true}) descriptor!: FilterDescriptor<any, any>;\n\n @ViewChild('icon') icon: Nullable<ElementRef>;\n\n // change only on init!\n public primeField!: string;\n public primeType = 'text';\n public lookupDescriptor?: FilterLookupDescriptor<any, any>;\n\n // public matchModes: SelectItem[] = [];\n public matchModes: WritableSignal<SelectItem[]> = signal([]);\n public filterConstraint: WritableSignal<MngFilterMetadata | undefined> = signal(undefined);\n public isFilterSet = computed(\n () =>\n this.filterConstraint()?.matchMode === FilterMatchMode.Exists ||\n this.filterConstraint()?.matchMode === FilterMatchMode.DoesNotExist ||\n !this.primeTable.isFilterBlank(this.filterConstraint()?.value)\n );\n public isInputDisabled = computed(() => this.filterConstraint()?.matchMode === FilterMatchMode.Exists || this.filterConstraint()?.matchMode === FilterMatchMode.DoesNotExist);\n public overlayVisible = signal(false);\n\n private overlaySubscription?: Subscription;\n private overlay: HTMLElement | undefined | null;\n private scrollHandler?: ConnectedOverlayScrollHandler | null;\n private documentClickListener: VoidListener;\n private documentResizeListener: VoidListener;\n private translationSubscription?: Subscription;\n private resetSubscription?: Subscription;\n private selfClick?: boolean;\n private overlayEventListener: any;\n private mngTableFilterMetadataSubscription?: Subscription;\n\n private readonly window = this.document.defaultView as Window;\n\n private dateDebounceSubject = new Subject<Date | Date[] | null>();\n private dateTimeInUtc = false;\n private dateTimeWithTimezone = true;\n private dateTimeWithMillis = true;\n private dateOnlyDisabled = false;\n\n constructor() {\n this.dateDebounceSubject.pipe(debounceTime(500), distinctUntilChanged(), takeUntilDestroyed()).subscribe(v => {\n if (this.filterConstraint()?.displayMatchMode === FilterMatchMode.Equals && this.filterConstraint()?.matchMode === FilterMatchMode.Between && v !== null) {\n const dateValue: Date | undefined = Array.isArray(v) ? v[0] : v; // could have empty array\n\n if (dateValue) {\n const fromDate = new Date(dateValue);\n const toDate = new Date(dateValue);\n\n if (this.descriptor.datePickerShowTime) {\n if (this.descriptor.datePickerShowSeconds) {\n fromDate.setMilliseconds(0);\n toDate.setMilliseconds(999);\n } else {\n fromDate.setSeconds(0, 0);\n toDate.setSeconds(59, 0);\n }\n } else {\n fromDate.setHours(0, 0, 0, 0);\n toDate.setHours(23, 59, 59, 999);\n }\n // adjust to settings\n v = [fromDate, toDate];\n } else {\n v = null;\n }\n }\n const convertDateType = this.descriptor.datePickerValueNoTime || (!this.dateOnlyDisabled && !this.descriptor.datePickerShowTime) ? 'date' : 'date-time';\n const convertDateTimeOpts = {\n utc: this.descriptor.datePickerValueUtc ?? this.dateTimeInUtc,\n noMillis: !this.dateTimeWithMillis,\n noTimezone: this.descriptor.datePickerValueNoTimezone ?? !this.dateTimeWithTimezone\n };\n this.updateFilterValue(\n v == null\n ? v\n : Array.isArray(v)\n ? v.filter(i => i != null).map(i => DateUtil.toIsoString(i, convertDateType, convertDateTimeOpts))\n : DateUtil.toIsoString(v, convertDateType, convertDateTimeOpts)\n );\n });\n\n effect(\n () => {\n const fieldFilterMeta = this.mngTable.filterMeta()[this.primeField];\n if (\n fieldFilterMeta &&\n (!this.filterConstraint() || this.filterConstraint()!.value !== fieldFilterMeta.value || this.filterConstraint()!.matchMode !== fieldFilterMeta.matchMode)\n ) {\n this.setFilterConstraint(fieldFilterMeta);\n }\n },\n {allowSignalWrites: true}\n );\n }\n\n ngOnInit() {\n if (this.mngConfig.serialization) {\n if (this.mngConfig.serialization.dateTimeInUtc !== undefined) this.dateTimeInUtc = this.mngConfig.serialization.dateTimeInUtc;\n if (this.mngConfig.serialization.dateTimeWithTimezone !== undefined) this.dateTimeWithTimezone = this.mngConfig.serialization.dateTimeWithTimezone;\n if (this.mngConfig.serialization.dateTimeWithMillis !== undefined) this.dateTimeWithMillis = this.mngConfig.serialization.dateTimeWithMillis;\n if (this.mngConfig.serialization.filtersDateOnlyDisabled !== undefined) this.dateOnlyDisabled = this.mngConfig.serialization.filtersDateOnlyDisabled;\n }\n\n this.primeField = this.descriptor.property;\n\n switch (this.descriptor.filterType) {\n case FilterTypeEnum.Boolean:\n this.primeType = 'boolean';\n break;\n case FilterTypeEnum.Number:\n this.primeType = 'numeric';\n break;\n case FilterTypeEnum.Date:\n this.primeType = 'date';\n break;\n case FilterTypeEnum.Lookup:\n case FilterTypeEnum.LookupEnum:\n this.primeType = 'lookup';\n this.lookupDescriptor = this.descriptor as FilterLookupDescriptor<any, any>;\n break;\n case FilterTypeEnum.String:\n this.primeType = 'text';\n break;\n }\n\n // generate match mode options\n this.translationSubscription = this.primeConfig.translationObserver.subscribe(() => {\n this.generateMatchModeOptions();\n });\n this.generateMatchModeOptions();\n\n this.initFilterConstraint();\n }\n\n ngOnDestroy() {\n if (this.overlay) {\n this.renderer.appendChild(this.el.nativeElement, this.overlay);\n ZIndexUtils.clear(this.overlay);\n this.onOverlayHide();\n }\n\n this.translationSubscription?.unsubscribe();\n this.resetSubscription?.unsubscribe();\n this.overlaySubscription?.unsubscribe();\n this.mngTableFilterMetadataSubscription?.unsubscribe();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onTextModelChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n if (value === '') {\n this.updateFilterValue(value);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onTextInputEnterKeyDown(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.updateFilterValue(value);\n event.preventDefault();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onNumericModelChange(value: number | null) {\n if (value === null) {\n this.updateFilterValue(value);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onNumericInputKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n const value = (event?.target as HTMLInputElement | undefined)?.value ?? null;\n this.updateFilterValue(value !== null ? +value : null);\n event.preventDefault();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onTristateModelChange(value: boolean | null) {\n this.updateFilterValue(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n dateFilter(value: Date | Date[] | null) {\n if (this.filterConstraint()?.displayMatchMode === FilterMatchMode.Between && Array.isArray(value)) {\n const dateValues = value.filter(v => v instanceof Date);\n if (dateValues.length !== 2) {\n return;\n }\n }\n this.dateDebounceSubject.next(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n autocompleteFilter(value: any) {\n this.updateFilterValue(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\n dropdownFilter(value: any) {\n if (Array.isArray(value) && value.length === 0) {\n value = undefined;\n }\n this.updateFilterValue(value);\n }\n\n onMatchModeChange(matchMode: string) {\n this.setFilterConstraint({...this.filterConstraint(), matchMode: matchMode});\n this.updateDtFilter();\n this.hideOverlay();\n }\n\n onMatchModeKeyDown(event: KeyboardEvent) {\n const item = <HTMLLIElement>event.target;\n\n switch (event.key) {\n case 'ArrowDown':\n // eslint-disable-next-line no-case-declarations\n const nextItem = this.findNextMenuModeItem(item);\n if (nextItem) {\n item.removeAttribute('tabindex');\n nextItem.tabIndex = '0';\n nextItem.focus();\n }\n\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n // eslint-disable-next-line no-case-declarations\n const prevItem = this.findPrevMenuModeItem(item);\n if (prevItem) {\n item.removeAttribute('tabindex');\n prevItem.tabIndex = '0';\n prevItem.focus();\n }\n\n event.preventDefault();\n break;\n }\n }\n\n onRowClearItemClick() {\n this.clearFilter();\n this.hideOverlay();\n }\n\n toggleMenu(event: Event) {\n this.overlayVisible.set(!this.overlayVisible());\n event.stopPropagation();\n }\n\n onToggleButtonKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.overlayVisible.set(false);\n break;\n\n case 'ArrowDown':\n if (this.overlayVisible()) {\n const focusable = DomHandler.getFocusableElements(<HTMLElement>this.overlay);\n if (focusable) {\n focusable[0].focus();\n }\n event.preventDefault();\n } else if (event.altKey) {\n this.overlayVisible.set(true);\n event.preventDefault();\n }\n break;\n }\n }\n\n onEscape() {\n this.overlayVisible.set(false);\n }\n\n onContentClick() {\n this.selfClick = true;\n }\n\n // onOverlayAnimationStart(event: AnimationEvent) {\n onOverlayAnimationStart(event: any) {\n switch (event.toState) {\n case 'visible':\n this.overlay = event.element;\n this.renderer.appendChild(this.document.body, this.overlay);\n ZIndexUtils.set('overlay', this.overlay, this.primeConfig.zIndex.overlay);\n DomHandler.absolutePosition(this.overlay, this.icon?.nativeElement);\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n\n this.overlayEventListener = (e: any) => {\n if (this.overlay && this.overlay.contains(e.target)) {\n this.selfClick = true;\n }\n };\n\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(this.overlayEventListener);\n break;\n\n case 'void':\n this.onOverlayHide();\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n }\n }\n\n // onOverlayAnimationEnd(event: AnimationEvent) {\n onOverlayAnimationEnd(event: any) {\n switch (event.toState) {\n case 'void':\n ZIndexUtils.clear(event.element);\n break;\n }\n }\n\n get noFilterLabel(): string {\n return this.primeConfig.getTranslation(TranslationKeys.NO_FILTER);\n }\n\n clearFilter() {\n this.initFilterConstraint(true);\n this.primeTable._filter();\n this.hideOverlay();\n }\n\n private generateMatchModeOptions() {\n let options: SelectItem[] | undefined = undefined;\n if (this.descriptor.filterType === FilterTypeEnum.String) {\n options = [\n {value: FilterMatchMode.Contains, label: this.primeConfig.getTranslation(FilterMatchMode.Contains)},\n {value: FilterMatchMode.NotContains, label: this.primeConfig.getTranslation(FilterMatchMode.NotContains)},\n {value: FilterMatchMode.Equals, label: this.primeConfig.getTranslation(FilterMatchMode.Equals)},\n {value: FilterMatchMode.NotEquals, label: this.primeConfig.getTranslation(FilterMatchMode.NotEquals)},\n {value: FilterMatchMode.StartsWith, label: this.primeConfig.getTranslation(FilterMatchMode.StartsWith)},\n {value: FilterMatchMode.EndsWith, label: this.primeConfig.getTranslation(FilterMatchMode.EndsWith)},\n {value: FilterMatchMode.Exists, label: this.primeConfig.getTranslation(FilterMatchMode.Exists)},\n {value: FilterMatchMode.DoesNotExist, label: this.primeConfig.getTranslation(FilterMatchMode.DoesNotExist)}\n ];\n } else if (this.descriptor.filterType === FilterTypeEnum.Number) {\n options = [\n {value: FilterMatchMode.Equals, label: this.primeConfig.getTranslation(FilterMatchMode.Equals)},\n {value: FilterMatchMode.NotEquals, label: this.primeConfig.getTranslation(FilterMatchMode.NotEquals)},\n {value: FilterMatchMode.LessThan, label: this.primeConfig.getTranslation(FilterMatchMode.LessThan)},\n {value: FilterMatchMode.LessThanOrEqualTo, label: this.primeConfig.getTranslation(FilterMatchMode.LessThanOrEqualTo)},\n {value: FilterMatchMode.GreaterThan, label: this.primeConfig.getTranslation(FilterMatchMode.GreaterThan)},\n {value: FilterMatchMode.GreaterThanOrEqualTo, label: this.primeConfig.getTranslation(FilterMatchMode.GreaterThanOrEqualTo)},\n {value: FilterMatchMode.Exists, label: this.primeConfig.getTranslation(FilterMatchMode.Exists)},\n {value: FilterMatchMode.DoesNotExist, label: this.primeConfig.getTranslation(FilterMatchMode.DoesNotExist)}\n ];\n } else if (this.descriptor.filterType === FilterTypeEnum.Lookup || this.descriptor.filterType === FilterTypeEnum.LookupEnum) {\n options = [\n {value: FilterMatchMode.Equals, label: this.primeConfig.getTranslation(FilterMatchMode.Equals)},\n {value: FilterMatchMode.NotEquals, label: this.primeConfig.getTranslation(FilterMatchMode.NotEquals)},\n {value: FilterMatchMode.Exists, label: this.primeConfig.getTranslation(FilterMatchMode.Exists)},\n {value: FilterMatchMode.DoesNotExist, label: this.primeConfig.getTranslation(FilterMatchMode.DoesNotExist)}\n ];\n\n if (this.lookupDescriptor?.multiselect) {\n options = [\n {value: FilterMatchMode.In, label: this.primeConfig.getTranslation(FilterMatchMode.In)},\n {value: FilterMatchMode.NotIn, label: this.primeConfig.getTranslation(FilterMatchMode.NotIn)}\n ];\n }\n } else if (this.descriptor.filterType === FilterTypeEnum.Date) {\n if (!this.descriptor.datePickerShowTime && !this.descriptor.datePickerValueNoTime && !this.dateOnlyDisabled) {\n options = [\n {value: FilterMatchMode.Equals, label: this.primeConfig.getTranslation(FilterMatchMode.Equals)},\n {value: FilterMatchMode.NotEquals, label: this.primeConfig.getTranslation(FilterMatchMode.NotEquals)},\n {value: FilterMatchMode.LessThanOrEqualTo, label: this.primeConfig.getTranslation(FilterMatchMode.LessThanOrEqualTo)},\n {value: FilterMatchMode.GreaterThanOrEqualTo, label: this.primeConfig.getTranslation(FilterMatchMode.GreaterThanOrEqualTo)},\n {value: FilterMatchMode.Between, label: this.primeConfig.getTranslation(FilterMatchMode.Between)},\n {value: FilterMatchMode.Exists, label: this.primeConfig.getTranslation(FilterMatchMode.Exists)},\n {value: FilterMatchMode.DoesNotExist, label: this.primeConfig.getTranslation(FilterMatchMode.DoesNotExist)}\n ];\n } else {\n options = [\n {value: FilterMatchMode.Equals, label: this.primeConfig.getTranslation(FilterMatchMode.Equals)},\n {value: FilterMatchMode.LessThanOrEqualTo, label: this.primeConfig.getTranslation(FilterMatchMode.LessThanOrEqualTo)},\n {value: FilterMatchMode.GreaterThanOrEqualTo, label: this.primeConfig.getTranslation(FilterMatchMode.GreaterThanOrEqualTo)},\n {value: FilterMatchMode.Between, label: this.primeConfig.getTranslation(FilterMatchMode.Between)},\n {value: FilterMatchMode.Exists, label: this.primeConfig.getTranslation(FilterMatchMode.Exists)},\n {value: FilterMatchMode.DoesNotExist, label: this.primeConfig.getTranslation(FilterMatchMode.DoesNotExist)}\n ];\n }\n }\n\n if (this.descriptor.matchModes) {\n options = this.descriptor.matchModes.map(mm => <SelectItem>{value: mm, label: this.primeConfig.getTranslation(mm)});\n }\n\n if (!options) {\n let primeMathcModeOptionByType: string[] | undefined = undefined;\n if (this.primeType === 'text') {\n primeMathcModeOptionByType = this.primeConfig.filterMatchModeOptions.text;\n } else if (this.primeType === 'numeric') {\n primeMathcModeOptionByType = this.primeConfig.filterMatchModeOptions.numeric;\n } else if (this.primeType === 'date') {\n primeMathcModeOptionByType = this.primeConfig.filterMatchModeOptions.date;\n }\n\n if (primeMathcModeOptionByType) {\n options = primeMathcModeOptionByType.map(key => ({label: this.primeConfig.getTranslation(key), value: key}));\n }\n }\n\n this.matchModes.set(options || []);\n }\n\n private getDefaultMatchMode(): string {\n let defaultMatchMode: FilterMatchModeExtendedType = FilterMatchMode.Contains;\n if (this.primeType === 'text') defaultMatchMode = FilterMatchMode.StartsWith;\n else if (this.primeType === 'numeric') defaultMatchMode = FilterMatchMode.Equals;\n else if (this.primeType === 'date') defaultMatchMode = FilterMatchMode.Equals;\n else if (this.primeType === 'lookup') defaultMatchMode = this.lookupDescriptor?.multiselect ? FilterMatchMode.In : FilterMatchMode.Equals;\n\n // overwrite type default set in descriptor\n if (this.descriptor.defaultMatchMode) {\n defaultMatchMode = this.descriptor.defaultMatchMode;\n }\n\n // check if default mode exists!\n if (this.matchModes().length > 0 && !this.matchModes().some(m => m.value === defaultMatchMode)) {\n defaultMatchMode = this.matchModes()[0].value;\n }\n\n return defaultMatchMode;\n }\n\n private findNextMenuModeItem(item: HTMLLIElement): any {\n const nextItem = <HTMLLIElement>item.nextElementSibling;\n\n if (nextItem) return DomHandler.hasClass(nextItem, 'p-column-filter-separator') ? this.findNextMenuModeItem(nextItem) : nextItem;\n else return item.parentElement?.firstElementChild;\n }\n\n private findPrevMenuModeItem(item: HTMLLIElement): any {\n const prevItem = <HTMLLIElement>item.previousElementSibling;\n\n if (prevItem) return DomHandler.hasClass(prevItem, 'p-column-filter-separator') ? this.findPrevMenuModeItem(prevItem) : prevItem;\n else return item.parentElement?.lastElementChild;\n }\n\n private isOutsideClicked(event: any): boolean {\n return !(\n this.overlay?.isSameNode(event.target) ||\n this.overlay?.contains(event.target) ||\n this.icon?.nativeElement.isSameNode(event.target) ||\n this.icon?.nativeElement.contains(event.target) ||\n DomHandler.hasClass(event.target, 'p-column-filter-add-button') ||\n DomHandler.hasClass(event.target.parentElement, 'p-column-filter-add-button') ||\n DomHandler.hasClass(event.target, 'p-column-filter-remove-button') ||\n DomHandler.hasClass(event.target.parentElement, 'p-column-filter-remove-button')\n );\n }\n\n private bindDocumentClickListener() {\n if (!this.documentClickListener) {\n const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', event => {\n if (this.overlayVisible() && !this.selfClick && this.isOutsideClicked(event)) {\n this.hideOverlay();\n }\n\n this.selfClick = false;\n });\n }\n }\n\n private unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n\n private bindDocumentResizeListener() {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this.window, 'resize', () => {\n if (this.overlayVisible() && !DomHandler.isTouchDevice()) {\n this.hideOverlay();\n }\n });\n }\n }\n\n private unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n\n private bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.icon?.nativeElement, () => {\n if (this.overlayVisible()) {\n this.hideOverlay();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n private unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n private hideOverlay() {\n this.overlayVisible.set(false);\n this.cd.markForCheck();\n }\n\n private onOverlayHide() {\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n }\n\n private updateFilterValue(value: any) {\n this.filterConstraint.set({...this.filterConstraint(), value: value});\n this.updateDtFilter();\n }\n\n private updateDtFilter() {\n this.primeTable.filters[this.primeField] = this.filterConstraint()!;\n this.primeTable._filter();\n }\n\n private initFilterConstraint(reset = false) {\n if (reset) {\n const defaultMatchMode = this.getDefaultMatchMode();\n this.primeTable.filters[this.primeField] = {value: null, matchMode: defaultMatchMode};\n }\n\n // set internal filter constraint\n const metadata = this.primeTable.filters[this.primeField];\n if (Array.isArray(metadata)) {\n this.setFilterConstraint(metadata[0]);\n } else {\n this.setFilterConstraint(metadata);\n }\n }\n\n private setFilterConstraint(metadata?: FilterMetadata) {\n let matchMode = metadata?.matchMode ?? this.getDefaultMatchMode();\n let displayValue = metadata?.value;\n let displayMatchMode = matchMode;\n\n if (this.descriptor.filterType === FilterTypeEnum.Date && (this.descriptor.datePickerShowTime || this.descriptor.datePickerValueNoTime || this.dateOnlyDisabled)) {\n if (\n matchMode === FilterMatchMode.Between &&\n Array.isArray(metadata?.value) &&\n metadata?.value.length === 2 &&\n metadata?.value.every(v => v instanceof Date || typeof v === 'string' || typeof v === 'number')\n ) {\n const startDate = DateUtil.toIsoString(metadata.value[0] as Date | string | number);\n const endDate = DateUtil.toIsoString(metadata.value[1] as Date | string | number);\n\n // 2020-11-02T11:12:12.000\n const cmpLength = this.descriptor.datePickerShowTime ? (this.descriptor.datePickerShowSeconds ? 19 : 16) : 10;\n\n if (startDate.substring(0, cmpLength) === endDate.substring(0, cmpLength)) {\n displayMatchMode = FilterMatchMode.Equals;\n displayValue = new Date(metadata.value[0]);\n }\n } else if (matchMode === FilterMatchMode.Equals && !metadata?.value) {\n matchMode = FilterMatchMode.Between;\n }\n }\n\n this.filterConstraint.set({\n matchMode,\n value: metadata?.value,\n displayMatchMode,\n displayValue: displayValue ?? null\n });\n this.primeTable.filters[this.primeField] = this.filterConstraint()!;\n }\n}\n\ninterface MngFilterMetadata extends FilterMetadata {\n /**\n * The value used for display.\n */\n displayValue?: any;\n /**\n * The match mode for display.\n */\n displayMatchMode?: string;\n}\n","<div class=\"p-column-filter p-column-filter-row\">\n @switch (primeType) {\n @case ('text') {\n <input\n type=\"text\"\n pInputText\n class=\"mng-column-filter-string-input\"\n [value]=\"filterConstraint()?.displayValue\"\n [disabled]=\"isInputDisabled()\"\n (input)=\"onTextModelChange($event)\"\n (keydown.enter)=\"onTextInputEnterKeyDown($event)\"\n [attr.placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [mngInputTrim]=\"descriptor.trimOption\"/>\n }\n @case ('numeric') {\n <p-inputNumber\n inputStyleClass=\"mng-column-filter-number-input\"\n [ngModel]=\"filterConstraint()?.displayValue\"\n (ngModelChange)=\"onNumericModelChange($event)\"\n (onKeyDown)=\"onNumericInputKeyDown($event)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits\"\n [disabled]=\"isInputDisabled()\"></p-inputNumber>\n }\n\n @case ('boolean') {\n <p-triStateCheckbox [ngModel]=\"filterConstraint()?.displayValue\" (ngModelChange)=\"onTristateModelChange($event)\"></p-triStateCheckbox>\n }\n @case ('date') {\n @if (filterConstraint()?.displayMatchMode === 'between') {\n <mng-date-range\n [ngModel]=\"filterConstraint()?.displayValue\"\n (ngModelChange)=\"dateFilter($event)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [disabled]=\"isInputDisabled()\"></mng-date-range>\n } @else {\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"filterConstraint()?.displayValue\"\n (ngModelChange)=\"dateFilter($event)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n }\n }\n @case ('lookup') {\n @if (lookupDescriptor) {\n @switch (lookupDescriptor.lookupType) {\n @case (lookupTypeAutocomplete) {\n <mng-autocomplete\n [ngModel]=\"filterConstraint()?.displayValue\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [optionsTrackProperty]=\"lookupDescriptor.optionsValueProperty\"\n [optionsValueProperty]=\"lookupDescriptor.optionsValueProperty\"\n [optionsLabelProperty]=\"lookupDescriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"lookupDescriptor.optionsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [autoClear]=\"lookupDescriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"lookupDescriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch ?? false\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [disabled]=\"isInputDisabled()\"\n (valueChange)=\"autocompleteFilter($event)\"\n [searchTrim]=\"descriptor.trimOption\">\n </mng-autocomplete>\n }\n @case (lookupTypeDropdown) {\n <mng-dropdown\n [ngModel]=\"filterConstraint()?.displayValue\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [optionsValueProperty]=\"lookupDescriptor.optionsValueProperty\"\n [optionsLabelProperty]=\"lookupDescriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"lookupDescriptor.optionsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n [disabled]=\"isInputDisabled()\"\n (valueChange)=\"dropdownFilter($event)\">\n </mng-dropdown>\n }\n }\n }\n }\n }\n\n @if (matchModes().length > 1) {\n <button\n #icon\n type=\"button\"\n class=\"p-column-filter-menu-button p-link\"\n aria-haspopup=\"true\"\n [attr.aria-expanded]=\"overlayVisible()\"\n [ngClass]=\"{'p-column-filter-menu-button-open': overlayVisible(), 'p-column-filter-menu-button-active': isFilterSet()}\"\n (click)=\"toggleMenu($event)\"\n (keydown)=\"onToggleButtonKeyDown($event)\">\n <FilterIcon [styleClass]=\"'pi-filter-icon'\" />\n </button>\n }\n <button #icon [ngClass]=\"{'p-hidden-space': !isFilterSet()}\" type=\"button\" class=\"p-column-filter-clear-button p-link\" (click)=\"clearFilter()\">\n <FilterSlashIcon />\n </button>\n @if (overlayVisible()) {\n <div\n class=\"p-column-filter-overlay p-component p-fluid\"\n (click)=\"onContentClick()\"\n [@overlayAnimation]=\"'visible'\"\n (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"\n (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\"\n (keydown.escape)=\"onEscape()\">\n <ul class=\"p-column-filter-row-items\">\n @for (matchMode of matchModes(); track matchMode; let i = $index) {\n <li\n class=\"p-column-filter-row-item\"\n (click)=\"onMatchModeChange(matchMode.value)\"\n (keydown)=\"onMatchModeKeyDown($event)\"\n (keydown.enter)=\"this.onMatchModeChange(matchMode.value)\"\n [ngClass]=\"{'p-highlight': matchMode.value === filterConstraint()?.displayMatchMode}\"\n [attr.tabindex]=\"i === 0 ? '0' : null\">\n {{ matchMode.label }}\n </li>\n }\n <li class=\"p-column-filter-separator\"></li>\n <li class=\"p-column-filter-row-item\" (click)=\"onRowClearItemClick()\" (keydown)=\"onMatchModeKeyDown($event)\" (keydown.enter)=\"onRowClearItemClick()\">\n {{ noFilterLabel }}\n </li>\n </ul>\n </div>\n }\n</div>\n","import {CurrencyPipe, DatePipe, DecimalPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, OnInit} from '@angular/core';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {MessageService} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\nimport {ColumnDescriptor} from '../../../descriptors/table';\nimport {ColumnDisplayTypeEnum} from '../../../descriptors/types';\nimport {MngComponentDirective} from '../../../directives';\nimport {JsonPathPipe, MngBooleanPipe, MngEnumPipe, MngGetterPipe, MngTemplatePipe} from '../../../pipes';\n\n@Component({\n standalone: true,\n selector: 'mng-table-column-value',\n templateUrl: './column-value.component.html',\n styleUrls: ['./column-value.component.scss'],\n imports: [TooltipModule, TranslateModule, MngBooleanPipe, MngEnumPipe, MngComponentDirective, ButtonModule, RippleModule, DecimalPipe, CurrencyPipe, DatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableColumnValueComponent<T, TT> implements OnInit {\n public readonly columnDisplayTypeString: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.String;\n public readonly columnDisplayTypeNumber: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Number;\n public readonly columnDisplayTypeCurrency: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Currency;\n public readonly columnDisplayTypeBoolean: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Boolean;\n public readonly columnDisplayTypeDate: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Date;\n public readonly columnDisplayTypeEnum: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Enum;\n public readonly columnDisplayTypeComponent: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Component;\n public readonly columnDisplayTypeHtml: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Html;\n\n @Input({required: true}) descriptor!: ColumnDescriptor<T, TT>;\n @Input({required: true}) item!: any;\n\n @HostBinding('style.max-width.px') public styleMaxWidth: number | null = null;\n @HostBinding('class') public className = 'nowrap';\n\n public currency?: string;\n\n public jsonPath = '$';\n\n public value: any;\n\n constructor(\n private elementRef: ElementRef,\n private messageService: MessageService,\n private translate: TranslateService,\n private jsonPathPipe: JsonPathPipe,\n private getterPipe: MngGetterPipe,\n private templatePipe: MngTemplatePipe\n ) {}\n\n public ngOnInit() {\n if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.Currency) {\n this.currency = this.descriptor.currencyProperty ? this.item[this.descriptor.currencyProperty] : this.descriptor.currencyCode ?? 'EUR';\n } else if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.String) {\n if (this.descriptor.isMultiline) {\n this.className += ' multiline';\n }\n }\n\n if (this.descriptor.maxWidth) {\n this.styleMaxWidth = this.descriptor.maxWidth;\n }\n\n let value = this.item?.[this.descriptor.property as keyof object];\n if (typeof this.descriptor.getter === 'function') {\n value = this.getterPipe.transform(this.item, this.descriptor.getter, value);\n }\n if (this.descriptor.template) {\n value = this.templatePipe.transform(value, this.descriptor.template);\n }\n\n this.value = value;\n }\n\n public copyToClipboard(event: Event) {\n event.stopPropagation();\n let value = this.elementRef.nativeElement.innerText.trim();\n if (this.descriptor.clipboardValueGetter) {\n value = this.descriptor.clipboardValueGetter(this.value, this.item);\n }\n navigator.clipboard.writeText(value);\n const title = this.translate.instant('mngTable.copyNotificationTitle');\n const message = this.translate.instant('mngTable.copyNotificationMessage', {value});\n this.messageService.add({severity: 'info', summary: title, detail: message});\n }\n}\n","@if (descriptor.localizationExistsProperty && !item[descriptor.localizationExistsProperty]) {\n <i class=\"pi pi-exclamation-circle\" [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n}\n@switch (descriptor.columnDisplayType) {\n @case (columnDisplayTypeString) {\n @if (descriptor.hasValueAsTooltip) {\n <span [pTooltip]=\"value\" tooltipPosition=\"left\">{{ value }}</span>\n } @else {\n {{ value }}\n }\n }\n @case (columnDisplayTypeHtml) {\n <span [innerHTML]=\"value\"></span>\n }\n @case (columnDisplayTypeNumber) {\n {{ value | number: descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeCurrency) {\n {{ value | currency: currency : descriptor.currencyDisplay : descriptor.displayFormat : descriptor.locale }}\n }\n @case (columnDisplayTypeDate) {\n {{ value | date: descriptor.displayFormat }}\n }\n @case (columnDisplayTypeBoolean) {\n @if (descriptor.booleanAsIcon) {\n <i [class]=\"value | boolean: descriptor.booleanYes : descriptor.booleanNo : true\"></i>\n } @else {\n {{ value | boolean: descriptor.booleanYes : descriptor.booleanNo | translate }}\n }\n }\n @case (columnDisplayTypeEnum) {\n {{ value | enum: descriptor.enum | translate }}\n }\n @case (columnDisplayTypeComponent) {\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: value,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n }\n}\n@if (descriptor.hasCopyToClipboard) {\n <div class=\"help-buttons\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n </div>\n}\n","import {TableLazyLoadEvent} from 'primeng/table';\n\nimport {ColumnDescriptor} from '../../../descriptors/table';\nimport {DataListParams} from '../../../models';\n\nexport class MngTableLoadEvent {\n public params?: DataListParams;\n public originalEvent?: TableLazyLoadEvent;\n}\n\nexport class MngTableCellClickEvent<T> {\n constructor(\n public readonly column: ColumnDescriptor<any, T>,\n public readonly rowItem: T,\n public readonly rowIndex: number\n ) {}\n}\n\nexport class MngTableReloadEvent {\n public resetParams = false;\n public emitEvent = false;\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {FilterDescriptor} from '../../../descriptors/filter';\nimport {FilterTypeEnum} from '../../../descriptors/types';\n\n@Pipe({\n standalone: true,\n pure: true,\n name: 'mngTableColumnFilterClass'\n})\nexport class MngTableColumnFilterClassPipe implements PipeTransform {\n transform(value: unknown, filter: FilterDescriptor<any, any> | undefined, isEnabled: boolean): string {\n const strValue = typeof value === 'string' ? value : '';\n if (isEnabled && filter?.filterType !== undefined) {\n return `${strValue} mng-column-filter-${FilterTypeEnum[filter.filterType].toLowerCase()}`;\n } else {\n return strValue;\n }\n }\n}\n","import {AsyncPipe, NgClass, NgStyle, NgTemplateOutlet} from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren,\n WritableSignal,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Params, Router} from '@angular/router';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FilterMetadata, MessageService, SortMeta} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MultiSelectChangeEvent, MultiSelectModule} from 'primeng/multiselect';\nimport {SkeletonModule} from 'primeng/skeleton';\nimport {Table, TableLazyLoadEvent, TableModule} from 'primeng/table';\nimport {TableColumnReorderEvent} from 'primeng/table/table.interface';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Observable, Subscription, isObservable, of} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {ITableDataProvider} from '../../data-providers';\nimport {FilterLookupDescriptor} from '../../descriptors/filter';\nimport {ColumnDescriptor, TableDescriptor, TableDescriptorInst, TableDynamicDescriptorInst} from '../../descriptors/table';\nimport {FilterTypeEnum, TablePaginationModeEnum, TableSizeEnum} from '../../descriptors/types';\nimport {MngComponentDirective, MngTemplateDirective} from '../../directives';\nimport {boolean$Attribute, toObservable} from '../../helpers/coercion';\nimport {DataListParams, DataListResult, FilterMatchMode} from '../../models';\nimport {MngClassMapPipe, MngI18nPropertyPipe, MngLocaleDefaultRowClassPipe} from '../../pipes';\nimport {MngCommonsService, MngLocalStorageService, MngLoggerService} from '../../services';\nimport {ViewContainer} from '../../services/view';\nimport {DataListParamsUtil, ErrorUtil, NotificationUtil} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {MngTableColumnFilterFullComponent} from './column-filter-full/column-filter-full.component';\nimport {MngTableColumnValueComponent} from './column-value/column-value.component';\nimport {MngTableCellClickEvent, MngTableLoadEvent} from './models/table.event';\nimport {ColumnWithPreferences, TableLayoutPreferences} from './models/table.interface';\nimport {MngTableColumnFilterClassPipe} from './table-column-filter-class/table-column-filter-class.pipe';\n\n@Component({\n standalone: true,\n selector: 'mng-table',\n templateUrl: './table.component.html',\n imports: [\n AsyncPipe,\n TableModule,\n TranslateModule,\n MngComponentDirective,\n MngI18nPropertyPipe,\n NgClass,\n NgStyle,\n NgTemplateOutlet,\n MngTableColumnValueComponent,\n MngClassMapPipe,\n MngLocaleDefaultRowClassPipe,\n SkeletonModule,\n MultiSelectModule,\n ButtonModule,\n TooltipModule,\n FormsModule,\n MngTableColumnFilterFullComponent,\n MngTableColumnFilterClassPipe\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n// Sorts and Filters must be string by default - Item could be anything\nexport class MngTableComponent<Item = any, Service = undefined, Sorts = any, Filters extends keyof any = any> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n public readonly cmpTypeName = 'MngTableComponent';\n\n private readonly logger = inject(MngLoggerService).create(this.cmpTypeName);\n private readonly injector = inject(Injector);\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly mngCommonsService = inject(MngCommonsService);\n private readonly localStorageService = inject(MngLocalStorageService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n private readonly messageService = inject(MessageService);\n\n // metadata input\n @Input({required: true, alias: 'descriptor'}) public descriptorInput!: TableDescriptorInst<Item, Sorts, Filters>;\n\n // data source inputs\n @Input({transform: (value: unknown) => (value == null ? undefined : isObservable(value) ? (value as Observable<Item[]>) : of(value as Item[]))}) public items?: Observable<\n Array<Item>\n >;\n @Input({\n transform: (value: unknown) => (value == null ? undefined : isObservable(value) ? (value as Observable<DataListResult<Item>>) : of(value as DataListResult<Item>))\n })\n public result?: Observable<DataListResult<Item> | undefined>;\n @Input({alias: 'loading', transform: boolean$Attribute}) public loadingInput?: Observable<boolean>;\n @Input() public dataProvider?: ITableDataProvider<Item, Service, Sorts, Filters>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode: 'single' | 'multiple' = 'multiple';\n @Input() public selectionEnabled = false;\n\n // styling\n @Input() public columnLastMinWidth?: number;\n\n // component inputs\n @Input() public captionComponent?: Type<any>;\n @Input() public columnCustomLastComponent?: Type<any>;\n @Input('globalFilterFields') public globalFilterFieldsInput?: string[];\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<MngTableLoadEvent>();\n @Output('cellClick') public cellClickEventEmitter = new EventEmitter<MngTableCellClickEvent<Item>>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<Item>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnCustomLastComponentInstance') public columnCustomLastCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChildren(MngComponentDirective) public components!: QueryList<MngComponentDirective<any>>;\n @ViewChild(Table) public primeTable!: Table;\n\n // templates\n public captionTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n public columnCustomLastTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n public footerTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n\n // data provider and items\n private useDataProvider = false;\n public isLazy = signal(false);\n public isPagination = signal(false);\n public useQueryParamsInitialized = signal(false);\n public data: WritableSignal<Item[]> = signal([]);\n public count = signal(0);\n public loading = signal(true);\n\n // pagination, sort and filters\n public rowsPerPageOptions = signal([25, 50, 100]);\n public rows = signal(this.rowsPerPageOptions()[0]);\n public offset = signal(0);\n public sortMeta: WritableSignal<SortMeta[] | null> = signal(null);\n public filterMeta: WritableSignal<Record<string, FilterMetadata>> = signal({});\n public globalFilterFields: WritableSignal<string[]> = signal([]);\n\n // infinite scroll\n public infiniteScroll = signal(false);\n\n // visual\n public className = signal('');\n public tableFullHeightOffset: WritableSignal<number | undefined> = signal(undefined);\n public rowHeight: WritableSignal<number | undefined> = signal(undefined);\n\n // data provider\n private dataProviderService: any = null;\n private dataProviderLatestLazyLoadEvent?: TableLazyLoadEvent;\n private latestLazyLoadEventVersion = 0;\n private latestParamsWithDefaults?: DataListParams;\n private latestParamsWithDefaultsVersion = 0;\n private dataProviderSubscription?: Subscription;\n\n // descriptors\n public descriptor: WritableSignal<TableDescriptorInst<any, any, any>> = signal(TableDescriptor.create<string, string, string>());\n public columns: WritableSignal<ColumnWithPreferences[]> = signal([]);\n public visibleColumns = computed(() => this.columns().filter(col => col.isVisible));\n\n // filter, sort\n public hasColumnFilters = computed(() => this.filterDescriptors().length > 0);\n private filterDescriptors = computed(() => this.descriptor().filters);\n private defaultParams = computed(() => {\n const params: DataListParams = {\n offset: 0,\n limit: this.rowsPerPageOptions()[0],\n sort: this.descriptor()\n .sorts.filter(s => s.defaultIsEnabled)\n .map(s => ({\n property: s.property,\n ascending: s.defaultIsAscending\n })),\n filters: {}\n };\n\n this.filterDescriptors()\n .filter(d => d.hasDefaultValue)\n .forEach(f => {\n let matchMode: string | undefined = f.defaultMatchMode;\n if (!matchMode) {\n switch (f.filterType) {\n case FilterTypeEnum.String:\n matchMode = FilterMatchMode.Contains;\n break;\n case FilterTypeEnum.Lookup:\n case FilterTypeEnum.LookupEnum: {\n const lookupFilter = f as FilterLookupDescriptor<any, Item>;\n if (lookupFilter.multiselect) {\n matchMode = FilterMatchMode.In;\n }\n break;\n }\n default:\n break;\n }\n }\n if (!matchMode) {\n matchMode = FilterMatchMode.Equals;\n }\n\n if (f.matchModes && !f.matchModes?.includes(matchMode)) {\n matchMode = f.matchModes[0];\n }\n\n let value: any | any[] | undefined = undefined;\n if (Array.isArray(value)) {\n value = [...value];\n } else {\n value = f.defaultValue;\n }\n\n const property = f.property;\n params.filters![property] = {\n value: value,\n matchMode: matchMode\n };\n });\n\n return params;\n });\n private isFilterChanged = false;\n private isSortChanged = false;\n\n public anyColumnVisible = computed(() => this.visibleColumns().length > 0);\n public hasCustomLastColumn = signal(false);\n public hasLastColumn = computed(() => this.hasCustomLastColumn() || this.areColumnsToggleable() || this.areColumnsReorderable());\n\n // layout prefs\n public areColumnsReorderable = computed(() => this.descriptor().columns.some(value => value.isReorderable));\n public areColumnsToggleable = computed(() => this.descriptor().columns.some(value => value.isToggleable));\n private layoutPreferences: TableLayoutPreferences = {columnWidths: {}};\n private localstorageKey = '';\n\n // other\n private routerIsNavigationOutsideInProgress = false;\n\n public ngOnInit() {\n this.setMainAndRelatedDescriptors(this.descriptorInput);\n\n const descriptor = this.descriptor();\n\n // map row settings\n if (Array.isArray(descriptor.rowsPerPageOptions) && descriptor.rowsPerPageOptions.length > 0) {\n this.rowsPerPageOptions.set(descriptor.rowsPerPageOptions);\n }\n if (descriptor.defaultNumRows) {\n this.rows.set(this.rowsPerPageOptions().includes(descriptor.defaultNumRows) ? descriptor.defaultNumRows : this.rowsPerPageOptions()[0]);\n }\n\n // other\n this.hasCustomLastColumn.set(this.columnCustomLastComponent !== undefined || this.columnCustomLastTemplate() !== undefined);\n\n // define all styles\n let className = descriptor.className ?? '';\n\n switch (descriptor.size) {\n case TableSizeEnum.Small:\n className += ' p-datatable-sm';\n break;\n case TableSizeEnum.Large:\n className += ' p-datatable-lg';\n break;\n }\n if (descriptor.hasGridlines) {\n className += ' p-datatable-gridlines';\n }\n\n this.className.set(className ?? '');\n\n // check if infinite scroll\n let paginationMode = TablePaginationModeEnum.None;\n if (typeof descriptor.paginationMode !== 'undefined') {\n // descriptor choice is the most strong - if defined, use this value\n paginationMode = descriptor.paginationMode;\n } else if (typeof this.dataProvider !== 'undefined') {\n // when data provider is used, use pagination\n paginationMode = TablePaginationModeEnum.Pagination;\n }\n\n if (paginationMode === TablePaginationModeEnum.InfiniteScroll) {\n this.infiniteScroll.set(true);\n this.tableFullHeightOffset.set(descriptor?.tableFullHeightOffset ?? 315);\n this.rowHeight.set(descriptor?.rowHeight ?? 45);\n this.useQueryParams = false;\n } else if (paginationMode === TablePaginationModeEnum.Pagination) {\n this.isPagination.set(true);\n }\n // check if data provider is supplied, if is, use it primarily\n if (this.dataProvider) {\n // map subjects to observables and initiate data\n this.useDataProvider = true;\n this.isLazy.set(this.dataProvider.isLazy);\n\n // inject service\n if (this.dataProvider.serviceType) {\n this.dataProviderService = this.injector.get<any>(this.dataProvider.serviceType);\n }\n\n this.dataProvider.getAllReload$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: () => {\n this.reload();\n }\n });\n } else {\n // if query result is provided, use it as secondary source or else try to use items\n if (this.result) {\n this.result.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(res => {\n this.data.set(res?.data ?? []);\n this.count.set(res?.totalCount ?? 0);\n this.loading.set(false);\n });\n } else if (this.items) {\n this.items.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(qr => {\n this.data.set(qr);\n this.count.set(qr.length);\n this.loading.set(false);\n });\n }\n if (this.loadingInput) {\n this.loadingInput.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(res => this.loading.set(res));\n }\n }\n\n this.initializeDataLoadingTriggers();\n\n this.viewContainer\n ?.getTableReload$()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(e => this.reload(e.emitEvent, e.resetParams));\n }\n\n public ngAfterContentInit() {\n this.templates.forEach(template => {\n switch (template.getType()) {\n case 'caption':\n this.captionTemplate.set(template.template);\n break;\n case 'columnCustomLast':\n this.columnCustomLastTemplate.set(template.template);\n this.hasCustomLastColumn.set(true);\n break;\n case 'footer':\n this.footerTemplate.set(template.template);\n break;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && !changes['items'].firstChange && Array.isArray(changes['items'].currentValue)) {\n this.data.set(changes['items'].currentValue);\n this.count.set(changes['items'].currentValue.length);\n }\n\n if (changes['globalFilterFieldsInput'] && !changes['globalFilterFieldsInput'].firstChange) {\n this.globalFilterFields.set(changes['globalFilterFieldsInput'].currentValue ?? this.columns().map(c => c.descriptor.property));\n }\n }\n\n public ngOnDestroy() {\n this.dataProviderSubscription?.unsubscribe();\n }\n\n public reload(emitEvent = false, resetParams = false) {\n const paramsWithDefaults: DataListParams =\n resetParams || !this.latestParamsWithDefaults ? this.defaultParams() : DataListParamsUtil.mergeWithDefaults(this.latestParamsWithDefaults, this.defaultParams());\n this.loadTableWithDataProvider(paramsWithDefaults, emitEvent);\n }\n\n public onTableLazyLoad(event: TableLazyLoadEvent) {\n this.dataProviderLatestLazyLoadEvent = event;\n this.latestLazyLoadEventVersion++;\n\n const params = DataListParamsUtil.fromPrimeTableLoad(event);\n\n if (this.useQueryParams) {\n if (!this.routerIsNavigationOutsideInProgress) {\n // this check is necessary: from some reason, primeNG commits one last lazy load event whenever any angular router navigation occurs\n this.router.navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: DataListParamsUtil.toUrlQueryParams(params, this.defaultParams())\n });\n }\n } else {\n this.loadTableWithDataProvider(DataListParamsUtil.mergeWithDefaults(params, this.defaultParams()));\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableSort(event: any) {\n this.isSortChanged = true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableFilter(event: any) {\n this.isFilterChanged = true;\n }\n\n public onCellClick(event: Event, col: ColumnDescriptor<any, Item>, item: Item, idx: number) {\n const mngEvent = new MngTableCellClickEvent<Item>(col, item, idx);\n this.cellClickEventEmitter.next(mngEvent);\n }\n\n public onSelectionChange(event: Array<Item>) {\n this.selectionChangeEventEmitter.emit(event);\n }\n\n /**\n * Method is called on column resize\n * @param element event's element\n */\n public onTableColumnResize({element}: any): void {\n const fieldId: string = element.id;\n const width: number = element.offsetWidth;\n\n const col = this.columns().find(el => el.descriptor.property === fieldId);\n if (col) col.width = width;\n if (!this.layoutPreferences.columnWidths) this.layoutPreferences.columnWidths = {};\n\n this.layoutPreferences.columnWidths[fieldId] = width;\n this.saveLayoutPreferences();\n }\n\n private loadTableWithDataProvider(paramsWithDefaults: DataListParams, emitEvent = true) {\n if (!this.useDataProvider || !this.dataProvider) {\n return;\n }\n\n this.dataProviderSubscription?.unsubscribe();\n this.loading.set(true);\n\n this.latestParamsWithDefaults = paramsWithDefaults;\n this.latestParamsWithDefaultsVersion++;\n\n this.dataProviderSubscription = toObservable(\n this.dataProvider.getAll(\n paramsWithDefaults as DataListParams<Sorts, Filters>,\n this.dataProviderService,\n this.descriptor().isLocalized ? this.mngCommonsService.appDataLanguage ?? undefined : undefined\n )\n ).subscribe({\n next: res => {\n if (this.descriptorInput instanceof TableDynamicDescriptorInst) {\n this.setMainAndRelatedDescriptors(this.descriptorInput.toTableDescriptorFromData(res));\n }\n\n if (this.infiniteScroll()) {\n let items = this.data();\n if (this.isFilterChanged || this.isSortChanged) {\n items = [];\n }\n items.splice(paramsWithDefaults!.offset ?? 0, paramsWithDefaults!.limit ?? this.rows(), ...(res?.data ?? []));\n this.data.set(items);\n } else {\n this.data.set(res?.data ?? []);\n }\n\n this.count.set(res?.totalCount ?? 0); // count is not really important here\n\n this.isFilterChanged = false;\n this.isSortChanged = false;\n this.loading.set(false);\n },\n error: err => {\n NotificationUtil.tableNotificationError(this.translate, this.descriptor(), err, this.messageService);\n this.data.set([]);\n this.count.set(0);\n this.loading.set(false);\n\n const mngError = ErrorUtil.fromSubscribeError(err, 'MngTableComponentError', {\n queryParam: paramsWithDefaults\n });\n this.logger.log(mngError, ErrorUtil.getErrorLogLevel(mngError));\n }\n });\n\n if (emitEvent) {\n const mngEvent = new MngTableLoadEvent();\n mngEvent.originalEvent = this.dataProviderLatestLazyLoadEvent;\n mngEvent.params = paramsWithDefaults;\n this.loadEventEmitter.next(mngEvent);\n }\n }\n\n private loadTableFromRouteUpdate(urlParams: Params) {\n const paramsWithDefaults = DataListParamsUtil.mergeWithDefaults(DataListParamsUtil.fromUrlQueryParams(urlParams), this.defaultParams());\n if (this.latestLazyLoadEventVersion < this.latestParamsWithDefaultsVersion + 1) {\n // update only if new version from query params will be higher\n this.updatePrimeSortAndFilter(paramsWithDefaults);\n }\n this.useQueryParamsInitialized.set(true);\n this.loadTableWithDataProvider(paramsWithDefaults);\n }\n\n private setMainAndRelatedDescriptors(descriptor: TableDescriptorInst<any, any, any>) {\n if (descriptor instanceof TableDynamicDescriptorInst) {\n this.descriptor.set(descriptor);\n this.columns.set([]);\n return;\n }\n\n // get layout preferences if they exist\n if (descriptor.model.typeName) {\n this.localstorageKey = TableviewUtil.generateTableLayoutPrefsKey(descriptor.model.typeName, this.router.url, descriptor.identifier);\n const preferences = this.localStorageService.getItem<TableLayoutPreferences>(this.cmpTypeName, this.localstorageKey);\n if (preferences && typeof preferences === 'object') {\n if (preferences.columnWidths) {\n this.layoutPreferences.columnWidths = preferences.columnWidths as Record<string, number>;\n }\n if (preferences.columnOrder && Array.isArray(preferences.columnOrder) && preferences.columnOrder.every((el: any) => typeof el === 'string')) {\n this.layoutPreferences.columnOrder = preferences.columnOrder;\n }\n if (preferences.columnVisibility && Array.isArray(preferences.columnVisibility) && preferences.columnVisibility.every((el: any) => typeof el === 'string')) {\n this.layoutPreferences.columnVisibility = preferences.columnVisibility;\n }\n }\n } else {\n this.localstorageKey = '';\n this.layoutPreferences = {columnWidths: {}};\n }\n\n // initialize columns with additional properties\n const timestamp = new Date().getTime();\n let columns: ColumnWithPreferences[] = descriptor.columns.map(col => ({\n id: `${col.property}-${timestamp}`,\n descriptor: col,\n filter: descriptor.filters.find(f => f.showOnColumn === col.property),\n sort: descriptor.sorts.find(f => f.showOnColumn === col.property),\n disabled: !col.isToggleable,\n isVisible: this.layoutPreferences.columnVisibility ? this.layoutPreferences.columnVisibility.includes(col.property) : col.isVisible,\n width: this.layoutPreferences.columnWidths?.[col.property]\n }));\n\n if (this.layoutPreferences.columnOrder) {\n for (let i = 0; i < this.layoutPreferences.columnOrder.length; i++) {\n const colName = this.layoutPreferences.columnOrder[i];\n const colWithPrefs = columns.find(el => el.descriptor.property === colName);\n if (colWithPrefs) {\n colWithPrefs.orderIdx = i;\n }\n }\n }\n\n columns = columns.sort((a, b) => (a.orderIdx !== undefined && b.orderIdx !== undefined ? a.orderIdx - b.orderIdx : 0));\n\n this.descriptor.set(descriptor);\n this.columns.set(columns);\n this.globalFilterFields.set(this.globalFilterFieldsInput ?? this.columns().map(c => c.descriptor.property));\n }\n\n private updatePrimeSortAndFilter(paramsWithDefaults: DataListParams) {\n this.sortMeta.set(this.createSortMeta(paramsWithDefaults));\n this.filterMeta.set(this.createFilterMeta(paramsWithDefaults));\n this.rows.set(paramsWithDefaults?.limit ?? this.rows());\n this.offset.set(paramsWithDefaults?.offset ?? 0);\n }\n\n private createFilterMeta(paramsWithDefaults?: DataListParams) {\n const primeFilterMeta: {[s: string]: FilterMetadata} = {};\n // if any filter is present, no default filters should be applied!\n\n if (paramsWithDefaults?.filters) {\n Object.entries(paramsWithDefaults.filters).forEach(([key, value]) => {\n primeFilterMeta[key] = {\n value: value.value,\n matchMode: value.matchMode\n };\n });\n }\n\n return primeFilterMeta;\n }\n\n private createSortMeta(paramsWithDefaults?: DataListParams): SortMeta[] | null {\n if (paramsWithDefaults?.sort !== undefined && Array.isArray(paramsWithDefaults?.sort) && paramsWithDefaults?.sort.length > 0) {\n return paramsWithDefaults?.sort.map(\n s =>\n <SortMeta>{\n field: s.property,\n order: s.ascending ? 1 : -1\n }\n );\n }\n\n return null;\n }\n\n private initializeDataLoadingTriggers() {\n if (this.useQueryParams) {\n // trigger table loads from route updates\n this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(qp => {\n this.loadTableFromRouteUpdate(qp);\n });\n this.router.events\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter(\n e =>\n (e instanceof NavigationStart && e.url.split('?')[0].split('#')[0] !== this.router.url.split('?')[0].split('#')[0]) ||\n e instanceof NavigationEnd ||\n e instanceof NavigationCancel ||\n e instanceof NavigationError\n )\n )\n .subscribe(e => {\n this.routerIsNavigationOutsideInProgress = e instanceof NavigationStart;\n });\n } else {\n // load data immediately by creating default sorts and filters (primeng will trigger onLazyLoad event on sort&filter metadata change)\n const defaultSort = this.createSortMeta();\n if (!defaultSort || defaultSort.length > 0) {\n this.sortMeta.set(defaultSort);\n }\n\n const defaultFilter = this.createFilterMeta();\n if (defaultFilter) {\n this.filterMeta.set(defaultFilter);\n }\n }\n }\n\n public onColumnToggle(event: MultiSelectChangeEvent) {\n const timestamp = new Date().getTime();\n const columns = [...this.columns()];\n for (const col of columns) {\n const isVisible = event.value.includes(col);\n if (isVisible !== col.isVisible) {\n col.isVisible = isVisible;\n col.id = `${col.descriptor.property}-${timestamp}`;\n }\n }\n this.columns.set(columns);\n this.layoutPreferences.columnVisibility = this.visibleColumns().map(el => el.descriptor.property);\n this.saveLayoutPreferences();\n }\n\n public onColumnToggleAll() {\n const timestamp = new Date().getTime();\n const columns = [...this.columns()];\n const isVisible = !columns.some(c => c.isVisible);\n for (const col of columns) {\n if (isVisible !== col.isVisible) {\n col.isVisible = isVisible;\n col.id = `${col.descriptor.property}-${timestamp}`;\n }\n }\n this.columns.set(columns);\n this.layoutPreferences.columnVisibility = this.visibleColumns().map(el => el.descriptor.property);\n this.saveLayoutPreferences();\n }\n\n public onColumnReorder(event: TableColumnReorderEvent) {\n if (event.dropIndex !== undefined && event.dropIndex >= 0 && event.dragIndex !== undefined && event.dragIndex >= 0 && event.dropIndex !== event.dragIndex) {\n const eventDropIndex = event.dropIndex;\n const eventDragIndex = event.dragIndex;\n const prevVisibleColumns = this.columns().filter(el => el.isVisible);\n const colAtDrop = prevVisibleColumns[eventDropIndex];\n const colAtDrag = prevVisibleColumns[eventDragIndex];\n const colAtDropIndex = this.columns().findIndex(el => el.id === colAtDrop.id);\n const colAtDragIndex = this.columns().findIndex(el => el.id === colAtDrag.id);\n\n if (colAtDropIndex > -1 && colAtDragIndex > -1) {\n let columns = [...this.columns()];\n columns.splice(colAtDragIndex, 1);\n const dropIndex = columns.findIndex(el => el.id === colAtDrop.id) + (eventDropIndex > eventDragIndex ? 1 : 0);\n columns = [...columns.slice(0, dropIndex), colAtDrag, ...columns.slice(dropIndex)];\n const timestamp = new Date().getTime();\n for (let i = Math.min(eventDropIndex, eventDragIndex); i < columns.length; i++) {\n columns[i].id = `${columns[i].descriptor.property}-${timestamp}`;\n }\n this.columns.set(columns);\n this.layoutPreferences.columnOrder = columns.map(el => el.descriptor.property);\n this.saveLayoutPreferences();\n }\n }\n }\n\n private saveLayoutPreferences() {\n if (this.descriptor().model.typeName) {\n this.localStorageService.setItem(this.cmpTypeName, this.localstorageKey, this.layoutPreferences);\n }\n }\n\n /**\n * Reset column order and column visibility to default settings\n */\n public resetDefaultLayout() {\n const timestamp = new Date().getTime();\n const columns = this.descriptor().columns.map(col => ({id: `${col.property}-${timestamp}`, descriptor: col, disabled: !col.isToggleable, isVisible: col.isVisible}));\n this.columns.set(columns);\n if (this.descriptor().model.typeName) {\n this.localStorageService.removeItem(this.cmpTypeName, this.localstorageKey);\n }\n\n this.layoutPreferences = {};\n }\n}\n","<div [style.height]=\"tableFullHeightOffset() ? 'calc(100vh - ' + tableFullHeightOffset() + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n @if (!useQueryParams || useQueryParamsInitialized()) {\n <p-table\n [value]=\"data()\"\n [dataKey]=\"descriptor().trackProperty\"\n [lazy]=\"isLazy()\"\n [loading]=\"loading()\"\n [paginator]=\"isPagination() && !infiniteScroll()\"\n [rows]=\"infiniteScroll() ? 20 : rows()\"\n [first]=\"infiniteScroll() ? 0 : offset()\"\n [totalRecords]=\"count()\"\n [rowsPerPageOptions]=\"infiniteScroll() ? undefined : rowsPerPageOptions()\"\n [showCurrentPageReport]=\"!infiniteScroll()\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"sortMeta()\"\n [filters]=\"filterMeta()\"\n [globalFilterFields]=\"globalFilterFields()\"\n sortMode=\"multiple\"\n [selection]=\"[]\"\n (selectionChange)=\"onSelectionChange($event)\"\n [selectionMode]=\"selectionEnabled ? selectionMode : null\"\n [scrollable]=\"true\"\n [virtualScroll]=\"infiniteScroll()\"\n [virtualScrollItemSize]=\"rowHeight()\"\n scrollHeight=\"flex\"\n [rowHover]=\"descriptor().hasHover\"\n [styleClass]=\"className()\"\n [resizableColumns]=\"descriptor().hasResizableColumns\"\n [columnResizeMode]=\"descriptor().columnResizeMode ?? 'expand'\"\n [reorderableColumns]=\"areColumnsReorderable()\"\n paginatorDropdownAppendTo=\"body\"\n [columns]=\"visibleColumns()\"\n (onColResize)=\"onTableColumnResize($event)\"\n (onColReorder)=\"onColumnReorder($event)\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\">\n @if (captionTemplate() || captionComponent || descriptor().title) {\n <ng-template pTemplate=\"caption\">\n @if (captionTemplate()) {\n <ng-container *ngTemplateOutlet=\"captionTemplate()!\"></ng-container>\n } @else if (captionComponent) {\n <div [mngComponent]=\"captionComponent\" (instanceCreated)=\"captionCmpInstEventEmitter.next($event)\"></div>\n } @else {\n <h5 class=\"p-0 m-0\">{{ descriptor().title }}</h5>\n }\n </ng-template>\n }\n <ng-template pTemplate=\"header\">\n @if (!descriptor().hideHeader) {\n <tr class=\"mng-table-header\" [class]=\"descriptor().headerClassName\">\n @if (selectionEnabled) {\n @if (selectionMode === 'multiple') {\n <th style=\"min-width: 36px\" pFrozenColumn [frozen]=\"descriptor().selectionColumnFrozen ?? true\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n } @else {\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th style=\"min-width: 36px\" pFrozenColumn [frozen]=\"descriptor().selectionColumnFrozen ?? true\"></th>\n }\n }\n @for (col of visibleColumns(); track col.id) {\n <ng-template #sortableColumnTHTemplate>\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.descriptor.title ?? (col.descriptor.property | i18nProperty: descriptor().model) | translate }}\n <p-sortIcon [field]=\"col.descriptor.property\"></p-sortIcon>\n </div>\n </ng-template>\n <ng-template #nonSortableColumnTHTemplate>\n {{ col.descriptor.title ?? (col.descriptor.property | i18nProperty: descriptor().model) | translate }}\n </ng-template>\n @if (col.descriptor.isReorderable) {\n <th\n pResizableColumn\n pReorderableColumn\n [id]=\"col.descriptor.property\"\n [pSortableColumn]=\"col.sort?.property\"\n [pSortableColumnDisabled]=\"!col.sort\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.width ? null : col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\"\n [class]=\"col.descriptor.headerClassName | mngTableColumnFilterClass: col.filter : hasColumnFilters() && !col.width\">\n <ng-container *ngTemplateOutlet=\"col.sort ? sortableColumnTHTemplate : nonSortableColumnTHTemplate\"></ng-container>\n </th>\n } @else {\n <th\n pResizableColumn\n [id]=\"col.descriptor.property\"\n [pSortableColumn]=\"col.sort?.property\"\n [pSortableColumnDisabled]=\"!col.sort\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.width ? null : col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\"\n [class]=\"col.descriptor.headerClassName | mngTableColumnFilterClass: col.filter : hasColumnFilters() && !col.width\">\n <ng-container *ngTemplateOutlet=\"col.sort ? sortableColumnTHTemplate : nonSortableColumnTHTemplate\"></ng-container>\n </th>\n }\n }\n @if (hasLastColumn()) {\n <th\n [style.min-width.px]=\"columnLastMinWidth\"\n pFrozenColumn\n [frozen]=\"descriptor().actionColumnFrozen ?? areColumnsToggleable()\"\n alignFrozen=\"right\"\n class=\"column-custom-last text-right\">\n @if (descriptor().hasResizableColumns) {\n <p-multiSelect\n #columnToggleMultiselect\n styleClass=\"p-button-primary mng-table-columns-multiselect\"\n appendTo=\"body\"\n dataKey=\"id\"\n tooltipPosition=\"left\"\n placeholder=\"\"\n dropdownIcon=\"pi pi-sliders-h\"\n [filter]=\"false\"\n [options]=\"columns()\"\n [ngModel]=\"visibleColumns()\"\n [pTooltip]=\"'mngTable.adjustTable' | translate\"\n [displaySelectedLabel]=\"false\"\n (onChange)=\"onColumnToggle($event)\">\n <ng-template pTemplate=\"filter\">\n <div class=\"p-checkbox p-component ml-1\" [ngClass]=\"{'p-checkbox-disabled': !areColumnsToggleable}\">\n <div class=\"p-hidden-accessible\">\n <input\n type=\"checkbox\"\n readonly=\"readonly\"\n [checked]=\"columnToggleMultiselect.allSelected\"\n (focus)=\"columnToggleMultiselect.onHeaderCheckboxFocus()\"\n (blur)=\"columnToggleMultiselect.onHeaderCheckboxBlur()\"\n (keydown.space)=\"columnToggleMultiselect.onToggleAll($event)\"\n [disabled]=\"!areColumnsToggleable\" />\n </div>\n <div\n class=\"p-checkbox-box\"\n role=\"checkbox\"\n [attr.aria-checked]=\"columnToggleMultiselect.allSelected\"\n [ngClass]=\"{\n 'p-highlight': anyColumnVisible()\n }\"\n (click)=\"onColumnToggleAll()\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': anyColumnVisible()}\"></span>\n </div>\n </div>\n <p-button\n icon=\"pi pi-replay\"\n styleClass=\"p-button-secondary\"\n [pTooltip]=\"'mngTable.resetLayout' | translate\"\n tooltipPosition=\"left\"\n (click)=\"resetDefaultLayout()\"></p-button>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n {{ item.descriptor.title ?? (item.descriptor.property | i18nProperty: descriptor().model) | translate }}\n </ng-template>\n </p-multiSelect>\n }\n </th>\n }\n </tr>\n }\n @if (hasColumnFilters()) {\n <tr class=\"mng-column-filter-row\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n @if (selectionEnabled) {\n <th style=\"min-width: 36px\" pFrozenColumn [frozen]=\"descriptor().selectionColumnFrozen ?? true\"></th>\n }\n @for (col of visibleColumns(); track col.id) {\n <th\n [class]=\"col.filter?.columnClassName | mngTableColumnFilterClass: col.filter : hasColumnFilters() && !col.width\"\n [style.width.px]=\"col.width\"\n [style.width.%]=\"col.width ? null : col.filter?.columnWidth ?? col.descriptor.width ?? null\"\n [style.min-width.px]=\"col.width ? null : col.filter?.columnMinWidth ?? col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\">\n @if (col.filter) {\n <mng-table-column-filter-full [descriptor]=\"col.filter\"></mng-table-column-filter-full>\n }\n </th>\n }\n @if (hasLastColumn()) {\n <th class=\"column-custom-last\" [style.min-width.px]=\"columnLastMinWidth\"></th>\n }\n </tr>\n }\n </ng-template>\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr\n [style.height.px]=\"rowHeight\"\n [ngClass]=\"descriptor().rowClassName | mngClassMapPipe: descriptor().rowClassNameMapFn : item | mngLocaleDefaultRowClass: descriptor() : item\">\n @if (selectionEnabled) {\n @if (selectionMode === 'multiple') {\n <td style=\"min-width: 36px\" pFrozenColumn [frozen]=\"descriptor().selectionColumnFrozen ?? true\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n } @else {\n <td style=\"min-width: 36px\" pFrozenColumn [frozen]=\"descriptor().selectionColumnFrozen ?? true\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n }\n }\n @for (col of visibleColumns(); track col.id) {\n <td\n (click)=\"onCellClick($event, col.descriptor, item, idx)\"\n [class]=\"\n col.descriptor.className\n | mngClassMapPipe: col.descriptor.classNameMapFn : item\n | mngTableColumnFilterClass: col.filter : hasColumnFilters() && !col.width\n \"\n [class.clickable]=\"cellClickEventEmitter.observed\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.width ? null : col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\">\n <span class=\"p-column-title\">{{ col.descriptor.title ?? (col.descriptor.property | i18nProperty: descriptor().model) | translate }}</span>\n <mng-table-column-value [descriptor]=\"col.descriptor\" [item]=\"item\"></mng-table-column-value>\n </td>\n }\n @if (hasLastColumn()) {\n <td\n class=\"column-custom-last justify-content-end text-right\"\n [style.min-width.px]=\"columnLastMinWidth\"\n pFrozenColumn\n [frozen]=\"descriptor().actionColumnFrozen ?? true\"\n alignFrozen=\"right\">\n @if (columnCustomLastTemplate()) {\n <ng-container *ngTemplateOutlet=\"columnCustomLastTemplate()!; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n } @else if (columnCustomLastComponent) {\n <div [mngComponent]=\"columnCustomLastComponent\" (instanceCreated)=\"columnCustomLastCmpInstEventEmitter.next($event)\"></div>\n }\n </td>\n }\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <div class=\"flex flex-column align-items-center\">\n @if (descriptor().loadingIcon) {\n <i [class]=\"'text-white text-4xl pi-spin ' + descriptor().loadingIcon\"></i>\n }\n @if (descriptor().loadingText) {\n <div class=\"text text-white text-lg font-semibold\" [ngClass]=\"{'mt-3': descriptor().loadingIcon}\">\n {{ descriptor().loadingText ?? '' | translate }}\n </div>\n }\n </div>\n </ng-template>\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"visibleColumns().length + (hasLastColumn() ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"visibleColumns().length + (hasLastColumn() ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n @if (footerTemplate()) {\n <ng-template pTemplate=\"summary\">\n <ng-container [ngTemplateOutlet]=\"footerTemplate()!\" [ngTemplateOutletContext]=\"{queryResult: result}\"></ng-container>\n </ng-template>\n }\n </p-table>\n }\n</div>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren,\n WritableSignal,\n inject,\n signal\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {Observable, isObservable, of} from 'rxjs';\n\nimport {ITableDataProvider} from '../../../data-providers';\nimport {ActionDescriptorInst} from '../../../descriptors/action';\nimport {TableDescriptorInst} from '../../../descriptors/table';\nimport {ActionPositionEnum} from '../../../descriptors/types';\nimport {MngComponentDirective, MngTemplateDirective} from '../../../directives';\nimport {boolean$Attribute} from '../../../helpers/coercion';\nimport {DataListResult} from '../../../models';\nimport {MngActionExecutorService, provideActionExecutor} from '../../../services/action';\nimport {StylesUtil} from '../../../styles';\nimport {ActionInstance, ActionParameters} from '../../action/models';\nimport {MngTableCellClickEvent, MngTableLoadEvent} from '../../table/models/table.event';\nimport {MngTableComponent} from '../../table/table.component';\nimport {MngActionComponent} from '../action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [MngTableComponent, MngActionComponent, MngTemplateDirective, NgTemplateOutlet],\n providers: [provideActionExecutor()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngActionTableComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit, AfterContentInit {\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(MngActionExecutorService);\n\n // metadata input\n @Input({required: true}) public descriptor!: TableDescriptorInst<Item, Sorts, Filters>;\n\n // data source inputs\n @Input() public items?: Observable<Array<Item>> | Array<Item>;\n @Input({transform: (value: unknown) => (isObservable(value) ? (value as Observable<DataListResult<Item>>) : of(value as DataListResult<Item>))})\n public result?: Observable<DataListResult<Item>>;\n @Input({transform: boolean$Attribute}) public loading?: Observable<boolean>;\n @Input() public dataProvider?: ITableDataProvider<Item, Service, Sorts, Filters>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode: 'single' | 'multiple' = 'multiple';\n @Input() public selectionEnabled = false;\n @Input() public globalFilterFields?: string[];\n\n // actions\n @Input() public actions: Array<ActionDescriptorInst<any>> = []; // can be anything\n\n // component inputs\n @Input() public captionComponent?: Type<any>;\n @Input() public columnActionComponent?: Type<any>;\n @Input() public columnActionMinWidth?: number;\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<MngTableLoadEvent>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<Item>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnActionComponentInstance') public columnActionCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChildren(MngComponentDirective) public components!: QueryList<MngComponentDirective<any>>;\n @ViewChild(MngTableComponent) public table!: MngTableComponent;\n\n // templates\n public captionTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n public footerTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n\n // actions\n public rowClickActions: WritableSignal<ActionDescriptorInst<Item>[]> = signal([]);\n public rowInlineActions: WritableSignal<ActionDescriptorInst<Item>[]> = signal([]);\n\n public ngOnInit() {\n // process actions\n const rowClickActions: ActionDescriptorInst<Item>[] = [];\n const rowInlineActions: ActionDescriptorInst<Item>[] = [];\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.RowClick:\n rowClickActions.push(action);\n break;\n case ActionPositionEnum.RowInline:\n rowInlineActions.push(action);\n break;\n }\n }\n this.rowClickActions.set(rowClickActions);\n this.rowInlineActions.set(rowInlineActions);\n\n // define all styles\n if (this.descriptor && !this.columnActionMinWidth) {\n this.columnActionMinWidth = StylesUtil.calculateTableColumnActionWidth(\n this.descriptor as TableDescriptorInst<any>,\n this.rowInlineActions() as Array<ActionDescriptorInst<any>>\n );\n }\n }\n\n public ngAfterContentInit() {\n this.templates.forEach(template => {\n switch (template.getType()) {\n case 'caption':\n this.captionTemplate.set(template.template);\n break;\n case 'footer':\n this.footerTemplate.set(template.template);\n break;\n }\n });\n }\n\n public reload(emitEvent = false, resetParams = false) {\n this.table.reload(emitEvent, resetParams);\n }\n\n public onCellClick(event: MngTableCellClickEvent<Item>) {\n if (this.rowClickActions().length) {\n for (const action of this.rowClickActions()) {\n const idProp = this.descriptor?.trackProperty ?? action?.model?.idProperty;\n const parameters = new ActionParameters(idProp ? event.rowItem[idProp as keyof object] : undefined, event.rowItem)\n .withActionData({\n itemIndex: event.rowIndex\n })\n .withRoute(this.route)\n .withSourceComponent(this);\n this.actionExecutor.triggerAction(action, parameters, true);\n }\n }\n }\n\n public onSelectionChange(items: Array<Item>) {\n this.selectionChangeEventEmitter.next(items);\n }\n\n public onActionFinish(runResult: ActionInstance<Item, Service>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n}\n","<mng-table\n [descriptor]=\"descriptor\"\n [items]=\"items\"\n [result]=\"result\"\n [loading]=\"loading\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"useQueryParams\"\n [selectionMode]=\"selectionMode\"\n [selectionEnabled]=\"selectionEnabled\"\n [globalFilterFields]=\"globalFilterFields\"\n [captionComponent]=\"captionComponent\"\n [columnCustomLastComponent]=\"columnActionComponent\"\n [columnLastMinWidth]=\"columnActionMinWidth\"\n (tableLoad)=\"loadEventEmitter.next($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionCmpInstEventEmitter.next($event)\"\n (columnCustomLastComponentInstance)=\"columnActionCmpInstEventEmitter.next($event)\">\n @if (!columnActionComponent && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor.model.idProperty ? item[descriptor.model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()!\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\"></ng-container>\n </ng-template>\n }\n</mng-table>\n","import {Component, EventEmitter, Input, Output, ViewChild, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {of} from 'rxjs';\n\nimport {LookupDataProvider, LookupDataProviderInst} from '../../../data-providers';\nimport {ActionDescriptorInst} from '../../../descriptors/action';\nimport {MngCommonsService} from '../../../services';\nimport {ViewContainer} from '../../../services/view';\nimport {IdType} from '../../../types';\nimport {MngDropdownComponent} from '../../form';\nimport {ActionData, ActionParameters, IActionComponent} from '../models';\n\n@Component({\n standalone: true,\n selector: 'mng-data-language-dropdown',\n imports: [MngDropdownComponent, FormsModule],\n templateUrl: 'data-language-dropdown.component.html'\n})\nexport class MngDataLanguageDropdownComponent<T = any> implements IActionComponent<T> {\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n @Input({required: true}) public action!: ActionDescriptorInst<T>;\n @Input({required: true}) public actionData!: ActionData;\n @Input({required: true}) public item!: T;\n @Input({required: true}) public itemId!: IdType;\n @Input({required: true}) public enabled!: boolean;\n @Input({required: true}) public loading!: boolean;\n\n @Output() public triggerActionEventEmitter: EventEmitter<ActionParameters<T>> = new EventEmitter<ActionParameters<T>>();\n @ViewChild(MngDropdownComponent) private dropdown?: MngDropdownComponent;\n\n // dropdown properties\n public selectionItemsDataProvider: LookupDataProviderInst<string>;\n\n constructor(public mngCommons: MngCommonsService) {\n this.selectionItemsDataProvider = LookupDataProvider.create<string>().withLookup(() => of(mngCommons.appDataLanguages));\n }\n\n public updateDataLanguage(dataLang: string): void {\n this.mngCommons.appDataLanguage = dataLang;\n this.viewContainer?.reloadTable({});\n }\n}\n","<mng-dropdown [dataProvider]=\"selectionItemsDataProvider\" [ngModel]=\"mngCommons.appDataLanguage\" [showClear]=\"false\" (valueChange)=\"updateDataLanguage($event)\"></mng-dropdown>\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {ErrorHandler} from '@angular/core';\n\nimport {AMngErrorBase} from '../models';\nimport {MngLoggerService} from '../services';\nimport {ErrorUtil} from '../utils';\n\nexport class MngErrorHandler implements ErrorHandler {\n private static readonly logCategory = 'MngErrorHandler';\n private readonly logger = MngLoggerService.get();\n\n handleError(error: Error) {\n if (error instanceof AMngErrorBase || error instanceof HttpErrorResponse) {\n const logLevel = ErrorUtil.getErrorLogLevel(error);\n this.logger.log(error, logLevel);\n } else {\n this.logger.error('Unexpected error occurred', error);\n }\n }\n}\n","import {HttpBackend} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\n\nimport {MngCommonsInitService} from '../commons-init.service';\n\nexport function mngCommonsInitializerProvider(handler: HttpBackend, mngCommonsInit: MngCommonsInitService): () => Observable<void> {\n return () => mngCommonsInit.initialize(handler);\n}\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors/editor';\nimport {MngAutocompleteComponent} from '../../../autocomplete/autocomplete.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [MngAutocompleteComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldAutocompleteComponent<T, ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public aFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, ET>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.aFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.aFormControl.valueChanges.pipe(startWith(this.aFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldAutocompleteComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(value => value.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnDestroy, OnInit} from '@angular/core';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CalendarModule} from 'primeng/calendar';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {TimesIcon} from 'primeng/icons/times';\nimport {ImageModule} from 'primeng/image';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors/editor';\nimport {FieldInputTypeEnum} from '../../../../../descriptors/types';\nimport {MngInputTrimDirective} from '../../../../../directives';\nimport {NotificationUtil} from '../../../../../utils';\nimport {MngFormEditorComponent} from '../../../editor/form-editor.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n imports: [\n InputNumberModule,\n ReactiveFormsModule,\n FormlyModule,\n TranslateModule,\n InputSwitchModule,\n RadioButtonModule,\n CalendarModule,\n InputMaskModule,\n FileUploadModule,\n ImageModule,\n InputTextareaModule,\n InputTextModule,\n RippleModule,\n TimesIcon,\n MngInputTrimDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldInputComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, OnDestroy {\n public readonly NUMBER_MIN_SAFE = Number.MIN_SAFE_INTEGER;\n public readonly NUMBER_MAX_SAFE = Number.MAX_SAFE_INTEGER;\n public readonly DESC_INPUT_TYPE_IMAGE_FILE = FieldInputTypeEnum.ImageFile;\n\n public iFormControl!: FormControl;\n public descriptor!: FieldInputDescriptor<ET>;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n public imageFormArray!: FormArray;\n private subscriptions: Subscription[] = [];\n\n public formEditorComponent?: MngFormEditorComponent<unknown>;\n\n constructor(\n @Inject(LOCALE_ID) public applicationLocale: string,\n private formBuilder: FormBuilder,\n private translateService: TranslateService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.iFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.props.fieldComponent = this;\n this.formEditorComponent = this.props.formEditorComponent as MngFormEditorComponent<unknown>;\n\n this.imageFormArray = this.formBuilder.array([]);\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n const currencyFromPropSubscription = this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n this.subscriptions.push(currencyFromPropSubscription);\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n // init values\n if (this.props.type === 'datepicker' && typeof this.iFormControl.value === 'string') {\n const dateObject = new Date(this.iFormControl.value);\n this.iFormControl.setValue(dateObject);\n }\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldInputComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n\n if (this.props.type === 'imageUrl') {\n const startValue = this.iFormControl.value;\n if (this.descriptor.fileMultiple) {\n if (Array.isArray(startValue) && startValue.length > 0) {\n startValue.forEach(v => this.addImageUrl(v));\n } else if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n } else {\n if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n }\n\n const subscription = this.imageFormArray!.valueChanges.pipe(distinctUntilChanged()).subscribe(v => {\n const fcv = v.filter((i: string) => !!i && typeof i === 'string' && i.length > 0);\n this.iFormControl.setValue(fcv.length > 0 ? (this.descriptor.fileMultiple ? fcv : fcv[0]) : undefined);\n this.iFormControl.updateValueAndValidity();\n });\n this.subscriptions.push(subscription);\n }\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n if (this.descriptor.fileMultiple) {\n this.files = [...this.files, ...files];\n } else {\n this.files = [...files];\n }\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n public addImageUrl(value: string | null = null) {\n const validators: ValidatorFn[] = [];\n validators.push(Validators.pattern(/^(http|https):\\/\\/[^ \"]+$/));\n validators.push(Validators.minLength(1));\n this.imageFormArray.push(this.formBuilder.control(value, validators));\n }\n\n public removeImageUrlAt(idx: number) {\n this.imageFormArray.removeAt(idx);\n }\n\n public onImageUrlLoadError() {\n if (this.formEditorComponent) {\n const message = NotificationUtil.getFormEditorWarningMessage(this.translateService, 'general.error', 'mngEditor.imageLoadError');\n this.formEditorComponent.formMessages = [...this.formEditorComponent.formMessages, message];\n }\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n\n public isFileImageSvg(file: File) {\n return /^image\\/svg/.test(file.type);\n }\n\n public getFileDocumentTypeIcon(file: File) {\n if (/^video\\//.test(file.type)) {\n return 'pi-video';\n }\n if (/^audio\\//.test(file.type)) {\n return 'pi-volume-up';\n }\n switch (file.type) {\n case 'application/pdf':\n return 'pi-file-pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.oasis.opendocument.presentation':\n return 'pi-file-word';\n case 'application/vnd.oasis.opendocument.spreadsheet':\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'pi-file-excel';\n default:\n return 'pi-file';\n }\n }\n}\n","@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin ?? NUMBER_MIN_SAFE : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax ?? NUMBER_MAX_SAFE : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n }\n\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea [class]=\"descriptor.inputClassName\">\n </textarea>\n }\n @case ('datepicker') {\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n }\n @case ('mask') {\n <p-inputMask\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (isFileImageSvg(file)) {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n } @else {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi pi-ban\"></i>\n </div>\n </span>\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup mt-1\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto mt-1\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [mngInputTrim]=\"descriptor.trimOption\" />\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors/editor';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLabelComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n private descriptor!: FieldInputDescriptor<any>;\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.props.fieldComponent = this;\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors/editor';\nimport {MngDropdownComponent} from '../../../dropdown/dropdown.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [MngDropdownComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldDropdownComponent<T, ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, OnDestroy {\n public dFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, ET>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.dFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.dFormControl.valueChanges.pipe(startWith(this.dFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldDropdownComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {MessagesModule} from 'primeng/messages';\nimport {RippleModule} from 'primeng/ripple';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldLookupDescriptor} from '../../../../../descriptors/editor';\nimport {FieldLookupConfig} from '../../../../../descriptors/interfaces';\nimport {MngDialogKeydownHandlerDirective} from '../../../../../directives';\nimport {toObservable} from '../../../../../helpers/coercion';\nimport {DataListParams, DataListResult, MngInternalError} from '../../../../../models';\nimport {MngLoggerService} from '../../../../../services';\nimport {provideViewContainer} from '../../../../../services/view';\nimport {ErrorUtil} from '../../../../../utils';\nimport {MngTableComponent} from '../../../../table/table.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [\n TranslateModule,\n FormlyModule,\n ReactiveFormsModule,\n ButtonModule,\n RippleModule,\n DialogModule,\n AsyncPipe,\n MngTableComponent,\n MessagesModule,\n InputTextModule,\n MngDialogKeydownHandlerDirective\n ],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLookupDialogComponent<T, ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(MngTableComponent) public mngTable?: MngTableComponent;\n\n private readonly logger = inject(MngLoggerService).create('MngFormlyFieldLookupDialogComponent');\n\n public descriptor!: FieldLookupDescriptor<T, ET>;\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public addItemsSubject: Subject<DataListResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<DataListResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n ngOnInit(): void {\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n const subscription = this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.trackProperty ?? this.descriptor.dialogTableDescriptor!.model.idProperty;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev[compareProp] === curr[compareProp];\n } else {\n return prev === curr;\n }\n })\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldLookupDialogComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n\n const params: DataListParams = {\n limit: 50,\n sort: this.descriptor\n .dialogTableDescriptor!.sorts.filter(s => s.defaultIsEnabled)\n .map(s => ({\n property: s.property,\n ascending: s.defaultIsAscending\n }))\n };\n\n this.lookupDataProviderSubscription = toObservable(this.descriptor.dataProvider?.lookup(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n const dataList = {\n data: res ?? [],\n totalCount: res?.length ?? 0\n };\n this.addItemsSubject.next(dataList);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupNext',\n queryResult: dataList\n });\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n\n const mngError = ErrorUtil.fromSubscribeError(err, 'MngFormlyFieldLookupDialogComponentError', {\n params: params\n });\n this.logger.log(mngError, ErrorUtil.getErrorLogLevel(mngError));\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl.setValue(undefined);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItem() {\n this.formControl.setValue(this.dialogSelectedItem);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.optionsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titleProperty;\n if (!labelProperty) {\n throw new MngInternalError('Could not determine label property.', {name: 'MngFormlyFieldLookupDialogError'});\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnCustomLastComponent]=\"config.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnCustomLastComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {ActionButtonDescriptor, ActionDescriptor, ActionDescriptorInst, ActionEditorDescriptor, ActionEditorSubmitDescriptor} from '../../../../../descriptors/action';\nimport {FieldManyEditorDescriptor} from '../../../../../descriptors/editor';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum, FieldManyEditorActionEnum} from '../../../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../../../directives';\nimport {MngInternalError} from '../../../../../models';\nimport {MngCommonsService} from '../../../../../services';\nimport {provideViewContainer} from '../../../../../services/view';\nimport {ButtonStyleBuilder} from '../../../../../styles';\nimport {StyleLevelEnum, StyleSizeEnum} from '../../../../../styles/models';\nimport {MngActionComponent, MngActionTableComponent} from '../../../../action';\nimport {ActionContextValidation} from '../../../../action/models';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.scss'],\n imports: [TranslateModule, MngActionComponent, MngActionTableComponent, MngTemplateDirective],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTableDialogFormComponent<T = any, ET = any> extends FieldType<MngFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public descriptor!: FieldManyEditorDescriptor<T, ET>;\n\n public itemsSubject: Subject<Array<T>> = new ReplaySubject(1);\n public items$: Observable<Array<T>> = this.itemsSubject.asObservable();\n\n public actions: Array<ActionDescriptorInst<T>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<T>> = [];\n\n private subscriptions: Subscription[] = [];\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyEditorDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.detailsEditor, 'details', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowClick)\n .withDialogSize(StyleSizeEnum.Small)\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n });\n viewAction.withEditorActions([ActionEditorSubmitDescriptor.forSecondary(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);\n viewAction.button.withLabel(null);\n this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.addEditor, 'add', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n setTimeout(this.formControl.markAsTouched, 0);\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new MngInternalError(`No item was provided in context, add cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'}));\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value = [...value, ctx.parameters.item];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n addAction.button.withLabel(null).withIcon('pi pi-plus');\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.editEditor, 'edit', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(() => new MngInternalError(`No item was provided in context, edit cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'}));\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = [...this.formControl.value];\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : of(!this.formControl?.disabled)))\n .withIsEnabledFunction(() => this.isEnabled$);\n editAction.button.withLabel(null).withIcon('pi pi-pencil');\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = ActionDescriptor.fromModel(this.descriptor.tableviewDescriptor.model, 'delete', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Danger).withSize(StyleSizeEnum.ExtraSmall)))\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new MngInternalError(`No item was provided in context, delete cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n let formControlValue = this.formControl.value as Array<T>;\n const compareProperty = this.descriptor.tableDescriptor.trackProperty\n ? this.descriptor.tableDescriptor.trackProperty\n : this.descriptor.tableDescriptor.model.idProperty;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl.patchValue([...formControlValue]);\n this.formControl.markAsDirty();\n } else {\n return throwError(\n () =>\n new MngInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogFormComponentError'\n })\n );\n }\n\n this.formControl.markAsTouched();\n\n return of(ctxItem);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : of(!this.options?.formState.disabled)))\n .withIsEnabledFunction(() => this.isEnabled$);\n deleteAction.button.withLabel(null).withIcon('pi pi-trash');\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n let subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value)).subscribe(v => {\n this.itemsSubject.next(v);\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogFormComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n\n this.isDisabledSubject.next(this.formControl.disabled);\n subscription = this.formControl.statusChanges.pipe().subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n private hideActionsForRowWithDefaultLocalization(ctx: ActionContextValidation<T>) {\n if (this.descriptor.tableDescriptor.isLocalized) {\n if ((ctx.parameters.item as any)[this.descriptor.tableDescriptor.localizationLocaleProperty!] === this.injector.get(MngCommonsService).defaultDataLanguage) {\n return true;\n }\n }\n return false;\n }\n}\n","<mng-action-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-action-table>\n","import {AsyncPipe, NgStyle} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {RippleModule} from 'primeng/ripple';\nimport {Observable, ReplaySubject, Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {FieldManyToManyEditorDescriptor} from '../../../../../descriptors/editor';\nimport {FieldManyToManyEditorActionEnum} from '../../../../../descriptors/types';\nimport {MngDialogKeydownHandlerDirective, MngTemplateDirective} from '../../../../../directives';\nimport {toObservable} from '../../../../../helpers/coercion';\nimport {DataListParams, DataListResult, FilterMatchMode, MngInternalError} from '../../../../../models';\nimport {MngLoggerService} from '../../../../../services';\nimport {provideViewContainer} from '../../../../../services/view';\nimport {ErrorUtil, ObjectUtil} from '../../../../../utils';\nimport {MngTableComponent} from '../../../../table/table.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.scss'],\n imports: [\n TranslateModule,\n AsyncPipe,\n MngTableComponent,\n DialogModule,\n ButtonModule,\n RippleModule,\n MngTemplateDirective,\n InputTextModule,\n NgStyle,\n MngDialogKeydownHandlerDirective\n ],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTableDialogMultiselectComponent extends FieldType<MngFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n private readonly logger = inject(MngLoggerService).create('MngFormlyFieldTableDialogMultiselectComponent');\n\n public descriptor!: FieldManyToManyEditorDescriptor<any, any>;\n\n public itemsSubject: Subject<Array<any>> = new ReplaySubject(1);\n public itemsAsync: Observable<Array<any>> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<DataListResult> = new ReplaySubject(1);\n public addItemsAsync: Observable<DataListResult> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedAddItems: Array<any> = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n public hasAddAction = false;\n public hasDeleteAction = false;\n\n private searchDebounceSubject = new Subject<string>();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n @ViewChild('addTableComponent') addTableComponent?: MngTableComponent;\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyToManyEditorDescriptor<any, any>;\n this.props.fieldComponent = this;\n\n this.dialogIsLoadingSubject.next(false);\n\n if (this.descriptor.lookupTableDataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.lookupTableDataProvider.serviceType);\n }\n this.hasAddAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged()).subscribe(v => {\n this.itemsSubject.next(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogMultiselectComponent, this, {\n value: v ?? []\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v ?? []);\n }\n });\n\n this.subscriptions.push(\n this.searchDebounceSubject.pipe(debounceTime(200), distinctUntilChanged()).subscribe(query => {\n this.addTableComponent?.primeTable.filterGlobal(query, 'contains');\n })\n );\n\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n // wrapped in request animation frame due to primeng bug: https://github.com/primefaces/primeng/issues/12980\n requestAnimationFrame(() => {\n this.dialogIsLoadingSubject.next(true);\n const params: DataListParams = {limit: 50, sort: []};\n if (this.descriptor.lookupTableDescriptor.sorts.some(s => s.defaultIsEnabled)) {\n this.descriptor.lookupTableDescriptor.sorts.forEach(s => {\n if (s.defaultIsEnabled) {\n params.sort?.push({\n property: s.property,\n ascending: s.defaultIsAscending\n });\n }\n });\n }\n if (this.descriptor.hasLookupExcludeValues) {\n const filterValues = this.formControl.value.map((i: any) => ObjectUtil.getPropertyByPath(i, this.descriptor.excludeValueProperty));\n params.filters = {\n [this.descriptor.excludeFilterProperty as keyof object]: {\n matchMode: FilterMatchMode.NotIn,\n value: filterValues\n }\n };\n }\n this.lookupDataProviderSubscription = toObservable(this.descriptor.lookupTableDataProvider?.getAll(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n\n const mngError = ErrorUtil.fromSubscribeError(err, 'MngFormlyFieldTableDialogMultiselectComponent', {\n params: params\n });\n this.logger.log(mngError, ErrorUtil.getErrorLogLevel(mngError));\n }\n });\n });\n }\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItems() {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.trackProperty\n ? this.descriptor.mainTableDescriptor.trackProperty\n : this.descriptor.mainTableDescriptor.model.idProperty;\n if (!compareProperty) {\n throw new MngInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogMultiselectComponentError'\n });\n }\n value = value.filter((i: any) => ObjectUtil.getPropertyByPath(i, compareProperty) !== ObjectUtil.getPropertyByPath(item, compareProperty));\n this.formControl.patchValue(value);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogAreItemsLoaded = false;\n }\n\n public onSearch(event: Event) {\n const query = (event.target as HTMLInputElement).value;\n this.searchDebounceSubject.next(query);\n }\n}\n","<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </ng-template>\n</mng-table>\n\n@if (hasAddAction) {\n <p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: props.label! | translate}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\" class=\"table-container\" mngDialogKeydownHandler>\n <div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 formly-field-table-multiselect-dialog-form-container\">\n <div class=\"mng-formly-field-table-multiselect-dialog-table\">\n <mng-table\n #addTableComponent\n [descriptor]=\"descriptor.lookupTableDescriptor\"\n [globalFilterFields]=\"descriptor.searchFields\"\n [result]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n @if (descriptor.searchEnabled) {\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex\">\n <span class=\"p-input-icon-left ml-auto\" [ngStyle]=\"{width: 'unset'}\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n </span>\n </div>\n </ng-template>\n }\n </mng-table>\n </div>\n </div>\n <div class=\"flex flex-row justify-content-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-primary\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabViewModule} from 'primeng/tabview';\n\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n imports: [TabViewModule, TranslateModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTabsComponent extends FieldType<MngFormlyFieldConfig> {}\n","<p-tabView [scrollable]=\"true\">\n @for (tab of field.fieldGroup; track tab) {\n <p-tabPanel [header]=\"tab.props?.label! | translate\" [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n }\n</p-tabView>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FieldsetModule} from 'primeng/fieldset';\n\nimport {FieldGroupDescriptor} from '../../../../../descriptors/editor';\nimport {FieldGroupTypeEnum} from '../../../../../descriptors/types';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [FieldsetModule, FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldFieldsetComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n public readonly typeLogical = FieldGroupTypeEnum.Logical;\n public descriptor?: FieldGroupDescriptor<ET>;\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldGroupDescriptor<ET>;\n this.props.fieldComponent = this;\n }\n}\n","@for (group of field.fieldGroup; track group) {\n @switch (group?.props?.['descriptor']?.type) {\n @case (typeFieldset) {\n <p-fieldset [legend]=\"group.props?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n }\n @default {\n <formly-field [field]=\"group\"></formly-field>\n }\n }\n}\n","import {JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {MessageModule} from 'primeng/message';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {isObservable} from 'rxjs';\n\nimport {FieldActionDescriptor} from '../../../../../descriptors/editor';\nimport {FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [ButtonModule, RippleModule, TranslateModule, TooltipModule, JsonPipe, MessageModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldActionComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldActionDescriptor<ET>;\n\n public buttonClass = 'p-button-primary';\n\n public actionMessage?: FieldActionResultMessage;\n\n ngOnInit(): void {\n this.descriptor = this.props.descriptor as FieldActionDescriptor<ET>;\n this.props.fieldComponent = this;\n this.buttonClass = this.descriptor.button.styleClass.build();\n }\n\n onClick() {\n this.actionMessage = undefined;\n\n const result = this.descriptor.runFunction?.({\n descriptor: this.descriptor,\n formEditorComponent: this.props.formEditorComponent as IFormEditorComponent<ET>,\n formly: {\n model: this.model,\n formControl: this.formControl,\n form: this.form,\n formState: this.formState,\n options: this.options,\n props: this.props\n }\n });\n\n if (result) {\n if (isObservable(result)) {\n result.subscribe(res => this.processResult(res));\n } else {\n this.processResult(result);\n }\n }\n }\n\n private processResult(res: FieldActionResult) {\n if (res.message) {\n this.actionMessage = res.message;\n }\n }\n}\n","<div class=\"flex\">\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(descriptor.button.icon)\"\n [label]=\"$any(descriptor.button.label === null ? null : descriptor.button.label ?? props!.label) | translate\"\n [pTooltip]=\"$any(descriptor.button.tooltip) | translate\"\n [disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n [class]=\"buttonClass + (actionMessage ? ' mr-2' : '')\"></button>\n @if (actionMessage) {\n <p-message [text]=\"actionMessage.content\" [severity]=\"actionMessage.severity ?? 'success'\"></p-message>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors/editor';\nimport {MngComponentDirective} from '../../../../../directives';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-custom',\n template: ` <ng-container [mngComponent]=\"descriptor.customComponentType!\" [inputs]=\"inputs\"></ng-container> `,\n imports: [MngComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldCustomComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldInputDescriptor<ET>;\n\n public inputs: Record<string, any> = {};\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.inputs = {\n field: this.field,\n model: this.model,\n form: this.form,\n options: this.options,\n key: this.key,\n formControl: this.formControl,\n props: this.props,\n showError: this.showError,\n id: this.id,\n formState: this.formState,\n ...this.descriptor.customComponentInputs\n };\n }\n}\n","import {Directive, Input} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup} from '@angular/forms';\n\nimport {FieldType, FormlyFormOptions} from '@ngx-formly/core';\n\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Directive()\nexport abstract class AMngFormlyCustomFieldComponent extends FieldType<MngFormlyFieldConfig> {\n @Input('field') override field!: MngFormlyFieldConfig;\n @Input('model') _model: any;\n @Input('form') _form!: FormGroup | FormArray;\n @Input('options') _options!: FormlyFormOptions;\n @Input('key') _key!: string | number | (string | number)[];\n @Input('formControl') _formControl!: AbstractControl;\n @Input('props') _props!: MngFormlyFieldConfig['props'];\n @Input('showError') _showError!: boolean;\n @Input('id') _id!: string;\n @Input('formState') _formState: any;\n\n override get model() {\n return this._model;\n }\n override get form() {\n return this._form;\n }\n override get options() {\n return this._options;\n }\n override get key() {\n return this._key;\n }\n override get formControl() {\n return this._formControl;\n }\n override get props() {\n return this._props;\n }\n override get showError() {\n return this._showError;\n }\n override get id() {\n return this._id;\n }\n override get formState() {\n return this._formState;\n }\n}\n","import {DatePipe} from '@angular/common';\n\nimport {WrapperOption} from '@ngx-formly/core/lib/models/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {FieldInputDescriptor} from '../../../descriptors/editor';\nimport {\n MngFormlyFieldActionComponent,\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from './fields';\nimport {MngFormlyFieldCustomComponent} from './fields/formly-field-custom/formly-field-custom.component';\nimport {MngFormlyFieldConfig, MngFormlyTypeConfig} from './models';\nimport {MngFormlyFieldNoLabelWrapperComponent, MngFormlyFieldWrapperComponent} from './wrappers';\n\nexport const formlyWrappersConfig: WrapperOption[] = [\n {name: 'field', component: MngFormlyFieldWrapperComponent},\n {name: 'field-no-label', component: MngFormlyFieldNoLabelWrapperComponent}\n];\n\nexport const formlyTypesConfig: MngFormlyTypeConfig[] = [\n {\n name: 'label',\n component: MngFormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: MngFormlyFieldInputComponent,\n wrappers: ['field']\n },\n {name: 'string', extends: 'input'},\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'currency',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'textarea'\n }\n }\n },\n {\n name: 'switch',\n component: MngFormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'switch'\n }\n }\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'radio'\n }\n }\n },\n {\n name: 'datepicker',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'datepicker'\n }\n }\n },\n {\n name: 'mask',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'file'\n }\n }\n },\n {\n name: 'imageUrl',\n component: MngFormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'imageUrl'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'dropdown',\n component: MngFormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: MngFormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'action',\n component: MngFormlyFieldActionComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'dialog',\n component: MngFormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: MngFormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'table-dialog-form',\n component: MngFormlyFieldTableDialogFormComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'tabs',\n component: MngFormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: MngFormlyFieldFieldsetComponent,\n wrappers: []\n },\n {\n name: 'formly-group',\n wrappers: ['field-no-label']\n },\n {\n name: 'custom',\n component: MngFormlyFieldCustomComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.props.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.props.maxLength});\n };\n}\n\nexport function getMinValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.min', {field: fieldName, min: field.props.min});\n };\n}\n\nexport function getMaxValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.max', {field: fieldName, max: field.props.max});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.props.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport function getMinDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const minDate = inputDescriptor.datePickerMin;\n\n if (!minDate) return '';\n let dateString = datePipe.transform(minDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(minDate, ' HH:mm:ss');\n }\n\n return translate.instant('mngEditor.validation.minDate', {min: dateString});\n };\n}\n\nexport function getMaxDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const maxDate = inputDescriptor.datePickerMax;\n\n if (!maxDate) return '';\n let dateString = datePipe.transform(maxDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(maxDate, ' HH:mm:ss');\n }\n\n return translate.instant('mngEditor.validation.maxDate', {max: dateString});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService, datePipe: DatePipe): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'min', message: getMinValidationMessage(translate)},\n {name: 'max', message: getMaxValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)},\n {name: 'minDate', message: getMinDateValidationMessage(translate, datePipe)},\n {name: 'maxDate', message: getMaxDateValidationMessage(translate, datePipe)}\n ];\n};\n","import {DatePipe} from '@angular/common';\n\nimport {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../../components/form/formly';\nimport {MngModuleConfig} from '../../models';\n\nexport function mngFormlyConfigProvider(translate: TranslateService, datePipe: DatePipe, moduleConfig: MngModuleConfig = {}): ConfigOption {\n const merge = moduleConfig.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (moduleConfig.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...moduleConfig.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (moduleConfig.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...moduleConfig.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate, datePipe);\n if (typeof moduleConfig.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...moduleConfig.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {DatePipe} from '@angular/common';\nimport {HttpBackend} from '@angular/common/http';\nimport {APP_INITIALIZER, ErrorHandler, Provider} from '@angular/core';\n\nimport {FORMLY_CONFIG} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService} from 'primeng/dynamicdialog';\n\nimport {MngActionEditorComponent} from './components/action';\nimport {MngErrorHandler} from './error';\nimport {MngModuleConfig} from './models';\nimport {\n JsonPathPipe,\n MngBooleanPipe,\n MngClassMapPipe,\n MngEnumPipe,\n MngEnumerateAsyncPipe,\n MngEnumeratePipe,\n MngGetterPipe,\n MngI18nPropertyPipe,\n MngLocaleDefaultRowClassPipe,\n MngParametrizePipe,\n MngTemplatePipe\n} from './pipes';\nimport {TypeRegistry} from './registry/type.registry';\nimport {\n DataProviderExecutor,\n DefaultActionMngErrorMapperService,\n DefaultDataProviderExecutor,\n MngActionErrorMapperService,\n MngCommonsInitService,\n MngConfigurationService,\n MngLogPublisherConsoleService,\n MngLoggerService\n} from './services';\nimport {MngActionExecutorService, MngRootActionExecutorService} from './services/action';\nimport {mngCommonsInitializerProvider} from './services/internal';\nimport {mngFormlyConfigProvider} from './services/providers';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING, MNG_LOG_PUBLISHERS, MNG_MODULE_CONFIG_IT} from './services/tokens';\n\nexport enum CommonsFeatureTypeEnum {\n DataApiObsolete\n}\n\nexport interface CommonsFeature {\n type: CommonsFeatureTypeEnum;\n providers: Provider[];\n}\n\nexport function provideMngCommons(config: MngModuleConfig, ...features: CommonsFeature[]): Provider[] {\n const providers: Provider[] = [\n // primeng services\n DialogService,\n MessageService,\n ConfirmationService,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngParametrizePipe,\n MngGetterPipe,\n MngTemplatePipe,\n MngClassMapPipe,\n MngEnumeratePipe,\n MngEnumerateAsyncPipe,\n MngLocaleDefaultRowClassPipe,\n DatePipe,\n\n {\n provide: MNG_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: TypeRegistry,\n useFactory: () => TypeRegistry.get()\n },\n {\n provide: MngConfigurationService,\n useFactory: () => MngConfigurationService.get()\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngCommonsInitializerProvider,\n deps: [HttpBackend, MngCommonsInitService],\n multi: true\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: mngFormlyConfigProvider,\n deps: [TranslateService, DatePipe, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_DIALOG_COMPONENT_SETTING,\n useValue: MngActionEditorComponent\n },\n {\n provide: MngActionErrorMapperService,\n useClass: DefaultActionMngErrorMapperService\n },\n {\n provide: MngLoggerService,\n useFactory: () => MngLoggerService.get()\n },\n {\n provide: MNG_LOG_PUBLISHERS,\n useClass: MngLogPublisherConsoleService,\n multi: true\n },\n {\n provide: ErrorHandler,\n useClass: MngErrorHandler\n },\n MngRootActionExecutorService,\n {\n provide: MngActionExecutorService,\n useExisting: MngRootActionExecutorService\n },\n DefaultDataProviderExecutor\n ];\n\n features.forEach(f => {\n providers.push(...f.providers);\n });\n\n providers.push({\n provide: DataProviderExecutor,\n useExisting: DefaultDataProviderExecutor\n });\n\n return providers;\n}\n","import {Injectable} from '@angular/core';\n\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService} from '../../../services';\n\n@Injectable()\nexport class MngMainLayoutComponentService {\n private _overlayMenuActive = false;\n private _overlayMenuActiveSubject: Subject<boolean> = new BehaviorSubject(this._overlayMenuActive);\n private _staticMenuDesktopInactive = false;\n private _staticMenuDesktopInactiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuDesktopInactive);\n private _staticMenuMobileActive = false;\n private _staticMenuMobileActiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuMobileActive);\n\n private _sidebarActive = true;\n private _sidebarActiveSubject: Subject<boolean> = new BehaviorSubject(this._sidebarActive);\n private _sidebarStatic = true;\n private _sidebarStaticSubject: Subject<boolean> = new BehaviorSubject(this._sidebarStatic);\n\n private _menuClick = false;\n private _menuHoverActive = false;\n private _topbarItemClick = false;\n\n private _activeTopbarItem: any = null;\n private _activeTopbarItemSubject: Subject<any> = new BehaviorSubject(this._activeTopbarItem);\n\n private _pinActive = true;\n private _pinActiveSubject: Subject<boolean> = new BehaviorSubject(this._pinActive);\n\n private _innerWidth = 1920;\n private _innerWidthSubject: Subject<number> = new BehaviorSubject(this._innerWidth);\n\n constructor(private mngCommons: MngCommonsService) {\n this.sidebarActive = !mngCommons.menuSidebarSlim;\n this.sidebarStatic = !mngCommons.menuSidebarSlim;\n }\n\n get overlayMenuActive$(): Observable<boolean> {\n return this._overlayMenuActiveSubject.asObservable();\n }\n\n set overlayMenuActive(value: boolean) {\n this._overlayMenuActive = value;\n this._overlayMenuActiveSubject.next(value);\n }\n\n get staticMenuDesktopInactive$(): Observable<boolean> {\n return this._staticMenuDesktopInactiveSubject.asObservable();\n }\n\n set staticMenuDesktopInactive(value: boolean) {\n this._staticMenuDesktopInactive = value;\n this._staticMenuDesktopInactiveSubject.next(value);\n }\n\n get staticMenuMobileActive$(): Observable<boolean> {\n return this._staticMenuMobileActiveSubject.asObservable();\n }\n\n set staticMenuMobileActive(value: boolean) {\n this._staticMenuMobileActive = value;\n this._staticMenuMobileActiveSubject.next(value);\n }\n\n get sidebarActive$(): Observable<boolean> {\n return this._sidebarActiveSubject.asObservable();\n }\n\n set sidebarActive(value: boolean) {\n this._sidebarActive = value;\n this._sidebarActiveSubject.next(value);\n }\n\n get sidebarStatic$(): Observable<boolean> {\n return this._sidebarStaticSubject.asObservable();\n }\n\n set sidebarStatic(value: boolean) {\n this._sidebarStatic = value;\n this._sidebarStaticSubject.next(value);\n }\n\n set menuHoverActive(value: boolean) {\n this._menuHoverActive = value;\n }\n\n set topbarItemClick(value: boolean) {\n this._topbarItemClick = value;\n }\n\n get activeTopbarItem$(): Observable<any> {\n return this._activeTopbarItemSubject.asObservable();\n }\n\n set activeTopbarItem(value: any) {\n this._activeTopbarItem = value;\n this._activeTopbarItemSubject.next(value);\n }\n\n get pinActive$(): Observable<boolean> {\n return this._pinActiveSubject.asObservable();\n }\n\n set pinActive(value: boolean) {\n this._pinActive = value;\n this._pinActiveSubject.next(value);\n }\n\n get isDesktop$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthDesktop(e)));\n }\n\n get isMobile$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthMobile(e)));\n }\n\n set innerWidth(value: number) {\n this._innerWidth = value;\n this._innerWidthSubject.next(value);\n }\n\n onLayoutClick() {\n if (!this._topbarItemClick) {\n this.activeTopbarItem = null;\n }\n\n if (!this._menuClick) {\n if (this.mngCommons.menuModeIsSlim && !this.isMobile()) {\n this.mngCommons.menuReset();\n this.menuHoverActive = false;\n }\n\n if (this._overlayMenuActive || this._staticMenuMobileActive) {\n this.overlayMenuActive = false;\n this.staticMenuMobileActive = false;\n }\n }\n\n this._menuClick = false;\n this.topbarItemClick = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarClick(event: any) {\n this._menuClick = true;\n }\n\n onToggleMenu(event: any) {\n this._menuClick = true;\n\n if (this._overlayMenuActive) {\n this.overlayMenuActive = false;\n }\n\n if (this._sidebarActive) {\n this.sidebarStatic = !this._sidebarStatic;\n }\n\n event.preventDefault();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseOver(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !this._sidebarStatic) {\n this.sidebarActive = this.isDesktop();\n setTimeout(() => {\n this.pinActive = this.isDesktop();\n }, 200);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseLeave(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !this._sidebarStatic) {\n setTimeout(() => {\n this.sidebarActive = false;\n this.pinActive = false;\n }, 250);\n }\n }\n\n onMenuButtonClick(event: any) {\n this._menuClick = true;\n\n if (this.mngCommons.menuModeIsOverlay) {\n this.overlayMenuActive = !this._overlayMenuActive;\n }\n\n if (this.isDesktop()) {\n this.staticMenuDesktopInactive = !this._staticMenuDesktopInactive;\n } else {\n this.staticMenuMobileActive = !this._staticMenuMobileActive;\n }\n\n event.preventDefault();\n }\n\n onTopbarItemClick(event: any, item: any) {\n this._topbarItemClick = true;\n\n if (this._activeTopbarItem === item) {\n this.activeTopbarItem = null;\n } else {\n this.activeTopbarItem = item;\n }\n\n event.preventDefault();\n }\n\n onTopbarSubItemClick(event: any) {\n event.preventDefault();\n }\n\n /**\n * Checks if is desktop width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isDesktop() {\n return this.isWidthDesktop(this._innerWidth);\n }\n\n /**\n * Checks if is mobile width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isMobile() {\n return this.isWidthMobile(this._innerWidth);\n }\n\n private isWidthDesktop(width: number) {\n return width > 991;\n }\n\n private isWidthMobile(width: number) {\n return width <= 991;\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngCommonsService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n imports: [BreadcrumbModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngBreadcrumbComponent {\n public mappedBreadcrumbHome$: Observable<MenuItem | null> = this.mngCommons.breadcrumbHome$.pipe(\n map((el: MngMenuItem | null) => {\n if (!el) return null;\n return this.mapMngMenuItem(el);\n })\n );\n public mappedBreadcrumbs$: Observable<MenuItem[]> = this.mngCommons.breadcrumbs$.pipe(map((items: MngMenuItem[]) => items.map(el => this.mapMngMenuItem(el))));\n constructor(public mngCommons: MngCommonsService) {}\n\n private mapMngMenuItem(item: MngMenuItem): MenuItem {\n return {\n ...item,\n url: item.href,\n badgeStyleClass: item.badgeClassName,\n styleClass: item.className\n } as MenuItem;\n }\n}\n","<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [home]=\"(mappedBreadcrumbHome$ | async) ?? undefined\" [model]=\"(mappedBreadcrumbs$ | async) ?? undefined\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-footer',\n templateUrl: './footer.component.html',\n imports: [TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFooterComponent {\n public currentYear = new Date().getFullYear();\n\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n","import {Component, computed, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\nimport {DialogModule} from 'primeng/dialog';\nimport {ToastModule} from 'primeng/toast';\n\nimport {MngDialogKeydownHandlerDirective} from '../../directives';\n\n@Component({\n selector: 'mng-notification-wrapper',\n standalone: true,\n templateUrl: 'notification-wrapper.component.html',\n imports: [ToastModule, ConfirmDialogModule, TranslateModule, DialogModule, MngDialogKeydownHandlerDirective]\n})\nexport class NotificationWrapperComponent {\n public readonly notificationCutoff = 70;\n public isDialogNotificationVisible = computed(() => this.dialogNotification() !== null);\n public dialogNotification = signal<Message | null>(null);\n\n public getNotificationIconClass(message: Message | null): string {\n if (message?.icon) return message.icon;\n\n switch (message?.severity) {\n case 'info':\n return 'pi-info-circle';\n case 'warning':\n return 'pi-exclamation-triangle';\n case 'error':\n return 'pi-times-circle';\n case 'success':\n return 'pi-check';\n default:\n return '';\n }\n }\n\n public onShowNotificationInDialog(message: Message) {\n this.dialogNotification.set(message);\n }\n\n public onDialogNotificationVisibilityChange(visible: boolean) {\n if (!visible) {\n this.dialogNotification.set(null);\n }\n }\n}\n","<ng-content></ng-content>\n<p-confirmDialog appendTo=\"body\" [baseZIndex]=\"50\"></p-confirmDialog>\n\n<p-toast [baseZIndex]=\"50\">\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getNotificationIconClass(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n </div>\n </ng-template>\n</p-toast>\n\n<p-dialog\n [visible]=\"isDialogNotificationVisible()\"\n (visibleChange)=\"onDialogNotificationVisibilityChange($event)\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification()?.severity ?? '')\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + getNotificationIconClass(dialogNotification())\"></span>\n {{ dialogNotification()?.summary ?? '' }}\n </span>\n </ng-template>\n <div>\n {{ dialogNotification()?.detail ?? '' }}\n </div>\n</p-dialog>\n","import {MenuItem} from 'primeng/api';\n\nimport {MngInternalError, MngMenuItem} from '../models';\n\nexport class RouteUtil {\n public static removeEmptyPathSegments(path: Array<string>) {\n const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);\n return filteredPath.length > 0 ? filteredPath : [''];\n }\n\n public static appendPathToBasePath(basePath: Array<string>, path: Array<string>) {\n if (path.length > 0) {\n if (path[0].startsWith('/')) {\n return path;\n } else if (path[0].startsWith('../')) {\n throw new MngInternalError('Not implemented', {name: 'RouteUtilsError'});\n } else {\n return RouteUtil.removeEmptyPathSegments([...basePath, ...path]);\n }\n } else {\n return basePath;\n }\n }\n\n public static doesUrlMatchRouterLink(link: Array<string> | string, url: Array<string> | string) {\n if (typeof url === 'string' && url.startsWith('/')) {\n url = url.substring(1);\n } else if (Array.isArray(url) && url.length > 0 && url[0].startsWith('/')) {\n url[0] = url[0].substring(1);\n }\n\n const routeSegments = Array.isArray(link) ? link : link.split('/');\n const urlSegments = Array.isArray(url) ? url : url.split('#')[0].split('?')[0].split('/');\n\n if (routeSegments.length > 0 && urlSegments.length > 0) {\n for (let i = 0; i < routeSegments.length; i++) {\n if (i < urlSegments.length) {\n if (routeSegments[i] !== urlSegments[i]) {\n return false;\n }\n } else {\n break;\n }\n }\n return true;\n }\n return false;\n }\n\n public static adjustMenuLazyChildrenRouterLinks(rootMenuItem: MenuItem, lazyChildren: Array<MngMenuItem>) {\n return lazyChildren.map(i => {\n const childMenuItem = {...i};\n if (childMenuItem.routerLink) {\n childMenuItem.routerLink = RouteUtil.appendPathToBasePath(\n rootMenuItem.routerLink,\n typeof childMenuItem.routerLink === 'string' ? [childMenuItem.routerLink] : childMenuItem.routerLink\n );\n }\n if (Array.isArray(childMenuItem.items)) {\n childMenuItem.items = this.adjustMenuLazyChildrenRouterLinks(rootMenuItem, childMenuItem.items);\n }\n return childMenuItem;\n });\n }\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {Component, EventEmitter, HostBinding, Injector, Input, OnDestroy, OnInit, Output, runInInjectionContext} from '@angular/core';\nimport {\n ActivatedRoute,\n CanActivateFn,\n GuardsCheckEnd,\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {BehaviorSubject, Observable, Subscription, combineLatest, distinctUntilChanged, from, of} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngAuthorizationService} from '../../security';\nimport {MngCommonsService, MngRouterService} from '../../services';\nimport {RouteUtil} from '../../utils/route.util';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: './menu-item.component.html',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.layout-root-menuitem]': 'root',\n '[class.active-menuitem]': 'active'\n },\n imports: [AsyncPipe, TranslateModule, NgClass, RippleModule, RouterLink, RouterLinkActive],\n animations: [\n trigger('children', [\n state(\n 'void',\n style({\n height: '0px'\n })\n ),\n state(\n 'hiddenAnimated',\n style({\n height: '0px'\n })\n ),\n state(\n 'visibleAnimated',\n style({\n height: '*'\n })\n ),\n state(\n 'visible',\n style({\n height: '*',\n 'z-index': 100\n })\n ),\n state(\n 'hidden',\n style({\n height: '0px',\n 'z-index': '*'\n })\n ),\n transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ]\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuItemComponent implements OnInit, OnDestroy {\n @Input({required: true}) item!: MngMenuItem;\n @Input() index = 0;\n @Input() root = false;\n @Input() parentKey: string | null = null;\n\n @Output('visibleChange') visibleChangeEventEmitter = new EventEmitter<boolean>();\n\n @HostBinding('class.py-0') private hostClassNoPadding = false;\n @HostBinding('class.hidden') private hostClassChildrenHidden = false;\n\n public key = '';\n public active = false;\n public hover = false;\n\n private guardsIsAllowedSubject = new BehaviorSubject(true);\n private guardsIsAllowed$: Observable<boolean>;\n private isPermittedSubject = new BehaviorSubject(true);\n private isPermitted$: Observable<boolean>;\n private isVisibleSubject = new BehaviorSubject(true);\n public isVisible$: Observable<boolean>;\n\n private childrenVisibilitySubject: BehaviorSubject<boolean>[] = [];\n\n private itemUrl?: string | UrlTree;\n private menuSourceSubscription?: Subscription;\n private menuResetSubscription?: Subscription;\n private routerEventsSubscription?: Subscription;\n private guardsIsAllowedSubscription?: Subscription;\n private isPermittedSubscription?: Subscription;\n private isVisibleSubscription?: Subscription;\n private isVisibleCombinedSubscription?: Subscription;\n private areChildrenVisibleSubscription?: Subscription;\n private routeLoadedChildrenSubscription?: Subscription;\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private mngRouter: MngRouterService,\n private authorization: MngAuthorizationService,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService\n ) {\n this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());\n this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n this.isVisible$ = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n ngOnInit() {\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n if (this.item.routerLink) {\n if (typeof this.item.routerLink === 'string') {\n this.itemUrl = this.item.routerLink;\n } else {\n this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));\n }\n }\n\n if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.menuSourceSubscription = this.mngCommons.menuActiveKey$.subscribe(key => {\n // deactivate current active menu\n if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {\n this.active = false;\n }\n });\n\n this.menuResetSubscription = this.mngCommons.menuReset$.subscribe(() => {\n this.active = false;\n });\n\n if (this.item.lazyChildren) {\n this.routeLoadedChildrenSubscription = this.mngRouter.getRouteLoadedChildren$(this.item.routerLink ?? '/').subscribe({\n next: routes => {\n let menuItems = routes.filter(r => Array.isArray((r.data as MngRouterData | undefined)?.menuItems)).flatMap(r => (r.data as MngRouterData).menuItems!);\n menuItems = RouteUtil.adjustMenuLazyChildrenRouterLinks(this.item, menuItems);\n\n this.item.items = menuItems;\n this.item.lazyChildren = false;\n\n this.processItemChildrenVisibility();\n }\n });\n }\n\n this.routerEventsSubscription = this.router.events.subscribe(next => {\n if (next instanceof GuardsCheckEnd && next.shouldActivate) {\n this.checkIfMenuItemIsAllowedFromGuard(next.state);\n } else if (next instanceof NavigationEnd) {\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.active = false;\n } else {\n this.updateActiveStateFromRoute();\n }\n }\n });\n\n if (this.item.permissions) {\n this.isPermittedSubscription = this.authorization.isPermitted(this.item.permissions).subscribe({\n next: isPermitted => {\n this.isPermittedSubject.next(isPermitted);\n }\n });\n }\n\n this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);\n\n this.isVisibleCombinedSubscription = combineLatest([of(this.item.visible !== false), this.isPermitted$, this.guardsIsAllowed$]).subscribe({\n next: res => {\n const isVisible = res.every(r => r === true);\n this.hostClassNoPadding = !isVisible;\n this.isVisibleSubject.next(isVisible);\n }\n });\n this.isVisibleSubscription = this.isVisible$.subscribe(v => {\n this.visibleChangeEventEmitter.emit(v);\n });\n\n this.processItemChildrenVisibility();\n }\n\n updateActiveStateFromRoute() {\n if (this.itemUrl) {\n this.active = this.router.isActive(this.itemUrl, <IsActiveMatchOptions>{\n matrixParams: 'ignored',\n queryParams: 'ignored',\n paths: this.item.items ? 'subset' : 'exact',\n fragment: 'ignored'\n });\n } else {\n this.active = false;\n }\n }\n\n itemClick(event: Event) {\n // avoid processing disabled items\n if (this.item.disabled) {\n event.preventDefault();\n return;\n }\n\n // navigate with hover in horizontal mode\n if (this.root) {\n this.mainLayoutService.menuHoverActive = !this.mainLayoutService.menuHoverActive;\n }\n\n // notify other items\n this.mngCommons.menuChangeActiveKey(this.key);\n\n // toggle active state\n if (this.item.items) {\n this.active = !this.active;\n } else {\n // activate item\n this.active = true;\n\n if (this.mainLayoutService.isMobile()) {\n this.mainLayoutService.staticMenuMobileActive = false;\n }\n\n if (this.mngCommons.menuModeIsOverlay) {\n this.mainLayoutService.overlayMenuActive = false;\n }\n\n // reset horizontal menu\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.mngCommons.menuReset();\n this.mainLayoutService.menuHoverActive = false;\n }\n }\n }\n\n onMouseEnter() {\n // activate item on hover\n if (this.root && this.mainLayoutService.menuHoverActive && this.mngCommons.menuModeIsSlim && this.mainLayoutService.isDesktop()) {\n this.mngCommons.menuChangeActiveKey(this.key);\n this.active = true;\n }\n }\n\n ngOnDestroy() {\n this.menuSourceSubscription?.unsubscribe();\n this.menuResetSubscription?.unsubscribe();\n this.routerEventsSubscription?.unsubscribe();\n this.guardsIsAllowedSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleCombinedSubscription?.unsubscribe();\n this.areChildrenVisibleSubscription?.unsubscribe();\n this.routeLoadedChildrenSubscription?.unsubscribe();\n }\n\n onChildVisibleChange(visible: boolean, item: MngMenuItem, idx: number) {\n this.childrenVisibilitySubject[idx].next(visible);\n }\n\n private checkIfMenuItemIsAllowedFromGuard(routerState: RouterStateSnapshot) {\n this.guardsIsAllowedSubscription?.unsubscribe();\n if (this.item.guards?.length) {\n const obs: Observable<boolean | UrlTree>[] = [];\n for (const guard of this.item.guards) {\n if (guard && typeof guard === 'function') {\n const guardFnInstance = guard as CanActivateFn;\n\n runInInjectionContext(this.injector, () => {\n const canActivateRes = guardFnInstance(this.route.snapshot, routerState);\n\n let canActivateObs: Observable<boolean | UrlTree>;\n if (canActivateRes instanceof Observable) {\n canActivateObs = canActivateRes;\n } else if (canActivateRes instanceof Promise) {\n canActivateObs = from(canActivateRes);\n } else {\n canActivateObs = of(canActivateRes);\n }\n obs.push(\n canActivateObs.pipe(\n first(),\n map(res => res === true) // if url tree is present, that means redirect and implies not allowed\n )\n );\n });\n }\n }\n this.guardsIsAllowedSubscription = combineLatest(obs)\n .pipe(first())\n .subscribe(next => {\n const result = next.every(n => n === true);\n this.guardsIsAllowedSubject.next(result);\n });\n } else {\n this.guardsIsAllowedSubject.next(true);\n }\n }\n\n private processItemChildrenVisibility() {\n if (this.item.items) {\n this.childrenVisibilitySubject = this.item.items.map(() => new BehaviorSubject<boolean>(true));\n\n this.areChildrenVisibleSubscription = combineLatest(this.childrenVisibilitySubject.map(s => s.asObservable().pipe(distinctUntilChanged()))).subscribe(visible => {\n const anyChildVisible = visible.some(v => v === true);\n this.hostClassChildrenHidden = !anyChildVisible;\n });\n }\n }\n}\n","@if (isVisible$ | async) {\n @if (root) {\n <div class=\"layout-menuitem-root-text\">{{ item.label! | translate }}</div>\n }\n @if (!item.href) {\n @if (!item.routerLink || item.items) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n @if (item.items || item.lazyChildren) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item.badge) {\n <span class=\"menuitem-badge\">{{ item.badge }}</span>\n }\n </a>\n } @else if (item.routerLink && !item.items) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{paths: 'exact', matrixParams: 'ignored', queryParams: 'ignored', fragment: 'ignored'}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n @if (item.items || item.lazyChildren) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item.badge) {\n <span class=\"menuitem-badge\">{{ item.badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item.items) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [attr.href]=\"item.href\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n @if (item.items || item.lazyChildren) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item.badge) {\n <span class=\"menuitem-badge\">{{ item.badge }}</span>\n }\n </a>\n }\n }\n @if (item.items || (item.items && (mngCommons.menuModeIsStatic$ | async) && root)) {\n <ul\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n @for (child of item.items; track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n }\n </ul>\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\n\nimport {BehaviorSubject} from 'rxjs';\n\nimport {VersionConfig, VersionConfigType, VersionInfo} from '../../models';\nimport {JsonPathPipe} from '../../pipes';\nimport {MngVersionService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngVersionComponent implements OnInit {\n @Input('version') public initVersion?: VersionConfigType;\n\n public displayName?: string;\n public displayVersion?: string;\n public versions?: Array<VersionConfig>;\n\n private loadingSubject = new BehaviorSubject(false);\n public loading$ = this.loadingSubject.asObservable();\n\n constructor(\n private jsonPathPipe: JsonPathPipe,\n private versionService: MngVersionService\n ) {}\n\n ngOnInit() {\n if (Array.isArray(this.initVersion)) {\n this.versions = this.initVersion;\n } else if (typeof this.initVersion === 'string') {\n this.displayVersion = this.initVersion;\n } else if (typeof this.initVersion !== 'undefined') {\n if (this.initVersion['info' as keyof object] || this.initVersion['urlPath' as keyof object]) {\n const config = this.initVersion as VersionConfig;\n this.displayName = config.displayName;\n\n if (config.urlPath) {\n this.loadingSubject.next(true);\n this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).subscribe({\n next: res => {\n this.displayVersion = this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$');\n this.loadingSubject.next(false);\n },\n error: () => {\n this.displayVersion = '';\n this.loadingSubject.next(false);\n }\n });\n } else {\n this.displayVersion = this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion as VersionInfo;\n this.displayVersion = this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n }\n}\n","@if (versions) {\n @for (v of versions; track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br/>\n }\n }\n} @else {\n @if (displayName) {\n {{ displayName }}:\n }\n @if ((loading$ | async) === false) {\n {{ displayVersion }}\n }\n}\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\n\nimport {MngMenuItem} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngMenuItemComponent} from './menu-item.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngVersionComponent} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-menu',\n templateUrl: './menu.component.html',\n imports: [NgClass, AsyncPipe, MngMenuItemComponent, MngVersionComponent, RouterLink],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuComponent implements OnInit {\n public menuItems: Array<MngMenuItem> = [];\n\n constructor(\n private route: ActivatedRoute,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService\n ) {}\n\n ngOnInit(): void {\n if (Array.isArray(this.mngCommons.menuItems)) {\n this.menuItems = this.mngCommons.menuItems;\n } else if (Array.isArray((this.route.snapshot.data as MngRouterData | undefined)?.menuItems)) {\n this.menuItems = (this.route.snapshot.data as MngRouterData).menuItems!;\n }\n }\n}\n","<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n @if ((mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)) {\n <a routerLink=\"/\" class=\"app-name\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n }\n @if (mngCommons.menuPinEnabled) {\n <a class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n @if (mngCommons.menuModeIsOverlay$ | async) {\n <span class=\"pi pi-times\"></span>\n }\n @if ((mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)) {\n <span class=\"pi pi-unlock\"></span>\n }\n @if ((mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)) {\n <span class=\"pi pi-lock\"></span>\n }\n </a>\n }\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n @for (item of menuItems; track item; let i = $index) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n </ul>\n </div>\n\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {Component, ElementRef, OnDestroy, OnInit, inject} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {IUser} from '../../models';\nimport {MngEnumerateAsyncPipe} from '../../pipes';\nimport {MngCommonsService} from '../../services';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component',\n imports: [NgClass, AsyncPipe, TranslateModule, MngEnumerateAsyncPipe],\n templateUrl: './topbar-user.component.html'\n})\nexport class MngTopbarUserComponent implements OnInit, OnDestroy {\n public user?: IUser;\n public userRoles$!: Observable<string[]>;\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public elementRef: ElementRef,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService\n ) {}\n\n ngOnInit() {\n this.subscriptions.push(\n this.mngCommons.user$.subscribe(u => {\n this.user = u;\n })\n );\n this.userRoles$ = this.mngCommons.userRoles$;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(value => value.unsubscribe());\n }\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n\n public click(event: any) {\n this.mainLayoutService.onTopbarItemClick(event, this.elementRef.nativeElement);\n }\n}\n","<a href=\"#\" class=\"user-block\" (click)=\"click($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span class=\"profile-item-username hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"fadeInDown dropdown-window\">\n <li role=\"menuitem\">\n <a>\n <div class=\"flex\">\n <div class=\"flex-grow-0\">\n <i class=\"pi pi-fw pi-user\"></i>\n </div>\n <div class=\"flex-grow-1\">\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n @if (((userRoles$ | async)?.length ?? 0) > 0) {\n <small>\n <br />\n {{ userRoles$ | mgnEnumerateAsync: undefined : undefined : undefined : 'roles' | async }}\n </small>\n }\n </div>\n </div>\n </a>\n </li>\n @if (user?.logout || user?.logoutUrl) {\n <li role=\"menuitem\">\n <a [href]=\"user?.logoutUrl ?? hrefJsVoid\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {ApplicationRef, ChangeDetectionStrategy, Component, ElementRef, Inject, OnInit, QueryList, Type, ViewChild, ViewChildren} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {ActivatedRoute, RouterModule} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DropdownModule} from 'primeng/dropdown';\n\nimport {MngComponentDirective, MngTemplateDirective} from '../../directives';\nimport {MngModuleConfig} from '../../models';\nimport {MngEnumerateAsyncPipe} from '../../pipes';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {MngBreadcrumbComponent} from './breadcrumb.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngTopbarUserComponent} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar',\n templateUrl: './topbar.component.html',\n imports: [AsyncPipe, NgClass, TranslateModule, MngComponentDirective, MngEnumerateAsyncPipe, DropdownModule, FormsModule, RouterModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTopbarComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n @ViewChild('userMenuItem') topbarInjectionRef!: ElementRef;\n\n public breadcrumbComponent: Type<any> = MngBreadcrumbComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n public topbarUserComponent: Type<any> = MngTopbarUserComponent;\n\n public languages: Array<string> = ['en'];\n public selectedLanguage = 'en';\n\n constructor(\n private applicationRef: ApplicationRef,\n private route: ActivatedRoute,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService,\n @Inject(MNG_MODULE_CONFIG_IT) private config: MngModuleConfig\n ) {}\n\n ngOnInit(): void {\n if (this.config.layout?.components?.topbarUser) {\n this.topbarUserComponent = this.config.layout.components.topbarUser;\n }\n if (this.config.layout?.components?.breadcrumb) {\n this.breadcrumbComponent = this.config.layout.components.breadcrumb;\n }\n if (this.config.layout?.components?.menu) {\n this.menuComponent = this.config.layout.components.menu;\n }\n\n this.languages = this.mngCommons.appLanguages;\n this.selectedLanguage = this.mngCommons.getOrInitLanguage();\n }\n\n public switchLanguage(language: string) {\n this.mngCommons.appLanguage = language;\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n @if ((mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)) {\n <a href=\"#\" class=\"topbar-menu-button\" (click)=\"mainLayoutService.onMenuButtonClick($event)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n }\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li\n #userMenuItem\n class=\"profile-item profile-item-extended\"\n [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === userMenuItem}\"\n [mngComponent]=\"topbarUserComponent\"\n [attachToHost]=\"true\"></li>\n @if (languages.length > 1) {\n <li class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n }\n </ul>\n </div>\n</div>\n","import {AsyncPipe, NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostListener, OnInit, QueryList, Type, ViewChildren, inject} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {MngComponentDirective, MngTemplateDirective} from '../../directives';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {NotificationWrapperComponent} from '../notification/notification-wrapper.component';\nimport {MngFooterComponent} from './footer.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngTopbarComponent} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n templateUrl: './main-layout.component.html',\n providers: [MngMainLayoutComponentService],\n imports: [NgClass, AsyncPipe, MngComponentDirective, RouterOutlet, NotificationWrapperComponent, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMainLayoutComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n\n public readonly mngCommons = inject(MngCommonsService);\n public readonly mainLayoutService = inject(MngMainLayoutComponentService);\n public readonly config = inject(MNG_MODULE_CONFIG_IT);\n\n public useNotificationWrapper = true;\n public topbarComponent: Type<any> = MngTopbarComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n public footerComponent: Type<any> = MngFooterComponent;\n\n ngOnInit() {\n this.useNotificationWrapper = !this.config.layout?.disableNotificationWrapper;\n if (this.config.layout?.components?.topbar) {\n this.topbarComponent = this.config.layout.components.topbar;\n }\n if (this.config.layout?.components?.menu) {\n this.menuComponent = this.config.layout.components.menu;\n }\n if (this.config.layout?.components?.footer) {\n this.footerComponent = this.config.layout.components.footer;\n }\n\n this.mainLayoutService.innerWidth = window.innerWidth;\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent) {\n const target: any = event.target;\n this.mainLayoutService.innerWidth = target?.innerWidth ?? window.innerWidth;\n }\n}\n","@if (useNotificationWrapper) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n @if (\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n ) {\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n }\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngCommonsService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb-v2',\n imports: [NgClass, InputTextModule, ButtonModule, AsyncPipe, TranslateModule],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngBreadcrumbV2Component {\n private mngCommons = inject(MngCommonsService);\n\n public mappedBreadcrumbs$: Observable<MenuItem[]> = this.mngCommons.breadcrumbs$.pipe(map((items: MngMenuItem[]) => items.map(el => this.mapMngMenuItem(el))));\n\n private mapMngMenuItem(item: MngMenuItem): MenuItem {\n return {\n ...item,\n url: item.href,\n badgeStyleClass: item.badgeClassName,\n styleClass: item.className\n } as MenuItem;\n }\n}\n","<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n @for (item of mappedBreadcrumbs$ | async; track item; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n </nav>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\n\nimport {BehaviorSubject, take} from 'rxjs';\n\nimport {VersionConfig, VersionConfigType, VersionInfo} from '../../models';\nimport {JsonPathPipe} from '../../pipes';\nimport {MngVersionService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-version-v2',\n templateUrl: './version.component.html',\n imports: [AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngVersionV2Component implements OnInit {\n @Input('version') public initVersion?: VersionConfigType;\n\n public displayName?: string;\n public displayVersion?: string;\n public versions?: Array<VersionConfig>;\n\n private loadingSubject = new BehaviorSubject(false);\n public loading$ = this.loadingSubject.asObservable();\n\n constructor(\n private jsonPathPipe: JsonPathPipe,\n private versionService: MngVersionService\n ) {}\n\n ngOnInit() {\n if (Array.isArray(this.initVersion)) {\n this.versions = this.initVersion;\n } else if (typeof this.initVersion === 'string') {\n this.displayVersion = this.initVersion;\n } else if (typeof this.initVersion !== 'undefined') {\n if (this.initVersion['info' as keyof object] || this.initVersion['urlPath' as keyof object]) {\n const config = this.initVersion as VersionConfig;\n this.displayName = config.displayName;\n\n if (config.urlPath) {\n this.loadingSubject.next(true);\n this.versionService\n .loadVersion(config.urlPath, config.urlBaseConfigKey)\n .pipe(take(1))\n .subscribe({\n next: res => {\n this.displayVersion = this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$');\n this.loadingSubject.next(false);\n },\n error: () => {\n this.displayVersion = '';\n this.loadingSubject.next(false);\n }\n });\n } else {\n this.displayVersion = this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion as VersionInfo;\n this.displayVersion = this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n }\n}\n","@if (versions) {\n @for (v of versions; track v; let last = $last) {\n <mng-version-v2 [version]=\"v\"></mng-version-v2>\n @if (!last) {\n <br/>\n }\n }\n} @else {\n @if(displayName) {\n {{ displayName }}:\n }\n @if ((loading$ | async) === false) {\n {{ displayVersion }}\n }\n}\n","import {NgOptimizedImage} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit, Type, inject} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {MngComponentDirective} from '../../directives';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {MngVersionV2Component} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-footer-v2',\n templateUrl: 'footer.component.html',\n imports: [TranslateModule, NgOptimizedImage, MngVersionV2Component, MngComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFooterV2Component implements OnInit {\n private config = inject(MNG_MODULE_CONFIG_IT);\n public mngCommons = inject(MngCommonsService);\n\n public currentYear = new Date().getFullYear();\n public versionComponent: Type<any> | false = MngVersionV2Component;\n\n ngOnInit() {\n if (this.config.layoutV2?.components?.version !== undefined) {\n this.versionComponent = this.config.layoutV2?.components?.version;\n }\n }\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n </div>\n @if (versionComponent) {\n <div class=\"version\" [mngComponent]=\"versionComponent\" [inputs]=\"{version: mngCommons.appVersion}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n","import {Injectable, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {MngModuleConfig} from '../../../models';\nimport {MNG_MODULE_CONFIG_IT} from '../../../services/tokens';\nimport {LayoutState} from '../model';\n\n@Injectable()\nexport class MngMainLayoutComponentV2Service {\n private config: MngModuleConfig = inject(MNG_MODULE_CONFIG_IT);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen() {\n this.overlayOpen.next(null);\n }\n\n isOverlay() {\n return this.config.layoutV2?.menuMode === 'overlay';\n }\n\n isSlim() {\n return this.config.layoutV2?.menuMode === 'slim';\n }\n\n isSlimPlus() {\n return this.config.layoutV2?.menuMode === 'slim-plus';\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n}\n","import {Injectable, inject} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subject, Subscription, take} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../../models';\nimport {MngRouterData} from '../../../router/models';\nimport {MngLoggerService, MngRouterService} from '../../../services';\nimport {RouteUtil} from '../../../utils/route.util';\nimport {MenuChangeEvent} from '../model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuService {\n private readonly logger = MngLoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly mngRouter = inject(MngRouterService);\n private readonly menuSource = new ReplaySubject<MenuChangeEvent>(1);\n private readonly resetSource = new Subject();\n\n menuSource$ = this.menuSource.asObservable();\n resetSource$ = this.resetSource.asObservable();\n\n private menuItems: Array<MngMenuItem> = [];\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n initialize(menuItems: Array<MngMenuItem>) {\n this.menuItems = menuItems;\n\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this.generateMenuItemKeys(menuItems);\n\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(e => {\n this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects);\n });\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n\n private generateMenuItemKeys(menuItems: Array<MngMenuItem>, parentKey = '') {\n menuItems.forEach((item, idx) => {\n if (!item.index) {\n item.index = idx;\n item.key = parentKey ? parentKey + '-' + idx : idx.toString();\n }\n\n if (item.items) {\n this.generateMenuItemKeys(item.items, item.key);\n } else if (item.lazyChildren) {\n this.listenToMenuItemLazyChildrenLoad(item);\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems, url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuSource.next({\n key: matchKey,\n routeEvent: true\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: MngMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.mngRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n let menuItems = routes.filter(r => Array.isArray((r.data as MngRouterData | undefined)?.menuItems)).flatMap(r => (r.data as MngRouterData).menuItems!);\n menuItems = RouteUtil.adjustMenuLazyChildrenRouterLinks(menuItem, menuItems);\n\n menuItem.items = menuItems;\n menuItem.lazyChildren = false;\n\n this.generateMenuItemKeys(menuItem.items, menuItem.key);\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<MngMenuItem>, url: string): MngMenuItem[][] {\n const matches: MngMenuItem[][] = [];\n for (const menuItem of menuItems) {\n if (menuItem.routerLink) {\n const isActive = RouteUtil.doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(menuItem.items)) {\n const itemsMatches = this.findActiveRouteMatches(menuItem.items, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(menuItem.items)) {\n const itemsMatches = this.findActiveRouteMatches(menuItem.items, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.resetSource.next(true);\n }\n}\n","import {AnimationEvent, animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n inject,\n runInInjectionContext,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute, CanActivateFn, GuardsCheckEnd, IsActiveMatchOptions, NavigationEnd, Router, RouterModule, RouterStateSnapshot, UrlTree} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {BehaviorSubject, Observable, Subscription, combineLatest, distinctUntilChanged, from, of} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngAuthorizationService} from '../../security';\nimport {MenuService, MngMainLayoutComponentV2Service} from './services';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem-v2]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RippleModule, TooltipModule, RouterModule, TranslateModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('children', [\n state(\n 'collapsed',\n style({\n height: '0'\n })\n ),\n state(\n 'expanded',\n style({\n height: '*'\n })\n ),\n state(\n 'hidden',\n style({\n display: 'none'\n })\n ),\n state(\n 'visible',\n style({\n display: 'block'\n })\n ),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ]\n})\nexport class MngMenuItemV2Component implements OnInit, OnDestroy, AfterViewChecked {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly route = inject(ActivatedRoute);\n private readonly menuService = inject(MenuService);\n private readonly authorization = inject(MngAuthorizationService);\n private readonly layoutService = inject(MngMainLayoutComponentV2Service);\n\n private isPermittedSubject = new BehaviorSubject(true);\n private isPermitted$: Observable<boolean>;\n private guardsIsAllowedSubject = new BehaviorSubject(true);\n private guardsIsAllowed$: Observable<boolean>;\n private childrenVisibilitySubject: BehaviorSubject<boolean>[] = [];\n\n private itemUrl?: string | UrlTree;\n\n private routerEventsSubscription?: Subscription;\n private guardsIsAllowedSubscription?: Subscription;\n\n @Input({required: true}) item!: MngMenuItem;\n @Input() @HostBinding('class.layout-root-menuitem') root = false;\n @Output('visibleChange') visibleChangeEventEmitter = new EventEmitter<boolean>();\n\n @ViewChild('submenu') submenu!: ElementRef;\n\n public active = signal(false);\n public visible = signal(false);\n\n constructor() {\n this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());\n this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n\n this.menuService.menuSource$.pipe(takeUntilDestroyed()).subscribe(value => {\n setTimeout(() => {\n this.active.set(this.item.key === value.key || value.key.startsWith((this.item.key ?? '') + '-'));\n });\n });\n\n this.menuService.resetSource$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.active.set(false);\n });\n }\n\n ngOnInit() {\n if (this.item.routerLink) {\n if (typeof this.item.routerLink === 'string') {\n this.itemUrl = this.item.routerLink;\n } else {\n this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));\n }\n }\n\n this.routerEventsSubscription = this.router.events.subscribe(next => {\n if (next instanceof GuardsCheckEnd && next.shouldActivate) {\n this.checkIfMenuItemIsAllowedFromGuard(next.state);\n } else if (next instanceof NavigationEnd) {\n if (!this.layoutService.isMobile()) {\n this.active.set(false);\n } else {\n this.updateActiveStateFromRoute();\n }\n }\n });\n\n if (this.item.permissions) {\n this.authorization\n .isPermitted(this.item.permissions)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: isPermitted => {\n this.isPermittedSubject.next(isPermitted);\n }\n });\n }\n\n this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);\n\n combineLatest([of(this.item.visible !== false), this.isPermitted$, this.guardsIsAllowed$])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: res => {\n const isVisible = res.every(r => r === true);\n this.active.set(!isVisible);\n this.visible.set(isVisible);\n }\n });\n\n this.processItemChildrenVisibility();\n }\n\n ngAfterViewChecked() {\n if (this.root && this.active() && this.layoutService.isDesktop() && (this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {\n this.calculatePosition(this.submenu?.nativeElement, this.submenu?.nativeElement.parentElement);\n }\n }\n\n ngOnDestroy() {\n this.routerEventsSubscription?.unsubscribe();\n this.guardsIsAllowedSubscription?.unsubscribe();\n }\n\n get submenuAnimation() {\n if (this.layoutService.isDesktop() && (this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {\n return this.active() ? 'visible' : 'hidden';\n } else {\n return this.root ? 'expanded' : this.active() ? 'expanded' : 'collapsed';\n }\n }\n\n @HostBinding('class.active-menuitem')\n get activeClass() {\n return this.active() && !this.root;\n }\n\n public itemClick(event: Event) {\n // avoid processing disabled items\n if (this.item.disabled) {\n event.preventDefault();\n return;\n }\n\n // toggle active state\n if (this.item.items || this.item.lazyChildren) {\n if ((this.root || this.active()) && (this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {\n this.layoutService.onOverlaySubmenuOpen();\n }\n } else {\n if (this.layoutService.isMobile()) {\n this.layoutService.state.update(state => ({\n ...state,\n staticMenuMobileActive: false\n }));\n }\n if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {\n this.menuService.reset();\n this.layoutService.state.update(state => ({\n ...state,\n menuHoverActive: false\n }));\n }\n }\n }\n\n onSubmenuAnimated(event: AnimationEvent) {\n if (event.toState === 'visible' && this.layoutService.isDesktop() && (this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {\n const el = <HTMLUListElement>event.element;\n const elParent = <HTMLUListElement>el.parentElement;\n this.calculatePosition(el, elParent);\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: MngMenuItem, idx: number) {\n this.childrenVisibilitySubject[idx].next(visible);\n }\n\n private calculatePosition(overlay: HTMLElement, target: HTMLElement) {\n if (overlay) {\n const top = target.getBoundingClientRect().top;\n const vHeight = window.innerHeight;\n const oHeight = overlay.offsetHeight;\n\n // reset\n overlay.style.top = '';\n overlay.style.left = '';\n if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {\n const height = top + oHeight;\n overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;\n }\n }\n }\n\n private checkIfMenuItemIsAllowedFromGuard(routerState: RouterStateSnapshot) {\n this.guardsIsAllowedSubscription?.unsubscribe();\n if (this.item.guards?.length) {\n const obs: Observable<boolean | UrlTree>[] = [];\n for (const guard of this.item.guards) {\n if (guard && typeof guard === 'function') {\n const guardFnInstance = guard as CanActivateFn;\n\n runInInjectionContext(this.injector, () => {\n const canActivateRes = guardFnInstance(this.route.snapshot, routerState);\n\n let canActivateObs: Observable<boolean | UrlTree>;\n if (canActivateRes instanceof Observable) {\n canActivateObs = canActivateRes;\n } else if (canActivateRes instanceof Promise) {\n canActivateObs = from(canActivateRes);\n } else {\n canActivateObs = of(canActivateRes);\n }\n obs.push(\n canActivateObs.pipe(\n first(),\n map(res => res === true) // if url tree is present, that means redirect and implies not allowed\n )\n );\n });\n }\n }\n this.guardsIsAllowedSubscription = combineLatest(obs)\n .pipe(first())\n .subscribe(next => {\n const result = next.every(n => n === true);\n this.guardsIsAllowedSubject.next(result);\n });\n } else {\n this.guardsIsAllowedSubject.next(true);\n }\n }\n\n private updateActiveStateFromRoute() {\n if (this.itemUrl) {\n this.active.set(\n this.router.isActive(this.itemUrl, <IsActiveMatchOptions>{\n matrixParams: 'ignored',\n queryParams: 'ignored',\n paths: this.item.items ? 'subset' : 'exact',\n fragment: 'ignored'\n })\n );\n } else {\n this.active.set(false);\n }\n }\n\n private processItemChildrenVisibility() {\n if (this.item.items) {\n this.childrenVisibilitySubject = this.item.items.map(() => new BehaviorSubject<boolean>(true));\n\n combineLatest(this.childrenVisibilitySubject.map(s => s.asObservable().pipe(distinctUntilChanged())))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(visible => {\n const anyChildVisible = visible.some(v => v === true);\n this.active.set(!anyChildVisible);\n });\n }\n }\n}\n","@if (visible()) {\n @if (root) {\n <div class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n }\n @if (!item.href) {\n @if (!item.routerLink || item.items) {\n <a\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n @if (item.items || item.lazyChildren) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item.badge) {\n <span class=\"menuitem-badge\">{{ item.badge }}</span>\n }\n </a>\n } @else if (item.routerLink && !item.items) {\n <a\n (click)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item.preserveFragment\"\n [skipLocationChange]=\"item.skipLocationChange\"\n [replaceUrl]=\"item.replaceUrl\"\n [queryParams]=\"item.queryParams\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n @if (item.items || item.lazyChildren) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item.badge) {\n <span class=\"menuitem-badge\">{{ item.badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item.items) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item.href\" [attr.target]=\"item.target\" [attr.tabindex]=\"0\" [ngClass]=\"item.className ?? ''\" pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n @if (item.items || item.lazyChildren) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item.badge) {\n <span class=\"menuitem-badge\">{{ item.badge }}</span>\n }\n </a>\n }\n }\n @if (item.items) {\n <ul #submenu [@children]=\"submenuAnimation\" (@children.done)=\"onSubmenuAnimated($event)\">\n @for (child of item.items; track child; let i = $index) {\n <li mng-menuitem-v2 [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n }\n </ul>\n }\n}\n","import {ChangeDetectionStrategy, Component, OnInit, inject} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {MngMenuItem} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngMenuItemV2Component} from './menu-item.component';\nimport {MenuService, MngMainLayoutComponentV2Service} from './services';\n\n@Component({\n standalone: true,\n selector: 'mng-menu-v2',\n imports: [MngMenuItemV2Component],\n templateUrl: './menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuV2Component implements OnInit {\n private readonly route = inject(ActivatedRoute);\n private readonly menuService = inject(MenuService);\n private readonly mngCommons = inject(MngCommonsService);\n private readonly layoutService = inject(MngMainLayoutComponentV2Service);\n\n public menuItems: Array<MngMenuItem> = [];\n\n ngOnInit() {\n if (Array.isArray(this.mngCommons.menuItems)) {\n this.menuItems = this.wrapMenuItems(this.mngCommons.menuItems);\n } else if (Array.isArray((this.route.snapshot.data as MngRouterData | undefined)?.menuItems)) {\n this.menuItems = this.wrapMenuItems((this.route.snapshot.data as MngRouterData).menuItems!);\n }\n\n this.menuService.initialize(this.menuItems);\n }\n\n private wrapMenuItems(menuItems: MngMenuItem[]) {\n if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {\n return menuItems;\n } else {\n return [{items: menuItems}];\n }\n }\n}\n","<ul class=\"layout-menu\">\n @for (item of menuItems; track item) {\n @if (!item.separator) {\n <li mng-menuitem-v2 [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n","import {ChangeDetectionStrategy, Component, ElementRef, OnInit, Type, ViewChild, inject} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {MngComponentDirective} from '../../directives';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {MngMenuV2Component} from './menu.component';\nimport {MngMainLayoutComponentV2Service} from './services';\n\n@Component({\n standalone: true,\n selector: 'mng-sidebar-v2',\n imports: [RouterModule, MngMenuV2Component, MngComponentDirective],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngSidebarV2Component implements OnInit {\n private config = inject(MNG_MODULE_CONFIG_IT);\n public mngCommons = inject(MngCommonsService);\n public layoutService = inject(MngMainLayoutComponentV2Service);\n public el = inject(ElementRef);\n\n timeout: any = null;\n\n @ViewChild('menuContainer') menuContainer!: ElementRef;\n\n public menuComponent: Type<any> | false = MngMenuV2Component;\n\n ngOnInit() {\n if (this.config.layoutV2?.components?.menu !== undefined) {\n this.menuComponent = this.config.layoutV2.components.menu;\n }\n }\n\n onMouseEnter() {\n if (!this.layoutService.state().anchored) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.layoutService.state.update(state => ({\n ...state,\n sidebarActive: true\n }));\n }\n }\n\n onMouseLeave() {\n if (!this.layoutService.state().anchored) {\n if (!this.timeout) {\n this.timeout = setTimeout(\n () =>\n this.layoutService.state.update(state => ({\n ...state,\n sidebarActive: false\n })),\n 300\n );\n }\n }\n }\n\n anchor() {\n this.layoutService.state.update(state => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n}\n","<div class=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" [alt]=\"'App logo'\" />\n </div>\n <div class=\"app-logo-normal\">\n <img class=\"h-2rem\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" [alt]=\"'App logo'\" />\n <img class=\"h-2rem ml-3\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" [alt]=\"'App name'\" />\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\nimport {Observable} from 'rxjs';\n\nimport {IUser} from '../../models';\nimport {MngEnumerateAsyncPipe} from '../../pipes';\nimport {MngCommonsService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component-v2',\n imports: [AsyncPipe, MngEnumerateAsyncPipe, TranslateModule, RippleModule, StyleClassModule],\n templateUrl: './topbar-user.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTopbarUserV2Component implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n public mngCommons = inject(MngCommonsService);\n\n public user?: IUser;\n public userRoles$!: Observable<string[]>;\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n\n ngOnInit() {\n this.mngCommons.user$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(u => {\n this.user = u;\n });\n this.userRoles$ = this.mngCommons.userRoles$;\n }\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n}\n","<a\n class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n @if (((userRoles$ | async)?.length ?? 0) > 0) {\n <small>\n <br />\n {{ userRoles$ | mgnEnumerateAsync: undefined : undefined : undefined : 'roles' | async }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (user?.logout || user?.logoutUrl) {\n <li role=\"menuitem\">\n <a\n [href]=\"user?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user, $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnInit, Type, ViewChild, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonModule} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {MngComponentDirective} from '../../directives';\nimport {MngModuleConfig} from '../../models';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {MngBreadcrumbV2Component} from './breadcrumb.component';\nimport {MngMainLayoutComponentV2Service} from './services';\nimport {MngSidebarV2Component} from './sidebar.component';\nimport {MngTopbarUserV2Component} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-v2',\n imports: [\n MngSidebarV2Component,\n NgClass,\n ButtonModule,\n StyleClassModule,\n RippleModule,\n MngBreadcrumbV2Component,\n AsyncPipe,\n DropdownModule,\n MngComponentDirective,\n FormsModule\n ],\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTopbarV2Component implements OnInit {\n public el = inject(ElementRef);\n public mngCommons = inject(MngCommonsService);\n public mainLayoutService = inject(MngMainLayoutComponentV2Service);\n private config: MngModuleConfig = inject(MNG_MODULE_CONFIG_IT);\n\n @ViewChild('menubutton') menuButton!: ElementRef;\n @ViewChild(MngSidebarV2Component) appSidebar!: MngSidebarV2Component;\n\n public breadcrumbComponent: Type<any> | false = MngBreadcrumbV2Component;\n public topbarUserComponent: Type<any> | false = MngTopbarUserV2Component;\n\n public languages: Array<string> = ['en'];\n public selectedLanguage = 'en';\n\n ngOnInit(): void {\n if (this.config.layoutV2?.components?.topbarUser !== undefined) {\n this.topbarUserComponent = this.config.layoutV2.components.topbarUser;\n }\n if (this.config.layoutV2?.components?.breadcrumb !== undefined) {\n this.breadcrumbComponent = this.config.layoutV2.components.breadcrumb;\n }\n\n this.languages = this.mngCommons.appLanguages;\n this.selectedLanguage = this.mngCommons.getOrInitLanguage();\n }\n\n public onMenuButtonClick() {\n this.mainLayoutService.onMenuToggle();\n }\n\n public switchLanguage(language: string) {\n this.mngCommons.appLanguage = language;\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent\" [attachToHost]=\"true\"></div>\n </div>\n }\n </div>\n <div class=\"layout-topbar-menu-section\">\n <mng-sidebar-v2></mng-sidebar-v2>\n </div>\n <div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (languages.length > 1) {\n <li class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n","import {AsyncPipe, NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, Type, ViewChild, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {MngComponentDirective} from '../../directives';\nimport {MngModuleConfig} from '../../models';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {NotificationWrapperComponent} from '../notification/notification-wrapper.component';\nimport {MngBreadcrumbV2Component} from './breadcrumb.component';\nimport {MngFooterV2Component} from './footer.component';\nimport {MenuService, MngMainLayoutComponentV2Service} from './services';\nimport {MngTopbarV2Component} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout-v2',\n imports: [NgClass, RouterModule, MngTopbarV2Component, MngBreadcrumbV2Component, MngComponentDirective, AsyncPipe, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html',\n providers: [MngMainLayoutComponentV2Service],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMainLayoutV2Component implements OnInit, OnDestroy {\n public readonly config: MngModuleConfig = inject(MNG_MODULE_CONFIG_IT);\n public readonly layoutService = inject(MngMainLayoutComponentV2Service);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n @ViewChild('topbarCmp') appTopbar?: ElementRef;\n\n private menuOutsideClickListener: any;\n\n public useNotificationWrapper = true;\n public topbarComponent: Type<any> | false = MngTopbarV2Component;\n public breadcrumbsComponent: Type<any> | false = MngBreadcrumbV2Component;\n public footerComponent: Type<any> | false = MngFooterV2Component;\n\n constructor() {\n this.layoutService.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar?.nativeElement.isSameNode(event.target) || this.appTopbar?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layoutService.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n ngOnInit() {\n this.useNotificationWrapper = !this.config.layoutV2?.disableNotificationWrapper;\n if (this.config.layoutV2?.components?.topbar !== undefined) {\n this.topbarComponent = this.config.layoutV2.components.topbar;\n }\n if (this.config.layoutV2?.components?.breadcrumb !== undefined) {\n this.breadcrumbsComponent = this.config.layoutV2.components.breadcrumb;\n }\n if (this.config.layoutV2?.components?.footer !== undefined) {\n this.footerComponent = this.config.layoutV2.components.footer;\n }\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layoutService.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n this.menuService.reset();\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': config.app?.colorScheme === 'light',\n 'layout-dark': config.app?.colorScheme === 'dark',\n 'layout-overlay': config.layoutV2?.menuMode === 'overlay',\n 'layout-static': config.layoutV2?.menuMode === 'static',\n 'layout-reveal': config.layoutV2?.menuMode === 'reveal',\n 'layout-drawer': config.layoutV2?.menuMode === 'drawer',\n 'layout-slim': config.layoutV2?.menuMode === 'slim',\n 'layout-slim-plus': config.layoutV2?.menuMode === 'slim-plus',\n 'layout-static-inactive': layoutService.state().staticMenuDesktopInactive && config.layoutV2?.menuMode === 'static',\n 'layout-overlay-active': layoutService.state().overlayMenuActive,\n 'layout-mobile-active': layoutService.state().staticMenuMobileActive,\n 'p-ripple-disabled': !config.layoutV2?.ripple,\n 'layout-sidebar-active': layoutService.state().sidebarActive,\n 'layout-sidebar-anchored': layoutService.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent) {\n <div [mngComponent]=\"footerComponent\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","import {Injector} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {of, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n ActionButtonDescriptor,\n ActionDeleteDescriptorInst,\n ActionDescriptor,\n ActionDescriptorInst,\n ActionEditorAddDescriptor,\n ActionEditorAddDescriptorInst,\n ActionEditorDetailsDescriptor,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptor,\n ActionEditorEditDescriptorInst,\n ActionLinkDescriptor,\n ActionLinkDescriptorInst\n} from '../../../descriptors/action';\nimport {EditorDescriptorInst} from '../../../descriptors/editor';\nimport {ModelDescriptor} from '../../../descriptors/model';\nimport {TableviewDescriptorInst} from '../../../descriptors/tableview';\nimport {ActionPositionEnum} from '../../../descriptors/types';\nimport {MngInternalError} from '../../../models';\nimport {MngRouterData} from '../../../router/models';\nimport {DataProviderExecutor} from '../../../services';\nimport {ButtonStyleRoundedEnum} from '../../../styles';\nimport {StyleLevelEnum, StyleSizeEnum} from '../../../styles/models';\nimport {DataListParamsUtil, ExportUtils, FileUtil} from '../../../utils';\nimport {MngDataLanguageDropdownComponent} from '../../action';\nimport {TableviewActionDefaultCategories} from '../../action/models';\n\nexport enum TableviewDefaultActionsEnum {\n Details,\n Add,\n Edit,\n EditOnDetails,\n Delete,\n DeleteOnDetails,\n Refresh,\n Export,\n ExportJson,\n ExportCsv,\n LocalizationLanguageSelect\n}\n\nexport class TableviewDefaultActions {\n private static readonly DEFAULT_ACTIONS = [\n TableviewDefaultActionsEnum.Details,\n TableviewDefaultActionsEnum.Add,\n TableviewDefaultActionsEnum.Edit,\n TableviewDefaultActionsEnum.EditOnDetails,\n TableviewDefaultActionsEnum.Delete,\n TableviewDefaultActionsEnum.DeleteOnDetails,\n TableviewDefaultActionsEnum.Refresh,\n TableviewDefaultActionsEnum.Export,\n TableviewDefaultActionsEnum.ExportJson,\n TableviewDefaultActionsEnum.ExportCsv,\n TableviewDefaultActionsEnum.LocalizationLanguageSelect\n ];\n\n public static getDefaultActions() {\n return [...TableviewDefaultActions.DEFAULT_ACTIONS];\n }\n\n public static createActions(\n tableview: TableviewDescriptorInst<any, any, any>,\n injector: Injector,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>\n ): Array<ActionDescriptorInst<any>> {\n return (defaultActions ?? TableviewDefaultActions.getDefaultActions())\n .map(t => TableviewDefaultActions.createAction(t, tableview, injector, defaultActions, defaultActionsOverrides))\n .filter(e => e != null) as Array<ActionDescriptorInst<any>>;\n }\n\n public static createAction(\n type: TableviewDefaultActionsEnum,\n tableview: TableviewDescriptorInst<any, any, any>,\n injector: Injector,\n defaultActions?: TableviewDefaultActionsEnum[],\n defaultActionsOverrides?: Record<number, ActionDescriptorInst<any>>\n ): ActionDescriptorInst<any> | null {\n if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {\n return defaultActionsOverrides[type];\n }\n\n switch (type) {\n // table row actions\n case TableviewDefaultActionsEnum.Details:\n return TableviewDefaultActions.details(tableview.detailsEditor, injector);\n case TableviewDefaultActionsEnum.Edit:\n return TableviewDefaultActions.edit(tableview.editEditor, injector);\n case TableviewDefaultActionsEnum.Delete:\n return TableviewDefaultActions.delete(tableview.model, injector);\n // table toolbar actions\n case TableviewDefaultActionsEnum.Add:\n return TableviewDefaultActions.add(tableview.addEditor, injector);\n case TableviewDefaultActionsEnum.LocalizationLanguageSelect:\n return TableviewDefaultActions.LocalizationLanguageSelect(tableview);\n case TableviewDefaultActionsEnum.Refresh:\n return TableviewDefaultActions.refresh(tableview.model);\n case TableviewDefaultActionsEnum.Export:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)\n ? TableviewDefaultActions.export(tableview, injector, defaultActions)\n : null;\n //details actions\n case TableviewDefaultActionsEnum.EditOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit)\n ? TableviewDefaultActions.editOnDetails(tableview.model, TableviewDefaultActions.edit(tableview.editEditor, injector), injector)\n : null;\n case TableviewDefaultActionsEnum.DeleteOnDetails:\n return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete)\n ? TableviewDefaultActions.deleteOnDetails(tableview.model, injector)\n : null;\n // subactions\n case TableviewDefaultActionsEnum.ExportJson:\n case TableviewDefaultActionsEnum.ExportCsv:\n return null;\n default:\n throw new MngInternalError(`Tableview default action of type ${type} not supported`);\n }\n }\n\n private static getRouteData(injector: Injector) {\n return injector.get(ActivatedRoute).snapshot.data as MngRouterData;\n }\n\n public static details<Model>(descriptor: EditorDescriptorInst<Model>, injector: Injector): ActionEditorDetailsDescriptorInst<Model> | null {\n const routeData = TableviewDefaultActions.getRouteData(injector);\n return !routeData.tableviewActions || routeData.tableviewActions.hasDetails ? ActionEditorDetailsDescriptor.create(descriptor) : null;\n }\n\n public static add<Model>(descriptor: EditorDescriptorInst<Model>, injector: Injector): ActionEditorAddDescriptorInst<Model> | null {\n const routeData = TableviewDefaultActions.getRouteData(injector);\n return !routeData.tableviewActions || routeData.tableviewActions.hasAdd ? ActionEditorAddDescriptor.create(descriptor) : null;\n }\n\n public static edit<Model>(descriptor: EditorDescriptorInst<Model>, injector: Injector): ActionEditorEditDescriptorInst<Model> | null {\n const routeData = TableviewDefaultActions.getRouteData(injector);\n return !routeData.tableviewActions || routeData.tableviewActions.hasEdit ? ActionEditorEditDescriptor.create(descriptor) : null;\n }\n\n public static editOnDetails<Model>(\n descriptor: ModelDescriptor<Model>,\n editDescriptor: ActionEditorEditDescriptorInst<Model> | null,\n injector: Injector\n ): ActionLinkDescriptorInst<Model> | null {\n const routeData = TableviewDefaultActions.getRouteData(injector);\n if (routeData.tableviewActions && !routeData.tableviewActions.hasEdit) {\n return null;\n }\n\n const action = editDescriptor ? ActionLinkDescriptor.fromAction(editDescriptor) : ActionLinkDescriptor.fromModel(descriptor, ActionEditorEditDescriptorInst.ACTION_NAME);\n\n action\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit');\n action.button.styleClass.withActionLevel(StyleLevelEnum.Secondary);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n action.button.styleClass.withRoundedButton(ButtonStyleRoundedEnum.DEFAULT);\n action.button.withLabel();\n if (!editDescriptor) action.button.withIcon('pi pi-pencil');\n\n return action;\n }\n\n public static deleteOnDetails<Model>(model: ModelDescriptor<Model>, injector: Injector): ActionDescriptorInst<Model> | null {\n const action = this.delete(model, injector);\n const dataProviderExecutor = injector.get(DataProviderExecutor);\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx =>\n dataProviderExecutor.runDeleteOrFail(ctx).pipe(\n tap(() => {\n ctx.viewContainer?.reloadTable({});\n ctx.viewContainer?.closeEditor();\n })\n )\n );\n action.button.withLabel(undefined);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n\n return action;\n }\n\n return null;\n }\n\n public static delete<Model>(descriptor: ModelDescriptor<Model>, injector: Injector): ActionDeleteDescriptorInst<Model> | null {\n const routeData = TableviewDefaultActions.getRouteData(injector);\n return !routeData.tableviewActions || routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptorInst(descriptor) : null;\n }\n\n public static export<Model>(\n descriptor: TableviewDescriptorInst<Model>,\n injector: Injector,\n defaultActions?: TableviewDefaultActionsEnum[]\n ): ActionDescriptorInst<Model> | null {\n const exportAction = ActionDescriptor.fromModel(descriptor.model, 'export')\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-download'))\n .withSubactionsAsMenu();\n\n const subactions: ActionDescriptorInst<Model>[] = [];\n\n if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson)) subactions.push(this.exportJson(descriptor, injector));\n if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)) subactions.push(this.exportCsv(descriptor, injector));\n\n exportAction.withSubactions(...subactions);\n return exportAction;\n }\n\n public static exportJson<Model>(descriptor: TableviewDescriptorInst<Model>, injector: Injector): ActionDescriptorInst<Model> {\n const dataProviderExecutor = injector.get(DataProviderExecutor);\n return ActionDescriptor.fromModel(descriptor.model, 'exportJson')\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? DataListParamsUtil.copy(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.withDataListParams(params);\n return dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.data, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.typeName ?? '';\n FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n );\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-code'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n }\n\n public static exportCsv<Model>(descriptor: TableviewDescriptorInst<Model>, injector: Injector): ActionDescriptorInst<Model> {\n const dataProviderExecutor = injector.get(DataProviderExecutor);\n return ActionDescriptor.fromModel(descriptor.model, 'exportCsv')\n .withRunFunction(ctx => {\n const params = ctx.parameters.dataListParams ? DataListParamsUtil.copy(ctx.parameters.dataListParams) : {};\n params.offset = 0;\n params.limit = 500;\n ctx.parameters.withDataListParams(params);\n return dataProviderExecutor.runGetAllOrFail(ctx).pipe(\n map(res => {\n if (!res.data) {\n return undefined;\n }\n const blob = new Blob([ExportUtils.prepareDataForExport(res.data, ',', descriptor, ctx.injector.get(TranslateService))], {type: 'text/csv;charset=utf-8'});\n const typeName = ctx.instance.action.model?.typeName ?? '';\n FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n })\n );\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-file'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n }\n\n public static refresh<Model>(descriptor: ModelDescriptor<Model>): ActionDescriptorInst<Model> | null {\n const action = ActionDescriptor.fromModel(descriptor, 'refresh')\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunFunction(ctx => {\n ctx.viewContainer?.reloadTable({});\n return of(null);\n });\n action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);\n return action;\n }\n\n public static LocalizationLanguageSelect<Model>(descriptor: TableviewDescriptorInst<Model>): ActionDescriptorInst<Model> | null {\n return descriptor.isLocalized()\n ? ActionDescriptor.fromModel(descriptor.model, 'translator').withPosition(ActionPositionEnum.ToolbarLeft).withComponent(MngDataLanguageDropdownComponent)\n : null;\n }\n}\n","import {Injector} from '@angular/core';\n\nimport {IDataProvider} from '../../../data-providers';\nimport {ActionDescriptorInst} from '../../../descriptors/action';\nimport {TableviewDescriptorInst} from '../../../descriptors/tableview';\nimport {Nullable} from '../../../types';\nimport {TableviewDefaultActions, TableviewDefaultActionsEnum} from '../actions/tableview-default-actions';\nimport {ITableview} from '../models/tableview.model';\n\nexport type TvBuilderSetterParamsType<Descriptor, DataProvider> = {descriptor: Descriptor; dataProvider: DataProvider; injector: Injector};\nexport type TvBuilderActionSetterFnType<ActionModel, ActionService, Descriptor, DataProvider> = (\n params: TvBuilderSetterParamsType<Descriptor, DataProvider>\n) => Nullable<ActionDescriptorInst<ActionModel, ActionService>>;\nexport type TvBuilderDescriptorSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => Descriptor;\nexport type TvBuilderDataProviderSetterFnType<Descriptor, DataProvider> = (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => DataProvider;\n\ntype DefaultAction = {\n type: TableviewDefaultActionsEnum;\n descriptor: ActionDescriptorInst<any, any> | null | undefined;\n};\n\n/**\n * The `TableviewBuilder` class is used to build a tableview configuration.\n * It allows you to set various options such as the descriptor, data provider,\n * default actions, and custom actions for the tableview.\n *\n * @typeparam Model - The main model type.\n * @typeparam Service - The API service type.\n * @typeparam Descriptor - The descriptor type.\n * @typeparam DataProvider - The data provider type.\n * @typeparam Sorts - The sort type representing available sort keys.\n * @typeparam Filters - The filter type representing available filter keys.\n */\nexport class TableviewBuilder<\n Model,\n Service,\n Descriptor extends TableviewDescriptorInst<Model, Sorts, Filters>,\n DataProvider extends IDataProvider<Model, Service>,\n Sorts = keyof Model,\n Filters extends keyof any = keyof Model\n> {\n private defaultActions: DefaultAction[] = TableviewDefaultActions.getDefaultActions().map(a => ({type: a, descriptor: undefined}));\n private readonly _customActions: ActionDescriptorInst<Model>[] = [];\n\n constructor(\n private _descriptor: Descriptor,\n private _dataProvider: DataProvider,\n private readonly injector: Injector\n ) {}\n\n private prepareSetterParams(): TvBuilderSetterParamsType<Descriptor, DataProvider> {\n return {descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector};\n }\n\n /**\n * Sets a descriptor instead of the default one.\n *\n * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDescriptor(fn: TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>): this {\n this._descriptor = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the descriptor using the provided adjust function.\n *\n * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDescriptor(adjustFn: (descriptor: Descriptor) => void): this {\n adjustFn(this._descriptor);\n return this;\n }\n\n /**\n * Sets the data provider for the TvBuilder instance\n *\n * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * * @returns {this} - Returns the current instance of the builder.\n */\n withDataProvider(fn: TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>): this {\n this._dataProvider = fn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Adjusts the data provider using the provided adjust function.\n *\n * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjustDataProvider(adjustFn: (dataProvider: DataProvider) => void): this {\n adjustFn(this._dataProvider);\n return this;\n }\n\n /**\n * Adjusts the data provider and/or descriptor using the provided adjust function.\n *\n * @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @returns {this} - Returns the current instance of the builder.\n */\n withAdjust(adjustFn: (params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void): this {\n adjustFn(this.prepareSetterParams());\n return this;\n }\n\n /**\n * Removes all the default tableview actions.\n *\n * @returns {this} - Returns the current instance of the builder.\n */\n withNoDefaultActions(): this {\n this.defaultActions.forEach(a => (a.descriptor = null));\n return this;\n }\n\n /**\n * Adds the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action?.descriptor === null) {\n action.descriptor = undefined;\n }\n });\n return this;\n }\n\n /**\n * Removes the default actions specified in parameters.\n *\n * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.\n * @returns {this} - Returns the current instance of the builder.\n */\n withoutDefaultActions(...types: TableviewDefaultActionsEnum[]): this {\n types.forEach(type => {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = null;\n }\n });\n return this;\n }\n\n /**\n * Overrides the default action.\n *\n * @param {TableviewDefaultActionsEnum} type - The default actions to override.\n * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withDefaultActionOverride<ActionService = Service>(type: TableviewDefaultActionsEnum, fn: TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>): this {\n const action = this.defaultActions.find(a => a.type === type);\n if (action) {\n action.descriptor = fn(this.prepareSetterParams()) ?? null;\n }\n return this;\n }\n\n /**\n * Adds a custom action.\n *\n * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.\n * @typeParam ActionService - The service type (same as build `Service` by default).\n * @returns {this} - Returns the current instance of the builder.\n */\n withAction<ActionService = Service>(fn: TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>): this {\n const action = fn(this.prepareSetterParams());\n if (action) {\n this._customActions.push(action);\n }\n return this;\n }\n\n /**\n * Builds and returns an instance of ITableview.\n * DO NOT CALL this within tableview create callback function!\n *\n * @return {ITableview<Model, Service, Sorts, Filters, Descriptor, DataProvider>} - The built ITableview instance.\n */\n build() {\n return <ITableview<Model, Service, Sorts, Filters, Descriptor, DataProvider>>{\n actions: TableviewDefaultActions.createActions(\n this._descriptor as TableviewDescriptorInst<any, any, any>,\n this.injector,\n this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type),\n this.defaultActions\n .filter(a => a.descriptor != null)\n .reduce(\n (acc, a) => ({\n ...acc,\n [a.type]: a.descriptor!\n }),\n <Record<number, ActionDescriptorInst<any>>>{}\n )\n ).concat(this._customActions),\n dataProvider: this._dataProvider,\n descriptor: this._descriptor\n };\n }\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {AfterContentInit, Component, ContentChildren, Input, OnInit, QueryList, TemplateRef, inject} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SharedModule} from 'primeng/api';\nimport {ToolbarModule} from 'primeng/toolbar';\n\nimport {ITableviewDataProvider} from '../../data-providers';\nimport {ActionDescriptorInst} from '../../descriptors/action';\nimport {TableviewDescriptorInst} from '../../descriptors/tableview';\nimport {ActionPositionEnum} from '../../descriptors/types';\nimport {MngTemplateDirective} from '../../directives';\nimport {DataListParams} from '../../models';\nimport {ViewContainer, provideViewContainer} from '../../services/view';\nimport {MngActionComponent, MngActionTableComponent} from '../action';\nimport {TableviewActionDefaultCategories} from '../action/models';\nimport {MngTableLoadEvent} from '../table/models/table.event';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, MngActionComponent, MngActionTableComponent, MngTemplateDirective, RouterOutlet],\n providers: [provideViewContainer()]\n})\nexport class MngTableviewComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit, AfterContentInit {\n public readonly viewContainer = inject(ViewContainer, {optional: true});\n\n @Input({required: true}) public descriptor!: TableviewDescriptorInst<Item, Sorts, Filters>;\n @Input() public dataProvider?: ITableviewDataProvider<Item, Service, Sorts, Filters>;\n @Input() public actions: Array<ActionDescriptorInst<any>> = [];\n\n public tableActions: ActionDescriptorInst<Item>[] = [];\n public toolbarLeftActions: ActionDescriptorInst<Item>[] = [];\n public toolbarRightActions: ActionDescriptorInst<Item>[] = [];\n\n public tableParams?: DataListParams;\n\n public hasItemSelectionAction = false;\n public selectedItems: Item[] = [];\n\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n public footerTemplate?: TemplateRef<any>;\n\n ngOnInit() {\n this.viewContainer?.setActions(this.actions);\n\n if (this.viewContainer && this.dataProvider) {\n this.viewContainer.dataProvider = this.dataProvider;\n }\n\n for (const action of this.actions.filter(value => value.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true)) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.push(action);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n case ActionPositionEnum.TableHeader:\n case ActionPositionEnum.RowInline:\n case ActionPositionEnum.RowClick:\n this.tableActions.push(action);\n break;\n }\n }\n\n this.toolbarRightActions = this.toolbarRightActions.reverse();\n\n this.hasItemSelectionAction = [...this.toolbarLeftActions, ...this.toolbarRightActions].some(e => e.hasItemsSelection);\n }\n\n ngAfterContentInit() {\n this.templates.forEach(template => {\n switch (template.getType()) {\n case 'footer':\n this.footerTemplate = template.template;\n break;\n }\n });\n }\n\n public onTableLoad(event: MngTableLoadEvent) {\n this.tableParams = event.params;\n }\n\n public selectionChange(selectedItems: Array<Item>): void {\n this.selectedItems = selectedItems;\n }\n}\n","<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n @if (footerTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n }\n </ng-template>\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {Component, Input} from '@angular/core';\n\nimport {ITableview} from '../models/tableview.model';\nimport {MngTableviewComponent} from '../tableview.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview-route',\n imports: [MngTableviewComponent],\n templateUrl: './tableview-route.component.html'\n})\nexport class MngTableviewRouteComponent<Item, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n @Input({required: true}) public tableview!: ITableview<Item, Service, Sorts, Filters>;\n}\n","<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n","import {Injector, inject} from '@angular/core';\n\nimport {TableviewDataProvider, TableviewDataProviderInst} from '../../../data-providers';\nimport {ModelDescriptor, TypeDescriptor} from '../../../descriptors/model';\nimport {TableviewDescriptor, TableviewDescriptorInst} from '../../../descriptors/tableview';\nimport {ServiceClassType} from '../../../types';\nimport {TableviewBuilder} from '../builders/tableview-builder';\n\n/**\n * Creates a tableview with the given model, service.\n *\n * @param {ModelDescriptor<Model>} model - The model descriptor.\n * @param {ServiceClassType<Service>} service - The class type of the service.\n * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.\n *\n * @returns A tableview instance with descriptor, data provider and actions.\n */\nexport function tableview<Model, Service, Sorts = keyof Model, Filters extends keyof any = keyof Model>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n buildFn?: (\n builder: TableviewBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>(\n TableviewDescriptor.fromModel(model),\n TableviewDataProvider.fromService<Service, Model, Sorts, Filters>(service),\n inject(Injector)\n );\n buildFn?.(builder);\n return builder.build();\n}\n\nexport function tableviewWithSortAndFilter<Model, Service, Sorts, Filters extends keyof any>(\n model: ModelDescriptor<Model>,\n service: ServiceClassType<Service>,\n sorts: TypeDescriptor<Sorts>,\n filters: TypeDescriptor<Filters>,\n buildFn?: (\n builder: TableviewBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>\n ) => void\n) {\n const builder = new TableviewBuilder<Model, Service, TableviewDescriptorInst<Model, Sorts, Filters>, TableviewDataProviderInst<Model, Service, Sorts, Filters>, Sorts, Filters>(\n TableviewDescriptor.fromModel(model),\n TableviewDataProvider.fromService<Service, Model, Sorts, Filters>(service),\n inject(Injector)\n );\n buildFn?.(builder);\n return builder.build();\n}\n","import {Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {MngCommonsService} from '../../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\n templateUrl: './error.page.component.html'\n})\nexport class MngErrorPageComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div [class]=\"'exception-body min-h-screen ' + (mngCommons.colorSchemeIsLight ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {MngCommonsService} from '../../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\n templateUrl: './not-found.page.component.html'\n})\nexport class MngNotFoundPageComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div [class]=\"'exception-body min-h-screen ' + (mngCommons.colorSchemeIsLight ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {EnvironmentProviders, Provider, Type} from '@angular/core';\nimport {CanActivateFn, CanDeactivateFn, DefaultExport, LoadChildren, ResolveFn, Route} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {MngMainLayoutComponent} from '../components/layout';\nimport {MngMainLayoutV2Component} from '../components/layoutV2';\nimport {MngInternalError, MngMenuItem} from '../models';\nimport {mngAuthorizationGuard} from '../security';\nimport {APermissions} from '../security/model';\nimport {RouteUtil} from '../utils/route.util';\nimport {BreadcrumbType, MngRouterData} from './models';\nimport {RoutesBuilder} from './routes-builder';\nimport {TableviewRouteBuilderInternal} from './tableview-route-builder';\n\nexport class RouteBuilder {\n protected readonly route: Route;\n private routePath: Array<string> = [];\n protected routeData: MngRouterData = {breadcrumb: null};\n private root?: RoutesBuilder;\n private parent?: RouteBuilder;\n private children: Array<RouteBuilder> = [];\n\n private menuItem?: MngMenuItem;\n private menuItemChildren: Array<MngMenuItem> = [];\n private menuItemChildrenAfter: Array<MngMenuItem> = []; // append after route children\n\n private breadcrumb?: BreadcrumbType;\n private pageTitle?: string;\n\n private permissions?: APermissions;\n\n protected constructor(route: Route) {\n this.route = route;\n if (this.route.path && this.route.path.length > 0) {\n this.routePath = [this.route.path];\n }\n }\n\n public static create(path: string, component: Type<any>): RouteBuilder {\n return new RouteBuilder({\n path: path,\n component: component\n });\n }\n\n public static createRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): RouteBuilder {\n return new RouteBuilder({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n }\n\n public static createLazyRouteModule(path: string, loadChildren: LoadChildren, canMatch?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n }\n\n public static createLazyRouteComponent(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>,\n canMatch?: Array<any>\n ): RouteBuilder {\n const route: Route = {path: path, loadComponent: loadComponent};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n }\n\n public static createFromRoute(route: Route): RouteBuilder {\n return new RouteBuilder(route);\n }\n\n /**\n * @deprecated use createLayoutRouteV2() instead\n */\n public static createLayoutRoute(path: string, layoutComponent = MngMainLayoutComponent): RouteBuilder {\n return RouteBuilder.create(path, layoutComponent);\n }\n\n public static createLayoutRouteV2(path: string, layoutComponent = MngMainLayoutV2Component): RouteBuilder {\n return RouteBuilder.create(path, layoutComponent);\n }\n\n public withRoot(routesBuilder: RoutesBuilder): this {\n this.root = routesBuilder;\n return this;\n }\n\n public withParent(parent: RouteBuilder): this {\n this.parent = parent;\n this.routePath = RouteUtil.removeEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);\n return this;\n }\n\n public withBreadcrumb(breadcrumb: BreadcrumbType): this {\n this.breadcrumb = breadcrumb;\n this.routeData.breadcrumb = breadcrumb;\n return this;\n }\n\n public withPageTitle(pageTitle: string): this {\n this.pageTitle = pageTitle;\n this.routeData.pageTitle = pageTitle;\n return this;\n }\n\n public withRedirectTo(redirectTo: string): this {\n this.route.redirectTo = redirectTo;\n return this;\n }\n\n public withPathMatch(pathMatch: 'full' | 'prefix'): this {\n this.route.pathMatch = pathMatch;\n return this;\n }\n\n public withTitle(title: string): this {\n this.withPageTitle(title);\n this.withBreadcrumb(title);\n return this;\n }\n\n public withCanActivate(diToken: CanActivateFn): this {\n if (!this.route.canActivate) {\n this.route.canActivate = [];\n }\n this.route.canActivate.push(diToken);\n return this;\n }\n\n public withCanDeactivate(diToken: CanDeactivateFn<any>): this {\n if (!this.route.canDeactivate) {\n this.route.canDeactivate = [];\n }\n this.route.canDeactivate.push(diToken);\n return this;\n }\n\n public withResolver(diToken: ResolveFn<any>, name: string): this {\n if (!this.route.resolve) {\n this.route.resolve = {};\n }\n this.route.resolve[name] = diToken;\n return this;\n }\n\n public withProvider(provider: Provider | EnvironmentProviders): this {\n if (!this.route.providers) {\n this.route.providers = [];\n }\n this.route.providers.push(provider);\n return this;\n }\n\n public withData(data: MngRouterData): this {\n if (!data.breadcrumb) {\n data.breadcrumb = null;\n }\n this.routeData = data;\n return this;\n }\n\n public withMngMenuItem(menuItem: MngMenuItem): this {\n this.menuItem = menuItem;\n return this;\n }\n\n public withMenuItem(icon?: string, label?: string, routerLink?: Array<string>, breadcrumb = false): this {\n this.menuItem = this.createMenuItem(icon, label, routerLink);\n if (breadcrumb && label) {\n this.withBreadcrumb({\n label: label\n });\n }\n return this;\n }\n\n /**\n * Adds menu item child to this instance of menu item.\n * @param label Label.\n * @param icon Icon.\n * @param routerLink Router link.\n * @param afterRouteChildren If false, menu item child will be appended before route children menu items, at the end otherwise.\n */\n public withMenuItemChild(label: string, icon?: string, routerLink?: Array<string>, afterRouteChildren = false): this {\n if (afterRouteChildren) {\n this.menuItemChildrenAfter.push(this.createMenuItem(icon, label, routerLink));\n } else {\n this.menuItemChildren.push(this.createMenuItem(icon, label, routerLink));\n }\n return this;\n }\n\n /**\n * Adds menu item child to this instance of menu item.\n * @param menuItem Configuration object for menu item.\n * @param afterRouteChildren If false, menu item child will be appended before route children menu items, at the end otherwise.\n */\n public withMngMenuItemChild(menuItem: MngMenuItem, afterRouteChildren = false): this {\n if (afterRouteChildren) {\n this.menuItemChildrenAfter.push(menuItem);\n } else {\n this.menuItemChildren.push(menuItem);\n }\n return this;\n }\n\n public withMenuItemLazyChildren(): this {\n if (!this.menuItem) {\n this.menuItem = {};\n }\n this.menuItem.lazyChildren = true;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n this.permissions = permissions;\n this.withCanActivate(mngAuthorizationGuard);\n return this;\n }\n\n public addChild(path: string, component: Type<any>): RouteBuilder {\n const childRouteBuilder = RouteBuilder.create(path, component);\n this.addChildBuilder(childRouteBuilder);\n return childRouteBuilder;\n }\n\n public addChildBuilder(builder: RouteBuilder | TableviewRouteBuilderInternal): this {\n builder.withParent(this);\n if (this.root) {\n builder.withRoot(this.root);\n }\n this.children.push(builder);\n return this;\n }\n\n public toParent(): RouteBuilder {\n if (!this.parent) {\n throw new MngInternalError('Parent was not provided.', {name: 'RouteBuilder error'});\n }\n return this.parent;\n }\n\n public toRoot(): RoutesBuilder {\n if (!this.root) {\n throw new MngInternalError('Root was not provided.', {name: 'RouteBuilderError'});\n }\n return this.root;\n }\n\n public finish(): RoutesBuilder {\n return this.toRoot();\n }\n\n public build(): Route {\n const angularRoute: Route = {\n ...this.route\n };\n\n if (angularRoute.data) {\n angularRoute.data = {\n ...angularRoute.data,\n ...this.routeData\n };\n } else {\n angularRoute.data = {...this.routeData};\n }\n\n // append permissions if not already in route data\n if (this.permissions && !(angularRoute.data as MngRouterData).permissions) {\n (angularRoute.data as MngRouterData).permissions = this.permissions;\n }\n\n const menu = this.buildMenu();\n if (menu.length > 0) {\n (angularRoute.data as MngRouterData).menuItems = menu;\n }\n\n if ((this.route.children?.length ?? 0) > 0 || this.children.length > 0) {\n // route has children\n angularRoute.children = [];\n if (this.route.children?.length) {\n angularRoute.children.push(...this.route.children);\n }\n if (this.children.length) {\n for (const childRoute of this.children) {\n angularRoute.children.push(childRoute.build());\n }\n }\n }\n\n if (this.route.canActivate) {\n angularRoute.canActivate = [...this.route.canActivate];\n }\n if (this.route.canActivateChild) {\n angularRoute.canActivateChild = [...this.route.canActivateChild];\n }\n if (this.route.canLoad) {\n angularRoute.canLoad = [...this.route.canLoad];\n }\n if (this.route.canDeactivate) {\n angularRoute.canDeactivate = [...this.route.canDeactivate];\n }\n if (this.route.resolve) {\n angularRoute.resolve = {...this.route.resolve};\n }\n\n return angularRoute;\n }\n\n private buildMenu(): Array<MngMenuItem> {\n const menuItemBuild: MngMenuItem | null = this.menuItem ? {...this.menuItem} : null;\n const routeChildrenMenuItems: Array<MngMenuItem> = this.children.flatMap(child => child.buildMenu());\n const menuItemChildren: Array<MngMenuItem> = [];\n const menuItemChildrenBuild: Array<MngMenuItem> = [];\n\n if (menuItemBuild?.items) {\n menuItemChildrenBuild.push(...menuItemBuild.items);\n }\n\n const processMenuItemChild = (child: MngMenuItem): MngMenuItem => {\n const finalChild: MngMenuItem = {...child};\n if (typeof finalChild.routerLink === 'undefined') {\n finalChild.routerLink = this.routePath;\n }\n if (typeof finalChild.routerLink === 'string') {\n finalChild.routerLink = [finalChild.routerLink];\n }\n if (finalChild.routerLink) {\n finalChild.routerLink = RouteUtil.removeEmptyPathSegments(finalChild.routerLink);\n }\n return finalChild;\n };\n\n this.menuItemChildren.forEach(child => menuItemChildren.push(processMenuItemChild(child)));\n\n const menuItemChildrenAfterBuild: Array<MngMenuItem> = this.menuItemChildrenAfter.map(child => processMenuItemChild(child));\n\n menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems, ...menuItemChildrenAfterBuild);\n\n if (!menuItemBuild) {\n return menuItemChildrenBuild;\n }\n\n menuItemBuild.label = menuItemBuild.label ?? this.pageTitle;\n if (typeof menuItemBuild.routerLink === 'string') {\n menuItemBuild.routerLink = [menuItemBuild.routerLink];\n }\n menuItemBuild.routerLink = RouteUtil.removeEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);\n if (menuItemChildrenBuild.length > 0) {\n menuItemBuild.items = menuItemChildrenBuild;\n }\n\n if (!menuItemBuild.guards) {\n const guards = this.findMenuItemGuards();\n if (guards.length > 0) {\n menuItemBuild.guards = guards;\n }\n }\n\n if (!menuItemBuild.permissions) {\n menuItemBuild.permissions = this.findMenuItemPermissions();\n }\n\n return [menuItemBuild];\n }\n\n private createMenuItem(icon?: string, label?: string, routerLink?: Array<string>) {\n const menuItem: MngMenuItem = {};\n if (icon) {\n menuItem.icon = icon;\n }\n if (label) {\n menuItem.label = label;\n }\n if (routerLink) {\n menuItem.routerLink = routerLink;\n }\n return menuItem;\n }\n\n private findMenuItemGuards(): Array<any> {\n const guards: Array<any> = [];\n if (this.route.canActivate?.length) {\n guards.push(...this.route.canActivate);\n }\n if (this.parent) {\n // Check for parent guards that should be included in decision to hide menu item!\n // Some parent routes might have guards, but no menu items, so this guards must be taken into account here,\n // because there is no parent menu item to hide.\n this.parent.findMenuItemGuards().forEach(g => {\n if (guards.indexOf(g) < 0) {\n guards.push(g);\n }\n });\n }\n return guards;\n }\n\n protected findMenuItemPermissions() {\n if (this.menuItem?.permissions) {\n return this.menuItem.permissions;\n }\n if (this.routeData.permissions) {\n // this is already built\n return this.routeData.permissions;\n }\n if (this.permissions) {\n return this.permissions;\n }\n return undefined;\n }\n}\n","import {Type} from '@angular/core';\nimport {DefaultExport, LoadChildren, Route, Routes} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {MngMainLayoutComponent} from '../components/layout';\nimport {MngMainLayoutV2Component} from '../components/layoutV2';\nimport {MngInternalError} from '../models';\nimport {RouteBuilder} from './route-builder';\nimport {TableviewRouteBuilderInternal} from './tableview-route-builder';\n\nexport class RoutesBuilder {\n private readonly layoutRoute?: RouteBuilder;\n private routes: Array<RouteBuilder> = [];\n private currentRoute?: RouteBuilder;\n\n private constructor(layoutRoute?: RouteBuilder) {\n this.layoutRoute = layoutRoute?.withRoot(this);\n this.currentRoute = layoutRoute;\n }\n\n public static create(): RoutesBuilder {\n return new RoutesBuilder();\n }\n\n /**\n * @deprecated use createWithLayoutV2() instead\n */\n public static createWithLayout(layoutComponent = MngMainLayoutComponent): RoutesBuilder {\n const layoutRoute = RouteBuilder.createLayoutRoute('', layoutComponent);\n return new RoutesBuilder(layoutRoute);\n }\n\n public static createWithLayoutV2(layoutComponent = MngMainLayoutV2Component): RoutesBuilder {\n const layoutRoute = RouteBuilder.createLayoutRouteV2('', layoutComponent);\n return new RoutesBuilder(layoutRoute);\n }\n\n public addAngularRoute(route: Route): this {\n return this.addRouteBuilder(RouteBuilder.createFromRoute(route));\n }\n\n public addRouteRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): this {\n return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));\n }\n\n public addLazyRouteComponent(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>,\n canMatch?: Array<any>\n ): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRouteComponent(path, loadComponent, canMatch));\n }\n\n public addLazyRouteModule(path: string, loadChildren: LoadChildren, canMatch?: Array<any>): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRouteModule(path, loadChildren, canMatch));\n }\n\n public addRoute(path: string, component: Type<any>): this {\n return this.addRouteBuilder(RouteBuilder.create(path, component));\n }\n\n public addTableview(builder: TableviewRouteBuilderInternal): this {\n return this.addRouteBuilder(builder);\n }\n\n public addRouteBuilder(routeBuilder: RouteBuilder): this {\n this.currentRoute = routeBuilder.withRoot(this);\n this.routes.push(routeBuilder);\n return this;\n }\n\n public toRoute(): RouteBuilder {\n if (!this.currentRoute) {\n throw new MngInternalError('No routes were added!', {name: 'RoutesBuilderError'});\n }\n return this.currentRoute;\n }\n\n public build(): Routes {\n let angularRoutes: Routes = [];\n for (const route of this.routes) {\n angularRoutes.push(route.build());\n }\n\n if (this.layoutRoute) {\n const layoutAngularRoute = this.layoutRoute.build();\n if (angularRoutes.length > 0) {\n layoutAngularRoute.children = angularRoutes;\n }\n angularRoutes = [layoutAngularRoute];\n }\n\n return angularRoutes;\n }\n}\n","import {CanDeactivateFn} from '@angular/router';\n\nimport {CanComponentDeactivate} from '../models';\n\nexport const unsavedChangesGuard: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => {\n return component.canDeactivate();\n};\n","import {Type} from '@angular/core';\nimport {Route} from '@angular/router';\n\nimport {MngActionRouteComponent} from '../components/action';\nimport {TableviewActionDefaultCategories} from '../components/action/models';\nimport {ITableviewDataProvider} from '../data-providers';\nimport {ActionDescriptorInst, ActionEditorAddDescriptorInst, ActionEditorDetailsDescriptorInst, ActionEditorEditDescriptorInst} from '../descriptors/action';\nimport {TableviewDescriptorInst} from '../descriptors/tableview';\nimport {unsavedChangesGuard} from '../guards';\nimport {APermissions} from '../security/model';\nimport {MngRouterData} from './models';\nimport {RouteBuilder} from './route-builder';\n\nexport class TableviewRouteBuilderInternal extends RouteBuilder {\n private readonly descriptor?: TableviewDescriptorInst<any>;\n private readonly dataProvider?: ITableviewDataProvider;\n private readonly actions?: Array<ActionDescriptorInst<any>>;\n private readonly isFromComponent: boolean = true;\n\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n private hasDelete = true;\n\n private tableviewPermissions?: {\n [key: string]: APermissions;\n };\n\n public constructor(\n private path: string,\n options: Partial<{\n component: Type<any>;\n descriptor: TableviewDescriptorInst<any>;\n dataProvider: ITableviewDataProvider;\n actions: Array<ActionDescriptorInst<any>>;\n }>\n ) {\n super({path: path, component: options.component ?? TableviewRouteBuilder});\n\n if (!options.component) {\n this.isFromComponent = false;\n this.descriptor = options.descriptor;\n this.dataProvider = options.dataProvider;\n this.actions = options.actions;\n\n this.hasDetails = false;\n this.hasAdd = false;\n this.hasEdit = false;\n if (this.actions) {\n for (const action of this.actions) {\n if (action instanceof ActionEditorDetailsDescriptorInst) {\n this.hasDetails = true;\n } else if (action instanceof ActionEditorAddDescriptorInst) {\n this.hasAdd = true;\n } else if (action instanceof ActionEditorEditDescriptorInst) {\n this.hasEdit = true;\n }\n }\n }\n }\n }\n\n public withReadOnly(permissions?: APermissions): this {\n if (permissions) {\n this.withPermissions(permissions);\n }\n this.withAdd(false);\n this.withEdit(false);\n this.withDelete(false);\n return this;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withDelete(hasDelete = true, permissions?: APermissions): this {\n this.hasDelete = hasDelete;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, permissions);\n }\n return this;\n }\n\n public override withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n if (read) {\n this.tableviewPermissions[TableviewActionDefaultCategories.READ] = read;\n }\n if (add) {\n this.tableviewPermissions[TableviewActionDefaultCategories.ADD] = add;\n }\n if (edit) {\n this.tableviewPermissions[TableviewActionDefaultCategories.EDIT] = edit;\n }\n if (delet) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DELETE] = delet;\n }\n if (details) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionByCategory(key: string, permissions: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n this.tableviewPermissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.tableviewPermissions = permissions;\n return this;\n }\n\n public override build(): Route {\n if (!this.isFromComponent) {\n this.routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n this.routeData.tableview.actions = this.actions;\n }\n }\n if (this.tableviewPermissions) {\n this.routeData.tableviewPermissions = {...this.tableviewPermissions};\n }\n this.routeData.tableviewActions = {\n hasAdd: this.hasAdd,\n hasEdit: this.hasEdit,\n hasDetails: this.hasDetails,\n hasDelete: this.hasDelete\n };\n this.withData(this.routeData);\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n this.routeData.permissions = this.tableviewPermissions[TableviewActionDefaultCategories.READ];\n }\n\n // copy route data for children, reset breadcrumbs menu items and permission\n const childrenRouteData: MngRouterData = {\n ...this.routeData,\n breadcrumb: null,\n menuItems: undefined,\n permissions: undefined\n };\n\n // list route\n const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);\n rootChildRouteBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n rootChildRouteBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.READ]);\n }\n this.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = RouteBuilder.create(this.addPath, MngActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n if (this.hasDetails) {\n const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.DETAILS]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS]);\n }\n this.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = RouteBuilder.create(this.editPath, MngActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n\n return super.build();\n }\n\n protected override findMenuItemPermissions() {\n const menuItemPermission = super.findMenuItemPermissions();\n if (!menuItemPermission) {\n return this.tableviewPermissions?.[TableviewActionDefaultCategories.READ];\n }\n return menuItemPermission;\n }\n}\n\nexport class TableviewRouteBuilder {\n public static fromComponent<C>(path: string, component: Type<C>): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {component});\n }\n\n public static from(\n path: string,\n descriptor: TableviewDescriptorInst<any>,\n dataProvider: ITableviewDataProvider,\n actions: Array<ActionDescriptorInst<any>>\n ): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {descriptor, dataProvider, actions});\n }\n}\n","import {DecoratorMetadataUtil} from '../utils';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function (target: any) {\n DecoratorMetadataUtil.defineReflectTypeName(target, typeName);\n };\n}\n\nexport function EnumName(typeName: string): ClassDecorator {\n return function (target: any) {\n DecoratorMetadataUtil.defineReflectEnumName(target, typeName);\n };\n}\n","/*\n * Public API Surface of mng-commons\n */\n\n// module\nexport * from './lib/provide';\n\n// services\nexport * from './lib/components/layout/services';\nexport * from './lib/services';\nexport * from './lib/services/action';\nexport * from './lib/services/view';\nexport * from './lib/services/providers';\n\n// injection tokens\nexport * from './lib/services/tokens';\n\n// utils\nexport * from './lib/utils';\n\n// components\nexport * from './lib/components/action';\nexport * from './lib/components/form';\nexport * from './lib/components/form/formly/fields';\nexport * from './lib/components/form/formly/wrappers';\nexport * from './lib/components/layout';\nexport * from './lib/components/layoutV2';\nexport * from './lib/components/tableview';\nexport * from './lib/components/pages';\nexport * from './lib/components/notification/notification-wrapper.component';\n\n// directives\nexport * from './lib/directives';\n\n// pipes\nexport * from './lib/pipes';\n\n// registry\nexport * from './lib/registry/type.registry';\n\n// component models\nexport * from './lib/components/action/models';\nexport * from './lib/components/form/models';\nexport * from './lib/components/tableview';\n\n// table\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/models/table.event';\nexport * from './lib/components/table/models/table.interface';\nexport * from './lib/components/table/column-filter-full/column-filter-full.component';\nexport * from './lib/components/table/column-value/column-value.component';\n\n// formly\nexport * from './lib/components/form/formly/models';\nexport * from './lib/components/form/formly';\n\n// data providers\nexport * from './lib/data-providers';\n\n// descriptors\nexport * from './lib/descriptors/model';\nexport * from './lib/descriptors/action';\nexport * from './lib/descriptors/editor';\nexport * from './lib/descriptors/filter';\nexport * from './lib/descriptors/interfaces';\nexport * from './lib/descriptors/table';\nexport * from './lib/descriptors/tableview';\nexport * from './lib/descriptors/types';\n\n// general models\nexport * from './lib/models';\n\n// router\nexport * from './lib/router';\nexport * from './lib/router/models';\n\n// security\nexport * from './lib/security';\nexport * from './lib/security/model';\n\n// types\nexport * from './lib/types';\n\n// helpers\nexport * from './lib/helpers/coercion';\nexport * from './lib/helpers/data-provider-executors';\n\n// styles\nexport * from './lib/styles';\nexport * from './lib/styles/models';\n\n// error\nexport * from './lib/error';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.JsonPathPipe","mergeMap","i1.MngParametrizePipe","i2","i1","i2.MngConfigurationService","i3.MngAuthorizationService","i4.MngActionExecutorService","i5.ViewContainer","i6","i7","i8","i2.MngActionExecutorService","i3.ViewContainer","i3","i4","take","i1.MngDialogKeydownHandlerDirective","i3.JsonPathPipe","i3.MngGetterPipe","i3.MngTemplatePipe","i5","i1.MngCommonsService","i9","i10","i14","i15","i2.MngRouterService","i2.MngCommonsService","i4.MngMainLayoutComponentService","i2.MngVersionService","i3.MngMainLayoutComponentService","i2.MngMainLayoutComponentService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAY,mBAQX;AARD,CAAA,UAAY,kBAAkB,EAAA;AAC1B,IAAA,kBAAA,CAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,kBAAA,CAAA,kBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,kBAAA,CAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,kBAAA,CAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,kBAAA,CAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACf,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,GAQ7B,EAAA,CAAA,CAAA,CAAA;IAEW,4BAGX;AAHD,CAAA,UAAY,2BAA2B,EAAA;AACnC,IAAA,2BAAA,CAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;IACP,2BAAO,CAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;AACX,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,GAGtC,EAAA,CAAA,CAAA,CAAA;IAEW,eAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;IACN,cAAM,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;AACV,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA,CAAA;IAEW,2BAGX;AAHD,CAAA,UAAY,0BAA0B,EAAA;AAClC,IAAA,0BAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,0BAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAHW,0BAA0B,KAA1B,0BAA0B,GAGrC,EAAA,CAAA,CAAA;;ICvBW,eAOX;AAPD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EAPW,cAAc,KAAd,cAAc,GAOzB,EAAA,CAAA,CAAA,CAAA;IAEW,sBASX;AATD,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,qBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,qBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACjB,CAAC,EATW,qBAAqB,KAArB,qBAAqB,GAShC,EAAA,CAAA,CAAA;;IClBW,wBAKX;AALD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,uBAAA,CAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,uBAAA,CAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,uBAAA,CAAA,uBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACP,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,GAKlC,EAAA,CAAA,CAAA;;ICLW,cAIX;AAJD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACT,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;IAEW,mBAeX;AAfD,CAAA,UAAY,kBAAkB,EAAA;AAC1B,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,kBAAA,CAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,kBAAA,CAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAfW,kBAAkB,KAAlB,kBAAkB,GAe7B,EAAA,CAAA,CAAA,CAAA;IAEW,oBAKX;AALD,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,mBAAA,CAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA,CAAA;IAEW,8BAEX;AAFD,CAAA,UAAY,6BAA6B,EAAA;AACrC,IAAA,6BAAA,CAAA,6BAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAsB,CAAA;AAC1B,CAAC,EAFW,6BAA6B,KAA7B,6BAA6B,GAExC,EAAA,CAAA,CAAA,CAAA;IAEW,gCAGX;AAHD,CAAA,UAAY,+BAA+B,EAAA;AACvC,IAAA,+BAAA,CAAA,+BAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,+BAAA,CAAA,+BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAHW,+BAA+B,KAA/B,+BAA+B,GAG1C,EAAA,CAAA,CAAA,CAAA;IAEW,wBAEX;AAFD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,uBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AAChB,CAAC,EAFW,uBAAuB,KAAvB,uBAAuB,GAElC,EAAA,CAAA,CAAA,CAAA;IAEW,0BAKX;AALD,CAAA,UAAY,yBAAyB,EAAA;AACjC,IAAA,yBAAA,CAAA,yBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,yBAAA,CAAA,yBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,yBAAA,CAAA,yBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,yBAAA,CAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EALW,yBAAyB,KAAzB,yBAAyB,GAKpC,EAAA,CAAA,CAAA,CAAA;IAEW,mBAGX;AAHD,CAAA,UAAY,kBAAkB,EAAA;AAC1B,IAAA,kBAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,kBAAA,CAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAG7B,EAAA,CAAA,CAAA;;ICrDW,eAOX;AAPD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACd,CAAC,EAPW,cAAc,KAAd,cAAc,GAOzB,EAAA,CAAA,CAAA,CAAA;IAEW,qBAGX;AAHD,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,oBAAA,CAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AAChB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAG/B,EAAA,CAAA,CAAA;;ICZW,wBAIX;AAJD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,uBAAA,CAAA,uBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;AACd,IAAA,uBAAA,CAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,GAIlC,EAAA,CAAA,CAAA,CAAA;IAEW,cAIX;AAJD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACT,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;AAED;;;AAGG;IACS,4BAGX;AAHD,CAAA,UAAY,2BAA2B,EAAA;AACnC,IAAA,2BAAA,CAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,2BAAA,CAAA,2BAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AAChB,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,GAGtC,EAAA,CAAA,CAAA;;ACjBD;;;AAGG;MACmB,2BAA2B,CAAA;AAShD,CAAA;AAEK,MAAO,kCAAmC,SAAQ,2BAA2B,CAAA;IAC/E,UAAU,CAAC,KAAW,EAAE,QAAoB,EAAA;QACxC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,QAAQ,GAAG;AACP,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,cAAc;AACnC,gBAAA,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;AACzC,gBAAA,KAAK,EAAE,KAAK;aACf,CAAC;AACL,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AACJ;;ACFK,MAAgB,aAAc,SAAQ,KAAK,CAAA;IAO7C,WAAsB,CAAA,OAAe,EAAE,OAA6B,EAAA;QAChE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;AAC5D,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;AACjG,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;KACnC;AACJ,CAAA;AAEK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;IAG/C,WAAY,CAAA,OAAe,EAAE,OAA6B,EAAA;QACtD,KAAK,CAAC,OAAO,EAAE;AACX,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,GAAG,OAAO;AACb,SAAA,CAAC,CAAC;QANS,IAAI,CAAA,IAAA,GAAG,kBAAkB,CAAC;KAOzC;AACJ,CAAA;AAEK,MAAO,YAAa,SAAQ,aAAa,CAAA;AAK3C,IAAA,WAAA,CAAY,OAAe,EAAE,SAA4B,EAAE,OAA6B,EAAA;QACpF,KAAK,CAAC,OAAO,EAAE;AACX,YAAA,IAAI,EAAE,eAAe,GAAG,SAAS,CAAC,GAAG;AACrC,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,GAAG,OAAO;AACb,SAAA,CAAC,CAAC;QATS,IAAI,CAAA,IAAA,GAAG,cAAc,CAAC;AAUlC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;AACJ,CAAA;AAOK,MAAO,cAAe,SAAQ,aAAa,CAAA;AAO7C,IAAA,WAAA,CAAY,OAAe,EAAE,UAAkB,EAAE,OAA+B,EAAA;QAC5E,KAAK,CAAC,OAAO,EAAE;YACX,IAAI,EAAE,iBAAiB,GAAG,UAAU;AACpC,YAAA,GAAG,OAAO;AACb,SAAA,CAAC,CAAC;QAVS,IAAI,CAAA,IAAA,GAAG,gBAAgB,CAAC;AAYpC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;KACvC;AACJ;;MC7EY,eAAe,CAAA;aACV,IAAM,CAAA,MAAA,GAAwB,QAAQ,CAAC,EAAA;aACvC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,EAAA;aAElB,IAAS,CAAA,SAAA,GAAwB,WAAW,CAAC,EAAA;aAC7C,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,EAAA;aAErB,IAAQ,CAAA,QAAA,GAAwB,UAAU,CAAC,EAAA;aAC3C,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,EAAA;aAEpB,IAAW,CAAA,WAAA,GAAwB,aAAa,CAAC,EAAA;aACjD,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,EAAA;aAEvB,IAAE,CAAA,EAAA,GAAwB,IAAI,CAAC,EAAA;aAC/B,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,EAAA;aAEd,IAAK,CAAA,KAAA,GAAwB,OAAO,CAAC,EAAA;aACrC,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,EAAA;aAEjB,IAAU,CAAA,UAAA,GAAwB,YAAY,CAAC,EAAA;aAC/C,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC,EAAA;aAEtB,IAAQ,CAAA,QAAA,GAAwB,UAAU,CAAC,EAAA;aAC3C,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,EAAA;aAEpB,IAAQ,CAAA,QAAA,GAAwB,UAAU,CAAC,EAAA;aAC3C,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,EAAA;aAEpB,IAAiB,CAAA,iBAAA,GAAwB,mBAAmB,CAAC,EAAA;aAC7D,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC,EAAA;aAE7B,IAAW,CAAA,WAAA,GAAwB,aAAa,CAAC,EAAA;aACjD,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,EAAA;aAEvB,IAAoB,CAAA,oBAAA,GAAwB,sBAAsB,CAAC,EAAA;aACnE,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC,EAAA;aAEhC,IAAO,CAAA,OAAA,GAAwB,SAAS,CAAC,EAAA;aACzC,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC,EAAA;aAEnB,IAAM,CAAA,MAAA,GAAwB,QAAQ,CAAC,EAAA;aACvC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,EAAA;aAElB,IAAY,CAAA,YAAA,GAAwB,cAAc,CAAC,EAAA;aACnD,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,EAAA;IAE/B,OAAO,eAAe,CAAC,IAAY,EAAA;AACtC,QAAA,QAAQ,IAAI;YACR,KAAK,eAAe,CAAC,MAAM;gBACvB,OAAO,eAAe,CAAC,UAAU,CAAC;YACtC,KAAK,eAAe,CAAC,SAAS;gBAC1B,OAAO,eAAe,CAAC,aAAa,CAAC;YACzC,KAAK,eAAe,CAAC,QAAQ;gBACzB,OAAO,eAAe,CAAC,YAAY,CAAC;YACxC,KAAK,eAAe,CAAC,WAAW;gBAC5B,OAAO,eAAe,CAAC,eAAe,CAAC;YAC3C,KAAK,eAAe,CAAC,EAAE;gBACnB,OAAO,eAAe,CAAC,MAAM,CAAC;YAClC,KAAK,eAAe,CAAC,KAAK;gBACtB,OAAO,eAAe,CAAC,SAAS,CAAC;YACrC,KAAK,eAAe,CAAC,UAAU;gBAC3B,OAAO,eAAe,CAAC,cAAc,CAAC;YAC1C,KAAK,eAAe,CAAC,QAAQ;gBACzB,OAAO,eAAe,CAAC,YAAY,CAAC;YACxC,KAAK,eAAe,CAAC,QAAQ;gBACzB,OAAO,eAAe,CAAC,YAAY,CAAC;YACxC,KAAK,eAAe,CAAC,iBAAiB;gBAClC,OAAO,eAAe,CAAC,qBAAqB,CAAC;YACjD,KAAK,eAAe,CAAC,WAAW;gBAC5B,OAAO,eAAe,CAAC,eAAe,CAAC;YAC3C,KAAK,eAAe,CAAC,oBAAoB;gBACrC,OAAO,eAAe,CAAC,wBAAwB,CAAC;YACpD,KAAK,eAAe,CAAC,OAAO;gBACxB,OAAO,eAAe,CAAC,WAAW,CAAC;YACvC,KAAK,eAAe,CAAC,MAAM;gBACvB,OAAO,eAAe,CAAC,UAAU,CAAC;YACtC,KAAK,eAAe,CAAC,YAAY;gBAC7B,OAAO,eAAe,CAAC,gBAAgB,CAAC;AAC5C,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;IAEM,OAAO,gBAAgB,CAAC,IAAY,EAAA;AACvC,QAAA,QAAQ,IAAI;YACR,KAAK,eAAe,CAAC,UAAU;gBAC3B,OAAO,eAAe,CAAC,MAAM,CAAC;YAClC,KAAK,eAAe,CAAC,aAAa;gBAC9B,OAAO,eAAe,CAAC,SAAS,CAAC;YACrC,KAAK,eAAe,CAAC,YAAY;gBAC7B,OAAO,eAAe,CAAC,QAAQ,CAAC;YACpC,KAAK,eAAe,CAAC,eAAe;gBAChC,OAAO,eAAe,CAAC,WAAW,CAAC;YACvC,KAAK,eAAe,CAAC,MAAM;gBACvB,OAAO,eAAe,CAAC,EAAE,CAAC;YAC9B,KAAK,eAAe,CAAC,SAAS;gBAC1B,OAAO,eAAe,CAAC,KAAK,CAAC;YACjC,KAAK,eAAe,CAAC,cAAc;gBAC/B,OAAO,eAAe,CAAC,UAAU,CAAC;YACtC,KAAK,eAAe,CAAC,YAAY;gBAC7B,OAAO,eAAe,CAAC,QAAQ,CAAC;YACpC,KAAK,eAAe,CAAC,YAAY;gBAC7B,OAAO,eAAe,CAAC,QAAQ,CAAC;YACpC,KAAK,eAAe,CAAC,qBAAqB;gBACtC,OAAO,eAAe,CAAC,iBAAiB,CAAC;YAC7C,KAAK,eAAe,CAAC,eAAe;gBAChC,OAAO,eAAe,CAAC,WAAW,CAAC;YACvC,KAAK,eAAe,CAAC,wBAAwB;gBACzC,OAAO,eAAe,CAAC,oBAAoB,CAAC;YAChD,KAAK,eAAe,CAAC,WAAW;gBAC5B,OAAO,eAAe,CAAC,OAAO,CAAC;YACnC,KAAK,eAAe,CAAC,UAAU;gBAC3B,OAAO,eAAe,CAAC,MAAM,CAAC;YAClC,KAAK,eAAe,CAAC,gBAAgB;gBACjC,OAAO,eAAe,CAAC,YAAY,CAAC;AACxC,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;;;ICxIO,aAOX;AAPD,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,YAAA,CAAA,YAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACT,CAAC,EAPW,YAAY,KAAZ,YAAY,GAOvB,EAAA,CAAA,CAAA;;ICPW,wBAQX;AARD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,uBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB,CAAA;AAChB,IAAA,uBAAA,CAAA,uBAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAAwB,CAAA;AACxB,IAAA,uBAAA,CAAA,uBAAA,CAAA,8BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,8BAA4B,CAAA;AAC5B,IAAA,uBAAA,CAAA,uBAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAqB,CAAA;AACrB,IAAA,uBAAA,CAAA,uBAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAsB,CAAA;AACtB,IAAA,uBAAA,CAAA,uBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc,CAAA;AACd,IAAA,uBAAA,CAAA,uBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB,CAAA;AACpB,CAAC,EARW,uBAAuB,KAAvB,uBAAuB,GAQlC,EAAA,CAAA,CAAA;;MCLY,QAAQ,CAAA;AACO,IAAA,SAAA,IAAA,CAAA,yBAAyB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAA;AAC1G,IAAA,SAAA,IAAA,CAAA,qBAAqB,GAAG;QAC5C,SAAS;QACT,SAAS;QACT,IAAI;QACJ,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACZ,CAAC,EAAA;AACsB,IAAA,SAAA,IAAA,CAAA,mBAAmB,GAAG;;AAE1C,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,GAAG;AACP,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,MAAM,EAAE,GAAG;;AAEX,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,IAAI;AACR,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;;AAEV,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,GAAG;AACP,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,CAAC,EAAE,GAAG;AACN,QAAA,EAAE,EAAE,GAAG;AACP,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,IAAI,EAAE,IAAI;KACb,CAAC,EAAA;AAEM,IAAA,OAAO,SAAS,CAAC,GAAW,EAAE,IAAI,GAAG,CAAC,EAAA;AAC1C,QAAA,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE;AACtB,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACnB,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;IAOM,OAAO,WAAW,CAAC,KAAc,EAAE,IAA+B,GAAA,WAAW,EAAE,YAAA,GAA4C,EAAE,EAAA;AAChI,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,IAAI,IAAI,KAAK,MAAM,EAAE;;AAEjB,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3H,SAAA;QACD,IAAI,YAAY,CAAC,GAAG,EAAE;AAClB,YAAA,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,YAAY,CAAC,QAAQ,EAAE;gBACvB,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACpC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1E,aAAA;YACD,IAAI,YAAY,CAAC,UAAU,EAAE;AACzB,gBAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,IAAI,GACJ,KAAK,CAAC,WAAW,EAAE;gBACnB,GAAG;gBACH,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACxC,GAAG;AACH,gBAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,GAAG;AACH,gBAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpC,GAAG;AACH,gBAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACtC,GAAG;gBACH,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AAE3C,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AACxB,gBAAA,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AAC7D,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;gBAC1B,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAClC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/B,gBAAA,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3H,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;IAEM,OAAO,4BAA4B,CAAC,YAAoB,EAAA;QAC3D,IAAI,eAAe,GAAG,YAAY,CAAC;AACnC,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,qBAAqB,EAAE;YAChD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzD,SAAA;AACD,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,yBAAyB,EAAE;AACpD,YAAA,MAAM,OAAO,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBACzB,IAAI,KAAK,CAAC,KAAK,EAAE;AACb,oBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,CAAC,QAAwB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvF,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxI,iBAAA;AACJ,aAAA;AACJ,SAAA;QACD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC5D,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAEzD,QAAA,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC;KACjC;IAEM,OAAO,4BAA4B,CAAC,YAAoB,EAAA;AAC3D,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;IAEM,OAAO,+BAA+B,CAAC,YAAoB,EAAA;AAC9D,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACpC;;;MChJQ,kBAAkB,CAAA;AAC3B;;;;;AAKG;IACI,OAAO,kBAAkB,CAAC,KAAyB,EAAA;QACtD,MAAM,MAAM,GAAmB,EAAE,CAAC;AAElC,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACrB,YAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE;AACxC,YAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC;AACtC,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3E,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,YAAA,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;AAC9F,SAAA;QAED,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;gBAC5D,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,GAAG,GAAmB,CAAC,CAAC;AACzD,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBAC5B,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBACpC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,iBAAA;qBAAM,IAAI,WAAW,KAAK,SAAS,EAAE;AAClC,oBAAA,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AACjC,oBAAA,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;AAC5C,iBAAA;gBACD,OAAO,EAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,MAAM,EAAC,CAAC;aAClC,EAAE,EAAE,CAAC,CAAC;AACV,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;;;;AAQG;AACI,IAAA,OAAO,gBAAgB,CAC1B,MAAgC,EAChC,QAA4C,GAAA;AACxC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,CAAC;AACZ,KAAA,EAAA;QAED,MAAM,SAAS,GAAW,EAAE,CAAC;QAE7B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,KAAK,EAAE;AAClD,YAAA,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACrC,SAAA;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE;AACrD,YAAA,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AACvC,SAAA;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE;AACrD,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAClC,SAAA;QACD,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,YAAA,IACI,QAAQ,EAAE,IAAI,IAAI,IAAI;AACtB,gBAAA,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7B,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,OAAO,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,EACjJ;gBACE,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjE,aAAA;AACJ,SAAA;QACD,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;gBACpC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAQ,CAAC,CAAiB,CAAC,CAAC;gBACvD,MAAM,aAAa,GAAG,QAAQ,EAAE,OAAO,GAAG,CAAiB,CAAC,CAAC;AAC7D,gBAAA,IACI,aAAa;qBACZ,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAChC,wBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;wBAChC,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM;wBACvD,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;4BACjC,MAAM,KAAK,GAAI,WAAW,CAAC,KAAwC,CAAC,GAAG,CAAC,CAAC;AACzE,4BAAA,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;gCAAE,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;;gCAClF,OAAO,KAAK,KAAK,CAAC,CAAC;yBAC3B,CAAC;AACF,wBAAA,aAAa,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;AAC9C,oBAAA,aAAa,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS;AACjD,oBAAA,CAAC,aAAa,CAAC,aAAa,IAAI,KAAK,OAAO,WAAW,CAAC,aAAa,IAAI,KAAK,CAAC,EACjF;oBACE,OAAO;AACV,iBAAA;gBAED,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,IAAI,aAAa,EAAE,KAAK,IAAI,IAAI,EAAE;oBAC3D,OAAO;AACV,iBAAA;AAED,gBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9E,aAAC,CAAC,CAAC;AACN,SAAA;QACD,IAAI,QAAQ,EAAE,OAAO,EAAE;;YAEnB,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1E,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxB,iBAAA,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC3C,OAAO,CAAC,CAAC,IAAG;AACT,gBAAA,SAAS,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AACV,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;;;;;AAMG;AACI,IAAA,OAAO,iBAAiB,CAC3B,MAAsC,EACtC,QAA2C,GAAA;AACvC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,CAAC;AACZ,KAAA,EAAA;AAED,QAAA,MAAM,MAAM,GAAmC;AAC3C,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACrC,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;AACxC,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;YACxC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC;SAC3D,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,CAAC,OAAO,GAAG,EAAkC,CAAC;AACpD,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,OAAQ,CAAC,GAAc,CAAC,GAAG,EAAC,GAAI,KAAwB,EAAC,CAAC,CAAC,CAAC;AAChI,SAAA;QACD,IAAI,QAAQ,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO;AAAE,gBAAA,MAAM,CAAC,OAAO,GAAG,EAAkC,CAAC;AACzE,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBACtD,IAAI,MAAM,CAAC,OAAQ,CAAC,GAAc,CAAC,KAAK,SAAS,EAAE;oBAC/C,MAAM,CAAC,OAAQ,CAAC,GAAc,CAAC,GAAG,EAAC,GAAI,KAAwB,EAAC,CAAC;AACpE,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;;AAMG;IACI,OAAO,cAAc,CAAC,MAAiC,EAAA;QAC1D,OAAO,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;cACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAG,EAAA,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAE,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;cAC7H,SAAS,CAAC;KACnB;AAED;;;;;;;;AAQG;IACI,OAAO,sBAAsB,CAChC,MAAgD,EAChD,GAAY,EACZ,SAAS,GAAG,KAAK,EAAA;QAEjB,MAAM,WAAW,GAAG,MAAM,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;KACtE;AAED;;;;;;;;AAQG;AACI,IAAA,OAAO,gBAAgB,CAAC,WAA4B,EAAE,SAAS,GAAG,KAAK,EAAA;AAC1E,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,WAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;QACxJ,IACI,WAAW,KAAK,SAAS;aACxB,CAAC,SAAS,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC;AACzC,aAAC,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACzE,aAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,EACxE;;AAEE,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC;QAElE,IAAI,SAAS,KAAK,eAAe,CAAC,OAAO,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAClH,MAAM,IAAI,gBAAgB,CAAC,CAAA,qDAAA,EAAwD,WAAW,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;AAC3G,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,EAAE,IAAI,SAAS,KAAK,eAAe,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACtJ,MAAM,IAAI,gBAAgB,CAAC,CAAqB,kBAAA,EAAA,SAAS,CAA8B,2BAAA,EAAA,WAAW,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;AAC/G,SAAA;AAED,QAAA,IAAK,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAc,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACnJ,MAAM,IAAI,gBAAgB,CAAC,CAAqB,kBAAA,EAAA,SAAS,CAAuB,oBAAA,EAAA,WAAW,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;AACxG,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,KAAK,eAAe,CAAC,MAAM,IAAI,WAAW,CAAC,SAAS,KAAK,eAAe,CAAC,YAAY,CAAC;QACzH,MAAM,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,CAAI,CAAA,EAAA,kBAAkB,CAAC,qBAAqB,CAAC,kBAAkB,IAAI,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA,CAAE,CAAC;AAErI,QAAA,OAAO,GAAG,WAAW,CAAC,aAAa,GAAG,KAAK,GAAG,WAAW,CAAC,aAAa,KAAK,KAAK,GAAG,KAAK,GAAG,EAAE,CAAA,EAAG,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,CAAG,EAAA,YAAY,EAAE,CAAC;KAC7K;AAED;;;;;;;AAOG;IACI,OAAO,kBAAkB,CAAC,SAAiB,EAAA;QAC9C,MAAM,MAAM,GAAmB,EAAE,CAAC;AAElC,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,KAAI;YAC/D,IAAI,WAAW,KAAK,OAAO,EAAE;AACzB,gBAAA,MAAM,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC;AAC9B,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;oBACzC,OAAO,MAAM,CAAC,KAAK,CAAC;AACvB,iBAAA;AACJ,aAAA;iBAAM,IAAI,WAAW,KAAK,QAAQ,EAAE;AACjC,gBAAA,MAAM,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC;AAC/B,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3C,OAAO,MAAM,CAAC,MAAM,CAAC;AACxB,iBAAA;AACJ,aAAA;iBAAM,IAAI,WAAW,KAAK,GAAG,EAAE;AAC5B,gBAAA,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;AACjC,aAAA;iBAAM,IAAI,WAAW,KAAK,MAAM,EAAE;AAC/B,gBAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACnC,oBAAA,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAG;AAC3C,wBAAA,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,wBAAA,OAAO,EAAC,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAAiB,EAAE,SAAS,EAAE,SAAS,KAAK,MAAM,EAAC,CAAC;AAChG,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,IAAI,gBAAgB,CAAC,oCAAoC,WAAW,CAAA,gCAAA,CAAkC,CAAC,CAAC;AACjH,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AAC1C,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;;oBAE5B,OAAO;AACV,iBAAA;gBAED,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,OAAO,GAAG,CAAC,CAAC;;gBAGhB,IAAI,aAAa,GAAwB,SAAS,CAAC;AACnD,gBAAA,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAChE,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AACnD,iBAAA;;AAGD,gBAAA,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;AACjJ,gBAAA,OAAO,EAAE,CAAC;AAEV,gBAAA,MAAM,KAAK,GAAG,SAAS,KAAK,eAAe,CAAC,MAAM,IAAI,SAAS,KAAK,eAAe,CAAC,YAAY,CAAC;;gBAGjG,IAAI,KAAK,GAAyC,SAAS,CAAC;gBAC5D,IAAI,CAAC,KAAK,EAAE;AACR,oBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxB,OAAO;AACV,qBAAA;AAED,oBAAA,IAAI,OAAO,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,wBAAA,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAA;AAAM,yBAAA,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE;;AAErC,wBAAA,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,qBAAA;AAED,oBAAA,IAAI,KAAK,KAAK,SAAS,IAAI,SAAS,KAAK,eAAe,CAAC,MAAM,IAAI,SAAS,KAAK,eAAe,CAAC,YAAY,EAAE;;wBAE3G,OAAO;AACV,qBAAA;oBAED,IAAI,KAAK,KAAK,MAAM,EAAE;wBAClB,KAAK,GAAG,IAAI,CAAC;AAChB,qBAAA;oBAED,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,EAAE,IAAI,SAAS,KAAK,eAAe,CAAC,KAAK,IAAI,SAAS,KAAK,eAAe,CAAC,OAAO,KAAK,OAAO,KAAK,KAAK,QAAQ,EAAE;wBACjJ,IAAI,QAAQ,GAAa,EAAE,CAAC;;wBAE5B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BACzB,MAAM,MAAM,GAAa,EAAE,CAAC;4BAC5B,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,4BAAA,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,4BAAA,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,4BAAA,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,4BAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,gCAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;;;;;AAOnB,gCAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,IAAI,sBAAsB,IAAI,CAAC,cAAc,CAAC,EAAE;AAC3E,oCAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oCAC1B,YAAY,GAAG,EAAE,CAAC;oCAClB,YAAY,GAAG,KAAK,CAAC;oCACrB,sBAAsB,GAAG,KAAK,CAAC;oCAC/B,cAAc,GAAG,KAAK,CAAC;AAC1B,iCAAA;qCAAM,IAAI,CAAC,IAAI,GAAG,EAAE;;AAEjB,oCAAA,IAAI,cAAc,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAChE,wCAAA,YAAY,IAAI,CAAC,CAAC;wCAClB,CAAC,EAAE,CAAC;AACP,qCAAA;;AAEI,yCAAA,IAAI,cAAc,EAAE;wCACrB,sBAAsB,GAAG,IAAI,CAAC;AACjC,qCAAA;;AAEI,yCAAA,IAAI,YAAY,EAAE;wCACnB,YAAY,IAAI,CAAC,CAAC;AACrB,qCAAA;;AAEI,yCAAA;wCACD,YAAY,GAAG,EAAE,CAAC;wCAClB,YAAY,GAAG,IAAI,CAAC;wCACpB,cAAc,GAAG,IAAI,CAAC;AACzB,qCAAA;AACJ,iCAAA;AAAM,qCAAA;AACH,oCAAA,IAAI,sBAAsB,EAAE;wCACxB,OAAO;AACV,qCAAA;oCAED,YAAY,GAAG,IAAI,CAAC;oCACpB,YAAY,IAAI,CAAC,CAAC;AACrB,iCAAA;AACJ,6BAAA;AAED,4BAAA,IAAI,YAAY,IAAI,CAAC,sBAAsB,IAAI,cAAc,EAAE;gCAC3D,OAAO;AACV,6BAAA;;4BAGD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;4BAErC,QAAQ,GAAG,MAAM,CAAC;AACrB,yBAAA;AAAM,6BAAA;AACH,4BAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,yBAAA;wBAED,IAAI,SAAS,KAAK,eAAe,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;4BAChE,OAAO;AACV,yBAAA;wBAED,KAAK,GAAG,QAAQ,CAAC;AACpB,qBAAA;oBAED,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;;wBAEpG,OAAO;AACV,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,aAAa,GAAG,SAAS,CAAC;AAC7B,iBAAA;AAED,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,oBAAA,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACvB,iBAAA;AAED,gBAAA,MAAM,CAAC,OAAO,CAAC,WAA2B,CAAC,GAAG,EAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAC,CAAC;AACpH,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;AAKG;IACI,OAAO,IAAI,CAAqD,MAAsC,EAAA;AACzG,QAAA,MAAM,IAAI,GAAmC;YACzC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC;AAC/C,SAAA;QACD,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBACvE,MAAM,WAAW,GAAG,KAAuB,CAAC;gBAC5C,OAAO;AACH,oBAAA,GAAG,GAAG;oBACN,CAAC,GAAG,GAAG;AACH,wBAAA,GAAG,WAAW;wBACd,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK;AACrE,qBAAA;iBACtB,CAAC;aACL,EAAE,EAAkC,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;;;AAQG;AACI,IAAA,OAAO,qBAAqB,CAAC,KAAc,EAAE,SAAS,GAAG,KAAK,EAAA;AACjE,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS;AAAE,YAAA,OAAO,MAAM,CAAC;QAC/C,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,MAAM,IAAI,gBAAgB,CAAC,mDAAmD,CAAC,CAAC;AACnG,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACpB,YAAA,OAAO,KAAK;AACP,iBAAA,GAAG,CAAC,CAAC,IAAI,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAChE,iBAAA,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAI,CAAA,EAAA,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAG,CAAA,CAAA,GAAG,CAAC,CAAC,CAAC;iBAC3F,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,IAAI,KAAK,YAAY,IAAI;AAAE,gBAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC;AAClF,iBAAA;AACD,gBAAA,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;AAC/D,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;KACxB;AACJ;;MChdY,wBAAwB,CAAA;AAGjC,IAAA,WAAA,CAA4B,QAAW,EAAA;QAAX,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAG;QAFhC,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;KAEqB;AAC9C,CAAA;IAEW,0BAMX;AAND,CAAA,UAAY,yBAAyB,EAAA;AACjC,IAAA,yBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,yBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,yBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,yBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,CAAC,EANW,yBAAyB,KAAzB,yBAAyB,GAMpC,EAAA,CAAA,CAAA,CAAA;IAEW,qBAKX;AALD,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,CAAC,EALW,oBAAoB,KAApB,oBAAoB,GAK/B,EAAA,CAAA,CAAA,CAAA;MAEY,iCAAiC,CAAA;aACnB,IAAO,CAAA,OAAA,GAAG,kBAAkB,CAAC,EAAA;aAC7B,IAAY,CAAA,YAAA,GAAG,sBAAsB,CAAC,EAAA;aACtC,IAAe,CAAA,eAAA,GAAG,yBAAyB,CAAC,EAAA;aAC5C,IAAU,CAAA,UAAA,GAAG,qBAAqB,CAAC,EAAA;;MAGjD,8BAA8B,CAAA;aAChB,IAAU,CAAA,UAAA,GAAG,mBAAmB,CAAC,EAAA;aACjC,IAAgC,CAAA,gCAAA,GAAG,0CAA0C,CAAC,EAAA;aAC9E,IAAuC,CAAA,uCAAA,GAAG,gDAAgD,CAAC,EAAA;;MAmBzG,iBAAiB,CAAA;AAC1B,IAAA,WAAA,CACoB,IAA+B,EAC/B,aAAwB,EACxB,iBAAsB,EACtB,OAAqC,EAAE,EAAA;QAHvC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA2B;QAC/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAW;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAK;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAmC;KACvD;AACP,CAAA;MAEY,YAAY,CAAA;AACrB,IAAA,WAAA,CACoB,IAA0B,EAC1B,aAAwB,EACxB,iBAAsB,EACtB,OAA8B,EAAE,EAAA;QAHhC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAsB;QAC1B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAW;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAK;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA4B;KAChD;AACP;;MC/DY,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QAEqB,IAAY,CAAA,YAAA,GAAG,cAAc,CAAC;QAC9B,IAAQ,CAAA,QAAA,GAAoB,EAAE,CAAC;QAC/B,IAAQ,CAAA,QAAA,GAAoB,EAAE,CAAC;KAmHnD;AAtHkB,IAAA,SAAA,IAAA,CAAA,SAAS,GAAiB,IAAI,YAAY,EAAE,CAAC,EAAA;AAK5D,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED;;AAEG;AACI,IAAA,OAAO,GAAG,GAAA;QACb,OAAO,YAAY,CAAC,SAAS,CAAC;KACjC;IAEM,kCAAkC,CAAC,IAAoB,EAAE,aAAqB,EAAA;QACjF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC;KAClF;IAEM,uBAAuB,CAAC,QAAgB,EAAE,aAAqB,EAAA;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;AACnC,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;AAClC,gBAAA,OAAO,SAAS,CAAC;AACpB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mCAAmC,CAAC,IAAoB,EAAA;QAC3D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;KACpE;AAEM,IAAA,wBAAwB,CAAC,QAAgB,EAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,UAAU,EAAE;AAC/D,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,OAAO,CAAC,mBAAmB,EAA8B,CAAC;KACpE;AAEM,IAAA,eAAe,CAAC,IAAoB,EAAA;QACvC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1D,QAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;KACpD;AAEM,IAAA,QAAQ,CAAC,QAAgB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAClC;AAEM,IAAA,QAAQ,CAAC,QAAgB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAClC;AAEM,IAAA,aAAa,CAAC,KAAsB,EAAA;AACvC,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACtC,SAAA;KACJ;IAEM,YAAY,CAAC,IAAoB,EAAE,WAAoB,EAAA;;AAE1D,QAAA,IAAI,QAA4B,CAAC;AACjC,QAAA,IAAI,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;;YAE5C,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACpE,SAAA;AAAM,aAAA,IAAI,WAAW,EAAE;YACpB,QAAQ,GAAG,WAAW,CAAC;;AAEvB,YAAA,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/D,SAAA;QAED,IAAI,CAAC,QAAQ,EAAE;;AAEX,YAAA,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CACtB,6BAA6B,IAAI,CAAA,qFAAA,CAAuF,EACxH,YAAY,CAAC,KAAK,EAClB,IAAI,CAAC,YAAY,CACpB,CAAC;YACF,OAAO;AACV,SAAA;QACD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW,EAAE;;YAEhD,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CACtB,CAAA,0BAAA,EAA6B,IAAI,CAAc,WAAA,EAAA,QAAQ,qDAAqD,EAC5G,YAAY,CAAC,KAAK,EAClB,IAAI,CAAC,YAAY,CACpB,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AAClC,SAAA;KACJ;AAEM,IAAA,aAAa,CAAC,KAAsB,EAAA;AACvC,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACtC,SAAA;KACJ;IAEM,YAAY,CAAC,QAAkB,EAAE,QAAgB,EAAA;;AAEpD,QAAA,qBAAqB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW,EAAE;AAChD,YAAA,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAA,sCAAA,CAAwC,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3I,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACtC,SAAA;KACJ;;;MCpHQ,aAAa,CAAA;aACP,IAAU,CAAA,UAAA,GAAG,sBAAsB,CAAC,EAAA;aACpC,IAAc,CAAA,cAAA,GAAG,wHAAwH,CAAC,EAAA;AAEzJ;;;AAGG;IACI,OAAO,kBAAkB,CAAI,IAAkB,EAAA;AAClD,QAAA,OAAO,aAAa,CAAC,oCAAoC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3H;AAED;;;AAGG;IACI,OAAO,oCAAoC,CAAC,UAA4C,EAAA;QAC3F,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,IAAI,gBAAgB,CAAC,uFAAuF,EAAE,EAAC,IAAI,EAAE,qBAAqB,EAAC,CAAC,CAAC;AACtJ,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;QAExC,MAAM,qBAAqB,GAA4B,EAAE,CAAC;AAE1D,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAChC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,QAAQ,GAAG,cAAc,CAAC,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/F,qBAAqB,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;AACpB,gBAAA,UAAU,EAAE,QAAQ,GAAG,cAAc,CAAC,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;gBACvF,iBAAiB,EAAE,aAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC;gBAChF,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;gBACzD,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAa;gBAC3D,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAmB;AACrE,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,qBAAqB,CAAC;KAChC;AAED;;;;AAIG;AACI,IAAA,OAAO,qBAAqB,CAAC,MAAkC,EAAE,KAAU,EAAA;AAC9E,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAC7B,SAAA;aAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnD,YAAA,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,OAAO,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;KACJ;AAED;;;AAGG;IACI,OAAO,YAAY,CAAC,YAAoB,EAAA;AAC3C,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;AACxC,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAa,EAAE;YACjD,YAAY,GAAG,MAAM,CAAC;AACzB,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAmB,EAAE;YAC9D,YAAY,GAAG,OAAO,CAAC;AAC1B,SAAA;AAED,QAAA,QAAQ,YAAY,CAAC,WAAW,EAAE;AAC9B,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,UAAU;gBACX,OAAO,cAAc,CAAC,MAAM,CAAC;AACjC,YAAA,KAAK,SAAS;gBACV,OAAO,cAAc,CAAC,OAAO,CAAC;AAClC,YAAA,KAAK,MAAM;gBACP,OAAO,cAAc,CAAC,IAAI,CAAC;AAC/B,YAAA,KAAK,MAAM;gBACP,OAAO,cAAc,CAAC,IAAI,CAAC;AAC/B,YAAA,KAAK,QAAQ;gBACT,OAAO,cAAc,CAAC,MAAM,CAAC;AACjC,YAAA,KAAK,OAAO;gBACR,OAAO,cAAc,CAAC,MAAM,CAAC;AACjC,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA;gBACI,OAAO,cAAc,CAAC,MAAM,CAAC;AACpC,SAAA;KACJ;AAEM,IAAA,OAAO,mBAAmB,CAAC,UAA0B,EAAE,YAAoB,EAAA;AAC9E,QAAA,QAAQ,UAAU;YACd,KAAK,cAAc,CAAC,MAAM;AACtB,gBAAA,OAAO,YAAY,KAAK,UAAU,GAAG,qBAAqB,CAAC,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC;YACvG,KAAK,cAAc,CAAC,OAAO;gBACvB,OAAO,qBAAqB,CAAC,OAAO,CAAC;YACzC,KAAK,cAAc,CAAC,IAAI;gBACpB,OAAO,qBAAqB,CAAC,IAAI,CAAC;YACtC,KAAK,cAAc,CAAC,IAAI;gBACpB,OAAO,qBAAqB,CAAC,IAAI,CAAC;YACtC,KAAK,cAAc,CAAC,MAAM;gBACtB,OAAO,qBAAqB,CAAC,SAAS,CAAC;YAC3C,KAAK,cAAc,CAAC,MAAM,CAAC;AAC3B,YAAA;gBACI,OAAO,qBAAqB,CAAC,MAAM,CAAC;AAC3C,SAAA;KACJ;AAED;;;AAGG;IACI,OAAO,gBAAgB,CAAC,QAAgB,EAAA;AAC3C,QAAA,QAAQ,QAAQ;AACZ,YAAA,KAAK,QAAQ;gBACT,OAAO,kBAAkB,CAAC,MAAM,CAAC;AACrC,YAAA,KAAK,OAAO;gBACR,OAAO,kBAAkB,CAAC,KAAK,CAAC;AACpC,YAAA,KAAK,UAAU;gBACX,OAAO,kBAAkB,CAAC,QAAQ,CAAC;AACvC,YAAA,KAAK,QAAQ;gBACT,OAAO,kBAAkB,CAAC,MAAM,CAAC;AACrC,YAAA,KAAK,UAAU;gBACX,OAAO,kBAAkB,CAAC,QAAQ,CAAC;AACvC,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,SAAS;gBACV,OAAO,kBAAkB,CAAC,MAAM,CAAC;AACrC,YAAA,KAAK,OAAO;gBACR,OAAO,kBAAkB,CAAC,KAAK,CAAC;AACpC,YAAA,KAAK,YAAY;gBACb,OAAO,kBAAkB,CAAC,UAAU,CAAC;AACzC,YAAA,KAAK,MAAM;gBACP,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACnC,YAAA,KAAK,MAAM;gBACP,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACnC,YAAA,KAAK,QAAQ;gBACT,OAAO,kBAAkB,CAAC,MAAM,CAAC;AACrC,YAAA,KAAK,MAAM,CAAC;AACZ,YAAA;gBACI,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACtC,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,OAAO,8BAA8B,CAAC,IAAoB,EAAE,WAAmC,EAAA;AAClG,QAAA,QAAQ,IAAI;YACR,KAAK,cAAc,CAAC,MAAM;AACtB,gBAAA,OAAO,WAAW,KAAK,qBAAqB,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;YACpH,KAAK,cAAc,CAAC,OAAO;gBACvB,OAAO,kBAAkB,CAAC,MAAM,CAAC;YACrC,KAAK,cAAc,CAAC,IAAI;gBACpB,OAAO,kBAAkB,CAAC,UAAU,CAAC;YACzC,KAAK,cAAc,CAAC,MAAM;gBACtB,OAAO,kBAAkB,CAAC,MAAM,CAAC;YACrC,KAAK,cAAc,CAAC,MAAM,CAAC;YAC3B,KAAK,cAAc,CAAC,IAAI,CAAC;AACzB,YAAA;gBACI,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACtC,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,OAAO,2BAA2B,CAAC,QAAgB,EAAE,GAAW,EAAE,aAAsB,EAAA;QAC3F,OAAO,CAAA,qBAAA,EAAwB,QAAQ,CAAK,EAAA,EAAA,aAAa,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;KAClG;AAED;;AAEG;IACI,OAAO,aAAa,CAAC,WAAgB,EAAA;AACxC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAU,KAAI;AAC5B,YAAA,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzE,SAAC,CAAC;AAEF,QAAA,MAAM,OAAO,GAAG,CAAC,MAAW,EAAE,MAAY,KAAI;YAC1C,IAAI,OAAO,GAAU,EAAE,CAAC;AACxB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,gBAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,GAAG,EAAE,GAAG,CAAG,EAAA,GAAG,EAAE,CAAC;AAEvD,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjG,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;AACnB,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;KAC/B;;;MC3MQ,cAAc,CAAA;IAMvB,WAAsB,CAAA,KAAW,EAAE,IAAc,EAAE,WAA2B,EAAE,WAAW,GAAG,KAAK,EAAA;AAC/F,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAEhC,QAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AACpC,YAAA,WAAW,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACnC;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAEM,OAAO,MAAM,CAAO,KAAW,EAAE,IAAc,EAAE,WAA2B,EAAE,WAAW,GAAG,KAAK,EAAA;QACpG,OAAO,IAAI,cAAc,CAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;KAC1E;AACJ,CAAA;AAEK,SAAU,SAAS,CAAO,KAAW,EAAE,IAAc,EAAE,WAA2B,EAAE,WAAW,GAAG,KAAK,EAAA;AACzG,IAAA,OAAO,cAAc,CAAC,MAAM,CAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAC9E,CAAC;AAEK,SAAU,gBAAgB,CAAC,IAAc,EAAE,WAA2B,EAAE,WAAW,GAAG,KAAK,EAAA;AAC7F,IAAA,OAAO,cAAc,CAAC,MAAM,CAAM,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACjF;;MCtCa,eAAe,CAAA;AAOxB,IAAA,WAAA,CAAsB,IAAgB,EAAE,UAAmB,EAAE,aAAsB,EAAE,WAAqC,EAAA;AACtH,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAwB,CAAC,IAAI,SAAS,CAAC;AAC3F,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,IAAmC,CAAC,IAAI,SAAS,CAAC;AAClG,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,kBAAkB,CAAC,IAAmC,CAAC,IAAI,SAAS,CAAC;AACxG,SAAA;AACD,QAAA,IAAI,CAAC,YAAY;AACb,YAAA,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,WAAW,GAAG,WAAW,GAAG,qBAAqB,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;KACvK;AAEM,IAAA,OAAO,MAAM,CAAQ,UAAwB,EAAE,aAA2B,EAAE,WAAyC,EAAA;QACxH,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,UAAoB,EAAE,aAAuB,EAAE,WAAW,CAAC,CAAC;KACrG;IAEM,OAAO,SAAS,CACnB,IAAsB,EACtB,UAAwB,EACxB,aAA2B,EAC3B,WAAyC,EAAA;QAEzC,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,UAAoB,EAAE,aAAuB,EAAE,WAAW,CAAC,CAAC;KAChG;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAEM,IAAA,cAAc,CAAC,QAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAkB,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,QAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,QAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,QAAkB,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,uBAAuB,CAAC,QAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,IAA6B,EAAA;AAC7C,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE;gBACX,MAAM,IAAI,gBAAgB,CAAC,CAAyC,sCAAA,EAAA,IAAI,CAAa,UAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;AACzG,aAAA;YACD,IAAI,GAAG,QAAQ,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,eAAe,CAAoB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACvH;AACJ,CAAA;AAQe,SAAA,cAAc,CAAQ,IAAsB,EAAE,IAAuC,EAAA;AACjG,IAAA,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClF,CAAC;AAEe,SAAA,aAAa,CAAQ,IAA2B,EAAE,IAAuC,EAAA;AACrG,IAAA,OAAO,eAAe,CAAC,MAAM,CAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAEK,SAAU,KAAK,CAAQ,IAAuC,EAAA;AAChE,IAAA,OAAO,eAAe,CAAC,MAAM,CAAQ,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAChF;;ACjHA;MACa,cAAc,CAAA;AACvB,IAAA,WAAA,GAAA,GAA0B;AAEnB,IAAA,OAAO,MAAM,GAAA;QAChB,OAAO,IAAI,cAAc,EAAQ,CAAC;KACrC;AACJ,CAAA;SAEe,IAAI,GAAA;AAChB,IAAA,OAAO,cAAc,CAAC,MAAM,EAAQ,CAAC;AACzC;;ICXY,eASX;AATD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EATW,cAAc,KAAd,cAAc,GASzB,EAAA,CAAA,CAAA;;ICTW,cAMX;AAND,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACd,CAAC,EANW,aAAa,KAAb,aAAa,GAMxB,EAAA,CAAA,CAAA;;MCDY,UAAU,CAAA;aACI,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC,EAAA;aAC7B,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC,EAAA;aAC7B,IAAoB,CAAA,oBAAA,GAAG,EAAE,CAAC,EAAA;aAC1B,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC,EAAA;aAE7B,IAAsB,CAAA,sBAAA,GAAG,CAAC,CAAC,EAAA;AAE3B,IAAA,SAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,CAAC,EAAA;aACzB,IAAuB,CAAA,uBAAA,GAAG,CAAC,CAAC,EAAA;aAC5B,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC,EAAA;AAE7C,IAAA,OAAO,+BAA+B,CAAC,KAAmC,EAAE,OAA6C,EAAA;AAC5H,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,GAAG,UAAU,CAAC,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;QACtJ,MAAM,YAAY,GAAG,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,OAAO,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC;KAC1C;IAEM,OAAO,oBAAoB,CAAC,KAAmC,EAAA;QAClE,QAAQ,KAAK,CAAC,IAAI;YACd,KAAK,aAAa,CAAC,KAAK;gBACpB,OAAO,UAAU,CAAC,uBAAuB,CAAC;YAC9C,KAAK,aAAa,CAAC,KAAK;gBACpB,OAAO,UAAU,CAAC,uBAAuB,CAAC;AAC9C,YAAA;gBACI,OAAO,UAAU,CAAC,oBAAoB,CAAC;AAC9C,SAAA;KACJ;IAEM,OAAO,2BAA2B,CAAC,MAAiC,EAAA;AACvE,QAAA,QAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI;YACjC,KAAK,aAAa,CAAC,UAAU;gBACzB,OAAO,UAAU,CAAC,uBAAuB,CAAC;YAC9C,KAAK,aAAa,CAAC,KAAK;gBACpB,OAAO,UAAU,CAAC,uBAAuB,CAAC;YAC9C,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,UAAU;gBACzB,OAAO,UAAU,CAAC,uBAAuB,CAAC;YAC9C,KAAK,aAAa,CAAC,MAAM,CAAC;AAC1B,YAAA;gBACI,OAAO,UAAU,CAAC,oBAAoB,CAAC;AAC9C,SAAA;KACJ;;;MC7CQ,kBAAkB,CAAA;AAU3B,IAAA,WAAA,CAAY,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,WAAoB,EAAA;AATxD,QAAA,IAAA,CAAA,KAAK,GAAkB,aAAa,CAAC,MAAM,CAAC;QAG5C,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAA,CAAA,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC;AAInD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACnC;IAEM,KAAK,CAAC,UAAU,GAAG,KAAK,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1G,IAAI,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,sBAAsB,CAAC,OAAO,EAAE;AACrE,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,uCAAA,CAAyC,CAAC,CAAC;AAC1D,SAAA;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,aAAA,CAAe,CAAC,CAAC;AAChC,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,iBAAA,CAAmB,CAAC,CAAC;AACpC,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,eAAA,CAAiB,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,sBAAsB,CAAC,OAAO,EAAE;AACvD,YAAA,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED;;;;;;;;AAQG;AACI,IAAA,OAAO,MAAM,CAChB,WAA4B,EAC5B,IAAoB,EACpB,UAAoB,EACpB,aAAuB,EACvB,YAAsB,EACtB,aAAsC,EACtC,WAAoB,EAAA;QAEpB,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpE,UAAU,CAAC,YAAY,GAAG,WAAW,IAAI,UAAU,CAAC,YAAY,CAAC;QACjE,UAAU,CAAC,KAAK,GAAG,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC;QAC5C,UAAU,CAAC,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,WAAW,CAAC;QAC9D,UAAU,CAAC,cAAc,GAAG,aAAa,IAAI,UAAU,CAAC,cAAc,CAAC;QACvE,UAAU,CAAC,aAAa,GAAG,YAAY,IAAI,UAAU,CAAC,aAAa,CAAC;QACpE,UAAU,CAAC,aAAa,GAAG,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC;AACrE,QAAA,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC;AAEtC,QAAA,OAAO,UAAU,CAAC;KACrB;AAED;;;AAGG;AACI,IAAA,eAAe,CAAC,WAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,QAAQ,CAAC,IAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,cAAc,CAAC,QAAQ,GAAG,IAAI,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,iBAAiB,CAAC,WAAW,GAAG,IAAI,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,gBAAgB,CAAC,UAAU,GAAG,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,YAAY,GAAG,sBAAsB,CAAC,OAAO,EAAA;AAClE,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,eAAe,CAAC,WAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,8BAA8B,GAAA;QAClC,QAAQ,IAAI,CAAC,YAAY;YACrB,KAAK,cAAc,CAAC,OAAO,CAAC;YAC5B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,kBAAkB,CAAC;YAC9B,KAAK,cAAc,CAAC,SAAS;AACzB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,eAAe,CAAC;YAC3B,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,eAAe,CAAC;YAC3B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,kBAAkB,CAAC;YAC9B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,kBAAkB,CAAC;YAC9B,KAAK,cAAc,CAAC,MAAM;AACtB,gBAAA,OAAO,iBAAiB,CAAC;AAChC,SAAA;KACJ;IAEO,uBAAuB,GAAA;QAC3B,QAAQ,IAAI,CAAC,KAAK;YACd,KAAK,aAAa,CAAC,UAAU;AACzB,gBAAA,OAAO,2BAA2B,CAAC;YACvC,KAAK,aAAa,CAAC,KAAK;AACpB,gBAAA,OAAO,2BAA2B,CAAC;YACvC,KAAK,aAAa,CAAC,KAAK;AACpB,gBAAA,OAAO,2BAA2B,CAAC;YACvC,KAAK,aAAa,CAAC,UAAU;AACzB,gBAAA,OAAO,2BAA2B,CAAC;YACvC,KAAK,aAAa,CAAC,MAAM,CAAC;AAC1B,YAAA;AACI,gBAAA,OAAO,EAAE,CAAC;AACjB,SAAA;KACJ;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAE7E,QAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,QAAA,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAC7C,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAE3C,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AACJ,CAAA;IAEW,uBAIX;AAJD,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,sBAAA,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,sBAAA,CAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,GAIjC,EAAA,CAAA,CAAA;;MChNY,yBAAyB,CAAA;AAMlC,IAAA,WAAA,CACI,IAAY,EACZ,SAAsD,EACtD,OAA0F,EAC1F,OAA6B,EAAA;AAE7B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KAC3B;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAC,GAAG,IAAI,CAAC,QAAQ,EAAC,GAAG,SAAS,CAAC;AAC3D,QAAA,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KACzF;AACJ;;MC5BqB,uBAAuB,CAAA;AAIzC,IAAA,WAAA,CAAsB,MAA8C,EAAA;QAF1D,IAAO,CAAA,OAAA,GAAgB,EAAE,CAAC;AAGhC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAEM,IAAA,UAAU,CAAC,MAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACO,MAAM,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG;AACZ,YAAA,GAAG,IAAI;AACP,YAAA,OAAO,EAAE,SAAS;SACrB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ,CAAA;AAEK,MAAgB,gBAAmE,SAAQ,uBAAoC,CAAA;IAuCjI,WAAsB,CAAA,MAA8C,EAAE,QAAgB,EAAA;QAClF,KAAK,CAAC,MAAM,CAAC,CAAC;AAjClB,uBAAyB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC;AAC3C,uBAAyB,IAAA,CAAA,wBAAwB,GAAG,KAAK,CAAC;AAC1D,uBAAyB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC;AAI3C,uBAAyB,IAAA,CAAA,YAAY,GAAqC,EAAE,CAAC;AAC7E,uBAAyB,IAAA,CAAA,iBAAiB,GAAqC,EAAE,CAAC;AAIlF,uBAAyB,IAAA,CAAA,SAAS,GAAiC,QAAQ,CAAC;AAU5E,uBAAyB,IAAA,CAAA,UAAU,GAAG,EAAE,CAAC;AAEzC,uBAAyB,IAAA,CAAA,eAAe,GAAG,EAAE,CAAC;AAC9C,uBAAyB,IAAA,CAAA,eAAe,GAAG,EAAE,CAAC;AAC9C,uBAAyB,IAAK,CAAA,KAAA,GAAkB,aAAa,CAAC,MAAM,CAAC;;AAGrE,uBAAyB,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC;AAE9C,uBAAkC,IAAc,CAAA,cAAA,GAAG,IAAI,OAAO,EAA8C,CAAC;AAIzG,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KACzF;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC;KAC7C;AAED,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC;KAC7C;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAIM,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,WAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,QAAQ,GAAG,IAAI,EAAE,kBAA4F,EAAE,eAAe,GAAG,KAAK,EAAA;AACtJ,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAQ,GAAG,IAAI,EAAE,kBAA4F,EAAA;AAC7H,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AACjD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,gBAAyF,EAAA;AACvG,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAsC,EAAA;AACtD,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAA2B,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,gBAAkC,EAAA;AAC1D,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,aAA+B,EAAA;AACpD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAA2B,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,aAAiE,EAAA;AACtF,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,YAAwB,EAAA;AAC5C,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,EAAsC,EAAA;AACpD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,EAAmD,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,IAAY,EAAE,SAA6B,EAAE,OAAmC,EAAA;AAClG,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAChF,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,IAAY,EAAE,cAAuC,EAAE,OAAmC,EAAA;AACjH,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1F,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,IAAY,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC7E,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,CAAC,SAAiB,EAAE,cAAc,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,cAAuB,EAAA;AACrG,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,IAAA,GAAsB,aAAa,CAAC,MAAM,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC1B,MAAM,IAAI,gBAAgB,CAAC,CAAA,qCAAA,EAAwC,IAAI,CAAC,QAAQ,CAAiD,+CAAA,CAAA,CAAC,CAAC;AACtI,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,IAA+B,EAAE,OAAkB,EAAE,WAAgB,EAAE,IAAqD,EAAA;AACzI,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;KACrF;AAED,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC7C;AAES,IAAA,YAAY,CAAC,GAA0D,EAAA;AAC7E,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACvC,QAAA,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACnD,QAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC/C,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC/C,QAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACnD,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,QAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7E;AACJ;;ACnXK,MAAO,qBAAmC,SAAQ,gBAAmC,CAAA;IAUvF,WAAY,CAAA,MAA8C,EAAE,QAAgB,EAAA;AACxE,QAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAPlB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAIzC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC;AAI1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAC;AACtF,QAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;KAC3C;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAEM,IAAA,oBAAoB,CAAC,MAA8B,EAAA;AACtD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,KAAqB,EAAE,IAAA,GAAsB,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,KAAK,EAAA;AACvH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACzJ,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,EAAqC,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAc,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;AC9CM,MAAM,yBAAyB,GAAG,UAAU;;ACjB7C,MAAgB,qBAAmC,SAAQ,uBAAoC,CAAA;IAOjG,WAAsB,CAAA,MAA8C,EAAE,IAAY,EAAA;QAC9E,KAAK,CAAC,MAAM,CAAC,CAAC;QAJR,IAAO,CAAA,OAAA,GAA2C,EAAE,CAAC;QACrD,IAAY,CAAA,YAAA,GAAqC,EAAE,CAAC;QAI1D,IAAI,CAAC,KAAK,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAA,CAAE,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,yBAAyB,CAAC;KACtD;IAEM,WAAW,CACd,QAAgB,EAChB,cAA0G,EAAA;QAE1G,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAID,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;KACjC;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAQM,IAAA,SAAS,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,IAAY,EAAE,SAA6B,EAAE,OAAmC,EAAA;AAClG,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAChF,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,MAAO,uBAAqC,SAAQ,qBAAkC,CAAA;IACxF,WAAY,CAAA,MAA8C,EAAE,IAAY,EAAA;AACpE,QAAA,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAmD,CAAC;KACnE;IAEM,SAAS,GAAA;AACZ,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,QAAQ,CAAC,KAAwC,EAAA;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;QACP,MAAM,GAAG,GAAG,IAAI,uBAAuB,CAAc,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9G,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,QAAA,OAAO,GAAG,CAAC;KACd;AACJ,CAAA;AAEK,MAAO,oBAAkC,SAAQ,qBAAkC,CAAA;IAGrF,WAAY,CAAA,MAA8C,EAAE,IAAY,EAAA;AACpE,QAAA,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAHhB,QAAA,IAAA,CAAA,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QAIxC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,SAAA;KACJ;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAoD,CAAC;KACpE;IAEM,SAAS,GAAA;AACZ,QAAA,OAAO,OAAO,CAAC;KAClB;AAEM,IAAA,QAAQ,CAAC,KAAyC,EAAA;AACrD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;QACP,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAc,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7G,QAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;AC7HD;;;;;;;AAOG;MACU,gBAAgB,CAAA;IAGzB,WACoB,CAAA,SAAqB,EACrB,WAAyB,EAAA;QADzB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAY;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;KACzC;AAEJ,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,MAAO,YAAa,SAAQ,gBAAqB,CAAA;AACnD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC/B;AAEM,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,gBAAgB,CAAyC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC7F;IAEM,OAAO,SAAS,CAAQ,IAAsB,EAAA;AACjD,QAAA,OAAO,IAAI,gBAAgB,CAAgD,IAAI,EAAE,SAAS,CAAC,CAAC;KAC/F;AAEM,IAAA,OAAO,oBAAoB,CAAiB,IAAsB,EAAE,WAAsC,EAAA;AAC7G,QAAA,OAAO,IAAI,gBAAgB,CAA8D,IAAI,EAAE,WAAW,CAAC,CAAC;KAC/G;IAEM,OAAO,WAAW,CAAiB,WAAsC,EAAA;AAC5E,QAAA,OAAO,IAAI,gBAAgB,CAAuD,SAAS,EAAE,WAAW,CAAC,CAAC;KAC7G;AAgBM,IAAA,OAAO,YAAY,CAAgG,IAAiB,EAAE,WAA0B,EAAA;AACnK,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,OAAO,OAAO,WAAW,KAAK,WAAW;kBACnC,YAAY,CAAC,oBAAoB,CAAC,IAAwB,EAAE,WAAwC,CAAC;AACvG,kBAAE,YAAY,CAAC,SAAS,CAAC,IAAwB,CAAC,CAAC;AAC1D,SAAA;AAAM,aAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC3C,YAAA,OAAO,YAAY,CAAC,WAAW,CAAC,WAAwC,CAAC,CAAC;AAC7E,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,YAAY,CAAC,MAAM,EAAS,CAAC;AACvC,SAAA;KACJ;AACJ;;AChBK,MAAO,sBACT,SAAQ,gBAA0D,CAAA;IAQlE,WAAsB,CAAA,IAAgB,EAAE,WAAyB,EAAA;AAC7D,QAAA,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AANnB,QAAA,IAAA,CAAA,MAAM,GAAkD,EAAE,IAAI,UAAU,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAA,kCAAA,EAAqC,EAAE,CAAG,CAAA,CAAA,CAAC,CAAC,CAAC;KAO1J;AAED,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED;;;;;;;;AAQG;AACH,IAAA,SAAS,CAAC,EAAiD,EAAA;AACvD,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;;;AAQG;AACH,IAAA,UAAU,CAAC,EAAmD,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;;;AAQG;AACH,IAAA,UAAU,CAAC,EAAmD,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;;;;AASG;AACH,IAAA,UAAU,CAAC,EAAmD,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,MAAO,kBAAmB,SAAQ,sBAA2B,CAAA;AAC/D,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC/B;AAEM,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,sBAAsB,CAAyC,SAAS,EAAE,SAAS,CAAC,CAAC;KACnG;IAEM,OAAO,SAAS,CAAQ,IAAsB,EAAA;AACjD,QAAA,OAAO,IAAI,sBAAsB,CAAgD,IAAI,EAAE,SAAS,CAAC,CAAC;KACrG;AAEM,IAAA,OAAO,oBAAoB,CAAiB,IAAsB,EAAE,WAAsC,EAAA;AAC7G,QAAA,OAAO,IAAI,sBAAsB,CAA8D,IAAI,EAAE,WAAW,CAAC,CAAC;KACrH;IAEM,OAAO,WAAW,CAAiB,WAAsC,EAAA;AAC5E,QAAA,OAAO,IAAI,sBAAsB,CAAuD,SAAS,EAAE,WAAW,CAAC,CAAC;KACnH;AAgBM,IAAA,OAAO,YAAY,CAAgG,IAAiB,EAAE,WAA0B,EAAA;AACnK,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,OAAO,OAAO,WAAW,KAAK,WAAW;kBACnC,kBAAkB,CAAC,oBAAoB,CAAC,IAAwB,EAAE,WAAwC,CAAC;AAC7G,kBAAE,kBAAkB,CAAC,SAAS,CAAC,IAAwB,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC3C,YAAA,OAAO,kBAAkB,CAAC,WAAW,CAAC,WAAwC,CAAC,CAAC;AACnF,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,kBAAkB,CAAC,MAAM,EAAS,CAAC;AAC7C,SAAA;KACJ;AACJ;;ACxKK,MAAO,sBACT,SAAQ,gBAAgD,CAAA;IAKxD,WAAsB,CAAA,IAAQ,EAAE,WAAe,EAAA;AAC3C,QAAA,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAHnB,QAAA,IAAA,CAAA,OAAO,GAA2D,MAAM,EAAE,CAAC;KAIpF;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,UAAU,CAAC,EAA0D,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,MAAO,kBAAmB,SAAQ,sBAA2B,CAAA;AAC/D,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC/B;AAEM,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,sBAAsB,CAAyC,SAAS,EAAE,SAAS,CAAC,CAAC;KACnG;IAEM,OAAO,SAAS,CAAQ,IAAsB,EAAA;AACjD,QAAA,OAAO,IAAI,sBAAsB,CAAgD,IAAI,EAAE,SAAS,CAAC,CAAC;KACrG;AAEM,IAAA,OAAO,oBAAoB,CAAiB,IAAsB,EAAE,WAAsC,EAAA;AAC7G,QAAA,OAAO,IAAI,sBAAsB,CAA8D,IAAI,EAAE,WAAW,CAAC,CAAC;KACrH;IAEM,OAAO,WAAW,CACrB,WAA0C,EAAA;AAE1C,QAAA,OAAO,IAAI,sBAAsB,CAAmE,SAAS,EAAE,WAAW,CAAC,CAAC;KAC/H;AAgBM,IAAA,OAAO,YAAY,CAAgG,IAAiB,EAAE,WAA0B,EAAA;AACnK,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,OAAO,OAAO,WAAW,KAAK,WAAW;kBACnC,kBAAkB,CAAC,oBAAoB,CAAC,IAAwB,EAAE,WAAwC,CAAC;AAC7G,kBAAE,kBAAkB,CAAC,SAAS,CAAC,IAAwB,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC3C,YAAA,OAAO,kBAAkB,CAAC,WAAW,CAAC,WAAwC,CAAC,CAAC;AACnF,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,kBAAkB,CAAC,MAAM,EAAS,CAAC;AAC7C,SAAA;KACJ;AACJ;;ACrFK,SAAU,iBAAiB,CAAC,KAAc,EAAA;AAC5C,IAAA,OAAO,YAAY,CAAC,KAAK,CAAC,GAAI,KAA6B,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC;AAEK,SAAU,gBAAgB,CAAC,KAAc,EAAA;AAC3C,IAAA,OAAO,YAAY,CAAC,KAAK,CAAC,GAAI,KAA4B,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5F,CAAC;AAEY,MAAA,YAAY,GAAG,CAAI,KAAwB,KAAmB;AACvE,IAAA,OAAO,YAAY,CAAC,KAAK,CAAC,GAAI,KAAuB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACtE,EAAE;AAEW,MAAA,cAAc,GAAG,CAAC,KAAc,KAAY;AACrD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AAAM,SAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AACD,QAAA,MAAM,IAAI,gBAAgB,CAAC,+DAA+D,KAAK,CAAA,CAAE,CAAC,CAAC;AACtG,KAAA;AAAM,SAAA;AACH,QAAA,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC,CAAC;AAClE,KAAA;AACL,EAAE;AAEW,MAAA,cAAc,GAAG,CAAC,KAAc,KAAY;AACrD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AAAM,SAAA;AACH,QAAA,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,KAAK,CAAA,CAAE,CAAC,CAAC;AAClE,KAAA;AACL,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,KAAc,KAAY;AACtD,IAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9B,QAAA,MAAM,IAAI,gBAAgB,CAAC,0BAA0B,KAAK,CAAA,CAAE,CAAC,CAAC;AACjE,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACL,EAAE;AAEW,MAAA,cAAc,GAAG,CAAI,KAAkB,KAAO;IACvD,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE;AAChD,QAAA,MAAM,IAAI,gBAAgB,CAAC,iCAAiC,KAAK,CAAA,CAAE,CAAC,CAAC;AACxE,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACL;;ACfM,MAAO,qBAQT,SAAQ,gBAA0D,CAAA;IAOlE,WAAsB,CAAA,IAAgB,EAAE,WAAyB,EAAA;AAC7D,QAAA,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AALV,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAA8C,CAAC;QAE1F,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;QAMf,IAAO,CAAA,OAAA,GAAkE,OAAO,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC,CAAC;KAFrG;AAID,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KACnD;AAED,IAAA,UAAU,CAAC,EAAiE,EAAA;AACxE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,iBAAiB,CAAC,EAAsD,EAAA;AACpE,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,EAAkC,EAAE,OAAgB,EAAE,MAAe,KAAK,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;AAC9J,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,YAAY,CAAC,UAA2C,EAAA;AACpD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9C;AACJ,CAAA;AAEK,MAAO,iBAAkB,SAAQ,qBAA0B,CAAA;AAC7D,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC/B;AAEM,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,qBAAqB,CAAyD,SAAS,EAAE,SAAS,CAAC,CAAC;KAClH;IAEM,OAAO,SAAS,CAAsE,IAAsB,EAAA;AAC/G,QAAA,OAAO,IAAI,qBAAqB,CAAgE,IAAI,EAAE,SAAS,CAAC,CAAC;KACpH;AAEM,IAAA,OAAO,oBAAoB,CAC9B,IAAsB,EACtB,WAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,qBAAqB,CAA8E,IAAI,EAAE,WAAW,CAAC,CAAC;KACpI;IAEM,OAAO,WAAW,CACrB,WAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,qBAAqB,CAAuE,SAAS,EAAE,WAAW,CAAC,CAAC;KAClI;AA6BM,IAAA,OAAO,YAAY,CAOxB,IAAiB,EAAE,WAA0B,EAAA;AAC3C,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,OAAO,OAAO,WAAW,KAAK,WAAW;kBACnC,iBAAiB,CAAC,oBAAoB,CAAiC,IAAwB,EAAE,WAAwC,CAAC;AAC5I,kBAAE,iBAAiB,CAAC,SAAS,CAAwB,IAAwB,CAAC,CAAC;AACtF,SAAA;AAAM,aAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC3C,YAAA,OAAO,iBAAiB,CAAC,WAAW,CAAiC,WAAwC,CAAC,CAAC;AAClH,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,iBAAiB,CAAC,MAAM,EAAyB,CAAC;AAC5D,SAAA;KACJ;AACJ;;ACzIK,MAAO,yBAQT,SAAQ,gBAA0D,CAAA;IAMlE,WAAsB,CAAA,IAAgB,EAAE,WAAyB,EAAA;AAC7D,QAAA,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAA2C,IAAI,EAAE,WAAW,CAAC,CAAC;QACvH,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAA2D,IAAI,EAAE,WAAW,CAAC,CAAC;KACxI;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;KACxC;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;KAC/C;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;KACxC;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;KACxC;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;KACzC;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;KACzC;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;KACzC;AAED,IAAA,YAAY,CAAC,UAA2C,EAAA;AACpD,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;KACnD;AAED,IAAA,UAAU,CAAC,EAAiE,EAAA;AACxE,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,iBAAiB,CAAC,EAAsD,EAAA;AACpE,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,SAAS,CAAC,EAAiD,EAAA;AACvD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,UAAU,CAAC,EAAmD,EAAA;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,UAAU,CAAC,EAAmD,EAAA;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,UAAU,CAAC,EAAmD,EAAA;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,MAAO,qBAAsB,SAAQ,yBAA8B,CAAA;AACrE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC/B;AAEM,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,yBAAyB,CAAyD,SAAS,EAAE,SAAS,CAAC,CAAC;KACtH;IAEM,OAAO,SAAS,CAAsE,IAAsB,EAAA;AAC/G,QAAA,OAAO,IAAI,yBAAyB,CAAgE,IAAI,EAAE,SAAS,CAAC,CAAC;KACxH;AAEM,IAAA,OAAO,oBAAoB,CAC9B,IAAsB,EACtB,WAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,yBAAyB,CAA8E,IAAI,EAAE,WAAW,CAAC,CAAC;KACxI;IAEM,OAAO,WAAW,CACrB,WAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,yBAAyB,CAAuE,SAAS,EAAE,WAAW,CAAC,CAAC;KACtI;AA6BM,IAAA,OAAO,YAAY,CAOxB,IAAiB,EAAE,WAA0B,EAAA;AAC3C,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,OAAO,OAAO,WAAW,KAAK,WAAW;kBACnC,qBAAqB,CAAC,oBAAoB,CAAiC,IAAwB,EAAE,WAAwC,CAAC;AAChJ,kBAAE,qBAAqB,CAAC,SAAS,CAAwB,IAAwB,CAAC,CAAC;AAC1F,SAAA;AAAM,aAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC3C,YAAA,OAAO,qBAAqB,CAAC,WAAW,CAAiC,WAAwC,CAAC,CAAC;AACtH,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,qBAAqB,CAAC,MAAM,EAAyB,CAAC;AAChE,SAAA;KACJ;AACJ,CAAA;AAEK,MAAO,gCAA6F,SAAQ,yBAOjH,CAAA;AACG,IAAA,WAAA,CAAsB,WAAyB,EAAA;AAC3C,QAAA,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;KACjC;AACJ,CAAA;AAEK,MAAO,4BAA6B,SAAQ,gCAAgC,CAAA;AAC9E,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,SAAS,CAAC,CAAC;KACpB;AAEM,IAAA,OAAO,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,gCAAgC,CAAY,SAAS,CAAC,CAAC;KACrE;IAEM,OAAO,WAAW,CAAU,WAAsC,EAAA;AACrE,QAAA,OAAO,IAAI,gCAAgC,CAAqC,WAAW,CAAC,CAAC;KAChG;AACJ;;AC5KY,MAAA,4BAA4B,GAAG,CAAsB,qBAAoE,KAAI;IACtI,MAAM,GAAG,GAAqE,EAAE,CAAC;AACjF,IAAA,IAAI,qBAAqB,EAAE;QACvB,IAAK,qBAAuC,CAAC,cAAc,EAAE;;AAEzD,YAAA,GAAG,CAAC,YAAY,GAAG,qBAAiE,CAAC;AACxF,SAAA;AAAM,aAAA;AACH,YAAA,GAAG,CAAC,WAAW,GAAG,qBAAkD,CAAC;AACxE,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,EAAE;AAEI,MAAO,qBACT,SAAQ,gBAAqD,CAAA;AAyB7D,IAAA,WAAA,CAAY,MAA8C,EAAE,QAAkB,EAAE,GAAmE,EAAA;AAC/I,QAAA,KAAK,CAAC,MAAM,EAAE,QAAkB,CAAC,CAAC;AApB5B,QAAA,IAAA,CAAA,WAAW,GAAwB,mBAAmB,CAAC,QAAQ,CAAC;QAEhE,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAI/B,IAAkB,CAAA,kBAAA,GAAG,4BAA4B,CAAC;QAgBxD,IAAI,GAAG,EAAE,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,GAAG,EAAE,oBAAoB,CAAC;AAEvD,QAAA,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;KAC/C;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,wBAAwB,GAAA;QAC/B,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAEM,IAAA,wBAAwB,CAAC,QAA0B,EAAE,SAAS,GAAG,KAAK,EAAA;QACzE,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAkB,EAAE,SAAS,CAAC,CAAC;KAC7E;AAEM,IAAA,8BAA8B,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAA;AACrE,QAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,2BAA2B,CAAC,QAA0B,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,QAAkB,CAAC,CAAC;KACrE;AAEM,IAAA,iCAAiC,CAAC,QAAgB,EAAA;AACrD,QAAA,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,wBAAwB,CAAC,QAA0B,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAkB,CAAC,CAAC;KAClE;AAEM,IAAA,8BAA8B,CAAC,QAAgB,EAAA;QAClD,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAA4D,EAAA;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,CAAC,aAA4B,MAAM,EAAA;AACnD,QAAA,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC;KACf;AAEe,IAAA,UAAU,CAAC,MAAyB,EAAA;AAChD,QAAA,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACnC;AAEM,IAAA,cAAc,CAAC,IAAsC,EAAA;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,YAAY,CAAC;AACpD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,SAAS,CAAC;AAC9C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,WAAW,CAAC;AAClD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,WAAW,CAAC;AAClD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,EAAE,YAAY,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,qBAAsD,EAAE,iBAAiE,EAAA;AACrI,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;AACpD,QAAA,IAAI,CAAC,wBAAwB,GAAG,iBAAiB,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,mBAA2B,EAAA;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAA+C,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;YAChH,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,oBAAoB,EAAE,IAAI,CAAC,qBAAqB;AACnD,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzD,QAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC3D,QAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAC/D,QAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzD,QAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACnD,QAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAC/D,QAAA,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;AACjE,QAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC3D,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ,CAAA;AAEK,MAAO,yBAA6C,SAAQ,qBAA0E,CAAA;AAIxI,IAAA,WAAA,CAAY,MAA8C,EAAE,QAAgB,EAAE,SAA+B,EAAE,OAAqB,EAAA;AAChI,QAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;AACpB,YAAA,YAAY,EAAE,kBAAkB,CAAC,MAAM,EAAa;AACpD,YAAA,oBAAoB,EAAE,OAAO;AAChC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;cACzC,QAAQ,CAAC,0BAA0B,CAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,SAAS,CAAC;cAC/I,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;AAC1I,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;KAChD;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAEM,mBAAmB,CAAC,GAAG,eAAwC,EAAA;AAClE,QAAA,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC1C,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,cAAc,CAAC;AAC1I,YAAA,IAAI,mBAAmB,EAAE;AACrB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,mBAAmB,CAAC,CAAC;AACjF,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,YAA8B,EAAA;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC;AACrI,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,CAAC;AAChF,YAAA,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqC,CAAC,CAAC,CAAC;AAC7E,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEe,IAAA,cAAc,CAAC,IAAsC,EAAA;QACjE,KAAK,CAAC,cAAc,CAAC;AACjB,YAAA,GAAG,IAAI;AACP,YAAA,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI;AACtC,YAAA,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI;AAC3C,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;IAEe,IAAI,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAoB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzD,QAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAC/D,QAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzD,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;ACzRY,MAAA,gCAAgC,GAAG,CAAsB,qBAA8E,KAAI;IACpJ,MAAM,GAAG,GAA+E,EAAE,CAAC;AAC3F,IAAA,IAAI,qBAAqB,EAAE;QACvB,IAAK,qBAAuC,CAAC,cAAc,EAAE;;AAEzD,YAAA,GAAG,CAAC,kBAAkB,GAAG,qBAAgE,CAAC;AAC7F,SAAA;AAAM,aAAA;AACH,YAAA,GAAG,CAAC,iBAAiB,GAAG,qBAAkD,CAAC;AAC9E,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,EAAE;AAEI,MAAO,+BAAmG,SAAQ,gBAAqD,CAAA;IAYzK,WACI,CAAA,MAA8C,EAC9C,QAAgB,EAChB,mBAAoD,EACpD,qBAAsD,EACtD,GAA6E,EAAA;AAE7E,QAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAfpB,QAAA,IAAA,CAAA,UAAU,GAAkC,6BAA6B,CAAC,sBAAsB,CAAC;QACjG,IAAQ,CAAA,QAAA,GAA2C,CAAC,+BAA+B,CAAC,GAAG,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAC;QACjI,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAChC,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;QAC5B,IAAqB,CAAA,qBAAA,GAAG,EAAE,CAAC;QAC3B,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAW3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AAChD,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;QAEpD,IAAI,GAAG,EAAE,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC,kBAAkB,CAAC;AAC1D,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,wBAAwB,GAAG,iBAAiB,CAAC,YAAY,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC5H,SAAA;KACJ;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAEM,IAAA,UAAU,CAAC,EAAsD,EAAA;AACpE,QAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,WAAW,CAAC,UAAkD,EAAE,EAAA;QACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,cAAgC,EAAE,aAA+B,EAAE,gBAAgB,GAAG,IAAI,EAAA;QAC/G,OAAO,IAAI,CAAC,uBAAuB,CAAC,cAAwB,EAAE,aAAuB,EAAE,gBAAgB,CAAC,CAAC;KAC5G;AAEM,IAAA,uBAAuB,CAAC,cAAsB,EAAE,aAAqB,EAAE,gBAAgB,GAAG,IAAI,EAAA;AACjG,QAAA,IAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC;AAChD,QAAA,IAAI,CAAC,sBAAsB,GAAG,cAAc,CAAC;AAC7C,QAAA,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,OAAO,GAAG,IAAI,EAAE,YAAuB,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;QACP,MAAM,KAAK,GAAG,IAAI,+BAA+B,CAC7C,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAChC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAClC;YACI,kBAAkB,EAAE,IAAI,CAAC,uBAAuB;AACnD,SAAA,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,QAAA,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC7D,QAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC3D,QAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzD,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ,CAAA;AAEK,MAAO,yBAA8E,SAAQ,gBAAqD,CAAA;AAMpJ,IAAA,WAAA,CAAY,MAA8C,EAAE,QAAgB,EAAE,mBAAwD,EAAA;AAClI,QAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AALpB,QAAA,IAAA,CAAA,UAAU,GAA4B,uBAAuB,CAAC,YAAY,CAAC;QAC3E,IAAa,CAAA,aAAA,GAAqC,EAAE,CAAC;QACrD,IAAQ,CAAA,QAAA,GAA4C,EAAE,CAAC;AAI3D,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,yBAAyB,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;KAC5J;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;KAC1C;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;KAC9C;AAED,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;KAClD;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;KAC/C;AAEM,IAAA,eAAe,CAAC,MAAiC,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,OAAoC,EAAA;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAAwC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;QACP,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAsC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;AACjJ,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;AClNM,MAAM,gBAAgB,GAAG,CAAC,GAAS,KAAuB;IAC7D,OAAO,CAAC,CAAkB,KAAI;AAC1B,QAAA,MAAM,IAAI,GAAS,CAAC,EAAE,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,MAAM,SAAS,GAAG,EAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;YAC/C,CAAC,EAAE,WAAW,EAAE,CAAC;AACjB,YAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvB,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACxB,YAAA,CAAC,CAAC,SAAS,CAAC,EAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC;AACN,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,GAAS,KAAuB;IAC7D,OAAO,CAAC,CAAkB,KAAI;AAC1B,QAAA,MAAM,IAAI,GAAS,CAAC,EAAE,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;QAEnC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,MAAM,SAAS,GAAG,EAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;YAC/C,CAAC,EAAE,WAAW,EAAE,CAAC;AACjB,YAAA,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvB,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACxB,YAAA,CAAC,CAAC,SAAS,CAAC,EAAC,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC;AACN,CAAC;;AC6CK,MAAO,oBAAkG,SAAQ,gBAAqD,CAAA;IAwDxK,WAAY,CAAA,MAA8C,EAAE,QAAgB,EAAA;AACxE,QAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAxDpB,QAAA,IAAA,CAAA,UAAU,GAAuB,kBAAkB,CAAC,IAAI,CAAC;QAYzD,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAK1B,IAAgB,CAAA,gBAAA,GAA+B,QAAQ,CAAC;;QAIxD,IAAa,CAAA,aAAA,GAAsB,EAAE,CAAC;KAoC7C;AAED;;;;AAIG;AACI,IAAA,MAAM,CAAC,SAA6B,EAAE,GAAG,IAAW,EAAA;AACvD,QAAA,QAAQ,SAAS;YACb,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,KAAK,kBAAkB,CAAC,KAAK;AACzB,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YACpC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAClC,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YACpC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,KAAK,kBAAkB,CAAC,KAAK;AACzB,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,KAAK,kBAAkB,CAAC,UAAU;AAC9B,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,KAAK,kBAAkB,CAAC,IAAI;AACxB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,kBAAkB,CAAC,IAAI;AACxB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAChC,KAAK,kBAAkB,CAAC,SAAS;AAC7B,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;YACrC,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YACpC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,KAAK,kBAAkB,CAAC,IAAI;gBACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,SAAA;KACJ;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,8BAA8B,GAAA;QACrC,OAAO,IAAI,CAAC,8BAA8B,CAAC;KAC9C;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,MAAM,CAAC,IAA6B,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;KACtF;AAEM,IAAA,UAAU,CAAC,IAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KACxC;AAEM,IAAA,QAAQ,CAAC,IAA+B,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,IAAI,KAAK,CAAC;aACxD,mBAAmB,CAAC,IAAI,CAAC;aACzB,oBAAoB,CAAC,IAAI,CAAC;AAC1B,aAAA,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACjC;AAEM,IAAA,UAAU,CAAC,IAAoD,EAAA;QAClE,OAAO,IAAI,CAAC,gBAAgB,CAA6B;AACrD,YAAA,GAAG,IAAI;AACP,YAAA,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAI,IAAI,CAAC,gBAA2B,GAAG,SAAS;AAC3F,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,IAAiC,EAAA;AACrD,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC9C,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,gBAAgB,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,EAAE,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC;QACvE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,IAAI,KAAK,CAAC;AACxD,aAAA,mBAAmB,CAAC;AACjB,YAAA,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC;AAC/C,YAAA,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC;SAClD,CAAC;aACD,oBAAoB,CAAC,IAAI,CAAC;AAC1B,aAAA,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACjC;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,CAAC,OAAyC,EAAE,gBAAyB,EAAA;AAC/E,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAgB,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA,EAAG,gBAAgB,GAAG,CAAA,EAAG,gBAAgB,CAAG,CAAA,CAAA,GAAG,EAAE,CAAG,EAAA,CAAC,EAAE,EAAC,CAAA,CAAC,CAAC;AAC9H,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAO,SAA+B,EAAE,MAAoB,EAAA;AAC9E,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;cACpC,QAAQ,CAAC,0BAA0B,CAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC;AAC9H,cAAE,QAAQ,CAAC,6BAA6B,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;AACxH,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,IAAmC,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC;AAChD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,EAAE,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,GAAG,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,GAAG,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,EAAE,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,WAAW,CAAC;AAEhD,QAAA,IAAI,IAAI,EAAE,GAAG,IAAI,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,SAAA;AACD,QAAA,IAAI,IAAI,EAAE,GAAG,KAAK,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,MAAM,CAAC,IAAY,EAAE,QAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,MAAM,CAAC,IAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,EAAE,WAAW,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,MAAM,CAAC;QAChC,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;KACpE;AAEM,IAAA,WAAW,CAAC,IAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,IAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,EAAE,sBAAsB,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,iBAAiB,CAAC,SAA+C,EAAE,IAA8B,EAAA;AACpG,QAAA,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,aAAa,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,IAAyC,EAAA;AACjE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,EAAE,WAAW,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,GAAG,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,IAAuC,EAAA;AAC9D,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,iBAAiB,CAAC;AACxD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,iBAAiB,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,kBAAkB,CAAC,WAAW,GAAG,IAAI,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,kBAAkB,CAAC,IAAuC,EAAA;AAC7D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,CAAC,aAA4B,MAAM,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,uBAAuB,CAAC,KAAK,GAAG,IAAI,EAAA;QACvC,IAAI,IAAI,CAAC,SAAS,KAAK,kBAAkB,CAAC,IAAI,IAAI,KAAK,EAAE;YACrD,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AAClD,SAAA;aAAM,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,uBAAuB,CAAC,EAAwC,EAAA;AACnE,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAsC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1G,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACnD,QAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAC/D,QAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAC/D,QAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnD,KAAK,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9C,QAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACjD,QAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3C,QAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3C,QAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACrD,QAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC3D,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC,QAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACzC,QAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvD,QAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACzC,QAAA,KAAK,CAAC,8BAA8B,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAC3E,QAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvD,QAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC3D,QAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAC/D,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC,QAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAA,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzD,QAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;MC9fY,oBAAoB,CAAA;aACN,IAAgB,CAAA,gBAAA,GAAG,yBAAH,CAA6B,EAAA;AAmBpE;;;;AAIG;AACH,IAAA,WAAA,CAAsB,KAAmC,EAAE,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,EAAA;AApB7G,uBAAkC,IAAA,CAAA,KAAK,GAAgD,EAAE,CAAC;AAC1F,uBAAkC,IAAA,CAAA,OAAO,GAA6C,EAAE,CAAC;AACzF,uBAAyB,IAAA,CAAA,OAAO,GAA8C,EAAE,CAAC;AAIjF,uBAAyB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC;AAE3C,uBAAyB,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC;AAK9C,uBAAkC,IAAc,CAAA,cAAA,GAAG,IAAI,OAAO,EAA6B,CAAC;AAQxF,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,0BAA0B,GAAA;QACjC,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED,IAAA,IAAW,gCAAgC,GAAA;QACvC,OAAO,IAAI,CAAC,iCAAiC,CAAC;KACjD;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED;;;;AAIG;IACI,cAAc,CAAC,IAAY,EAAE,KAAc,EAAA;QAC9C,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAc,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAClE,SAAA;AACD,QAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED;;;;AAIG;IACI,gBAAgB,CAAC,IAAY,EAAE,KAAqB,EAAA;QACvD,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAc,IAAI,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,KAAK,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACpE,aAAA;AACD,YAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,OAAO,UAAU,CAAC;KACrB;AAED;;;AAGG;AACI,IAAA,QAAQ,CAAC,QAA2B,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAkB,CAAC,CAAC;KAClD;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,QAAgB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;KAClE;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,QAA2B,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAkB,CAAC,CAAC;KACrD;AAED;;;AAGG;AACI,IAAA,iBAAiB,CAAC,QAAgB,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACtE,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,MAAA,EAAS,QAAQ,CAAA,gBAAA,CAAkB,EAAE,EAAC,IAAI,EAAE,uBAAuB,EAAC,CAAC,CAAC;AACpG,SAAA;AACD,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAC5G,IAAI,aAAa,IAAI,CAAC,EAAE;gBACpB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBACtC,MAAM;AACT,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KACpC;AAED;;;AAGG;AACI,IAAA,kBAAkB,CAAsC,KAA4D,EAAA;QACvH,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,QAAQ,CAA0H,QAAkB,EAAA;QACvJ,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAsC,IAAI,EAAE,QAAkB,CAAC,CAAC;AACtG,QAAA,IAAI,CAAC,kBAAkB,CAAyB,KAAK,CAAC,CAAC;AACvD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;AAIG;AACI,IAAA,cAAc,CAAiE,QAAgB,EAAA;QAClG,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAsC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,kBAAkB,CAAyB,KAAK,CAAC,CAAC;AACvD,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,SAAS,CAAC,GAAG,UAAiC,EAAA;AACjD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,UAAkB,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;AAIG;IACI,cAAc,CAAqG,QAAW,EAAE,IAA4B,EAAA;QAC/J,OAAO,IAAI,CAAC,oBAAoB,CAAyB,QAAkB,EAAE,IAAI,CAAC,CAAC;KACtF;AAED;;;;AAIG;IACI,oBAAoB,CAAsC,QAAgB,EAAE,IAA4B,EAAA;QAC3G,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAiD,IAAI,EAAE,QAAQ,EAAE;AACpG,YAAA,IAAI,EAAE,IAAI;AACb,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,uCAAuC,CAA4C,QAAgB,EAAE,oBAA4B,EAAA;QACpI,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAiD,IAAI,EAAE,QAAQ,EAAE;AACpG,YAAA,oBAAoB,EAAE,oBAAoB;AAC7C,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,kBAAkB,CAAyB,KAAK,CAAC,CAAC;AACvD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,0BAA0B,CAC7B,QAAkB,EAClB,QAAsD,EACtD,IAA4B,EAAA;QAE5B,OAAO,IAAI,CAAC,gCAAgC,CAAkC,QAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KACrH;AAEM,IAAA,gCAAgC,CACnC,QAAgB,EAChB,QAAsD,EACtD,IAA4B,EAAA;AAE5B,QAAA,MAAM,GAAG,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAA+C,IAAI,EAAE,QAAQ,EAAE;AAClG,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,kBAAkB,CACrB,QAA2B,EAC3B,QAA8B,EAC9B,OAAqB,EAAA;QAErB,OAAO,IAAI,CAAC,wBAAwB,CAAO,QAAkB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KACrF;AAED;;;;;AAKG;AACI,IAAA,wBAAwB,CAA0B,QAAgB,EAAE,QAA8B,EAAE,OAAqB,EAAA;AAC5H,QAAA,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAoB,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;AAIG;IACI,kBAAkB,CACrB,QAAkB,EAClB,mBAAwD,EAAA;QAExD,OAAO,IAAI,CAAC,wBAAwB,CAAyB,QAAkB,EAAE,mBAAmB,CAAC,CAAC;KACzG;AAED;;;;AAIG;IACI,wBAAwB,CAAwC,QAAgB,EAAE,mBAAwD,EAAA;QAC7I,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAsC,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACtH,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;;AAKG;AACI,IAAA,wBAAwB,CAC3B,QAAkB,EAClB,mBAAoD,EACpD,qBAAsD,EAAA;QAEtD,OAAO,IAAI,CAAC,8BAA8B,CAAyB,QAAkB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;KACtI;AAED;;;;;AAKG;AACI,IAAA,8BAA8B,CACjC,QAAgB,EAChB,mBAAoD,EACpD,qBAAsD,EAAA;AAEtD,QAAA,MAAM,KAAK,GAAG,IAAI,+BAA+B,CAAiD,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAC9J,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,oCAAoC,CAMvC,QAAkB,EAClB,mBAAoD,EACpD,qBAAsD,EACtD,kBAA+D,EAAA;AAE/D,QAAA,OAAO,IAAI,CAAC,0CAA0C,CAClD,QAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,CACrB,CAAC;KACL;AAEM,IAAA,0CAA0C,CAC7C,QAAgB,EAChB,mBAAoD,EACpD,qBAAsD,EACtD,kBAA+D,EAAA;AAE/D,QAAA,MAAM,GAAG,GAAG,gCAAgC,CAAC,kBAAkB,CAAC,CAAC;AACjE,QAAA,MAAM,KAAK,GAAG,IAAI,+BAA+B,CAAmD,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,qBAAqB,EAAE;AAC5J,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;IACI,YAAY,CAAC,QAAQ,GAAG,IAAI,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACI,IAAA,aAAa,CAAC,IAAY,EAAE,SAA6B,EAAE,OAAmC,EAAA;QACjG,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/D,SAAA;KACJ;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAc,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClG,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;YAC/B,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,SAAA;AACD,QAAA,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE;AACjC,YAAA,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAA;YACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChE,QAAA,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjG,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;AAIG;AACI,IAAA,0BAA0B,CAAC,UAA6C,EAAA;QAC3E,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACO,IAAA,wBAAwB,CAAC,QAA8C,EAAA;AAC7E,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACK,kBAAkB,GAAA;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACtE,SAAA;KACJ;AAED;;;AAGG;IACK,qBAAqB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AACjF,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,qBAAqB,CAAC,QAA2B,EAAE,SAA6B,EAAE,GAAG,IAAW,EAAA;QACnG,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAkB,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;KACnF;AAEM,IAAA,2BAA2B,CAAC,QAAgB,EAAE,SAA6B,EAAE,GAAG,IAAW,EAAA;AAC9F,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,yDAAyD,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC/H,SAAA;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACnH,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;YAChC,oBAAoB,CAAC,2BAA2B,CAC5C,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAChD,GAAG,IAAI,CACV,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACI,IAAA,qBAAqB,CACxB,QAAkB,EAClB,SAAgC,EAChC,MAAoB,EAAA;QAEpB,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAClF;AAEM,IAAA,2BAA2B,CAAa,QAAgB,EAAE,QAA+B,EAAE,MAAoB,EAAA;AAClH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,yDAAyD,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC/H,SAAA;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACnG,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAC/C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAC7D,YAAA,IAAI,KAAK,IAAI,KAAK,YAAY,oBAAoB,EAAE;gBAChD,KAAK,CAAC,eAAe,CAAC,QAAQ,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAa,CAAC,EAAE,MAAM,CAAC,CAAC;AACxH,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACI,IAAA,mCAAmC,CACtC,QAA2B,EAC3B,cAA4D,EAC5D,aAAgC,EAAA;QAEhC,OAAO,IAAI,CAAC,yCAAyC,CAAC,QAAkB,EAAE,cAAc,EAAE,aAAuB,CAAC,CAAC;KACtH;AAEM,IAAA,yCAAyC,CAC5C,QAAgB,EAChB,cAA4D,EAC5D,aAAsB,EAAA;AAEtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAA0B,QAAQ,EAAE,cAAc,CAAC,CAAC,cAAc,EAAE,CAAC;AAExH,QAAA,IAAI,aAAa,EAAE;AACd,YAAA,KAAyC,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACtF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACI,IAAA,SAAS,CACZ,QAAkB,EAClB,KAAyC,EACzC,cAAuC,EAAA;QAEvC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAkB,EAAE,KAAK,EAAE,cAAwB,CAAC,CAAC;KACpF;AAEM,IAAA,eAAe,CAAmB,QAAgB,EAAE,KAAwC,EAAE,cAAsB,EAAA;AACvH,QAAA,IAAI,CAAC,iCAAiC,GAAG,QAAkB,CAAC;AAC5D,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,2BAA2B,GAAG,cAAwB,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,IAA0B,EAAE,OAAkB,EAAE,WAAgB,EAAE,IAAqC,EAAA;AACpH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;KAChF;IAEM,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC7C;AAED;;;;;;;AAOG;IACO,OAAO,2BAA2B,CACxC,UAAmC,EACnC,SAAgC,EAChC,KAAgC,EAChC,GAAG,IAAW,EAAA;QAEd,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrD,SAAA;QAED,IAAI,KAAK,YAAY,oBAAoB,EAAE;YACvC,IAAI,SAAS,CAAC,QAAQ,EAAE;gBACpB,OAAO,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,aAAA;AAAM,iBAAA;gBACH,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,aAAa,CAAC,8BAA8B,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACxJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;;AAGC,MAAO,gBAAiB,SAAQ,oBAAyB,CAAA;AAC3D,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;AAEM,IAAA,OAAO,MAAM,CAChB,UAA8B,EAC9B,aAAiC,EACjC,WAAyC,EACzC,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,EAAA;AAElD,QAAA,OAAO,IAAI,oBAAoB,CAAc,eAAe,CAAC,MAAM,CAAc,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,CAAC;KAClJ;AAEM,IAAA,OAAO,SAAS,CACnB,IAA4B,EAC5B,UAA8B,EAC9B,aAAiC,EACjC,WAAyC,EACzC,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,EAAA;AAElD,QAAA,OAAO,IAAI,oBAAoB,CAAc,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,CAAC;KAC9I;IAEM,OAAO,SAAS,CAAc,KAAmC,EAAE,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,EAAA;AACxH,QAAA,OAAO,IAAI,oBAAoB,CAAc,KAAK,EAAE,mBAAmB,CAAC,CAAC;KAC5E;AAED;;;;;;AAMG;AACI,IAAA,OAAO,yBAAyB,CACnC,IAA4B,EAC5B,UAA8B,EAC9B,aAAiC,EACjC,eAAe,GAAG,uBAAuB,CAAC,IAAI,EAAA;AAE9C,QAAA,OAAO,gBAAgB,CAAC,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;KACjJ;AAED;;;;;;;AAOG;AACI,IAAA,OAAO,2BAA2B,CACrC,IAA4B,EAC5B,UAAmC,EACnC,UAA8B,EAC9B,aAAiC,EACjC,eAAe,GAAG,uBAAuB,CAAC,IAAI,EAAA;AAE9C,QAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAE3G,UAAU;aACL,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1E,aAAA,OAAO,CAAC,IAAI,IACT,oBAAoB,CAAC,2BAA2B,CAC5C,UAAU,EACV,IAAI,EACJ,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,CAC5D,CACJ,CAAC;AACN,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ;;MChpBY,gBAAgB,CAAA;IAgDzB,WAAY,CAAA,KAA2C,EAAE,QAAgB,EAAA;AA7CjE,QAAA,IAAA,CAAA,WAAW,GAAmB,cAAc,CAAC,MAAM,CAAC;AACpD,QAAA,IAAA,CAAA,kBAAkB,GAA0B,qBAAqB,CAAC,MAAM,CAAC;QAMzE,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;;QAGlB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAEhB,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;QAChC,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;;QAMhC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;;QAavB,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;;QAI5B,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAIzB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAkB,CAAC;KACvC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,0BAA0B,GAAA;QACjC,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED;;;;;AAKG;AACI,IAAA,MAAM,CAAC,IAAoB,EAAE,WAAmC,EAAE,GAAG,IAAW,EAAA;AACnF,QAAA,QAAQ,IAAI;YACR,KAAK,cAAc,CAAC,MAAM;gBACtB,OAAO,WAAW,KAAK,qBAAqB,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9G,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;YACnC,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAChC,KAAK,cAAc,CAAC,IAAI;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAwB,CAAC,CAAC;YAC7D,KAAK,cAAc,CAAC,MAAM;gBACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,cAAc,CAAC,MAAM,CAAC;AAC3B,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AAEM,IAAA,QAAQ,CAAC,IAA2B,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACvD,QAAA,IAAI,CAAC,cAAc;YACf,IAAI,EAAE,gBAAgB,IAAI,IAAI,EAAE,iBAAiB,IAAI,IAAI,EAAE,iBAAiB;kBACtE,GAAG,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAI,CAAA,EAAA,IAAI,EAAE,iBAAiB,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,EAAE,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,IAAI,CAAC,CAAE,CAAA;kBAC3H,SAAS,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,IAAgD,EAAA;QAC9D,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACzB,YAAA,GAAG,IAAI;AACP,YAAA,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAI,IAAI,CAAC,gBAA2B,GAAG,SAAS;AAC3F,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,IAA6B,EAAA;AACjD,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACzD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,EAAE,gBAAgB,CAAC;AAChD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,EAAE,eAAe,CAAC;AAC9C,QAAA,IAAI,CAAC,cAAc;YACf,IAAI,EAAE,gBAAgB,IAAI,IAAI,EAAE,iBAAiB,IAAI,IAAI,EAAE,iBAAiB;kBACtE,GAAG,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAI,CAAA,EAAA,IAAI,EAAE,iBAAiB,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,EAAE,iBAAiB,IAAI,IAAI,EAAE,iBAAiB,IAAI,CAAC,CAAE,CAAA;kBAC3H,SAAS,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,MAAM,CAAC,aAAa,GAAG,YAAY,EAAA;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,GAAY,EAAE,EAAW,EAAE,MAAM,GAAG,KAAK,EAAA;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACrD,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,mBAA4D,EAAA;AACjF,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,SAAS,CAAC;AAC1D,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACrD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAkB,EAAE,eAAwB,EAAE,cAAkE,EAAA;AACjI,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAc,EAAE,QAAiB,EAAE,QAAiB,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,IAAI,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,gBAAgB,CAAC,WAAW,GAAG,KAAK,EAAA;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;KAC7E;AAEM,IAAA,cAAc,CAAC,SAAA,GAAqB,KAAK,EAAE,SAAmB,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAChE,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,EAAE,oBAAwD,EAAA;AAC1G,QAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AAE9C,QAAA,IAAI,oBAAoB,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;AACrD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAA0C,EAAA;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,CAAC,WAAW,GAAG,IAAI,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,kBAAkB,CAAC,cAAc,GAAG,IAAI,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,aAAa,GAAG,IAAI,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,YAAY,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAA;AACvD,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,cAAuB,EAAA;AACpC,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,2BAA2B,GAAG,cAAc,CAAC;AACrD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,2BAA2B,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,WAAW,CAAC;AACnE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAuC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,OAAO,UAAU,CAAC;KACrB;AAES,IAAA,YAAY,CAAC,GAA2D,EAAA;AAC9E,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,QAAA,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACjD,QAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACvC,QAAA,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC7C,QAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC/C,QAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC7C,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3C,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACrD,QAAA,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACnD,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACjD,QAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACvC,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;KACtE;AACJ,CAAA;AAEK,MAAO,uBAAwB,SAAQ,gBAA0B,CAAA;;IAMnE,WAAY,CAAA,KAAoC,EAAE,QAAgB,EAAA;AAC9D,QAAA,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QANR,IAAM,CAAA,MAAA,GAAuB,SAAS,CAAC;QAClD,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;KAM1B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED;;;;AAIG;AACa,IAAA,SAAS,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAClC,QAAA,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,UAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACa,IAAI,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,QAAA,OAAO,UAAU,CAAC;KACrB;AAEM,IAAA,kBAAkB,CAAC,eAA8C,EAAA;QACpE,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ;;MCneY,cAAc,CAAA;AAQvB,IAAA,WAAA,CAAY,QAAgB,EAAA;QAJlB,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAmB,CAAA,mBAAA,GAAa,SAAS,CAAC;QAC1C,IAAa,CAAA,aAAA,GAAY,SAAS,CAAC;AAGzC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;KACjC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAEM,IAAA,gBAAgB,CAAC,QAA0B,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAkB,CAAC,CAAC;KAC1D;AAEM,IAAA,sBAAsB,CAAC,QAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,OAAO,GAAG,IAAI,EAAE,SAAmB,EAAE,KAAc,EAAA;AACtE,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;QACP,MAAM,UAAU,GAAG,IAAI,cAAc,CAAa,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD,QAAA,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC1D,QAAA,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9C,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ;;MCpDY,gBAAgB,CAAA;AA+BzB,IAAA,WAAA,CAAY,QAAgB,EAAA;AA3BlB,QAAA,IAAA,CAAA,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;QAEpC,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAGzB,IAAW,CAAA,WAAA,GAAoB,IAAI,CAAC;QAKpC,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAI1B,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAC5B,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAsB,CAAA,sBAAA,GAAa,SAAS,CAAC;QAC7C,IAA0B,CAAA,0BAAA,GAAa,SAAS,CAAC;QACjD,IAAmB,CAAA,mBAAA,GAAa,SAAS,CAAC;QAG1C,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAChB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;QACnC,IAAe,CAAA,eAAA,GAAkB,IAAI,CAAC;AAI5C,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;KACjC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,yBAAyB,GAAA;QAChC,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAEM,IAAA,YAAY,CAAC,UAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,QAA0B,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAkB,CAAC,CAAC;KAC1D;AAEM,IAAA,sBAAsB,CAAC,QAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,iBAAiB,CAAC,KAA8C,EAAE,SAAsC,EAAA;AAC3G,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACf;IAES,qBAAqB,CAAC,KAA8C,EAAE,SAAsC,EAAA;AAClH,QAAA,IAAI,SAAS,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACjG,YAAA,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,SAAS,CAAA,uCAAA,CAAyC,CAAC,CAAC;AACzH,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACvH,YAAA,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,SAAS,CAAA,oDAAA,CAAsD,CAAC,CAAC;AACtI,SAAA;AACD,QAAA,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACnC,YAAA,gBAAgB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA,oCAAA,EAAuC,SAAS,CAAA,qCAAA,EAAwC,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG,CAAC,CAAC;AAC3I,SAAA;KACJ;IAEM,mBAAmB,CAAC,GAAY,EAAE,GAAY,EAAA;AACjD,QAAA,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,kBAAkB,CAAC,WAAW,GAAG,IAAI,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,MAAe,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAA;AACxE,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,GAAa,EAAE,UAAoB,EAAE,MAAgB,EAAA;AACtE,QAAA,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,GAAG,UAAU,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,WAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,SAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,KAAc,EAAE,QAAiB,EAAA;AACpD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,IAAI,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,IAAI,IAAI,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,iBAAiB,CAAC,aAA4B,MAAM,EAAA;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,UAA8C,EAAA;AAChE,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;QACP,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAA0B,IAAI,CAAC,SAAS,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,OAAO,UAAU,CAAC;KACrB;AAES,IAAA,YAAY,CAAC,UAAqD,EAAA;AACxE,QAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,QAAA,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACpD,QAAA,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9C,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD,QAAA,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACpE,QAAA,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACpE,QAAA,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACxD,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD,QAAA,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC1D,QAAA,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC1D,QAAA,UAAU,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;AACxE,QAAA,UAAU,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAChE,QAAA,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5C,QAAA,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5C,QAAA,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAClD,QAAA,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;KACvD;AACJ;;ACnOK,MAAO,sBAA+D,SAAQ,gBAAyC,CAAA;IAczH,WAAY,CAAA,QAAgB,EAAE,GAAqE,EAAA;QAC/F,KAAK,CAAC,QAAQ,CAAC,CAAC;AAZV,QAAA,IAAA,CAAA,WAAW,GAA0B,oBAAoB,CAAC,QAAQ,CAAC;QAEnE,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAErB,IAAkB,CAAA,kBAAA,GAAG,4BAA4B,CAAC;AAQxD,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;QAEzC,IAAI,GAAG,EAAE,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,IAAI,CAAC,qBAAqB;YACtB,OAAO,GAAG,EAAE,oBAAoB,KAAK,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,oBAAoB,CAAC;AAExJ,QAAA,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACtD;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,qBAAqB,IAAI,SAAS,CAAC;KAClD;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,wBAAwB,GAAA;QAC/B,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAEM,IAAA,wBAAwB,CAAC,QAA2B,EAAE,SAAS,GAAG,KAAK,EAAA;QAC1E,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAkB,EAAE,SAAS,CAAC,CAAC;KAC7E;AAEM,IAAA,8BAA8B,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAA;AACrE,QAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,8BAA8B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAA6D,EAAA;AAC3E,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,WAAW,GAAG,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,iBAAyB,EAAA;AAClD,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;IAEe,iBAAiB,CAAC,KAA8C,EAAE,SAAsC,EAAA;AACpH,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AAEnC,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC5F,YAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,iDAAA,EAAoD,IAAI,CAAC,SAAS,CAAG,CAAA,CAAA,EAAE,EAAC,IAAI,EAAE,uBAAuB,EAAC,CAAC,CAAC;AACtI,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,IAAuC,EAAA;AACzD,QAAA,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,YAAY,CAAC;AACrD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,SAAS,CAAC;AAC9C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,WAAW,CAAC;AAClD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,EAAE,YAAY,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACf;IAEe,IAAI,GAAA;QAChB,MAAM,UAAU,GAAG,IAAI,sBAAsB,CAAmC,IAAI,CAAC,SAAS,EAAE;YAC5F,YAAY,EAAE,IAAI,CAAC,YAAY;AAClC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,OAAO,UAAU,CAAC;KACrB;AAEkB,IAAA,YAAY,CAAC,MAAgE,EAAA;AAC5F,QAAA,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACtC,QAAA,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC1D,QAAA,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC5D,QAAA,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACxC,QAAA,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACpD,QAAA,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAChE,QAAA,MAAM,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;KACrE;AACJ,CAAA;AAEK,MAAO,0BAA6C,SAAQ,sBAA6C,CAAA;AAK3G,IAAA,WAAA,CAAY,QAAgB,EAAE,QAA8B,EAAE,OAAqB,EAAA;QAC/E,KAAK,CAAC,QAAQ,EAAE;AACZ,YAAA,YAAY,EAAE,kBAAkB,CAAC,MAAM,EAAa;AACpD,YAAA,oBAAoB,EAAE,OAAO;AAChC,SAAA,CAAC,CAAC;QANU,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAQ3C,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAEtB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;cACzC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;cAC1H,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;AAE3H,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;KAC3E;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAEe,IAAA,cAAc,CAAC,IAAuC,EAAA;QAClE,KAAK,CAAC,cAAc,CAAC;AACjB,YAAA,GAAG,IAAI;AACP,YAAA,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI;AACtC,YAAA,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI;AAC3C,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,mBAAmB,CAAC,WAAW,GAAG,IAAI,EAAA;AACzC,QAAA,OAAO,KAAK,CAAC,eAAe,CAAC,WAAW,CAAiD,CAAC;KAC7F;IAEe,iBAAiB,GAAA;QAC7B,MAAM,IAAI,gBAAgB,CAAC,CAAwG,sGAAA,CAAA,EAAE,EAAC,IAAI,EAAE,uBAAuB,EAAC,CAAC,CAAC;KACzK;IAEM,qBAAqB,CAAC,KAAwD,EAAE,SAAsC,EAAA;AACzH,QAAA,IAAI,kBAA+B,CAAC;AACpC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,kBAAkB,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AACxH,SAAA;aAAM,IAAI,KAAK,IAAI,IAAI,EAAE;YACtB,kBAAkB,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AACpG,SAAA;QAED,IAAI,kBAAkB,IAAI,IAAI,EAAE;AAC5B,YAAA,IAAI,MAAmB,CAAC;AACxB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBACnC,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AACjG,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,CAAC;AAC7E,aAAA;AAED,YAAA,IAAI,kBAA+B,CAAC;AACpC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvB,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqC,CAAC,CAAC,GAAG,MAAM,CAAC;AACrI,aAAA;AAAM,iBAAA;AACH,gBAAA,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqC,CAAC,GAAG,MAAM,CAAC;AACjH,aAAA;AAED,YAAA,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEe,IAAI,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,0BAA0B,CAAmB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,OAAO,KAAK,CAAC;KAChB;AACJ;;MC/OY,mBAAmB,CAAA;AA4C5B,IAAA,WAAA,CAAsB,KAAkC,EAAE,aAAa,GAAG,KAAK,EAAA;QAjCrE,IAAQ,CAAA,QAAA,GAA6C,EAAE,CAAC;QAE1D,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEpB,IAAY,CAAA,YAAA,GAAkB,eAAe,CAAC;;QAG9C,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QACjB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;;AAQ7B,QAAA,IAAA,CAAA,KAAK,GAAkB,aAAa,CAAC,KAAK,CAAC;QAC3C,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;;QAQhB,IAAQ,CAAA,QAAA,GAAwC,EAAE,CAAC;QACnD,IAAM,CAAA,MAAA,GAAiC,EAAE,CAAC;;QAG1C,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAIzB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;KACvC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,0BAA0B,GAAA;QACjC,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED;;;;AAIG;AACI,IAAA,cAAc,CAAC,UAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,QAA2B,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAkB,CAAC,CAAC;KAC3D;AAEM,IAAA,uBAAuB,CAAC,QAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,QAA0B,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAkB,CAAC,CAAC;KACnD;AAEM,IAAA,eAAe,CAAC,QAAgB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;KACvE;AAEM,IAAA,YAAY,CAAC,QAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAkB,CAAC,CAAC;KAC/C;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KACtC;AAEM,IAAA,UAAU,CAAyC,MAA8D,EAAA;AACpH,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAuC,QAAqB,EAAA;QACxE,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAA4E,IAAI,EAAE,QAAkB,CAAC,CAAC;AACzI,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,aAAa,CAA0F,QAAqB,EAAE,QAA8B,EAAA;QAC/J,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAA4C,IAAI,EAAE,QAAkB,CAAC,CAAC;AACzG,QAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,eAAe,CAAwB,QAAgB,EAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAA0B,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,WAAW,CAAC,GAAG,UAAgC,EAAA;AAClD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,kBAAkB,CAAC,cAAuC,EAAA;AAC7D,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,IAAY,EAAE,OAAuB,EAAA;AACxD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAEpB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,UAAU,GAAG,IAAI,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,WAAW,CAAC,IAAa,EAAE,IAAoB,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,SAAS,GAAG,eAAe,GAAG,IAAI,CAAC;AAChE,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,6BAA6B,CAAC,kBAAkB,GAAG,IAAI,EAAA;AAC1D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,GAAG,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,4BAA4B,CAAC,iBAAiB,GAAG,IAAI,EAAA;AACxD,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,GAAG,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,OAAO,CAAC,QAAe,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAkB,CAAC,CAAC;KACjD;AAEM,IAAA,aAAa,CAAC,QAAgB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;KACjE;AAEM,IAAA,UAAU,CAAC,QAAe,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAkB,CAAC,CAAC;KACpD;AAEM,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KAClC;AAEM,IAAA,OAAO,CAAC,QAAe,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;QAClE,OAAO,IAAI,CAAC,aAAa,CAAC,QAAkB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACvE;AAEM,IAAA,aAAa,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;AACzE,QAAA,MAAM,IAAI,GAAG,IAAI,cAAc,CAAa,QAAQ,CAAC,CAAC;AACtD,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM;iBAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;AAC/B,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3G,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC;AAC9D,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,QAAe,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;QACnE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAkB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACxE;AAEM,IAAA,cAAc,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;QAC1E,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,QAAe,EAAE,SAAmB,EAAE,KAAc,EAAE,OAAiB,EAAA;AAC1F,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACpF;AAEM,IAAA,qBAAqB,CAAC,QAAgB,EAAE,SAAmB,EAAE,KAAc,EAAE,OAAiB,EAAA;AACjG,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,IAAI,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;QACD,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,SAAS,CAAC,GAAG,UAAmB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAI,UAAuB,CAAC,CAAC;KAC5D;IAEM,eAAe,CAAC,GAAG,UAAoB,EAAA;AAC1C,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,QAAiB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAkB,CAAC,CAAC;KACnD;AAEM,IAAA,eAAe,CAAC,QAAgB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;KACnE;AAEM,IAAA,YAAY,CAAC,QAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAkB,CAAC,CAAC;KACtD;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KACtC;AAEM,IAAA,SAAS,CAA+E,QAAiB,EAAA;AAC5G,QAAA,OAAO,IAAI,CAAC,eAAe,CAAc,QAAkB,CAAC,CAAC;KAChE;AAEM,IAAA,eAAe,CAAc,QAAgB,EAAA;AAChD,QAAA,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAA0B,QAAQ,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,eAAe,CAClB,QAAiB,EACjB,QAAoD,EACpD,oBAAwC,EAAA;QAExC,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAkB,EAAE,QAAQ,EAAE,oBAA8B,CAAC,CAAC;KACnG;AAEM,IAAA,qBAAqB,CAAmC,QAAgB,EAAE,QAAoD,EAAE,oBAA6B,EAAA;AAChK,QAAA,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAmC,QAAQ,EAAE;AAClF,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,oBAAoB,EAAE,oBAAoB;AAC7C,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,mBAAmB,CAAO,QAAiB,EAAE,QAA8B,EAAE,OAAqB,EAAA;QACrG,OAAO,IAAI,CAAC,yBAAyB,CAAO,QAAkB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KACtF;AAEM,IAAA,yBAAyB,CAA0B,QAAgB,EAAE,QAA8B,EAAE,OAAqB,EAAA;QAC7H,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,mBAAmB,CAAC,QAA4C,EAAE,WAAW,GAAG,KAAK,EAAA;QACxF,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAkB,EAAE,WAAW,CAAC,CAAC;KAC1E;IAEM,sBAAsB,CAAC,GAAG,UAAgD,EAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,GAAI,UAAuB,CAAC,CAAC;KACzE;IAEM,4BAA4B,CAAC,GAAG,UAAoB,EAAA;AACvD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;AACnB,YAAA,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,yBAAyB,CAAC,QAAgB,EAAE,WAAW,GAAG,KAAK,EAAA;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,QAAQ,CAAA,CAAA,CAAG,CAAC,CAAC;AACnF,SAAA;QACD,OAAO,IAAI,CAAC,mCAAmC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;KACxE;IAEM,mCAAmC,CACtC,MAA8D,EAC9D,WAAoB,EAAA;QAEpB,IAAI,gBAAgB,GAAG,IAAI,gBAAgB,CAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9E,QAAA,IAAI,UAA0B,CAAC;QAE/B,QAAQ,MAAM,CAAC,UAAU;YACrB,KAAK,cAAc,CAAC,MAAM;AACtB,gBAAA,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;gBACnC,MAAM;YACV,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC;gBACpC,MAAM;YACV,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;gBACjC,MAAM;YACV,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE;AAC7B,oBAAA,gBAAgB,GAAG,IAAI,0BAA0B,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAChF,oBAAA,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;AAC1C,iBAAA;AAAM,qBAAA;AACH,oBAAA,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;AACtC,iBAAA;gBACD,MAAM;YACV,KAAK,cAAc,CAAC,MAAM,CAAC;YAC3B,KAAK,cAAc,CAAC,MAAM,CAAC;AAC3B,YAAA;AACI,gBAAA,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;gBACnC,MAAM;AACb,SAAA;AAED,QAAA,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAI,UAAU,KAAK,cAAc,CAAC,MAAM,EAAE;AACtC,YAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACjF,YAAA,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,gBAAA,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClH,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;AAC3C,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,YAAA,IAAI,aAAa,EAAE;gBACf,MAAM,mBAAmB,GAAG,QAAQ,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;gBACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;gBACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,+BAA+B,CAAC,aAAa,CAAC,CAAC;gBAC3E,gBAAgB,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7E,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAErC,QAAA,OAAO,gBAAgB,CAAC;KAC3B;IAEM,UAAU,CAAc,QAAiB,EAAE,MAAiD,EAAA;AAC/F,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC9B,MAAM,IAAI,gBAAgB,CAAC,CAAoB,iBAAA,EAAA,QAAQ,CAAqC,kCAAA,EAAA,MAAM,CAAC,QAAQ,CAAiB,eAAA,CAAA,CAAC,CAAC;AACjI,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAc,MAAM,CAAC,CAAC;KACrD;AAEM,IAAA,gBAAgB,CAAc,MAAiD,EAAA;AAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,IAAA,GAAsB,aAAa,CAAC,MAAM,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,yBAAyB,CAAC,qBAA6B,EAAA;AAC1D,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,EAAE,mBAAqC,KAAK,EAAA;AAC3F,QAAA,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC;AAC7C,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;IACI,gBAAgB,CAAC,qBAA+B,EAAE,kBAA4B,EAAA;AACjF,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;AACpD,QAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,gBAAgB,CAAC,YAAqB,EAAE,cAAkE,EAAA;AAC7G,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,eAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,8BAA8B,CAAC,0BAAkC,EAAA;AACpE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC;KACf;AAES,IAAA,YAAY,CAAC,GAAuC,EAAA;AAC1D,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,QAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACzC,QAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AACzD,QAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACvC,QAAA,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACrD,QAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC/C,QAAA,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACnD,QAAA,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AACzD,QAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACnE,QAAA,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3C,QAAA,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;KACtD;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAA6B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACtD,QAAA,OAAO,UAAU,CAAC;KACrB;AAED;;;;;;;AAOG;IACI,sBAAsB,CAAC,QAA0B,EAAE,UAA2B,EAAE,iBAAyC,EAAE,GAAG,IAAW,EAAA;AAC5I,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,QAAkB,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAC;KACxG;IAEM,4BAA4B,CAAC,QAAgB,EAAE,UAA2B,EAAE,iBAAyC,EAAE,GAAG,IAAW,EAAA;AACxI,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,0DAA0D,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAChI,SAAA;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE5G,IAAI,YAAY,IAAI,IAAI,EAAE;YACtB,YAAY,CAAC,UAAU,GAAG,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC;YAChE,YAAY,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACrF,YAAA,mBAAmB,CAAC,4BAA4B,CAC5C,IAAI,EACJ,YAAY,EACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,IAAI,CAAC,EAC5D,GAAG,IAAI,CACV,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;IACI,sBAAsB,CACzB,QAA0B,EAC1B,QAA+B,EAAA;QAE/B,OAAO,IAAI,CAAC,4BAA4B,CAAC,QAAkB,EAAE,QAAQ,CAAC,CAAC;KAC1E;IAEM,4BAA4B,CAAa,QAAgB,EAAE,QAA+B,EAAA;AAC7F,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,0DAA0D,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAChI,SAAA;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE5G,IAAI,YAAY,IAAI,IAAI,EAAE;AACtB,YAAA,YAAY,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;AAC9C,YAAA,mBAAmB,CAAC,4BAA4B,CAC5C,IAAI,EACJ,YAAY,EACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,EACnD,QAAQ,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAa,CAAC,CAC3F,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;AAMG;AACI,IAAA,kBAAkB,CACrB,QAA0B,EAC1B,cAAuD,EACvD,oBAA6B,EAC7B,cAAuB,EAAA;AAEvB,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;KACxH;AAEM,IAAA,8BAA8B,CACjC,QAAgB,EAChB,cAAuD,EACvD,oBAA6B,EAC7B,cAAuB,EAAA;AAEvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACnE,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAC3F,YAAA,IAAI,oBAAoB,EAAE;AACtB,gBAAA,MAAM,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,CAAC;AAC/D,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;AAMG;IACO,OAAO,4BAA4B,CACzC,IAA+C,EAC/C,SAAgC,EAChC,MAAkD,EAClD,GAAG,IAAW,EAAA;QAEd,IAAI,MAAM,IAAI,IAAI,EAAE;YAChB,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjD,SAAA;AAED,QAAA,IAAI,SAAS,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;YACzF,IAAI,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,SAAA;AAED,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAC;QACnF,IAAI,SAAS,CAAC,SAAS,EAAE;AACrB,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACrF,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,GAAG,aAA6B,CAAC,CAAC,CAAC;AACtE,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,cAAc,EAAE,CAAC,gBAAgB,EAAE,CAAC;AAC9C,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ,CAAA;AAEK,MAAO,eAAgB,SAAQ,mBAAwB,CAAA;AACzD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;AAEM,IAAA,OAAO,MAAM,CAChB,UAA6B,EAC7B,aAAgC,EAChC,WAAyC,EAAA;AAEzC,QAAA,OAAO,IAAI,mBAAmB,CAA6B,eAAe,CAAC,MAAM,CAAa,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;KAC1I;AAEM,IAAA,OAAO,SAAS,CACnB,IAA2B,EAC3B,UAA6B,EAC7B,aAAgC,EAChC,WAAyC,EACzC,eAAe,GAAG,KAAK,EAAA;AAEvB,QAAA,OAAO,IAAI,mBAAmB,CAA6B,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC;KACxJ;IAEM,OAAO,SAAS,CAAmE,KAAkC,EAAA;AACxH,QAAA,OAAO,IAAI,mBAAmB,CAA6B,KAAK,CAAC,CAAC;KACrE;AAED;;;;;AAKG;AACI,IAAA,OAAO,yBAAyB,CACnC,IAA2B,EAC3B,UAA6B,EAC7B,aAAgC,EAAA;AAEhC,QAAA,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;KAC/H;AAED;;;;;;AAMG;IACI,OAAO,2BAA2B,CACrC,IAA2B,EAC3B,UAAmC,EACnC,UAA6B,EAC7B,aAAgC,EAAA;AAEhC,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/F,QAAA,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC,4BAA4B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1K,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ,CAAA;AAEK,MAAO,0BAA2B,SAAQ,mBAAwB,CAAA;AASpE,IAAA,WAAA,CAAsB,KAA2B,EAAA;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;QATT,IAAgB,CAAA,gBAAA,GAAkB,EAAE,CAAC;QACrC,IAAc,CAAA,cAAA,GAAkB,EAAE,CAAC;QACnC,IAAY,CAAA,YAAA,GAAkB,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,eAAe,GAAG,2BAA2B,CAAC,OAAO,CAAC;AACtD,QAAA,IAAA,CAAA,iBAAiB,GAAG,2BAA2B,CAAC,OAAO,CAAC;QAE7C,IAAQ,CAAA,QAAA,GAA8B,EAAE,CAAC;QAKxD,IAAI,KAAK,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACvC,SAAA;KACJ;AAED,IAAA,IAAoB,OAAO,GAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED;;;AAGG;AACI,IAAA,mBAAmB,CAAC,cAAwB,EAAA;AAC/C,QAAA,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACI,IAAA,eAAe,CAAC,aAAuB,EAAE,cAAc,GAAG,2BAA2B,CAAC,YAAY,EAAA;AACrG,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,cAAwB,EAAE,gBAAgB,GAAG,2BAA2B,CAAC,YAAY,EAAA;AAC1G,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;AAMG;IACa,sBAAsB,CAAC,QAAgB,EAAE,IAAoB,EAAE,WAAmC,EAAE,GAAG,IAAW,EAAA;AAC9H,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpH,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;IACI,eAAe,CAAC,QAAgB,EAAE,KAAa,EAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChG,QAAA,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,yBAAyB,CAAC,IAAoB,EAAA;AACjD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AAC5C,YAAA,OAAO,eAAe,CAAC;AAC1B,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;AACnD,aAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvD,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAElD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;AAChC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC;AACnE,YAAA,IAAI,MAAkC,CAAC;AACvC,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;oBACxB,SAAS;AACZ,iBAAA;AACD,gBAAA,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;AACxD,gBAAA,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACtC,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACvD,gBAAA,aAAa,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtD,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5D,gBAAA,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7G,aAAA;AAED,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzE,IACI,CAAC,IAAI,CAAC,eAAe,KAAK,2BAA2B,CAAC,OAAO,IAAI,CAAC,oBAAoB;iBACrF,IAAI,CAAC,eAAe,KAAK,2BAA2B,CAAC,YAAY,IAAI,oBAAoB,CAAC,EAC7F;gBACE,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,aAAA;AAED,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7E,YAAA,IACI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;iBAC7B,CAAC,IAAI,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,IAAI,CAAC,sBAAsB;qBACtF,IAAI,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,YAAY,IAAI,sBAAsB,CAAC,CAAC,EACtG;gBACE,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,eAAe,CAAC;KAC1B;AAED;;;AAGG;AACa,IAAA,SAAS,CAAC,QAAmB,EAAA;QACzC,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,IAAI,EAAE,QAAkB,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACjB;AAEe,IAAA,YAAY,CAAC,QAAmB,EAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/F,QAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACa,IAAI,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,UAAU,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzD,UAAU,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,UAAU,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACjD,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD,QAAA,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAClD,QAAA,OAAO,UAAU,CAAC;KACrB;IAEM,iBAAiB,GAAA;QACpB,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ,CAAA;AAEK,MAAO,sBAAuB,SAAQ,0BAA0B,CAAA;AAClE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;AAEM,IAAA,OAAO,MAAM,CAAC,UAAmB,EAAE,aAAsB,EAAE,WAAqC,EAAA;AACnG,QAAA,OAAO,IAAI,0BAA0B,CAAC,eAAe,CAAC,MAAM,CAAM,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;KAC9G;IAEM,OAAO,SAAS,CAAC,KAA2B,EAAA;AAC/C,QAAA,OAAO,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;KAChD;AACJ;;MCj8BY,uBAAuB,CAAA;AAchC,IAAA,WAAA,CAAsB,KAAsC,EAAA;QAFlD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAG3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA,KAAA,CAAO,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;KACtF;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAEM,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAEM,IAAA,mBAAmB,CAAC,UAA+D,EAAA;AACtF,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,UAAgD,EAAA;AACzE,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,UAAgD,EAAA;AACzE,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,UAAgD,EAAA;AACrE,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,kBAAkB,CAAC,UAAgD,EAAA;AACtE,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACI,IAAA,4BAA4B,CAAC,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAA;AACtE,QAAA,IAAI,IAAI,KAAK,uBAAuB,CAAC,IAAI,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;AAC7D,SAAA;AAAM,aAAA,IAAI,IAAI,KAAK,uBAAuB,CAAC,OAAO,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;AACnE,SAAA;AAAM,aAAA,IAAI,IAAI,KAAK,uBAAuB,CAAC,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;AAC3D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,aAAa,CAAC,IAAY,EAAE,UAA4B,EAAA;QAC3D,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,QAA8B,EAAA;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC1C;AAEM,IAAA,eAAe,CAAC,QAAgB,EAAA;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAChD;AAEM,IAAA,YAAY,CAAC,QAA8B,EAAA;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KAC5C;AAEM,IAAA,UAAU,CAAyC,MAAkE,EAAA;AACxH,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAA2B,MAAM,CAAC,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAwC,QAAkB,EAAA;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC1C;IAEM,aAAa,CAAkG,QAAqB,EAAE,QAA8B,EAAA;QACvK,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACxD;AAEM,IAAA,eAAe,CAAoB,QAAgB,EAAA;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAChD;IAEM,WAAW,CAAC,GAAG,UAAoC,EAAA;QACtD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,OAAO,CAAC,QAAe,EAAA;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACxC;AAEM,IAAA,aAAa,CAAC,QAAgB,EAAA;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC9C;AAEM,IAAA,UAAU,CAAC,QAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KACpC;AAEM,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KAC1C;AAEM,IAAA,OAAO,CAAC,QAAe,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;AAClE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KAC9D;AAEM,IAAA,aAAa,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACpE;AAEM,IAAA,QAAQ,CAAC,QAAe,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;QACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK,EAAE,SAAmB,EAAA;QAC1E,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,QAAe,EAAE,SAAmB,EAAE,KAAc,EAAE,OAAiB,EAAA;AAC1F,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,QAAgB,EAAE,SAAmB,EAAE,KAAc,EAAE,OAAiB,EAAA;AACjG,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvE,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,SAAS,CAAC,GAAG,UAAmB,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,GAAG,UAAoB,EAAA;QAC1C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,QAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC1C;AAEM,IAAA,eAAe,CAAC,QAAgB,EAAA;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAChD;AAEM,IAAA,YAAY,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;KAC5C;AAEM,IAAA,SAAS,CAAuF,QAAiB,EAAA;QACpH,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAc,QAAQ,CAAC,CAAC;KACvD;AAEM,IAAA,eAAe,CAAc,QAAgB,EAAA;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAc,QAAQ,CAAC,CAAC;KAC7D;AAEM,IAAA,eAAe,CAClB,QAAiB,EACjB,QAAoD,EACpD,oBAAwC,EAAA;AAExC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAuB,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;KACtG;AAEM,IAAA,qBAAqB,CAAmC,QAAgB,EAAE,QAAoD,EAAE,oBAA6B,EAAA;AAChK,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAuB,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;KAC5G;AAEM,IAAA,mBAAmB,CAAO,QAAiB,EAAE,QAA8B,EAAE,OAAqB,EAAA;AACrG,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAO,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KAC7E;AAEM,IAAA,yBAAyB,CAA0B,QAAgB,EAAE,QAA8B,EAAE,OAAqB,EAAA;AAC7H,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAO,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KACnF;AAEM,IAAA,mBAAmB,CAAC,QAAgD,EAAE,WAAW,GAAG,KAAK,EAAA;QAC5F,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACjE;IAEM,sBAAsB,CAAC,GAAG,UAAoD,EAAA;QACjF,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,UAAU,CAAC,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,4BAA4B,CAAC,GAAG,UAAoB,EAAA;QACvD,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,GAAG,UAAU,CAAC,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,yBAAyB,CAAC,QAAgB,EAAE,WAAW,GAAG,KAAK,EAAA;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACvE;IAEM,UAAU,CAAc,QAAiB,EAAE,MAAqD,EAAA;QACnG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAc,QAAQ,EAAE,MAAM,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAc,MAAqD,EAAA;AACtF,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAc,MAAM,CAAC,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,QAA8B,EAAE,UAAmC,EAAA;QAC/E,OAAO,IAAI,CAAC,cAAc,CAAC,QAAkB,EAAE,UAAU,CAAC,CAAC;KAC9D;IAEM,cAAc,CAAC,QAAgB,EAAE,UAAmC,EAAA;AACvE,QAAA,QAAQ,UAAU;YACd,KAAK,uBAAuB,CAAC,IAAI;gBAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACrD,KAAK,uBAAuB,CAAC,GAAG;gBAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACpD,KAAK,uBAAuB,CAAC,OAAO;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxD,KAAK,uBAAuB,CAAC,IAAI;AAC7B,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AAEM,IAAA,WAAW,CAAC,QAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAkB,CAAC,CAAC;KAC9C;AAEM,IAAA,iBAAiB,CAAC,QAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;KACnD;AAEM,IAAA,kBAAkB,CAAa,KAAmD,EAAA;AACrF,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAmI,QAAkB,EAAA;QAChK,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAmC,QAAQ,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,cAAc,CAAiE,QAAgB,EAAA;QAClG,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAyB,QAAQ,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,SAAS,CAAC,GAAG,UAAoC,EAAA;AACpD,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,oBAAoB,CAAsC,KAA+D,EAAA;AAC7H,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED;;;;AAIG;IACI,cAAc,CACjB,QAAkB,EAClB,IAA4B,EAAA;AAE5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnG,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,oBAAoB,CAAsC,QAAgB,EAAE,IAA4B,EAAA;AAC3G,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAyB,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,uCAAuC,CAA4C,QAAgB,EAAE,oBAA4B,EAAA;AACpI,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,uCAAuC,CAAyB,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAClI,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,0BAA0B,CAK/B,QAAkB,EAAE,QAA0D,EAAE,IAA4B,EAAA;AAC1G,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAgD,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtI,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,gCAAgC,CACnC,QAAgB,EAChB,QAA0D,EAC1D,IAA4B,EAAA;AAE5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,gCAAgC,CAAsC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClI,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,kBAAkB,CACrB,QAAkB,EAClB,QAA8B,EAC9B,OAAqB,EAAA;AAErB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,wBAAwB,CAA0B,QAAgB,EAAE,QAA8B,EAAE,OAAqB,EAAA;AAC5H,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAO,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,kBAAkB,CACrB,QAAkB,EAClB,mBAAwD,EAAA;AAExD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAmC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACtH,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,wBAAwB,CAAwC,QAAgB,EAAE,mBAAwD,EAAA;AAC7I,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAyB,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,wBAAwB,CAC3B,QAAkB,EAClB,mBAAoD,EACpD,qBAAsD,EAAA;AAEtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAmC,QAAQ,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AACnJ,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,8BAA8B,CACjC,QAAgB,EAChB,mBAAoD,EACpD,qBAAsD,EAAA;AAEtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAyB,QAAQ,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AAC/I,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,oCAAoC,CAMvC,QAAkB,EAClB,mBAAoD,EACpD,qBAAsD,EACtD,kBAA+D,EAAA;AAE/D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,oCAAoC,CAClE,QAAQ,EACR,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,CACrB,CAAC;AACF,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,0CAA0C,CAC7C,QAAgB,EAChB,mBAAoD,EACpD,qBAAsD,EACtD,kBAA+D,EAAA;AAE/D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,0CAA0C,CACxE,QAAQ,EACR,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,CACrB,CAAC;AACF,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,cAAc,CAAC,IAAY,EAAE,KAAc,EAAA;QAC9C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,gBAAgB,CAAC,IAAY,EAAE,KAAc,EAAA;QAChD,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACtD,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC9C,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAChD,QAAA,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC,QAAA,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC3C,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;;;;;;;;;AAUG;AACI,IAAA,gBAAgB,CAAC,QAA8B,EAAE,UAA0B,EAAE,SAA8B,EAAE,iBAAyC,EAAA;AACzJ,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;KACpG;AAEM,IAAA,sBAAsB,CAAC,QAAgB,EAAE,UAA0B,EAAE,SAA8B,EAAE,iBAAyC,EAAA;AACjJ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC1H,SAAA;AACD,QAAA,IAAI,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;YACpC,MAAM,IAAI,gBAAgB,CAAC,+CAA+C,EAAE,EAAC,IAAI,EAAE,0BAA0B,EAAC,CAAC,CAAC;AACnH,SAAA;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE5G,IAAI,YAAY,IAAI,IAAI,EAAE;YACtB,SAAS,KAAK,aAAa,CAAC,8BAA8B,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAC1F,YAAA,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;YAEnC,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAClF,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACxE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;AAMG;AACI,IAAA,gBAAgB,CACnB,QAAkB,EAClB,QAA+B,EAC/B,SAA8B,EAAA;QAE9B,OAAO,IAAI,CAAC,sBAAsB,CAAO,QAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACrF;AAEM,IAAA,sBAAsB,CAAa,QAAgB,EAAE,QAA+B,EAAE,SAA8B,EAAA;AACvH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC1H,SAAA;QACD,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE5G,IAAI,YAAY,IAAI,IAAI,EAAE;YACtB,YAAY,CAAC,SAAS,GAAG,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAE9D,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvE,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;;;;AASG;IACI,kBAAkB,CACrB,QAA8B,EAC9B,IAA6B,EAC7B,cAAiD,EACjD,aAAsB,EACtB,oBAA6B,EAC7B,cAAuB,EAAA;AAEvB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAkB,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;KACvI;IAEM,wBAAwB,CAC3B,QAAgB,EAChB,IAA6B,EAC7B,cAAiD,EACjD,aAAsB,EACtB,oBAA6B,EAC7B,cAAuB,EAAA;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,sDAAsD,QAAQ,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC5H,SAAA;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAE5G,IAAI,YAAY,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,KAAK,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClF,YAAA,aAAa,KAAK,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG,SAAS,CAAC;YACrF,oBAAoB,KAAK,aAAa,CAAC;AACvC,YAAA,YAAY,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;AAChD,YAAA,YAAY,CAAC,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC;YAEjD,IAAI,cAAc,IAAI,IAAI,EAAE;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,QAAQ,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;gBAC3G,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC,QAAQ,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;gBAC1G,IAAI,CAAC,cAAc,CAAC,yCAAyC,CAAC,QAAQ,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;gBAC9G,IAAI,CAAC,WAAW,CAAC,yCAAyC,CAAC,QAAQ,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;AAC9G,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACvF,gBAAA,IAAI,aAAa,EAAE;AACf,oBAAA,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,GAAG,aAA6B,CAAC,CAAC,CAAC;AACtE,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CACZ,QAAkB,EAClB,KAAyC,EACzC,cAAuC,EAAA;QAEvC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAkB,EAAE,KAAK,EAAE,cAAwB,CAAC,CAAC;KACpF;AAEM,IAAA,eAAe,CAAoB,QAAgB,EAAE,KAAyC,EAAE,cAAsB,EAAA;AACzH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,cAAwB,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAEjE,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,MAAO,mBAAoB,SAAQ,uBAA4B,CAAA;AACjE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;AAEM,IAAA,OAAO,MAAM,CAChB,UAAiC,EACjC,aAAoC,EACpC,WAAyC,EAAA;AAEzC,QAAA,OAAO,IAAI,uBAAuB,CAA+C,eAAe,CAAC,MAAM,CAAiB,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;KACpK;IAEM,OAAO,SAAS,CACnB,IAA+B,EAC/B,UAAiC,EACjC,aAAoC,EACpC,WAAyC,EAAA;AAEzC,QAAA,OAAO,IAAI,uBAAuB,CAA+C,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;KAC7J;IAEM,OAAO,SAAS,CACnB,KAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,uBAAuB,CAA+C,KAAK,CAAC,CAAC;KAC3F;AAED;;;;;AAKG;AACI,IAAA,OAAO,yBAAyB,CACnC,IAA+B,EAC/B,UAAiC,EACjC,aAAoC,EAAA;AAEpC,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,QAAA,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3G,QAAA,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QACzI,UAAU,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;AAC9J,QAAA,UAAU,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvI,QAAA,OAAO,UAAU,CAAC;KACrB;AAED;;;;;;;AAOG;IACI,OAAO,2BAA2B,CACrC,IAA+B,EAC/B,gBAAyC,EACzC,eAAgD,EAChD,UAAiC,EACjC,aAAoC,EAAA;AAEpC,QAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAC7G,QAAA,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;QAE/H,IAAI,eAAe,KAAK,IAAI,EAAE;YAC1B,UAAU,CAAC,kBAAkB,CACzB,gBAAgB,CAAC,2BAA2B,CAAC,IAAI,EAAE,eAAe,IAAI,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,CAAC,IAAI,CAAC,CACnJ,CAAC;YACF,UAAU,CAAC,qBAAqB,CAC5B,gBAAgB,CAAC,2BAA2B,CAAC,IAAI,EAAE,eAAe,IAAI,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC,CACtJ,CAAC;YACF,UAAU,CAAC,iBAAiB,CACxB,gBAAgB,CAAC,2BAA2B,CAAC,IAAI,EAAE,eAAe,IAAI,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAClJ,CAAC;AACL,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ,CAAA;AAEK,MAAO,6BAA8B,SAAQ,uBAA4B,CAAA;AAG3E,IAAA,WAAA,CAAsB,KAA2B,EAAA;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,QAAA,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;KACjC;AAED,IAAA,IAAoB,KAAK,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED;;;AAGG;AACa,IAAA,mBAAmB,CAAC,UAAsC,EAAA;AACtE,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACa,IAAA,YAAY,CAAC,QAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,yBAAyB,CAAC,WAAmB,EAAA;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACa,IAAI,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACvC,QAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ,CAAA;AAEK,MAAO,0BAA2B,SAAQ,6BAA6B,CAAA;AACzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;AAEM,IAAA,OAAO,MAAM,CAAC,UAAmB,EAAE,aAAsB,EAAE,WAAqC,EAAA;AACnG,QAAA,OAAO,IAAI,6BAA6B,CAAC,eAAe,CAAC,MAAM,CAAM,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;KACjH;IAEM,OAAO,SAAS,CAAC,KAA2B,EAAA;AAC/C,QAAA,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;KACnD;AACJ;;MCjwBY,gBAAgB,CAAA;AAClB,IAAA,OAAO,gCAAgC,CAAC,UAAqC,EAAE,mBAAkD,EAAA;QACpI,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,IAAI,UAAU,CAAC,WAAW,EAAE;AACxB,YAAA,UAAU,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACpE,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;;YAEvF,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC1G,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC9F,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IACM,OAAO,sBAAsB,CAAC,UAAqC,EAAA;QACtE,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,mBAAmB,KAAK,uBAAuB,CAAC,OAAO,EAAE;AAC9F,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AAC/B,gBAAA,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,CAAC,CAAC;AACrE,aAAA;YACD,MAAM,gCAAgC,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACrG,YAAA,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE;AACxC,gBAAA,MAAM,IAAI,gBAAgB,CAAC,+CAA+C,CAAC,CAAC;AAC/E,aAAA;AACD,YAAA,gCAAgC,CAAC,SAAS,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;AAClF,YAAA,gCAAgC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/G,YAAA,gCAAgC,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAClH,YAAA,gCAAgC,CAAC,SAAS;AACrC,iBAAA,0BAA0B,CAA4B,UAAU,CAAC,0BAA0B,EAAE,iBAAiB,CAAC;iBAC/G,UAAU,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC;iBACrD,YAAY,CAAC,KAAK,CAAC;AACnB,iBAAA,YAAY,EAAE,CAAC;AACpB,YAAA,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;gBAC9B,IAAI,KAAK,CAAC,WAAW,EAAE;AACnB,oBAAA,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3D,oBAAA,gCAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7D,iBAAA;AACL,aAAC,CAAC,CAAC;AACH,YAAA,MAAM,2BAA2B,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AACtD,YAAA,2BAA2B,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,UAAU,CAAC,gCAAgC,EAAE;AAC9C,gBAAA,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC,CAAC;AACpF,aAAA;YACD,2BAA2B,CAAC,kBAAkB,CAAC,UAAU,CAAC,gCAAgC,EAAE,gCAAgC,CAAC,CAAC;AAE9H,YAAA,OAAO,2BAA2B,CAAC;AACtC,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACrB;AACM,IAAA,OAAO,mBAAmB,CAAC,SAAyC,EAAE,mBAAkD,EAAA;AAC3H,QAAA,MAAM,SAAS,GAAsB;AACjC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,KAAK,EAAE;gBACH,mBAAmB;AACtB,aAAA;SACJ,CAAC;AACF,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,YAAA,MAAM,QAAQ,GAAyB;gBACnC,EAAE,EAAE,GAAG,CAAC,IAAI;AACZ,gBAAA,KAAK,EAAE;oBACH,mBAAmB;AACtB,iBAAA;AACD,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;YACF,IAAI,GAAG,CAAC,KAAK,EAAE;gBACX,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACpC,aAAA;AACD,YAAA,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACtG,YAAA,SAAS,CAAC,UAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;QACD,OAAO,CAAC,SAAS,CAAC,CAAC;KACtB;AAEM,IAAA,OAAO,qBAAqB,CAAC,MAAmC,EAAE,mBAAkD,EAAA;AACvH,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;;YAE1C,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC9E,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,WAAW,GAAyB;AACtC,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,KAAK,EAAE;oBACH,mBAAmB;AACtB,iBAAA;AACD,gBAAA,WAAW,EAAE,EAAE;aAClB,CAAC;AACF,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,gBAAA,MAAM,UAAU,GAAyB;oBACrC,EAAE,EAAE,KAAK,CAAC,IAAI;AACd,oBAAA,KAAK,EAAE;AACH,wBAAA,UAAU,EAAE,KAAK;AACpB,qBAAA;AACD,oBAAA,WAAW,EAAE,EAAE;AACf,oBAAA,UAAU,EAAE,EAAE;iBACjB,CAAC;gBACF,IAAI,KAAK,CAAC,KAAK,EAAE;oBACb,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACxC,iBAAA;AACD,gBAAA,UAAU,CAAC,UAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAChG,gBAAA,WAAW,CAAC,UAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,aAAA;YACD,OAAO,CAAC,WAAW,CAAC,CAAC;AACxB,SAAA;KACJ;AAEM,IAAA,OAAO,kBAAkB,CAAC,UAAqC,EAAE,mBAAkD,EAAA;QACtH,MAAM,MAAM,GAAwB,EAAE,CAAC;AACvC,QAAA,KAAK,MAAM,eAAe,IAAI,UAAU,CAAC,MAAM,EAAE;AAC7C,YAAA,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzF,SAAA;;AAED,QAAA,MAAM,YAAY,GAAsB;AACpC,YAAA,mBAAmB,EAAE,uBAAuB;AAC5C,YAAA,UAAU,EAAE,MAAM;SACrB,CAAC;QAEF,gBAAgB,CAAC,2BAA2B,CAAC,YAAY,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAEnF,OAAO,CAAC,YAAY,CAAC,CAAC;KACzB;AAEM,IAAA,OAAO,iBAAiB,CAAC,UAAsC,EAAE,mBAAkD,EAAA;AACtH,QAAA,MAAM,KAAK,GAAyB;YAChC,GAAG,EAAE,UAAU,CAAC,QAAQ;AACxB,YAAA,YAAY,EAAE;gBACV,QAAQ,EAAE,UAAU,CAAC,QAAQ;AAChC,aAAA;AACD,YAAA,KAAK,EAAE;gBACH,MAAM,EAAE,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBACxE,SAAS,EAAE,OAAO,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBACjF,gBAAgB,EAAE,OAAO,UAAU,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBACtG,aAAa,EAAE,OAAO,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBAC7F,SAAS,EAAE,OAAO,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AACpF,aAAA;AACD,YAAA,KAAK,EAAE;gBACH,UAAU;gBACV,mBAAmB;gBACnB,aAAa,EAAE,UAAU,CAAC,aAAa;AAC1C,aAAA;AACD,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;AAEF,QAAA,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,EAAE;;YAEZ,SAAS,GAAG,QAAQ,CAAC;AACxB,SAAA;AACD,QAAA,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAE5B,IAAI,UAAU,YAAY,oBAAoB,EAAE;YAC5C,QAAQ,UAAU,CAAC,SAAS;gBACxB,KAAK,kBAAkB,CAAC,MAAM;oBAC1B,MAAM;gBACV,KAAK,kBAAkB,CAAC,KAAK;AACzB,oBAAA,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;oBACrB,OAAO,KAAK,CAAC,GAAG,CAAC;oBACjB,MAAM;gBACV,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,oBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;oBACxB,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC7C,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC7C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;oBACzC,MAAM;gBACV,KAAK,kBAAkB,CAAC,MAAM;AAC1B,oBAAA,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACtB,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;oBACvC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;oBACvC,MAAM;gBACV,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,oBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;oBACxB,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;oBACvC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;oBACvC,MAAM;gBACV,KAAK,kBAAkB,CAAC,MAAM;AAC1B,oBAAA,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;AACtB,oBAAA,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC3B,MAAM;gBACV,KAAK,kBAAkB,CAAC,KAAK;AACzB,oBAAA,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;oBACrB,MAAM;gBACV,KAAK,kBAAkB,CAAC,UAAU;AAC9B,oBAAA,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;oBAC1B,MAAM;gBACV,KAAK,kBAAkB,CAAC,IAAI;AACxB,oBAAA,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;oBACpB,MAAM;gBACV,KAAK,kBAAkB,CAAC,IAAI,CAAC;gBAC7B,KAAK,kBAAkB,CAAC,SAAS;AAC7B,oBAAA,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;oBACpB,MAAM;gBACV,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,oBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;oBACxB,MAAM;gBACV,KAAK,kBAAkB,CAAC,MAAM;oBAC1B,IAAI,UAAU,CAAC,mBAAmB,EAAE;AAChC,wBAAA,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;wBACtB,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,UAAU,CAAC,mBAAmB,CAAC;wBACpE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE;AACnD,4BAAA,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,uBAAuB,CAAC;AACvD,yBAAA;AAAM,6BAAA;;AAEH,4BAAA,KAAK,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,yBAAA;AACJ,qBAAA;oBACD,MAAM;AACV,gBAAA;AACI,oBAAA,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;oBACrB,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC7C,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC7C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;oBACzC,MAAM;AACb,aAAA;AACJ,SAAA;aAAM,IAAI,UAAU,YAAY,qBAAqB,EAAE;AACpD,YAAA,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;AACtB,YAAA,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACrC,OAAO,KAAK,CAAC,GAAG,CAAC;AACpB,SAAA;aAAM,IAAI,UAAU,YAAY,yBAAyB,EAAE;YACxD,QAAQ,UAAU,CAAC,UAAU;gBACzB,KAAK,mBAAmB,CAAC,MAAM;AAC3B,oBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,mBAAmB,CAAC;oBAC5C,MAAM;AACV,gBAAA;AACI,oBAAA,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;oBACpB,MAAM;AACb,aAAA;AACJ,SAAA;aAAM,IAAI,UAAU,YAAY,qBAAqB,EAAE;YACpD,QAAQ,UAAU,CAAC,UAAU;gBACzB,KAAK,mBAAmB,CAAC,YAAY;AACjC,oBAAA,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;oBAC5B,MAAM;gBACV,KAAK,mBAAmB,CAAC,MAAM;AAC3B,oBAAA,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACtB,MAAM;gBACV,KAAK,mBAAmB,CAAC,MAAM;AAC3B,oBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,mBAAmB,CAAC;oBAC5C,MAAM;gBACV,KAAK,mBAAmB,CAAC,QAAQ,CAAC;AAClC,gBAAA;AACI,oBAAA,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;oBACxB,MAAM;AACb,aAAA;AACJ,SAAA;aAAM,IAAI,UAAU,YAAY,+BAA+B,EAAE;AAC9D,YAAA,KAAK,CAAC,IAAI,GAAG,0BAA0B,CAAC;AAC3C,SAAA;aAAM,IAAI,UAAU,YAAY,yBAAyB,EAAE;AACxD,YAAA,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC;AACpC,SAAA;QAED,IAAI,UAAU,CAAC,KAAK,EAAE;YAClB,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AACxC,SAAA;QAED,IAAI,UAAU,CAAC,kBAAkB,EAAE;YAC/B,KAAK,CAAC,WAAY,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC;AACxE,SAAA;QACD,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,CAAC,KAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC7B,IAAI,UAAU,CAAC,uBAAuB,EAAE;AACpC,gBAAA,KAAK,CAAC,KAAM,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;AAC7C,aAAA;AACJ,SAAA;QAED,IAAI,UAAU,CAAC,gBAAgB,EAAE;YAC7B,KAAK,CAAC,WAAY,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC;AAC5D,SAAA;QAED,IAAI,UAAU,CAAC,kBAAkB,EAAE;YAC/B,KAAK,CAAC,WAAY,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC;AACxE,SAAA;aAAM,IAAI,UAAU,CAAC,QAAQ,EAAE;AAC5B,YAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC/B,SAAA;AAAM,aAAA;AACH,YAAA,KAAK,CAAC,WAAY,CAAC,gBAAgB,CAAC,GAAG,oBAAoB,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE;AAChD,YAAA,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;AAChD,SAAA;QAED,gBAAgB,CAAC,2BAA2B,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAC5E,gBAAgB,CAAC,gCAAgC,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAEtF,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,OAAO,2BAA2B,CAAC,MAAyB,EAAE,WAA6C,EAAA;AAC9G,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAClC,YAAA,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE;AAC5C,gBAAA,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;oBACjC,UAAU,EAAE,CACR,OAAwB,EACxB,KAAwB,EACxB,OAEC,KACD;AACA,wBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,SAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;;;AAGpE,wBAAA,OAAO,OAAO,YAAY,KAAK,SAAS,GAAG,YAAY,GAAG,YAAY,KAAK,IAAI,CAAC;qBACnF;iBACJ,CAAC;AACF,gBAAA,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;AAC1C,oBAAA,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACnE,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC9C,oBAAA,MAAM,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;AACrC,iBAAA;gBACD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtD,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,OAAO,gCAAgC,CAAC,MAAyB,EAAE,gBAAkD,EAAA;AACxH,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACzB,YAAA,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;AAC/B,SAAA;AAED,QAAA,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE;AACvC,YAAA,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE;AAC5C,gBAAA,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;oBACtC,UAAU,EAAE,CACR,OAAwB,EACxB,KAAwB,EACxB,OAEC,KACD;AACA,wBAAA,MAAM,SAAS,GAA2B,UAAU,CAAC,SAAS,CAAC;wBAE/D,MAAM,YAAY,GAAkD,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;;;AAGvG,wBAAA,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;qBACjG;iBACJ,CAAC;AACF,gBAAA,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;AAC1C,oBAAA,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACxE,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AACnD,oBAAA,MAAM,CAAC,eAAe,CAAC,UAAU,GAAG,EAAE,CAAC;AAC1C,iBAAA;gBACD,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3D,aAAA;AACJ,SAAA;KACJ;AACJ;;MC1XY,QAAQ,CAAA;AACjB;;;AAGG;IACI,OAAO,gBAAgB,CAAC,QAAkB,EAAA;AAC7C,QAAA,OAAO,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;KAC5D;AAED;;;AAGG;IACI,OAAO,8BAA8B,CAAC,OAAe,EAAA;;AAExD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtD;AAED;;;AAGG;IACI,OAAO,yBAAyB,CAAC,QAAkB,EAAA;AACtD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAiB,CAAW,CAAC,CAAC;KAChF;AAED;;;AAGG;IACI,OAAO,yBAAyB,CAAC,QAAkB,EAAA;AACtD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACvB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACvB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;AAED;;;;;AAKG;IACI,OAAO,6BAA6B,CAAC,QAAkB,EAAE,WAAW,GAAG,KAAK,EAAE,SAAkB,EAAA;QACnG,OAAO,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAe,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAG,EAAA,SAAS,GAAG,CAAA,EAAG,SAAS,CAAG,CAAA,CAAA,GAAG,EAAE,CAAA,EAAG,CAAC,CAAE,CAAA,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAC,CAAA,CAAC,CAAC;KACrK;AAED;;;;;;AAMG;IACI,OAAO,0BAA0B,CAAkC,QAAkB,EAAE,MAA2B,EAAE,WAAW,GAAG,KAAK,EAAE,SAAkB,EAAA;AAC9J,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAG;YAClB,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChD,YAAA,OAAO,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAG,EAAA,SAAS,GAAG,CAAG,EAAA,SAAS,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA,CAAE,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAc,CAAC;AAChH,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,OAAO,eAAe,CAAkC,QAAkB,EAAE,KAAmB,EAAA;AAClG,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;AACvF,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,OAAO,QAAQ,CAAC,KAAqB,CAAC,KAAK,WAAW,GAAI,QAAQ,CAAC,KAAqB,CAAY,GAAG,IAAI,CAAC;AACtH,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,OAAO,6BAA6B,CAAkC,OAAe,EAAE,KAAmB,EAAA;QAC7G,MAAM,UAAU,GAAG,OAAc,CAAC;AAClC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,QAAQ,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;AACtG,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,WAAW,GAAI,UAAU,CAAC,KAAK,CAAY,GAAG,IAAI,CAAC;AAC1F,SAAA;KACJ;AACJ;;MCnFY,qBAAqB,CAAA;aACP,IAAkB,CAAA,kBAAA,GAAG,UAAU,CAAC,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,UAAU,CAAC,EAAA;AAEvD;;;;AAIG;AACI,IAAA,OAAO,qBAAqB,CAAC,UAA0B,EAAE,QAAgB,EAAA;QAC5E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE;YAC/E,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC1F,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,OAAO,qBAAqB,CAAC,UAAoB,EAAE,QAAgB,EAAA;QACtE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE;YAC/E,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC1F,SAAA;KACJ;AAED;;;AAGG;IACI,OAAO,YAAY,CAAI,IAAmB,EAAA;QAC7C,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACrF,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;AACD,QAAA,gBAAgB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,8GAA8G,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzJ,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAED;;;AAGG;IACI,OAAO,cAAc,CAAC,IAAoB,EAAA;QAC7C,OAAO,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;KACjF;AAED;;;AAGG;IACI,OAAO,YAAY,CAAC,QAAkB,EAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACzF,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;QACD,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC,CAAC;KACrF;;;MCxDQ,UAAU,CAAA;AAMZ,IAAA,OAAO,QAAQ,CAAyB,GAAM,EAAE,OAA4B,EAAA;AAC/E,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;QAED,IAAI,GAAG,YAAY,IAAI,EAAE;AACrB,YAAA,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,EAAE,sBAAsB,EAAE;YACjC,IAAI,GAAG,EAAE,CAAC;AACb,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,GAAG,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,WAA2B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAClJ,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,SAAA;QAED,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAmB,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,EAAC,sBAAsB,EAAE,OAAO,EAAE,sBAAsB,EAAC,CAAC,CAAC;AACtG,SAAA;QAED,IAAI,OAAO,EAAE,sBAAsB,EAAE;YACjC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAChD,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,SAAyB,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,EAAC,sBAAsB,EAAE,OAAO,EAAE,sBAAsB,EAAC,CAAC,CAAC;AAC5G,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,OAAO,SAAS,CAAC,MAA2B,EAAE,MAA2B,EAAA;AAC5E,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;QAED,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAChD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAClC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AAClC,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,iBAAA;AACJ,aAAA;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7B,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAI,MAAM,CAAC,GAAG,CAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,CAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjJ,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,OAAO,QAAQ,CAAC,GAAQ,EAAA;AAC5B,QAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACzE;AAEO,IAAA,OAAO,UAAU,CAAC,IAAS,EAAE,OAA8B,EAAA;AAC/D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzD,SAAA;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;YAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;IAEM,OAAO,aAAa,CAAC,GAAW,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC3B;IAEM,OAAO,UAAU,CAAC,GAAQ,EAAA;AAC7B,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,IAAI,OAAO,GAAG,GAAG,CAAC;AAElB,QAAA,OAAO,OAAO,EAAE;AACZ,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACpE,iBAAA,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,OAAO,UAAU,CAAC,GAAG,KAAK,UAAU,CAAC;iBAChE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,WAAW,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAEzB,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzB,aAAA;AAED,YAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChC;AAEM,IAAA,OAAO,iBAAiB,CAAC,KAAU,EAAE,IAAY,EAAA;QACpD,IAAI,IAAI,KAAK,GAAG,EAAE;;AAEd,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;gBACvB,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,IAAI,EAAE;AACxD,oBAAA,OAAO,SAAS,CAAC;AACpB,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;;AAEX,oBAAA,OAAO,SAAS,CAAC;AACpB,iBAAA;gBAED,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAExC,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACjD,oBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChE,oBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AACnC,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACtB,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;;AAE1C,4BAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;4BAC5B,SAAS;AACZ,yBAAA;AACJ,qBAAA;AAED,oBAAA,OAAO,SAAS,CAAC;AACpB,iBAAA;AAAM,qBAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACtC,oBAAA,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACtB,SAAA;KACJ;AACJ;;MChKY,UAAU,CAAA;IACZ,OAAO,UAAU,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC5D;IAEM,OAAO,aAAa,CAAC,KAAW,EAAA;AACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,YAAA,MAAM,YAAY,GAAQ,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,sBAAsB,EAAE,IAAI,EAAC,CAAC,CAAC;AAErF,YAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACrB,gBAAA,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,oBAAA,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,iBAAA;AAAM,qBAAA,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AACvC,oBAAA,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,iBAAA;AAAM,qBAAA;oBACH,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,YAAY,CAAC;AACvB,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;IACI,OAAO,SAAS,CAAC,KAAU,EAAA;QAC9B,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9B,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC7B,YAAA,OAAO,YAAY,KAAK,CAAC,IAAI,IAAI,WAAW,IAAI,CAAC;AACpD,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;YAE3B,IAAI,KAAK,YAAY,IAAI,EAAE;gBACvB,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;AAChD,aAAA;YACD,IAAI;AACA,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC3B,aAAA;AACJ,SAAA;;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;AACJ;;MCrDY,SAAS,CAAA;AAClB;;;;;AAKG;AACI,IAAA,OAAO,kBAAkB,CAAC,KAAU,EAAE,IAAa,EAAE,OAAa,EAAA;AACrE,QAAA,MAAM,IAAI,GAAwB;YAC9B,IAAI;YACJ,OAAO;AACP,YAAA,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI;SACnC,CAAC;QAEF,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACpC,YAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,IAAI,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAChF,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,IAAI,yBAAyB,EAAE,IAAI,CAAC,CAAC;AACjF,SAAA;KACJ;AAED;;;AAGG;IACI,OAAO,mBAAmB,CAAC,KAAU,EAAA;AACxC,QAAA,OAAO,KAAK,YAAY,iBAAiB,IAAI,KAAK,YAAY,YAAY,KAAK,KAAK,YAAY,cAAc,IAAK,KAAwB,CAAC,SAAS,CAAC,CAAC;KAC1J;AAED;;;AAGG;IACI,OAAO,oBAAoB,CAAC,KAAU,EAAA;QACzC,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;aAAM,IAAI,KAAK,YAAY,YAAY,EAAE;YACtC,OAAO,KAAK,CAAC,SAAS,CAAC;AAC1B,SAAA;aAAM,IAAI,KAAK,YAAY,cAAc,EAAE;AACxC,YAAA,OAAO,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;AAClC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAED;;;AAGG;IACI,OAAO,0BAA0B,CAAC,KAAU,EAAA;QAC/C,OAAO,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;KAChE;AAED;;;AAGG;IACI,OAAO,gBAAgB,CAAC,KAAU,EAAA;AACrC,QAAA,IAAI,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;YACtC,MAAM,MAAM,GAAG,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,MAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE;gBACzC,OAAO,YAAY,CAAC,OAAO,CAAC;AAC/B,aAAA;AACJ,SAAA;QACD,OAAO,YAAY,CAAC,KAAK,CAAC;KAC7B;AAED;;;AAGG;IACI,OAAO,YAAY,CAAC,KAAU,EAAA;QACjC,IAAI,KAAK,YAAY,aAAa,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;AACnC,SAAA;AAAM,aAAA;YACH,OAAO,KAAK,CAAC,IAAI,CAAC;AACrB,SAAA;KACJ;AAED;;;;;;;AAOG;AACI,IAAA,OAAO,yBAAyB,CAAC,KAAwB,EAAE,IAAuC,EAAA;AACrG,QAAA,IAAI,GAAG,GAAG,IAAI,EAAE,WAAW,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAAI,EAAA,CAAA,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACpB,YAAA,GAAG,IAAI,CAA0B,uBAAA,EAAA,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAG,EAAA,GAAG,IAAI,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAG,CAAA,CAAA,EAAE,EAAE,CAAC,EAAE,CAAC;AACjI,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;YACjB,GAAG,IAAI,CAAyB,sBAAA,EAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;AACvE,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;;;;;;;AAWG;AACI,IAAA,OAAO,aAAa,CAAC,KAAY,EAAE,IAA2B,EAAA;QACjE,IAAI,KAAK,YAAY,aAAa,EAAE;YAChC,OAAO,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD,SAAA;aAAM,IAAI,KAAK,YAAY,iBAAiB,EAAE;YAC3C,OAAO,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3D,SAAA;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACpB,YAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;QACD,IAAI,KAAK,CAAC,IAAI,EAAE;YACZ,SAAS,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,KAAK,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;AAC/C,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE;AAClB,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7D,SAAA;QACD,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;YACjC,SAAS,CAAC,IAAI,CAAC,CAAA,cAAA,EAAiB,KAAK,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;AAClD,SAAA;QAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChE;AAED;;;;;;;;;;;;;;AAcG;AACI,IAAA,OAAO,gBAAgB,CAAC,KAAoB,EAAE,IAA8B,EAAA;QAC/E,MAAM,SAAS,GAAa,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;YACpB,SAAS,CAAC,IAAI,CAAC,CAAG,EAAA,KAAK,CAAC,OAAO,CAAA,EAAG,KAAK,CAAC,WAAW,GAAG,CAAA,QAAA,EAAW,KAAK,CAAC,WAAW,CAAA,CAAA,CAAG,GAAG,EAAE,CAAE,CAAA,CAAC,CAAC;AACjG,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjB,YAAA,SAAS,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,GAAG,CAAI,CAAA,EAAA,KAAK,CAAC,IAAI,CAAG,CAAA,CAAA,GAAG,EAAE,CAAA,CAAE,CAAC,CAAC;AACpG,SAAA;QACD,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE;YACvC,SAAS,CAAC,IAAI,CAAC,CAAA,UAAA,EAAa,KAAK,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;AACjD,SAAA;QAED,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,YAAY,YAAY,EAAE;YAClD,SAAS,CAAC,IAAI,CACV,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,EAAE;AACjD,gBAAA,QAAQ,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,QAAQ;gBAC3C,WAAW,EAAE,IAAI,EAAE,WAAW;AAC9B,gBAAA,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AACnE,aAAA,CAAC,CACL,CAAC;YACF,MAAM,GAAG,IAAI,CAAC;AACjB,SAAA;QACD,IAAI,KAAK,YAAY,cAAc,EAAE;YACjC,IAAI,KAAK,CAAC,aAAa,EAAE;AACrB,gBAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACxE,aAAA;YACD,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;gBACpC,SAAS,CAAC,IAAI,CACV,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,EAAE;AACjD,oBAAA,QAAQ,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,QAAQ;oBAC3C,WAAW,EAAE,IAAI,EAAE,WAAW;AAC9B,oBAAA,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AACnE,iBAAA,CAAC,CACL,CAAC;gBACF,MAAM,GAAG,IAAI,CAAC;AACjB,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE;AACrC,YAAA,SAAS,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,CAAC,MAAM,IAAI,EAAE,KAAK,CAAC,KAAK,YAAY,iBAAiB,CAAC,CAAC,EAAE;AAC9E,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7D,SAAA;QACD,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;YACjC,SAAS,CAAC,IAAI,CAAC,CAAA,cAAA,EAAiB,KAAK,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;AAClD,SAAA;QAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChE;AAED;;;;;;;AAOG;AACI,IAAA,OAAO,6BAA6B,CAAC,KAAqB,EAAE,IAA2C,EAAA;QAC1G,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE;AACjC,YAAA,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE;gBACxC,aAAa,IAAI,CAAY,SAAA,EAAA,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;AACzE,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE;AAC1D,gBAAA,aAAa,IAAI,CAAA,OAAA,EAAU,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3F,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,EAAE,cAAc,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE;AACrE,gBAAA,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAC9E,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAG,EAAA,GAAG,eAAe,GAAG,CAAA,EAAA,EAAK,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAClF,EAAE,CACL,CAAC;AACL,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,EAAE,eAAe,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,EAAE;AAC1E,gBAAA,aAAa,IAAI,CAAA,aAAA,EAAgB,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3G,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,EAAE;AAC9D,gBAAA,aAAa,IAAI,CAAA,WAAA,EAAc,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnG,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,YAAY,EAAE;AAClE,gBAAA,aAAa,IAAI,CAAA,WAAA,EAAc,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC;AACvG,aAAA;AACD,YAAA,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE;AACxC,gBAAA,aAAa,IAAI,CAAA,SAAA,EAAY,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/F,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACxB;AAED;;;;;;AAMG;AACI,IAAA,OAAO,kBAAkB,CAAC,KAAY,EAAE,IAAgC,EAAA;;AAE3E,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,gBAAgB,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE;AAC1E,YAAA,MAAM,SAAS,GAAG,IAAI,EAAE,WAAW,IAAI,EAAE,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI,EAAE,gBAAgB,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE;AACzD,gBAAA,QACI,aAAa;qBACZ,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAA,EAAI,KAAK,CAAC,KAAe,CAAC,OAAO,CAAA,EAAI,KAAK,CAAC,KAAe,CAAC,IAAI,GAAG,CAAA,EAAA,EAAM,KAAK,CAAC,KAAe,CAAC,IAAI,CAAA,CAAA,CAAG,GAAG,EAAE,CAAE,CAAA,CAAC,EAChK;AACL,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACb;AACJ;;AChQK,IAAW,UAmVhB;AAnVD,CAAA,UAAiB,SAAS,EAAA;AACtB,IAAA,MAAa,MAAM,CAAA;QACR,OAAO,QAAQ,CAAC,SAA2B,EAAE,MAAY,EAAE,GAAG,IAAmB,EAAA;AACpF,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SACpG;QAEM,OAAO,GAAG,CAAC,SAA2B,EAAE,MAAY,EAAE,GAAG,IAAmB,EAAA;YAC/E,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClD;AAEM,QAAA,OAAO,cAAc,CAAC,IAAU,EAAE,SAAc,EAAE,EAAA;AACrD,YAAA,MAAM,SAAS,GAAG,EAAC,GAAG,MAAM,EAAC,CAAC;AAC9B,YAAA,IAAI,IAAI,EAAE;AACN,gBAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;SACpB;AAEM,QAAA,OAAO,UAAU,CAAC,IAAc,EAAE,IAAS,EAAA;AAC9C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,gBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE;AACnB,oBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AA1BY,IAAA,SAAA,CAAA,MAAM,SA0BlB,CAAA;AAED,IAAA,MAAa,IAAI,CAAA;AACN,QAAA,OAAO,iBAAiB,CAAC,SAA2B,EAAE,SAAyB,EAAE,QAAkB,EAAA;YACtG,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;SAC3E;AAEM,QAAA,OAAO,YAAY,CAAC,SAA2B,EAAE,SAAyB,EAAE,QAAkB,EAAA;YACjG,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;SACtE;AAEM,QAAA,OAAO,YAAY,CAAC,SAA2B,EAAE,QAAgB,EAAE,QAAkB,EAAA;AACxF,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5D,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;SACnE;AAEM,QAAA,OAAO,OAAO,CAAC,SAA2B,EAAE,QAAgB,EAAE,QAAkB,EAAA;AACnF,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5D,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;SAC9D;AAEM,QAAA,OAAO,cAAc,CAAC,SAAyB,EAAE,GAAW,EAAA;YAC/D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SACxD;AAEM,QAAA,OAAO,SAAS,CAAC,QAAgB,EAAE,GAAW,EAAA;AACjD,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;SACxD;AAEM,QAAA,OAAO,gBAAgB,CAAC,SAAyB,EAAE,KAAa,EAAA;YACnE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;SAC5D;AAEM,QAAA,OAAO,WAAW,CAAC,QAAgB,EAAE,KAAa,EAAA;AACrD,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC5D;AAEM,QAAA,OAAO,mBAAmB,CAAC,SAAyB,EAAE,QAAgB,EAAA;YACzE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;SAClE;AAEM,QAAA,OAAO,cAAc,CAAC,QAAgB,EAAE,QAAgB,EAAA;AAC3D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SACnE;AAEM,QAAA,OAAO,YAAY,CAAC,SAAyB,EAAE,GAAG,IAAmB,EAAA;YACxE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;SAC1D;AAEM,QAAA,OAAO,OAAO,CAAC,QAAgB,EAAE,GAAG,IAAmB,EAAA;YAC1D,OAAO,CAAA,EAAG,QAAQ,CAAC,MAAM,GAAG,CAAG,EAAA,QAAQ,CAAG,CAAA,CAAA,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;SACtE;QAEM,OAAO,cAAc,CAAC,SAA2B,EAAE,SAAyB,EAAE,IAAS,EAAE,MAAA,GAAc,EAAE,EAAA;YAC5G,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACnF;QAEM,OAAO,SAAS,CAAC,SAA2B,EAAE,QAAiB,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;YAChG,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AACzF,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACjF;QAEM,OAAO,mBAAmB,CAAC,SAA2B,EAAE,SAAyB,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;YAClH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACxF;QAEM,OAAO,cAAc,CAAC,SAA2B,EAAE,QAAiB,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;YACrG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CACtF,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAC9F,CAAC;SACL;QAEM,OAAO,cAAc,CAAC,YAAqB,EAAE,IAAU,EAAE,SAAc,EAAE,EAAA;AAC5E,YAAA,MAAM,SAAS,GAAG,EAAC,GAAG,MAAM,EAAC,CAAC;AAC9B,YAAA,IAAI,YAAY,EAAE;AACd,gBAAA,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC;AACrC,aAAA;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC3D;AAEO,QAAA,OAAO,WAAW,CAAC,QAAgB,EAAE,QAAkB,EAAA;YAC3D,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,aAAA,CAAe,GAAG,GAAG,QAAQ,CAAA,WAAA,CAAa,CAAC,CAAC;AAC/E,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAG,EAAA,QAAQ,GAAG,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC,CAAC;AAC1D,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AA9FY,IAAA,SAAA,CAAA,IAAI,OA8FhB,CAAA;AAED,IAAA,MAAa,KAAK,CAAA;AACP,QAAA,OAAO,GAAG,CACb,SAA2B,EAC3B,KAA2B,EAC3B,OAAe,EACf,SAAkB,EAClB,IAAU,EACV,WAAoB,EACpB,MAAY,EAAA;AAEZ,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACvF,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7E,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;SAC/D;AAEM,QAAA,OAAO,OAAO,CAAC,SAA2B,EAAE,KAA2B,EAAE,QAAkB,EAAA;AAC9F,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;SACzE;AAEM,QAAA,OAAO,YAAY,CAAC,SAA2B,EAAE,KAA2B,EAAE,QAAkB,EAAA;AACnG,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;SAC9E;QAEM,OAAO,SAAS,CAAC,SAA2B,EAAE,KAA4B,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AAC3G,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACzF,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;SACpG;QAEM,OAAO,cAAc,CAAC,SAA2B,EAAE,KAA4B,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;YAChH,OAAO,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAC/G,CAAC;SACL;QAEM,OAAO,cAAc,CAAC,UAAsB,EAAE,aAAyB,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AACxG,YAAA,MAAM,SAAS,GAAG,EAAC,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC;AACzD,YAAA,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE;AAChC,oBAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,iBAAA;AACD,gBAAA,IAAI,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AACtC,oBAAA,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7C,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;SACpB;QAEO,OAAO,iBAAiB,CAAC,KAA2B,EAAE,OAAe,EAAE,SAAkB,EAAE,WAAoB,EAAA;YACnH,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,aAAA;AACD,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1B,YAAA,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AA3DY,IAAA,SAAA,CAAA,KAAK,QA2DjB,CAAA;AAED,IAAA,MAAa,MAAM,CAAA;AACf;;;;;;;;;;AAUG;AACI,QAAA,OAAO,GAAG,CACb,SAA2B,EAC3B,MAAiC,EACjC,cAAsC,EACtC,SAAkB,EAClB,IAAU,EACV,WAAoB,EACpB,MAAY,EACZ,6BAAuC,gBAAgB,EAAA;AAEvD,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAChG,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/E,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;AACvE,YAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,0BAA0B,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAC,CAAC,CAAC;SAC1H;AAED;;;;;;;;;;AAUG;AACI,QAAA,OAAO,QAAQ,CAClB,SAA2B,EAC3B,MAAiC,EACjC,cAAsC,EACtC,SAAkB,EAClB,IAAU,EACV,WAAoB,EACpB,MAAY,EACZ,6BAAuC,gBAAgB,EAAA;YAEvD,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CACxE,QAAQ,CAAC,UAAU,IAAG;AAClB,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAChG,gBAAA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CACjE,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,iCAAiC,CAAC,0BAA0B,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAC,CAAC,CAAC,CACpI,CAAC;aACL,CAAC,CACL,CAAC;SACL;AAED;;;;AAIG;QACK,OAAO,iCAAiC,CAC5C,0BAAoC,EACpC,EAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAsE,EAAA;YAEvG,IAAI,SAAS,KAAK,IAAI,EAAE;AACpB,gBAAA,OAAO,SAAS,CAAC;AACpB,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,0BAA0B;AAC9B,oBAAA,KAAK,YAAY;AACb,wBAAA,OAAO,IAAI,CAAC;AAChB,oBAAA,KAAK,mBAAmB;wBACpB,OAAO,WAAW,IAAI,IAAI,CAAC;AAC/B,oBAAA,KAAK,gBAAgB;wBACjB,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC/B,iBAAA;AACJ,aAAA;SACJ;AAEM,QAAA,OAAO,aAAa,CAAC,SAA2B,EAAE,MAAiC,EAAE,IAAU,EAAA;AAClG,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;SACjF;AAEM,QAAA,OAAO,mBAAmB,CAAC,SAA2B,EAAE,MAAuC,EAAE,IAAU,EAAA;AAC9G,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,IAAI,SAAS,CAAC,CAAC;SAC3K;QAEM,OAAO,SAAS,CAAC,SAA2B,EAAE,MAAiC,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;YAChH,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjG,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;SACtD;QAEM,OAAO,cAAc,CAAC,SAA2B,EAAE,MAAiC,EAAE,IAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AACrH,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAClK;AAEM,QAAA,OAAO,cAAc,CAAC,MAAA,GAAc,EAAE,EAAA;AACzC,YAAA,MAAM,GAAG,EAAC,GAAG,MAAM,EAAC,CAAC;AACrB,YAAA,OAAO,MAAM,CAAC;SACjB;QAEO,OAAO,iBAAiB,CAAC,MAAiC,EAAE,cAAsC,EAAE,SAAkB,EAAE,WAAoB,EAAA;YAChJ,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxB,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAChC,gBAAA,cAAc,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC,aAAA;AACD,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;gBACvB,MAAM,cAAc,GAAG,CAAG,EAAA,MAAM,CAAC,sBAAsB,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;gBAC/D,MAAM,SAAS,GAAG,CAAG,EAAA,MAAM,CAAC,UAAU,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;AAC9C,gBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AACzC,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AA1HY,IAAA,SAAA,CAAA,MAAM,SA0HlB,CAAA;AAED,IAAA,MAAa,KAAK,CAAA;QACP,OAAO,GAAG,CAAC,SAA2B,EAAE,KAAgB,EAAE,SAAc,EAAE,EAAA;AAC7E,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC5D,IAAI,KAAK,CAAC,WAAW,EAAE;AACnB,gBAAA,MAAM,IAAI,GAAG,CAAC,CAAA,OAAA,EAAU,KAAK,CAAC,WAAW,CAAE,CAAA,EAAE,YAAY,KAAK,CAAC,WAAW,CAAA,CAAE,CAAC,CAAC;AAC9E,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,gBAAA,IAAI,IAAI,EAAE;AACN,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SACrE;AAEM,QAAA,OAAO,SAAS,CAAC,KAAgB,EAAE,SAAc,EAAE,EAAA;AACtD,YAAA,MAAM,SAAS,GAAG,EAAC,GAAG,MAAM,EAAC,CAAC;AAC9B,YAAA,SAAS,CAAC,WAAW,GAAG,EAAE,CAAC;AAC3B,YAAA,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;AAE5B,YAAA,IAAI,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBACtC,MAAM,SAAS,GAAG,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxD,gBAAA,SAAS,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC;AAC1C,gBAAA,SAAS,CAAC,YAAY,GAAG,SAAS,EAAE,OAAO,CAAC;AAC5C,gBAAA,SAAS,CAAC,sBAAsB,GAAG,SAAS,EAAE,UAAU,CAAC;AAC5D,aAAA;AAED,YAAA,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AACxB,YAAA,OAAO,SAAS,CAAC;SACpB;AACJ,KAAA;AA5BY,IAAA,SAAA,CAAA,KAAK,QA4BjB,CAAA;AACL,CAAC,EAnVgB,SAAS,KAAT,SAAS,GAmVzB,EAAA,CAAA,CAAA;;MCzVY,SAAS,CAAA;IACX,OAAO,eAAe,CAAI,SAAwB,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;QAE5B,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,WAAW,GAAG,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrH,IAAI,CAAC,WAAW,EAAE;;AAEd,YAAA,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,OAAO,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;KACpC;IAEM,OAAO,kBAAkB,CAAI,SAAwB,EAAA;AACxD,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;QAE5B,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,cAAc,GAAG,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChH,IAAI,CAAC,cAAc,EAAE;;AAEjB,YAAA,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,OAAO,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC;KACvC;IAEM,OAAO,eAAe,CAAI,SAAwB,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AAC5B,QAAA,MAAM,WAAW,GAAI,SAAiB,CAAC,mBAAmB,IAA4C,CAAC;AACvG,QAAA,IAAI,WAAW;AAAE,YAAA,OAAO,WAAW,CAAC;AACpC,QAAA,MAAM,aAAa,GAAI,SAAiB,CAAC,gBAAwD,CAAC;AAClG,QAAA,IAAI,aAAa;AAAE,YAAA,OAAO,aAAa,CAAC;QACxC,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,mCAAmC,CAAC,SAAS,CAAC,CAAC;AACvF,QAAA,IAAI,YAAY;AAAE,YAAA,OAAO,YAAY,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,OAAO,0BAA0B,CAAC,UAA+B,EAAE,KAAe,EAAE,GAAG,KAAe,EAAA;AAC1G,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACzF,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,OAAO,SAAS,CAAC;AACpB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,OAAO,2BAA2B,CAAI,MAA4B,EAAE,SAAS,GAAG,IAAI,EAAA;AACvF,QAAA,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC9D,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;gBACzF,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC5E,oBAAA,IAAI,SAAS,EAAE;AACX,wBAAA,MAAM,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;AACrD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC9B,gBAAA,MAAM,aAAa,GAAG,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAClF,gBAAA,IAAI,aAAa,EAAE;AACf,oBAAA,MAAM,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;AACxD,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AACJ;;MCvEY,gBAAgB,CAAA;AAClB,IAAA,OAAO,YAAY,CAAC,cAA8B,EAAE,KAAc,EAAE,OAAgB,EAAE,QAAA,GAAyC,SAAS,EAAE,IAAa,EAAA;AAC1J,QAAA,MAAM,YAAY,GAAY,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;AAC3I,QAAA,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACjC,QAAA,OAAO,YAAY,CAAC;KACvB;IAEM,OAAO,sBAAsB,CAAC,SAA2B,EAAE,KAA+B,EAAE,KAAU,EAAE,cAA8B,EAAA;QACzI,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,IAAI,KAAK,EAAE,OAAO,EAAE;YAChB,MAAM,CAAC,YAAY,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9C,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC7B,SAAA;QACD,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;QACrJ,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;AAChK,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC;KAChI;AAEM,IAAA,OAAO,yBAAyB,CACnC,SAA2B,EAC3B,MAAwB,EACxB,YAAoB,EACpB,cAA8B,EAC9B,cAAuB,EACvB,gBAAyB,EACzB,IAAU,EAAA;QAEV,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC;QACxJ,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,IAAI,EAAE,wBAAwB,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC;QACrK,OAAO,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;KAClG;AAEM,IAAA,OAAO,uBAAuB,CACjC,SAA2B,EAC3B,MAAwB,EACxB,KAAgB,EAChB,YAAoB,EACpB,cAA8B,EAC9B,IAAU,EACV,WAA6B,OAAO,EAAA;AAEpC,QAAA,MAAM,MAAM,GAAG;AACX,YAAA,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO;SACvE,CAAC;AACF,QAAA,MAAM,gBAAgB,GAClB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,YAAY,CAAA,MAAA,CAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,yBAAyB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;AAC1K,QAAA,MAAM,kBAAkB,GACpB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA,MAAA,EAAS,YAAY,CAAA,QAAA,CAAU,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,2BAA2B,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,CAAC;AACrK,YAAA,SAAS,CAAC;AACd,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;KACnI;IAEM,OAAO,wBAAwB,CAAC,SAA2B,EAAE,KAAa,EAAE,OAAe,EAAE,MAAY,EAAA;QAC5G,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;AAC/D,QAAA,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;AAC3E,QAAA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAC,CAAC;KACpF;AAEM,IAAA,OAAO,2BAA2B,CAAC,SAA2B,EAAE,KAAa,EAAE,OAAe,EAAA;QACjG,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;QAC/D,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;AACnE,QAAA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAC,CAAC;KACpF;AACJ;;MCjEY,cAAc,CAAA;IACvB,SAAS,CAAC,KAAU,EAAE,GAAY,EAAE,EAAW,EAAE,IAAI,GAAG,KAAK,EAAA;AACzD,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,IAAI,EAAE;AACN,gBAAA,OAAO,KAAK,GAAG,GAAG,IAAI,aAAa,GAAG,EAAE,IAAI,aAAa,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,KAAK,GAAG,GAAG,IAAI,aAAa,GAAG,EAAE,IAAI,YAAY,CAAC;AAC5D,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;8GAXQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCKY,WAAW,CAAA;AACpB,IAAA,SAAS,CAAC,KAAc,EAAE,QAA8B,EAAE,QAAwB,EAAA;AAC9E,QAAA,IAAI,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;AACpE,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,MAAM,gBAAgB,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC;AAC3I,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,EAAE;AAC7C,YAAA,QAAQ,GAAG,QAAQ,CAAC,WAAW,IAAI,qBAAqB,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAgB,CAAC,CAAC;AACpG,SAAA;AACD,QAAA,OAAO,QAAQ,GAAG,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,gBAAgB,CAAE,CAAA,GAAG,gBAAgB,CAAC;KAC1E;8GAVQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;ACND;;;;;AAKG;MAMU,YAAY,CAAA;AACrB,IAAA,SAAS,CAAC,KAAU,EAAE,IAAI,GAAG,EAAE,EAAA;QAC3B,OAAO,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACpD;8GAHQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCFY,gBAAgB,CAAA;IAGzB,WACY,CAAA,QAAsB,EACtB,SAA2B,EAAA;QAD3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAc;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAEnC,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5D;AAED,IAAA,SAAS,CAAI,KAAwB,EAAE,QAAQ,GAAG,GAAG,EAAE,cAAc,GAAG,IAAI,EAAE,gBAAgB,GAAG,GAAG,EAAE,WAAW,GAAG,EAAE,EAAA;QAClH,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,gBAAgB,CAAC;AAC3B,SAAA;AACD,QAAA,WAAW,GAAG,uBAAuB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAClE,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;aACnB,GAAG,CAAC,CAAC,IAAG;AACL,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC5E,YAAA,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;;YAEnE,OAAO,uBAAuB,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAC1E,SAAC,CAAC;aACD,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7B;8GAvBQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;MA2BY,uBAAuB,CAAA;AAChC,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KAAI;IAE3C,OAAO,cAAc,CAAC,OAAe,EAAA;QACxC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;KACtF;AAEM,IAAA,OAAO,UAAU,CAAC,KAAgC,EAAE,OAAe,EAAA;QACtE,OAAO,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;KAC7E;AAEM,IAAA,eAAe,CAAC,KAAc,EAAE,QAAgB,EAAE,OAAe,EAAA;AACpE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChE,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,OAAkC;AAC9B,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,OAAO,EAAE,OAAO,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,aAAa,CAAA,CAAE,GAAG,aAAa;AAChE,YAAA,IAAI,EAAE,aAAa;SACtB,CAAC;KACL;AACJ;;MC5CY,qBAAqB,CAAA;IAG9B,WACY,CAAA,QAAsB,EACtB,SAA2B,EAAA;QAD3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAc;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAEnC,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5D;AAED,IAAA,SAAS,CAAC,KAAgD,EAAE,QAAQ,GAAG,GAAG,EAAE,cAAc,GAAG,IAAI,EAAE,gBAAgB,GAAG,GAAG,EAAE,WAAW,GAAG,EAAE,EAAA;AACvI,QAAA,WAAW,GAAG,uBAAuB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC,IAAI,CACbC,UAAQ,CAAC,CAAC,IAAG;YACT,IAAI,CAAC,CAAC,EAAE;AACJ,gBAAA,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjC,aAAA;AACD,YAAA,OAAO,aAAa,CAChB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACR,iBAAA,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;iBACjE,GAAG,CAAC,CAAC,IACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,IAAY,KAAI;AACjB,gBAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBACd,OAAO,uBAAuB,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC9D,aAAC,CAAC,CACL,CACJ,CACR,CAAC;AACN,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CACnC,CAAC;KACL;8GAhCQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCHY,mBAAmB,CAAA;IAC5B,SAAS,CAAC,QAAgB,EAAE,KAA2B,EAAA;AACnD,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;KACrE;8GAHQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCGY,kBAAkB,CAAA;AAL/B,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAmEzC,KAAA;AAjEG,IAAA,SAAS,CAAC,KAAc,EAAE,MAAe,EAAE,IAAU,EAAE,UAAuB,EAAA;QAC1E,IAAI,MAAM,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,MAAM,GAAG;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,GAAG,UAAU;aAChB,CAAC;AACL,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,MAAM,GAAG;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;aACvC,CAAC;AACL,SAAA;AACD,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,GAAG;AACL,gBAAA,GAAG,MAAM;AACT,gBAAA,MAAM,EAAE,MAAM;aACjB,CAAC;AACL,SAAA;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,SAAA;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjF,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACpE,SAAA;AAAM,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAElC,YAAA,MAAM,GAAG,GAAQ,EAAC,GAAG,KAAK,EAAC,CAAC;AAC5B,YAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC7B,oBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACpD,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IAEO,eAAe,CAAC,CAAS,EAAE,MAAW,EAAA;AAC1C,QAAA,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;AAE5H,YAAA,OAAO,CAAC;iBACH,KAAK,CAAC,GAAG,CAAC;AACV,iBAAA,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,6BAA6B,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;iBACvD,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,SAAA;AAAM,aAAA;;YAEH,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5C,SAAA;KACJ;IAEO,6BAA6B,CAAC,CAAS,EAAE,MAAW,EAAA;AACxD,QAAA,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACnB,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;AAC9D,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;KACJ;IAEO,iBAAiB,CAAC,CAAS,EAAE,MAAW,EAAA;QAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,IAAY,EAAE,GAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;KAC1H;8GAnEQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCFY,aAAa,CAAA;AACtB,IAAA,SAAS,CAAC,KAAc,EAAE,QAAmB,EAAE,IAAc,EAAA;AACzD,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;8GAPQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCCY,eAAe,CAAA;AACxB,IAAA,WAAA,CAAoB,eAAmC,EAAA;QAAnC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAoB;KAAI;IAE3D,SAAS,CAAC,KAAc,EAAE,QAAiB,EAAA;AACvC,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;8GATQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCDY,eAAe,CAAA;AACxB,IAAA,SAAS,CAAC,SAAkB,EAAE,cAAyD,EAAE,IAAQ,EAAA;AAC7F,QAAA,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;AACxD,YAAA,OAAO,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;YACH,OAAO,SAAS,IAAI,EAAE,CAAC;AAC1B,SAAA;KACJ;8GAPQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCIY,4BAA4B,CAAA;AACrC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;AAE1C,IAAA,SAAS,CAAC,KAAW,EAAE,UAAmC,EAAE,IAAQ,EAAA;QAChE,IAAI,UAAU,EAAE,WAAW,EAAE;AACzB,YAAA,IAAK,IAAY,CAAC,UAAU,CAAC,0BAA2B,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,EAAE;gBACpH,OAAO,KAAK,GAAG,iCAAiC,CAAC;AACpD,aAAA;AACJ,SAAA;QACD,OAAO,KAAK,IAAI,EAAE,CAAC;KACtB;8GAVQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA,CAAA;;;MCJY,WAAW,CAAA;IACb,OAAO,oBAAoB,CAAC,QAAe,EAAE,SAAiB,EAAE,UAAkD,EAAE,SAA2B,EAAA;QAClJ,MAAM,gBAAgB,GAAG,CAAC,GAAQ,EAAE,KAAU,MAAM,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACjF,QAAA,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;QACvC,OAAO;AACH,YAAA,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACjI,YAAA,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAQ,KACrB,UAAU,CAAC,KAAK,CAAC,OAAO;iBACnB,GAAG,CAAC,MAAM,IAAG;AACV,gBAAA,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;oBACrC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC3G,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACjE,iBAAA;AACL,aAAC,CAAC;iBACD,IAAI,CAAC,SAAS,CAAC,CACvB;AACJ,SAAA,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClB;AACJ;;MCxBY,QAAQ,CAAA;AACV,IAAA,OAAO,MAAM,CAAC,IAAU,EAAE,QAAgB,EAAA;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,aAAa,CACd,IAAI,UAAU,CAAC,OAAO,EAAE;AACpB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,MAAM;AACf,SAAA,CAAC,CACL,CAAC;AAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACnC;AACJ;;MCdY,uBAAuB,CAAA;AACjB,IAAA,SAAA,IAAA,CAAA,SAAS,GAA4B,IAAI,uBAAuB,EAAE,CAAC,EAAA;AAE3E,IAAA,OAAO,GAAG,GAAA;QACb,OAAO,uBAAuB,CAAC,SAAS,CAAC;KAC5C;AAYD,IAAA,WAAA,GAAA;QALQ,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;QAC5C,IAAa,CAAA,aAAA,GAAe,EAAE,CAAC;AAE/B,QAAA,IAAA,CAAA,aAAa,GAAG,EAAC,GAAG,IAAI,CAAC,kBAAkB,EAAC,CAAC;AAuErD;;AAEG;AACK,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;AAElG;;;AAGG;QACI,IAAsB,CAAA,sBAAA,GAAG,OAA4B,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;;KA5E9H;IAEM,IAAI,CAAC,UAAsB,EAAE,MAA0B,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,qBAAqB,CAAC,MAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,kCAAA,CAAoC,CAAC,CAAC;KAC5D;AAED;;;AAGG;AACI,IAAA,oBAAoB,CAAC,WAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,uCAAA,CAAyC,CAAC,CAAC;KACjE;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,MAAkD,GAAA,EAAE,EAAE,eAAe,GAAG,KAAK,EAAA;QAC9F,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,GAAG,EAAE,CAAC;AACf,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,uCAAuC,CAAC;AACnE,QAAA,MAAM,oBAAoB,GAAG,MAAM,EAAE,aAAa,IAAI,KAAK,CAAC;AAE5D,QAAA,MAAM,UAAU,GAAuB;AACnC,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,wBAAwB,EAAE,oBAAoB;AAC9C,YAAA,QAAQ,EAAE,KAAK;SAClB,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAoC,iCAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAC;AAE/D,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACxC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,eAAe,CAAC,MAAW,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,kCAAA,CAAoC,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAaO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,+DAA+D,CAAC,CAAC;AACnF,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAE7B,QAAA,OAAO,aAAa,CAChB,IAAI,CAAC,WAAW;aACX,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;aAClC,GAAG,CAAC,UAAU,IAAG;AACd,YAAA,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;AACzB,YAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,UAAU,IAAI,UAAU,CAAC,wBAAwB,GAAG,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC;YAC9J,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAEpD,IAAI,UAAU,CAAC,aAAa,EAAE;AAC1B,gBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AACtE,aAAA;AAAM,iBAAA;;gBAEH,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACzC,gBAAA,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;AACxB,aAAA;YAED,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAA0C,uCAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAC;AAErE,YAAA,OAAO,UAAU,CAAC,GAAG,CAAS,GAAG,CAAC,CAAC,IAAI,CACnC,UAAU,CAAC,CAAC,GAAsB,KAAI;gBAClC,IAAI,UAAU,CAAC,aAAa,EAAE;AAC1B,oBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC/D,oBAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,oBAAA,OAAO,UAAU,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;AAC3C,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAsB,mBAAA,EAAA,GAAG,CAAa,WAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AAE/D,oBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,iBAAA;AACL,aAAC,CAAC,EACF,GAAG,CAAC,aAAa,IAAG;AAChB,gBAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;AAED,gBAAA,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC;AACzC,gBAAA,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAE3B,gBAAA,OAAO,IAAI,CAAC;aACf,CAAC,CACL,CAAC;AACN,SAAC,CAAC,CACT,CAAC,IAAI,CACF,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EACnD,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CACjC,CAAC;KACL;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED;;;AAGG;AACI,IAAA,cAAc,CAAU,GAAW,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KACnE;AAED;;;AAGG;AACI,IAAA,YAAY,CAAC,GAAW,EAAA;AAC3B,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAC/D;AAED;;AAEG;IACK,YAAY,GAAA;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;;AAGhB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3B,YAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;gBACxC,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;;AAGD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;QACvJ,IAAI,WAAW,CAAC,MAAM,EAAE;AACpB,YAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAClC,gBAAA,IAAI,UAAU,EAAE;oBACZ,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACrD,iBAAA;AACJ,aAAA;AACJ,SAAA;;QAGD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAClE,SAAA;;QAGD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;KAC/B;;;MCpNQ,gBAAgB,CAAA;AACV,IAAA,SAAA,IAAA,CAAA,SAAS,GAAqB,IAAI,gBAAgB,EAAE,CAAC,EAAA;aACrD,IAAO,CAAA,OAAA,GAAG,KAAH,CAAS,EAAA;aAEhB,IAAW,CAAA,WAAA,GAAuB,EAAvB,CAA0B,EAAA;aACrC,IAAc,CAAA,cAAA,GAAkB,EAAlB,CAAqB,EAAA;aACnC,IAAkB,CAAA,kBAAA,GAAqC,EAArC,CAAwC,EAAA;aAC1D,IAAgB,CAAA,gBAAA,GAAG,yBAAH,CAA6B,EAAA;AAQ5D,IAAA,WAAA,GAAA;;AAHiB,QAAA,IAAA,CAAA,eAAe,GAAiB,YAAY,CAAC,IAAI,CAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;;KAIxC;AAEM,IAAA,OAAO,GAAG,GAAA;QACb,OAAO,gBAAgB,CAAC,SAAS,CAAC;KACrC;IAEM,OAAO,SAAS,CAAC,MAAkC,EAAA;QACtD,IAAI,MAAM,CAAC,eAAe,EAAE;AACxB,YAAA,gBAAgB,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AAC9D,SAAA;KACJ;AAEM,IAAA,OAAO,IAAI,CAAC,oBAA6C,EAAE,UAA8B,EAAA;QAC5F,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC1B,OAAO;AACV,SAAA;AAED,QAAA,gBAAgB,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;AAC9D,QAAA,gBAAgB,CAAC,WAAW,GAAG,UAAU,CAAC;AAE1C,QAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;QAChC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KACnC;AAEO,IAAA,OAAO,YAAY,GAAA;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC3B,OAAO;AACV,SAAA;AACD,QAAA,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,gBAAgB,CAAC,cAAc,GAAG,EAAE,CAAC;KACxC;IAEM,OAAO,MAAM,CAAC,QAAgB,EAAA;QACjC,OAAO,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACtD;AAEM,IAAA,MAAM,CAAC,QAAgB,EAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,IAAI,gBAAgB,CAAC,CAAA,4DAAA,EAA+D,IAAI,CAAC,QAAQ,CAAgC,8BAAA,CAAA,CAAC,CAAC;AAC5I,SAAA;AACD,QAAA,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAA,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;AACtC,QAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE3B,QAAA,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAEvD,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,WAAW,CAAC,UAA0B,EAAE,QAAsB,EAAE,QAA+B,GAAA,SAAS,EAAE,IAAY,EAAA;AAC1H,QAAA,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAEnE,QAAA,MAAM,QAAQ,GAAgB;AAC1B,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE,OAAO,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,OAAO;AACzE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;AACnC,YAAA,SAAS,EAAE,SAAS;YACpB,kBAAkB,EAAE,kBAAkB,IAAI,SAAS;SACtD,CAAC;QAEF,IAAI,UAAU,YAAY,KAAK,EAAE;;AAE7B,YAAA,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC;AAC/B,SAAA;aAAM,IAAI,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE;;AAEjD,YAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvB;IAEO,cAAc,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACpI,QAAA,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;KAC1C;AAEO,IAAA,IAAI,CAAC,GAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;;AAE3B,YAAA,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO;AACV,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,CAAA,gBAAgB,CAAC,qBAAqB,EAAE,cAAc,IAAiB,KAAK,CAAC,CAAC;AAChG,QAAA,IACI,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC;AACvH,aAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,EAC5E;YACE,OAAO;AACV,SAAA;QAED,IAAI,SAAS,EAAE,eAAe,EAAE;AAC5B,YAAA,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC;AAC3G,SAAA;AAED,QAAA,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9D;AAEM,IAAA,KAAK,CAAC,UAA0B,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACrE;AAEM,IAAA,KAAK,CAAC,UAA0B,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACrE;AAEM,IAAA,GAAG,CAAC,UAA0B,EAAE,QAAA,GAAyB,YAAY,CAAC,GAAG,EAAE,QAA+B,GAAA,SAAS,EAAE,GAAG,IAAW,EAAA;QACtI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC1D;AAEM,IAAA,QAAQ,CAAiC,QAAW,EAAA;AACvD,QAAA,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,aAAa,GAAgB;AAC/B,YAAA,SAAS,EAAE,SAAS;YACpB,kBAAkB,EAAE,kBAAkB,IAAI,SAAS;AACnD,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;AAC5C,YAAA,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,KAAK,EAAE,YAAY,CAAC,GAAG;AACvB,YAAA,GAAG,QAAQ;SACd,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC5B;AAEM,IAAA,IAAI,CAAC,UAA0B,EAAE,GAAG,IAAW,EAAA;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACpE;AAEM,IAAA,IAAI,CAAC,UAA0B,EAAE,GAAG,IAAW,EAAA;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACvE;AAEM,IAAA,KAAK,CAAC,UAA0B,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACrE;;;MCjKQ,sBAAsB,GAAG,IAAI,cAAc,CAAU,iBAAiB,EAAE;AACjF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,YAAY;AAC9B,CAAA;;MCDY,0BAA0B,GAAG,IAAI,cAAc,CAA2C,yBAAyB;;MCFnH,sCAAsC,GAA8B,IAAI,cAAc,CAAY,wCAAwC;;MCE1I,kBAAkB,GAAG,IAAI,cAAc,CAAqB,oBAAoB;;MCAhF,oBAAoB,GAAG,IAAI,cAAc,CAAkB,iBAAiB;;MCa5E,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;;QAKqB,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;;QAMvD,IAAS,CAAA,SAAA,GAA8C,SAAS,CAAC;QACjE,IAAgB,CAAA,gBAAA,GAAuD,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3G,IAAU,CAAA,UAAA,GAAmB,SAAS,CAAC;QACvC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAU,CAAC;AAC9C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;;QAGzB,IAAqB,CAAA,qBAAA,GAAG,IAAI,eAAe,CAAqB;AAC7E,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,UAAU,EAAE,GAAG;AAClB,SAAA,CAAC,CAAC;AACc,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;;QAKrE,IAAY,CAAA,YAAA,GAAqB,OAAO,CAAC;AAIzC,QAAA,IAAA,CAAA,WAAW,GAA+B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAU,CAAA,UAAA,GAAkB,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAA2B,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;;AAGlF,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,aAAa,CAAgB,CAAC,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,aAAa,CAAgB,CAAC,CAAC,CAAC;AA+drE,KAAA;;AA3dG,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,IAAI,UAAU,CAAC;KACrD;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,WAAW,CAAC;KACvD;AAED,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,IAAI,+BAA+B,CAAC;KAC5J;AAED,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,IAAI,+BAA+B,CAAC;KAC1J;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,iBAAiB;AAC5C,cAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB;cACvC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,IAAI,uCAAuC,CAAC;KACzF;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,IAAI,uCAAuC,CAAC;KAC9K;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC;KACtD;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjD,QAAA,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE;AACrD,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAED,IAAW,WAAW,CAAC,QAAuB,EAAA;QAC1C,IAAI,QAAQ,KAAK,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAA;KACJ;AAED,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KAC3E;IAEM,YAAY,GAAA;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AACpD,QAAA,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,EAAE;AAC/D,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACpF,QAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;AACnC,QAAA,OAAO,eAAe,CAAC;KAC1B;IAEM,iBAAiB,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;KAClD;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1D;AAED,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvD,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC,EAAE;AAC/D,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IAED,IAAW,eAAe,CAAC,YAA2B,EAAA;QAClD,IAAI,YAAY,KAAK,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,OAAO;AACV,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE;YACvD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,SAAA;KACJ;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KAC/E;;AAGD,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC;KAC1C;;AAID,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;KACtC;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;KAC/D;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;KACvC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;KACpC;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;KAC7D;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;KACvC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;KACpD;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAChD;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAW,SAAS,CAAC,SAAoC,EAAA;AACrD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;;AAGD,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;KACpD;AAED,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACjD;;AAID,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC;KACxC;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;KACvC;;AAID,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,IAAW,IAAI,CAAC,IAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;AAED,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,IAAW,SAAS,CAAC,KAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C;;AAGD,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,IAAI,KAAK,CAAC;KAC7D;IAEM,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC;QAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,IAAI,KAAK,CAAC;AACtE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,IAAI,KAAK,CAAC;;AAGxE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,WAAW,IAAI,OAAO,CAAC;;AAGnE,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;;QAGjC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAEpD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5F,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;aAC7C,IAAI;;QAED,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAClD;aACA,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;AACP,QAAA,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC9E,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC9B;;AAID,IAAA,mBAAmB,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxC;IAED,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;;AAGM,IAAA,kBAAkB,CAAC,IAAiB,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC5C,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC5D,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACnG,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM,aAAa,CAAC,IAAI,IAAI,CAAC;AAC3I,SAAA;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;AAC1F,SAAA;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAClE,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC/D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,IAAiB,EAAA;QACzC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3D,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACnG,YAAA,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM,aAAa,CAAC,CAAC;AAC1I,SAAA;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3B,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC;AACzF,SAAA;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACnB,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AACjE,SAAA;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,SAAA;QAED,IAAI,MAAM,GAAG,CAAC,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,KAAK,CAAC,MAAM,CAAC,GAAG;YACZ,GAAG,KAAK,CAAC,MAAM,CAAC;AAChB,YAAA,GAAG,IAAI;AACP,YAAA,OAAO,EAAE,IAAI;SAChB,CAAC;AAEF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEpC,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,iBAAiB,GAAA;QACrB,IAAI,IAAI,CAAC,gCAAgC,EAAE;AACvC,YAAA,IAAI,CAAC,gCAAgC,CAAC,WAAW,EAAE,CAAC;AACpD,YAAA,IAAI,CAAC,gCAAgC,GAAG,SAAS,CAAC;AACrD,SAAA;QACD,IAAI,IAAI,CAAC,mCAAmC,EAAE;AAC1C,YAAA,IAAI,CAAC,mCAAmC,CAAC,WAAW,EAAE,CAAC;AACvD,YAAA,IAAI,CAAC,mCAAmC,GAAG,SAAS,CAAC;AACxD,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAExD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC9D,QAAA,IAAI,cAAc,EAAE;YAChB,IAAI,cAAc,CAAC,KAAK,EAAE;AACtB,gBAAA,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACjG,oBAAA,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5B,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,aAAA;AACJ,SAAA;QAED,MAAM,WAAW,GAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAErD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;AAC3B,YAAA,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;AAC1B,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,QAAQ,GAAkB,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAM,CAAC,CAAC;AACxG,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;;AAElF,gBAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAG;oBACpB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;wBAC1B,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3B,qBAAA;AACL,iBAAC,CAAC,CAAC;;AAGH,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAA;KACJ;AAEO,IAAA,sBAAsB,CAAC,KAAoC,EAAA;QAC/D,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAqB,CAAC;AAC9C,QAAA,MAAM,mBAAmB,GAAG,SAAS,EAAE,UAAU,CAAC;QAClD,IAAI,mBAAmB,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,QAAQ,IAAI,mBAAmB,EAAE;AACnG,YAAA,IAAI,mBAAmB,CAAC,MAAM,KAAK,KAAK,EAAE;AACtC,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACzE,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE;AACxC,oBAAA,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;AAClC,iBAAA;AACD,gBAAA,OAAO,UAAU,CAAC;AACrB,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACxD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,mBAAmB,CAAC,KAAoC,EAAE,iBAA2B,EAAE,WAA0B,EAAA;QACrH,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;AACV,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAqB,CAAC;QAC9C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,CAAA,CAAA,EAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QAClD,IAAI,SAAS,EAAE,UAAU,EAAE;AACvB,YAAA,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC;AAEjD,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;AACpC,gBAAA,KAAK,MAAM,uBAAuB,IAAI,mBAAmB,EAAE;oBACvD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAC5E,oBAAA,IAAI,UAAU,EAAE;AACZ,wBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,OAAO,mBAAmB,KAAK,UAAU,EAAE;gBAClD,WAAW,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACxE,gBAAA,IAAI,UAAU,EAAE;AACZ,oBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,iBAAA;AACJ,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;KAC7E;AAEO,IAAA,gBAAgB,CAAC,QAAgB,EAAE,eAA+C,EAAE,WAAW,GAAG,KAAK,EAAA;AAC3G,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAC,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC3E,IAAI,kBAAkB,EAAE,OAAO,EAAE;AAC7B,YAAA,OAAO,kBAAkB,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;;YAErC,OAAO;AACH,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,UAAU,EAAE,QAAQ;aACvB,CAAC;AACL,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,WAAW,IAAI,OAAO,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE;;AAE/D,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,IAAI,OAAO,eAAe,CAAC,UAAU,KAAK,WAAW,EAAE;AACnD,gBAAA,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC;AACzC,aAAA;AACD,YAAA,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC;AAC9B,YAAA,OAAO,eAAe,CAAC;AAC1B,SAAA;KACJ;;AAIM,IAAA,YAAY,CAAC,KAAc,EAAA;QAC9B,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QACzD,OAAO,YAAY,CAAC,UAAU,EAAE;AAC5B,YAAA,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC;AAC1C,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAqB,CAAC;AACrD,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC;AAE/C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/D;AAEO,IAAA,eAAe,CAAC,WAAoB,EAAA;QACxC,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAErD,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;8GAzgBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;SCPe,+BAA+B,CAC3C,GAAiC,EACjC,EAAoE,EACpE,QAAoC,EAAA;AAEpC,IAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,IAAA,IAAI,YAAY,CAAC,gBAAgB,CAAC,EAAE;AAChC,QAAA,OAAO,gBAAgB,CAAC;AAC3B,KAAA;AACD,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEe,SAAA,2BAA2B,CACvC,GAAiC,EACjC,EAAoE,EAAA;AAEpE,IAAA,MAAM,gBAAgB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,IAAA,IAAI,YAAY,CAAC,gBAAgB,CAAC,EAAE;AAChC,QAAA,OAAO,gBAAgB,CAAC;AAC3B,KAAA;IACD,OAAO,UAAU,CACb,MACI,IAAI,cAAc,CACd,CAAiE,8DAAA,EAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAiB,cAAA,EAAA,GAAG,CAAC,UAAU,EAAE,MAAM,CAAG,CAAA,CAAA,EACrL,GAAG,CAAC,eAAe,EACnB,EAAC,aAAa,EAAE,GAAG,EAAC,CACvB,CACR,CAAC;AACN,CAAC;AAEK,SAAU,yBAAyB,CAAgB,GAAiC,EAAA;AACtF,IAAA,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,QAAwB,CAAC,KAAK,UAAU,EAAE;AAC7G,QAAA,MAAM,iBAAiB,GAAG,GAAG,CAAC,YAA6C,CAAC;QAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;AACxD,QAAA,OAAO,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAClF,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAEK,SAAU,wBAAwB,CAAgB,GAAiC,EAAA;AACrF,IAAA,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,WAAW,EAAE;AACzC,QAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAA8C,CAAC;AAC9E,QAAA,IAAI,OAAO,kBAAkB,CAAC,KAAK,KAAK,UAAU,EAAE;AAChD,YAAA,OAAO,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;AACpJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAEK,SAAU,yBAAyB,CAAgB,GAAiC,EAAA;AACtF,IAAA,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,WAAW,EAAE;AACzC,QAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAA8C,CAAC;AAC9E,QAAA,IAAI,OAAO,kBAAkB,CAAC,MAAM,KAAK,UAAU,EAAE;AACjD,YAAA,OAAO,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1H,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAEK,SAAU,yBAAyB,CAAgB,GAAiC,EAAA;AACtF,IAAA,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,WAAW,EAAE;AACzC,QAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAA8C,CAAC;AAC9E,QAAA,IAAI,OAAO,kBAAkB,CAAC,MAAM,KAAK,UAAU,EAAE;AACjD,YAAA,OAAO,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC;AACnJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAEK,SAAU,yBAAyB,CAAgB,GAAiC,EAAA;AACtF,IAAA,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,WAAW,EAAE;AACzC,QAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAA8C,CAAC;AAC9E,QAAA,IAAI,OAAO,kBAAkB,CAAC,MAAM,KAAK,UAAU,EAAE;AACjD,YAAA,OAAO,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC;AACnJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;AAKG;AACa,SAAA,sBAAsB,CAAgB,QAAkB,EAAE,YAA2C,EAAA;IACjH,IAAI,YAAY,EAAE,WAAW,EAAE;AAC3B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAU,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,OAAO,EAAE;YACV,MAAM,IAAI,gBAAgB,CAAC,CAAA,2BAAA,EAA8B,YAAY,CAAC,WAAW,CAAyB,uBAAA,CAAA,CAAC,CAAC;AAC/G,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;AAClB,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACL;;MCrFsB,oBAAoB,CAAA;AAC/B,IAAA,eAAe,CAAgB,GAAiC,EAAA;AACnE,QAAA,OAAO,2BAA2B,CAAsC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3G;AAOM,IAAA,cAAc,CAAgB,GAAiC,EAAA;AAClE,QAAA,OAAO,2BAA2B,CAAsB,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1F;AAOM,IAAA,eAAe,CAAgB,GAAiC,EAAA;AACnE,QAAA,OAAO,2BAA2B,CAAsB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3F;AAOM,IAAA,eAAe,CAAgB,GAAiC,EAAA;AACnE,QAAA,OAAO,2BAA2B,CAAsB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3F;AAOM,IAAA,eAAe,CAAgB,GAAiC,EAAA;AACnE,QAAA,OAAO,2BAA2B,CAAsB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3F;AAOD;;;;;AAKG;IACI,sBAAsB,CAAgB,QAAkB,EAAE,YAA2C,EAAA;AACxG,QAAA,OAAO,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;KACzD;AACJ,CAAA;AAGK,MAAO,2BAA4B,SAAQ,oBAAoB,CAAA;IAIjD,SAAS,CAAgB,GAAiC,EAAE,QAA2C,EAAA;AACnH,QAAA,OAAO,QAAQ,GAAG,+BAA+B,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;KAChI;IAKe,QAAQ,CAAgB,GAAiC,EAAE,QAAqC,EAAA;AAC5G,QAAA,OAAO,QAAQ,GAAG,+BAA+B,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,CAAC,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;KAC9H;IAKe,SAAS,CAAgB,GAAiC,EAAE,QAAqC,EAAA;AAC7G,QAAA,OAAO,QAAQ,GAAG,+BAA+B,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;KAChI;IAKe,SAAS,CAAgB,GAAiC,EAAE,QAAqC,EAAA;AAC7G,QAAA,OAAO,QAAQ,GAAG,+BAA+B,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;KAChI;IAKe,SAAS,CAAgB,GAAiC,EAAE,QAAqC,EAAA;AAC7G,QAAA,OAAO,QAAQ,GAAG,+BAA+B,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;KAChI;8GAlCQ,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA3B,2BAA2B,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;;;MCrEE,oBAAoB,CAAA;IAG7B,WACY,CAAA,MAAc,EACd,QAAkB,EAAA;QADlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAJtB,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;QAMhC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YACjC,IAAI,KAAK,YAAY,aAAa,EAAE;gBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,6BAA6B,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;IAEM,yBAAyB,GAAA;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAEM,8BAA8B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAClC,SAAA;KACJ;8GAzCQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,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,oBAAoB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCKY,gBAAgB,CAAA;AAgBzB,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAfjB,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7D,IAAmB,CAAA,mBAAA,GAAG,eAAe,CAAC;QAG/C,IAA2B,CAAA,2BAAA,GAAa,EAAE,CAAC;QAE3C,IAAsB,CAAA,sBAAA,GAO1B,EAAE,CAAC;KAE+B;AAE/B,IAAA,sBAAsB,CAAC,IAA4B,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;KAC9F;AAEM,IAAA,uBAAuB,CAAC,IAA4B,EAAA;QACvD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClI;IAEM,UAAU,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YACjC,IAAI,KAAK,YAAY,eAAe,EAAE;AAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,aAAA;iBAAM,IAAI,KAAK,YAAY,oBAAoB,EAAE;AAC9C,gBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,aAAA;iBAAM,IAAI,KAAK,YAAY,kBAAkB,EAAE;gBAC5C,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpD,aAAA;iBAAM,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,YAAY,gBAAgB,IAAI,KAAK,YAAY,eAAe,EAAE;gBAChH,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,eAAe,CAAC,GAAW,EAAA;QAC/B,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;KACzC;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACzF,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;KAC1C;AAEO,IAAA,wBAAwB,CAAC,KAAY,EAAE,KAAK,GAAG,KAAK,EAAA;AACxD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAEnC,IAAI,SAAS,GAAG,SAAS,CAAC;AAC1B,QAAA,MAAM,iCAAiC,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,QAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,iCAAiC,IAAI,CAAC,EAAE;AACtE,YAAA,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,EAAE,iCAAiC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7G,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,SAAS,KAAK,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;YAE7G,SAAS,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;AAC5D,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,SAAA;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,GAAG,KAAK,GAAG,OAAO,CAAQ,KAAA,EAAA,SAAS,CAAgB,aAAA,EAAA,SAAS,CAAoB,iBAAA,EAAA,IAAI,CAAC,qBAAqB,CAAG,CAAA,CAAA,CAAC,CAAC;QAErJ,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;AACzD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC5C,SAAA;KACJ;AAEO,IAAA,wBAAwB,CAAC,SAAiB,EAAE,QAAQ,GAAG,KAAK,EAAA;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;YAClE,OAAO;AACV,SAAA;QAED,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,KAAM,CAAC,IAAI,CAAC,mBAAmC,CAAC,CAAC;QAE1F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,QAAQ,EAAE;;YAEvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA0B,uBAAA,EAAA,SAAS,CAA4C,0CAAA,CAAA,CAAC,CAAC;YACnG,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACrD,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC3B,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,KAAM,CAAC,IAAI,CAAC,mBAAmC,CAAC,CAAC;AAC7F,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA0B,uBAAA,EAAA,SAAS,CAAkC,gCAAA,CAAA,CAAC,CAAC;AAC3F,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,YAAY,CAAC,YAAY,KAAK,WAAW,EAAE;YAClD,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,YAAa,CAAC,CAAC;AAClE,YAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAmB,gBAAA,EAAA,SAAS,CAAc,YAAA,CAAA,EAAE,YAAY,CAAC,CAAC;AAC/E,SAAA;KACJ;AAED;;;;;AAKG;IACK,sBAAsB,CAAC,UAAkB,EAAE,MAAA,GAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAA;AAClF,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;gBACnC,SAAS;AACZ,aAAA;AACD,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,aAAA;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC1E,IAAI,gBAAgB,KAAK,IAAI,EAAE;gBAC3B,SAAS;AACZ,aAAA;;AAGD,YAAA,IAAI,KAAK,CAAC,YAAY,IAAI,UAAU,KAAK,gBAAgB,EAAE;;AAEvD,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmC,CAAC,CAAC,EAAE;gBAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmC,CAAC,CAAC,CAAC;AAC9J,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC;AACjB,iBAAA;AACJ,aAAA;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7H,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,OAAO,MAAM,CAAC;AACjB,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;IACK,oBAAoB,CAAC,MAAc,EAAE,KAAa,EAAA;QACtD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEvC,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;;AAEvD,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QAED,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE;;AAExC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE;;AAExC,oBAAA,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAA;AACJ,aAAA;;AAGD,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,yBAAyB,CAAC,SAAiB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG;AACrC,gBAAA,mBAAmB,EAAE,IAAI,aAAa,CAAS,CAAC,CAAC;AACjD,gBAAA,SAAS,EAAE,KAAK;aACnB,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KACjD;AAEO,IAAA,2BAA2B,CAAC,IAA4B,EAAA;AAC5D,QAAA,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KACtF;8GApMQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,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,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCCY,iBAAiB,CAAA;IAI1B,WACY,CAAA,IAAgB,EAChB,oBAA6C,EAAA;QAD7C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;QALxC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACvE,IAAK,CAAA,KAAA,GAA4C,EAAE,CAAC;KAKxD;;AAGG,IAAA,WAAW,CAAC,IAAY,EAAE,aAAsB,EAAE,QAAQ,GAAG,GAAG,EAAA;QACnE,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,aAAa,EAAE;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACxE,YAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAChG,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAA,CAAE,GAAG,IAAI,CAAC,CAAC;AAC/D,SAAA;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;AAEhD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1C,IAAI,EAAE,GAAG,IAAG;oBACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC7B;gBACD,KAAK,EAAE,GAAG,IAAG;oBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;iBAC5D;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;KACzC;8GAlCQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,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,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCLY,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEqB,IAAU,CAAA,UAAA,GAAG,cAAc,CAAC;AAqBhD,KAAA;IAnBW,oBAAoB,CAAC,IAAY,EAAE,GAAW,EAAA;QAClD,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC;KAC9C;IAEM,OAAO,CAAkC,IAAY,EAAE,GAAW,EAAA;AACrE,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACpF,QAAA,IAAI,gBAAgB,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAEM,IAAA,OAAO,CAAkC,IAAY,EAAE,GAAW,EAAE,KAAQ,EAAA;AAC/E,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACrF;IAEM,UAAU,CAAC,IAAY,EAAE,GAAW,EAAA;AACvC,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;KACjE;8GArBQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,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,sBAAsB,cADV,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAClB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;;ACJhC;MAIa,6BAA6B,CAAA;AACtC,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACvB,QAAA,IAAI,MAAM,GAAG,CAAA,EAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,CAAK,EAAA,EAAA,KAAK,CAAC,QAAQ,GAAG,CAAC;QACrD,MAAM,IAAI,GAAG,CAAC;QAEd,MAAM,OAAO,GAAG,CAAG,EAAA,KAAK,CAAC,OAAO,CAAA,EAAG,KAAK,CAAC,cAAc,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,cAAc,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE,CAAC;AAC7F,QAAA,MAAM,SAAS,GAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,KAAK,EAAE;AACb,YAAA,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAG,CAAA,CAAA,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5E,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;YACpB,SAAS,CAAC,IAAI,CAAC,CAAW,SAAA,CAAA,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;QAED,QAAQ,KAAK,CAAC,KAAK;YACf,KAAK,YAAY,CAAC,KAAK;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC5B,MAAM;YACV,KAAK,YAAY,CAAC,KAAK;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC5B,MAAM;YACV,KAAK,YAAY,CAAC,GAAG;AACjB,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,YAAY,CAAC,IAAI;AAClB,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC3B,MAAM;YACV,KAAK,YAAY,CAAC,OAAO;AACrB,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC3B,MAAM;YACV,KAAK,YAAY,CAAC,KAAK;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC5B,MAAM;AACb,SAAA;KACJ;AACJ;;MC3BY,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClC,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrC,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAC9D,IAAmB,CAAA,mBAAA,GAAG,MAAM,CAAC,0BAA0B,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAEpF,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAItB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,aAAa,EAAW,CAAC;AACpD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAA2B,CAAC;AAkF7E,KAAA;AAhFG,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC;KACvD;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;AAEM,IAAA,UAAU,CAAC,OAAoB,EAAA;QAClC,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAE1B,QAAA,gBAAgB,CAAC,SAAS,CAAC,EAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,eAAe,EAAC,CAAC,CAAC;QAEvF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC9D,QAAA,SAAS,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACtD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;;QAG7E,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;;AAG1C,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;;AAG5B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;AACrF,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE;AACtD,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACrF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC;AAC5F,SAAA;;AAGD,QAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,kBAAkB,IAAI,KAAK,CAAC,EAAE;YAClE,MAAM,uBAAuB,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,uBAAuB,IAAI,KAAK,CAAC;YACnG,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC;YAChE,IAAI,CAAC,UAAU,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,aAAa,EAAE,uBAAuB,EAAC,CAAC,CAAC;AACvE,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAClC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAC,CAAC,CAAC,CAAC;AAClH,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAC,CAAC,CAAC;AACxF,aAAA;YACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAC5CJ,UAAQ,CAAC,MAAK;AACV,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,kBAAkB,IAAI,KAAK,CAAC,EAAE;gBAClE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;AACtF,aAAA;;AAED,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,gBAAA,SAAS,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC9D,gBAAA,OAAO,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACxF,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,aAAA;AACL,SAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACL,YAAA,SAAS,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACtD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACnC,SAAC,CAAC,EACF,UAAU,CAAC,GAAG,IAAG;AACb,YAAA,SAAS,CAAC,IAAI,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;AAC7E,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;SAChC,CAAC,CACL,CAAC;KACL;8GA/FQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAArB,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,qBAAqB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCIY,WAAW,CAAA;IACpB,WACoB,CAAA,KAAU;IACV,SAAqB,GAAA,KAAK;;QAD1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAK;QACV,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;KAC1C;AACP,CAAA;AAED;;AAEG;MACU,cAAc,CAAA;AAoCvB,IAAA,WAAA,CAAY,MAAkC,EAAE,KAAK,GAAG,uBAAuB,CAAC,YAAY,EAAA;AAhC5E,QAAA,IAAA,CAAA,WAAW,GAAS,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAM,CAAA,MAAA,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;;AAG1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAKhD,IAAQ,CAAA,QAAA,GAAwC,EAAE,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAA2B,CAAC;AAC1D,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAA0B,CAAC,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,aAAa,CAAc,CAAC,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAc,CAAC,CAAC,CAAC;QAE1D,IAA6B,CAAA,6BAAA,GAAwB,EAAE,CAAC;;QAWxD,IAA4B,CAAA,4BAAA,GAAG,IAAI,eAAe,CAA4C,SAAS,CAAC,CAAC;AAM7G,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;AACtE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAClD;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC3F;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACrF;AAED,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;IAED,IAAW,KAAK,CAAC,KAA8B,EAAA;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,uBAAuB,CAAC,QAAQ,IAAI,KAAK,KAAK,uBAAuB,CAAC,QAAQ,CAAC,EAAE;AACjJ,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,gBAAgB,CAAa,UAAA,EAAA,KAAK,KAAK,uBAAuB,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAC5G,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,QAAQ,KAAK;gBACT,KAAK,uBAAuB,CAAC,kBAAkB,CAAC;gBAChD,KAAK,uBAAuB,CAAC,gBAAgB,CAAC;gBAC9C,KAAK,uBAAuB,CAAC,oBAAoB;oBAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;wBACvE,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,qBAAA;oBACD,MAAM;gBACV,KAAK,uBAAuB,CAAC,4BAA4B;;oBAErD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC5C,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,qBAAA;oBACD,MAAM;gBACV,KAAK,uBAAuB,CAAC,2BAA2B;oBACpD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,MAAM;gBACV,KAAK,uBAAuB,CAAC,4BAA4B,CAAC;gBAC1D,KAAK,uBAAuB,CAAC,gCAAgC;oBACzD,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;wBACvE,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,qBAAA;oBACD,MAAM;AACb,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACxE;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,MAA+B,EAAA;AAC7C,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YAC/B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,gBAAgB,CAAA,SAAA,CAAW,EAAE,MAAM,CAAC,CAAC;AAExE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnC;AAED,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAW,KAAK,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,gBAAgB,CAAA,QAAA,CAAU,EAAE,KAAK,CAAC,CAAC;AAEtE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KAC3C;IAED,IAAW,oBAAoB,CAAC,QAAmD,EAAA;;AAE/E,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAuB,CAAC,4BAA4B,EAAE;YACrE,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,CAAC;KAChD;AAED,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;KAClD;AAED,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,CAAC,IAAI,CACxD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,GAAG,CAAC,CAAC,IAAI,CAAE,CAAC,EACZ,IAAI,CAAC,CAAC,CAAC,CACV,CAAC;KACL;AAEM,IAAA,SAAS,CAAC,GAAW,EAAA;QACxB,OAAO,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;KACtE;;AAGM,IAAA,UAAU,CAAC,OAAqC,EAAE,cAAc,GAAG,IAAI,EAAA;AAC1E,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAY,SAAA,EAAA,IAAI,CAAC,gBAAgB,kBAAkB,OAAO,CAAC,eAAe,CAAA,CAAE,CAAC,CAAC;AAEhG,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;AACpC,QAAA,IAAI,cAAc,EAAE;YAChB,cAAc,CAAC,iBAAiB,EAAE,CAAC;AACtC,SAAA;AACD,QAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CACnC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACzB,YAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,YAAA,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;AACrD,SAAA,CAAC,CACL,CAAC;QACF,IAAI,CAAC,6BAA6B,CAAC,IAAI,CACnC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D,SAAA,CAAC,CACL,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/B;IAEM,WAAW,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA6B,0BAAA,EAAA,IAAI,CAAC,gBAAgB,CAAiD,+CAAA,CAAA,CAAC,CAAC;AACtH,QAAA,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;KACjB;IAEO,MAAM,CAAC,UAAU,GAAG,KAAK,EAAA;;AAE7B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE;;AAEb,YAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,CAAC;AAChD,SAAA;KACJ;IAEM,QAAQ,GAAA;AACX,QAAA,QACI,IAAI,CAAC,gBAAgB,CAAC,SAAS;YAC/B,IAAI,CAAC,yBAAyB,CAAC,SAAS;YACxC,IAAI,CAAC,YAAY,CAAC,SAAS;YAC3B,IAAI,CAAC,aAAa,CAAC,SAAS;YAC5B,IAAI,CAAC,YAAY,CAAC,SAAS;YAC3B,IAAI,CAAC,4BAA4B,CAAC,SAAS;AAC3C,YAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,EACxC;KACL;AACJ,CAAA;AAED;;AAEG;MACU,aAAa,CAAA;IAQtB,WACoB,CAAA,QAAkB,EAClB,QAAuC,EACvC,UAAkC,EAClC,YAAwC,EACxC,eAAwB,EACxB,YAA2C,EAC3C,aAA4C,EAC3C,gBAAmB,GAAA,IAAI,aAAa,CAA0B,CAAC,CAAC,EAChE,yBAAA,GAA4B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAA;QARvD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA+B;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAwB;QAClC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA4B;QACxC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAS;QACxB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA+B;QAC3C,IAAa,CAAA,aAAA,GAAb,aAAa,CAA+B;QAC3C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgD;QAChE,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA6B;QAhB1D,IAAM,CAAA,MAAA,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAkBrE,QAAA,IAAI,CAAC,eAAe,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE,CAAC;KAC9E;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACrF;IAEM,cAAc,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,eAAe,CAAoB,kBAAA,CAAA,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;AAEM,IAAA,aAAa,CAAC,IAA6B,EAAE,MAAM,GAAG,IAAI,EAAA;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,eAAe,yBAAyB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;KACJ;IAEM,iBAAiB,GAAA;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,eAAe,CAAuB,qBAAA,CAAA,CAAC,CAAC;AAE1E,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9C;AAEM,IAAA,cAAc,CAAC,GAAc,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,eAAe,CAAA,kBAAA,CAAoB,EAAE,GAAG,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9C;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;KAC7C;IAEM,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;KAChI;AACJ,CAAA;AAED;;AAEG;MACU,uBAAuB,CAAA;AAChC,IAAA,WAAA,CACoB,UAA+C,EAC/C,UAAkC,EAClC,eAAwB,EACxB,YAA2C,EAAA;QAH3C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqC;QAC/C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAwB;QAClC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAS;QACxB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA+B;KAC3D;AACP,CAAA;MAEY,gBAAgB,CAAA;IAYzB,WACW,CAAA,MAAe,EACf,IAAW,EAAA;QADX,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;QACf,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAO;QARf,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;KAS9B;AAEG,IAAA,cAAc,CAAC,UAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,kBAAkB,CAAC,MAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,eAAqB,EAAA;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,aAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAsB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,aAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,YAAY,CAAC,IAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,gBAAgB,CAAC,IAA6B,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAED;;AAEG;IACS,wBA0BX;AA1BD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,uBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,uBAAA,CAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,uBAAA,CAAA,uBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe,CAAA;AACf,IAAA,uBAAA,CAAA,uBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,uBAAA,CAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,uBAAA,CAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,uBAAA,CAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,uBAAA,CAAA,uBAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAoB,CAAA;AACpB,IAAA,uBAAA,CAAA,uBAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAAwB,CAAA;AACxB,IAAA,uBAAA,CAAA,uBAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAAwB,CAAA;AACxB,IAAA,uBAAA,CAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,uBAAA,CAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,uBAAA,CAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,uBAAA,CAAA,uBAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAe,CAAA;AACf,IAAA,uBAAA,CAAA,uBAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,uBAAA,CAAA,uBAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAgB,CAAA;AAChB,IAAA,uBAAA,CAAA,uBAAA,CAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,gBAAc,CAAA;AACd,IAAA,uBAAA,CAAA,uBAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAkB,CAAA;AAClB,IAAA,uBAAA,CAAA,uBAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kBAAgB,CAAA;AAChB,IAAA,uBAAA,CAAA,uBAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,sBAAoB,CAAA;AACpB,IAAA,uBAAA,CAAA,uBAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAA4B,CAAA;AAC5B,IAAA,uBAAA,CAAA,uBAAA,CAAA,6BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,6BAA2B,CAAA;AAC3B,IAAA,uBAAA,CAAA,uBAAA,CAAA,2BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,2BAAyB,CAAA;AACzB,IAAA,uBAAA,CAAA,uBAAA,CAAA,8BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,8BAA4B,CAAA;AAC5B,IAAA,uBAAA,CAAA,uBAAA,CAAA,kCAAA,CAAA,GAAA,EAAA,CAAA,GAAA,kCAAgC,CAAA;AACpC,CAAC,EA1BW,uBAAuB,KAAvB,uBAAuB,GA0BlC,EAAA,CAAA,CAAA;;AC5aD;;AAEG;MACU,gCAAgC,CAAA;aAClB,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,EAAA;aACd,IAAG,CAAA,GAAA,GAAG,KAAK,CAAC,EAAA;aACZ,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,EAAA;aACd,IAAM,CAAA,MAAA,GAAG,QAAQ,CAAC,EAAA;aAClB,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC,EAAA;;;MCNlC,sBAAsB,CAAA;AAAnC,IAAA,WAAA,GAAA;QAIY,IAAa,CAAA,aAAA,GAAqB,MAAM,CAAC;AAEzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;KAgFlD;AA1EU,IAAA,SAAS,CAAC,KAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,IAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,YAA8B,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,WAAW,CAAC,OAAe,EAAE,QAA8C,EAAA;AAC9E,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,IAAI,KAAK,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,QAA6C,EAAA;AACpE,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAEM,IAAI,GAAA;AACP,QAAA,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAChD,QAAA,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9C,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACjD,QAAA,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ;;MCjFY,4BAA4B,CAAA;AAYrC,IAAA,WAAA,GAAA;AAJQ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC;QAIrB,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACzI,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;AAC1J,QAAA,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAAC;KAC7C;AAEM,IAAA,QAAQ,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,WAAW,CAAC,OAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,sBAA8C,EAAA;AAClE,QAAA,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,sBAA+C,EAAA;AACnE,QAAA,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,aAAsB,EAAA;AAC3C,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,8BAA8B,CAAC,0BAA4D,EAAA;AAC9F,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,0BAA0B,GAAA;QACjC,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AACJ;;AC1DY,MAAA,uBAAuB,GAAG,CAAiB,qBAA0D,KAAI;IAClH,MAAM,GAAG,GAA2D,EAAE,CAAC;AACvE,IAAA,IAAI,qBAAqB,EAAE;QACvB,IAAK,qBAAuC,CAAC,cAAc,EAAE;;AAEzD,YAAA,GAAG,CAAC,YAAY,GAAG,qBAAsD,CAAC;AAC7E,SAAA;AAAM,aAAA;AACH,YAAA,GAAG,CAAC,WAAW,GAAG,qBAAkD,CAAC;AACxE,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,EAAE;MAEW,oBAAoB,CAAA;IAsD7B,WAAsB,CAAA,UAAkB,EAAE,GAAyD,EAAA;AA1CzF,QAAA,IAAA,CAAA,KAAK,GAAmB,cAAc,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAgC,2BAA2B,CAAC,OAAO,CAAC;AACtF,QAAA,IAAA,CAAA,SAAS,GAAuB,kBAAkB,CAAC,YAAY,CAAC;AAChE,QAAA,IAAA,CAAA,MAAM,GAAmB,cAAc,CAAC,OAAO,CAAC;QAIhD,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;QAQhC,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAIlC,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;;AAWhC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;;QAGvC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;;QAM3B,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAuC,EAAE,CAAC;AAG3D,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,cAAc,MAAM,CAAC,GAAG,EAAE,cAAc,IAAI,GAAG,EAAE,cAAc,CAAC,EAAE;AAC5F,YAAA,MAAM,IAAI,gBAAgB,CAAC,CAA6D,0DAAA,EAAA,IAAI,CAAC,WAAW,CAAA,EAAA,EAAK,GAAG,EAAE,UAAU,CAAK,EAAA,EAAA,GAAG,EAAE,cAAc,CAAA,CAAA,CAAG,CAAC,CAAC;AAC5J,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,UAAU,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,SAAS,GAAG,SAAS,CAAC;AACtH,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,cAAc,CAAC;QAE3C,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,IAAI,GAAG,EAAE,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,YAAY,CAAiB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;AACtG,SAAA;aAAM,IAAI,GAAG,EAAE,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC;AACzC,SAAA;QAED,IAAI,WAAW,GAAG,UAAU,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM;YAAE,WAAW,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAC;QACxE,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAC;AAClF,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;KACtC;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;AAED,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC;KAClD;AAED,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,IAAI,gBAAgB,CAAC,CAAA,uCAAA,EAA0C,IAAI,CAAC,eAAe,CAAwB,sBAAA,CAAA,CAAC,CAAC;AACtH,SAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;KAC7C;AAED,IAAA,IAAW,+BAA+B,GAAA;QACtC,OAAO,IAAI,CAAC,gCAAgC,CAAC;KAChD;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,gCAAgC,KAAK,IAAI,IAAI,IAAI,CAAC,gCAAgC,KAAK,SAAS,CAAC;KAChH;AAED,IAAA,IAAW,yBAAyB,GAAA;QAChC,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,2BAA2B,GAAA;QAClC,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED,IAAA,IAAW,6BAA6B,GAAA;QACpC,OAAO,IAAI,CAAC,8BAA8B,CAAC;KAC9C;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,yBAAyB,GAAA;QAChC,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,2BAA2B,GAAA;QAClC,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED,IAAA,IAAW,2BAA2B,GAAA;QAClC,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAES,IAAA,yBAAyB,CAAC,IAAa,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe;AAC/C,kBAAE,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,SAAA,EAAY,IAAI,CAAC,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAE,CAAA;AAC/E,kBAAE,CAAA,EAAG,IAAI,IAAI,IAAI,CAAC,MAAO,CAAC,WAAW,CAAY,SAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3E,SAAA;KACJ;AAEM,IAAA,eAAe,CAAC,EAAmC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,EAA2C,EAAA;AACpE,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,EAA2C,EAAA;AACpE,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,2BAA2B,CAAC,OAAO,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,4BAA4B,EAAS,CAAC;AAClF,QAAA,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,gCAAgC,CAAC,YAAY,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5F,OAAO,IAAI,CAAC,gCAAgC,CAAC;KAChD;AAED;;;AAGG;AACI,IAAA,6BAA6B,CAAC,+BAAqE,EAAA;AACtG,QAAA,IAAI,CAAC,gCAAgC,GAAG,+BAA+B,CAAC;AACxE,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,0BAA0B,CAAC,KAAc,EAAE,OAAgB,EAAE,eAAe,GAAG,IAAI,EAAA;AACtF,QAAA,IAAI,CAAC,0BAA0B,GAAG,eAAe,CAAC;AAClD,QAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,8BAA8B,GAAG,OAAO,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,wBAAwB,CAAC,KAAc,EAAE,OAAgB,EAAE,eAAe,GAAG,IAAI,EAAA;AACpF,QAAA,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC;AAChD,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,kBAAkB,CAAwB,MAA8G,EAAA;AAC3J,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAU,MAAsG,EAAA;AACvI,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,WAAyB,EAAA;QAC5C,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,gBAAgB,CAAC,GAAG,EAAE,CAAC,KAAK,CACxB,CAAsC,mCAAA,EAAA,IAAI,CAAC,eAAe,qBAAqB,IAAI,CAAC,kBAAkB,CAAA,4CAAA,CAA8C,CACvJ,CAAC;AACL,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,oBAA4B,EAAA;AACrD,QAAA,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,oBAAoB,CAAC,MAA8B,EAAA;AACtD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,KAAqB,EAAE,IAAA,GAAsB,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,KAAK,EAAA;AACvH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACzJ,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,kBAAkB,CAAC,YAAY,GAAG,IAAI,EAAA;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClH,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAwC,EAAA;AACzD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,+BAA+B,CAAC,2BAAqC,EAAA;AACxE,QAAA,IAAI,CAAC,4BAA4B,GAAG,2BAA2B,CAAC;AAChE,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,IAAiC,EAAA;AACjD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE;gBACX,MAAM,IAAI,gBAAgB,CAAC,CAAyC,sCAAA,EAAA,IAAI,CAAc,WAAA,EAAA,IAAI,CAAC,cAAc,CAAE,CAAA,CAAC,CAAC;AAChH,aAAA;YACD,IAAI,GAAG,QAAQ,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,EAAA;AAC/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,GAAG,UAA8C,EAAA;QACnE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,MAAM,CAAC,UAAgD,EAAA;AAC1D,QAAA,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAClE,QAAA,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACxD,QAAA,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC,QAAA,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,UAAU,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;AAE5E,QAAA,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACxD,QAAA,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAEtC,QAAA,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5C,QAAA,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACxD,QAAA,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAExD,QAAA,UAAU,CAAC,gCAAgC,GAAG,IAAI,CAAC,gCAAgC,CAAC;AAEpF,QAAA,UAAU,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;AACxE,QAAA,UAAU,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;AAC5E,QAAA,UAAU,CAAC,8BAA8B,GAAG,IAAI,CAAC,8BAA8B,CAAC;AAEhF,QAAA,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACpE,QAAA,UAAU,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;AACxE,QAAA,UAAU,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;AAE5E,QAAA,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAClD,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAEtD,QAAA,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAE5C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAEzC,QAAA,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACxD,QAAA,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD,QAAA,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAE1C,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ,CAAA;AAEK,MAAO,gBAAiB,SAAQ,oBAAyB,CAAA;AAC3D,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,UAAU,CAAC,CAAC;KACrB;AAEM,IAAA,OAAO,MAAM,CAAQ,UAAkB,EAAE,GAA0C,EAAA;AACtF,QAAA,OAAO,IAAI,oBAAoB,CAAmB,UAAU,EAAE;AAC1D,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,kBAAkB,CAAiB,eAAmD,EAAE,UAAkB,EAAE,GAA0C,EAAA;AAChK,QAAA,OAAO,IAAI,oBAAoB,CAAiB,UAAU,EAAE;YACxD,GAAG,uBAAuB,CAAC,eAAe,CAAC;AAC3C,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,SAAS,CAAQ,KAA6B,EAAE,UAAkB,EAAE,GAA0C,EAAA;AACxH,QAAA,OAAO,IAAI,oBAAoB,CAAmB,UAAU,EAAE;YAC1D,KAAK;AACL,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;IAEM,OAAO,qBAAqB,CAC/B,KAA6B,EAC7B,eAAmD,EACnD,UAAkB,EAClB,GAA0C,EAAA;AAE1C,QAAA,OAAO,IAAI,oBAAoB,CAAiB,UAAU,EAAE;YACxD,KAAK;YACL,GAAG,uBAAuB,CAAC,eAAe,CAAC;AAC3C,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,SAAS,CAAQ,IAAsB,EAAE,UAAkB,EAAE,GAAgD,EAAA;AACvH,QAAA,OAAO,IAAI,oBAAoB,CAAmB,UAAU,EAAE;AAC1D,YAAA,KAAK,EAAE,eAAe,CAAC,SAAS,CAAQ,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,CAAC;AACpG,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;IAEM,OAAO,qBAAqB,CAC/B,SAA2B,EAC3B,eAAmD,EACnD,UAAkB,EAClB,GAAgD,EAAA;AAEhD,QAAA,OAAO,IAAI,oBAAoB,CAAiB,UAAU,EAAE;AACxD,YAAA,KAAK,EAAE,eAAe,CAAC,SAAS,CAAQ,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,CAAC;YACzG,GAAG,uBAAuB,CAAC,eAAe,CAAC;AAC3C,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;AACJ,CAAA;AAEK,MAAO,0BAAiD,SAAQ,oBAAoC,CAAA;aAC/E,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC,EAAA;IAE9C,WAAY,CAAA,KAA6B,EAAE,GAA4D,EAAA;AACnG,QAAA,KAAK,CAAC,0BAA0B,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,GAAG,GAAG,EAAC,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KACvD;;MAGQ,sBAAsB,CAAA;IACxB,OAAO,MAAM,CAAQ,KAA6B,EAAA;AACrD,QAAA,OAAO,IAAI,0BAA0B,CAAmB,KAAK,CAAC,CAAC;KAClE;AAEM,IAAA,OAAO,kBAAkB,CAAiB,KAA6B,EAAE,eAAmD,EAAA;AAC/H,QAAA,OAAO,IAAI,0BAA0B,CAAiB,KAAK,EAAE;YACzD,GAAG,uBAAuB,CAAC,eAAe,CAAC;AAC9C,SAAA,CAAC,CAAC;KACN;AACJ;;ACxgBY,MAAA,6BAA6B,GAAG,CAAiB,qBAAgE,KAAI;IAC9H,MAAM,GAAG,GAAiE,EAAE,CAAC;AAC7E,IAAA,IAAI,qBAAqB,EAAE;QACvB,IAAK,qBAA6C,CAAC,cAAc,EAAE;;AAE/D,YAAA,GAAG,CAAC,YAAY,GAAG,qBAA4D,CAAC;AACnF,SAAA;AAAM,aAAA;AACH,YAAA,GAAG,CAAC,WAAW,GAAG,qBAAkD,CAAC;AACxE,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACf,EAAE;AAEI,MAAO,0BAAgD,SAAQ,oBAAmC,CAAA;AAwBpG,IAAA,WAAA,CAAmB,gBAA4C,EAAE,UAAkB,EAAE,GAA8D,EAAA;QAC/I,KAAK,CAAC,UAAU,EAAE;YACd,KAAK,EAAE,gBAAgB,CAAC,KAAK;AAC7B,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;QA1BqB,IAAa,CAAA,aAAA,GAAoC,SAAS,CAAC;QAE7E,IAAc,CAAA,cAAA,GAAiC,EAAE,CAAC;QAClD,IAAY,CAAA,YAAA,GAAmB,SAAS,CAAC;QACzC,IAAkB,CAAA,kBAAA,GAAS,SAAS,CAAC;QAErC,IAA4B,CAAA,4BAAA,GAAG,KAAK,CAAC;AAIrC,QAAA,IAAA,CAAA,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;QASnC,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QACxB,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;QAQ1C,IAAI,GAAG,EAAE,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;AAC3G,SAAA;aAAM,IAAI,GAAG,EAAE,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5H;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,2BAA2B,GAAA;QAClC,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED,IAAA,IAAW,6BAA6B,GAAA;QACpC,OAAO,IAAI,CAAC,8BAA8B,CAAC;KAC9C;AAED,IAAA,IAAW,+BAA+B,GAAA;QACtC,OAAO,IAAI,CAAC,gCAAgC,CAAC;KAChD;AAED,IAAA,IAAoB,YAAY,GAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAoB,cAAc,GAAA;QAC9B,MAAM,IAAI,gBAAgB,CAAC,CAAA,iDAAA,EAAoD,IAAI,CAAC,eAAe,CAA+B,6BAAA,CAAA,CAAC,CAAC;KACvI;AAED,IAAA,IAAoB,WAAW,GAAA;QAC3B,MAAM,IAAI,gBAAgB,CAAC,CAAA,iDAAA,EAAoD,IAAI,CAAC,eAAe,CAA+B,6BAAA,CAAA,CAAC,CAAC;KACvI;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,CAAC;KACpD;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,CAAC;KACpD;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,0BAA0B,GAAA;QACjC,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;IAEM,eAAe,CAAC,KAAoB,EAAE,MAAY,EAAA;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,IAAI,GAAG,aAAa,CAAC,MAAM,EAAA;AAC7C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,SAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAEe,IAAA,eAAe,CAAC,EAA2D,EAAA;AACvF,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAA6D,CAAC,CAAC;KACjG;AAEM,IAAA,iBAAiB,CAAC,EAA2D,EAAA;AAChF,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,kBAAkB,CAAC,EAA2D,EAAA;AACjF,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,0BAA0B,CAAC,KAAc,EAAE,OAAgB,EAAE,eAAe,GAAG,IAAI,EAAA;AACtF,QAAA,IAAI,CAAC,4BAA4B,GAAG,eAAe,CAAC;AACpD,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,gCAAgC,GAAG,OAAO,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,gBAAgB,CAAC,MAAkC,EAAA;AACtD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,OAAqC,EAAA;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,mBAAmB,CAAC,eAA0B,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,OAAiB,EAAE,OAAO,GAAG,IAAI,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,8BAA8B,CAAC,0BAA0B,GAAG,IAAI,EAAA;AACnE,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;MAEY,sBAAsB,CAAA;AACxB,IAAA,OAAO,MAAM,CAAQ,MAAmC,EAAE,UAAkB,EAAE,GAA0C,EAAA;AAC3H,QAAA,OAAO,IAAI,0BAA0B,CAAmB,MAAM,EAAE,UAAU,EAAE;YACxE,UAAU,EAAE,GAAG,EAAE,UAAU;YAC3B,cAAc,EAAE,GAAG,EAAE,cAAc;AACtC,SAAA,CAAC,CAAC;KACN;IAEM,OAAO,kBAAkB,CAC5B,MAAmC,EACnC,eAAyD,EACzD,UAAkB,EAClB,GAA0C,EAAA;AAE1C,QAAA,OAAO,IAAI,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE;YACtD,GAAG,6BAA6B,CAAC,eAAe,CAAC;YACjD,UAAU,EAAE,GAAG,EAAE,UAAU;YAC3B,cAAc,EAAE,GAAG,EAAE,cAAc;AACtC,SAAA,CAAC,CAAC;KACN;AACJ,CAAA;AAEK,MAAO,gCAAwC,SAAQ,oBAA2B,CAAA;AAIpF,IAAA,WAAA,CAAY,YAA+C,EAAE,UAAU,GAAG,0BAA0B,CAAC,MAAM,EAAA;AACvG,QAAA,KAAK,CAAC,UAAU,KAAK,0BAA0B,CAAC,MAAM,GAAG,CAAA,EAAG,YAAY,CAAC,UAAU,CAAS,OAAA,CAAA,GAAG,CAAG,EAAA,YAAY,CAAC,UAAU,SAAS,EAAE,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAC,CAAC,CAAC;AACjK,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC;AAEhD,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;KAC/E;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AACJ,CAAA;MAEY,4BAA4B,CAAA;AACrC;;;;AAIG;IACH,OAAO,UAAU,CAAQ,YAA+C,EAAE,UAAU,GAAG,0BAA0B,CAAC,MAAM,EAAA;QACpH,OAAO,IAAI,gCAAgC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC;KACrK;AAED;;;;AAIG;IACH,OAAO,YAAY,CAAQ,YAA+C,EAAE,UAAU,GAAG,0BAA0B,CAAC,MAAM,EAAA;QACtH,OAAO,IAAI,gCAAgC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,oBAAoB,CACtF,IAAI,sBAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE,CAAC,cAAc,EAAE,CAAC,CACzF,CAAC;KACL;AACJ,CAAA;AAEK,MAAO,iCAAwD,SAAQ,0BAA0C,CAAA;aAC5F,IAAW,CAAA,WAAA,GAAG,SAAS,CAAC,EAAA;IAE/C,WAAY,CAAA,gBAA6C,EAAE,GAAkE,EAAA;QACzH,KAAK,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,4BAA4B,CAAC,YAAY,CAAC,IAAI,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAA,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;KACxE;;MAGQ,6BAA6B,CAAA;IAC/B,OAAO,MAAM,CAAQ,MAAmC,EAAA;AAC3D,QAAA,OAAO,IAAI,iCAAiC,CAAmB,MAAM,CAAC,CAAC;KAC1E;AAEM,IAAA,OAAO,kBAAkB,CAAiB,MAAmC,EAAE,eAAyD,EAAA;AAC3I,QAAA,OAAO,IAAI,iCAAiC,CAAiB,MAAM,EAAE;YACjE,GAAG,6BAA6B,CAAC,eAAe,CAAC;AACpD,SAAA,CAAC,CAAC;KACN;AACJ,CAAA;AAEK,MAAO,6BAAoD,SAAQ,0BAA0C,CAAA;aACxF,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC,EAAA;IAE3C,WAAY,CAAA,gBAA6C,EAAE,GAAkE,EAAA;QACzH,KAAK,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;;MAGQ,yBAAyB,CAAA;IAC3B,OAAO,MAAM,CAAQ,MAAmC,EAAA;AAC3D,QAAA,OAAO,IAAI,6BAA6B,CAAmB,MAAM,CAAC,CAAC;KACtE;AAEM,IAAA,OAAO,kBAAkB,CAAiB,MAAmC,EAAE,eAAyD,EAAA;AAC3I,QAAA,OAAO,IAAI,6BAA6B,CAAiB,MAAM,EAAE;YAC7D,GAAG,6BAA6B,CAAC,eAAe,CAAC;AACpD,SAAA,CAAC,CAAC;KACN;AACJ,CAAA;AAEK,MAAO,8BAAqD,SAAQ,0BAA0C,CAAA;aACzF,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,EAAA;IAE5C,WAAY,CAAA,gBAA6C,EAAE,GAAkE,EAAA;QACzH,KAAK,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;;MAGQ,0BAA0B,CAAA;IAC5B,OAAO,MAAM,CAAQ,MAAmC,EAAA;AAC3D,QAAA,OAAO,IAAI,8BAA8B,CAAmB,MAAM,CAAC,CAAC;KACvE;AAEM,IAAA,OAAO,kBAAkB,CAAiB,MAAmC,EAAE,eAAyD,EAAA;AAC3I,QAAA,OAAO,IAAI,8BAA8B,CAAiB,MAAM,EAAE;YAC9D,GAAG,6BAA6B,CAAC,eAAe,CAAC;AACpD,SAAA,CAAC,CAAC;KACN;AACJ;;AClWK,MAAO,wBAAgC,SAAQ,oBAAsC,CAAA;AASvF,IAAA,WAAA,CAAY,UAAU,GAAG,MAAM,EAAE,GAAgD,EAAA;AAC7E,QAAA,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QATnB,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;QACV,IAAa,CAAA,aAAA,GAAa,EAAE,CAAC;QAG7B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAClB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KAI5B;AAED,IAAA,IAAW,GAAG,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAEM,IAAA,QAAQ,CAAC,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,GAAG,YAAsB,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,eAAe,CAAC,WAAmB,EAAE,mBAAyC,EAAA;AACjF,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,cAAc,CAAC,UAAU,GAAG,KAAK,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,UAAU,CAAC,SAA6B,OAAO,EAAA;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,WAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;MAEY,oBAAoB,CAAA;AACtB,IAAA,OAAO,MAAM,CAAc,UAAkB,EAAE,GAA0C,EAAA;AAC5F,QAAA,OAAO,IAAI,wBAAwB,CAAQ,UAAU,EAAE;AACnD,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,SAAS,CAAQ,KAA6B,EAAE,UAAkB,EAAE,GAA0C,EAAA;AACxH,QAAA,OAAO,IAAI,wBAAwB,CAAQ,UAAU,EAAE;YACnD,KAAK;AACL,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,SAAS,CAAQ,IAAsB,EAAE,UAAkB,EAAE,GAAgD,EAAA;AACvH,QAAA,OAAO,IAAI,wBAAwB,CAAQ,UAAU,EAAE;AACnD,YAAA,KAAK,EAAE,eAAe,CAAC,SAAS,CAAQ,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,CAAC;AACpG,YAAA,GAAG,GAAG;AACT,SAAA,CAAC,CAAC;KACN;IAEM,OAAO,UAAU,CAAQ,MAAmC,EAAA;AAC/D,QAAA,MAAM,UAAU,GAAG,IAAI,wBAAwB,CAAQ,MAAM,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC,CAAC;AAEjG,QAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1B,UAAU,CAAC,6BAA6B,EAAE,CAAC;QAE3C,UAAU,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACnE,UAAU,CAAC,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAEjE,UAAU,CAAC,kBAAkB,EAAE,CAAC;QAChC,UAAU,CAAC,oBAAoB,EAAE,CAAC;AAElC,QAAA,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ;;MC9GY,qBAAqB,CAAA;AAJlC,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAIpD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAEK,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,YAAY,EAAK,CAAC;AAsC5F,KAAA;IAlCG,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE;AAChD,gBAAA,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1C,gBAAA,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;AACjD,gBAAA,eAAe,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ;AACtD,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAM,IAAI,CAAC,SAAS,EAAE;AAC3E,gBAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;AAC3C,aAAA,CAAC,CAAC;AACN,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AACnH,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9D,SAAA;QAED,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACvE;AAEO,IAAA,0BAA0B,CAAC,GAAQ,EAAA;AACvC,QAAA,OAAO,OAAO,GAAG,CAAC,cAAc,KAAK,UAAU,CAAC;KACnD;8GA/CQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,6BAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC7B,iBAAA,CAAA;8BAOmD,SAAS,EAAA,CAAA;sBAAxD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAC,CAAA;gBACrC,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAC6B,6BAA6B,EAAA,CAAA;sBAA/D,MAAM;uBAAC,iBAAiB,CAAA;;;MCThB,gCAAgC,CAAA;AAJ7C,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QACjE,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAC1C,IAA0B,CAAA,0BAAA,GAA6B,EAAE,CAAC;AAkC9E,KAAA;IAhCG,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;YAErC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAG;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,QAAQ,CAAC,uBAAuB,EAAE;;gBAE1F,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjD,gBAAA,CAAC,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAEd,YAAA,IAAI,CAAC,aAAa,EAAE,2BAA2B,EAAE,CAAC;AACrD,SAAA;KACJ;IAED,WAAW,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;YAErC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,EAAE,6BAA6B,EAAE,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,CAAC,CAAC;KACjF;8GArCQ,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,2BAA2B;AACxC,iBAAA,CAAA;;;MCCY,qBAAqB,CAAA;IAG9B,WACY,CAAA,EAAc,EACF,SAAoB,EAAA;QADhC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACF,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;KACxC;IAGJ,MAAM,GAAA;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;AACpE,QAAA,IAAI,YAAoB,CAAC;AAEzB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAA,IAAI,OAAO,EAAE;oBACT,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AACtD,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC;AAC9C,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,eAAe,CAAC,KAAa,EAAA;QACjC,QAAQ,IAAI,CAAC,YAAY;AACrB,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACxB,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;AAC7B,YAAA,KAAK,KAAK;AACN,gBAAA,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;AAC3B,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;AACpB,SAAA;KACJ;8GAtCQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC7B,iBAAA,CAAA;;0BAMQ,QAAQ;yCAJJ,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAQN,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,CAAA;;;MCXX,oBAAoB,CAAA;AAJjC,IAAA,WAAA,GAAA;AAKoB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAC,WAAgB,EAAC,CAAC;AACnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAYhE,KAAA;IAPU,OAAO,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IAEM,mBAAmB,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;8GAbQ,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,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AAC5B,iBAAA,CAAA;8BAKY,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACyC,IAAI,EAAA,CAAA;sBAAlD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAC,CAAA;;;ICXrC,sBAKX;AALD,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,2BAAkC,CAAA;AAClC,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,GAKhC,EAAA,CAAA,CAAA;;MCAqB,YAAY,CAAA;AAG9B,IAAA,WAAA,CAAY,IAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AACJ,CAAA;AAEK,IAAW,YAuFhB;AAvFD,CAAA,UAAiB,WAAW,EAAA;IACxB,MAAa,GAAI,SAAQ,YAAY,CAAA;AAGjC,QAAA,WAAA,GAAA;AACI,YAAA,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAH7B,IAAY,CAAA,YAAA,GAAwB,EAAE,CAAC;SAI9C;AAEM,QAAA,OAAO,EAAE,CAAC,GAAG,WAAgC,EAAA;AAChD,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;AACzB,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAW,WAAW,GAAA;YAClB,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QAEM,GAAG,CAAC,GAAG,WAAgC,EAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AACvC,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AArBY,IAAA,WAAA,CAAA,GAAG,MAqBf,CAAA;IAED,MAAa,GAAI,SAAQ,YAAY,CAAA;AAGjC,QAAA,WAAA,GAAA;AACI,YAAA,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAH7B,IAAY,CAAA,YAAA,GAAwB,EAAE,CAAC;SAI9C;AAEM,QAAA,OAAO,EAAE,CAAC,GAAG,WAAgC,EAAA;AAChD,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAW,WAAW,GAAA;YAClB,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;QAEM,EAAE,CAAC,GAAG,WAAgC,EAAA;YACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AACvC,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AArBY,IAAA,WAAA,CAAA,GAAG,MAqBf,CAAA;IAED,MAAa,KAAM,SAAQ,YAAY,CAAA;AAGnC,QAAA,WAAA,GAAA;AACI,YAAA,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAH9B,IAAM,CAAA,MAAA,GAAyB,EAAE,CAAC;SAIzC;AAEM,QAAA,OAAO,EAAE,CAAC,GAAG,KAAoB,EAAA;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AAClB,YAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,IAAW,KAAK,GAAA;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QAEM,GAAG,CAAC,GAAG,KAAoB,EAAA;AAC9B,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,aAAA;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACnD,YAAA,OAAO,IAAI,CAAC;SACf;QAEM,EAAE,CAAC,GAAG,KAAoB,EAAA;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA;AA7BY,IAAA,WAAA,CAAA,KAAK,QA6BjB,CAAA;IAED,MAAa,OAAQ,SAAQ,YAAY,CAAA;AACrC,QAAA,WAAA,CAAoC,OAAiC,EAAA;AACjE,YAAA,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YADL,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;SAEpE;QAEM,OAAO,EAAE,CAAC,OAAiC,EAAA;AAC9C,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;SAC/B;AACJ,KAAA;AARY,IAAA,WAAA,CAAA,OAAO,UAQnB,CAAA;AACL,CAAC,EAvFgB,WAAW,KAAX,WAAW,GAuF3B,EAAA,CAAA,CAAA;;MCrGY,iBAAiB,CAAA;AACnB,IAAA,OAAO,WAAW,CAAC,WAAyB,EAAE,SAAwB,EAAA;QACzE,QAAQ,WAAW,CAAC,iBAAiB;YACjC,KAAK,qBAAqB,CAAC,IAAI;gBAC3B,OAAO,iBAAiB,CAAC,eAAe,CAAC,WAAgC,EAAE,SAAS,CAAC,CAAC;AAC1F,YAAA;gBACI,MAAM,IAAI,gBAAgB,CAAC,CAAA,iBAAA,EAAoB,WAAW,CAAC,iBAAiB,CAAmB,iBAAA,CAAA,CAAC,CAAC;AACxG,SAAA;KACJ;AAEM,IAAA,OAAO,eAAe,CAAC,WAA8B,EAAE,SAAwB,EAAA;AAClF,QAAA,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACrF;AACJ;;MCFY,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACpC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AA+BxF,KAAA;AA7BU,IAAA,WAAW,CAAC,WAAyB,EAAE,KAA8B,EAAE,SAAqD,EAAA;QAC/H,QAAQ,WAAW,CAAC,iBAAiB;YACjC,KAAK,qBAAqB,CAAC,GAAG;gBAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,WAA8B,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACjF,KAAK,qBAAqB,CAAC,GAAG;gBAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,WAA8B,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACjF,KAAK,qBAAqB,CAAC,OAAO;gBAC9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAkC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACzF,YAAA;gBACI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,iBAAiB,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtG,SAAA;KACJ;AAEO,IAAA,cAAc,CAAC,UAA2B,EAAE,KAA8B,EAAE,SAAqD,EAAA;QACrI,OAAO,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;KAC/I;AAEO,IAAA,cAAc,CAAC,UAA2B,EAAE,KAA8B,EAAE,SAAqD,EAAA;QACrI,OAAO,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;KAC9I;AAEO,IAAA,kBAAkB,CAAC,UAA+B,EAAE,KAA8B,EAAE,SAAqD,EAAA;AAC7I,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6D,0DAAA,EAAA,UAAU,CAAC,OAAO,CAAE,CAAA,CAAC,CAAC;AACrG,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,OAAO,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;KAC1F;8GAlCQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,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,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACJY,MAAA,qBAAqB,GAAkB,CAAC,KAA6B,KAAoF;AAClK,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAEtD,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAqB,CAAC;IAEzC,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpE,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,KAAA;AACL;;ACVA;;AAEG;MAEU,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;QAIY,IAAO,CAAA,OAAA,GAAsC,EAAE,CAAC;AAEhD,QAAA,IAAA,CAAA,mBAAmB,GAA2C,IAAI,OAAO,EAAE,CAAC;AAC5E,QAAA,IAAA,CAAA,mBAAmB,GAAiD,IAAI,OAAO,EAAE,CAAC;AAClF,QAAA,IAAA,CAAA,mBAAmB,GAAiD,IAAI,OAAO,EAAE,CAAC;AAqD7F,KAAA;IAnDG,IAAW,YAAY,CAAC,YAA0C,EAAA;AAC9D,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;KACrC;IAEM,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAEM,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAEM,IAAA,UAAU,CAAC,OAA0C,EAAA;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;IAED,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,KAAqC,EAAA;QAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAC9C;IAED,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,KAAuD,EAAA;QAC/D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAC9C;IAED,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,KAA2C,EAAA;QACnD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAC9C;IAED,+BAA+B,GAAA;QAC3B,OAAO,IAAI,CAAC,6BAA6B,CAAC;KAC7C;AAED,IAAA,+BAA+B,CAAC,QAAuC,EAAA;AACnE,QAAA,IAAI,CAAC,6BAA6B,GAAG,QAAQ,CAAC;KACjD;IAED,iCAAiC,GAAA;AAC7B,QAAA,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;KAClD;8GA3DQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAb,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACRK,SAAA,oBAAoB,CAAC,sBAAsB,GAAG,IAAI,EAAA;IAC9D,OAAO;AACH,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AAC/B,YAAA,IAAI,sBAAsB,EAAE;gBACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;AACrG,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,aAAa,EAAE,CAAC;AAC9B,aAAA;SACJ;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;KACnB,CAAC;AACN;;MCmBsB,wBAAwB,CAAA;AAA9C,IAAA,WAAA,GAAA;AACuB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,4BAA4B,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAClD,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAExD,IAAkB,CAAA,kBAAA,GAAG,GAAG,CAAC;QAClC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;KA03BlF;AAt3BG;;;;;AAKG;AACI,IAAA,8BAA8B,CACjC,MAAkC,EAClC,UAAkC,EAClC,YAA2C,EAAA;AAE3C,QAAA,MAAM,eAAe,GAAG,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;QACrG,OAAO,IAAI,uBAAuB,CAC9B,MAAM,EACN,UAAU,EACV,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,SAAS,EAC7F,eAAe,CAClB,CAAC;KACL;AAED;;;;;AAKG;AACI,IAAA,GAAG,CAA4B,GAAiC,EAAA;AACnE,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC;;QAGhF,IAAI,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE;;;YAGvD,MAAM,sBAAsB,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,+BAAqE,CAAC;AAEzH,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,aAAa,GAAiB;gBAC9B,IAAI,EAAE,sBAAsB,CAAC,IAAI;AACjC,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,UAAU,EAAE,sBAAsB,CAAC,YAAY,CAAC,IAAI,IAAI,SAAS;gBACjE,sBAAsB,EAAE,sBAAsB,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE;AAC9E,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,UAAU,EAAE,sBAAsB,CAAC,YAAY,EAAE,IAAI,IAAI,SAAS;gBAClE,sBAAsB,EAAE,sBAAsB,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE;gBAC/E,aAAa,EAAE,sBAAsB,CAAC,aAAa;aACtD,CAAC;AAEF,YAAA,IAAI,sBAAsB,CAAC,KAAK,KAAK,IAAI,EAAE;AACvC,gBAAA,aAAa,CAAC,MAAM;oBAChB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,sBAAsB,CAAC,IAAI,SAAS,CAAC;AAC3J,aAAA;AAED,YAAA,IAAI,sBAAsB,CAAC,OAAO,KAAK,IAAI,EAAE;AACzC,gBAAA,aAAa,CAAC,OAAO;AACjB,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAChB,IAAI,CAAC,SAAS,EACd,GAAG,CAAC,QAAQ,CAAC,MAAM,EACnB,iBAAiB,EACjB,sBAAsB,CAAC,OAAO,EAC9B,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,EAC9B,sBAAsB,CACzB,IAAI,SAAS,CAAC;AACtB,aAAA;AAED,YAAA,IAAI,sBAAsB,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE;AACpD,gBAAA,aAAa,CAAC,WAAW;AACrB,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,SAAS,CAAC;AAChK,aAAA;AAED,YAAA,IAAI,sBAAsB,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE;gBACnD,aAAa,CAAC,UAAU,GAAG,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC;AACvE,aAAA;AAED,YAAA,IAAI,sBAAsB,CAAC,YAAY,EAAE,IAAI,KAAK,IAAI,EAAE;gBACpD,aAAa,CAAC,UAAU,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC;AACxE,aAAA;AAED,YAAA,IAAI,sBAAsB,CAAC,YAAY,EAAE,KAAK,KAAK,IAAI,EAAE;AACrD,gBAAA,aAAa,CAAC,WAAW;AACrB,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC;AAChK,aAAA;YAED,IAAI,sBAAsB,CAAC,YAAY,IAAI,IAAI,KAAK,sBAAsB,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,IAAI,sBAAsB,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AAC1J,gBAAA,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,aAAA;AAED,YAAA,aAAa,CAAC,MAAM,GAAG,MAAK;gBACxB,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,wBAAwB,CAAC;AACtE,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;AACrC,aAAC,CAAC;AAEF,YAAA,aAAa,CAAC,MAAM,GAAG,MAAK;gBACxB,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,wBAAwB,CAAC;gBACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;;AAEpD,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,iBAAA;AACL,aAAC,CAAC;YAEF,IAAI,sBAAsB,CAAC,0BAA0B,EAAE;gBACnD,aAAa,GAAG,sBAAsB,CAAC,0BAA0B,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACzF,aAAA;AAED,YAAA,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC;YACjC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,oBAAoB,CAAC;AAElE,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;AACpC,SAAA;KACJ;AAED;;;;;;;AAOG;AACK,IAAA,sBAAsB,CAA4B,GAAiC,EAAA;AACvF,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC;AAChF,QAAA,MAAM,oBAAoB,GAAG,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC;AACxD,QAAA,IAAI,YAA8C,CAAC;AAEnD,QAAA,IAAI,KAAqC,CAAC;QAC1C,QAAQ,GAAG,CAAC,YAAY;AACpB,YAAA,KAAK,QAAQ;AACT,gBAAA,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,MAA0C,CAAC;AACvE,gBAAA,IAAI,OAAO,YAAY,CAAC,cAAc,KAAK,UAAU,EAAE;oBACnD,IAAI,YAAY,YAAY,6BAA6B,EAAE;AACvD,wBAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrF,qBAAA;yBAAM,IAAI,YAAY,YAAY,8BAA8B,EAAE;AAC/D,wBAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrF,qBAAA;AAAM,yBAAA;;wBAEH,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;wBACjF,KAAK,GAAG,GAAG,IAAG;AACV,4BAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE;gCACvB,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAClE,6BAAA;AAAM,iCAAA;gCACH,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAClE,6BAAA;AACL,yBAAC,CAAC;AACL,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC;AACvC,iBAAA;gBACD,MAAM;AACV,YAAA,KAAK,OAAO;AACR,gBAAA,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,MAA0C,CAAC;AACvE,gBAAA,IAAI,OAAO,YAAY,CAAC,aAAa,KAAK,UAAU,EAAE;oBAClD,IAAI,YAAY,YAAY,8BAA8B,EAAE;AACxD,wBAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACpF,qBAAA;AAAM,yBAAA;wBACH,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;wBAChF,KAAK,GAAG,GAAG,IAAG;AACV,4BAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;gCAClE,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAChE,6BAAA;AACD,4BAAA,OAAO,YAAY,CAAC;AACxB,yBAAC,CAAC;AACL,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC;AACtC,iBAAA;gBACD,MAAM;AACV,YAAA,KAAK,KAAK,CAAC;AACX,YAAA;AACI,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,YAAY,0BAA0B,EAAE;AAClG,oBAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrF,iBAAA;AAAM,qBAAA;oBACH,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3C,iBAAA;gBACD,MAAM;AACb,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC1B,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAK;AACX,YAAA,IAAI,WAAW,EAAE;;gBAEb,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC;gBACtD,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,aAAA;AAAM,iBAAA;gBACH,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC;AAC3D,aAAA;;YAED,GAAG,CAAC,cAAc,EAAE,CAAC;AAErB,YAAA,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,SAAC,CAAC,EACFH,UAAQ,CAAC,SAAS,IAAG;;AAEjB,YAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,GAAG,uBAAuB,CAAC,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC;;AAErG,YAAA,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAE1C,YAAA,IAAI,WAAW,EAAE;;AAEb,gBAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;gBAChC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAG7C,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,EAAE;AAC/C,oBAAA,GAAG,CAAC,YAAY,GAAG,gBAAgB,CAAC,yBAAyB,CACzD,IAAI,CAAC,SAAS,EACd,GAAG,CAAC,QAAQ,CAAC,MAAM,EACnB,GAAG,CAAC,YAAY,EAChB,IAAI,CAAC,cAAc,EACnB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,2BAA2B,EAC/C,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,6BAA6B,EACjD;AACI,wBAAA,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI;AACvB,wBAAA,GAAG,SAAS;AACf,qBAAA,CACJ,CAAC;AACL,iBAAA;;AAGD,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE;;AAEpC,oBAAA,MAAM,cAAc,GAChB,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,KAAK,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AAC5I,oBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAC1C,cAAc,EACd,IAAI,gBAAgB,CAAU,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1D,yBAAA,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACzC,yBAAA,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/B,yBAAA,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EACxD,SAAS,EACT,GAAG,CAAC,QAA4C,EAChD,IAAI,CACP,CAAC;AACF,oBAAA,GAAG,CAAC,QAAQ,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;oBAErD,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,eAAe,CAAC;;AAG7D,oBAAA,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CACjC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC;oBACnC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,EACpE,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;wBACL,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,aAAa,CAAC;AAC3D,wBAAA,OAAO,SAAS,CAAC;qBACpB,CAAC,CACL,CAAC;AACL,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,YAAY,CAAC,2BAA2B,EAAE;AAC1C,oBAAA,gBAAgB,CAAC,yBAAyB,CACtC,IAAI,CAAC,SAAS,EACd,YAAY,EACZ,OAAO,EACP,IAAI,CAAC,cAAc,EACnB,YAAY,CAAC,6BAA6B,EAC1C,YAAY,CAAC,+BAA+B,EAC5C,GAAG,CAAC,UAAU,CAAC,IAAI,CACtB,CAAC;AACL,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACzB,SAAC,CAAC,EACF,GAAG,CAAC,SAAS,IAAG;AACZ,YAAA,IAAI,WAAW,EAAE;;AAEb,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;AACrB,SAAC,CAAC,EACF,UAAU,CAAC,GAAG,IAAG;;YAEb,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;AAGpD,YAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,GAAG,uBAAuB,CAAC,QAAQ,GAAG,uBAAuB,CAAC,UAAU,CAAC;;AAEzG,YAAA,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAEhC,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE;gBAC7C,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjJ,aAAA;AAED,YAAA,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,WAAW,EAAE;AACb,gBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;gBACzB,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAG7C,IAAI,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACrD,oBAAA,MAAM,gBAAgB,GAClB,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,KAAK,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;;oBAElJ,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAC3C,gBAAgB,EAChB,IAAI,gBAAgB,CAAO,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACjE,yBAAA,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACzC,yBAAA,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/B,yBAAA,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EACxD,SAAS,EACT,SAAS,EACT,IAAI,CACP,CAAC;AACF,oBAAA,GAAG,CAAC,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;oBAEvD,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,gBAAgB,CAAC;AAE9D,oBAAA,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CACtC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC;oBACpC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,EACpE,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;wBACL,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,cAAc,CAAC;wBAC5D,OAAO,KAAK,CAAC,CAAC;qBACjB,CAAC,CACL,CAAC;AACL,iBAAA;AACJ,aAAA;;AAGD,YAAA,OAAO,QAAQ,CAAC,IAAI,CAChB,GAAG,CAAC,MAAK;;AAEL,gBAAA,IAAI,oBAAoB,EAAE;AACtB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,iBAAA;;AAED,gBAAA,MAAM,WAAW,CAAC;aACrB,CAAC,CACL,CAAC;SACL,CAAC,CACL,CAAC;AAEF,QAAA,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;YACnC,IAAI,EAAE,GAAG,IAAG;AACR,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,GAAG,CAAC,eAAe,CAAA,qBAAA,CAAuB,EAAE,GAAG,CAAC,CAAC;aACvF;YACD,KAAK,EAAE,GAAG,IAAG;AACT,gBAAA,IAAK,GAA6B,EAAE,IAAI,KAAK,gBAAgB,EAAE;oBAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA2B,yBAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AACvD,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAC,eAAe,CAAA,sBAAA,CAAwB,EAAE,GAAG,CAAC,CAAC;AACzF,iBAAA;aACJ;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;;;;;;AAUG;IACI,4BAA4B,CAC/B,MAAwC,EACxC,UAAkC,EAClC,YAA2C,EAC3C,QAAwC,EACxC,sBAAyD,EAAA;AAEzD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;AACzG,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;KAC5G;AAED;;;;;;;;;;AAUG;IACI,6BAA6B,CAChC,MAAwC,EACxC,UAAkC,EAClC,YAA2C,EAC3C,QAAwC,EACxC,sBAAyD,EAAA;AAEzD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;AACzG,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;KAC7G;AAED;;;;;;;;AAQG;IACK,uBAAuB,CAC3B,QAAuC,EACvC,UAAkC,EAClC,YAAgC,EAChC,YAA4B,EAC5B,sBAAiD,EAAA;QAEjD,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAChD,YAAA,MAAM,IAAI,gBAAgB,CAAC,CAA2C,wCAAA,EAAA,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAA,SAAA,EAAY,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;AAC5I,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAA0C,CAAC;QACzE,IAAI,eAAe,GAAG,YAAY,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,YAAY,EAAE;AAC/C,YAAA,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC;AAC/C,SAAA;QACD,IAAI,CAAC,eAAe,EAAE;YAClB,MAAM,yBAAyB,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;AACxE,YAAA,IAAI,yBAAyB,EAAE;gBAC3B,eAAe,GAAG,yBAAyB,CAAC;AAC/C,aAAA;AACJ,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CACzB,IAAI,CAAC,QAAQ,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,SAAS,EAC7F,eAAe,EACf,IAAI,CAAC,aAAa,IAAI,SAAS,CAClC,CAAC;AACF,QAAA,GAAG,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AACpD,QAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;;;;;;AAUG;IACK,cAAc,CAClB,MAA2C,EAC3C,UAAkC,EAClC,YAA2C,EAC3C,QAAwC,EACxC,sBAAiD,EAAA;AAEjD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAgB,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;AAExH,QAAA,MAAM,eAAe,GAAG,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;AAC9G,QAAA,MAAM,GAAG,GAAG,IAAI,aAAa,CACzB,IAAI,CAAC,QAAQ,EACb,QAAQ,EACR,UAAU,EACV,KAAK,EACL,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,SAAS,EAC7F,eAAe,EACf,IAAI,CAAC,aAAa,IAAI,SAAS,CAClC,CAAC;AACF,QAAA,GAAG,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AACpD,QAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAEzB,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;;;;;;AAUG;IACI,cAAc,CACjB,MAAkC,EAClC,UAAkC,EAClC,QAAwC,EACxC,sBAAiD,EACjD,UAAU,GAAG,KAAK,EAAA;AAElB,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAgB,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAC1H,QAAA,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,eAAe,CAAC;AACzD,QAAA,QAAQ,CAAC,oBAAoB,GAAG,UAAU,CAAC;;AAE3C,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AACvC,YAAA,IAAI,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC;AACxD,YAAA,MAAM,gBAAgB,GAAG,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,MAAM,YAAY,0BAA0B,EAAE;gBAC9C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,0BAA0B,CAAC,CAAC;gBAC5E,QAAQ,MAAM,CAAC,UAAU;oBACrB,KAAK,aAAa,CAAC,UAAU;AACzB,wBAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACvC,MAAM;oBACV,KAAK,aAAa,CAAC,KAAK;AACpB,wBAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACvC,MAAM;oBACV,KAAK,aAAa,CAAC,KAAK;AACpB,wBAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACvC,MAAM;oBACV,KAAK,aAAa,CAAC,UAAU;AACzB,wBAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACvC,MAAM;oBACV,KAAK,aAAa,CAAC,MAAM,CAAC;AAC1B,oBAAA;wBACI,MAAM;AACb,iBAAA;gBACD,IAAI,MAAM,CAAC,eAAe,EAAE;AACxB,oBAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,YAAY,GAAwB;AACtC,gBAAA,IAAI,EAAyC;AACzC,oBAAA,MAAM,EAAE;AACJ,wBAAA,UAAU,EAAE,MAAM;AAClB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,gBAAgB,EAAE,sBAAsB;AAC3C,qBAAA;oBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC1B,iBAAA;AACD,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;aACzC,CAAC;AAEF,YAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;AAClE,gBAAA,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,gBAAA,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC;AACtC,aAAA;AAED,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AACzE,YAAA,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;AAE3C,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAS,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AACH,YAAA,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACzC,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;AAAM,aAAA;;AAEH,YAAA,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,aAAa,CAAC;AACvD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAgB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAEpH,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,aAAA;YAED,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC3B,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,kBAAkB,CAAO,MAA+B,EAAE,QAA+B,EAAE,YAAqC,EAAA;AACnI,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,UAAU,CAA4E,0EAAA,CAAA,CAAC,CAAC;AAC5H,SAAA;QACD,IAAI,QAAQ,IAAI,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;YAC9E,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,+BAA+B,EAAE,CAAC;YAChF,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,+BAA+B,EAAE,CAAC;YACjF,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,EAAE;AACvF,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,CAA+D,4DAAA,EAAA,iBAAiB,CAAC,gBAAgB,mCAAmC,QAAQ,CAAC,gBAAgB,CAAA,0BAAA,CAA4B,CAC5L,CAAC;AACL,aAAA;YACD,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,EAAE;AACzF,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,CAA+D,4DAAA,EAAA,kBAAkB,CAAC,gBAAgB,mCAAmC,QAAQ,CAAC,gBAAgB,CAAA,0BAAA,CAA4B,CAC7L,CAAC;AACL,aAAA;AACJ,SAAA;AACD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAC1G,QAAA,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,aAAa,CAAC;AACvD,QAAA,QAAQ,CAAC,4BAA4B,GAAG,YAAY,CAAC;AAErD,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED;;;AAGG;AACI,IAAA,eAAe,CAAO,QAA+B,EAAA;QACxD,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;AACV,SAAA;AACD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;YAC3E,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACrC;AAED;;;AAGG;AACI,IAAA,qBAAqB,CAAO,QAA+B,EAAA;QAC9D,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;AACV,SAAA;AACD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;YAChD,MAAM,IAAI,KAAK,CAAC,CAAA,gBAAA,EAAmB,QAAQ,CAAC,gBAAgB,CAAiF,+EAAA,CAAA,CAAC,CAAC;AAClJ,SAAA;QACD,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;AAC3E,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrC,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,oBAAoB,CAAO,QAA+B,EAAA;QAC7D,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;AACV,SAAA;AACD,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;YAC3E,MAAM,IAAI,KAAK,CAAC,CAAA,gBAAA,EAAmB,QAAQ,CAAC,gBAAgB,CAAoF,kFAAA,CAAA,CAAC,CAAC;AACrJ,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACrC;AAED;;;;;AAKG;AACI,IAAA,YAAY,CAA4B,QAAuC,EAAE,SAAS,GAAG,KAAK,EAAA;AACrG,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC9C,QAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,uBAAuB,CAAC,kBAAkB,EAAE;YAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAkB,eAAA,EAAA,QAAQ,CAAC,gBAAgB,CAAmB,iBAAA,CAAA,CAAC,CAAC;YAClF,OAAO;AACV,SAAA;AAED,QAAA,IAAI,UAAmC,CAAC;AACxC,QAAA,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;AACxC,YAAA,UAAU,GAAG,uBAAuB,CAAC,kBAAkB,CAAC;AAC3D,SAAA;AAAM,aAAA,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,WAAW,EAAE;AAC9C,YAAA,UAAU,GAAG,uBAAuB,CAAC,gBAAgB,CAAC;AACzD,SAAA;AAAM,aAAA,IAAI,SAAS,EAAE;AAClB,YAAA,UAAU,GAAG,uBAAuB,CAAC,2BAA2B,CAAC;AACpE,SAAA;AAAM,aAAA;AACH,YAAA,UAAU,GAAG,uBAAuB,CAAC,oBAAoB,CAAC;AAC7D,SAAA;QAED,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;YAChD,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,mBAAmB,KAAK,WAAW,CAAC;AACtE,YAAA,MAAM,eAAe,GAAI,QAAQ,CAAC,MAA2C,CAAC,eAAe,CAAC;AAE9F,YAAA,IAAI,UAAU,KAAK,uBAAuB,CAAC,kBAAkB,EAAE;AAC3D,gBAAA,IAAI,CAAC,SAAS,IAAI,eAAe,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,eAAe,KAAK,KAAK,CAAC,EAAE;AACtF,oBAAA,UAAU,GAAG,uBAAuB,CAAC,4BAA4B,CAAC;AACrE,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,SAAS,IAAI,UAAU,KAAK,uBAAuB,CAAC,4BAA4B,EAAE;;gBAElF,QAAQ,CAAC,mBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxD,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,aAAa,EAAE,iCAAiC,EAAE,CAAC;;AAGxD,QAAA,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC;AAE5B,QAAA,IAAI,UAAU,KAAK,uBAAuB,CAAC,4BAA4B,EAAE;;AAErE,YAAA,MAAM,iBAAiB,GAAI,QAAQ,CAAC,MAA2C,CAAC,eAAe;kBACzF,uBAAuB,CAAC,aAAa;AACvC,kBAAE,uBAAuB,CAAC,QAAQ,CAAC;;;AAGvC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAgB,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC5H,YAAA,WAAW,CAAC,gBAAgB,GAAG,QAAQ,CAAC;;AAExC,YAAA,WAAW,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;AAC/D,YAAA,WAAW,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AAC3D,YAAA,WAAW,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;AAEjE,YAAA,IAAI,CAAC,aAAa,EAAE,+BAA+B,CAAC,WAAW,CAAC,CAAC;AACjE,YAAA,QAAQ,CAAC,oBAAoB,GAAG,WAAW,CAAC;AAC/C,SAAA;;QAGD,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,CAAC,gBAAgB,CAAA,+BAAA,EAAkC,QAAQ,CAAC,kBAAkB,CAAC,gBAAgB,CAAA,CAAE,CAAC,CAAC;YACnJ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AAC7D,SAAA;QACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,CAAC,gBAAgB,CAAA,gCAAA,EAAmC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAA,CAAE,CAAC,CAAC;YACrJ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAC9D,SAAA;KACJ;AAED;;;;;;;;AAQG;AACI,IAAA,aAAa,CAA4B,MAAkC,EAAE,UAAkC,EAAE,UAAU,GAAG,KAAK,EAAA;AACtI,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAgB,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACxF,QAAA,QAAQ,CAAC,iBAAiB,GAAG,UAAU,CAAC;AACxC,QAAA,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,YAAY,CAAC;AACtD,QAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;AAClE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAA,MAAM,SAAS,GAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjE,YAAA,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AACtC,YAAA,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,aAAA;YAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAGtI,YAAA,IAAI,CAAC,aAAa,EAAE,+BAA+B,CAAC,QAAQ,CAAC,CAAC;AAE9D,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,EAAE,EAAC,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC;AAC1H,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,OAAO,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC;AAE5E,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAElD,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACjC,gBAAA,IAAI,OAAO,EAAE;AACT,oBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,0BAA0B,CAA4B,QAAuC,EAAA;QAChG,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;YAC3E,OAAO;AACV,SAAA;AAED,QAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAgB,QAAQ,CAAC,CAAC;AAE7D,QAAA,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,yBAAyB,CAAC;AAEnE,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,CAAC;QACvH,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACjC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrB,gBAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAA;YAED,MAAM,kBAAkB,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,YAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvE,YAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAExD,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;AAChD,YAAA,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,aAAA;YACD,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,WAAW,GAAG,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9G,YAAA,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AACnC,gBAAA,WAAW,GAAG,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,UAAU,EAAE,CAAC;AAChD,aAAA;;YAGD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;iBACvC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,iBAAA,SAAS,CAAC;AACP,gBAAA,IAAI,EAAE,OAAO,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,4BAA4B,CAAC;AACnF,gBAAA,KAAK,EAAE,OAAO,QAAQ,CAAC,KAAK,GAAG,uBAAuB,CAAC,gCAAgC,CAAC;AAC3F,aAAA,CAAC,CAAC;AACV,SAAA;KACJ;AAED;;;;;;AAMG;IACI,gBAAgB,CAAC,KAAW,EAAE,OAAiC,EAAA;AAClE,QAAA,IAAI,QAAmB,CAAC;AACxB,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,OAAO,GAA0B;AACnC,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;aAC5B,CAAC;YACF,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACpC,gBAAA,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AAC7B,aAAA;AAED,YAAA,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7F,SAAA;aAAM,IAAI,KAAK,YAAY,iBAAiB,EAAE;;AAE3C,YAAA,QAAQ,GAAG,IAAI,YAAY,CAAC,CAA+B,6BAAA,CAAA,EAAE,KAAK,EAAE;AAChE,gBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AAC5B,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;YAEH,QAAQ,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE;AAC/D,gBAAA,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,cAAc;AACnC,gBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AACzB,gBAAA,KAAK,EAAE,KAAK;AACf,aAAA,CAAC,CAAC;AACN,SAAA;;AAGD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KACvD;AAED;;;;;;;;AAQG;IACO,mBAAmB,CACzB,QAAmD,EACnD,MAA4C,EAC5C,UAAmC,EACnC,qBAA+C,EAC/C,mCAAmC,GAAG,KAAK,EAAA;AAE3C,QAAA,IAAI,CAAC,mCAAmC,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,IAAI,UAAU,EAAE;AACtI,YAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,+BAA+B,EAAE,CAAC;AACpE,SAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACX,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,IAAI,gBAAgB,CAAC,gEAAgE,EAAE,EAAC,IAAI,EAAE,4BAA4B,EAAC,CAAC,CAAC;AACtI,aAAA;;YAED,QAAQ,GAAG,IAAI,cAAc,CAAgB,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC/E,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAK,QAAS,CAAC,gBAAgB,CAAC,EAAE;YACvH,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAClD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAE5C,gBAAA,IAAI,YAAa,CAAC,KAAK,GAAG,uBAAuB,CAAC,kBAAkB,EAAE;oBAClE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6D,0DAAA,EAAA,QAAQ,CAAC,gBAAgB,CAAkB,gBAAA,CAAA,CAAC,CAAC;oBAC5H,YAAa,CAAC,WAAW,EAAE,CAAC;AAC/B,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AACJ;;ACv6BK,MAAO,4BAA6B,SAAQ,wBAAwB,CAAA;AAD1E,IAAA,WAAA,GAAA;;QAEqB,IAAU,CAAA,UAAA,GAA+B,EAAE,CAAC;AAKhE,KAAA;AAHG,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;8GALQ,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;;;ACEL,MAAO,iCAAkC,SAAQ,wBAAwB,CAAA;AAD/E,IAAA,WAAA,GAAA;;AAEqB,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAIrF,KAAA;AAHG,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;KACnD;8GAJQ,iCAAiC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjC,iCAAiC,EAAA,CAAA,CAAA,EAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;;;SCDK,qBAAqB,GAAA;IACjC,OAAO;AACH,QAAA,OAAO,EAAE,wBAAwB;AACjC,QAAA,QAAQ,EAAE,iCAAiC;KAC9C,CAAC;AACN;;MC4Ba,kBAAkB,CAAA;IAuD3B,WACY,CAAA,YAA4B,EAC5B,SAA2B,EAC3B,aAAsC,EACtC,cAAwC,EAC5B,aAAkD,EAAA;QAJ9D,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAgB;QAC5B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA0B;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqC;QA3DpD,IAAS,CAAA,SAAA,GAAG,mBAAmB,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAWkB,QAAA,IAAA,CAAA,aAAa,GAAwB,EAAE,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,YAAY,GAAwB,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9F,IAAa,CAAA,aAAA,GAAgB,EAAE,CAAC;AAEvB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAiC,CAAC;AAIxF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AAElE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;AAElD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;AAElD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAgB,CAAC,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,aAAa,CAAgB,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAG3E,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAElB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAKpC,IAAW,CAAA,WAAA,GAAG,kBAAkB,CAAC;QACjC,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;QAC3B,IAAsB,CAAA,sBAAA,GAAmB,EAAE,CAAC;QAC7C,IAAmC,CAAA,mCAAA,GAAG,KAAK,CAAC;AAW/C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;IAEM,QAAQ,GAAA;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC;AAEjD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AACpD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAqB,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,MAAM,YAAY,wBAAwB,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;AACjC,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,SAAS,CAAC,oBAAoB,EAAE;YACjE,IAAI,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;AAC/D,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzF,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC1C,SAAA;QACD,MAAM,0BAA0B,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,KAAI;YAC1H,IAAI,CAAC,YAAY,GAAG,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC;AACnD,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEpD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;QAGxE,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;KAC3I;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IACI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;YACvC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;YACzC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;AAC7C,aAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC,EACrF;YACE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,SAAA;KACJ;IAED,WAAW,GAAA;QACP,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAC7D;AAEM,IAAA,aAAa,CAAC,MAA2C,EAAE,UAAmC,EAAE,KAAa,EAAA;QAChH,IAAI,MAAM,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3D,OAAO;AACV,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAE1D,UAAU,KAAK,IAAI,gBAAgB,CAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;aAC5D,cAAc,CAAC,UAAU,CAAC;AAC1B,aAAA,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;AACvC,aAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;aACrB,mBAAmB,CAAC,IAAI,CAAC;AACzB,aAAA,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;AACrC,aAAA,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAE3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAgB,MAAM,EAAE,UAAU,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE;;;YAGV,OAAO;AACV,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,MAAK;AACP,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAC1B,oBAAA,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAAC,CAAC,CAAC;AAC3D,iBAAA;aACJ;AACJ,SAAA,CAAC,CACL,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YACtB,IAAI,EAAE,MAAK;AACP,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1C;AACJ,SAAA,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/B,YAAA,QAAQ,CAAC;gBACL,KAAK,uBAAuB,CAAC,QAAQ;AACjC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM;gBACV,KAAK,uBAAuB,CAAC,MAAM,CAAC;gBACpC,KAAK,uBAAuB,CAAC,QAAQ;AACjC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM;gBACV,KAAK,uBAAuB,CAAC,eAAe;AACxC,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC1E,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,qBAAA;oBACD,MAAM;gBACV,KAAK,uBAAuB,CAAC,aAAa;AACtC,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC1E,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,qBAAA;oBACD,MAAM;gBACV,KAAK,uBAAuB,CAAC,gBAAgB;AACzC,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3E,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,qBAAA;oBACD,MAAM;gBACV,KAAK,uBAAuB,CAAC,cAAc;AACvC,oBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3E,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,qBAAA;oBACD,MAAM;AACb,aAAA;SACJ,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACpC;AAEM,IAAA,qBAAqB,CAAC,QAAgC,EAAA;QACzD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5H,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KAChD;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QAEjC,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC5C,MAAM,QAAQ,GAAG,EAAc,CAAC;YAEhC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;AACnD,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC5B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;gBACpH,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,KAAK,GAAG,GAAI,CAAC;AACvC,aAAA,CAAC,CACL,CAAC;AACF,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC5B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;gBAC7G,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,OAAO,GAAG,GAAI,CAAC;AACzC,aAAA,CAAC,CACL,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAE1H,IAAI,SAAS,CAAC,iBAAiB,EAAE;AAC7B,gBAAA,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpD,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAE7G,YAAA,IAAI,OAAO,SAAS,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACnD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC5B,YAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,oBAAA,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;AAC1C,iBAAA,CAAC,CACL,CAAC;AACL,aAAA;YAED,MAAM,qBAAqB,GAA0B,EAAE,CAAC;AACxD,YAAA,IAAI,OAAO,SAAS,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACnD,gBAAA,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF,aAAA;AACD,YAAA,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,WAAW,EAAE;gBAC9C,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAoD,CAAC,CAAC,CAAC;AAChK,aAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAqB,CAAC;AAC5D,YAAA,IAAI,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;gBAC9H,MAAM,gBAAgB,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBACrF,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAoD,CAAC,CAAC,CAAC;AAC3J,aAAA;AAED,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC5B,aAAa,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,YAAY,IAAG;AAC1D,gBAAA,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;aACzD,CAAC,CACL,CAAC;AAEF,YAAA,QAAQ,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAEvD,YAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,oBAAoB,GAAA;QACxB,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAE1H,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC/B,YAAA,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpD,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE/G,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACrD,YAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,YAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,gBAAA,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/C,aAAA,CAAC,CAAC;AACN,SAAA;AACD,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW,EAAE;AAChG,YAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE,CAAC;YAC5C,MAAM,WAAW,GACb,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB;AAC5C,kBAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;kBAClE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC;YAC5D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAoD,CAAC,CAAC,SAAS,CAAC;AAC1J,gBAAA,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,aAAA,CAAC,CAAC;AACN,SAAA;QACD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACrD,YAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,YAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,gBAAA,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/C,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACjJ,gBAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC;AAChK,gBAAA,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC9C;8GA9TQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,aAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAaW,iBAAiB,CAAA,EAAA,YAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAClB,iBAAiB,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAhB3C,CAAC,qBAAqB,EAAE,CAAC,ECpCxC,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,isHA0EA,EDvCc,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG/H,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,YAAY,EAGL,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAC9H,SAAA,EAAA,CAAC,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,isHAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;0BA8D/B,QAAQ;yCA3DS,SAAS,EAAA,CAAA;sBAA9B,WAAW;uBAAC,OAAO,CAAA;gBACM,YAAY,EAAA,CAAA;sBAArC,WAAW;uBAAC,WAAW,CAAA;gBAGQ,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACP,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,MAAM,EAAA,CAAA;sBAArB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBACU,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACiB,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,OAAO,CAAA;gBACmD,aAAa,EAAA,CAAA;sBAA7E,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAC,CAAA;gBACQ,YAAY,EAAA,CAAA;sBAA3E,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAC,CAAA;gBACvC,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBAEmB,kBAAkB,EAAA,CAAA;sBAA1C,MAAM;uBAAC,QAAQ,CAAA;gBAEoB,cAAc,EAAA,CAAA;sBAAjD,SAAS;uBAAC,gBAAgB,CAAA;;;MEtClB,uBAAuB,CAAA;AAUhC,IAAA,WAAA,CACY,MAAc,EACd,KAAqB,EACrB,cAAwC,EAC5B,aAAyC,EAAA;QAHrD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAc,CAAA,cAAA,GAAd,cAAc,CAA0B;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAA4B;AAb1D,QAAA,IAAA,CAAA,KAAK,GAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvD,IAAO,CAAA,OAAA,GAAqC,EAAE,CAAC;QAK/C,IAAa,CAAA,aAAA,GAAwB,EAAE,CAAC;QACxC,IAA4B,CAAA,4BAAA,GAAG,KAAK,CAAC;KAOzC;IAEG,QAAQ,GAAA;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/H,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACvD,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnE,aAAA;SACJ,CAAC,CACL,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;YAC7B,IAAI,CAAC,YAAY,eAAe,EAAE;AAC9B,gBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AAC5C,aAAA;AAAM,iBAAA,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,YAAY,iBAAiB,EAAE;AACtI,gBAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC7C,aAAA;SACJ,CAAC,CACL,CAAC;KACL;IAEM,WAAW,GAAA;AACd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KACpD;AAEO,IAAA,cAAc,CAAC,MAAiC,EAAE,CAAS,EAAE,EAAU,EAAA;AAC3E,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAe,EAAE,CAAC;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;YACjB,IAAI,GAAG,KAAK,QAAQ,EAAE;gBAClB,SAAS;AACZ,aAAA;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE;YAClB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,CACtB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,gBAAgB,CAAI,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACzJ,CAAC;KACL;IAEO,eAAe,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACrD,OAAO;AACV,SAAA;AACD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;KAC5D;AAEO,IAAA,kBAAkB,CAAC,MAAc,EAAA;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC5C,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;AACtC,YAAA,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,aAAA;YACD,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE;gBACjD,SAAS;AACZ,aAAA;YACD,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBACtC,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpD,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;wBACpB,OAAO,GAAG,KAAK,CAAC;wBAChB,MAAM;AACT,qBAAA;AACJ,iBAAA;qBAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBACrD,OAAO,GAAG,KAAK,CAAC;oBAChB,MAAM;AACT,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,qBAAqB,CAAC,QAA8B,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,EAAE;YAChF,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;AAChE,gBAAA,QAAQ,CAAC;oBACL,KAAK,uBAAuB,CAAC,4BAA4B;AACrD,wBAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;wBAClC,MAAM;oBACV,KAAK,uBAAuB,CAAC,kBAAkB;AAC3C,wBAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;wBAClC,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,MAAM;oBACV,KAAK,uBAAuB,CAAC,oBAAoB;wBAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,MAAM;AACb,iBAAA;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,IAAG;AAChG,gBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE;YACpG,OAAO,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC;AAC/F,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACnB;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,gCAAgC,EAAE,WAAW,EAAE,CAAC;KACxD;8GA7IQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,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,+DAFrB,CAAC,qBAAqB,EAAE,CAAC,0BCjBxC,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDmBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;0BAgB/B,QAAQ;;;MEUJ,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC9C,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAC5E,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAIhD,IAAa,CAAA,aAAA,GAAkC,KAAK,CAAC;;QAMrD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;;AAGV,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAA+B,CAAC;AAM/F,QAAA,IAAA,CAAA,IAAI,GAAc,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,WAAW,GAAsB;AACpC,YAAA,SAAS,EAAE;AACP,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,QAAQ,EAAE,KAAK;AAClB,aAAA;SACJ,CAAC;QAEK,IAAS,CAAA,SAAA,GAAQ,EAAE,CAAC;QACpB,IAAY,CAAA,YAAA,GAAc,EAAE,CAAC;QAI5B,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAuP9C,KAAA;IArPU,QAAQ,GAAA;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,YAAY,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7G,IAAI,IAAI,CAAC,UAAU,EAAE;;AAEjB,YAAA,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3F,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGvB,YAAA,IACI,IAAI,CAAC,UAAU,CAAC,WAAW;iBAC1B,IAAI,CAAC,UAAU,CAAC,mBAAmB,KAAK,uBAAuB,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,KAAK,uBAAuB,CAAC,IAAI,CAAC,EAC/I;AACE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,gBAAgB,CAAC,wBAAwB,CACrC,IAAI,CAAC,gBAAgB,EACrB,mDAAmD,EACnD,yDAAyD,EACzD,EAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAC,CAChE,CACJ,CAAC;AACL,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,IAAI,EAAE;YAC9F,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACjF,YAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE;AACvF,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,SAAS,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE;AACvC,aAAA,CAAC,CAAC;SACN,CAAC,CACL,CAAC;KACL;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE;YACrE,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGjD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,IAAI,EAAE;YAC9F,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;;AAEH,QAAA,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;KACrC;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;KACtD;;AAGM,IAAA,QAAQ,CAAC,KAAY,EAAA;QACxB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAEvB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE;AAClF,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,cAAc;AAC9B,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;gBACrE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;oBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACzD,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAI,GAAG,CAAC,KAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC;AACrI,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,cAAc,CAAC,CAAC;AAC3D,YAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,EAAE,iCAAiC,EAAE,mCAAmC,CAAC,CAAC,CAAC;AAEpK,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE;AAClF,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,WAAW,EAAE,cAAc;AAC9B,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,YAAY,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAC,sBAAsB,EAAE,IAAI,EAAC,CAAC,CAAC;QAE/F,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACpC,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACvB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,UAAU,GAAG,SAAS,CAAC;AAC3B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3C,oBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAA,IAAI,OAAO,UAAU,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE;AAChD,wBAAA,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;AACnC,qBAAA;AAED,oBAAA,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAC3C,iBAAA;AAED,gBAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACvC,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,SAAS,CAAC;KACpB;AAEM,IAAA,cAAc,CAAC,IAAQ,EAAA;AAC1B,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC5D,SAAA;AAED,QAAA,MAAM,SAAS,GAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,sBAAsB,EAAE,IAAI,EAAC,CAAyB,IAAI,EAAE,CAAC;QAE3G,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACpC,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;gBACtB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,aAAa,GAAG,SAAS,CAAC;AAE9B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,wBAAA,aAAa,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,QAAwB,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9F,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE;AACnD,4BAAA,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;AACtC,yBAAA;AAED,wBAAA,aAAa,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;AACjD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,UAAU,EAAE;;YAEnD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;AAEM,IAAA,YAAY,CAAC,GAAW,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACxD;IAEM,iBAAiB,CAAC,GAAW,EAAE,KAAU,EAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAoC,iCAAA,EAAA,GAAG,CAAiB,eAAA,CAAA,CAAC,CAAC;AAC3E,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IAEM,mBAAmB,CAAC,GAAW,EAAE,KAAU,EAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAoC,iCAAA,EAAA,GAAG,CAAiB,eAAA,CAAA,CAAC,CAAC;AAC3E,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IAEM,mBAAmB,CAAC,GAAW,EAAE,KAAW,EAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAoC,iCAAA,EAAA,GAAG,CAAiB,eAAA,CAAA,CAAC,CAAC;AAC3E,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IAEO,aAAa,CAAC,OAAwB,EAAE,OAAiB,EAAA;AAC7D,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,OAAO,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,SAAA;QACD,IAAI,WAAW,GAA2B,IAAI,CAAC;QAC/C,IAAI,OAAO,YAAY,SAAS,EAAE;YAC9B,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;aAAM,IAAI,OAAO,YAAY,SAAS,EAAE;AACrC,YAAA,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACb,gBAAA,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7D;IAEO,iBAAiB,CAAC,SAA8B,EAAE,EAAA;AACtD,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YACxB,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACjC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3D,aAAA;AAAM,iBAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC1C,gBAAA,YAAY,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AAC5C,aAAA;AACD,YAAA,IAAI,YAAY,EAAE;AACd,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,eAAe,GAAA;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,mBAAmB,KAAK,uBAAuB,CAAC,OAAO,CAAC;QACzJ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC;KACpD;AAED;;;AAGG;IACK,mBAAmB,GAAA;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,mBAAmB,KAAK,uBAAuB,CAAC,GAAG,EAAE;YACtE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC;AACzC,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE,mBAAmB,KAAK,uBAAuB,CAAC,IAAI,EAAE;YAC9E,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1C,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;8GA3RQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,EAoBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,oBAAoB,EC/DzC,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+gBAYA,ED4Bc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG3E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,iBAAiB,EAAA,OAAA,EAElB,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,EACpE,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+gBAAA,EAAA,CAAA;8BAS/B,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBAGU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBAGU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBAGuB,sBAAsB,EAAA,CAAA;sBAAlD,MAAM;uBAAC,YAAY,CAAA;gBAG0B,SAAS,EAAA,CAAA;sBAAtD,eAAe;uBAAC,oBAAoB,CAAA;gBACH,sBAAsB,EAAA,CAAA;sBAAvD,SAAS;uBAAC,cAAc,CAAA;;;AEnDvB,MAAO,qCAAsC,SAAQ,YAAY,CAAA;IAC5D,eAAe,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAChH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,uBAAuB,CAAC,KAAwB,EAAA;AACnD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;YAChF,MAAM,MAAM,GAAyB,EAAE,CAAC;AACxC,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACrD,gBAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;oBAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvC,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,EAAC,GAAG,KAAK,EAAE,WAAW,EAAE,EAAC,GAAG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAC,EAAsB,CAAC;AACvF,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;8GArBQ,qCAAqC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,ECblD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yfAWA,EDDc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oJAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG9B,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAPjD,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,mCAAmC,EAAA,OAAA,EAEpC,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yfAAA,EAAA,CAAA;;;AEK7C,MAAO,8BAA+B,SAAQ,YAAY,CAAA;IAGrD,QAAQ,GAAA;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,CAA+B,CAAC;QAC5E,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,WAAW,EAAE;YACnD,IAAI,CAAC,+BAA+B,EAAE,CAAC;AAC1C,SAAA;KACJ;IAEO,+BAA+B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,QAAQ,KAAK,IAAI,EAAE;YAClH,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,YAAY,CAAC,4CAA4C,CAAC,CAAC;AACvF,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,gCAAgC,CAAC;AAC5D,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AAChD,SAAA;KACJ;8GAjBQ,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EChB3C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,i1BAqBA,EDRc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,0BAA0B,EAE3B,OAAA,EAAA,CAAC,eAAe,EAAE,YAAY,EAAE,kBAAkB,CAAC,EAC3C,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i1BAAA,EAAA,CAAA;;;AEqBtC,MAAA,+BAA+B,GAAqB;AAC7D,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;EACb;MAUW,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;AASqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACrE,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACzE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAE1C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAiC,CAAC;QAC/D,IAAoB,CAAA,oBAAA,GAAG,KAAK,EAAU,CAAC;QACvC,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAqB,SAAS,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAC,CAAC,CAAC;QACjG,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAqB,SAAS,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAC,CAAC,CAAC;AACjG,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAG,KAAK,EAAU,CAAC;QAC9B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAU,CAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA4B,SAAS,CAAC,CAAC;AAElC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEpE,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QAE3C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAkB,CAAA,kBAAA,GAAwB,IAAI,CAAC;QAC/C,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,GAAG,CAAC;;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAQ,MAAK,GAAG,CAAC;AAE7B,QAAA,IAAA,CAAA,uBAAuB,GAAgB,IAAI,WAAW,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAa,EAAE,CAAC,CAAC;QACpC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAInB,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;;AAE9B,gBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACjC,oBAAA,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;AACpD,iBAAA;qBAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AAC7E,oBAAA,OAAO,YAAY,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,wBAAwB,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,EAAE;AACrJ,wBAAA,IAAI,EAAE,+BAA+B;AACxC,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC3C,SAAC,CAAC,CAAC;AACI,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;;gBAE9B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACtE,oBAAA,OAAO,OAAO,CAAC;AAClB,iBAAA;AAAM,qBAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACzC,oBAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,wBAAwB,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,EAAE;AACrJ,wBAAA,IAAI,EAAE,+BAA+B;AACxC,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC3C,SAAC,CAAC,CAAC;AA+UN,KAAA;IA7UG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC9F,YAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClC,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;KAC1C;AAED,IAAA,QAAQ,CAAC,KAAiC,EAAE,MAAM,GAAG,KAAK,EAAA;AACtD,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;AACvC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3C,QAAA,MAAM,MAAM,GAAmB;AAC3B,YAAA,KAAK,EAAE,EAAE;SACZ,CAAC;AACF,QAAA,IAAI,oBAAoB,EAAE;YACtB,MAAM,CAAC,IAAI,GAAG,CAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAC,CAAC,CAAC;AACpD,SAAA;QACD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,EAAE;YACnD,MAAM,CAAC,OAAO,GAAG;gBACb,CAAC,oBAAoB,GAAG;AACpB,oBAAA,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,eAAe,CAAC,UAAU;AACxC,iBAAA;aACJ,CAAC;AACL,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC/B,IAAI,CAAC,uBAAuB,GAAG,IAAI,aAAa,CAAM,CAAC,CAAC,CAAC;AAC5D,aAAA;AACD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC;gBAC9D,IAAI,EAAE,KAAK,IAAG;AACV,oBAAA,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,oBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC3C,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;wBAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,qBAAA;iBACJ;gBACD,KAAK,EAAE,GAAG,IAAG;AACT,oBAAA,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAExC,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,+BAA+B,EAAE;AAChF,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,MAAM,EAAE,MAAM;AACjB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACnE;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;aAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACrC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AACpF,gBAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChD,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,eAAe,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;AAEtD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAClD,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;;AAE/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,KAA8B,EAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC;AACpC,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,QAAQ,CAAC,KAAU,EAAE,QAAQ,GAAG,KAAK,EAAA;QACzC,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACzD,IAAI,oBAAoB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC5D,YAAA,WAAW,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;AACvC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtD,SAAA;KACJ;AAEO,IAAA,SAAS,CAAC,KAAyB,EAAA;AACvC,QAAA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACrB,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,YAAA,KAAK,KAAK;AACN,gBAAA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;AACpB,SAAA;KACJ;;AAGD,IAAA,OAAO,CAAC,KAAY,EAAA;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC;AACpC,SAAA;KACJ;AAED;;AAEG;;AAEH,IAAA,MAAM,CAAC,KAAY,EAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;KACpD;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC5B;AAED;;AAEG;IACH,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;IAED,OAAO,GAAA;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;AAEO,IAAA,oBAAoB,CAAC,KAAkB,EAAA;QAC3C,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC5C,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;gBAC9B,IAAI,oBAAoB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1D,oBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrC,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACH,IAAI,oBAAoB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC5D,gBAAA,MAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7C;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;AACzC,SAAA;KACJ;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAE/B,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjE,IAAI,wBAAwB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACxE,MAAM,WAAW,GAAQ,EAAC,CAAC,wBAAwB,GAAG,KAAK,EAAC,CAAC;AAC7D,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACzD,YAAA,IAAI,oBAAoB,EAAE;AACtB,gBAAA,WAAW,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC;AAC7C,aAAA;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,KAAK,CAAC,CAAC;AACxF,YAAA,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AAC1E,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,SAAS,CAAC;AACX,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,OAAO,EAAE;wBACL,CAAC,wBAAwB,GAAG;AACxB,4BAAA,KAAK,EAAE,KAAK;4BACZ,SAAS,EAAE,eAAe,CAAC,MAAM;AACpC,yBAAA;AACJ,qBAAA;iBACJ,CAAC;qBACG,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,qBAAA,SAAS,CAAC;oBACP,IAAI,EAAE,KAAK,IAAG;wBACV,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,wBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;4BACpB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChD,OAAO,GAAG,IAAI,CAAC;AAClB,yBAAA;AAAM,6BAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEzB,4BAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,KAAK,CAAC,CAAC;AAC3E,4BAAA,IAAI,WAAW,EAAE;AACb,gCAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;gCAChD,OAAO,GAAG,IAAI,CAAC;AAClB,6BAAA;AACJ,yBAAA;wBAED,IAAI,CAAC,OAAO,EAAE;AACV,4BAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;AACnD,yBAAA;qBACJ;oBACD,KAAK,EAAE,MAAK;AACR,wBAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;qBACnD;AACJ,iBAAA,CAAC,CAAC;AACV,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC7C,SAAA;KACJ;IAEO,uBAAuB,GAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAM,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AAE9G,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB;AAEO,IAAA,6BAA6B,CAAC,KAAU,EAAA;AAC5C,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AACvC,YAAA,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,SAAA;AACD,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;KACpE;IAEO,SAAS,CAAC,MAAsB,EAAE,KAAc,EAAA;QACpD,OAAO,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CACzF,SAAS,CAAC,KAAK,IAAG;AACd,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrD,gBAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,oBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjB,iBAAA;gBAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACxH,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,aAAA;SACJ,CAAC,CACL,CAAC;KACL;AAEO,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC,GAAG,CACZ,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,wBAAwB,EAAE,GAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAkB,CAAY,GAAG,IAAI,CAAW,CAC7J,CAAC;KACL;IAEO,iBAAiB,CAAC,KAAiB,EAAE,OAAY,EAAA;AACrD,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;YACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;gBAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAkB,CAAW,CAAC;AAC9E,gBAAA,MAAM,WAAW,GAAuB,OAAO,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAA,IAAI,WAAW,EAAE;AACb,oBAAA,OAAO,EAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAG,GAAG,WAAW,EAAC,CAAC;AACjE,iBAAA;AACD,gBAAA,OAAO,EAAC,GAAG,IAAI,EAAC,CAAC;AACpB,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClC,OAAO;oBACH,CAAC,IAAI,CAAC,oBAAoB,EAAG,GAAG,WAAW,IAAI,IAAI;AACnD,oBAAA,CAAC,IAAI,CAAC,oBAAoB,EAAG,GAAG,IAAI;iBACvC,CAAC;AACL,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEO,uBAAuB,CAAC,KAAiB,EAAE,KAAc,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACrB,MAAM,cAAc,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAClD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;gBACnC,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,gBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACzD,gBAAA,IAAI,oBAAoB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAA,SAAS,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;AACvC,iBAAA;gBACD,IAAI,SAAS,IAAI,IAAI,EAAE;oBACnB,OAAO,cAAc,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC3D,iBAAA;AACD,gBAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AAC/B,oBAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;AACpC,iBAAA;gBACD,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAC9D,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACrC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACrC,SAAA;KACJ;8GArZQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAJtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,CAAC,+BAA+B,CAAC,EA6BP,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,EC1ErD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m3BAyBA,EDqBc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,IAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,6TAAa,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGpE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,kBAAkB,EAAA,SAAA,EAEjB,CAAC,+BAA+B,CAAC,WACnC,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,CAAC,EAC7D,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m3BAAA,EAAA,CAAA;8BAyBjB,uBAAuB,EAAA,CAAA;sBAApD,MAAM;uBAAC,aAAa,CAAA;;;AEvCZ,MAAA,2BAA2B,GAAqB;AACzD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,IAAA,KAAK,EAAE,IAAI;EACb;MAUW,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;QASqB,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrC,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAE1E,QAAA,IAAA,CAAA,mBAAmB,GAAgB,IAAI,WAAW,EAAE,CAAC;QAE9D,IAAY,CAAA,YAAA,GAAG,KAAK,EAAiC,CAAC;QACtD,IAAoB,CAAA,oBAAA,GAAG,KAAK,EAAU,CAAC;QACvC,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAqB,SAAS,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAC,CAAC,CAAC;AACjG,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAC9C,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAqB,SAAS,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAC,CAAC,CAAC;QACjG,IAAuB,CAAA,uBAAA,GAAG,KAAK,EAAU,CAAC;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QACpC,IAAW,CAAA,WAAA,GAAG,KAAK,EAAU,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QACxC,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;QAC5B,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAU,CAAC;AACpC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAE1C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAED,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEpE,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEnC,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;;AAIhC,QAAA,IAAA,CAAA,WAAW,GAAQ,MAAK,GAAG,CAAC;AAE7B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAa,EAAE,CAAC,CAAC;QAC9B,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;AAE9B,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;;AAE9B,gBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACjC,oBAAA,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC;AACpD,iBAAA;qBAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AAC7E,oBAAA,OAAO,YAAY,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,wBAAwB,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,EAAE;AACrJ,wBAAA,IAAI,EAAE,2BAA2B;AACpC,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC3C,SAAC,CAAC,CAAC;AACI,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;;gBAE9B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACtE,oBAAA,OAAO,OAAO,CAAC;AAClB,iBAAA;AAAM,qBAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACzC,oBAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,wBAAwB,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,EAAE;AACrJ,wBAAA,IAAI,EAAE,2BAA2B;AACpC,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC3C,SAAC,CAAC,CAAC;AAyIN,KAAA;IAvIG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC1F,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC3B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAChC,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACzC,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAM,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;AAE9G,YAAA,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnE,iBAAA,IAAI,CACD,SAAS,CAAC,KAAK,IAAG;AACd,gBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,oBAAA,MAAM,eAAe,GAAa,KAAK,CAAC,GAAG,CACvC,IAAI,KACC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACxD,0BAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAkB,CAAY;AACnE,0BAAE,IAAI,CAAW,CAC5B,CAAC;AAEF,oBAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,wBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjB,qBAAA;oBAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,YAAY,IACZ,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;wBACb,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;4BAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAkB,CAAW,CAAC;AAC9E,4BAAA,MAAM,WAAW,GAAuB,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5D,4BAAA,IAAI,WAAW,EAAE;AACb,gCAAA,OAAO,EAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAG,GAAG,WAAW,EAAC,CAAC;AACjE,6BAAA;AACD,4BAAA,OAAO,EAAC,GAAG,IAAI,EAAC,CAAC;AACpB,yBAAA;AAAM,6BAAA;AACH,4BAAA,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;4BACvC,OAAO;gCACH,CAAC,IAAI,CAAC,oBAAoB,EAAG,GAAG,WAAW,IAAI,IAAI;AACnD,gCAAA,CAAC,IAAI,CAAC,oBAAoB,EAAG,GAAG,IAAI;6BACvC,CAAC;AACL,yBAAA;qBACJ,CAAC,CACL,CACJ,CAAC;AACL,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACpB,iBAAA;aACJ,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACtC;AACA,iBAAA,SAAS,CAAC;gBACP,IAAI,EAAE,GAAG,IAAG;AACR,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAExB,oBAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE;AAC1F,wBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBACzD,MAAM,KAAK,GAAG,oBAAoB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3E,wBAAA,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1C,wBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACtC,qBAAA;iBACJ;gBACD,KAAK,EAAE,GAAG,IAAG;oBACT,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;AAChF,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACnE;AACJ,aAAA,CAAC,CAAC;AACV,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,mEAAA,CAAqE,CAAC,CAAC;AAC5F,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AACtC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;AACrC,SAAA;KACJ;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;;;;AAIf,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACxF,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;KAC9D;;AAGD,IAAA,cAAc,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC7D,SAAA;KACJ;;AAGD,IAAA,WAAW,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC7D,SAAA;KACJ;AAEO,IAAA,oBAAoB,CAAC,KAAU,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACpC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAEjD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;;;;AAKG;IACK,0BAA0B,GAAA;AAC9B,QAAA,OAAO,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC;KACjD;8GA5MQ,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,EAJlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,CAAC,2BAA2B,CAAC,yEAgCP,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3E7C,45CAoCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQc,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FAAa,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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;;2FAGnF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,cAAc,EAEb,SAAA,EAAA,CAAC,2BAA2B,CAAC,EAAA,OAAA,EAC/B,CAAC,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC,EAAA,eAAA,EAC5E,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,45CAAA,EAAA,CAAA;8BA4BjB,uBAAuB,EAAA,CAAA;sBAApD,MAAM;uBAAC,aAAa,CAAA;;;AElEZ,MAAA,6BAA6B,GAAqB;AAC3D,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,IAAA,KAAK,EAAE,IAAI;EACb;MAUW,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;AASqB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAW,CAAA,WAAA,GAAG,KAAK,EAAU,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU,CAAC;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE;AAC3B,YAAA,SAAS,EAAE,gBAAgB;AAC9B,SAAA,CAAC,CAAC;;AAKK,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,GAAG,CAAC;;AAE5B,QAAA,IAAA,CAAA,WAAW,GAAQ,MAAK,GAAG,CAAC;AAoFtC,KAAA;AAlFG,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAgB,CAAC;KAC5D;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAgB,CAAC;KAC1D;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAgB,CAAC;KACjE;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5C,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,SAAS,EAAE,EAAE;AAChB,SAAA,CAAC,CAAC;QAEH,MAAM,CACF,MAAK;YACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1C,EACD,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAC5B,CAAC;AAEF,QAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACvF,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KAC9C;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE;AAC/C,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;AACpC,SAAA;aAAM,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE;AACxD,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;AACnC,SAAA;KACJ;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;QACf,IAAI,SAAS,GAAgB,IAAI,CAAC;QAClC,IAAI,OAAO,GAAgB,IAAI,CAAC;AAEhC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE;gBACxG,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE;gBACxG,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,GAAG,YAAY,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClF,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;aAAM,IAAI,SAAS,IAAI,OAAO,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAa,CAAC;AAC7C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAa,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAe,CAAC;AAChD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,SAAA;KACJ;8GAtGQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAJnB,CAAC,6BAA6B,CAAC,0BCjB9C,ktCAoCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBc,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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;;2FAGpC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,gBAAgB,EAEf,SAAA,EAAA,CAAC,6BAA6B,CAAC,EAAA,OAAA,EACjC,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAC7B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ktCAAA,EAAA,CAAA;;;MEkCtC,uCAAuC,CAAA;AAgDhD,IAAA,WAAA,GAAA;QA/CmB,IAA2B,CAAA,2BAAA,GAAG,2BAA2B,CAAC;AAC7D,QAAA,IAAA,CAAA,4BAA4B,GAAG,0BAA0B,CAAC,MAAM,CAAC;AAEhE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACtC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAClD,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAK1C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAwB,CAAC;AACjE,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAwB,CAAC;AAM5F,QAAA,IAAA,CAAA,KAAK,GAAuC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;AAG/B,QAAA,IAAA,CAAA,IAAI,GAAkC,MAAM,CAAC,SAAS,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,MAAM,GAAuC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,UAAU,GAA2C,MAAM,CAAC,SAAS,CAAC,CAAC;;AAGvE,QAAA,IAAA,CAAA,kBAAkB,GAAiD,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,mBAAmB,GAAiD,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/E,QAAA,IAAA,CAAA,iBAAiB,GAAiD,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7E,QAAA,IAAA,CAAA,kBAAkB,GAAiD,MAAM,CAAC,EAAE,CAAC,CAAC;AAO9E,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAExB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAIjC,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,qBAAqB,CAAC,MAAK;AACvB,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;AACzC,iBAAA;gBACD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO,EAAE;AAChF,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3C,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;AAClE,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;QAG1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;;QAG5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;;QAG9G,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGnB,QAAA,IAAI,CAAC,aAAa;AACd,cAAE,eAAe,EAAE;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,CAAC,IAAG;gBACN,IAAI,CAAC,CAAC,KAAK,EAAE;oBACT,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,iBAAA;qBAAM,IAAI,CAAC,CAAC,IAAI,EAAE;oBACf,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAA;qBAAM,IAAI,CAAC,CAAC,MAAM,EAAE;AACjB,oBAAA,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE;AACxB,wBAAA,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,qBAAA;AACJ,iBAAA;aACJ;AACJ,SAAA,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,aAAa;AACd,cAAE,eAAe,EAAE;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,MAAK;gBACP,IAAI,CAAC,MAAM,EAAE,CAAC;aACjB;AACJ,SAAA,CAAC,CAAC;KACV;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,0BAA0B,EAAE,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,2BAA2B,EAAE,WAAW,EAAE,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KACvD;AAEM,IAAA,QAAQ,CAAC,KAAkC,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,uDAAA,EAA0D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC,CAAC;AAC5H,SAAA;QACD,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC;;YAG7C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/G,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE;gBACnD,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;AAC3E,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,gBAAgB,EAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,CAAC,sBAAsB,CACnC,CAAC;AAEF,YAAA,IAAI,CAAC,2BAA2B,EAAE,WAAW,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAACa,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,IAAI,EAAE,GAAG,IAAG;oBACR,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE;;AAE5F,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAA0B,CAAC,CAAC,CAAC;AACjF,qBAAA;AACD,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;iBACnC;AACJ,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACpC,SAAA;KACJ;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAwC,qCAAA,EAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAA,uCAAA,CAAyC,CAAC,CAAC;YACnI,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnD;AAEM,IAAA,YAAY,CAAC,MAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC3B;AAEM,IAAA,UAAU,CAAC,IAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACvB;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;KAChC;IAEO,oBAAoB,GAAA;QACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACrD,IAAI,MAAM,YAAY,gCAAgC,EAAE;gBACpD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;oBAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,0BAA0B,CAAC,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC;AACnH,iBAAA;gBACD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;AAC5C,oBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,KAAK,0BAA0B,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,eAAe,GAAG,gBAAgB,CAAC,CAAC;AAC/J,iBAAA;;gBAGD,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/D,gBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,0BAA0B,CAAC,MAAM,EAAE;AACzD,oBAAA,MAAM,CAAC,eAAe,CAAC,MAAK;wBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,wBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpB,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,CAAC,eAAe,CAAC,MAAK;wBACxB,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC3C,wBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpB,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,2BAA2B,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;AAC/J,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KACpD;IAEO,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,MAAM,IAAI,gBAAgB,CAAC,CAAA,uDAAA,EAA0D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC,CAAC;AAC5H,SAAA;QAED,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE;YACnD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBAChD,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,eAAgB,CAAC,CAAC;AACrE,aAAA;AAAM,iBAAA;gBACH,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;AAC3E,aAAA;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;AAC3D,YAAA,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5F,SAAA;QACD,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,KAAK,WAAW,EAAE;YAChE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC9E,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,gBAAgB,EAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,CAAC,sBAAsB,CACnC,CAAC;AACF,QAAA,IAAI,CAAC,0BAA0B,EAAE,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC/E,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACpC;IAEO,WAAW,GAAA;QACf,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO;AACV,SAAA;QACD,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YAClG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,uBAAuB,CAAC,MAAiC,EAAA;QAC7D,QAAQ,MAAM,CAAC,QAAQ;YACnB,KAAK,kBAAkB,CAAC,WAAW;AAC/B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpD,MAAM;YACV,KAAK,kBAAkB,CAAC,YAAY;AAChC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACrD,MAAM;YACV,KAAK,kBAAkB,CAAC,UAAU;AAC9B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACnD,MAAM;YACV,KAAK,kBAAkB,CAAC,WAAW;AAC/B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpD,MAAM;AACb,SAAA;KACJ;IAEO,gBAAgB,CAAC,SAAS,GAAG,IAAI,EAAA;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;KACvC;AAEO,IAAA,qBAAqB,CAAC,QAA8B,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,EAAE;YAChF,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;AAChE,gBAAA,QAAQ,CAAC;oBACL,KAAK,uBAAuB,CAAC,aAAa;wBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,MAAM;oBACV,KAAK,uBAAuB,CAAC,UAAU;AACnC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACvB,MAAM;oBACV,KAAK,uBAAuB,CAAC,UAAU;AACnC,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACxB,MAAM;oBACV,KAAK,uBAAuB,CAAC,QAAQ;AACjC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5B,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACxB,MAAM;oBACV,KAAK,uBAAuB,CAAC,QAAQ;AACjC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC7B,MAAM;oBACV,KAAK,uBAAuB,CAAC,MAAM,CAAC;oBACpC,KAAK,uBAAuB,CAAC,QAAQ;AACjC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5B,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC9B,MAAM;oBACV,KAAK,uBAAuB,CAAC,eAAe;AACxC,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC1E,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,yBAAA;wBACD,MAAM;oBACV,KAAK,uBAAuB,CAAC,aAAa;AACtC,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC1E,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,yBAAA;wBACD,MAAM;oBACV,KAAK,uBAAuB,CAAC,gBAAgB;AACzC,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3E,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,yBAAA;wBACD,MAAM;oBACV,KAAK,uBAAuB,CAAC,cAAc;AACvC,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3E,4BAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,yBAAA;wBACD,MAAM;oBACV,KAAK,uBAAuB,CAAC,gBAAgB;AACzC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;wBAC7B,MAAM;oBACV,KAAK,uBAAuB,CAAC,kBAAkB,CAAC;oBAChD,KAAK,uBAAuB,CAAC,oBAAoB;AAC7C,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;wBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,MAAM;oBACV,KAAK,uBAAuB,CAAC,4BAA4B;AACrD,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;;wBAE7B,MAAM;AACb,iBAAA;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,WAAW,IAAG;AAChG,gBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,gCAAgC,EAAE,WAAW,EAAE,CAAC;KACxD;IAGO,kBAAkB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YACnE,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,CAAC;AAC1F,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAGO,eAAe,GAAA;AACnB,QAAA,IACI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,KAAK,2BAA2B,CAAC,OAAO;YAC9E,IAAI,CAAC,QAAQ,EAAE,mBAAmB;AAClC,YAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,WAAW,CAAC,UAAU,EAAE;YAE/J,IAAI,CAAC,mCAAmC,EAAE,CAAC;KAClD;AAEO,IAAA,oCAAoC,CAAC,aAAsB,EAAA;AAC/D,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAW,CAAC;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6CAA6C,CAAC;YAC7E,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,8CAA8C,CAAC;YAC/E,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;YAClD,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;AACjD,YAAA,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,MAAK;gBACT,IAAI,CAAC,aAAa,EAAE;oBAChB,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,iBAAA;AACD,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO,CAAC,QAAQ,EAAE,CAAC;aACtB;YACD,MAAM,EAAE,MAAK;AACT,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,QAAQ,EAAE,CAAC;aACtB;AACJ,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;KACjC;IAEM,mCAAmC,CAAC,aAAa,GAAG,KAAK,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE;AAChG,YAAA,OAAO,IAAI,CAAC,oCAAoC,CAAC,aAAa,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,aAAa,EAAE;gBAChB,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACnB;8GAzZQ,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uCAAuC,+TAFrC,CAAC,qBAAqB,EAAE,CAAC,kLAwBzB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3ErC,0uHAgFA,EAAA,MAAA,EAAA,CAAA,gHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/Bc,kBAAkB,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,qBAAqB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,uJAAyB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIxG,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBATnD,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,oCAAoC,EAGrC,OAAA,EAAA,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,aAAa,CAAC,mBACjG,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,0uHAAA,EAAA,MAAA,EAAA,CAAA,gHAAA,CAAA,EAAA,CAAA;wDAiBX,IAAI,EAAA,CAAA;sBAA5B,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAEQ,qBAAqB,EAAA,CAAA;sBAAnD,MAAM;uBAAC,cAAc,CAAA;gBACS,wBAAwB,EAAA,CAAA;sBAAtD,MAAM;uBAAC,cAAc,CAAA;gBAGY,sBAAsB,EAAA,CAAA;sBAAvD,SAAS;uBAAC,cAAc,CAAA;gBACiB,aAAa,EAAA,CAAA;sBAAtD,SAAS;uBAAC,sBAAsB,CAAA;gBAgVzB,kBAAkB,EAAA,CAAA;sBADzB,YAAY;uBAAC,qBAAqB,CAAA;gBAS3B,eAAe,EAAA,CAAA;sBADtB,YAAY;uBAAC,uBAAuB,CAAA;;;ME7Y5B,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;QASoB,IAAiB,CAAA,iBAAA,GAAG,uCAAoD,CAAC;AAElF,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAW/C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAwB,CAAC;AACjE,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAwB,CAAC;QAK3F,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AA+D5B,KAAA;AA7DG,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;KAC3C;IAED,QAAQ,GAAA;QACJ,IAAI,UAAU,GAA6C,SAAS,CAAC;AAErE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;AACzB,YAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAoC,CAAC;AACpE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;AAGrB,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACvC,SAAA;QAED,IAAI,CAAC,gCAAgC,GAAG;YACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;YAC5C,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM;AACxD,YAAA,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ;AAC3C,YAAA,sBAAsB,EAAE,UAAU,EAAE,MAAM,CAAC,gBAAgB;AAC3D,YAAA,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,IAAI,CAAC,WAAW;AACpF,YAAA,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS;AAC9E,YAAA,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU;YAC3F,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;KACL;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE;YAC/D,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnE,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;YAC3D,IAAI,CAAC,0BAA0B,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,SAAA;KACJ;AAEM,IAAA,4BAA4B,CAAC,GAAkD,EAAA;QAClF,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACjC,YAAA,MAAM,IAAI,gBAAgB,CAAC,kEAAkE,CAAC,CAAC;AAClG,SAAA;AACD,QAAA,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC;AACtC,QAAA,IAAI,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAClH,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC/G,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACN;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,0BAA0B,EAAE,MAAM,EAAE,CAAC;KAC7C;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,0BAA0B,EAAE,aAAa,EAAE,CAAC;KACpD;8GApFQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,SAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAc,gCAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBrC,qOAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDUc,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAItB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,mBAAmB,EAEpB,OAAA,EAAA,CAAC,qBAAqB,CAAC,EAChB,cAAA,EAAA,CAAC,gCAAgC,CAAC,EACjC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qOAAA,EAAA,CAAA;8BAUf,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAGC,WAAW,EAAA,CAAA;sBAAlC,KAAK;uBAAC,QAAQ,CAAA;gBACO,SAAS,EAAA,CAAA;sBAA9B,KAAK;uBAAC,MAAM,CAAA;gBACG,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBAEyB,qBAAqB,EAAA,CAAA;sBAAnD,MAAM;uBAAC,cAAc,CAAA;gBACS,wBAAwB,EAAA,CAAA;sBAAtD,MAAM;uBAAC,cAAc,CAAA;;;AEQ1B;;;AAGG;MA+BU,iCAAiC,CAAA;AAqD1C,IAAA,WAAA,GAAA;AApDgB,QAAA,IAAA,CAAA,kBAAkB,GAAyB,oBAAoB,CAAC,QAAQ,CAAC;AACzE,QAAA,IAAA,CAAA,sBAAsB,GAAyB,oBAAoB,CAAC,YAAY,CAAC;AAChF,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAa,MAAM,CAAC,QAAQ,CAAC;QAQ/C,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;;AAInB,QAAA,IAAA,CAAA,UAAU,GAAiC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,gBAAgB,GAAkD,MAAM,CAAC,SAAS,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CACzB,MACI,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,KAAK,eAAe,CAAC,MAAM;YAC7D,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,KAAK,eAAe,CAAC,YAAY;AACnE,YAAA,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CACrE,CAAC;AACK,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;AACvK,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAarB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAqB,CAAC;AAEtD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAwB,CAAC;QAC1D,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAC1B,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAG7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YACzG,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,KAAK,eAAe,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;gBACtJ,MAAM,SAAS,GAAqB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEhE,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,oBAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnC,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;AACpC,wBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;AACvC,4BAAA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,4BAAA,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC/B,yBAAA;AAAM,6BAAA;AACH,4BAAA,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,4BAAA,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5B,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC9B,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACpC,qBAAA;;AAED,oBAAA,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA;oBACH,CAAC,GAAG,IAAI,CAAC;AACZ,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC;AACxJ,YAAA,MAAM,mBAAmB,GAAG;gBACxB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa;AAC7D,gBAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,kBAAkB;gBAClC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,yBAAyB,IAAI,CAAC,IAAI,CAAC,oBAAoB;aACtF,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB,CAClB,CAAC,IAAI,IAAI;AACL,kBAAE,CAAC;AACH,kBAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,sBAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAClG,sBAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,mBAAmB,CAAC,CACxE,CAAC;AACN,SAAC,CAAC,CAAC;QAEH,MAAM,CACF,MAAK;AACD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpE,YAAA,IACI,eAAe;AACf,iBAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAG,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAG,CAAC,SAAS,KAAK,eAAe,CAAC,SAAS,CAAC,EAC5J;AACE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC7C,aAAA;AACL,SAAC,EACD,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAC5B,CAAC;KACL;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;YAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC;YAC9H,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,oBAAoB,KAAK,SAAS;gBAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC;YACnJ,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,kBAAkB,KAAK,SAAS;gBAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,kBAAkB,CAAC;YAC7I,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,uBAAuB,KAAK,SAAS;gBAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAAC;AACxJ,SAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAE3C,QAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU;YAC9B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,MAAM;YACV,KAAK,cAAc,CAAC,MAAM;AACtB,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,MAAM;YACV,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,MAAM;YACV,KAAK,cAAc,CAAC,MAAM,CAAC;YAC3B,KAAK,cAAc,CAAC,UAAU;AAC1B,gBAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAA8C,CAAC;gBAC5E,MAAM;YACV,KAAK,cAAc,CAAC,MAAM;AACtB,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,MAAM;AACb,SAAA;;AAGD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAK;YAC/E,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/D,YAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,kCAAkC,EAAE,WAAW,EAAE,CAAC;KAC1D;;AAGD,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;QACvD,IAAI,KAAK,KAAK,EAAE,EAAE;AACd,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;KACJ;;AAGD,IAAA,uBAAuB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;;AAGD,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QACrC,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;KACJ;;AAGD,IAAA,qBAAqB,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACvB,MAAM,KAAK,GAAI,KAAK,EAAE,MAAuC,EAAE,KAAK,IAAI,IAAI,CAAC;AAC7E,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;YACvD,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAA;KACJ;;AAGD,IAAA,qBAAqB,CAAC,KAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACjC;;AAGD,IAAA,UAAU,CAAC,KAA2B,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,KAAK,eAAe,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/F,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;AACxD,YAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,OAAO;AACV,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;;AAGD,IAAA,kBAAkB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACjC;;AAGD,IAAA,cAAc,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,KAAK,GAAG,SAAS,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAED,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAkB,KAAK,CAAC,MAAM,CAAC;QAEzC,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,WAAW;;gBAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACjC,oBAAA,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;oBACxB,QAAQ,CAAC,KAAK,EAAE,CAAC;AACpB,iBAAA;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AAEV,YAAA,KAAK,SAAS;;gBAEV,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACjC,oBAAA,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;oBACxB,QAAQ,CAAC,KAAK,EAAE,CAAC;AACpB,iBAAA;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;AACb,SAAA;KACJ;IAED,mBAAmB,GAAA;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAED,IAAA,UAAU,CAAC,KAAY,EAAA;QACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED,IAAA,qBAAqB,CAAC,KAAoB,EAAA;QACtC,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,KAAK;AACN,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM;AAEV,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;oBACvB,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAc,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7E,oBAAA,IAAI,SAAS,EAAE;AACX,wBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACxB,qBAAA;oBACD,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,iBAAA;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE;AACrB,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,iBAAA;gBACD,MAAM;AACb,SAAA;KACJ;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAClC;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;;AAGD,IAAA,uBAAuB,CAAC,KAAU,EAAA;QAC9B,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5D,gBAAA,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1E,gBAAA,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACpE,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,gBAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAM,KAAI;AACnC,oBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACjD,wBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,qBAAA;AACL,iBAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACpG,MAAM;AAEV,YAAA,KAAK,MAAM;gBACP,IAAI,CAAC,aAAa,EAAE,CAAC;gBAErB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;AAC1C,iBAAA;gBACD,MAAM;AACb,SAAA;KACJ;;AAGD,IAAA,qBAAqB,CAAC,KAAU,EAAA;QAC5B,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,MAAM;AACP,gBAAA,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM;AACb,SAAA;KACJ;AAED,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;KACrE;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,wBAAwB,GAAA;QAC5B,IAAI,OAAO,GAA6B,SAAS,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,EAAE;AACtD,YAAA,OAAO,GAAG;AACN,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAC;AACnG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,EAAC;AACzG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,EAAC;AACrG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,EAAC;AACvG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAC;AACnG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAC;aAC9G,CAAC;AACL,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,EAAE;AAC7D,YAAA,OAAO,GAAG;AACN,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,EAAC;AACrG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAC;AACnG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAC;AACrH,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,EAAC;AACzG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAAC;AAC3H,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAC;aAC9G,CAAC;AACL,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc,CAAC,UAAU,EAAE;AACzH,YAAA,OAAO,GAAG;AACN,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,EAAC;AACrG,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,gBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAC;aAC9G,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE;AACpC,gBAAA,OAAO,GAAG;AACN,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC,EAAC;AACvF,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,EAAC;iBAChG,CAAC;AACL,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;AAC3D,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACzG,gBAAA,OAAO,GAAG;AACN,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,EAAC;AACrG,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAC;AACrH,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAAC;AAC3H,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAC;AACjG,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAC;iBAC9G,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,GAAG;AACN,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAC;AACrH,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAAC;AAC3H,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAC;AACjG,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAC;AAC/F,oBAAA,EAAC,KAAK,EAAE,eAAe,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAC;iBAC9G,CAAC;AACL,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC5B,YAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAgB,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,EAAC,CAAA,CAAC,CAAC;AACvH,SAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,0BAA0B,GAAyB,SAAS,CAAC;AACjE,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAC3B,0BAA0B,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC7E,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;gBACrC,0BAA0B,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAChF,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAClC,0BAA0B,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC7E,aAAA;AAED,YAAA,IAAI,0BAA0B,EAAE;AAC5B,gBAAA,OAAO,GAAG,0BAA0B,CAAC,GAAG,CAAC,GAAG,KAAK,EAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;AAChH,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KACtC;IAEO,mBAAmB,GAAA;AACvB,QAAA,IAAI,gBAAgB,GAAgC,eAAe,CAAC,QAAQ,CAAC;AAC7E,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;AAAE,YAAA,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC;AACxE,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;AAAE,YAAA,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC;AAC5E,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;AAAE,YAAA,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC;AACzE,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ;AAAE,YAAA,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,eAAe,CAAC,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC;;AAG1I,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAClC,YAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACvD,SAAA;;QAGD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,EAAE;YAC5F,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAEO,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AAC5C,QAAA,MAAM,QAAQ,GAAkB,IAAI,CAAC,kBAAkB,CAAC;AAExD,QAAA,IAAI,QAAQ;YAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;AAC5H,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC;KACrD;AAEO,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AAC5C,QAAA,MAAM,QAAQ,GAAkB,IAAI,CAAC,sBAAsB,CAAC;AAE5D,QAAA,IAAI,QAAQ;YAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;;AAC5H,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;KACpD;AAEO,IAAA,gBAAgB,CAAC,KAAU,EAAA;QAC/B,OAAO,EACH,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAC/C,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,4BAA4B,CAAC;YAC/D,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;YAC7E,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,+BAA+B,CAAC;AAClE,YAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC,CACnF,CAAC;KACL;IAEO,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7B,YAAA,MAAM,cAAc,GAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,UAAU,CAAC;AAEvF,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,IAAG;AAC/E,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;oBAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,iBAAA;AAED,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,2BAA2B,GAAA;QAC/B,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;KACJ;IAEO,0BAA0B,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC9B,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAK;gBAC3E,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE;oBACtD,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,4BAA4B,GAAA;QAChC,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACtC,SAAA;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,MAAK;AAClF,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;oBACvB,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAEO,oBAAoB,GAAA;QACxB,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;AAC7C,SAAA;KACJ;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KAC1B;IAEO,aAAa,GAAA;QACjB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;AAEO,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEO,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAG,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC7B;IAEO,oBAAoB,CAAC,KAAK,GAAG,KAAK,EAAA;AACtC,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACpD,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAC,CAAC;AACzF,SAAA;;AAGD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACtC,SAAA;KACJ;AAEO,IAAA,mBAAmB,CAAC,QAAyB,EAAA;QACjD,IAAI,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAClE,QAAA,IAAI,YAAY,GAAG,QAAQ,EAAE,KAAK,CAAC;QACnC,IAAI,gBAAgB,GAAG,SAAS,CAAC;QAEjC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC9J,YAAA,IACI,SAAS,KAAK,eAAe,CAAC,OAAO;AACrC,gBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9B,gBAAA,QAAQ,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC;gBAC5B,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EACjG;AACE,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAA2B,CAAC,CAAC;AACpF,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAA2B,CAAC,CAAC;;AAGlF,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE9G,gBAAA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE;AACvE,oBAAA,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC;oBAC1C,YAAY,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,iBAAA;AACJ,aAAA;iBAAM,IAAI,SAAS,KAAK,eAAe,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjE,gBAAA,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC;AACvC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACtB,SAAS;YACT,KAAK,EAAE,QAAQ,EAAE,KAAK;YACtB,gBAAgB;YAChB,YAAY,EAAE,YAAY,IAAI,IAAI;AACrC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAG,CAAC;KACvE;8GA7lBQ,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EChF9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+sPA6IA,EDvFQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8BACX,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,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,EACX,wBAAwB,EACxB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,sBAAsB,EACtB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,sGACf,UAAU,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,eAAe,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,qBAAqB,EAGb,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,kBAAkB,EAAE;gBACxB,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC;AACjH,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;aACrE,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAIQ,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBA9B7C,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,8BAA8B,EAC/B,OAAA,EAAA;wBACL,WAAW;wBACX,eAAe;wBACf,qBAAqB;wBACrB,cAAc;wBACd,WAAW;wBACX,wBAAwB;wBACxB,oBAAoB;wBACpB,sBAAsB;wBACtB,iBAAiB;wBACjB,eAAe;wBACf,UAAU;wBACV,eAAe;wBACf,OAAO;wBACP,cAAc;wBACd,qBAAqB;qBACxB,EAEW,UAAA,EAAA;wBACR,OAAO,CAAC,kBAAkB,EAAE;4BACxB,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC;AACjH,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;yBACrE,CAAC;AACL,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+sPAAA,EAAA,CAAA;wDAetB,UAAU,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAEJ,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;;;MEzER,4BAA4B,CAAA;IAsBrC,WACY,CAAA,UAAsB,EACtB,cAA8B,EAC9B,SAA2B,EAC3B,YAA0B,EAC1B,UAAyB,EACzB,YAA6B,EAAA;QAL7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAe;QACzB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;AA3BzB,QAAA,IAAA,CAAA,uBAAuB,GAA0B,qBAAqB,CAAC,MAAM,CAAC;AAC9E,QAAA,IAAA,CAAA,uBAAuB,GAA0B,qBAAqB,CAAC,MAAM,CAAC;AAC9E,QAAA,IAAA,CAAA,yBAAyB,GAA0B,qBAAqB,CAAC,QAAQ,CAAC;AAClF,QAAA,IAAA,CAAA,wBAAwB,GAA0B,qBAAqB,CAAC,OAAO,CAAC;AAChF,QAAA,IAAA,CAAA,qBAAqB,GAA0B,qBAAqB,CAAC,IAAI,CAAC;AAC1E,QAAA,IAAA,CAAA,qBAAqB,GAA0B,qBAAqB,CAAC,IAAI,CAAC;AAC1E,QAAA,IAAA,CAAA,0BAA0B,GAA0B,qBAAqB,CAAC,SAAS,CAAC;AACpF,QAAA,IAAA,CAAA,qBAAqB,GAA0B,qBAAqB,CAAC,IAAI,CAAC;QAKhD,IAAa,CAAA,aAAA,GAAkB,IAAI,CAAC;QACjD,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC;QAI3C,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;KAWlB;IAEG,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,QAAQ,EAAE;AACtE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,KAAK,CAAC;AAC1I,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,KAAK,qBAAqB,CAAC,MAAM,EAAE;AAC3E,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC;AAClC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACjD,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAwB,CAAC,CAAC;QAClE,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;AAC9C,YAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/E,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,YAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxE,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAEM,IAAA,eAAe,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC3D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE;AACtC,YAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,SAAA;AACD,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;AACvE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kCAAkC,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;KAChF;8GAjEQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBzC,k4DAgDA,ED7Bc,MAAA,EAAA,CAAA,qTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,uXAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,cAAc,EAAE,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,WAAW,6CAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,yFAAE,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGpJ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,wBAAwB,EAAA,OAAA,EAGzB,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAA,eAAA,EAC7I,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k4DAAA,EAAA,MAAA,EAAA,CAAA,qTAAA,CAAA,EAAA,CAAA;yNAYtB,UAAU,EAAA,CAAA;sBAAlC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACE,IAAI,EAAA,CAAA;sBAA5B,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAEmB,aAAa,EAAA,CAAA;sBAAtD,WAAW;uBAAC,oBAAoB,CAAA;gBACJ,SAAS,EAAA,CAAA;sBAArC,WAAW;uBAAC,OAAO,CAAA;;;ME/BX,iBAAiB,CAAA;AAG7B,CAAA;MAEY,sBAAsB,CAAA;AAC/B,IAAA,WAAA,CACoB,MAAgC,EAChC,OAAU,EACV,QAAgB,EAAA;QAFhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAA0B;QAChC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAG;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;KAChC;AACP,CAAA;MAEY,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;QACW,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAC5B;AAAA;;MCXY,6BAA6B,CAAA;AACtC,IAAA,SAAS,CAAC,KAAc,EAAE,MAA8C,EAAE,SAAkB,EAAA;AACxF,QAAA,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;AACxD,QAAA,IAAI,SAAS,IAAI,MAAM,EAAE,UAAU,KAAK,SAAS,EAAE;AAC/C,YAAA,OAAO,CAAG,EAAA,QAAQ,CAAsB,mBAAA,EAAA,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7F,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;KACJ;8GARQ,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,CAAA,EAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,IAAI,EAAE,2BAA2B;AACpC,iBAAA,CAAA;;;AC2ED;MACa,iBAAiB,CAAA;AA3B9B,IAAA,WAAA,GAAA;QA4BoB,IAAW,CAAA,WAAA,GAAG,mBAAmB,CAAC;AAEjC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,EAAC,aAA4B,GAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAezC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;;QAGvB,IAAa,CAAA,aAAA,GAA0B,UAAU,CAAC;QAClD,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;;AAWb,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAqB,CAAC;AACzD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAgC,CAAC;AACnE,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAe,CAAC;AACrD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAO,CAAC;AAC5C,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,YAAY,EAAO,CAAC;;AAQ3G,QAAA,IAAA,CAAA,eAAe,GAAiD,MAAM,CAAC,SAAS,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,wBAAwB,GAAiD,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3F,QAAA,IAAA,CAAA,cAAc,GAAiD,MAAM,CAAC,SAAS,CAAC,CAAC;;QAGhF,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,IAAI,GAA2B,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;;QAGvB,IAAkB,CAAA,kBAAA,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,QAAA,IAAA,CAAA,QAAQ,GAAsC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAmD,MAAM,CAAC,EAAE,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,kBAAkB,GAA6B,MAAM,CAAC,EAAE,CAAC,CAAC;;AAG1D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;AAG/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,qBAAqB,GAAuC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,SAAS,GAAuC,MAAM,CAAC,SAAS,CAAC,CAAC;;QAGjE,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;QAEhC,IAA0B,CAAA,0BAAA,GAAG,CAAC,CAAC;QAE/B,IAA+B,CAAA,+BAAA,GAAG,CAAC,CAAC;;QAIrC,IAAU,CAAA,UAAA,GAAuD,MAAM,CAAC,eAAe,CAAC,MAAM,EAA0B,CAAC,CAAC;AAC1H,QAAA,IAAA,CAAA,OAAO,GAA4C,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAc,CAAA,cAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;;AAG7E,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,MAAM,GAAmB;AAC3B,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACnC,gBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;qBAClB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;AACrC,qBAAA,GAAG,CAAC,CAAC,KAAK;oBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,SAAS,EAAE,CAAC,CAAC,kBAAkB;AAClC,iBAAA,CAAC,CAAC;AACP,gBAAA,OAAO,EAAE,EAAE;aACd,CAAC;YAEF,IAAI,CAAC,iBAAiB,EAAE;iBACnB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC;iBAC9B,OAAO,CAAC,CAAC,IAAG;AACT,gBAAA,IAAI,SAAS,GAAuB,CAAC,CAAC,gBAAgB,CAAC;gBACvD,IAAI,CAAC,SAAS,EAAE;oBACZ,QAAQ,CAAC,CAAC,UAAU;wBAChB,KAAK,cAAc,CAAC,MAAM;AACtB,4BAAA,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC;4BACrC,MAAM;wBACV,KAAK,cAAc,CAAC,MAAM,CAAC;AAC3B,wBAAA,KAAK,cAAc,CAAC,UAAU,EAAE;4BAC5B,MAAM,YAAY,GAAG,CAAsC,CAAC;4BAC5D,IAAI,YAAY,CAAC,WAAW,EAAE;AAC1B,gCAAA,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC;AAClC,6BAAA;4BACD,MAAM;AACT,yBAAA;AACD,wBAAA;4BACI,MAAM;AACb,qBAAA;AACJ,iBAAA;gBACD,IAAI,CAAC,SAAS,EAAE;AACZ,oBAAA,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC;AACtC,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpD,oBAAA,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,iBAAA;gBAED,IAAI,KAAK,GAA4B,SAAS,CAAC;AAC/C,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACtB,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC;AAC1B,iBAAA;AAED,gBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC5B,gBAAA,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC,GAAG;AACxB,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,SAAS,EAAE,SAAS;iBACvB,CAAC;AACN,aAAC,CAAC,CAAC;AAEP,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,CAAC,CAAC;QACK,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;;QAG1H,IAAqB,CAAA,qBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACrG,IAAoB,CAAA,oBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAClG,QAAA,IAAA,CAAA,iBAAiB,GAA2B,EAAC,YAAY,EAAE,EAAE,EAAC,CAAC;QAC/D,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;;QAGrB,IAAmC,CAAA,mCAAA,GAAG,KAAK,CAAC;AA+cvD,KAAA;IA7cU,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAExD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;AAGrC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1F,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC9D,SAAA;QACD,IAAI,UAAU,CAAC,cAAc,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3I,SAAA;;AAGD,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,KAAK,SAAS,IAAI,IAAI,CAAC,wBAAwB,EAAE,KAAK,SAAS,CAAC,CAAC;;AAG5H,QAAA,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;QAE3C,QAAQ,UAAU,CAAC,IAAI;YACnB,KAAK,aAAa,CAAC,KAAK;gBACpB,SAAS,IAAI,iBAAiB,CAAC;gBAC/B,MAAM;YACV,KAAK,aAAa,CAAC,KAAK;gBACpB,SAAS,IAAI,iBAAiB,CAAC;gBAC/B,MAAM;AACb,SAAA;QACD,IAAI,UAAU,CAAC,YAAY,EAAE;YACzB,SAAS,IAAI,wBAAwB,CAAC;AACzC,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;;AAGpC,QAAA,IAAI,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAClD,QAAA,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW,EAAE;;AAElD,YAAA,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AAC9C,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,EAAE;;AAEjD,YAAA,cAAc,GAAG,uBAAuB,CAAC,UAAU,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,cAAc,KAAK,uBAAuB,CAAC,cAAc,EAAE;AAC3D,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAqB,IAAI,GAAG,CAAC,CAAC;YACzE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,SAAA;AAAM,aAAA,IAAI,cAAc,KAAK,uBAAuB,CAAC,UAAU,EAAE;AAC9D,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAA;;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;;AAEnB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;;AAG1C,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACpF,aAAA;AAED,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,IAAI,EAAE,MAAK;oBACP,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjB;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;YAEH,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;oBAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,iBAAC,CAAC,CAAC;AACN,aAAA;iBAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AAChE,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAC1B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,iBAAC,CAAC,CAAC;AACN,aAAA;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvG,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,6BAA6B,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,aAAa;AACd,cAAE,eAAe,EAAE;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KAChE;IAEM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC9B,YAAA,QAAQ,QAAQ,CAAC,OAAO,EAAE;AACtB,gBAAA,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM;AACV,gBAAA,KAAK,kBAAkB;oBACnB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnC,MAAM;AACV,gBAAA,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM;AACb,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,EAAE;AACnG,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,WAAW,EAAE;AACvF,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClI,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;KAChD;AAEM,IAAA,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAA;AAChD,QAAA,MAAM,kBAAkB,GACpB,WAAW,IAAI,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACrK,QAAA,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;KACjE;AAEM,IAAA,eAAe,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE;;AAE3C,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;oBACrB,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,oBAAA,UAAU,EAAE,IAAI;oBAChB,WAAW,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACjF,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACtG,SAAA;KACJ;;AAGM,IAAA,WAAW,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;;AAGM,IAAA,aAAa,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC/B;AAEM,IAAA,WAAW,CAAC,KAAY,EAAE,GAAgC,EAAE,IAAU,EAAE,GAAW,EAAA;QACtF,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAO,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7C;AAEM,IAAA,iBAAiB,CAAC,KAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChD;AAED;;;AAGG;IACI,mBAAmB,CAAC,EAAC,OAAO,EAAM,EAAA;AACrC,QAAA,MAAM,OAAO,GAAW,OAAO,CAAC,EAAE,CAAC;AACnC,QAAA,MAAM,KAAK,GAAW,OAAO,CAAC,WAAW,CAAC;QAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;AAC1E,QAAA,IAAI,GAAG;AAAE,YAAA,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY;AAAE,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,EAAE,CAAC;QAEnF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACrD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAEO,IAAA,yBAAyB,CAAC,kBAAkC,EAAE,SAAS,GAAG,IAAI,EAAA;QAClF,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC7C,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEvB,QAAA,IAAI,CAAC,wBAAwB,GAAG,kBAAkB,CAAC;QACnD,IAAI,CAAC,+BAA+B,EAAE,CAAC;AAEvC,QAAA,IAAI,CAAC,wBAAwB,GAAG,YAAY,CACxC,IAAI,CAAC,YAAY,CAAC,MAAM,CACpB,kBAAoD,EACpD,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,IAAI,SAAS,GAAG,SAAS,CAClG,CACJ,CAAC,SAAS,CAAC;YACR,IAAI,EAAE,GAAG,IAAG;AACR,gBAAA,IAAI,IAAI,CAAC,eAAe,YAAY,0BAA0B,EAAE;AAC5D,oBAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1F,iBAAA;AAED,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACvB,oBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACxB,oBAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE;wBAC5C,KAAK,GAAG,EAAE,CAAC;AACd,qBAAA;oBACD,KAAK,CAAC,MAAM,CAAC,kBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE,kBAAmB,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;AAC9G,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAClC,iBAAA;AAED,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;AAErC,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC3B;YACD,KAAK,EAAE,GAAG,IAAG;AACT,gBAAA,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACrG,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAExB,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,EAAE;AACzE,oBAAA,UAAU,EAAE,kBAAkB;AACjC,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;aACnE;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACzC,YAAA,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC;AAC9D,YAAA,QAAQ,CAAC,MAAM,GAAG,kBAAkB,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;KACJ;AAEO,IAAA,wBAAwB,CAAC,SAAiB,EAAA;AAC9C,QAAA,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACxI,IAAI,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,+BAA+B,GAAG,CAAC,EAAE;;AAE5E,YAAA,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;KACtD;AAEO,IAAA,4BAA4B,CAAC,UAA8C,EAAA;QAC/E,IAAI,UAAU,YAAY,0BAA0B,EAAE;AAClD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC3B,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,2BAA2B,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;AACpI,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAyB,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACrH,YAAA,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBAChD,IAAI,WAAW,CAAC,YAAY,EAAE;oBAC1B,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,WAAW,CAAC,YAAsC,CAAC;AAC5F,iBAAA;AACD,gBAAA,IAAI,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAO,KAAK,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE;oBACzI,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;AAChE,iBAAA;AACD,gBAAA,IAAI,WAAW,CAAC,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAO,KAAK,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE;oBACxJ,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;AAC1E,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,EAAC,YAAY,EAAE,EAAE,EAAC,CAAC;AAC/C,SAAA;;QAGD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACvC,QAAA,IAAI,OAAO,GAA4B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK;AAClE,YAAA,EAAE,EAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAE,CAAA;AAClC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,QAAQ,CAAC;AACrE,YAAA,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,QAAQ,CAAC;AACjE,YAAA,QAAQ,EAAE,CAAC,GAAG,CAAC,YAAY;YAC3B,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,SAAS;YACnI,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC7D,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AACpC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;AAC5E,gBAAA,IAAI,YAAY,EAAE;AACd,oBAAA,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC7B,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;AAEvH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC/G;AAEO,IAAA,wBAAwB,CAAC,kBAAkC,EAAA;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;KACpD;AAEO,IAAA,gBAAgB,CAAC,kBAAmC,EAAA;QACxD,MAAM,eAAe,GAAkC,EAAE,CAAC;;QAG1D,IAAI,kBAAkB,EAAE,OAAO,EAAE;AAC7B,YAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBAChE,eAAe,CAAC,GAAG,CAAC,GAAG;oBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC7B,CAAC;AACN,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,eAAe,CAAC;KAC1B;AAEO,IAAA,cAAc,CAAC,kBAAmC,EAAA;QACtD,IAAI,kBAAkB,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,kBAAkB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1H,OAAO,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAC/B,CAAC,KACa;gBACN,KAAK,EAAE,CAAC,CAAC,QAAQ;AACjB,gBAAA,KAAK,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,aAAA,CAAA,CACR,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,6BAA6B,GAAA;QACjC,IAAI,IAAI,CAAC,cAAc,EAAE;;AAErB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AAC5E,gBAAA,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,MAAM;AACb,iBAAA,IAAI,CACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,MAAM,CACF,CAAC,IACG,CAAC,CAAC,YAAY,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClH,gBAAA,CAAC,YAAY,aAAa;AAC1B,gBAAA,CAAC,YAAY,gBAAgB;gBAC7B,CAAC,YAAY,eAAe,CACnC,CACJ;iBACA,SAAS,CAAC,CAAC,IAAG;AACX,gBAAA,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,eAAe,CAAC;AAC5E,aAAC,CAAC,CAAC;AACV,SAAA;AAAM,aAAA;;AAEH,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClC,aAAA;AAED,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9C,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACtC,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,cAAc,CAAC,KAA6B,EAAA;QAC/C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACpC,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACvB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5C,YAAA,IAAI,SAAS,KAAK,GAAG,CAAC,SAAS,EAAE;AAC7B,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1B,gBAAA,GAAG,CAAC,EAAE,GAAG,CAAA,EAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;AACtD,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClG,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;IAEM,iBAAiB,GAAA;QACpB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACpC,QAAA,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AAClD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,SAAS,KAAK,GAAG,CAAC,SAAS,EAAE;AAC7B,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1B,gBAAA,GAAG,CAAC,EAAE,GAAG,CAAA,EAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;AACtD,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClG,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAEM,IAAA,eAAe,CAAC,KAA8B,EAAA;AACjD,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE;AACvJ,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;AACvC,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;AACvC,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;AACrE,YAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AACrD,YAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;YAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;YAE9E,IAAI,cAAc,GAAG,CAAC,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE;gBAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAClC,gBAAA,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAClC,gBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,cAAc,GAAG,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9G,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnF,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5E,oBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;AACpE,iBAAA;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC/E,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,aAAA;AACJ,SAAA;KACJ;IAEO,qBAAqB,GAAA;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACpG,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,EAAC,EAAE,EAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAA,CAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC;AACrK,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;8GAznBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAkBP,CAAC,KAAc,MAAM,KAAK,IAAI,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAI,KAA4B,GAAG,EAAE,CAAC,KAAe,CAAC,CAAC,gCAI/H,CAAC,KAAc,MAAM,KAAK,IAAI,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAI,KAA0C,GAAG,EAAE,CAAC,KAA6B,CAAC,CAAC,CAGjI,EAAA,YAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,iBAAiB,mpBAwBrC,oBAAoB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE1B,KAAK,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EADF,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvIvC,o/iBA0QA,ED1MQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,wJACrB,mBAAmB,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,eAAe,EACf,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,4BAA4B,gEAC5B,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EACX,iCAAiC,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACjC,6BAA6B,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKxB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA3B7B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,WAAW,EAEZ,OAAA,EAAA;wBACL,SAAS;wBACT,WAAW;wBACX,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,OAAO;wBACP,OAAO;wBACP,gBAAgB;wBAChB,4BAA4B;wBAC5B,eAAe;wBACf,4BAA4B;wBAC5B,cAAc;wBACd,iBAAiB;wBACjB,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,iCAAiC;wBACjC,6BAA6B;qBAChC,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,o/iBAAA,EAAA,CAAA;8BAkBM,eAAe,EAAA,CAAA;sBAAnE,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAC,CAAA;gBAG4G,KAAK,EAAA,CAAA;sBAA5J,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,SAAS,EAAE,CAAC,KAAc,MAAM,KAAK,IAAI,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAI,KAA4B,GAAG,EAAE,CAAC,KAAe,CAAC,CAAC,EAAC,CAAA;gBAMxI,MAAM,EAAA,CAAA;sBAHZ,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACH,wBAAA,SAAS,EAAE,CAAC,KAAc,MAAM,KAAK,IAAI,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAI,KAA0C,GAAG,EAAE,CAAC,KAA6B,CAAC,CAAC;AACrK,qBAAA,CAAA;gBAE+D,YAAY,EAAA,CAAA;sBAA3E,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAC,CAAA;gBACvC,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBAGU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,gBAAgB,EAAA,CAAA;sBAA/B,KAAK;gBAGU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBAGU,gBAAgB,EAAA,CAAA;sBAA/B,KAAK;gBACU,yBAAyB,EAAA,CAAA;sBAAxC,KAAK;gBAC8B,uBAAuB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,oBAAoB,CAAA;gBAGC,gBAAgB,EAAA,CAAA;sBAA3C,MAAM;uBAAC,WAAW,CAAA;gBACS,qBAAqB,EAAA,CAAA;sBAAhD,MAAM;uBAAC,WAAW,CAAA;gBACe,2BAA2B,EAAA,CAAA;sBAA5D,MAAM;uBAAC,iBAAiB,CAAA;gBACkB,0BAA0B,EAAA,CAAA;sBAApE,MAAM;uBAAC,0BAA0B,CAAA;gBACkB,mCAAmC,EAAA,CAAA;sBAAtF,MAAM;uBAAC,mCAAmC,CAAA;gBAGG,SAAS,EAAA,CAAA;sBAAtD,eAAe;uBAAC,oBAAoB,CAAA;gBACO,UAAU,EAAA,CAAA;sBAArD,YAAY;uBAAC,qBAAqB,CAAA;gBACV,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,KAAK,CAAA;;;ME3FP,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;AASqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAWnD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;;QAGvB,IAAa,CAAA,aAAA,GAA0B,UAAU,CAAC;QAClD,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;;AAIzB,QAAA,IAAA,CAAA,OAAO,GAAqC,EAAE,CAAC;;AAQnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAqB,CAAC;AACnD,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAe,CAAC;AACrD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAO,CAAC;AAChD,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,YAAY,EAAO,CAAC;;AAQnG,QAAA,IAAA,CAAA,eAAe,GAAiD,MAAM,CAAC,SAAS,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,cAAc,GAAiD,MAAM,CAAC,SAAS,CAAC,CAAC;;AAGjF,QAAA,IAAA,CAAA,eAAe,GAAiD,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3E,QAAA,IAAA,CAAA,gBAAgB,GAAiD,MAAM,CAAC,EAAE,CAAC,CAAC;AAqEtF,KAAA;IAnEU,QAAQ,GAAA;;QAEX,MAAM,eAAe,GAAiC,EAAE,CAAC;QACzD,MAAM,gBAAgB,GAAiC,EAAE,CAAC;AAC1D,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,QAAQ,MAAM,CAAC,QAAQ;gBACnB,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,oBAAA,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,kBAAkB,CAAC,SAAS;AAC7B,oBAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM;AACb,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;;QAG5C,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,+BAA+B,CAClE,IAAI,CAAC,UAAsC,EAC3C,IAAI,CAAC,gBAAgB,EAAsC,CAC9D,CAAC;AACL,SAAA;KACJ;IAEM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC9B,YAAA,QAAQ,QAAQ,CAAC,OAAO,EAAE;AACtB,gBAAA,KAAK,SAAS;oBACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM;AACV,gBAAA,KAAK,QAAQ;oBACT,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM;AACb,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAA;QAChD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;KAC7C;AAEM,IAAA,WAAW,CAAC,KAAmC,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE;AAC/B,YAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACzC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,IAAI,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;gBAC3E,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAsB,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;AAC7G,qBAAA,cAAc,CAAC;oBACZ,SAAS,EAAE,KAAK,CAAC,QAAQ;iBAC5B,CAAC;AACD,qBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;qBACrB,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/D,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,iBAAiB,CAAC,KAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChD;AAEM,IAAA,cAAc,CAAC,SAAwC,EAAA;AAC1D,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,SAAA;KACJ;8GAjHQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EASb,CAAC,KAAc,MAAM,YAAY,CAAC,KAAK,CAAC,GAAI,KAA0C,GAAG,EAAE,CAAC,KAA6B,CAAC,CAAC,CAE3H,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,iBAAiB,8iBAdzB,CAAC,qBAAqB,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAsCnB,oBAAoB,EAE1B,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,gEADd,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjFvC,03DA2CA,EDFc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,yYAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAI9E,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,kBAAkB,EAEnB,OAAA,EAAA,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,EAAA,SAAA,EAC7E,CAAC,qBAAqB,EAAE,CAAC,EACnB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,03DAAA,EAAA,CAAA;8BAOf,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAGP,KAAK,EAAA,CAAA;sBAApB,KAAK;gBAEC,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAC,SAAS,EAAE,CAAC,KAAc,MAAM,YAAY,CAAC,KAAK,CAAC,GAAI,KAA0C,GAAG,EAAE,CAAC,KAA6B,CAAC,CAAC,EAAC,CAAA;gBAEjG,OAAO,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAC,SAAS,EAAE,iBAAiB,EAAC,CAAA;gBACrB,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBAGU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,gBAAgB,EAAA,CAAA;sBAA/B,KAAK;gBACU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBAGU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBAGU,gBAAgB,EAAA,CAAA;sBAA/B,KAAK;gBACU,qBAAqB,EAAA,CAAA;sBAApC,KAAK;gBACU,oBAAoB,EAAA,CAAA;sBAAnC,KAAK;gBAGsB,gBAAgB,EAAA,CAAA;sBAA3C,MAAM;uBAAC,WAAW,CAAA;gBACe,2BAA2B,EAAA,CAAA;sBAA5D,MAAM;uBAAC,iBAAiB,CAAA;gBACkB,0BAA0B,EAAA,CAAA;sBAApE,MAAM;uBAAC,0BAA0B,CAAA;gBACc,+BAA+B,EAAA,CAAA;sBAA9E,MAAM;uBAAC,+BAA+B,CAAA;gBAGO,SAAS,EAAA,CAAA;sBAAtD,eAAe;uBAAC,oBAAoB,CAAA;gBACO,UAAU,EAAA,CAAA;sBAArD,YAAY;uBAAC,qBAAqB,CAAA;gBACE,KAAK,EAAA,CAAA;sBAAzC,SAAS;uBAAC,iBAAiB,CAAA;;;ME/DnB,gCAAgC,CAAA;AAgBzC,IAAA,WAAA,CAAmB,UAA6B,EAAA;QAA7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAf/B,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AASxD,QAAA,IAAA,CAAA,yBAAyB,GAAsC,IAAI,YAAY,EAAuB,CAAC;QAOpH,IAAI,CAAC,0BAA0B,GAAG,kBAAkB,CAAC,MAAM,EAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3H;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,QAAQ,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;KACvC;8GAvBQ,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,qUAW9B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BnC,2LACA,EDec,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,6VAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,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,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGlC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,4BAA4B,EAAA,OAAA,EAC7B,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,2LAAA,EAAA,CAAA;mFAMZ,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACS,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACS,IAAI,EAAA,CAAA;sBAAnC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACS,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACS,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACS,OAAO,EAAA,CAAA;sBAAtC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAEN,yBAAyB,EAAA,CAAA;sBAAzC,MAAM;gBACkC,QAAQ,EAAA,CAAA;sBAAhD,SAAS;uBAAC,oBAAoB,CAAA;;;MEvBtB,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;KAUpD;aAX2B,IAAW,CAAA,WAAA,GAAG,iBAAH,CAAqB,EAAA;AAGxD,IAAA,WAAW,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,YAAY,iBAAiB,EAAE;YACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AACzD,SAAA;KACJ;;;ACZW,SAAA,6BAA6B,CAAC,OAAoB,EAAE,cAAqC,EAAA;IACrG,OAAO,MAAM,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD;;ACWM,MAAO,mCAA2C,SAAQ,SAA+B,CAAA;AAP/F,IAAA,WAAA,GAAA;;QAWY,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAwC9C,KAAA;IAtCU,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAA0B,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAA0C,CAAC;AACxE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;;AAGjC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC/G,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/H,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE;AACxG,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACzC;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC/G,YAAY,EAAE,iCAAiC,CAAC,YAAY;AAC/D,SAAA,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;;AAGd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGzD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAChH,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;KACN;8GA3CQ,mCAAmC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,gHCnBhD,otBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCc,wBAAwB,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,6TAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG5D,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAP/C,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,+BAA+B,EAEhC,OAAA,EAAA,CAAC,wBAAwB,EAAE,mBAAmB,EAAE,YAAY,CAAC,EACrD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,otBAAA,EAAA,CAAA;;;AEiC7C,MAAO,4BAAiC,SAAQ,SAA+B,CAAA;AAgBjF,IAAA,WAAA,CAC8B,iBAAyB,EAC3C,WAAwB,EACxB,gBAAkC,EAAA;AAE1C,QAAA,KAAK,EAAE,CAAC;QAJkB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;QAC3C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAlB9B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAA,CAAA,0BAA0B,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAInE,IAAe,CAAA,eAAA,GAA2B,SAAS,CAAC;QAGnD,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAEnB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAU1C;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAA0B,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAsC,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAsD,CAAC;QAE7F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEjD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,kBAAkB,CAAC,QAAQ,EAAE;AAC3D,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;AAElC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE;AACtC,gBAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,YAAY;AACjD,qBAAA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAE;AAC1C,qBAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC;qBACtG,SAAS,CAAC,CAAC,IAAG;AACX,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,iBAAC,CAAC,CAAC;AACP,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACzD,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC;AACrD,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,IAAI,EAAE;YACxG,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE;YACjF,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1C,SAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/H,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,EAAE;AACjG,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3C,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,oBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,iBAAA;qBAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAChE,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAChC,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAChC,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,iBAAA;AACJ,aAAA;AAED,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAe,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;gBAC9F,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClF,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;AACvG,gBAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;AAC/C,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzC,SAAA;KACJ;IAED,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGjD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,IAAI,EAAE;YACzG,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,YAAY,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC3B,SAAA;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAEM,IAAA,YAAY,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAY,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;;AAGM,IAAA,WAAW,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;IAEM,WAAW,CAAC,QAAuB,IAAI,EAAA;QAC1C,MAAM,UAAU,GAAkB,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACjE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;KACzE;AAEM,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACrC;IAEM,mBAAmB,GAAA;QACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,0BAA0B,CAAC,CAAC;AACjI,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC/F,SAAA;KACJ;IAEO,qBAAqB,GAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,KAAK,UAAU,EAAE;YAC3D,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACjE,SAAA;KACJ;AAEM,IAAA,cAAc,CAAC,IAAU,EAAA;QAC5B,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxC;AAEM,IAAA,uBAAuB,CAAC,IAAU,EAAA;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,OAAO,UAAU,CAAC;AACrB,SAAA;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,OAAO,cAAc,CAAC;AACzB,SAAA;QACD,QAAQ,IAAI,CAAC,IAAI;AACb,YAAA,KAAK,iBAAiB;AAClB,gBAAA,OAAO,aAAa,CAAC;AACzB,YAAA,KAAK,oBAAoB,CAAC;AAC1B,YAAA,KAAK,yEAAyE,CAAC;AAC/E,YAAA,KAAK,iDAAiD;AAClD,gBAAA,OAAO,cAAc,CAAC;AAC1B,YAAA,KAAK,gDAAgD,CAAC;AACtD,YAAA,KAAK,0BAA0B,CAAC;AAChC,YAAA,KAAK,mEAAmE;AACpE,gBAAA,OAAO,eAAe,CAAC;AAC3B,YAAA;AACI,gBAAA,OAAO,SAAS,CAAC;AACxB,SAAA;KACJ;AArLQ,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,4BAA4B,kBAiBzB,SAAS,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAjBZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EClDzC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,06RAqLA,EDrJQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,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,WAAA,EAAA,IAAA,EAAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,iRACjB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,sDACT,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIhB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAvBxC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,wBAAwB,EAEzB,OAAA,EAAA;wBACL,iBAAiB;wBACjB,mBAAmB;wBACnB,YAAY;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,eAAe;wBACf,YAAY;wBACZ,SAAS;wBACT,qBAAqB;qBACxB,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,06RAAA,EAAA,CAAA;;0BAmB1C,MAAM;2BAAC,SAAS,CAAA;;;AEtDnB,MAAO,4BAAiC,SAAQ,SAA+B,CAAA;AANrF,IAAA,WAAA,GAAA;;QAOiC,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC;AASrD,KAAA;IALU,QAAQ,GAAA;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAsC,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACvD;8GATQ,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,8JCbzC,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDaa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,wBAAwB,EAEjB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;8BAGlB,SAAS,EAAA,CAAA;sBAArC,WAAW;uBAAC,OAAO,CAAA;;;AEKlB,MAAO,+BAAuC,SAAQ,SAA+B,CAAA;AAP3F,IAAA,WAAA,GAAA;;QAWY,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAkC9C,KAAA;IAhCU,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAA0B,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAA0C,CAAC;AACxE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;;AAGjC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,IAAI,EAAE;YAC3G,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/H,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,+BAA+B,EAAE,IAAI,EAAE;AACpG,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACzC;IAED,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGjD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,IAAI,EAAE;YAC5G,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;KACN;8GArCQ,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,4GCnB5C,2nBAcA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEc,oBAAoB,EAAE,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,6TAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGxD,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,2BAA2B,EAE5B,OAAA,EAAA,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,YAAY,CAAC,EACjD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2nBAAA,EAAA,CAAA;;;AE8B7C,MAAO,mCAA2C,SAAQ,SAA+B,CAAA;AAyB3F,IAAA,WAAA,CAAoB,QAAkB,EAAA;AAClC,QAAA,KAAK,EAAE,CAAC;QADQ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAtBrB,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;AAI1F,QAAA,IAAA,CAAA,qBAAqB,GAAgB,IAAI,WAAW,EAAE,CAAC;AAEvD,QAAA,IAAA,CAAA,eAAe,GAA+B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,aAAa,GAAkC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAEnF,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC7B,IAAyB,CAAA,yBAAA,GAAQ,IAAI,CAAC;AACtC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;QAExD,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAC7B,IAAkB,CAAA,kBAAA,GAAQ,IAAI,CAAC;QAC/B,IAAc,CAAA,cAAA,GAAc,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;QAG7D,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAI1C;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAA0C,CAAC;AACxE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;;AAGjC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC/G,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAA2B,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE;AACvF,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACrG,SAAA;;QAGD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAY,CAAC,YAAY,CAAC,IAAI,CACpD,SAAS,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,EAClC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAI;AAChC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAsB,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC;YACpI,IAAI,WAAW,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACrE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,KAAK,IAAI,CAAC;AACxB,aAAA;AACL,SAAC,CAAC,CACL,CAAC,SAAS,CAAC,CAAC,IAAG;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,mCAAmC,EAAE,IAAI,EAAE;AACxG,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACzC;IAED,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC/G,YAAY,EAAE,iCAAiC,CAAC,YAAY;AAC/D,SAAA,CAAC,CAAC;KACN;IAED,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,8BAA8B,EAAE,WAAW,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGjD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAChH,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;KACN;IAED,gBAAgB,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC1D,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEvC,YAAA,MAAM,MAAM,GAAmB;AAC3B,gBAAA,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,UAAU;AAChB,qBAAA,qBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;AAC5D,qBAAA,GAAG,CAAC,CAAC,KAAK;oBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,SAAS,EAAE,CAAC,CAAC,kBAAkB;AAClC,iBAAA,CAAC,CAAC;aACV,CAAC;YAEF,IAAI,CAAC,8BAA8B,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvI,IAAI,EAAE,GAAG,IAAG;AACR,oBAAA,MAAM,QAAQ,GAAG;wBACb,IAAI,EAAE,GAAG,IAAI,EAAE;AACf,wBAAA,UAAU,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;qBAC/B,CAAC;AACF,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAExC,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,YAAY,EAAE,mCAAmC,EAAE,IAAI,EAAE;AACzG,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,WAAW,EAAE,QAAQ;AACxB,qBAAA,CAAC,CAAC;iBACN;gBACD,KAAK,EAAE,GAAG,IAAG;AACT,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,YAAY,EAAE,mCAAmC,EAAE,IAAI,EAAE;AACzG,wBAAA,YAAY,EAAE,aAAa;AAC3B,wBAAA,WAAW,EAAE,GAAG;AACnB,qBAAA,CAAC,CAAC;oBAEH,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,0CAA0C,EAAE;AAC3F,wBAAA,MAAM,EAAE,MAAM;AACjB,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACnE;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;AACD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAE5B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,eAAe,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC5G,YAAY,EAAE,8BAA8B,CAAC,UAAU;AACvD,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACN;AAED,IAAA,iBAAiB,CAAC,IAAS,EAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC;AAED,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,eAAe,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC5G,YAAY,EAAE,8BAA8B,CAAC,gCAAgC;AAC7E,YAAA,wBAAwB,EAAE,QAAQ;AACrC,SAAA,CAAC,CAAC;KACN;AAED,IAAA,qBAAqB,CAAC,QAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,eAAe,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC5G,YAAY,EAAE,8BAA8B,CAAC,uCAAuC;AACpF,YAAA,wBAAwB,EAAE,QAAQ;AACrC,SAAA,CAAC,CAAC;KACN;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,eAAe,EAAE,mCAAmC,EAAE,IAAI,EAAE;YAC5G,YAAY,EAAE,8BAA8B,CAAC,UAAU;AACvD,YAAA,aAAa,EAAE,KAAK;AACvB,SAAA,CAAC,CAAC;KACN;IAED,OAAO,GAAA;QACH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAEO,IAAA,kBAAkB,CAAC,KAAQ,EAAA;QAC/B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,KAAK,CAAC,aAAa,CAAC;YACzH,IAAI,CAAC,aAAa,EAAE;gBAChB,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,EAAE,EAAC,IAAI,EAAE,iCAAiC,EAAC,CAAC,CAAC;AAChH,aAAA;YACD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA6B,CAAC,CAAC,CAAC;AAC7E,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,SAAA;KACJ;8GAxMQ,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAHjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAI7B,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,EChDhC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6/EAsDA,EDtBQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,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,EAAAA,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,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,EACT,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,mCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,sGACf,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAK3B,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBApB/C,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,gCAAgC,EAEjC,OAAA,EAAA;wBACL,eAAe;wBACf,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,SAAS;wBACT,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,gCAAgC;qBACnC,EACU,SAAA,EAAA,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6/EAAA,EAAA,CAAA;6EAGV,QAAQ,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB,CAAA;;;AElB1B,MAAO,sCAA0D,SAAQ,SAA+B,CAAA;AAgB1G,IAAA,WAAA,CAAoB,QAAkB,EAAA;AAClC,QAAA,KAAK,EAAE,CAAC;QADQ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAb/B,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAEhE,IAAO,CAAA,OAAA,GAAmC,EAAE,CAAC;QAC7C,IAAmB,CAAA,mBAAA,GAAmC,EAAE,CAAC;QAExD,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACxD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3D,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACf,CAAC;KAID;IAEM,QAAQ,GAAA;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAA8C,CAAC;AAC5E,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACnG,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,yBAAyB,CAAC,GAAG,CAAC,CAAC;QACjG,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACnG,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAEvG,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE;gBAC3G,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AAC7C,gBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;aAC3C,CAAC;AACG,iBAAA,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACzC,iBAAA,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;iBACnC,iBAAiB,CAAC,GAAG,IAAG;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAK,EAAQ,CAAC,CAAC;AAChD,aAAC,CAAC,CAAC;AACP,YAAA,UAAU,CAAC,iBAAiB,CAAC,CAAC,4BAA4B,CAAC,YAAY,CAAC,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzH,YAAA,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE;gBAClG,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AAC7C,gBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;aAC3C,CAAC;AACG,iBAAA,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC;AAC7C,iBAAA,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;AACnC,iBAAA,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC9H,iBAAiB,CAAC,GAAG,IAAG;gBACrB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBAC9C,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAK,EAAQ,CAAC,CAAC;AAChD,aAAC,CAAC;iBACD,kBAAkB,CAAC,GAAG,IAAG;AACtB,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,oBAAA,OAAO,UAAU,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAsD,oDAAA,CAAA,EAAE,EAAC,IAAI,EAAE,0CAA0C,EAAC,CAAC,CAAC,CAAC;AAC7J,iBAAA;gBACD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBACnC,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACnC,aAAC,CAAC;AACD,iBAAA,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AACvD,iBAAA,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AACrD,iBAAA,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAClE,qBAAqB,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,YAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE;gBACrG,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AAC7C,gBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;aAC3C,CAAC;AACG,iBAAA,YAAY,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAC1C,iBAAA,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;AACnC,iBAAA,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC9H,iBAAiB,CAAC,GAAG,IAAG;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAK,EAAQ,CAAC,CAAC;AAChD,aAAC,CAAC;iBACD,kBAAkB,CAAC,GAAG,IAAG;AACtB,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,oBAAA,OAAO,UAAU,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAuD,qDAAA,CAAA,EAAE,EAAC,IAAI,EAAE,0CAA0C,EAAC,CAAC,CAAC,CAAC;AAC9J,iBAAA;gBACD,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxC,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACrD,gBAAA,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACjF,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACnC,aAAC,CAAC;AACD,iBAAA,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AACvD,iBAAA,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AACrD,iBAAA,qBAAqB,CAAC,GAAG,KAAK,IAAI,CAAC,wCAAwC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;iBAChI,qBAAqB,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,YAAA,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACjG,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AAC7C,gBAAA,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;aAC3C,CAAC;AACG,iBAAA,YAAY,CAAC,kBAAkB,CAAC,SAAS,CAAC;iBAC1C,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;iBACnJ,eAAe,CAAC,GAAG,IAAG;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,oBAAA,OAAO,UAAU,CACb,MAAM,IAAI,gBAAgB,CAAC,CAAyD,uDAAA,CAAA,EAAE,EAAC,IAAI,EAAE,0CAA0C,EAAC,CAAC,CAC5I,CAAC;AACL,iBAAA;AACD,gBAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAiB,CAAC;gBAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa;AACjE,sBAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa;sBAC7C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;AACvD,gBAAA,MAAM,OAAO,GAAQ,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACzC,gBAAA,IAAI,eAAe,IAAI,OAAO,GAAG,eAAe,CAAC,EAAE;oBAC/C,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACxG,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC9C,oBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAClC,iBAAA;AAAM,qBAAA,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK,QAAQ,EAAE;AACrE,oBAAA,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACnD,oBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAClC,iBAAA;AAAM,qBAAA;oBACH,OAAO,UAAU,CACb,MACI,IAAI,gBAAgB,CAAC,yFAAyF,EAAE;AAC5G,wBAAA,IAAI,EAAE,0CAA0C;AACnD,qBAAA,CAAC,CACT,CAAC;AACL,iBAAA;AAED,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAEjC,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACvB,aAAC,CAAC;AACD,iBAAA,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AACvD,iBAAA,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;AACrD,iBAAA,qBAAqB,CAAC,GAAG,KAAK,IAAI,CAAC,wCAAwC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACtI,qBAAqB,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,YAAA,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9C,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,QAAQ,MAAM,CAAC,QAAQ;gBACnB,KAAK,kBAAkB,CAAC,YAAY;AAChC,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM;AACb,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE;AAClF,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,sCAAsC,EAAE,IAAI,EAAE;YAClH,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;QAEH,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACnG,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAG1B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,sCAAsC,EAAE,IAAI,EAAE;AAC3G,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;YACpE,IAAI,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACxD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,aAAA;iBAAM,IAAI,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACzC;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,sCAAsC,EAAE,IAAI,EAAE;YAClH,YAAY,EAAE,iCAAiC,CAAC,YAAY;AAC/D,SAAA,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;;AAGd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGjD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,sCAAsC,EAAE,IAAI,EAAE;YACnH,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;KACN;AAEO,IAAA,wCAAwC,CAAC,GAA+B,EAAA;AAC5E,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,WAAW,EAAE;YAC7C,IAAK,GAAG,CAAC,UAAU,CAAC,IAAY,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,0BAA2B,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,EAAE;AACxJ,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;8GA9NQ,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,iFAHpC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B5C,qtBAeA,EAAA,MAAA,EAAA,CAAA,4DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWc,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,wYAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAInF,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBATlD,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,oCAAoC,EAGrC,OAAA,EAAA,CAAC,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,EAClF,SAAA,EAAA,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qtBAAA,EAAA,MAAA,EAAA,CAAA,4DAAA,CAAA,EAAA,CAAA;;;AEgB7C,MAAO,6CAA8C,SAAQ,SAA+B,CAAA;AA6B9F,IAAA,WAAA,CAAoB,QAAkB,EAAA;AAClC,QAAA,KAAK,EAAE,CAAC;QADQ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QA5BrB,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;AAIpG,QAAA,IAAA,CAAA,YAAY,GAAwB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,eAAe,GAA4B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,aAAa,GAA+B,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAEhF,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC7B,IAAyB,CAAA,yBAAA,GAAQ,IAAI,CAAC;AACtC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;QAExD,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAC7B,IAAsB,CAAA,sBAAA,GAAe,EAAE,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;QAE9D,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAU,CAAC;QAG9C,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAM1C;IAEM,QAAQ,GAAA;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAuD,CAAC;AACrF,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;AAEjC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,WAAW,EAAE;AACtD,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;AAChH,SAAA;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACjG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,+BAA+B,CAAC,MAAM,CAAC,CAAC;;AAGvG,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,EAAE;AAClF,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,6CAA6C,EAAE,IAAI,EAAE;YAC1H,YAAY,EAAE,iCAAiC,CAAC,OAAO;AAC1D,SAAA,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YAC7H,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;AAGhC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,6CAA6C,EAAE,IAAI,EAAE;gBAClH,KAAK,EAAE,CAAC,IAAI,EAAE;AACjB,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,aAAA;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YACzF,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SACtE,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACzC;IAEM,eAAe,GAAA;;AAElB,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,6CAA6C,EAAE,IAAI,EAAE;YAC1H,YAAY,EAAE,iCAAiC,CAAC,YAAY;AAC/D,SAAA,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;;AAGd,QAAA,IAAI,CAAC,8BAA8B,EAAE,WAAW,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGjD,QAAA,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,yBAAyB,CAAC,kBAAkB,EAAE,6CAA6C,EAAE,IAAI,EAAE;YAC1H,YAAY,EAAE,iCAAiC,CAAC,UAAU;AAC7D,SAAA,CAAC,CAAC;KACN;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,EAAE;;YAE1D,qBAAqB,CAAC,MAAK;AACvB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAmB,EAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAC,CAAC;AACrD,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,EAAE;oBAC3E,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;wBACpD,IAAI,CAAC,CAAC,gBAAgB,EAAE;AACpB,4BAAA,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;gCACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;gCACpB,SAAS,EAAE,CAAC,CAAC,kBAAkB;AAClC,6BAAA,CAAC,CAAC;AACN,yBAAA;AACL,qBAAC,CAAC,CAAC;AACN,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE;AACxC,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBACnI,MAAM,CAAC,OAAO,GAAG;AACb,wBAAA,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqC,GAAG;4BACrD,SAAS,EAAE,eAAe,CAAC,KAAK;AAChC,4BAAA,KAAK,EAAE,YAAY;AACtB,yBAAA;qBACJ,CAAC;AACL,iBAAA;gBACD,IAAI,CAAC,8BAA8B,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;oBAClJ,IAAI,EAAE,GAAG,IAAG;AACR,wBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,wBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,wBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC3C;oBACD,KAAK,EAAE,GAAG,IAAG;AACT,wBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAExC,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,+CAA+C,EAAE;AAChG,4BAAA,MAAM,EAAE,MAAM;AACjB,yBAAA,CAAC,CAAC;AACH,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACnE;AACJ,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,eAAe,EAAE,6CAA6C,EAAE,IAAI,EAAE;YACtH,YAAY,EAAE,8BAA8B,CAAC,UAAU;AACvD,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACN;AAED,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACvC;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,eAAe,EAAE,6CAA6C,EAAE,IAAI,EAAE;YACtH,YAAY,EAAE,8BAA8B,CAAC,UAAU;AACvD,YAAA,aAAa,EAAE,KAAK;AACvB,SAAA,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,KAAK,GAAG,EAAE,CAAC;AACd,SAAA;QACD,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,KAAK,GAAG,EAAE,CAAC;AACd,SAAA;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa;AACrE,cAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa;cACjD,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC3D,IAAI,CAAC,eAAe,EAAE;AAClB,YAAA,MAAM,IAAI,gBAAgB,CAAC,yFAAyF,EAAE;AAClH,gBAAA,IAAI,EAAE,iDAAiD;AAC1D,aAAA,CAAC,CAAC;AACN,SAAA;AACD,QAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;AAC3I,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACrC;AAEM,IAAA,QAAQ,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;8GAzMQ,6CAA6C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6CAA6C,EAH3C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,SAAA,EAAA,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzC5C,wxIAsFA,EAAA,MAAA,EAAA,CAAA,6TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxDQ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,mCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAK3B,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBApBzD,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,wCAAwC,EAGzC,OAAA,EAAA;wBACL,eAAe;wBACf,SAAS;wBACT,iBAAiB;wBACjB,YAAY;wBACZ,YAAY;wBACZ,YAAY;wBACZ,oBAAoB;wBACpB,eAAe;wBACf,OAAO;wBACP,gCAAgC;qBACnC,EACU,SAAA,EAAA,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wxIAAA,EAAA,MAAA,EAAA,CAAA,6TAAA,CAAA,EAAA,CAAA;6EA6Bf,iBAAiB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB,CAAA;;;AExD5B,MAAO,2BAA4B,SAAQ,SAA+B,CAAA;8GAAnE,2BAA2B,EAAA,IAAA,EAAA,IAAA,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,wGCfxC,wpBAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAc,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2FAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,uBAAuB,EAExB,OAAA,EAAA,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,EACtC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wpBAAA,EAAA,CAAA;;;AEI7C,MAAO,+BAAoC,SAAQ,SAA+B,CAAA;AAPxF,IAAA,WAAA,GAAA;;AAQoB,QAAA,IAAA,CAAA,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAO5D,KAAA;IAJG,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAsC,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;KACpC;8GARQ,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,4GCjB5C,2ZAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEc,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,0HAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG9C,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,2BAA2B,EAE5B,OAAA,EAAA,CAAC,cAAc,EAAE,YAAY,EAAE,eAAe,CAAC,EACvC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2ZAAA,EAAA,CAAA;;;AEO7C,MAAO,6BAAkC,SAAQ,SAA+B,CAAA;AAPtF,IAAA,WAAA,GAAA;;QAUW,IAAW,CAAA,WAAA,GAAG,kBAAkB,CAAC;AAwC3C,KAAA;IApCG,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAuC,CAAC;AACrE,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KAChE;IAED,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAA+C;AAC/E,YAAA,MAAM,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACtB,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,aAAa,CAAC,GAAsB,EAAA;QACxC,IAAI,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;AACpC,SAAA;KACJ;8GA1CQ,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB1C,qoBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGpF,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,yBAAyB,EAAA,OAAA,EAE1B,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC,EAC7E,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qoBAAA,EAAA,CAAA;;;AEL7C,MAAO,6BAAkC,SAAQ,SAA+B,CAAA;AAPtF,IAAA,WAAA,GAAA;;QAUW,IAAM,CAAA,MAAA,GAAwB,EAAE,CAAC;AAkB3C,KAAA;IAhBG,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAsC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB;SAC3C,CAAC;KACL;8GApBQ,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJ5B,CAAoG,kGAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpG,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGtB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAAoG,kGAAA,CAAA;oBAC9G,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAClD,iBAAA,CAAA;;;ACNK,MAAgB,8BAA+B,SAAQ,SAA+B,CAAA;AAYxF,IAAA,IAAa,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AACD,IAAA,IAAa,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AACD,IAAA,IAAa,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AACD,IAAA,IAAa,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AACD,IAAA,IAAa,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AACD,IAAA,IAAa,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AACD,IAAA,IAAa,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AACD,IAAA,IAAa,EAAE,GAAA;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;AACD,IAAA,IAAa,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;8GAtCiB,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA9B,8BAA8B,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,EAAA,UAAA,CAAA,EAAA,IAAA,EAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBADnD,SAAS;8BAEmB,KAAK,EAAA,CAAA;sBAA7B,KAAK;uBAAC,OAAO,CAAA;gBACE,MAAM,EAAA,CAAA;sBAArB,KAAK;uBAAC,OAAO,CAAA;gBACC,KAAK,EAAA,CAAA;sBAAnB,KAAK;uBAAC,MAAM,CAAA;gBACK,QAAQ,EAAA,CAAA;sBAAzB,KAAK;uBAAC,SAAS,CAAA;gBACF,IAAI,EAAA,CAAA;sBAAjB,KAAK;uBAAC,KAAK,CAAA;gBACU,YAAY,EAAA,CAAA;sBAAjC,KAAK;uBAAC,aAAa,CAAA;gBACJ,MAAM,EAAA,CAAA;sBAArB,KAAK;uBAAC,OAAO,CAAA;gBACM,UAAU,EAAA,CAAA;sBAA7B,KAAK;uBAAC,WAAW,CAAA;gBACL,GAAG,EAAA,CAAA;sBAAf,KAAK;uBAAC,IAAI,CAAA;gBACS,UAAU,EAAA,CAAA;sBAA7B,KAAK;uBAAC,WAAW,CAAA;;;ACKT,MAAA,oBAAoB,GAAoB;AACjD,IAAA,EAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAC;AAC1D,IAAA,EAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,qCAAqC,EAAC;EAC5E;AAEW,MAAA,iBAAiB,GAA0B;AACpD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,SAAS,EAAE,4BAA4B;QACvC,QAAQ,EAAE,CAAC,OAAO,CAAC;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,SAAS,EAAE,4BAA4B;QACvC,QAAQ,EAAE,CAAC,OAAO,CAAC;AACtB,KAAA;AACD,IAAA,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAC;AAClC,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,OAAO;AAChB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,YAAY;AACrB,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,MAAM;AACf,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,MAAM;AACf,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,cAAc,EAAE;AACZ,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACJ,SAAA;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,+BAA+B;QAC1C,QAAQ,EAAE,CAAC,OAAO,CAAC;AACtB,KAAA;AACD,IAAA,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAC;AACnC,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,SAAS,EAAE,mCAAmC;QAC9C,QAAQ,EAAE,CAAC,OAAO,CAAC;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,6BAA6B;QACxC,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC/B,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,mCAAmC;QAC9C,QAAQ,EAAE,CAAC,OAAO,CAAC;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,SAAS,EAAE,6CAA6C;QACxD,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC/B,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,SAAS,EAAE,sCAAsC;QACjD,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC/B,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,QAAQ,EAAE,EAAE;AACf,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,SAAS,EAAE,+BAA+B;AAC1C,QAAA,QAAQ,EAAE,EAAE;AACf,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC/B,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,QAAQ,EAAE,EAAE;AACf,KAAA;EACH;AAEI,SAAU,4BAA4B,CAAC,SAA2B,EAAA;AACpE,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;AAClF,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,6BAA6B,CAAC,SAA2B,EAAA;AACrE,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC;AACrH,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,6BAA6B,CAAC,SAA2B,EAAA;AACrE,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAC,CAAC,CAAC;AACrH,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,uBAAuB,CAAC,SAA2B,EAAA;AAC/D,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAC,CAAC,CAAC;AACnG,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,uBAAuB,CAAC,SAA2B,EAAA;AAC/D,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAC,CAAC,CAAC;AACnG,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,+BAA+B,CAAC,SAA2B,EAAA;AACvE,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC,CAAC;AAC/G,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,yBAAyB,CAAC,SAA2B,EAAA;AACjE,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;AAC/E,KAAC,CAAC;AACN,CAAC;AAEe,SAAA,2BAA2B,CAAC,SAA2B,EAAE,QAAkB,EAAA;AACvF,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;AAC/C,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,UAAuC,CAAC;AAC5E,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC;AAE9C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,eAAe,CAAC,kBAAkB,EAAE;YACpC,UAAU,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC1D,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAC,GAAG,EAAE,UAAU,EAAC,CAAC,CAAC;AAChF,KAAC,CAAC;AACN,CAAC;AAEe,SAAA,2BAA2B,CAAC,SAA2B,EAAE,QAAkB,EAAA;AACvF,IAAA,OAAO,CAAC,KAAU,EAAE,KAA2B,KAAI;AAC/C,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,UAAuC,CAAC;AAC5E,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC;AAE9C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,eAAe,CAAC,kBAAkB,EAAE;YACpC,UAAU,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC1D,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAC,GAAG,EAAE,UAAU,EAAC,CAAC,CAAC;AAChF,KAAC,CAAC;AACN,CAAC;MAEY,2BAA2B,GAAG,CAAC,SAA2B,EAAE,QAAkB,KAAW;IAClG,OAAO;QACH,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,EAAC;QACpE,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,CAAC,SAAS,CAAC,EAAC;QACtE,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,CAAC,SAAS,CAAC,EAAC;QACtE,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,EAAC;QAC1D,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,EAAC;QAC1D,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,+BAA+B,CAAC,SAAS,CAAC,EAAC;QACtE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAAC;AAC9D,QAAA,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAC;AAC5E,QAAA,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAC;KAC/E,CAAC;AACN;;ACnRM,SAAU,uBAAuB,CAAC,SAA2B,EAAE,QAAkB,EAAE,eAAgC,EAAE,EAAA;IACvH,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC;IAEjD,IAAI,KAAK,GAAG,iBAAiB,CAAC;AAC9B,IAAA,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;QAC5B,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,EAAE,CAAC;AACd,SAAA;AACD,QAAA,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,KAAA;IAED,IAAI,QAAQ,GAAG,oBAAoB,CAAC;AACpC,IAAA,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;QAC/B,IAAI,CAAC,KAAK,EAAE;YACR,QAAQ,GAAG,EAAE,CAAC;AACjB,SAAA;AACD,QAAA,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7D,KAAA;IAED,IAAI,kBAAkB,GAAG,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1E,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE,qBAAqB,KAAK,UAAU,EAAE;QAClE,IAAI,CAAC,KAAK,EAAE;YACR,kBAAkB,GAAG,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AACzG,KAAA;IAED,OAAO;AACH,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,kBAAkB,EAAE,kBAAkB;KACzC,CAAC;AACN;;ICCY,uBAEX;AAFD,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,sBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe,CAAA;AACnB,CAAC,EAFW,sBAAsB,KAAtB,sBAAsB,GAEjC,EAAA,CAAA,CAAA,CAAA;SAOe,iBAAiB,CAAC,MAAuB,EAAE,GAAG,QAA0B,EAAA;AACpF,IAAA,MAAM,SAAS,GAAe;;QAE1B,aAAa;QACb,cAAc;QACd,mBAAmB;;QAGnB,YAAY;QACZ,WAAW;QACX,cAAc;QACd,mBAAmB;QACnB,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,qBAAqB;QACrB,4BAA4B;QAC5B,QAAQ;AAER,QAAA;AACI,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,QAAQ,EAAE,MAAM;AACnB,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,UAAU,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE;AACvC,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,UAAU,EAAE,MAAM,uBAAuB,CAAC,GAAG,EAAE;AAClD,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,UAAU,EAAE,6BAA6B;AACzC,YAAA,IAAI,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC;AAC1C,YAAA,KAAK,EAAE,IAAI;AACd,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,CAAC;AAC3D,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,sCAAsC;AAC/C,YAAA,QAAQ,EAAE,wBAAwB;AACrC,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,QAAQ,EAAE,kCAAkC;AAC/C,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,UAAU,EAAE,MAAM,gBAAgB,CAAC,GAAG,EAAE;AAC3C,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,KAAK,EAAE,IAAI;AACd,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,QAAQ,EAAE,eAAe;AAC5B,SAAA;QACD,4BAA4B;AAC5B,QAAA;AACI,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,WAAW,EAAE,4BAA4B;AAC5C,SAAA;QACD,2BAA2B;KAC9B,CAAC;AAEF,IAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;QACjB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACnC,KAAC,CAAC,CAAC;IAEH,SAAS,CAAC,IAAI,CAAC;AACX,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,WAAW,EAAE,2BAA2B;AAC3C,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,SAAS,CAAC;AACrB;;MC9Ha,6BAA6B,CAAA;AA0BtC,IAAA,WAAA,CAAoB,UAA6B,EAAA;QAA7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAzBzC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAyB,CAAA,yBAAA,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3F,IAA0B,CAAA,0BAAA,GAAG,KAAK,CAAC;QACnC,IAAiC,CAAA,iCAAA,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC3G,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAChC,IAA8B,CAAA,8BAAA,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAErG,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAqB,CAAA,qBAAA,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnF,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAqB,CAAA,qBAAA,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnF,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAEzB,IAAiB,CAAA,iBAAA,GAAQ,IAAI,CAAC;QAC9B,IAAwB,CAAA,wBAAA,GAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAErF,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAClB,IAAiB,CAAA,iBAAA,GAAqB,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3E,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QACnB,IAAkB,CAAA,kBAAA,GAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAGhF,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;AACjD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;KACpD;AAED,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,CAAC;KACxD;IAED,IAAI,iBAAiB,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,IAAI,0BAA0B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,YAAY,EAAE,CAAC;KAChE;IAED,IAAI,yBAAyB,CAAC,KAAc,EAAA;AACxC,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtD;AAED,IAAA,IAAI,uBAAuB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE,CAAC;KAC7D;IAED,IAAI,sBAAsB,CAAC,KAAc,EAAA;AACrC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnD;AAED,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;KACpD;IAED,IAAI,aAAa,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;AAED,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;KACpD;IAED,IAAI,aAAa,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;IAED,IAAI,eAAe,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;IAED,IAAI,eAAe,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;AAED,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC;KACvD;IAED,IAAI,gBAAgB,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAChD;IAED,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxF;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACvF;IAED,IAAI,UAAU,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpD,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAChC,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACzD,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACvC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;;AAGD,IAAA,cAAc,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAClC,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAC7C,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;;AAGD,IAAA,kBAAkB,CAAC,KAAU,EAAA;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC3D,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;aACrC,EAAE,GAAG,CAAC,CAAC;AACX,SAAA;KACJ;;AAGD,IAAA,mBAAmB,CAAC,KAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC3D,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aAC1B,EAAE,GAAG,CAAC,CAAC;AACX,SAAA;KACJ;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC;AACrE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC/D,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;IAED,iBAAiB,CAAC,KAAU,EAAE,IAAS,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAE7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED,IAAA,oBAAoB,CAAC,KAAU,EAAA;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAChD;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC/C;AAEO,IAAA,cAAc,CAAC,KAAa,EAAA;QAChC,OAAO,KAAK,GAAG,GAAG,CAAC;KACtB;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;QAC/B,OAAO,KAAK,IAAI,GAAG,CAAC;KACvB;8GAnOQ,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA7B,6BAA6B,EAAA,CAAA,CAAA,EAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;;;MCWE,sBAAsB,CAAA;AAQ/B,IAAA,WAAA,CAAmB,UAA6B,EAAA;QAA7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAPzC,QAAA,IAAA,CAAA,qBAAqB,GAAgC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAC5F,GAAG,CAAC,CAAC,EAAsB,KAAI;AAC3B,YAAA,IAAI,CAAC,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC;AACrB,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SAClC,CAAC,CACL,CAAC;AACK,QAAA,IAAA,CAAA,kBAAkB,GAA2B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3G;AAE5C,IAAA,cAAc,CAAC,IAAiB,EAAA;QACpC,OAAO;AACH,YAAA,GAAG,IAAI;YACP,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,eAAe,EAAE,IAAI,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI,CAAC,SAAS;SACjB,CAAC;KACjB;8GAjBQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,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,EClBnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qSAKA,EDUc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,+LAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG5B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,OAAA,EAEjB,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAA,eAAA,EACrB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qSAAA,EAAA,CAAA;;;MEHtC,kBAAkB,CAAA;AAG3B,IAAA,WAAA,CAAmB,UAA6B,EAAA;QAA7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAFzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;KAEM;8GAH3C,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb/B,4aAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGc,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,YAAY,EAEb,OAAA,EAAA,CAAC,eAAe,CAAC,EAAA,eAAA,EACT,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4aAAA,EAAA,CAAA;;;MEKtC,4BAA4B,CAAA;AANzC,IAAA,WAAA,GAAA;QAOoB,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC,CAAC;AACjF,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AA4B5D,KAAA;AA1BU,IAAA,wBAAwB,CAAC,OAAuB,EAAA;QACnD,IAAI,OAAO,EAAE,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC;QAEvC,QAAQ,OAAO,EAAE,QAAQ;AACrB,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,gBAAgB,CAAC;AAC5B,YAAA,KAAK,SAAS;AACV,gBAAA,OAAO,yBAAyB,CAAC;AACrC,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,iBAAiB,CAAC;AAC7B,YAAA,KAAK,SAAS;AACV,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA;AACI,gBAAA,OAAO,EAAE,CAAC;AACjB,SAAA;KACJ;AAEM,IAAA,0BAA0B,CAAC,OAAgB,EAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACxC;AAEM,IAAA,oCAAoC,CAAC,OAAgB,EAAA;QACxD,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,SAAA;KACJ;8GA9BQ,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBzC,0nDAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBc,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAElG,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,EAEP,OAAA,EAAA,CAAC,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,gCAAgC,CAAC,EAAA,QAAA,EAAA,0nDAAA,EAAA,CAAA;;;MEVnG,SAAS,CAAA;IACX,OAAO,uBAAuB,CAAC,IAAmB,EAAA;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChF,QAAA,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;KACxD;AAEM,IAAA,OAAO,oBAAoB,CAAC,QAAuB,EAAE,IAAmB,EAAA;AAC3E,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAClC,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAE,iBAAiB,EAAC,CAAC,CAAC;AAC5E,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,SAAS,CAAC,uBAAuB,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACpE,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;KACJ;AAEM,IAAA,OAAO,sBAAsB,CAAC,IAA4B,EAAE,GAA2B,EAAA;QAC1F,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAChD,YAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACvE,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,SAAA;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnE,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1F,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,gBAAA,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;oBACxB,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE;AACrC,wBAAA,OAAO,KAAK,CAAC;AAChB,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,MAAM;AACT,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,OAAO,iCAAiC,CAAC,YAAsB,EAAE,YAAgC,EAAA;AACpG,QAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,IAAG;AACxB,YAAA,MAAM,aAAa,GAAG,EAAC,GAAG,CAAC,EAAC,CAAC;YAC7B,IAAI,aAAa,CAAC,UAAU,EAAE;AAC1B,gBAAA,aAAa,CAAC,UAAU,GAAG,SAAS,CAAC,oBAAoB,CACrD,YAAY,CAAC,UAAU,EACvB,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CACvG,CAAC;AACL,aAAA;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AACpC,gBAAA,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,iCAAiC,CAAC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AACnG,aAAA;AACD,YAAA,OAAO,aAAa,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;AACJ;;MCgBY,oBAAoB,CAAA;AAmC7B,IAAA,WAAA,CACY,QAAkB,EAClB,MAAc,EACd,KAAqB,EACrB,SAA2B,EAC3B,aAAsC,EACvC,UAA6B,EAC7B,iBAAgD,EAAA;QAN/C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA+B;QAxClD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QACV,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QACb,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;AAEhB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,YAAY,EAAW,CAAC;QAE9C,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QACzB,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAE9D,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;QACT,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAEb,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAEnD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAG7C,IAAyB,CAAA,yBAAA,GAA+B,EAAE,CAAC;AAsB/D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvF;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;gBAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzD,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,IAAG;;YAEzE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAChE,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AACnE,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACxB,YAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;gBACjH,IAAI,EAAE,MAAM,IAAG;AACX,oBAAA,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC,IAAkC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAK,CAAC,CAAC,IAAsB,CAAC,SAAU,CAAC,CAAC;oBACvJ,SAAS,GAAG,SAAS,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAE9E,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5B,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAE/B,IAAI,CAAC,6BAA6B,EAAE,CAAC;iBACxC;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAG;AAChE,YAAA,IAAI,IAAI,YAAY,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;AACvD,gBAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,aAAA;iBAAM,IAAI,IAAI,YAAY,aAAa,EAAE;AACtC,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE;AACtE,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;gBAC3F,IAAI,EAAE,WAAW,IAAG;AAChB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC7C;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;QAED,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEzE,QAAA,IAAI,CAAC,6BAA6B,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;YACtI,IAAI,EAAE,GAAG,IAAG;AACR,gBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,SAAS,CAAC;AACrC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzC;AACJ,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAG;AACvD,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACxC;IAED,0BAA0B,GAAA;QACtB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAwB;AACnE,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO;AAC3C,gBAAA,QAAQ,EAAE,SAAS;AACtB,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,SAAA;KACJ;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACV,SAAA;;QAGD,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;AACpF,SAAA;;QAGD,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAG9C,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAEnB,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE;AACnC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACzD,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACnC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACpD,aAAA;;AAGD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE;AACtE,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,KAAK,CAAC;AAClD,aAAA;AACJ,SAAA;KACJ;IAED,YAAY,GAAA;;QAER,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE;YAC7H,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,2BAA2B,EAAE,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,6BAA6B,EAAE,WAAW,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,8BAA8B,EAAE,WAAW,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE,CAAC;KACvD;AAED,IAAA,oBAAoB,CAAC,OAAgB,EAAE,IAAiB,EAAE,GAAW,EAAA;QACjE,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrD;AAEO,IAAA,iCAAiC,CAAC,WAAgC,EAAA;AACtE,QAAA,IAAI,CAAC,2BAA2B,EAAE,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;YAC1B,MAAM,GAAG,GAAoC,EAAE,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClC,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;oBACtC,MAAM,eAAe,GAAG,KAAsB,CAAC;AAE/C,oBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACtC,wBAAA,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAEzE,wBAAA,IAAI,cAA6C,CAAC;wBAClD,IAAI,cAAc,YAAY,UAAU,EAAE;4BACtC,cAAc,GAAG,cAAc,CAAC;AACnC,yBAAA;6BAAM,IAAI,cAAc,YAAY,OAAO,EAAE;AAC1C,4BAAA,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACzC,yBAAA;AAAM,6BAAA;AACH,4BAAA,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;AACvC,yBAAA;wBACD,GAAG,CAAC,IAAI,CACJ,cAAc,CAAC,IAAI,CACf,KAAK,EAAE,EACP,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC;AAC3B,yBAAA,CACJ,CAAC;AACN,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,2BAA2B,GAAG,aAAa,CAAC,GAAG,CAAC;iBAChD,IAAI,CAAC,KAAK,EAAE,CAAC;iBACb,SAAS,CAAC,IAAI,IAAG;AACd,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAC,CAAC,CAAC;AACV,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;KACJ;IAEO,6BAA6B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC,CAAC;AAE/F,YAAA,IAAI,CAAC,8BAA8B,GAAG,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AAC5J,gBAAA,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,eAAe,CAAC;AACpD,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;8GAvPQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAArB,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAsB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,CAAA,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,+YChFjC,q9HAuFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPa,oBAAoB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EA1CnB,SAAS,EAAE,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mFAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAC7E,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,UAAU,EAAE;AAChB,gBAAA,KAAK,CACD,MAAM,EACN,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,KAAK;AAChB,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,gBAAgB,EAChB,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,KAAK;AAChB,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,iBAAiB,EACjB,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,GAAG;AACd,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,SAAS,EACT,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,SAAS,EAAE,GAAG;AACjB,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,QAAQ,EACR,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,KAAK;AACb,oBAAA,SAAS,EAAE,GAAG;AACjB,iBAAA,CAAC,CACL;AACD,gBAAA,UAAU,CAAC,mCAAmC,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;AAChG,gBAAA,UAAU,CAAC,mCAAmC,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;AAChG,gBAAA,UAAU,CAAC,kDAAkD,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aAClH,CAAC;AACL,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAGQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApDhC,SAAS;iCACM,IAAI,EAAA,QAAA,EAEN,gBAAgB,EAGpB,IAAA,EAAA;AACF,wBAAA,8BAA8B,EAAE,MAAM;AACtC,wBAAA,yBAAyB,EAAE,QAAQ;AACtC,qBAAA,EAAA,OAAA,EACQ,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAC9E,UAAA,EAAA;wBACR,OAAO,CAAC,UAAU,EAAE;AAChB,4BAAA,KAAK,CACD,MAAM,EACN,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,KAAK;AAChB,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,gBAAgB,EAChB,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,KAAK;AAChB,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,iBAAiB,EACjB,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,GAAG;AACd,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,SAAS,EACT,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,GAAG;AACX,gCAAA,SAAS,EAAE,GAAG;AACjB,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,QAAQ,EACR,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,KAAK;AACb,gCAAA,SAAS,EAAE,GAAG;AACjB,6BAAA,CAAC,CACL;AACD,4BAAA,UAAU,CAAC,mCAAmC,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;AAChG,4BAAA,UAAU,CAAC,mCAAmC,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;AAChG,4BAAA,UAAU,CAAC,kDAAkD,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;yBAClH,CAAC;AACL,qBAAA,EAAA,QAAA,EAAA,q9HAAA,EAAA,CAAA;oQAIwB,IAAI,EAAA,CAAA;sBAA5B,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACd,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEmB,yBAAyB,EAAA,CAAA;sBAAjD,MAAM;uBAAC,eAAe,CAAA;gBAEY,kBAAkB,EAAA,CAAA;sBAApD,WAAW;uBAAC,YAAY,CAAA;gBACY,uBAAuB,EAAA,CAAA;sBAA3D,WAAW;uBAAC,cAAc,CAAA;;;MEzElB,mBAAmB,CAAA;IAU5B,WACY,CAAA,YAA0B,EAC1B,cAAiC,EAAA;QADjC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AALrC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAKjD;IAEJ,QAAQ,GAAA;QACJ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAChD,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAsB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAyB,CAAC,EAAE;AACzF,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAA4B,CAAC;AACjD,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBAEtC,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,oBAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC;wBAC/E,IAAI,EAAE,GAAG,IAAG;AACR,4BAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;AACnF,4BAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACnC;wBACD,KAAK,EAAE,MAAK;AACR,4BAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,4BAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACnC;AACJ,qBAAA,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;AAClG,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAA0B,CAAC;AAC7C,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpE,aAAA;AACJ,SAAA;KACJ;8GA7CQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EChBhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qVAeA,EDCa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,wEAHlB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,aAAa,EAEd,OAAA,EAAA,CAAC,SAAS,CAAC,EAAA,eAAA,EACH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qVAAA,EAAA,CAAA;2GAGtB,WAAW,EAAA,CAAA;sBAAnC,KAAK;uBAAC,SAAS,CAAA;;;MECP,gBAAgB,CAAA;AAGzB,IAAA,WAAA,CACY,KAAqB,EACtB,UAA6B,EAC7B,iBAAgD,EAAA;QAF/C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA+B;QALpD,IAAS,CAAA,SAAA,GAAuB,EAAE,CAAC;KAMtC;IAEJ,QAAQ,GAAA;QACJ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9C,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAkC,EAAE,SAAS,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAsB,CAAC,SAAU,CAAC;AAC3E,SAAA;KACJ;8GAfQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB7B,2pEAgDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG1E,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,UAAU,EAAA,OAAA,EAEX,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,UAAU,CAAC,EACnE,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2pEAAA,EAAA,CAAA;;;MEEtC,sBAAsB,CAAA;AAO/B,IAAA,WAAA,CACW,UAAsB,EACtB,UAA6B,EAC7B,iBAAgD,EAAA;QAFhD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA+B;QAPpD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QAE9E,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAMvC;IAEJ,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAG;AAChC,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACjB,CAAC,CACL,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;KAChD;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;IAEM,MAAM,CAAC,IAAuB,EAAE,KAAY,EAAA;AAC/C,QAAA,IAAI,OAAO,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,SAAA;KACJ;AAEM,IAAA,KAAK,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KAClF;8GApCQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,6BAAA,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,qFClBnC,0yCAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDjBuB,SAAS,EAAE,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,uFAAE,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG3D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,2BAA2B,EAAA,OAAA,EAC5B,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,CAAC,EAAA,QAAA,EAAA,0yCAAA,EAAA,CAAA;;;MEU5D,kBAAkB,CAAA;IAW3B,WACY,CAAA,cAA8B,EAC9B,KAAqB,EACtB,UAA6B,EAC7B,iBAAgD,EACjB,MAAuB,EAAA;QAJrD,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA+B;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAZ1D,IAAmB,CAAA,mBAAA,GAAc,sBAAsB,CAAC;QACxD,IAAa,CAAA,aAAA,GAAc,gBAAgB,CAAC;QAC5C,IAAmB,CAAA,mBAAA,GAAc,sBAAsB,CAAC;AAExD,QAAA,IAAA,CAAA,SAAS,GAAkB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;KAQ3B;IAEJ,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5C,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AACvE,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5C,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;AACvE,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3D,SAAA;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;KAC/D;AAEM,IAAA,cAAc,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC;KAC1C;AApCQ,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,kBAAkB,sJAgBf,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAhBvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,yMACb,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BtC,4xCA8BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDRc,SAAS,EAAE,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,+BAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAyB,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,kWAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7H,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,YAAY,EAEb,OAAA,EAAA,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,eAAA,EACtH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4xCAAA,EAAA,CAAA;;0BAkB1C,MAAM;2BAAC,oBAAoB,CAAA;yCAfI,SAAS,EAAA,CAAA;sBAA5C,YAAY;uBAAC,oBAAoB,CAAA;gBACP,kBAAkB,EAAA,CAAA;sBAA5C,SAAS;uBAAC,cAAc,CAAA;;;MENhB,sBAAsB,CAAA;AARnC,IAAA,WAAA,GAAA;AAWoB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE/C,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAc,kBAAkB,CAAC;QAChD,IAAa,CAAA,aAAA,GAAc,gBAAgB,CAAC;QAC5C,IAAe,CAAA,eAAA,GAAc,kBAAkB,CAAC;AAsB1D,KAAA;IApBG,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC;QAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;AACxC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAC/D,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3D,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;AACxC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAC/D,SAAA;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;KACzD;AAGD,IAAA,cAAc,CAAC,KAAc,EAAA;AACzB,QAAA,MAAM,MAAM,GAAQ,KAAK,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;KAC/E;8GA/BQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,kIAJpB,CAAC,6BAA6B,CAAC,EAK5B,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,oBAAoB,gDCtBtC,qxDAwCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBc,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,8CAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAE,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,qEAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGxG,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,iBAAiB,EAEhB,SAAA,EAAA,CAAC,6BAA6B,CAAC,EAAA,OAAA,EACjC,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,EAAE,4BAA4B,EAAE,gBAAgB,CAAC,EAAA,eAAA,EACjG,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qxDAAA,EAAA,CAAA;8BAGX,SAAS,EAAA,CAAA;sBAA5C,YAAY;uBAAC,oBAAoB,CAAA;gBA2BlC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME5BhC,wBAAwB,CAAA;AAPrC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAExC,QAAA,IAAA,CAAA,kBAAkB,GAA2B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAUlK,KAAA;AARW,IAAA,cAAc,CAAC,IAAiB,EAAA;QACpC,OAAO;AACH,YAAA,GAAG,IAAI;YACP,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,eAAe,EAAE,IAAI,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI,CAAC,SAAS;SACjB,CAAC;KACjB;8GAZQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBrC,obAYA,EDIuB,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAInE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,mBAAmB,EAAA,OAAA,EACpB,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,EAE5D,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,obAAA,EAAA,CAAA;;;MEFtC,qBAAqB,CAAA;IAU9B,WACY,CAAA,YAA0B,EAC1B,cAAiC,EAAA;QADjC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AALrC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAKjD;IAEJ,QAAQ,GAAA;QACJ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAChD,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAsB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAyB,CAAC,EAAE;AACzF,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAA4B,CAAC;AACjD,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBAEtC,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,oBAAA,IAAI,CAAC,cAAc;yBACd,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC;AACpD,yBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,yBAAA,SAAS,CAAC;wBACP,IAAI,EAAE,GAAG,IAAG;AACR,4BAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;AACnF,4BAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACnC;wBACD,KAAK,EAAE,MAAK;AACR,4BAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,4BAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACnC;AACJ,qBAAA,CAAC,CAAC;AACV,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;AAClG,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAA0B,CAAC;AAC7C,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpE,aAAA;AACJ,SAAA;KACJ;8GAhDQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EChBlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0VAeA,EDCa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,2EAHpB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,gBAAgB,EAEjB,OAAA,EAAA,CAAC,SAAS,CAAC,EAAA,eAAA,EACH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0VAAA,EAAA,CAAA;2GAGtB,WAAW,EAAA,CAAA;sBAAnC,KAAK;uBAAC,SAAS,CAAA;;;MEAP,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEvC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,IAAgB,CAAA,gBAAA,GAAsB,qBAAqB,CAAC;AAOtE,KAAA;IALG,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,EAAE;AACzD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;AACrE,SAAA;KACJ;8GAXQ,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,ECjBjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,usBAcA,EDAc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FAA2C,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGhF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,eAAe,EAEhB,OAAA,EAAA,CAAC,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,CAAC,EACzE,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,usBAAA,EAAA,CAAA;;;MENtC,+BAA+B,CAAA;AAD5C,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,MAAM,GAAoB,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAExD,IAAK,CAAA,KAAA,GAAG,MAAM,CAAc;AAC/B,YAAA,yBAAyB,EAAE,KAAK;AAChC,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,oBAAoB,EAAE,KAAK;AAC3B,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,QAAQ,EAAE,KAAK;AAClB,SAAA,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAO,CAAC;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AAsDzD,KAAA;IApDG,YAAY,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACxB,gBAAA,GAAG,KAAK;AACR,gBAAA,iBAAiB,EAAE,CAAC,KAAK,CAAC,iBAAiB;AAC9C,aAAA,CAAC,CAAC,CAAC;AAEJ,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE;AAChC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACxB,gBAAA,GAAG,KAAK;AACR,gBAAA,yBAAyB,EAAE,CAAC,KAAK,CAAC,yBAAyB;AAC9D,aAAA,CAAC,CAAC,CAAC;AACP,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACxB,gBAAA,GAAG,KAAK;AACR,gBAAA,sBAAsB,EAAE,CAAC,KAAK,CAAC,sBAAsB;AACxD,aAAA,CAAC,CAAC,CAAC;AAEJ,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,sBAAsB,EAAE;AACrC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAA;AACJ,SAAA;KACJ;IAED,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC;KACvD;IAED,MAAM,GAAA;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC;KACpD;IAED,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC;KACzD;IAED,SAAS,GAAA;AACL,QAAA,OAAO,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;KAClC;IAED,QAAQ,GAAA;AACJ,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;KAC5B;8GApEQ,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA/B,+BAA+B,EAAA,CAAA,CAAA,EAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;;;MCOE,WAAW,CAAA;AAHxB,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAEvC,IAAS,CAAA,SAAA,GAAuB,EAAE,CAAC;QACnC,IAAgC,CAAA,gCAAA,GAAmB,EAAE,CAAC;AAwGjE,KAAA;AAtGG,IAAA,UAAU,CAAC,SAA6B,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAE3B,QAAA,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC;AAE3C,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACnF,YAAA,IAAI,CAAC,wBAAwB,CAAE,CAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC1E,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAClD;AAEO,IAAA,oBAAoB,CAAC,SAA6B,EAAE,SAAS,GAAG,EAAE,EAAA;QACtE,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACjB,gBAAA,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjE,aAAA;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,aAAA;iBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1B,gBAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;AAC/C,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,wBAAwB,CAAC,GAAW,EAAA;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACjE,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACvD,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAkC,+BAAA,EAAA,GAAG,CAA+B,6BAAA,CAAA,EAAE,OAAO,CAAC,CAAC;gBAChG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,aAAA;AAED,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA4C,yCAAA,EAAA,GAAG,CAAE,CAAA,EAAE,OAAO,CAAC,CAAC;AAChF,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,gCAAgC,CAAC,QAAqB,EAAA;AAC1D,QAAA,IAAI,CAAC,gCAAgC,CAAC,IAAI,CACtC,IAAI,CAAC,SAAS;AACT,aAAA,uBAAuB,CAAC,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAC;AACnD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,MAAM,IAAG;AACX,gBAAA,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC,CAAC,IAAkC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAK,CAAC,CAAC,IAAsB,CAAC,SAAU,CAAC,CAAC;gBACvJ,SAAS,GAAG,SAAS,CAAC,iCAAiC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE7E,gBAAA,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3B,gBAAA,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC;gBAE9B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAClD;AACJ,SAAA,CAAC,CACT,CAAC;KACL;IAEO,sBAAsB,CAAC,SAA6B,EAAE,GAAW,EAAA;QACrE,MAAM,OAAO,GAAoB,EAAE,CAAC;AACpC,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAC9B,IAAI,QAAQ,CAAC,UAAU,EAAE;AACrB,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC5E,gBAAA,IAAI,QAAQ,EAAE;oBACV,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/B,wBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtE,wBAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;4BACzB,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5B,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5B,qBAAA;AACJ,iBAAA;AACJ,aAAA;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACtC,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtE,gBAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzB,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;8GAlHQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,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,WAAW,cAFR,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAET,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCwDY,sBAAsB,CAAA;AA6B/B,IAAA,WAAA,GAAA;AA5BiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAyB,CAAA,yBAAA,GAA+B,EAAE,CAAC;QAQf,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AACxC,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,YAAY,EAAW,CAAC;AAI1E,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAG3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;YACtE,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AACtG,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACpE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;gBAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAG;AAChE,YAAA,IAAI,IAAI,YAAY,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;AACvD,gBAAA,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,aAAA;iBAAM,IAAI,IAAI,YAAY,aAAa,EAAE;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE;AAChC,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa;AACb,iBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,iBAAA,SAAS,CAAC;gBACP,IAAI,EAAE,WAAW,IAAG;AAChB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC7C;AACJ,aAAA,CAAC,CAAC;AACV,SAAA;QAED,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEzE,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrF,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,GAAG,IAAG;AACR,gBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAC/B;AACJ,SAAA,CAAC,CAAC;QAEP,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACxC;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE;AAClI,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AAClG,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,2BAA2B,EAAE,WAAW,EAAE,CAAC;KACnD;AAED,IAAA,IAAI,gBAAgB,GAAA;QAChB,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE;AACpG,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC/C,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,GAAG,WAAW,CAAC;AAC5E,SAAA;KACJ;AAED,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KACtC;AAEM,IAAA,SAAS,CAAC,KAAY,EAAA;;AAEzB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACV,SAAA;;QAGD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE;AAClG,gBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;AAC7C,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACtC,oBAAA,GAAG,KAAK;AACR,oBAAA,sBAAsB,EAAE,KAAK;AAChC,iBAAA,CAAC,CAAC,CAAC;AACP,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE;AAChE,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACtC,oBAAA,GAAG,KAAK;AACR,oBAAA,eAAe,EAAE,KAAK;AACzB,iBAAA,CAAC,CAAC,CAAC;AACP,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,iBAAiB,CAAC,KAAqB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE;AACnI,YAAA,MAAM,EAAE,GAAqB,KAAK,CAAC,OAAO,CAAC;AAC3C,YAAA,MAAM,QAAQ,GAAqB,EAAE,CAAC,aAAa,CAAC;AACpD,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACxC,SAAA;KACJ;AAEM,IAAA,oBAAoB,CAAC,OAAgB,EAAE,IAAiB,EAAE,GAAW,EAAA;QACxE,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrD;IAEO,iBAAiB,CAAC,OAAoB,EAAE,MAAmB,EAAA;AAC/D,QAAA,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AAC/C,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;AACnC,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;;AAGrC,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AACvB,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE;AAChE,gBAAA,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,CAAG,EAAA,GAAG,IAAI,MAAM,GAAG,OAAO,CAAC,CAAA,EAAA,CAAI,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC;AACvF,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,iCAAiC,CAAC,WAAgC,EAAA;AACtE,QAAA,IAAI,CAAC,2BAA2B,EAAE,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;YAC1B,MAAM,GAAG,GAAoC,EAAE,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClC,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;oBACtC,MAAM,eAAe,GAAG,KAAsB,CAAC;AAE/C,oBAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACtC,wBAAA,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAEzE,wBAAA,IAAI,cAA6C,CAAC;wBAClD,IAAI,cAAc,YAAY,UAAU,EAAE;4BACtC,cAAc,GAAG,cAAc,CAAC;AACnC,yBAAA;6BAAM,IAAI,cAAc,YAAY,OAAO,EAAE;AAC1C,4BAAA,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACzC,yBAAA;AAAM,6BAAA;AACH,4BAAA,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;AACvC,yBAAA;wBACD,GAAG,CAAC,IAAI,CACJ,cAAc,CAAC,IAAI,CACf,KAAK,EAAE,EACP,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC;AAC3B,yBAAA,CACJ,CAAC;AACN,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,2BAA2B,GAAG,aAAa,CAAC,GAAG,CAAC;iBAChD,IAAI,CAAC,KAAK,EAAE,CAAC;iBACb,SAAS,CAAC,IAAI,IAAG;AACd,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAC,CAAC,CAAC;AACV,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;KACJ;IAEO,0BAA0B,GAAA;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAwB;AACrD,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO;AAC3C,gBAAA,QAAQ,EAAE,SAAS;AACtB,aAAA,CAAC,CACL,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAA;KACJ;IAEO,6BAA6B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC,CAAC;YAE/F,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;AAChG,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACzC,SAAS,CAAC,OAAO,IAAG;AACjB,gBAAA,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACV,SAAA;KACJ;8GA7OQ,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,ECtEnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iuGAsEA,EDAa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,oHAhCrB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1B,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAEjE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,UAAU,EAAE;AAChB,gBAAA,KAAK,CACD,WAAW,EACX,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,GAAG;AACd,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,UAAU,EACV,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,GAAG;AACd,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,QAAQ,EACR,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE,MAAM;AAClB,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,SAAS,EACT,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE,OAAO;AACnB,iBAAA,CAAC,CACL;AACD,gBAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;aACxF,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEQ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArClC,SAAS;iCACM,IAAI,EAAA,QAAA,EAEN,mBAAmB,EAEpB,OAAA,EAAA,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,CAAC,mBACxE,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA;wBACR,OAAO,CAAC,UAAU,EAAE;AAChB,4BAAA,KAAK,CACD,WAAW,EACX,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,GAAG;AACd,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,UAAU,EACV,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,GAAG;AACd,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,QAAQ,EACR,KAAK,CAAC;AACF,gCAAA,OAAO,EAAE,MAAM;AAClB,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,SAAS,EACT,KAAK,CAAC;AACF,gCAAA,OAAO,EAAE,OAAO;AACnB,6BAAA,CAAC,CACL;AACD,4BAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;yBACxF,CAAC;AACL,qBAAA,EAAA,QAAA,EAAA,iuGAAA,EAAA,CAAA;wDAsBwB,IAAI,EAAA,CAAA;sBAA5B,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBAC6B,IAAI,EAAA,CAAA;sBAAvD,KAAK;;sBAAI,WAAW;uBAAC,4BAA4B,CAAA;gBACzB,yBAAyB,EAAA,CAAA;sBAAjD,MAAM;uBAAC,eAAe,CAAA;gBAED,OAAO,EAAA,CAAA;sBAA5B,SAAS;uBAAC,SAAS,CAAA;gBAuFhB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,uBAAuB,CAAA;;;MEpK3B,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAElE,IAAS,CAAA,SAAA,GAAuB,EAAE,CAAC;AAmB7C,KAAA;IAjBG,QAAQ,GAAA;QACJ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAkC,EAAE,SAAS,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAsB,CAAC,SAAU,CAAC,CAAC;AAC/F,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/C;AAEO,IAAA,aAAa,CAAC,SAAwB,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE;AAChE,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;AAC/B,SAAA;KACJ;8GAxBQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB/B,sSAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEc,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,aAAa,EACd,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAEhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sSAAA,EAAA,CAAA;;;MEEtC,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAO,CAAA,OAAA,GAAQ,IAAI,CAAC;QAIb,IAAa,CAAA,aAAA,GAAsB,kBAAkB,CAAC;AA0ChE,KAAA;IAxCG,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,KAAK,SAAS,EAAE;AACtD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7D,SAAA;KACJ;IAED,YAAY,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,aAAA;YACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACtC,gBAAA,GAAG,KAAK;AACR,gBAAA,aAAa,EAAE,IAAI;AACtB,aAAA,CAAC,CAAC,CAAC;AACP,SAAA;KACJ;IAED,YAAY,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACf,IAAI,CAAC,OAAO,GAAG,UAAU,CACrB,MACI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACtC,oBAAA,GAAG,KAAK;AACR,oBAAA,aAAa,EAAE,KAAK;AACvB,iBAAA,CAAC,CAAC,EACP,GAAG,CACN,CAAC;AACL,aAAA;AACJ,SAAA;KACJ;IAED,MAAM,GAAA;QACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACtC,YAAA,GAAG,KAAK;AACR,YAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ;AAC5B,SAAA,CAAC,CAAC,CAAC;KACP;8GAnDQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EChBlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gmCAoBA,EDRc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,gRAAsB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIxD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA,CAAC,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,EAEjD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gmCAAA,EAAA,CAAA;8BAUnB,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;;;MEHjB,wBAAwB,CAAA;AAPrC,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAIvC,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;AAgBzF,KAAA;IAdG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC1E,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;KAChD;IAEM,MAAM,CAAC,IAAuB,EAAE,KAAY,EAAA;AAC/C,QAAA,IAAI,OAAO,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,SAAA;KACJ;8GArBQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBrC,m/DAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDjCc,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIlF,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,8BAA8B,EAAA,OAAA,EAC/B,CAAC,SAAS,EAAE,qBAAqB,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAE3E,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m/DAAA,EAAA,CAAA;;;MEiBtC,oBAAoB,CAAA;AAlBjC,IAAA,WAAA,GAAA;AAmBW,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,MAAM,GAAoB,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAKxD,IAAmB,CAAA,mBAAA,GAAsB,wBAAwB,CAAC;QAClE,IAAmB,CAAA,mBAAA,GAAsB,wBAAwB,CAAC;AAElE,QAAA,IAAA,CAAA,SAAS,GAAkB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAqBlC,KAAA;IAnBG,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,KAAK,SAAS,EAAE;AAC5D,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;AACzE,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,KAAK,SAAS,EAAE;AAC5D,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;AACzE,SAAA;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;KAC/D;IAEM,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;AAEM,IAAA,cAAc,CAAC,QAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC;KAC1C;8GAjCQ,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,gNAOlB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CpC,srCA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPQ,qBAAqB,EAErB,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,8BAChB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGZ,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,4JACrB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,eAAe,EAChB,OAAA,EAAA;wBACL,qBAAqB;wBACrB,OAAO;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,YAAY;wBACZ,wBAAwB;wBACxB,SAAS;wBACT,cAAc;wBACd,qBAAqB;wBACrB,WAAW;qBACd,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,srCAAA,EAAA,CAAA;8BAQtB,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY,CAAA;gBACW,UAAU,EAAA,CAAA;sBAA3C,SAAS;uBAAC,qBAAqB,CAAA;;;MErBvB,wBAAwB,CAAA;AAejC,IAAA,WAAA,GAAA;AAdgB,QAAA,IAAA,CAAA,MAAM,GAAoB,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAMvC,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAsB,oBAAoB,CAAC;QAC1D,IAAoB,CAAA,oBAAA,GAAsB,wBAAwB,CAAC;QACnE,IAAe,CAAA,eAAA,GAAsB,oBAAoB,CAAC;AAG7D,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACtE,YAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChC,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAG;AAC9E,oBAAA,MAAM,gBAAgB,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3I,oBAAA,IAAI,gBAAgB,EAAE;wBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnB,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,sBAAsB,EAAE;gBACnD,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,0BAA0B,CAAC;QAChF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,KAAK,SAAS,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AACjE,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,KAAK,SAAS,EAAE;AAC5D,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;AAC1E,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,KAAK,SAAS,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AACjE,SAAA;KACJ;IAED,eAAe,GAAA;AACX,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;AACH,YAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC;AAChD,SAAA;KACJ;IAED,iBAAiB,GAAA;AACb,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACH,YAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACnJ,SAAA;KACJ;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK;AACtC,YAAA,GAAG,KAAK;AACR,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,eAAe,EAAE,KAAK;AACzB,SAAA,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,SAAA;KACJ;8GA/EQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAHtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,CAAC,+BAA+B,CAAC,kICnBhD,mqEA8CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7Bc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAkD,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EAAa,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,qEAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKxJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,oBAAoB,EAAA,OAAA,EACrB,CAAC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,SAAS,EAAE,4BAA4B,EAAE,gBAAgB,CAAC,EAAA,SAAA,EAEvJ,CAAC,+BAA+B,CAAC,EAAA,eAAA,EAC3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mqEAAA,EAAA,CAAA;wDAQvB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;;;IEMd,4BAYX;AAZD,CAAA,UAAY,2BAA2B,EAAA;AACnC,IAAA,2BAAA,CAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,2BAAA,CAAA,2BAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,2BAAA,CAAA,2BAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,2BAAA,CAAA,2BAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,2BAAA,CAAA,2BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,2BAAA,CAAA,2BAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe,CAAA;AACf,IAAA,2BAAA,CAAA,2BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,2BAAA,CAAA,2BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,2BAAA,CAAA,2BAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,2BAAA,CAAA,2BAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,2BAAA,CAAA,2BAAA,CAAA,4BAAA,CAAA,GAAA,EAAA,CAAA,GAAA,4BAA0B,CAAA;AAC9B,CAAC,EAZW,2BAA2B,KAA3B,2BAA2B,GAYtC,EAAA,CAAA,CAAA,CAAA;MAEY,uBAAuB,CAAA;AACR,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG;AACtC,QAAA,2BAA2B,CAAC,OAAO;AACnC,QAAA,2BAA2B,CAAC,GAAG;AAC/B,QAAA,2BAA2B,CAAC,IAAI;AAChC,QAAA,2BAA2B,CAAC,aAAa;AACzC,QAAA,2BAA2B,CAAC,MAAM;AAClC,QAAA,2BAA2B,CAAC,eAAe;AAC3C,QAAA,2BAA2B,CAAC,OAAO;AACnC,QAAA,2BAA2B,CAAC,MAAM;AAClC,QAAA,2BAA2B,CAAC,UAAU;AACtC,QAAA,2BAA2B,CAAC,SAAS;AACrC,QAAA,2BAA2B,CAAC,0BAA0B;KACzD,CAAC,EAAA;AAEK,IAAA,OAAO,iBAAiB,GAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;KACvD;IAEM,OAAO,aAAa,CACvB,SAAiD,EACjD,QAAkB,EAClB,cAA8C,EAC9C,uBAAmE,EAAA;AAEnE,QAAA,OAAO,CAAC,cAAc,IAAI,uBAAuB,CAAC,iBAAiB,EAAE;AAChE,aAAA,GAAG,CAAC,CAAC,IAAI,uBAAuB,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;aAC/G,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAqC,CAAC;KACnE;IAEM,OAAO,YAAY,CACtB,IAAiC,EACjC,SAAiD,EACjD,QAAkB,EAClB,cAA8C,EAC9C,uBAAmE,EAAA;QAEnE,IAAI,uBAAuB,IAAI,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AAChF,YAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,QAAQ,IAAI;;YAER,KAAK,2BAA2B,CAAC,OAAO;gBACpC,OAAO,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9E,KAAK,2BAA2B,CAAC,IAAI;gBACjC,OAAO,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxE,KAAK,2BAA2B,CAAC,MAAM;gBACnC,OAAO,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;;YAErE,KAAK,2BAA2B,CAAC,GAAG;gBAChC,OAAO,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACtE,KAAK,2BAA2B,CAAC,0BAA0B;AACvD,gBAAA,OAAO,uBAAuB,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC;YACzE,KAAK,2BAA2B,CAAC,OAAO;gBACpC,OAAO,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5D,KAAK,2BAA2B,CAAC,MAAM;gBACnC,OAAO,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,SAAS,CAAC;sBAC5J,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC;sBACnE,IAAI,CAAC;;YAEf,KAAK,2BAA2B,CAAC,aAAa;gBAC1C,OAAO,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,IAAI,CAAC;sBACpF,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;sBAC9H,IAAI,CAAC;YACf,KAAK,2BAA2B,CAAC,eAAe;gBAC5C,OAAO,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,MAAM,CAAC;sBACtF,uBAAuB,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;sBAClE,IAAI,CAAC;;YAEf,KAAK,2BAA2B,CAAC,UAAU,CAAC;YAC5C,KAAK,2BAA2B,CAAC,SAAS;AACtC,gBAAA,OAAO,IAAI,CAAC;AAChB,YAAA;AACI,gBAAA,MAAM,IAAI,gBAAgB,CAAC,oCAAoC,IAAI,CAAA,cAAA,CAAgB,CAAC,CAAC;AAC5F,SAAA;KACJ;IAEO,OAAO,YAAY,CAAC,QAAkB,EAAA;QAC1C,OAAO,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAqB,CAAC;KACtE;AAEM,IAAA,OAAO,OAAO,CAAQ,UAAuC,EAAE,QAAkB,EAAA;QACpF,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAG,6BAA6B,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KACzI;AAEM,IAAA,OAAO,GAAG,CAAQ,UAAuC,EAAE,QAAkB,EAAA;QAChF,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KACjI;AAEM,IAAA,OAAO,IAAI,CAAQ,UAAuC,EAAE,QAAkB,EAAA;QACjF,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC,OAAO,GAAG,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KACnI;AAEM,IAAA,OAAO,aAAa,CACvB,UAAkC,EAClC,cAA4D,EAC5D,QAAkB,EAAA;QAElB,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,SAAS,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,MAAM,GAAG,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,8BAA8B,CAAC,WAAW,CAAC,CAAC;QAEzK,MAAM;AACD,aAAA,qBAAqB,CAAC,gCAAgC,CAAC,IAAI,CAAC;AAC5D,aAAA,+BAA+B,CAAC,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;AAC3E,aAAA,YAAY,CAAC,kBAAkB,CAAC,UAAU,CAAC;aAC3C,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC3E,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc;AAAE,YAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE5D,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,OAAO,eAAe,CAAQ,KAA6B,EAAE,QAAkB,EAAA;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAChE,QAAA,IAAI,MAAM,EAAE;YACR,MAAM;AACD,iBAAA,qBAAqB,CAAC,gCAAgC,CAAC,MAAM,CAAC;AAC9D,iBAAA,+BAA+B,CAAC,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;AAC3E,iBAAA,YAAY,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAC3C,iBAAA,eAAe,CAAC,GAAG,IAChB,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,MAAK;AACL,gBAAA,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,gBAAA,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;aACpC,CAAC,CACL,CACJ,CAAC;AACN,YAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAExD,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,OAAO,MAAM,CAAQ,UAAkC,EAAE,QAAkB,EAAA;QAC9E,MAAM,SAAS,GAAG,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,0BAA0B,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KAClI;AAEM,IAAA,OAAO,MAAM,CAChB,UAA0C,EAC1C,QAAkB,EAClB,cAA8C,EAAA;QAE9C,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;aACtE,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC7E,aAAA,oBAAoB,EAAE,CAAC;QAE5B,MAAM,UAAU,GAAkC,EAAE,CAAC;QAErD,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,UAAU,CAAC;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtJ,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,SAAS,CAAC;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpJ,QAAA,YAAY,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3C,QAAA,OAAO,YAAY,CAAC;KACvB;AAEM,IAAA,OAAO,UAAU,CAAQ,UAA0C,EAAE,QAAkB,EAAA;QAC1F,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC;aAC5D,eAAe,CAAC,GAAG,IAAG;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;AAC3G,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,YAAA,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AACnB,YAAA,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC1C,YAAA,OAAO,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,GAAG,IAAG;gBACN,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,gCAAgC,EAAC,CAAC,CAAC;AAC1G,gBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;gBAC3D,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAG,EAAA,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAO,KAAA,CAAA,CAAC,CAAC;AACjG,gBAAA,OAAO,SAAS,CAAC;aACpB,CAAC,CACL,CAAC;AACN,SAAC,CAAC;aACD,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACzE,aAAA,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;KACtD;AAEM,IAAA,OAAO,SAAS,CAAQ,UAA0C,EAAE,QAAkB,EAAA;QACzF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChE,OAAO,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC;aAC3D,eAAe,CAAC,GAAG,IAAG;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;AAC3G,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,YAAA,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AACnB,YAAA,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC1C,YAAA,OAAO,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,GAAG,IAAG;AACN,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AACX,oBAAA,OAAO,SAAS,CAAC;AACpB,iBAAA;AACD,gBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,wBAAwB,EAAC,CAAC,CAAC;AAC3J,gBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;gBAC3D,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAG,EAAA,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAG,EAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAM,IAAA,CAAA,CAAC,CAAC;AAChG,gBAAA,OAAO,SAAS,CAAC;aACpB,CAAC,CACL,CAAC;AACN,SAAC,CAAC;aACD,oBAAoB,CAAC,IAAI,sBAAsB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACzE,aAAA,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;KACtD;IAEM,OAAO,OAAO,CAAQ,UAAkC,EAAA;QAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;AAC3D,aAAA,YAAY,CAAC,kBAAkB,CAAC,YAAY,CAAC;AAC7C,aAAA,qBAAqB,CAAC,gCAAgC,CAAC,IAAI,CAAC;AAC5D,aAAA,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;aACvD,eAAe,CAAC,GAAG,IAAG;AACnB,YAAA,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;AACP,QAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC7F,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,0BAA0B,CAAQ,UAA0C,EAAA;QACtF,OAAO,UAAU,CAAC,WAAW,EAAE;cACzB,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,gCAAgC,CAAC;cACvJ,IAAI,CAAC;KACd;;;ACpQL;;;;;;;;;;;AAWG;MACU,gBAAgB,CAAA;AAWzB,IAAA,WAAA,CACY,WAAuB,EACvB,aAA2B,EAClB,QAAkB,EAAA;QAF3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAc;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAN/B,IAAc,CAAA,cAAA,GAAoB,uBAAuB,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;QAClH,IAAc,CAAA,cAAA,GAAkC,EAAE,CAAC;KAMhE;IAEI,mBAAmB,GAAA;AACvB,QAAA,OAAO,EAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;KACpG;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,EAA6D,EAAA;QACxE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACH,IAAA,oBAAoB,CAAC,QAA0C,EAAA;AAC3D,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,EAA+D,EAAA;QAC5E,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACH,IAAA,sBAAsB,CAAC,QAA8C,EAAA;AACjE,QAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;AACH,IAAA,UAAU,CAAC,QAA+E,EAAA;AACtF,QAAA,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;IACH,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;IACH,kBAAkB,CAAC,GAAG,KAAoC,EAAA;AACtD,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9D,YAAA,IAAI,MAAM,EAAE,UAAU,KAAK,IAAI,EAAE;AAC7B,gBAAA,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;AACjC,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;IACH,qBAAqB,CAAC,GAAG,KAAoC,EAAA;AACzD,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9D,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAC5B,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;;AAOG;IACH,yBAAyB,CAA0B,IAAiC,EAAE,EAA+E,EAAA;AACjK,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9D,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;AAMG;AACH,IAAA,UAAU,CAA0B,EAA+E,EAAA;QAC/G,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;IACH,KAAK,GAAA;QACD,OAA6E;AACzE,YAAA,OAAO,EAAE,uBAAuB,CAAC,aAAa,CAC1C,IAAI,CAAC,WAAqD,EAC1D,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EACvE,IAAI,CAAC,cAAc;iBACd,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC;iBACjC,MAAM,CACH,CAAC,GAAG,EAAE,CAAC,MAAM;AACT,gBAAA,GAAG,GAAG;AACN,gBAAA,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,UAAW;aAC1B,CAAC,EACyC,EAAE,CAChD,CACR,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YAC7B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,UAAU,EAAE,IAAI,CAAC,WAAW;SAC/B,CAAC;KACL;AACJ;;MCtLY,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;QAQoB,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAIxD,IAAO,CAAA,OAAA,GAAqC,EAAE,CAAC;QAExD,IAAY,CAAA,YAAA,GAAiC,EAAE,CAAC;QAChD,IAAkB,CAAA,kBAAA,GAAiC,EAAE,CAAC;QACtD,IAAmB,CAAA,mBAAA,GAAiC,EAAE,CAAC;QAIvD,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAkDrC,KAAA;IA7CG,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;YACzC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACvD,SAAA;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,2BAA2B,EAAE,QAAQ,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAC3I,QAAQ,MAAM,CAAC,QAAQ;gBACnB,KAAK,kBAAkB,CAAC,WAAW;AAC/B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrC,MAAM;gBACV,KAAK,kBAAkB,CAAC,YAAY;AAChC,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtC,MAAM;gBACV,KAAK,kBAAkB,CAAC,WAAW,CAAC;gBACpC,KAAK,kBAAkB,CAAC,SAAS,CAAC;gBAClC,KAAK,kBAAkB,CAAC,QAAQ;AAC5B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/B,MAAM;AACb,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QAE9D,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;KAC1H;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC9B,YAAA,QAAQ,QAAQ,CAAC,OAAO,EAAE;AACtB,gBAAA,KAAK,QAAQ;AACT,oBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBACxC,MAAM;AACb,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,WAAW,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;KACnC;AAEM,IAAA,eAAe,CAAC,aAA0B,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;8GA/DQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,oBAAoB,EAAE,CAAC,oDAkBlB,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CzC,s+DA0CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBc,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAAE,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,oOAAE,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,+BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGhJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,eAAe,EAAA,OAAA,EAEhB,CAAC,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,YAAY,CAAC,EAC/I,SAAA,EAAA,CAAC,oBAAoB,EAAE,CAAC,EAAA,QAAA,EAAA,s+DAAA,EAAA,CAAA;8BAKH,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;gBACP,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBACU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBAWwC,SAAS,EAAA,CAAA;sBAAtD,eAAe;uBAAC,oBAAoB,CAAA;;;ME/B5B,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvC,oJACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOc,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGtB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,qBAAqB,EACtB,OAAA,EAAA,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,oJAAA,EAAA,CAAA;8BAIA,SAAS,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAA;;;AEJ3B;;;;;;;;AAQG;SACa,SAAS,CACrB,KAA6B,EAC7B,OAAkC,EAClC,OAES,EAAA;IAET,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAChC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,EACpC,qBAAqB,CAAC,WAAW,CAAiC,OAAO,CAAC,EAC1E,MAAM,CAAC,QAAQ,CAAC,CACnB,CAAC;AACF,IAAA,OAAO,GAAG,OAAO,CAAC,CAAC;AACnB,IAAA,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAEK,SAAU,0BAA0B,CACtC,KAA6B,EAC7B,OAAkC,EAClC,KAA4B,EAC5B,OAAgC,EAChC,OAES,EAAA;IAET,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAChC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,EACpC,qBAAqB,CAAC,WAAW,CAAiC,OAAO,CAAC,EAC1E,MAAM,CAAC,QAAQ,CAAC,CACnB,CAAC;AACF,IAAA,OAAO,GAAG,OAAO,CAAC,CAAC;AACnB,IAAA,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3B;;MClCa,qBAAqB,CAAA;AAC9B,IAAA,WAAA,CAAmB,UAA6B,EAAA;QAA7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;KAAI;8GAD3C,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0ECflC,omCAaA,EAAA,MAAA,EAAA,CAAA,k4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAI1C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,gBAAgB,EACjB,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,omCAAA,EAAA,MAAA,EAAA,CAAA,k4BAAA,CAAA,EAAA,CAAA;;;MEI3C,wBAAwB,CAAA;AACjC,IAAA,WAAA,CAAmB,UAA6B,EAAA;QAA7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;KAAI;8GAD3C,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmB,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8ECfrC,mqCAcA,EAAA,MAAA,EAAA,CAAA,y+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,mOAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAI1C,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,oBAAoB,EACrB,OAAA,EAAA,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,mqCAAA,EAAA,MAAA,EAAA,CAAA,y+BAAA,CAAA,EAAA,CAAA;;;MEI3C,YAAY,CAAA;AAiBrB,IAAA,WAAA,CAAsB,KAAY,EAAA;QAf1B,IAAS,CAAA,SAAA,GAAkB,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,SAAS,GAAkB,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC;QAGhD,IAAQ,CAAA,QAAA,GAAwB,EAAE,CAAC;QAGnC,IAAgB,CAAA,gBAAA,GAAuB,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,qBAAqB,GAAuB,EAAE,CAAC;AAQnD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC,SAAA;KACJ;AAEM,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,SAAoB,EAAA;QACnD,OAAO,IAAI,YAAY,CAAC;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,SAAS;AACvB,SAAA,CAAC,CAAC;KACN;IAEM,OAAO,cAAc,CAAC,IAAY,EAAE,UAAkB,EAAE,YAA+B,QAAQ,EAAA;QAClG,OAAO,IAAI,YAAY,CAAC;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,SAAS,EAAE,SAAS;AACvB,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,qBAAqB,CAAC,IAAY,EAAE,YAA0B,EAAE,QAAqB,EAAA;QAC/F,MAAM,KAAK,GAAU,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAC,CAAC;QAC9D,IAAI,QAAQ,EAAE,MAAM,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,SAAA;AACD,QAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;AAEM,IAAA,OAAO,wBAAwB,CAClC,IAAY,EACZ,aAAqJ,EACrJ,QAAqB,EAAA;QAErB,MAAM,KAAK,GAAU,EAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAC,CAAC;QAChE,IAAI,QAAQ,EAAE,MAAM,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,SAAA;AACD,QAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;IAEM,OAAO,eAAe,CAAC,KAAY,EAAA;AACtC,QAAA,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;AAED;;AAEG;AACI,IAAA,OAAO,iBAAiB,CAAC,IAAY,EAAE,eAAe,GAAG,sBAAsB,EAAA;QAClF,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;KACrD;AAEM,IAAA,OAAO,mBAAmB,CAAC,IAAY,EAAE,eAAe,GAAG,wBAAwB,EAAA;QACtF,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;KACrD;AAEM,IAAA,QAAQ,CAAC,aAA4B,EAAA;AACxC,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,MAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AACtG,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,UAA0B,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,cAAc,CAAC,UAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,aAAa,CAAC,SAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,SAAS,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,OAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;AAC/B,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,iBAAiB,CAAC,OAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;AACjC,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,OAAuB,EAAE,IAAY,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,YAAY,CAAC,QAAyC,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AAC7B,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,IAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,QAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,YAAY,CAAC,IAAa,EAAE,KAAc,EAAE,UAA0B,EAAE,UAAU,GAAG,KAAK,EAAA;AAC7F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,UAAU,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC;AAChB,gBAAA,KAAK,EAAE,KAAK;AACf,aAAA,CAAC,CAAC;AACN,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;;AAMG;IACI,iBAAiB,CAAC,KAAa,EAAE,IAAa,EAAE,UAA0B,EAAE,kBAAkB,GAAG,KAAK,EAAA;AACzG,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AACjF,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5E,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,QAAqB,EAAE,kBAAkB,GAAG,KAAK,EAAA;AACzE,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,wBAAwB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACtB,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,WAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,CAAC,IAAY,EAAE,SAAoB,EAAA;QAC9C,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;AACxC,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAEM,IAAA,eAAe,CAAC,OAAqD,EAAA;AACxE,QAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,MAAM,IAAI,gBAAgB,CAAC,0BAA0B,EAAE,EAAC,IAAI,EAAE,oBAAoB,EAAC,CAAC,CAAC;AACxF,SAAA;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,MAAM,IAAI,gBAAgB,CAAC,wBAAwB,EAAE,EAAC,IAAI,EAAE,mBAAmB,EAAC,CAAC,CAAC;AACrF,SAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IAEM,MAAM,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACxB;IAEM,KAAK,GAAA;AACR,QAAA,MAAM,YAAY,GAAU;YACxB,GAAG,IAAI,CAAC,KAAK;SAChB,CAAC;QAEF,IAAI,YAAY,CAAC,IAAI,EAAE;YACnB,YAAY,CAAC,IAAI,GAAG;gBAChB,GAAG,YAAY,CAAC,IAAI;gBACpB,GAAG,IAAI,CAAC,SAAS;aACpB,CAAC;AACL,SAAA;AAAM,aAAA;YACH,YAAY,CAAC,IAAI,GAAG,EAAC,GAAG,IAAI,CAAC,SAAS,EAAC,CAAC;AAC3C,SAAA;;QAGD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAE,YAAY,CAAC,IAAsB,CAAC,WAAW,EAAE;YACtE,YAAY,CAAC,IAAsB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACvE,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChB,YAAA,YAAY,CAAC,IAAsB,CAAC,SAAS,GAAG,IAAI,CAAC;AACzD,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEpE,YAAA,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC7B,gBAAA,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtB,gBAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACpC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACxB,YAAY,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1D,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC7B,YAAY,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACpE,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACpB,YAAY,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,YAAY,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC9D,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACpB,YAAY,CAAC,OAAO,GAAG,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC;AAClD,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,SAAS,GAAA;AACb,QAAA,MAAM,aAAa,GAAuB,IAAI,CAAC,QAAQ,GAAG,EAAC,GAAG,IAAI,CAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;AACpF,QAAA,MAAM,sBAAsB,GAAuB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACrG,MAAM,gBAAgB,GAAuB,EAAE,CAAC;QAChD,MAAM,qBAAqB,GAAuB,EAAE,CAAC;QAErD,IAAI,aAAa,EAAE,KAAK,EAAE;YACtB,qBAAqB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,MAAM,oBAAoB,GAAG,CAAC,KAAkB,KAAiB;AAC7D,YAAA,MAAM,UAAU,GAAgB,EAAC,GAAG,KAAK,EAAC,CAAC;AAC3C,YAAA,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,WAAW,EAAE;AAC9C,gBAAA,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1C,aAAA;AACD,YAAA,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE;gBAC3C,UAAU,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACnD,aAAA;YACD,IAAI,UAAU,CAAC,UAAU,EAAE;gBACvB,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpF,aAAA;AACD,YAAA,OAAO,UAAU,CAAC;AACtB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3F,QAAA,MAAM,0BAA0B,GAAuB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5H,QAAA,qBAAqB,CAAC,IAAI,CAAC,GAAG,gBAAgB,EAAE,GAAG,sBAAsB,EAAE,GAAG,0BAA0B,CAAC,CAAC;QAE1G,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,OAAO,qBAAqB,CAAC;AAChC,SAAA;QAED,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;AAC5D,QAAA,IAAI,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,EAAE;YAC9C,aAAa,CAAC,UAAU,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACzD,SAAA;AACD,QAAA,aAAa,CAAC,UAAU,GAAG,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACzG,QAAA,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAA,aAAa,CAAC,KAAK,GAAG,qBAAqB,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACzC,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,gBAAA,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;AACjC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAC5B,YAAA,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC9D,SAAA;QAED,OAAO,CAAC,aAAa,CAAC,CAAC;KAC1B;AAEO,IAAA,cAAc,CAAC,IAAa,EAAE,KAAc,EAAE,UAA0B,EAAA;QAC5E,MAAM,QAAQ,GAAgB,EAAE,CAAC;AACjC,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACnB;IAEO,kBAAkB,GAAA;QACtB,MAAM,MAAM,GAAe,EAAE,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1C,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;;;;YAIb,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;gBACzC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACvB,oBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IAES,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;;AAE5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACrC,SAAA;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC;AAC3B,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AACJ;;MCvZY,aAAa,CAAA;AAKtB,IAAA,WAAA,CAAoB,WAA0B,EAAA;QAHtC,IAAM,CAAA,MAAA,GAAwB,EAAE,CAAC;QAIrC,IAAI,CAAC,WAAW,GAAG,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACnC;AAEM,IAAA,OAAO,MAAM,GAAA;QAChB,OAAO,IAAI,aAAa,EAAE,CAAC;KAC9B;AAED;;AAEG;AACI,IAAA,OAAO,gBAAgB,CAAC,eAAe,GAAG,sBAAsB,EAAA;QACnE,MAAM,WAAW,GAAG,YAAY,CAAC,iBAAiB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AACxE,QAAA,OAAO,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;KACzC;AAEM,IAAA,OAAO,kBAAkB,CAAC,eAAe,GAAG,wBAAwB,EAAA;QACvE,MAAM,WAAW,GAAG,YAAY,CAAC,mBAAmB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AAC1E,QAAA,OAAO,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;KACzC;AAEM,IAAA,eAAe,CAAC,KAAY,EAAA;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;KACpE;AAEM,IAAA,gBAAgB,CAAC,IAAY,EAAE,UAAkB,EAAE,YAA+B,QAAQ,EAAA;AAC7F,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;KACzF;AAEM,IAAA,qBAAqB,CACxB,IAAY,EACZ,aAAqJ,EACrJ,QAAqB,EAAA;AAErB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;KACrG;AAEM,IAAA,kBAAkB,CAAC,IAAY,EAAE,YAA0B,EAAE,QAAqB,EAAA;AACrF,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;KACjG;IAEM,QAAQ,CAAC,IAAY,EAAE,SAAoB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;KACrE;AAEM,IAAA,YAAY,CAAC,OAAsC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACxC;AAEM,IAAA,eAAe,CAAC,YAA0B,EAAA;QAC7C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,oBAAoB,EAAC,CAAC,CAAC;AACrF,SAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAEM,KAAK,GAAA;QACR,IAAI,aAAa,GAAW,EAAE,CAAC;AAC/B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC7B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,SAAA;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACpD,YAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,gBAAA,kBAAkB,CAAC,QAAQ,GAAG,aAAa,CAAC;AAC/C,aAAA;AACD,YAAA,aAAa,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACxB;AACJ;;AC3FM,MAAM,mBAAmB,GAA4C,CAAC,SAAiC,KAAI;AAC9G,IAAA,OAAO,SAAS,CAAC,aAAa,EAAE,CAAC;AACrC,CAAC;;ACOK,MAAO,6BAA8B,SAAQ,YAAY,CAAA;IAkB3D,WACY,CAAA,IAAY,EACpB,OAKE,EAAA;AAEF,QAAA,KAAK,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,qBAAqB,EAAC,CAAC,CAAC;QARnE,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAfP,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;QAEzC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAClB,IAAW,CAAA,WAAA,GAAG,SAAS,CAAC;QACxB,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;QACf,IAAQ,CAAA,QAAA,GAAG,cAAc,CAAC;QAC1B,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QACd,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAiBrB,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAE/B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;oBAC/B,IAAI,MAAM,YAAY,iCAAiC,EAAE;AACrD,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,qBAAA;yBAAM,IAAI,MAAM,YAAY,6BAA6B,EAAE;AACxD,wBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,qBAAA;yBAAM,IAAI,MAAM,YAAY,8BAA8B,EAAE;AACzD,wBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,YAAY,CAAC,WAA0B,EAAA;AAC1C,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,WAAW,CAAC,UAAU,GAAG,IAAI,EAAE,WAA0B,EAAE,IAAa,EAAA;AAC3E,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,WAA0B,EAAE,IAAa,EAAA;AACnE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,WAA0B,EAAE,IAAa,EAAA;AACrE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAC3D,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,UAAU,CAAC,SAAS,GAAG,IAAI,EAAE,WAA0B,EAAA;AAC1D,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACtE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEe,eAAe,CAAC,IAAmB,EAAE,GAAkB,EAAE,IAAmB,EAAE,KAAoB,EAAE,OAAsB,EAAA;AACtI,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3E,SAAA;AACD,QAAA,IAAI,GAAG,EAAE;YACL,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACzE,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3E,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC9E,SAAA;AACD,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,wBAAwB,CAAC,GAAW,EAAE,WAAyB,EAAA;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,qBAAqB,CAAC,WAA0C,EAAA;AACnE,QAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACf;IAEe,KAAK,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAW;gBAC5B,YAAY,EAAE,IAAI,CAAC,YAAa;aACnC,CAAC;YACF,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACnD,aAAA;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,EAAC,GAAG,IAAI,CAAC,oBAAoB,EAAC,CAAC;AACxE,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,IAAI,CAAC,EAAE;AACpE,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;AACjG,SAAA;;AAGD,QAAA,MAAM,iBAAiB,GAAkB;YACrC,GAAG,IAAI,CAAC,SAAS;AACjB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,WAAW,EAAE,SAAS;SACzB,CAAC;;QAGF,MAAM,qBAAqB,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC/E,qBAAqB,CAAC,QAAQ,CAAC,EAAC,GAAG,iBAAiB,EAAC,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,IAAI,CAAC,EAAE;AACpE,YAAA,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3G,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;;QAG5C,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YAChF,YAAY,CAAC,QAAQ,CAAC,EAAC,GAAG,iBAAiB,EAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,GAAG,CAAC,EAAE;AACnE,gBAAA,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjG,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACnC,YAAA,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AACvD,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;YACpF,YAAY,CAAC,QAAQ,CAAC,EAAC,GAAG,iBAAiB,EAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,OAAO,CAAC,EAAE;AACvE,gBAAA,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrG,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACtC,SAAA;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;YACjF,YAAY,CAAC,QAAQ,CAAC,EAAC,GAAG,iBAAiB,EAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,IAAI,CAAC,EAAE;AACpE,gBAAA,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACnC,YAAA,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;KACxB;IAEkB,uBAAuB,GAAA;AACtC,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;QAC3D,IAAI,CAAC,kBAAkB,EAAE;YACrB,OAAO,IAAI,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;AAC7E,SAAA;AACD,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AACJ,CAAA;MAEY,qBAAqB,CAAA;AACvB,IAAA,OAAO,aAAa,CAAI,IAAY,EAAE,SAAkB,EAAA;QAC3D,OAAO,IAAI,6BAA6B,CAAC,IAAI,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC;KAC/D;IAEM,OAAO,IAAI,CACd,IAAY,EACZ,UAAwC,EACxC,YAAoC,EACpC,OAAyC,EAAA;AAEzC,QAAA,OAAO,IAAI,6BAA6B,CAAC,IAAI,EAAE,EAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAC,CAAC,CAAC;KACvF;AACJ;;AClPK,SAAU,QAAQ,CAAC,QAAgB,EAAA;AACrC,IAAA,OAAO,UAAU,MAAW,EAAA;AACxB,QAAA,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,QAAQ,CAAC,QAAgB,EAAA;AACrC,IAAA,OAAO,UAAU,MAAW,EAAA;AACxB,QAAA,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAC,CAAC;AACN;;ACZA;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
1
+ {"version":3,"file":"mediusinc-mng-commons.mjs","sources":["../../src/provide.ts","../../src/mediusinc-mng-commons.ts"],"sourcesContent":["import {Provider} from '@angular/core';\n\nimport {CommonsModuleConfig, provideCommons} from '@mediusinc/mng-commons/core';\nimport {TableviewFeatureConfig, withTableview} from '@mediusinc/mng-commons/tableview';\n\nexport type CommonsAllConfig = CommonsModuleConfig & {\n tableview?: TableviewFeatureConfig;\n};\n\nexport function provideCommonsWithTableview(config: CommonsAllConfig): Provider[] {\n return provideCommons(config, withTableview(config?.tableview));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AASM,SAAU,2BAA2B,CAAC,MAAwB,EAAA;IAChE,OAAO,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACpE;;ACXA;;AAEG;;;;"}