@acorex/platform 18.0.5 → 18.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/README.md +7 -7
  2. package/auth/README.md +3 -3
  3. package/auth/lib/auth.strategy.d.ts +1 -1
  4. package/auth/lib/session.service.d.ts +0 -1
  5. package/common/README.md +3 -3
  6. package/common/lib/app/application.types.d.ts +10 -6
  7. package/common/lib/data/data-provider.types.d.ts +1 -1
  8. package/common/lib/schema/entity/entity.class.d.ts +1 -0
  9. package/common/lib/schema/widgets/lookup/lookup-widget-column.component.d.ts +1 -1
  10. package/common/lib/schema/widgets/lookup/lookup-widget-edit.component.d.ts +3 -1
  11. package/common/lib/schema/widgets/phone/phone-widget-edit.component.d.ts +3 -1
  12. package/esm2022/auth/index.mjs +1 -1
  13. package/esm2022/auth/lib/application/application.loader.mjs +1 -1
  14. package/esm2022/auth/lib/application/application.types.mjs +1 -1
  15. package/esm2022/auth/lib/auth-registry.service.mjs +1 -1
  16. package/esm2022/auth/lib/auth.guard.mjs +4 -4
  17. package/esm2022/auth/lib/auth.module.mjs +1 -1
  18. package/esm2022/auth/lib/auth.strategy.mjs +1 -1
  19. package/esm2022/auth/lib/errors.types.mjs +1 -1
  20. package/esm2022/auth/lib/feature/feature.directive.mjs +1 -1
  21. package/esm2022/auth/lib/feature/feature.guard.mjs +1 -1
  22. package/esm2022/auth/lib/feature/feature.loader.mjs +1 -1
  23. package/esm2022/auth/lib/feature/feature.types.mjs +1 -1
  24. package/esm2022/auth/lib/feature/index.mjs +1 -1
  25. package/esm2022/auth/lib/permission/index.mjs +1 -1
  26. package/esm2022/auth/lib/permission/permission.directive.mjs +1 -1
  27. package/esm2022/auth/lib/permission/permission.guard.mjs +1 -1
  28. package/esm2022/auth/lib/permission/permission.loader.mjs +1 -1
  29. package/esm2022/auth/lib/permission/permission.types.mjs +1 -1
  30. package/esm2022/auth/lib/session.service.mjs +14 -15
  31. package/esm2022/auth/lib/session.types.mjs +1 -1
  32. package/esm2022/auth/lib/tenant/tenant.loader.mjs +1 -1
  33. package/esm2022/auth/lib/tenant/tenant.types.mjs +1 -1
  34. package/esm2022/auth/lib/user/user.types.mjs +1 -1
  35. package/esm2022/common/index.mjs +1 -1
  36. package/esm2022/common/lib/app/application.types.mjs +5 -1
  37. package/esm2022/common/lib/app/index.mjs +1 -1
  38. package/esm2022/common/lib/app/operators.mjs +1 -1
  39. package/esm2022/common/lib/common.module.mjs +1 -1
  40. package/esm2022/common/lib/configs/app.config.mjs +1 -1
  41. package/esm2022/common/lib/configs/config.types.mjs +1 -1
  42. package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
  43. package/esm2022/common/lib/data/dexie-storage.service.mjs +1 -1
  44. package/esm2022/common/lib/data/entity-data-provider.mjs +1 -1
  45. package/esm2022/common/lib/data/index.mjs +1 -1
  46. package/esm2022/common/lib/data/storage-service.mjs +1 -1
  47. package/esm2022/common/lib/errors/error-handler-registry.service.mjs +1 -1
  48. package/esm2022/common/lib/errors/error-handler.types.mjs +1 -1
  49. package/esm2022/common/lib/errors/global-error-handler.mjs +1 -1
  50. package/esm2022/common/lib/errors/index.mjs +1 -1
  51. package/esm2022/common/lib/layout/beardcrumb.type.mjs +1 -1
  52. package/esm2022/common/lib/layout/component-slot/component-slot-loader.service.mjs +1 -1
  53. package/esm2022/common/lib/layout/component-slot/component-slot-registery.service.mjs +1 -1
  54. package/esm2022/common/lib/layout/component-slot/component-slot.directive.mjs +1 -1
  55. package/esm2022/common/lib/layout/component-slot/component-slot.module.mjs +1 -1
  56. package/esm2022/common/lib/layout/component-slot/component-slot.types.mjs +1 -1
  57. package/esm2022/common/lib/layout/component-slot/index.mjs +1 -1
  58. package/esm2022/common/lib/layout/grid-layout/grid-layout.directive.mjs +1 -1
  59. package/esm2022/common/lib/layout/grid-layout/grid-layout.types.mjs +1 -1
  60. package/esm2022/common/lib/layout/grid-layout/index.mjs +1 -1
  61. package/esm2022/common/lib/layout/index.mjs +1 -1
  62. package/esm2022/common/lib/layout/layout.service.mjs +1 -1
  63. package/esm2022/common/lib/layout/logo/index.mjs +1 -1
  64. package/esm2022/common/lib/layout/logo/logo.component.mjs +3 -3
  65. package/esm2022/common/lib/layout/logo/logo.types.mjs +1 -1
  66. package/esm2022/common/lib/layout/menu/index.mjs +1 -1
  67. package/esm2022/common/lib/layout/menu/menu.loader.mjs +1 -1
  68. package/esm2022/common/lib/layout/menu/menu.types.mjs +1 -1
  69. package/esm2022/common/lib/layout/sticky.directive.mjs +1 -1
  70. package/esm2022/common/lib/layout/theme/components/slots/footer-text-slot.component.mjs +5 -5
  71. package/esm2022/common/lib/layout/theme/components/slots/index.mjs +1 -1
  72. package/esm2022/common/lib/layout/theme/components/slots/navbar-slot.component.mjs +9 -9
  73. package/esm2022/common/lib/layout/theme/components/slots/theme-slot.component.mjs +16 -16
  74. package/esm2022/common/lib/layout/theme/store/admin-layout.actions.mjs +1 -1
  75. package/esm2022/common/lib/layout/theme/store/admin-layout.effects.mjs +1 -1
  76. package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +1 -1
  77. package/esm2022/common/lib/layout/theme/store/admin-layout.selectors.mjs +1 -1
  78. package/esm2022/common/lib/layout/theme/store/admin-layout.state.mjs +1 -1
  79. package/esm2022/common/lib/layout/theme/store/index.mjs +1 -1
  80. package/esm2022/common/lib/schema/component-loader.mjs +1 -1
  81. package/esm2022/common/lib/schema/entity/entity-registery.service.mjs +1 -1
  82. package/esm2022/common/lib/schema/entity/entity.class.mjs +1 -1
  83. package/esm2022/common/lib/schema/entity/entity.loader.mjs +1 -1
  84. package/esm2022/common/lib/schema/entity/index.mjs +1 -1
  85. package/esm2022/common/lib/schema/formats.mjs +1 -1
  86. package/esm2022/common/lib/schema/index.mjs +1 -1
  87. package/esm2022/common/lib/schema/schema-registery.service.mjs +1 -1
  88. package/esm2022/common/lib/schema/schema.module.mjs +1 -1
  89. package/esm2022/common/lib/schema/schema.types.mjs +1 -1
  90. package/esm2022/common/lib/schema/widget/index.mjs +1 -1
  91. package/esm2022/common/lib/schema/widget/widget-base.mjs +1 -1
  92. package/esm2022/common/lib/schema/widget/widget-column-renderer.mjs +17 -17
  93. package/esm2022/common/lib/schema/widget/widget-filter-renderer.mjs +13 -13
  94. package/esm2022/common/lib/schema/widget/widget-renderer.mjs +13 -13
  95. package/esm2022/common/lib/schema/widget/widget-token.mjs +1 -1
  96. package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-edit.component.mjs +68 -68
  97. package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-view.component.mjs +16 -16
  98. package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-column.component.mjs +31 -31
  99. package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-edit.component.mjs +1 -1
  100. package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-view.component.mjs +25 -25
  101. package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +76 -76
  102. package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +86 -86
  103. package/esm2022/common/lib/schema/widgets/common-widget-filter/string-widget-filter.component.mjs +68 -68
  104. package/esm2022/common/lib/schema/widgets/common-widgets.module.mjs +1 -1
  105. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-column.component.mjs +1 -1
  106. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.mjs +100 -100
  107. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +60 -60
  108. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-view.component.mjs +21 -21
  109. package/esm2022/common/lib/schema/widgets/email/email-widget-column.component.mjs +23 -23
  110. package/esm2022/common/lib/schema/widgets/email/email-widget-edit.component.mjs +134 -134
  111. package/esm2022/common/lib/schema/widgets/email/email-widget-view.component.mjs +65 -65
  112. package/esm2022/common/lib/schema/widgets/file/file-widget-column.component.mjs +1 -1
  113. package/esm2022/common/lib/schema/widgets/file/file-widget-edit.component.mjs +116 -116
  114. package/esm2022/common/lib/schema/widgets/file/file-widget-filter.component.mjs +6 -6
  115. package/esm2022/common/lib/schema/widgets/file/file-widget-view.component.mjs +70 -70
  116. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-edit.component.mjs +125 -125
  117. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-filter.component.mjs +6 -6
  118. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-types.mjs +1 -1
  119. package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-view.component.mjs +109 -109
  120. package/esm2022/common/lib/schema/widgets/index.mjs +1 -1
  121. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-column.component.mjs +3 -3
  122. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-edit.component.mjs +48 -44
  123. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +66 -66
  124. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-view.component.mjs +1 -1
  125. package/esm2022/common/lib/schema/widgets/map/map-widget-edit.component.mjs +5 -5
  126. package/esm2022/common/lib/schema/widgets/map/map-widget-view.component.mjs +5 -5
  127. package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-column.component.mjs +23 -23
  128. package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-edit.component.mjs +88 -88
  129. package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-view.component.mjs +67 -67
  130. package/esm2022/common/lib/schema/widgets/number/number-widget-edit.component.mjs +15 -15
  131. package/esm2022/common/lib/schema/widgets/number/number-widget-view.component.mjs +1 -1
  132. package/esm2022/common/lib/schema/widgets/password/change-password.component.mjs +100 -100
  133. package/esm2022/common/lib/schema/widgets/password/password-widget-column.component.mjs +37 -37
  134. package/esm2022/common/lib/schema/widgets/password/password-widget-edit.component.mjs +15 -15
  135. package/esm2022/common/lib/schema/widgets/password/password-widget-view.component.mjs +58 -58
  136. package/esm2022/common/lib/schema/widgets/phone/phone-widget-column.component.mjs +41 -41
  137. package/esm2022/common/lib/schema/widgets/phone/phone-widget-edit.component.mjs +146 -142
  138. package/esm2022/common/lib/schema/widgets/phone/phone-widget-view.component.mjs +69 -69
  139. package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-column.component.mjs +23 -23
  140. package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-edit.component.mjs +9 -9
  141. package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-view.component.mjs +9 -9
  142. package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-column.component.mjs +17 -17
  143. package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-edit.component.mjs +29 -29
  144. package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.mjs +20 -20
  145. package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-view.component.mjs +9 -9
  146. package/esm2022/common/lib/schema/widgets/signature-pad/signature-pad-widget-edit.component.mjs +56 -56
  147. package/esm2022/common/lib/schema/widgets/signature-pad/signature-pad-widget-view.component.mjs +17 -17
  148. package/esm2022/common/lib/schema/widgets/text/largetext-widget-edit.component.mjs +13 -13
  149. package/esm2022/common/lib/schema/widgets/text/text-widget-column.component.mjs +1 -1
  150. package/esm2022/common/lib/schema/widgets/text/text-widget-edit.component.mjs +88 -88
  151. package/esm2022/common/lib/schema/widgets/text/text-widget-view.component.mjs +21 -21
  152. package/esm2022/common/lib/schema/widgets/toggle/toggle-widget-column.component.mjs +33 -33
  153. package/esm2022/common/lib/schema/widgets/toggle/toggle-widget-edit.component.mjs +1 -1
  154. package/esm2022/common/lib/schema/widgets/toggle/toggle-widget-view.component.mjs +25 -25
  155. package/esm2022/common/lib/settings/index.mjs +1 -1
  156. package/esm2022/common/lib/settings/settings.loader.mjs +1 -1
  157. package/esm2022/common/lib/settings/settings.service.mjs +1 -1
  158. package/esm2022/common/lib/settings/settings.types.mjs +1 -1
  159. package/esm2022/common/lib/store/common.actions.mjs +1 -1
  160. package/esm2022/common/lib/store/common.effects.mjs +1 -1
  161. package/esm2022/common/lib/store/index.mjs +1 -1
  162. package/esm2022/common/lib/utils/clipboard-service.mjs +1 -1
  163. package/esm2022/common/lib/utils/data-generator.mjs +1 -1
  164. package/esm2022/common/lib/utils/index.mjs +1 -1
  165. package/esm2022/common/lib/utils/pdf.service.mjs +1 -1
  166. package/esm2022/common/lib/utils/router-util.service.mjs +1 -1
  167. package/esm2022/common/lib/workflows/common.workflow.mjs +1 -1
  168. package/esm2022/common/lib/workflows/error-handler.mjs +1 -1
  169. package/esm2022/common/lib/workflows/index.mjs +1 -1
  170. package/esm2022/index.mjs +1 -1
  171. package/esm2022/layout/builder/index.mjs +1 -1
  172. package/esm2022/layout/builder/lib/builder/builder.module.mjs +1 -1
  173. package/esm2022/layout/builder/lib/builder/builder.service.mjs +1 -1
  174. package/esm2022/layout/builder/lib/builder/index.mjs +1 -1
  175. package/esm2022/layout/builder/lib/builder/layout.types.mjs +1 -1
  176. package/esm2022/layout/builder/lib/builder/widget-column-renderer.mjs +17 -17
  177. package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +1 -1
  178. package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +1 -1
  179. package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +19 -19
  180. package/esm2022/layout/builder/lib/builder/widget.types.mjs +1 -1
  181. package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +28 -13
  182. package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +1 -1
  183. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +64 -57
  184. package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +4 -8
  185. package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +1 -1
  186. package/esm2022/layout/entity/lib/entity-registery.service.mjs +1 -1
  187. package/esm2022/layout/entity/lib/entity.config.mjs +1 -1
  188. package/esm2022/layout/entity/lib/entity.module.mjs +16 -19
  189. package/esm2022/layout/entity/lib/entity.viewmodel.mjs +1 -1
  190. package/esm2022/layout/entity/lib/index.mjs +1 -1
  191. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +81 -72
  192. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +105 -83
  193. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +1 -1
  194. package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +11 -8
  195. package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +3 -3
  196. package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +1 -1
  197. package/esm2022/layout/entity/lib/workflows/show-details.workflow.mjs +1 -2
  198. package/esm2022/layout/entity/lib/workflows/show-list.workflow.mjs +1 -1
  199. package/esm2022/layouts/index.mjs +1 -1
  200. package/esm2022/layouts/lib/admin/admin.module.mjs +9 -2
  201. package/esm2022/layouts/lib/admin/admin.routes.mjs +1 -1
  202. package/esm2022/layouts/lib/admin/custom-reuse.strategy.mjs +1 -1
  203. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +6 -3
  204. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.mjs +1 -1
  205. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.mjs +1 -1
  206. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +7 -5
  207. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/index.mjs +1 -1
  208. package/esm2022/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.mjs +91 -0
  209. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +4 -3
  210. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/index.mjs +1 -1
  211. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +4 -3
  212. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +4 -3
  213. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.mjs +20 -20
  214. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.mjs +4 -3
  215. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +18 -6
  216. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/index.mjs +1 -1
  217. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +1 -1
  218. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.mjs +9 -5
  219. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +6 -3
  220. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.mjs +1 -1
  221. package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.mjs +3 -3
  222. package/esm2022/layouts/lib/admin/entity-layout/index.mjs +1 -1
  223. package/esm2022/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.mjs +5 -3
  224. package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +1 -1
  225. package/esm2022/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.mjs +77 -0
  226. package/esm2022/layouts/lib/admin/entity-layout/workflows/index.mjs +1 -1
  227. package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.mjs +1 -1
  228. package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-section.workflow.mjs +1 -1
  229. package/esm2022/layouts/lib/admin/entity-layout/workflows/show-details.workflow.mjs +1 -1
  230. package/esm2022/layouts/lib/admin/entity-layout/workflows/show-list.workflow.mjs +1 -1
  231. package/esm2022/layouts/lib/admin/entity-layout/workflows/show-quick-view.workflow.mjs +1 -1
  232. package/esm2022/layouts/lib/admin/entity.resolver.mjs +1 -1
  233. package/esm2022/layouts/lib/admin/index.mjs +1 -1
  234. package/esm2022/layouts/lib/layout.module.mjs +1 -1
  235. package/esm2022/mocks/index.mjs +1 -1
  236. package/esm2022/mocks/lib/mocks.module.mjs +1 -1
  237. package/esm2022/mocks/lib/services/mocker.service.mjs +1 -1
  238. package/esm2022/mocks/lib/storage/storage.mock.service.mjs +1 -1
  239. package/esm2022/native/index.mjs +1 -1
  240. package/esm2022/native/lib/native.service.mjs +1 -1
  241. package/esm2022/themes/default/index.mjs +1 -1
  242. package/esm2022/themes/default/lib/default.module.mjs +1 -1
  243. package/esm2022/themes/default/lib/entity-reuse.strategy.mjs +1 -1
  244. package/esm2022/themes/default/lib/layout.routes.mjs +1 -1
  245. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +14 -21
  246. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +8 -5
  247. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +38 -29
  248. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +17 -13
  249. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +13 -9
  250. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +8 -5
  251. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +10 -7
  252. package/esm2022/themes/default/lib/layouts/root-layout/components/footer/footer.component.mjs +3 -3
  253. package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +3 -3
  254. package/esm2022/themes/default/lib/layouts/root-layout/index.mjs +1 -1
  255. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +3 -3
  256. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +1 -1
  257. package/esm2022/themes/default/lib/pages/errors/error-401/error-401.component.mjs +3 -3
  258. package/esm2022/themes/default/lib/pages/errors/error-404/error-404.component.mjs +3 -3
  259. package/esm2022/themes/default/lib/pages/errors/error-offline/error-offline.component.mjs +3 -3
  260. package/esm2022/widgets/index.mjs +1 -1
  261. package/esm2022/widgets/lib/editors/checkbox/checkbox-widget-column.component.mjs +25 -25
  262. package/esm2022/widgets/lib/editors/checkbox/checkbox-widget-edit.component.mjs +9 -9
  263. package/esm2022/widgets/lib/editors/checkbox/checkbox-widget-view.component.mjs +29 -29
  264. package/esm2022/widgets/lib/editors/checkbox/checkbox-widget.config.mjs +1 -1
  265. package/esm2022/widgets/lib/editors/checkbox/index.mjs +1 -1
  266. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +1 -1
  267. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-designer.component.mjs +1 -1
  268. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +54 -54
  269. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-filter.component.mjs +1 -1
  270. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-print.component.mjs +1 -1
  271. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +17 -17
  272. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget.config.mjs +1 -1
  273. package/esm2022/widgets/lib/editors/date-time-box-widget/index.mjs +1 -1
  274. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-column.component.mjs +21 -21
  275. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-designer.component.mjs +1 -1
  276. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-edit.component.mjs +142 -142
  277. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-filter.component.mjs +1 -1
  278. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-print.component.mjs +1 -1
  279. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget-view.component.mjs +69 -69
  280. package/esm2022/widgets/lib/editors/email-box-widget/email-box-widget.config.mjs +1 -1
  281. package/esm2022/widgets/lib/editors/email-box-widget/index.mjs +1 -1
  282. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget-column.component.mjs +1 -1
  283. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget-designer.component.mjs +1 -1
  284. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget-edit.component.mjs +112 -112
  285. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget-filter.component.mjs +1 -1
  286. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget-print.component.mjs +1 -1
  287. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget-view.component.mjs +64 -64
  288. package/esm2022/widgets/lib/editors/file-box-widget/file-box-widget.config.mjs +1 -1
  289. package/esm2022/widgets/lib/editors/file-box-widget/index.mjs +1 -1
  290. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-column.component.mjs +1 -1
  291. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-designer.component.mjs +1 -1
  292. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-edit.component.mjs +107 -107
  293. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-filter.component.mjs +1 -1
  294. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-print.component.mjs +1 -1
  295. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-types.mjs +1 -1
  296. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget-view.component.mjs +97 -97
  297. package/esm2022/widgets/lib/editors/gallery-widget/gallery-widget.config.mjs +1 -1
  298. package/esm2022/widgets/lib/editors/gallery-widget/index.mjs +1 -1
  299. package/esm2022/widgets/lib/editors/link-widget/index.mjs +8 -0
  300. package/esm2022/widgets/lib/editors/link-widget/link-widget-column.component.mjs +19 -0
  301. package/esm2022/widgets/lib/editors/link-widget/link-widget-designer.component.mjs +19 -0
  302. package/esm2022/widgets/lib/editors/link-widget/link-widget-edit.component.mjs +391 -0
  303. package/esm2022/widgets/lib/editors/link-widget/link-widget-filter.component.mjs +20 -0
  304. package/esm2022/widgets/lib/editors/link-widget/link-widget-print.component.mjs +19 -0
  305. package/esm2022/widgets/lib/editors/link-widget/link-widget-view.component.mjs +120 -0
  306. package/esm2022/widgets/lib/editors/link-widget/link-widget.config.mjs +24 -0
  307. package/esm2022/widgets/lib/editors/map-box-widget/index.mjs +1 -1
  308. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget-column.component.mjs +1 -1
  309. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget-designer.component.mjs +1 -1
  310. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget-edit.component.mjs +5 -5
  311. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget-filter.component.mjs +1 -1
  312. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget-print.component.mjs +1 -1
  313. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget-view.component.mjs +5 -5
  314. package/esm2022/widgets/lib/editors/map-box-widget/map-box-widget.config.mjs +1 -1
  315. package/esm2022/widgets/lib/editors/number-box-widget/index.mjs +1 -1
  316. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-column.component.mjs +1 -1
  317. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-designer.component.mjs +1 -1
  318. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-edit.component.mjs +74 -71
  319. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-filter.component.mjs +1 -1
  320. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-print.component.mjs +1 -1
  321. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-view.component.mjs +17 -17
  322. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget.config.mjs +1 -1
  323. package/esm2022/widgets/lib/editors/password-box-widget/index.mjs +1 -1
  324. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget-column.component.mjs +1 -1
  325. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget-designer.component.mjs +1 -1
  326. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget-edit.component.mjs +9 -9
  327. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget-filter.component.mjs +1 -1
  328. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget-print.component.mjs +1 -1
  329. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget-view.component.mjs +45 -45
  330. package/esm2022/widgets/lib/editors/password-box-widget/password-box-widget.config.mjs +1 -1
  331. package/esm2022/widgets/lib/editors/phone-box-widget/index.mjs +1 -1
  332. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-column.component.mjs +21 -21
  333. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-designer.component.mjs +1 -1
  334. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-edit.component.mjs +141 -139
  335. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-filter.component.mjs +1 -1
  336. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-print.component.mjs +1 -1
  337. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget-view.component.mjs +69 -69
  338. package/esm2022/widgets/lib/editors/phone-box-widget/phone-box-widget.config.mjs +1 -1
  339. package/esm2022/widgets/lib/editors/rich-text-widget/index.mjs +1 -1
  340. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget-column.component.mjs +1 -1
  341. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget-designer.component.mjs +1 -1
  342. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget-edit.component.mjs +9 -9
  343. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget-filter.component.mjs +1 -1
  344. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget-print.component.mjs +1 -1
  345. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget-view.component.mjs +9 -9
  346. package/esm2022/widgets/lib/editors/rich-text-widget/rich-text-widget.config.mjs +1 -1
  347. package/esm2022/widgets/lib/editors/select-box-widget/index.mjs +1 -1
  348. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-column.component.mjs +1 -1
  349. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-designer.component.mjs +1 -1
  350. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-edit.component.mjs +26 -26
  351. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-filter.component.mjs +1 -1
  352. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-print.component.mjs +1 -1
  353. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget-view.component.mjs +23 -23
  354. package/esm2022/widgets/lib/editors/select-box-widget/select-box-widget.config.mjs +1 -1
  355. package/esm2022/widgets/lib/editors/selection-list-widget/index.mjs +1 -1
  356. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget-column.component.mjs +13 -13
  357. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget-designer.component.mjs +1 -1
  358. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget-edit.component.mjs +31 -31
  359. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget-filter.component.mjs +1 -1
  360. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget-print.component.mjs +1 -1
  361. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget-view.component.mjs +9 -9
  362. package/esm2022/widgets/lib/editors/selection-list-widget/selection-list-widget.config.mjs +1 -1
  363. package/esm2022/widgets/lib/editors/signature-pad-widget/index.mjs +1 -1
  364. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-column.component.mjs +1 -1
  365. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-designer.component.mjs +1 -1
  366. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +68 -58
  367. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-filter.component.mjs +1 -1
  368. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-print.component.mjs +1 -1
  369. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget-view.component.mjs +17 -17
  370. package/esm2022/widgets/lib/editors/signature-pad-widget/signature-pad-widget.config.mjs +1 -1
  371. package/esm2022/widgets/lib/editors/text-box-widget/index.mjs +1 -1
  372. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget-column.component.mjs +1 -1
  373. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget-designer.component.mjs +1 -1
  374. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget-edit.component.mjs +62 -62
  375. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget-filter.component.mjs +1 -1
  376. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget-print.component.mjs +1 -1
  377. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget-view.component.mjs +17 -17
  378. package/esm2022/widgets/lib/editors/text-box-widget/text-box-widget.config.mjs +1 -1
  379. package/esm2022/widgets/lib/editors/toggle-widget/index.mjs +1 -1
  380. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget-column.component.mjs +25 -25
  381. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget-designer.component.mjs +1 -1
  382. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget-edit.component.mjs +1 -1
  383. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget-filter.component.mjs +1 -1
  384. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget-print.component.mjs +1 -1
  385. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget-view.component.mjs +25 -25
  386. package/esm2022/widgets/lib/editors/toggle-widget/toggle-widget.config.mjs +1 -1
  387. package/esm2022/widgets/lib/layout/block-widget/block-widget.component.mjs +11 -11
  388. package/esm2022/widgets/lib/layout/block-widget/block-widget.config.mjs +1 -1
  389. package/esm2022/widgets/lib/layout/block-widget/index.mjs +1 -1
  390. package/esm2022/widgets/lib/widgets.module.mjs +4 -1
  391. package/esm2022/workflow/index.mjs +1 -1
  392. package/esm2022/workflow/lib/actions/start-workflow.action.mjs +1 -1
  393. package/esm2022/workflow/lib/errors.types.mjs +1 -1
  394. package/esm2022/workflow/lib/workflow-event-dispatcher.service.mjs +1 -1
  395. package/esm2022/workflow/lib/workflow-registery.service.mjs +1 -1
  396. package/esm2022/workflow/lib/workflow.module.mjs +1 -1
  397. package/esm2022/workflow/lib/workflow.service.mjs +1 -1
  398. package/esm2022/workflow/lib/workflow.types.mjs +1 -1
  399. package/fesm2022/acorex-platform-auth.mjs +14 -15
  400. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  401. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs → acorex-platform-common-avatar-widget-edit.component-BtnVjoMi.mjs} +68 -68
  402. package/fesm2022/acorex-platform-common-avatar-widget-edit.component-BtnVjoMi.mjs.map +1 -0
  403. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs → acorex-platform-common-avatar-widget-view.component-0-hGLYLK.mjs} +16 -16
  404. package/fesm2022/acorex-platform-common-avatar-widget-view.component-0-hGLYLK.mjs.map +1 -0
  405. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs → acorex-platform-common-boolean-widget-filter.component-CMkjO_x1.mjs} +76 -76
  406. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-CMkjO_x1.mjs.map +1 -0
  407. package/fesm2022/{acorex-platform-common-change-password.component-NvrMMq9e.mjs → acorex-platform-common-change-password.component-CULJjn0l.mjs} +100 -100
  408. package/fesm2022/acorex-platform-common-change-password.component-CULJjn0l.mjs.map +1 -0
  409. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs → acorex-platform-common-checkbox-widget-column.component-C91gG8nm.mjs} +31 -31
  410. package/fesm2022/acorex-platform-common-checkbox-widget-column.component-C91gG8nm.mjs.map +1 -0
  411. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs.map +1 -1
  412. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs → acorex-platform-common-checkbox-widget-view.component-BDAtJB1B.mjs} +25 -25
  413. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs.map → acorex-platform-common-checkbox-widget-view.component-BDAtJB1B.mjs.map} +1 -1
  414. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs.map +1 -1
  415. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs → acorex-platform-common-dateTime-widget-edit.component-DdqtbOY1.mjs} +100 -100
  416. package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-DdqtbOY1.mjs.map +1 -0
  417. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs → acorex-platform-common-dateTime-widget-filter.component-BjtIJkeC.mjs} +60 -60
  418. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-BjtIJkeC.mjs.map +1 -0
  419. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs → acorex-platform-common-dateTime-widget-view.component-Dxmnor_-.mjs} +21 -21
  420. package/fesm2022/acorex-platform-common-dateTime-widget-view.component-Dxmnor_-.mjs.map +1 -0
  421. package/fesm2022/{acorex-platform-common-email-widget-column.component-BgNdL62k.mjs → acorex-platform-common-email-widget-column.component-DlPoexcx.mjs} +23 -23
  422. package/fesm2022/acorex-platform-common-email-widget-column.component-DlPoexcx.mjs.map +1 -0
  423. package/fesm2022/{acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs → acorex-platform-common-email-widget-edit.component-CLl0gmdM.mjs} +134 -134
  424. package/fesm2022/acorex-platform-common-email-widget-edit.component-CLl0gmdM.mjs.map +1 -0
  425. package/fesm2022/{acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs → acorex-platform-common-email-widget-view.component-C4M7KGUS.mjs} +65 -65
  426. package/fesm2022/acorex-platform-common-email-widget-view.component-C4M7KGUS.mjs.map +1 -0
  427. package/fesm2022/acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs.map +1 -1
  428. package/fesm2022/{acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs → acorex-platform-common-file-widget-edit.component-ZXhaXwWN.mjs} +116 -116
  429. package/fesm2022/acorex-platform-common-file-widget-edit.component-ZXhaXwWN.mjs.map +1 -0
  430. package/fesm2022/{acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs → acorex-platform-common-file-widget-filter.component-DqYmxdx_.mjs} +6 -6
  431. package/fesm2022/acorex-platform-common-file-widget-filter.component-DqYmxdx_.mjs.map +1 -0
  432. package/fesm2022/{acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs → acorex-platform-common-file-widget-view.component-B0C9oJLT.mjs} +70 -70
  433. package/fesm2022/acorex-platform-common-file-widget-view.component-B0C9oJLT.mjs.map +1 -0
  434. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs → acorex-platform-common-gallery-widget-edit.component-DB0-6pik.mjs} +125 -125
  435. package/fesm2022/acorex-platform-common-gallery-widget-edit.component-DB0-6pik.mjs.map +1 -0
  436. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs → acorex-platform-common-gallery-widget-filter.component-Btrq4HP9.mjs} +6 -6
  437. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-Btrq4HP9.mjs.map +1 -0
  438. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs → acorex-platform-common-gallery-widget-view.component-Bp5cEEiY.mjs} +109 -109
  439. package/fesm2022/acorex-platform-common-gallery-widget-view.component-Bp5cEEiY.mjs.map +1 -0
  440. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs → acorex-platform-common-largetext-widget-edit.component-DJhPlQ0G.mjs} +13 -13
  441. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DJhPlQ0G.mjs.map +1 -0
  442. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs → acorex-platform-common-lookup-widget-column.component-CtvP7V_w.mjs} +3 -3
  443. package/fesm2022/acorex-platform-common-lookup-widget-column.component-CtvP7V_w.mjs.map +1 -0
  444. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-Do_yV2hi.mjs → acorex-platform-common-lookup-widget-edit.component-JjtWsg2g.mjs} +48 -44
  445. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-JjtWsg2g.mjs.map +1 -0
  446. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-AKqbYe-l.mjs → acorex-platform-common-lookup-widget-filter.component-B4C5JB_p.mjs} +66 -66
  447. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-B4C5JB_p.mjs.map +1 -0
  448. package/fesm2022/acorex-platform-common-lookup-widget-view.component-BHqYDEuU.mjs.map +1 -1
  449. package/fesm2022/{acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs → acorex-platform-common-map-widget-edit.component-BjrRrklq.mjs} +5 -5
  450. package/fesm2022/acorex-platform-common-map-widget-edit.component-BjrRrklq.mjs.map +1 -0
  451. package/fesm2022/{acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs → acorex-platform-common-map-widget-view.component-C5gL9-oB.mjs} +5 -5
  452. package/fesm2022/acorex-platform-common-map-widget-view.component-C5gL9-oB.mjs.map +1 -0
  453. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs → acorex-platform-common-messenger-widget-column.component-BQSYcyso.mjs} +23 -23
  454. package/fesm2022/acorex-platform-common-messenger-widget-column.component-BQSYcyso.mjs.map +1 -0
  455. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs → acorex-platform-common-messenger-widget-edit.component-BjqtP0ls.mjs} +88 -88
  456. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BjqtP0ls.mjs.map +1 -0
  457. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs → acorex-platform-common-messenger-widget-view.component-B4Yt68Vn.mjs} +67 -67
  458. package/fesm2022/acorex-platform-common-messenger-widget-view.component-B4Yt68Vn.mjs.map +1 -0
  459. package/fesm2022/{acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs → acorex-platform-common-number-widget-edit.component-D9dC514F.mjs} +15 -15
  460. package/fesm2022/acorex-platform-common-number-widget-edit.component-D9dC514F.mjs.map +1 -0
  461. package/fesm2022/{acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs → acorex-platform-common-number-widget-filter.component-BkKeBL6p.mjs} +86 -86
  462. package/fesm2022/acorex-platform-common-number-widget-filter.component-BkKeBL6p.mjs.map +1 -0
  463. package/fesm2022/acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs.map +1 -1
  464. package/fesm2022/{acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs → acorex-platform-common-password-widget-column.component-C0-x1_Np.mjs} +37 -37
  465. package/fesm2022/acorex-platform-common-password-widget-column.component-C0-x1_Np.mjs.map +1 -0
  466. package/fesm2022/{acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs → acorex-platform-common-password-widget-edit.component-BbYqIGEP.mjs} +15 -15
  467. package/fesm2022/acorex-platform-common-password-widget-edit.component-BbYqIGEP.mjs.map +1 -0
  468. package/fesm2022/{acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs → acorex-platform-common-password-widget-view.component-B6vGWi9I.mjs} +59 -59
  469. package/fesm2022/acorex-platform-common-password-widget-view.component-B6vGWi9I.mjs.map +1 -0
  470. package/fesm2022/{acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs → acorex-platform-common-phone-widget-column.component-uAeAPCog.mjs} +41 -41
  471. package/fesm2022/acorex-platform-common-phone-widget-column.component-uAeAPCog.mjs.map +1 -0
  472. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs → acorex-platform-common-phone-widget-edit.component-Dj_tdhZw.mjs} +146 -142
  473. package/fesm2022/acorex-platform-common-phone-widget-edit.component-Dj_tdhZw.mjs.map +1 -0
  474. package/fesm2022/{acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs → acorex-platform-common-phone-widget-view.component-D_A5NXzA.mjs} +69 -69
  475. package/fesm2022/acorex-platform-common-phone-widget-view.component-D_A5NXzA.mjs.map +1 -0
  476. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs → acorex-platform-common-rich-text-widget-column.component-DDJn1WqG.mjs} +23 -23
  477. package/fesm2022/acorex-platform-common-rich-text-widget-column.component-DDJn1WqG.mjs.map +1 -0
  478. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs → acorex-platform-common-rich-text-widget-edit.component-f30-VPMJ.mjs} +9 -9
  479. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-f30-VPMJ.mjs.map +1 -0
  480. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs → acorex-platform-common-rich-text-widget-view.component-Y214kMe4.mjs} +9 -9
  481. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-Y214kMe4.mjs.map +1 -0
  482. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs → acorex-platform-common-selection-list-widget-column.component-4uQzk7WQ.mjs} +17 -17
  483. package/fesm2022/acorex-platform-common-selection-list-widget-column.component-4uQzk7WQ.mjs.map +1 -0
  484. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs → acorex-platform-common-selection-list-widget-edit.component-BY7A969M.mjs} +29 -29
  485. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-BY7A969M.mjs.map +1 -0
  486. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs → acorex-platform-common-selection-list-widget-filter.component-hbxBcirf.mjs} +20 -20
  487. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-hbxBcirf.mjs.map +1 -0
  488. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs → acorex-platform-common-selection-list-widget-view.component-HzxEiWgp.mjs} +9 -9
  489. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-HzxEiWgp.mjs.map +1 -0
  490. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs → acorex-platform-common-signature-pad-widget-edit.component-C6VI3F_S.mjs} +56 -56
  491. package/fesm2022/acorex-platform-common-signature-pad-widget-edit.component-C6VI3F_S.mjs.map +1 -0
  492. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs → acorex-platform-common-signature-pad-widget-view.component-CEiBtv9t.mjs} +17 -17
  493. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CEiBtv9t.mjs.map +1 -0
  494. package/fesm2022/{acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs → acorex-platform-common-string-widget-filter.component-BZiyRHfg.mjs} +68 -68
  495. package/fesm2022/acorex-platform-common-string-widget-filter.component-BZiyRHfg.mjs.map +1 -0
  496. package/fesm2022/acorex-platform-common-text-widget-column.component-qXusAevm.mjs.map +1 -1
  497. package/fesm2022/{acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs → acorex-platform-common-text-widget-edit.component-DSwPteMX.mjs} +88 -88
  498. package/fesm2022/acorex-platform-common-text-widget-edit.component-DSwPteMX.mjs.map +1 -0
  499. package/fesm2022/{acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs → acorex-platform-common-text-widget-view.component-CKg9nvbY.mjs} +21 -21
  500. package/fesm2022/acorex-platform-common-text-widget-view.component-CKg9nvbY.mjs.map +1 -0
  501. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs → acorex-platform-common-toggle-widget-column.component-_IrciAj-.mjs} +33 -33
  502. package/fesm2022/acorex-platform-common-toggle-widget-column.component-_IrciAj-.mjs.map +1 -0
  503. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs.map +1 -1
  504. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs → acorex-platform-common-toggle-widget-view.component-B5JwQ8X-.mjs} +25 -25
  505. package/fesm2022/acorex-platform-common-toggle-widget-view.component-B5JwQ8X-.mjs.map +1 -0
  506. package/fesm2022/acorex-platform-common.mjs +125 -121
  507. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  508. package/fesm2022/acorex-platform-layout-builder.mjs +34 -34
  509. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  510. package/fesm2022/acorex-platform-layout-entity.mjs +384 -342
  511. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  512. package/fesm2022/acorex-platform-layouts-entity-create-view.component-DgPPnU8S.mjs +110 -0
  513. package/fesm2022/acorex-platform-layouts-entity-create-view.component-DgPPnU8S.mjs.map +1 -0
  514. package/fesm2022/acorex-platform-layouts-entity-import-view.component-V50y5Jjs.mjs +93 -0
  515. package/fesm2022/acorex-platform-layouts-entity-import-view.component-V50y5Jjs.mjs.map +1 -0
  516. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bwz4yVpK.mjs +91 -0
  517. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bwz4yVpK.mjs.map +1 -0
  518. package/fesm2022/acorex-platform-layouts.mjs +150 -55
  519. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  520. package/fesm2022/acorex-platform-mocks.mjs.map +1 -1
  521. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  522. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-qOxuoK6c.mjs +99 -0
  523. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-qOxuoK6c.mjs.map +1 -0
  524. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BJcpG94Q.mjs +88 -0
  525. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BJcpG94Q.mjs.map +1 -0
  526. package/fesm2022/acorex-platform-themes-default-error-401.component-BeQ4_BgW.mjs +31 -0
  527. package/fesm2022/acorex-platform-themes-default-error-401.component-BeQ4_BgW.mjs.map +1 -0
  528. package/fesm2022/acorex-platform-themes-default-error-404.component-BYDiT6Ns.mjs +25 -0
  529. package/fesm2022/acorex-platform-themes-default-error-404.component-BYDiT6Ns.mjs.map +1 -0
  530. package/fesm2022/acorex-platform-themes-default-error-offline.component-DUtW3w_g.mjs +19 -0
  531. package/fesm2022/acorex-platform-themes-default-error-offline.component-DUtW3w_g.mjs.map +1 -0
  532. package/fesm2022/acorex-platform-themes-default.mjs +83 -78
  533. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  534. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-Cx6WLV3_.mjs → acorex-platform-widgets-checkbox-widget-column.component-CFCwedxX.mjs} +25 -25
  535. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CFCwedxX.mjs.map +1 -0
  536. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-C_68pr-9.mjs → acorex-platform-widgets-checkbox-widget-view.component-CCTIjDb0.mjs} +29 -29
  537. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-CCTIjDb0.mjs.map +1 -0
  538. package/fesm2022/acorex-platform-widgets.mjs +1990 -1376
  539. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  540. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  541. package/fesm2022/acorex-platform.mjs.map +1 -1
  542. package/layout/builder/README.md +3 -3
  543. package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +2 -1
  544. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +9 -7
  545. package/layout/entity/lib/entity-master-single.viewmodel.d.ts +1 -0
  546. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +5 -4
  547. package/layout/entity/lib/workflows/create-entity.workflow.d.ts +1 -0
  548. package/layouts/README.md +3 -3
  549. package/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.d.ts +27 -0
  550. package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +2 -0
  551. package/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.d.ts +2 -1
  552. package/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.d.ts +1 -0
  553. package/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.d.ts +27 -0
  554. package/mocks/README.md +3 -3
  555. package/package.json +4 -1
  556. package/themes/default/README.md +3 -3
  557. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +3 -0
  558. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +1 -1
  559. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +1 -1
  560. package/widgets/README.md +3 -3
  561. package/widgets/lib/editors/link-widget/index.d.ts +7 -0
  562. package/widgets/lib/editors/link-widget/link-widget-column.component.d.ts +6 -0
  563. package/widgets/lib/editors/link-widget/link-widget-designer.component.d.ts +6 -0
  564. package/widgets/lib/editors/link-widget/link-widget-edit.component.d.ts +45 -0
  565. package/widgets/lib/editors/link-widget/link-widget-filter.component.d.ts +6 -0
  566. package/widgets/lib/editors/link-widget/link-widget-print.component.d.ts +6 -0
  567. package/widgets/lib/editors/link-widget/link-widget-view.component.d.ts +13 -0
  568. package/widgets/lib/editors/link-widget/link-widget.config.d.ts +2 -0
  569. package/widgets/lib/editors/number-box-widget/number-box-widget-edit.component.d.ts +4 -1
  570. package/widgets/lib/editors/signature-pad-widget/signature-pad-widget-edit.component.d.ts +2 -0
  571. package/workflow/README.md +3 -3
  572. package/fesm2022/acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs.map +0 -1
  573. package/fesm2022/acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs.map +0 -1
  574. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs.map +0 -1
  575. package/fesm2022/acorex-platform-common-change-password.component-NvrMMq9e.mjs.map +0 -1
  576. package/fesm2022/acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs.map +0 -1
  577. package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs.map +0 -1
  578. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs.map +0 -1
  579. package/fesm2022/acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs.map +0 -1
  580. package/fesm2022/acorex-platform-common-email-widget-column.component-BgNdL62k.mjs.map +0 -1
  581. package/fesm2022/acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs.map +0 -1
  582. package/fesm2022/acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs.map +0 -1
  583. package/fesm2022/acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs.map +0 -1
  584. package/fesm2022/acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs.map +0 -1
  585. package/fesm2022/acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs.map +0 -1
  586. package/fesm2022/acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs.map +0 -1
  587. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs.map +0 -1
  588. package/fesm2022/acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs.map +0 -1
  589. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs.map +0 -1
  590. package/fesm2022/acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs.map +0 -1
  591. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-Do_yV2hi.mjs.map +0 -1
  592. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-AKqbYe-l.mjs.map +0 -1
  593. package/fesm2022/acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs.map +0 -1
  594. package/fesm2022/acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs.map +0 -1
  595. package/fesm2022/acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs.map +0 -1
  596. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs.map +0 -1
  597. package/fesm2022/acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs.map +0 -1
  598. package/fesm2022/acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs.map +0 -1
  599. package/fesm2022/acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs.map +0 -1
  600. package/fesm2022/acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs.map +0 -1
  601. package/fesm2022/acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs.map +0 -1
  602. package/fesm2022/acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs.map +0 -1
  603. package/fesm2022/acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs.map +0 -1
  604. package/fesm2022/acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs.map +0 -1
  605. package/fesm2022/acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs.map +0 -1
  606. package/fesm2022/acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs.map +0 -1
  607. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs.map +0 -1
  608. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs.map +0 -1
  609. package/fesm2022/acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs.map +0 -1
  610. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs.map +0 -1
  611. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs.map +0 -1
  612. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs.map +0 -1
  613. package/fesm2022/acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs.map +0 -1
  614. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs.map +0 -1
  615. package/fesm2022/acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs.map +0 -1
  616. package/fesm2022/acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs.map +0 -1
  617. package/fesm2022/acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs.map +0 -1
  618. package/fesm2022/acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs.map +0 -1
  619. package/fesm2022/acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs.map +0 -1
  620. package/fesm2022/acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs +0 -107
  621. package/fesm2022/acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs.map +0 -1
  622. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-D1h1xORH.mjs +0 -88
  623. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-D1h1xORH.mjs.map +0 -1
  624. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs +0 -96
  625. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs.map +0 -1
  626. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-F7dr-osu.mjs +0 -85
  627. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-F7dr-osu.mjs.map +0 -1
  628. package/fesm2022/acorex-platform-themes-default-error-401.component-Djuin07Z.mjs +0 -31
  629. package/fesm2022/acorex-platform-themes-default-error-401.component-Djuin07Z.mjs.map +0 -1
  630. package/fesm2022/acorex-platform-themes-default-error-404.component-C-RyiLkk.mjs +0 -25
  631. package/fesm2022/acorex-platform-themes-default-error-404.component-C-RyiLkk.mjs.map +0 -1
  632. package/fesm2022/acorex-platform-themes-default-error-offline.component-WCfy9-cr.mjs +0 -19
  633. package/fesm2022/acorex-platform-themes-default-error-offline.component-WCfy9-cr.mjs.map +0 -1
  634. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-Cx6WLV3_.mjs.map +0 -1
  635. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C_68pr-9.mjs.map +0 -1
@@ -1,14 +1,15 @@
1
- import { cloneDeep } from "lodash-es";
2
- import { Injectable, Injector, computed, inject, signal } from "@angular/core";
3
- import { AXPEntityDefinitionRegistryService } from "./entity-registery.service";
4
- import { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } from "./entity.viewmodel";
5
- import { AXFormatService } from "@acorex/core/format";
6
- import { AXPSessionService } from "@acorex/platform/auth";
7
- import { AXDataSource } from "@acorex/components/common";
8
- import { AXPWorkflowService, ofType } from "@acorex/platform/workflow";
9
- import { AXPEntityCommandScope, AXPLayoutService } from "@acorex/platform/common";
10
- import { AXPEntityDeletedEvent } from "./workflows/delete-entity.workflow";
11
- import { Subject, takeUntil } from "rxjs";
1
+ import { AXDataSource } from '@acorex/components/common';
2
+ import { AXFormatService } from '@acorex/core/format';
3
+ import { AXPSessionService } from '@acorex/platform/auth';
4
+ import { AXPEntityCommandScope, AXPLayoutService } from '@acorex/platform/common';
5
+ import { AXPWorkflowService, ofType } from '@acorex/platform/workflow';
6
+ import { Injectable, Injector, computed, inject, signal } from '@angular/core';
7
+ import { cloneDeep } from 'lodash-es';
8
+ import { Subject, takeUntil } from 'rxjs';
9
+ import { AXPEntityDefinitionRegistryService } from './entity-registery.service';
10
+ import { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } from './entity.viewmodel';
11
+ import { AXPEntityDeletedEvent } from './workflows/delete-entity.workflow';
12
+ import { AXTranslationService } from '@acorex/core/translation';
12
13
  import * as i0 from "@angular/core";
13
14
  export class AXPEntityMasterListViewQueryViewModel {
14
15
  constructor(entity, section, view) {
@@ -32,6 +33,7 @@ export class AXPEntityMasterListViewModel {
32
33
  this.session = this.injector.get(AXPSessionService);
33
34
  this.workflow = this.injector.get(AXPWorkflowService);
34
35
  this.destroyed = new Subject();
36
+ this.translateService = this.injector.get(AXTranslationService);
35
37
  this.events$ = new Subject();
36
38
  this.dataSource = new AXDataSource({
37
39
  byKey: (key) => {
@@ -43,7 +45,7 @@ export class AXPEntityMasterListViewModel {
43
45
  return func(e);
44
46
  },
45
47
  pageSize: 10,
46
- key: 'id'
48
+ key: 'id',
47
49
  });
48
50
  this.selectedItems = signal([]);
49
51
  this.hasSelectedItems = computed(() => {
@@ -59,7 +61,7 @@ export class AXPEntityMasterListViewModel {
59
61
  });
60
62
  //****************** Inline filter ******************//
61
63
  this.inlineFiltersPlaceholders = computed(() => {
62
- return this.entityDef.properties.filter(p => p.options?.filter?.inline?.enabled).map(c => c.title);
64
+ return this.entityDef.properties.filter((p) => p.options?.filter?.inline?.enabled).map((c) => c.title);
63
65
  });
64
66
  this.hasInlineFilters = computed(() => {
65
67
  return this.inlineFiltersPlaceholders().length > 0;
@@ -68,42 +70,46 @@ export class AXPEntityMasterListViewModel {
68
70
  this.beardcrumbs = computed(() => {
69
71
  return [
70
72
  {
71
- title: "Home",
72
- icon: "fa-solid fa-home ax-text-xs ax-me-2",
73
- url: [`/${this.session.application?.name}`]
73
+ title: this.translateService.translateSync('entity.home'),
74
+ icon: 'fa-solid fa-home ax-text-xs ax-me-2',
75
+ url: [`/${this.session.application?.name}`],
74
76
  },
75
77
  {
76
78
  title: this.title(),
77
- url: [`/${this.session.application?.name}`, 'm', `${this.entityDef.module}`, 'e', `${this.entityDef.name}`, 'list']
78
- }
79
+ url: [`/${this.session.application?.name}`, 'm', `${this.entityDef.module}`, 'e', `${this.entityDef.name}`, 'list'],
80
+ },
79
81
  ];
80
82
  });
81
83
  //****************** Actions ******************//
82
- this.actions = computed(() => {
84
+ this.allActions = computed(() => {
83
85
  const list = this.entityDef.interfaces?.master?.list?.actions ?? [];
84
- return list
85
- .filter(a => (a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||
86
- (a.scope != AXPEntityCommandScope.Selected && !this.hasSelectedItems()))
87
- .map((tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)) ?? [];
86
+ return list.map((tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)) ?? [];
88
87
  });
89
88
  this.primaryActions = computed(() => {
90
- return this.actions().filter(c => c.priority == 'primary');
89
+ return this.allActions().filter((a) => a.priority == 'primary' &&
90
+ ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||
91
+ (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())));
91
92
  });
92
93
  this.secondaryActions = computed(() => {
93
- return this.actions().filter(c => c.priority == 'secondary');
94
+ return this.allActions().filter((a) => a.priority == 'secondary' &&
95
+ ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||
96
+ (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())));
97
+ });
98
+ this.rowActions = computed(() => {
99
+ return this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual);
94
100
  });
95
101
  //****************** Filter ******************//
96
102
  this.inlineFilters = {
97
103
  field: null,
98
104
  logic: 'or',
99
105
  operator: null,
100
- filters: []
106
+ filters: [],
101
107
  };
102
108
  this.advanceFilters = {
103
109
  field: null,
104
110
  logic: 'and',
105
111
  operator: null,
106
- filters: []
112
+ filters: [],
107
113
  };
108
114
  //****************** Columns ******************//
109
115
  this.allAvailableColumns = () => {
@@ -112,28 +118,28 @@ export class AXPEntityMasterListViewModel {
112
118
  const visiblePropNames = new Set(visibleProperties.map(({ name }) => name));
113
119
  return columns
114
120
  .filter(({ name }) => visiblePropNames.has(name))
115
- .map(column => {
121
+ .map((column) => {
116
122
  const property = visibleProperties.find(({ name }) => name === column.name);
117
123
  return new AXPEntityListViewColumnViewModel(property, column);
118
124
  });
119
125
  };
120
126
  this.visibleColumnCount = () => {
121
- return this.columns().filter(c => c.visible == true).length;
127
+ return this.columns().filter((c) => c.visible == true).length;
122
128
  };
123
129
  this.columns = signal([]);
124
130
  //****************** Sort ******************//
125
131
  this.sortableFields = () => {
126
- const props = this.entityDef.properties.filter(c => c.options?.sort?.enabled);
127
- return props.map(e => {
132
+ const props = this.entityDef.properties.filter((c) => c.options?.sort?.enabled);
133
+ return props.map((e) => {
128
134
  return {
129
135
  name: e.name,
130
136
  title: e.title,
131
- dir: 'asc'
137
+ dir: 'asc',
132
138
  };
133
139
  });
134
140
  };
135
141
  this.sortableFieldsCount = () => {
136
- return this.entityDef.properties.filter(c => c.options?.sort?.enabled).length ?? 0;
142
+ return this.entityDef.properties.filter((c) => c.options?.sort?.enabled).length ?? 0;
137
143
  };
138
144
  this.canSort = () => {
139
145
  return this.sortableFieldsCount() > 0;
@@ -147,7 +153,7 @@ export class AXPEntityMasterListViewModel {
147
153
  this.sortedFields = signal([]);
148
154
  this.views = computed(() => {
149
155
  const views = this.entityDef.interfaces?.master?.list?.views ?? [];
150
- return views.map(v => {
156
+ return views.map((v) => {
151
157
  return new AXPEntityMasterListViewQueryViewModel(this.entityDef, this, v);
152
158
  });
153
159
  });
@@ -156,10 +162,10 @@ export class AXPEntityMasterListViewModel {
156
162
  .pipe(ofType(AXPEntityDeletedEvent))
157
163
  .pipe(takeUntil(this.destroyed))
158
164
  .subscribe((event) => {
159
- debugger;
165
+ // debugger
160
166
  if (event.payload.entity == this.entityDef.source) {
161
167
  this.selectedItems.set([]);
162
- this.events$.next({ action: "refresh" });
168
+ this.events$.next({ action: 'refresh' });
163
169
  }
164
170
  });
165
171
  }
@@ -167,16 +173,16 @@ export class AXPEntityMasterListViewModel {
167
173
  this.selectedItems.set([]);
168
174
  }
169
175
  applyInlineFilter(value) {
170
- const props = this.entityDef.properties.filter(c => c.options?.filter?.inline?.enabled);
176
+ const props = this.entityDef.properties.filter((c) => c.options?.filter?.inline?.enabled);
171
177
  this.inlineFilters.filters = [];
172
178
  if (value) {
173
- props.forEach(p => {
179
+ props.forEach((p) => {
174
180
  this.inlineFilters.filters?.push({
175
181
  field: p.name,
176
182
  operator: {
177
- type: 'contains'
183
+ type: 'contains',
178
184
  },
179
- value
185
+ value,
180
186
  });
181
187
  });
182
188
  }
@@ -185,12 +191,12 @@ export class AXPEntityMasterListViewModel {
185
191
  applyFilterAndSort() {
186
192
  this.dataSource.clearFilter();
187
193
  //
188
- this.dataSource.sort(...this.sortedFields().map(s => ({ dir: s.dir, field: s.name })));
194
+ this.dataSource.sort(...this.sortedFields().map((s) => ({ dir: s.dir, field: s.name })));
189
195
  //
190
- this.advanceFilters.filters = this.view().conditions.map(f => ({
196
+ this.advanceFilters.filters = this.view().conditions.map((f) => ({
191
197
  field: f.name,
192
198
  operator: f.operator,
193
- value: f.value
199
+ value: f.value,
194
200
  }));
195
201
  //
196
202
  const inline = this.inlineFilters.filters?.length ?? 0;
@@ -206,7 +212,7 @@ export class AXPEntityMasterListViewModel {
206
212
  field: null,
207
213
  logic: 'and',
208
214
  operator: null,
209
- filters: [this.inlineFilters, this.advanceFilters]
215
+ filters: [this.inlineFilters, this.advanceFilters],
210
216
  });
211
217
  }
212
218
  //
@@ -220,12 +226,11 @@ export class AXPEntityMasterListViewModel {
220
226
  }
221
227
  applyViewColumns() {
222
228
  const cols = this.view().columns;
223
- const cloned = this.allAvailableColumns()
224
- .map(c => {
225
- const column = this.entityDef.columns?.find(cc => cc.name == c.name);
226
- const prop = this.entityDef.properties.find(p => p.name == c.name);
229
+ const cloned = this.allAvailableColumns().map((c) => {
230
+ const column = this.entityDef.columns?.find((cc) => cc.name == c.name);
231
+ const prop = this.entityDef.properties.find((p) => p.name == c.name);
227
232
  const col = new AXPEntityListViewColumnViewModel(prop, column);
228
- col.visible = !cols.some(c => c == col.name) && col.visible != false;
233
+ col.visible = !cols.some((c) => c == col.name) && col.visible != false;
229
234
  return col;
230
235
  });
231
236
  this.columns.set(cloned);
@@ -237,26 +242,26 @@ export class AXPEntityMasterListViewModel {
237
242
  this.applyFilterAndSort();
238
243
  }
239
244
  addSort() {
240
- const prop = this.sortableFields().find(c => !this.sortedFields().some(s => s.name == c.name));
245
+ const prop = this.sortableFields().find((c) => !this.sortedFields().some((s) => s.name == c.name));
241
246
  if (prop) {
242
247
  this.sortedFields.set([...this.sortedFields(), ...[prop]]);
243
248
  }
244
249
  }
245
250
  removeSort(name) {
246
- this.sortedFields.set(this.sortedFields().filter(c => c.name != name));
251
+ this.sortedFields.set(this.sortedFields().filter((c) => c.name != name));
247
252
  }
248
253
  applyViewSorts() {
249
- const fileds = this.view().sorts.map(c => ({
254
+ const fileds = this.view().sorts.map((c) => ({
250
255
  name: c.name,
251
256
  title: c.name,
252
- dir: c.dir ?? 'asc'
257
+ dir: c.dir ?? 'asc',
253
258
  }));
254
259
  this.sortedFields.set(fileds);
255
260
  }
256
261
  //****************** Views ******************//
257
262
  setView(viewName = null) {
258
263
  if (viewName != this.view().name) {
259
- this.view.set(this.views().find(c => c.name == viewName) ?? this.views()[0]);
264
+ this.view.set(this.views().find((c) => c.name == viewName) ?? this.views()[0]);
260
265
  this.applyViewSorts();
261
266
  this.applyViewColumns();
262
267
  this.applyFilterAndSort();
@@ -264,10 +269,12 @@ export class AXPEntityMasterListViewModel {
264
269
  }
265
270
  //****************** Commands ******************//
266
271
  async executeCommand(commandName, data = null) {
267
- const action = this.actions().find(c => c.name == commandName);
272
+ const action = this.allActions().find((c) => c.name == commandName &&
273
+ ((this.selectedItems().length ? c.scope == AXPEntityCommandScope.Selected : c.scope == AXPEntityCommandScope.Individual) ||
274
+ c.scope == AXPEntityCommandScope.TypeLevel));
268
275
  await this.workflow.execute(commandName, {
269
276
  entity: this.entityDef.source,
270
- data: action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : data
277
+ data: action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : data,
271
278
  });
272
279
  }
273
280
  //
@@ -302,4 +309,4 @@ export const AXPEntityListViewModelResolver = (route, state, service = inject(AX
302
309
  //
303
310
  return service.create(moduleName, entityName);
304
311
  };
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LnZpZXdtb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL2VudGl0eS1tYXN0ZXItbGlzdC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQWMsVUFBVSxFQUFFLFFBQVEsRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUEwQyxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQWUxQyxNQUFNLE9BQU8scUNBQXFDO0lBRTlDLFlBQW9CLE1BQWlCLEVBQVUsT0FBcUMsRUFBVSxJQUFrQjtRQUE1RixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFj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QUM1RixLQUE2QixFQUM3QixLQUEwQixFQUMxQixVQUF5QyxNQUFNLENBQUMsNkJBQTZCLENBQUMsRUFDekMsRUFBRTtJQUN2QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFXLENBQUM7SUFDNUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQ2xFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQzFELEVBQUU7SUFDRixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFZpZXdSZWYsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tIFwiLi9lbnRpdHktcmVnaXN0ZXJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCwgQVhQRW50aXR5TGlzdFZpZXdDb2x1bW5WaWV3TW9kZWwgfSBmcm9tIFwiLi9lbnRpdHkudmlld21vZGVsXCI7XHJcbmltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L2NvcmUvZm9ybWF0XCI7XHJcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vYXV0aFwiO1xyXG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiwgQVhEYXRhU291cmNlU29ydE9wdGlvbiB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uXCI7XHJcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSwgb2ZUeXBlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3dcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBRdWVyeVZpZXcsIEFYUEJlYXJkQ3J1bWIsIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQTGF5b3V0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlEZWxldGVkRXZlbnQgfSBmcm9tIFwiLi93b3JrZmxvd3MvZGVsZXRlLWVudGl0eS53b3JrZmxvd1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcclxuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3V0aWxzXCI7XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3U29ydFByb3BWaWV3TW9kZWwge1xyXG5cclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBkaXI6IHN0cmluZztcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eTogQVhQRW50aXR5LCBwcml2YXRlIHNlY3Rpb246IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwsIHByaXZhdGUgdmlldzogQVhQUXVlcnlWaWV3KSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5hbWUgPSB0aGlzLnZpZXcubmFtZTtcclxuICAgIHRpdGxlID0gdGhpcy52aWV3LnRpdGxlO1xyXG4gICAgc29ydHMgPSB0aGlzLnZpZXcuc29ydHM7XHJcbiAgICBjb2x1bW5zID0gdGhpcy52aWV3LmNvbHVtbnM7XHJcbiAgICBjb25kaXRpb25zID0gdGhpcy52aWV3LmNvbmRpdGlvbnM7XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwge1xyXG5cclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eURlZiA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZykhO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0RlZiA9IGNsb25lRGVlcCh0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3QpIVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhGb3JtYXRTZXJ2aWNlKVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uID0gdGhpcy5pbmplY3Rvci5nZXQoQVhQU2Vzc2lvblNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIGV2ZW50cyQ6IFN1YmplY3Q8eyBhY3Rpb246IHN0cmluZyB9PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG5cclxuXHJcbiAgICBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgYnlLZXk6IChrZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMuYnlLZXkuZXhlY3V0ZSBhcyBGdW5jdGlvbjtcclxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvYWQ6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmVudGl0eURlZi5xdWVyaWVzLmxpc3Q/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XHJcbiAgICAgICAgICAgIHJldHVybiBmdW5jKGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgIGtleTogJ2lkJ1xyXG5cclxuICAgIH0pXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlnOiBBWFBFbnRpdHlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3cuZXZlbnRzJFxyXG4gICAgICAgICAgICAucGlwZShvZlR5cGUoQVhQRW50aXR5RGVsZXRlZEV2ZW50KSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucGF5bG9hZC5lbnRpdHkgPT0gdGhpcy5lbnRpdHlEZWYuc291cmNlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50cyQubmV4dCh7IGFjdGlvbjogXCJyZWZyZXNoXCIgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XHJcblxyXG4gICAgcHVibGljIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDBcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBUaXRsZSAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIHRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdEZWYudGl0bGUgPz8gdGhpcy5lbnRpdHlEZWYuZm9ybWF0cy5wbHVyYWwhO1xyXG4gICAgfSk7XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBEZXNjcmlwdGlvbiAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uID8/IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBJbmxpbmUgZmlsdGVyICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKHAgPT4gcC5vcHRpb25zPy5maWx0ZXI/LmlubGluZT8uZW5hYmxlZCkubWFwKGMgPT4gYy50aXRsZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwdWJsaWMgaGFzSW5saW5lRmlsdGVycyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkubGVuZ3RoID4gMDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIEJlYXJkY3J1bWJzICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwdWJsaWMgYmVhcmRjcnVtYnMgPSBjb21wdXRlZDxBWFBCZWFyZENydW1iW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJIb21lXCIsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBcImZhLXNvbGlkIGZhLWhvbWUgYXgtdGV4dC14cyBheC1tZS0yXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlKCksXHJcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWAsICdtJywgYCR7dGhpcy5lbnRpdHlEZWYubW9kdWxlfWAsICdlJywgYCR7dGhpcy5lbnRpdHlEZWYubmFtZX1gLCAnbGlzdCddXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBBY3Rpb25zICoqKioqKioqKioqKioqKioqKi8vXHJcbiAgICBwcml2YXRlIGFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuZW50aXR5RGVmLmludGVyZmFjZXM/Lm1hc3Rlcj8ubGlzdD8uYWN0aW9ucyA/PyBbXTtcclxuICAgICAgICByZXR1cm4gbGlzdFxyXG4gICAgICAgICAgICAuZmlsdGVyKGEgPT5cclxuICAgICAgICAgICAgICAgIChhLnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCAmJiB0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSkgfHxcclxuICAgICAgICAgICAgICAgIChhLnNjb3BlICE9IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCAmJiAhdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAncHJpbWFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihjID0+IGMucHJpb3JpdHkgPT0gJ3NlY29uZGFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogRmlsdGVyICoqKioqKioqKioqKioqKioqKi8vXHJcblxyXG4gICAgcHJpdmF0ZSBpbmxpbmVGaWx0ZXJzOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gPSB7XHJcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxyXG4gICAgICAgIGxvZ2ljOiAnb3InLFxyXG4gICAgICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcclxuICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGFkdmFuY2VGaWx0ZXJzOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24gPSB7XHJcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxyXG4gICAgICAgIGxvZ2ljOiAnYW5kJyxcclxuICAgICAgICBvcGVyYXRvcjogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgZmlsdGVyczogW11cclxuICAgIH07XHJcblxyXG4gICAgYXBwbHlJbmxpbmVGaWx0ZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHByb3BzID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoYyA9PiBjLm9wdGlvbnM/LmZpbHRlcj8uaW5saW5lPy5lbmFibGVkKTtcclxuICAgICAgICB0aGlzLmlubGluZUZpbHRlcnMuZmlsdGVycyA9IFtdO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBwcm9wcy5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBwLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2NvbnRhaW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlGaWx0ZXJBbmRTb3J0KCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jbGVhckZpbHRlcigpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQoLi4udGhpcy5zb3J0ZWRGaWVsZHMoKS5tYXAocyA9PiAoeyBkaXI6IHMuZGlyLCBmaWVsZDogcy5uYW1lIH0gYXMgQVhEYXRhU291cmNlU29ydE9wdGlvbikpKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZUZpbHRlcnMuZmlsdGVycyA9IHRoaXMudmlldygpLmNvbmRpdGlvbnMubWFwKGYgPT4gKHtcclxuICAgICAgICAgICAgZmllbGQ6IGYubmFtZSxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IGYub3BlcmF0b3IsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmLnZhbHVlXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgY29uc3QgaW5saW5lID0gdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIGNvbnN0IGFkdmFuY2UgPSB0aGlzLmFkdmFuY2VGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIGlmIChpbmxpbmUgJiYgIWFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmlubGluZUZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghaW5saW5lICYmIGFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmFkdmFuY2VGaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW5saW5lICYmIGFkdmFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICBsb2dpYzogJ2FuZCcsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogbnVsbCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5pbmxpbmVGaWx0ZXJzLCB0aGlzLmFkdmFuY2VGaWx0ZXJzXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIENvbHVtbnMgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbiAgICBwcml2YXRlIGFsbEF2YWlsYWJsZUNvbHVtbnMgPSAoKTogQVhQRW50aXR5TGlzdFZpZXdDb2x1bW5WaWV3TW9kZWxbXSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2x1bW5zID0gW10sIHByb3BlcnRpZXMgfSA9IHRoaXMuZW50aXR5RGVmO1xyXG4gICAgICAgIGNvbnN0IHZpc2libGVQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIoKHsgc2NoZW1hIH0pID0+ICFzY2hlbWE/LmhpZGRlbik7XHJcbiAgICAgICAgY29uc3QgdmlzaWJsZVByb3BOYW1lcyA9IG5ldyBTZXQodmlzaWJsZVByb3BlcnRpZXMubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gY29sdW1uc1xyXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gdmlzaWJsZVByb3BOYW1lcy5oYXMobmFtZSkpXHJcbiAgICAgICAgICAgIC5tYXAoY29sdW1uID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmlzaWJsZVByb3BlcnRpZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IGNvbHVtbi5uYW1lKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TGlzdFZpZXdDb2x1bW5WaWV3TW9kZWwocHJvcGVydHkhLCBjb2x1bW4pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgdmlzaWJsZUNvbHVtbkNvdW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5maWx0ZXIoYyA9PiBjLnZpc2libGUgPT0gdHJ1ZSkubGVuZ3RoO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb2x1bW5zID0gc2lnbmFsPEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsW10+KFtdKTtcclxuXHJcbiAgICByZXNldENvbHVtbnMoKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseVZpZXdDb2x1bW5zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlDb2x1bW5zKCkge1xyXG4gICAgICAgIC8vdGhpcy5jb2x1bW5zLnNldCh0aGlzLmNsb25lZENvbHVtbnMoKSlcclxuICAgIH1cclxuXHJcbiAgICBhcHBseVZpZXdDb2x1bW5zKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLnZpZXcoKS5jb2x1bW5zO1xyXG4gICAgICAgIGNvbnN0IGNsb25lZCA9IHRoaXMuYWxsQXZhaWxhYmxlQ29sdW1ucygpXHJcbiAgICAgICAgICAgIC5tYXAoYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmVudGl0eURlZi5jb2x1bW5zPy5maW5kKGNjID0+IGNjLm5hbWUgPT0gYy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbmQocCA9PiBwLm5hbWUgPT0gYy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbCA9IG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wISwgY29sdW1uISk7XHJcbiAgICAgICAgICAgICAgICBjb2wudmlzaWJsZSA9ICFjb2xzLnNvbWUoYyA9PiBjID09IGNvbC5uYW1lKSAmJiBjb2wudmlzaWJsZSAhPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2w7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnNldChjbG9uZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqIFNvcnQgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbiAgICBzb3J0YWJsZUZpZWxkcyA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wcyA9IHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKGMgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKTtcclxuICAgICAgICByZXR1cm4gcHJvcHMubWFwKGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGUudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkaXI6ICdhc2MnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgIH07XHJcblxyXG4gICAgc29ydGFibGVGaWVsZHNDb3VudCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoYyA9PiBjLm9wdGlvbnM/LnNvcnQ/LmVuYWJsZWQpLmxlbmd0aCA/PyAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNhblNvcnQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydGFibGVGaWVsZHNDb3VudCgpID4gMFxyXG4gICAgfTtcclxuXHJcbiAgICBjYW5BZGRNb3JlU29ydCA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0ZWRDb3VudCgpIDwgdGhpcy5zb3J0YWJsZUZpZWxkc0NvdW50KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNvcnRlZENvdW50ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRlZEZpZWxkcygpLmxlbmd0aFxyXG4gICAgfTtcclxuXHJcbiAgICBzb3J0ZWRGaWVsZHMgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdTb3J0UHJvcFZpZXdNb2RlbFtdPihbXSk7XHJcblxyXG4gICAgcmVzZXRTb3J0cygpIHtcclxuICAgICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlTb3J0cygpIHtcclxuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyQW5kU29ydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFNvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHRoaXMuc29ydGFibGVGaWVsZHMoKS5maW5kKGMgPT4gIXRoaXMuc29ydGVkRmllbGRzKCkuc29tZShzID0+IHMubmFtZSA9PSBjLm5hbWUpKVxyXG4gICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ydGVkRmllbGRzLnNldChbLi4udGhpcy5zb3J0ZWRGaWVsZHMoKSwgLi4uW3Byb3BdXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNvcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KHRoaXMuc29ydGVkRmllbGRzKCkuZmlsdGVyKGMgPT4gYy5uYW1lICE9IG5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBhcHBseVZpZXdTb3J0cygpIHtcclxuICAgICAgICBjb25zdCBmaWxlZHMgPSB0aGlzLnZpZXcoKS5zb3J0cy5tYXAoYyA9PiAoe1xyXG4gICAgICAgICAgICBuYW1lOiBjLm5hbWUsXHJcbiAgICAgICAgICAgIHRpdGxlOiBjLm5hbWUsXHJcbiAgICAgICAgICAgIGRpcjogYy5kaXIgPz8gJ2FzYydcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KGZpbGVkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogVmlld3MgKioqKioqKioqKioqKioqKioqLy9cclxuXHJcblxyXG4gICAgc2V0Vmlldyh2aWV3TmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBpZiAodmlld05hbWUgIT0gdGhpcy52aWV3KCkubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0KHRoaXMudmlld3MoKS5maW5kKGMgPT4gYy5uYW1lID09IHZpZXdOYW1lKSA/PyB0aGlzLnZpZXdzKClbMF0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlWaWV3Q29sdW1ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyQW5kU29ydCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2aWV3cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCB2aWV3cyA9IHRoaXMuZW50aXR5RGVmLmludGVyZmFjZXM/Lm1hc3Rlcj8ubGlzdD8udmlld3MgPz8gW107XHJcbiAgICAgICAgcmV0dXJuIHZpZXdzLm1hcCh2ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsKHRoaXMuZW50aXR5RGVmLCB0aGlzLCB2KTtcclxuICAgICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgdmlldyA9IHNpZ25hbDxBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1F1ZXJ5Vmlld01vZGVsPih0aGlzLnZpZXdzKClbMF0pO1xyXG5cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiAgQ29tbWFuZHMgKioqKioqKioqKioqKioqKioqLy9cclxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ29tbWFuZChjb21tYW5kTmFtZTogc3RyaW5nLCBkYXRhOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb25zKCkuZmluZChjID0+IGMubmFtZSA9PSBjb21tYW5kTmFtZSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy53b3JrZmxvdy5leGVjdXRlKGNvbW1hbmROYW1lLCB7XHJcbiAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYuc291cmNlLFxyXG4gICAgICAgICAgICBkYXRhOiBhY3Rpb24/LnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCA/IHRoaXMuc2VsZWN0ZWRJdGVtcygpIDogZGF0YVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICAvL1xyXG4gICAgZGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5IHtcclxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgbGF5b3V0ID0gaW5qZWN0KEFYUExheW91dFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZShtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4ge1xyXG4gICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKHRydWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZW50aXR5U2VydmljZS5yZXNvbHZlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgY29uZmlnKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxSZXNvbHZlcjogUmVzb2x2ZUZuPFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4+ID0gKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgIHNlcnZpY2U6IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5KVxyXG4pOiBQcm9taXNlPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWw+ID0+IHtcclxuICAgIGNvbnN0IGFwcE5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnYXBwJykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHJvdXRlLnBhcmVudD8ucGFyYW1NYXAuZ2V0KCdtb2R1bGUnKSBhcyBzdHJpbmc7XHJcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gcm91dGUucGFyYW1NYXAuZ2V0KCdlbnRpdHknKSBhcyBzdHJpbmc7XHJcbiAgICAvL1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuY3JlYXRlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xyXG59O1xyXG5cclxuXHJcblxyXG4iXX0=
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LnZpZXdtb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL2VudGl0eS1tYXN0ZXItbGlzdC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUE0QixxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSx5QkFBeUIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFRaEUsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxZQUFvQixNQUFpQixFQUFVLE9BQXFDLEVBQVUsSUFBa0I7UUFBNUYsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFV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QU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBVyxDQUFDO0lBQzVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQVcsQ0FBQztJQUMxRCxFQUFFO0lBQ0YsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiwgQVhEYXRhU291cmNlU29ydE9wdGlvbiB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBCZWFyZENydW1iLCBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQTGF5b3V0U2VydmljZSwgQVhQUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlLCBvZlR5cGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVnaXN0ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWwsIEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsIH0gZnJvbSAnLi9lbnRpdHkudmlld21vZGVsJztcbmltcG9ydCB7IEFYUEVudGl0eURlbGV0ZWRFdmVudCB9IGZyb20gJy4vd29ya2Zsb3dzL2RlbGV0ZS1lbnRpdHkud29ya2Zsb3cnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3U29ydFByb3BWaWV3TW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRpcjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW50aXR5OiBBWFBFbnRpdHksIHByaXZhdGUgc2VjdGlvbjogQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbCwgcHJpdmF0ZSB2aWV3OiBBWFBRdWVyeVZpZXcpIHt9XG5cbiAgbmFtZSA9IHRoaXMudmlldy5uYW1lO1xuICB0aXRsZSA9IHRoaXMudmlldy50aXRsZTtcbiAgc29ydHMgPSB0aGlzLnZpZXcuc29ydHM7XG4gIGNvbHVtbnMgPSB0aGlzLnZpZXcuY29sdW1ucztcbiAgY29uZGl0aW9ucyA9IHRoaXMudmlldy5jb25kaXRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50aXR5RGVmID0gY2xvbmVEZWVwKHRoaXMuY29uZmlnKSE7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdEZWYgPSBjbG9uZURlZXAodGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5saXN0KSE7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIHB1YmxpYyBldmVudHMkOiBTdWJqZWN0PHsgYWN0aW9uOiBzdHJpbmcgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGRhdGFTb3VyY2UgPSBuZXcgQVhEYXRhU291cmNlKHtcbiAgICBieUtleTogKGtleSkgPT4ge1xuICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMuYnlLZXkuZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICAgIHJldHVybiBmdW5jKCk7XG4gICAgfSxcbiAgICBsb2FkOiAoZSkgPT4ge1xuICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMubGlzdD8uZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICAgIHJldHVybiBmdW5jKGUpO1xuICAgIH0sXG4gICAgcGFnZVNpemU6IDEwLFxuICAgIGtleTogJ2lkJyxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgY29uZmlnOiBBWFBFbnRpdHkpIHtcbiAgICB0aGlzLndvcmtmbG93LmV2ZW50cyRcbiAgICAgIC5waXBlKG9mVHlwZShBWFBFbnRpdHlEZWxldGVkRXZlbnQpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgIGlmIChldmVudC5wYXlsb2FkLmVudGl0eSA9PSB0aGlzLmVudGl0eURlZi5zb3VyY2UpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcbiAgICAgICAgICB0aGlzLmV2ZW50cyQubmV4dCh7IGFjdGlvbjogJ3JlZnJlc2gnIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgcHVibGljIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcbiAgfVxuXG4gIC8vKioqKioqKioqKioqKioqKioqIFRpdGxlICoqKioqKioqKioqKioqKioqKi8vXG4gIHB1YmxpYyB0aXRsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3RGVmLnRpdGxlID8/IHRoaXMuZW50aXR5RGVmLmZvcm1hdHMucGx1cmFsITtcbiAgfSk7XG4gIC8vKioqKioqKioqKioqKioqKioqIERlc2NyaXB0aW9uICoqKioqKioqKioqKioqKioqKi8vXG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0RlZi5kZXNjcmlwdGlvbiA/PyBudWxsO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBJbmxpbmUgZmlsdGVyICoqKioqKioqKioqKioqKioqKi8vXG4gIHB1YmxpYyBpbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoKHApID0+IHAub3B0aW9ucz8uZmlsdGVyPy5pbmxpbmU/LmVuYWJsZWQpLm1hcCgoYykgPT4gYy50aXRsZSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBoYXNJbmxpbmVGaWx0ZXJzID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmlubGluZUZpbHRlcnNQbGFjZWhvbGRlcnMoKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBCZWFyZGNydW1icyAqKioqKioqKioqKioqKioqKiovL1xuICBwdWJsaWMgYmVhcmRjcnVtYnMgPSBjb21wdXRlZDxBWFBCZWFyZENydW1iW10+KCgpID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZVN5bmMoJ2VudGl0eS5ob21lJyksXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1ob21lIGF4LXRleHQteHMgYXgtbWUtMicsXG4gICAgICAgIHVybDogW2AvJHt0aGlzLnNlc3Npb24uYXBwbGljYXRpb24/Lm5hbWV9YF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50aXRsZSgpLFxuICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWAsICdtJywgYCR7dGhpcy5lbnRpdHlEZWYubW9kdWxlfWAsICdlJywgYCR7dGhpcy5lbnRpdHlEZWYubmFtZX1gLCAnbGlzdCddLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBBY3Rpb25zICoqKioqKioqKioqKioqKioqKi8vXG4gIHByaXZhdGUgYWxsQWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5saXN0Py5hY3Rpb25zID8/IFtdO1xuICAgIHJldHVybiBsaXN0Lm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcbiAgfSk7XG5cbiAgcHVibGljIHByaW1hcnlBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFsbEFjdGlvbnMoKS5maWx0ZXIoXG4gICAgICAoYSkgPT5cbiAgICAgICAgYS5wcmlvcml0eSA9PSAncHJpbWFyeScgJiZcbiAgICAgICAgKChhLnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCAmJiB0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSkgfHxcbiAgICAgICAgICAoYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuVHlwZUxldmVsICYmICF0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSkpXG4gICAgKTtcbiAgfSk7XG5cbiAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsQWN0aW9ucygpLmZpbHRlcihcbiAgICAgIChhKSA9PlxuICAgICAgICBhLnByaW9yaXR5ID09ICdzZWNvbmRhcnknICYmXG4gICAgICAgICgoYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQgJiYgdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpIHx8XG4gICAgICAgICAgKGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCAmJiAhdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpKVxuICAgICk7XG4gIH0pO1xuXG4gIHB1YmxpYyByb3dBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFsbEFjdGlvbnMoKS5maWx0ZXIoKGEpID0+IGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwpO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBGaWx0ZXIgKioqKioqKioqKioqKioqKioqLy9cblxuICBwcml2YXRlIGlubGluZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICBmaWVsZDogbnVsbCBhcyBhbnksXG4gICAgbG9naWM6ICdvcicsXG4gICAgb3BlcmF0b3I6IG51bGwgYXMgYW55LFxuICAgIGZpbHRlcnM6IFtdLFxuICB9O1xuXG4gIHByaXZhdGUgYWR2YW5jZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICBmaWVsZDogbnVsbCBhcyBhbnksXG4gICAgbG9naWM6ICdhbmQnLFxuICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcbiAgICBmaWx0ZXJzOiBbXSxcbiAgfTtcblxuICBhcHBseUlubGluZUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5maWx0ZXI/LmlubGluZT8uZW5hYmxlZCk7XG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnMgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHByb3BzLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/LnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBwLm5hbWUsXG4gICAgICAgICAgb3BlcmF0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6ICdjb250YWlucycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5hcHBseUZpbHRlckFuZFNvcnQoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyQW5kU29ydCgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuY2xlYXJGaWx0ZXIoKTtcbiAgICAvL1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0KC4uLnRoaXMuc29ydGVkRmllbGRzKCkubWFwKChzKSA9PiAoeyBkaXI6IHMuZGlyLCBmaWVsZDogcy5uYW1lIH0gYXMgQVhEYXRhU291cmNlU29ydE9wdGlvbikpKTtcbiAgICAvL1xuICAgIHRoaXMuYWR2YW5jZUZpbHRlcnMuZmlsdGVycyA9IHRoaXMudmlldygpLmNvbmRpdGlvbnMubWFwKChmKSA9PiAoe1xuICAgICAgZmllbGQ6IGYubmFtZSxcbiAgICAgIG9wZXJhdG9yOiBmLm9wZXJhdG9yLFxuICAgICAgdmFsdWU6IGYudmFsdWUsXG4gICAgfSkpO1xuICAgIC8vXG4gICAgY29uc3QgaW5saW5lID0gdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xuICAgIGNvbnN0IGFkdmFuY2UgPSB0aGlzLmFkdmFuY2VGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xuICAgIGlmIChpbmxpbmUgJiYgIWFkdmFuY2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIodGhpcy5pbmxpbmVGaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKCFpbmxpbmUgJiYgYWR2YW5jZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmFkdmFuY2VGaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKGlubGluZSAmJiBhZHZhbmNlKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyKHtcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxuICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcbiAgICAgICAgZmlsdGVyczogW3RoaXMuaW5saW5lRmlsdGVycywgdGhpcy5hZHZhbmNlRmlsdGVyc10sXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogQ29sdW1ucyAqKioqKioqKioqKioqKioqKiovL1xuXG4gIHByaXZhdGUgYWxsQXZhaWxhYmxlQ29sdW1ucyA9ICgpOiBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbFtdID0+IHtcbiAgICBjb25zdCB7IGNvbHVtbnMgPSBbXSwgcHJvcGVydGllcyB9ID0gdGhpcy5lbnRpdHlEZWY7XG4gICAgY29uc3QgdmlzaWJsZVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcigoeyBzY2hlbWEgfSkgPT4gIXNjaGVtYT8uaGlkZGVuKTtcbiAgICBjb25zdCB2aXNpYmxlUHJvcE5hbWVzID0gbmV3IFNldCh2aXNpYmxlUHJvcGVydGllcy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSk7XG5cbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcigoeyBuYW1lIH0pID0+IHZpc2libGVQcm9wTmFtZXMuaGFzKG5hbWUpKVxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmlzaWJsZVByb3BlcnRpZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IGNvbHVtbi5uYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wZXJ0eSEsIGNvbHVtbik7XG4gICAgICB9KTtcbiAgfTtcblxuICB2aXNpYmxlQ29sdW1uQ291bnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLmZpbHRlcigoYykgPT4gYy52aXNpYmxlID09IHRydWUpLmxlbmd0aDtcbiAgfTtcblxuICBjb2x1bW5zID0gc2lnbmFsPEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsW10+KFtdKTtcblxuICByZXNldENvbHVtbnMoKSB7XG4gICAgdGhpcy5hcHBseVZpZXdDb2x1bW5zKCk7XG4gIH1cblxuICBhcHBseUNvbHVtbnMoKSB7XG4gICAgLy90aGlzLmNvbHVtbnMuc2V0KHRoaXMuY2xvbmVkQ29sdW1ucygpKVxuICB9XG5cbiAgYXBwbHlWaWV3Q29sdW1ucygpIHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy52aWV3KCkuY29sdW1ucztcbiAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmFsbEF2YWlsYWJsZUNvbHVtbnMoKS5tYXAoKGMpID0+IHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZW50aXR5RGVmLmNvbHVtbnM/LmZpbmQoKGNjKSA9PiBjYy5uYW1lID09IGMubmFtZSk7XG4gICAgICBjb25zdCBwcm9wID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maW5kKChwKSA9PiBwLm5hbWUgPT0gYy5uYW1lKTtcbiAgICAgIGNvbnN0IGNvbCA9IG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wISwgY29sdW1uISk7XG4gICAgICBjb2wudmlzaWJsZSA9ICFjb2xzLnNvbWUoKGMpID0+IGMgPT0gY29sLm5hbWUpICYmIGNvbC52aXNpYmxlICE9IGZhbHNlO1xuICAgICAgcmV0dXJuIGNvbDtcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbnMuc2V0KGNsb25lZCk7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiBTb3J0ICoqKioqKioqKioqKioqKioqKi8vXG5cbiAgc29ydGFibGVGaWVsZHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKTtcbiAgICByZXR1cm4gcHJvcHMubWFwKChlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBlLm5hbWUsXG4gICAgICAgIHRpdGxlOiBlLnRpdGxlLFxuICAgICAgICBkaXI6ICdhc2MnLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICBzb3J0YWJsZUZpZWxkc0NvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKS5sZW5ndGggPz8gMDtcbiAgfTtcblxuICBjYW5Tb3J0ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRhYmxlRmllbGRzQ291bnQoKSA+IDA7XG4gIH07XG5cbiAgY2FuQWRkTW9yZVNvcnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkQ291bnQoKSA8IHRoaXMuc29ydGFibGVGaWVsZHNDb3VudCgpO1xuICB9O1xuXG4gIHNvcnRlZENvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZEZpZWxkcygpLmxlbmd0aDtcbiAgfTtcblxuICBzb3J0ZWRGaWVsZHMgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdTb3J0UHJvcFZpZXdNb2RlbFtdPihbXSk7XG5cbiAgcmVzZXRTb3J0cygpIHtcbiAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XG4gIH1cblxuICBhcHBseVNvcnRzKCkge1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gIH1cblxuICBhZGRTb3J0KCk6IHZvaWQge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnNvcnRhYmxlRmllbGRzKCkuZmluZCgoYykgPT4gIXRoaXMuc29ydGVkRmllbGRzKCkuc29tZSgocykgPT4gcy5uYW1lID09IGMubmFtZSkpO1xuICAgIGlmIChwcm9wKSB7XG4gICAgICB0aGlzLnNvcnRlZEZpZWxkcy5zZXQoWy4uLnRoaXMuc29ydGVkRmllbGRzKCksIC4uLltwcm9wXV0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVNvcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KHRoaXMuc29ydGVkRmllbGRzKCkuZmlsdGVyKChjKSA9PiBjLm5hbWUgIT0gbmFtZSkpO1xuICB9XG5cbiAgYXBwbHlWaWV3U29ydHMoKSB7XG4gICAgY29uc3QgZmlsZWRzID0gdGhpcy52aWV3KCkuc29ydHMubWFwKChjKSA9PiAoe1xuICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgdGl0bGU6IGMubmFtZSxcbiAgICAgIGRpcjogYy5kaXIgPz8gJ2FzYycsXG4gICAgfSkpO1xuICAgIHRoaXMuc29ydGVkRmllbGRzLnNldChmaWxlZHMpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogVmlld3MgKioqKioqKioqKioqKioqKioqLy9cblxuICBzZXRWaWV3KHZpZXdOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGlmICh2aWV3TmFtZSAhPSB0aGlzLnZpZXcoKS5uYW1lKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KHRoaXMudmlld3MoKS5maW5kKChjKSA9PiBjLm5hbWUgPT0gdmlld05hbWUpID8/IHRoaXMudmlld3MoKVswXSk7XG4gICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XG4gICAgICB0aGlzLmFwcGx5Vmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgdmlld3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3Q/LnZpZXdzID8/IFtdO1xuICAgIHJldHVybiB2aWV3cy5tYXAoKHYpID0+IHtcbiAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdGhpcywgdik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZpZXcgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbD4odGhpcy52aWV3cygpWzBdKTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiAgQ29tbWFuZHMgKioqKioqKioqKioqKioqKioqLy9cbiAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFsbEFjdGlvbnMoKS5maW5kKFxuICAgICAgKGMpID0+XG4gICAgICAgIGMubmFtZSA9PSBjb21tYW5kTmFtZSAmJlxuICAgICAgICAoKHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA/IGMuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkIDogYy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCkgfHxcbiAgICAgICAgICBjLnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwpXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoY29tbWFuZE5hbWUsIHtcbiAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYuc291cmNlLFxuICAgICAgZGF0YTogYWN0aW9uPy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQgPyB0aGlzLnNlbGVjdGVkSXRlbXMoKSA6IGRhdGEsXG4gICAgfSk7XG4gIH1cbiAgLy9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5IHtcbiAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIGxheW91dCA9IGluamVjdChBWFBMYXlvdXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZShtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4ge1xuICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKHRydWUpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZW50aXR5U2VydmljZS5yZXNvbHZlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xuICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKGZhbHNlKTtcbiAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgY29uZmlnKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhQRW50aXR5TGlzdFZpZXdNb2RlbFJlc29sdmVyOiBSZXNvbHZlRm48UHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsPj4gPSAoXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgc2VydmljZTogQVhQRW50aXR5TGlzdFZpZXdNb2RlbEZhY3RvcnkgPSBpbmplY3QoQVhQRW50aXR5TGlzdFZpZXdNb2RlbEZhY3RvcnkpXG4pOiBQcm9taXNlPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWw+ID0+IHtcbiAgY29uc3QgYXBwTmFtZSA9IHJvdXRlLnBhcmVudD8ucGFyYW1NYXAuZ2V0KCdhcHAnKSBhcyBzdHJpbmc7XG4gIGNvbnN0IG1vZHVsZU5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnbW9kdWxlJykgYXMgc3RyaW5nO1xuICBjb25zdCBlbnRpdHlOYW1lID0gcm91dGUucGFyYW1NYXAuZ2V0KCdlbnRpdHknKSBhcyBzdHJpbmc7XG4gIC8vXG4gIHJldHVybiBzZXJ2aWNlLmNyZWF0ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lKTtcbn07XG4iXX0=
@@ -10,6 +10,7 @@ import { AXPEntityModifyEvent } from "./workflows/modify-section.workflow";
10
10
  import { AXPEntityDetailListViewModel } from "./entity-detail-list.viewmodel";
11
11
  import { AXPEntityCommandScope, AXPLayoutService } from "@acorex/platform/common";
12
12
  import { Subject, takeUntil } from "rxjs";
13
+ import { AXTranslationService } from "@acorex/core/translation";
13
14
  import * as i0 from "@angular/core";
14
15
  export class AXPEntityMasterSingleViewGroupViewModel {
15
16
  constructor(entity, section) {
@@ -90,6 +91,7 @@ export class AXPEntityMasterSingleViewModel {
90
91
  this.formatService = this.injector.get(AXFormatService);
91
92
  this.workflow = this.injector.get(AXPWorkflowService);
92
93
  this.destroyed = new Subject();
94
+ this.translateService = this.injector.get(AXTranslationService);
93
95
  this.events$ = new Subject();
94
96
  this.context = signal(cloneDeep(this.entityData));
95
97
  this.actions = computed(() => {
@@ -124,7 +126,7 @@ export class AXPEntityMasterSingleViewModel {
124
126
  this.beardcrumbs = computed(() => {
125
127
  return [
126
128
  {
127
- title: "Home",
129
+ title: this.translateService.translateSync('entity.home'),
128
130
  icon: "fa-solid fa-home ax-text-xs ax-me-2",
129
131
  url: [`/${this.session.application?.name}`]
130
132
  },
@@ -164,12 +166,6 @@ export class AXPEntityMasterSingleViewModel {
164
166
  async executeCommand(commandName, data = null) {
165
167
  //TODO: syntact for workflow
166
168
  switch (commandName) {
167
- case 'delete-entity':
168
- this.workflow.execute('delete-entity', {
169
- entity: this.entityDef.source,
170
- data: [this.context()],
171
- });
172
- break;
173
169
  case 'modify-entity-section': {
174
170
  this.workflow.execute('modify-entity-section', {
175
171
  entity: this.entityDef.source,
@@ -229,4 +225,4 @@ export const AXPEntityDetailViewModelResolver = (route, state, service = inject(
229
225
  //
230
226
  return service.create(moduleName, entityName, id);
231
227
  };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5L3NyYy9saWIvZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBNEIscUJBQXFCLEVBQXdGLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbE0sT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTFDLE1BQU0sT0FBTyx1Q0FBdUM7SUFFaEQsWUFBb0IsTUFBaUIsRUFBVSxPQUE2QjtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FB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LEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L2NvcmUvZm9ybWF0XCI7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UsIHNldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlLCBvZlR5cGUgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvd1wiO1xyXG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2F1dGhcIjtcclxuaW1wb3J0IHsgQVhQRW50aXR5RGVmaW5pdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gXCIuL2VudGl0eS1yZWdpc3Rlcnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCB9IGZyb20gXCIuL2VudGl0eS52aWV3bW9kZWxcIjtcclxuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyXCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eURlbGV0ZWRFdmVudCB9IGZyb20gXCIuL3dvcmtmbG93cy9kZWxldGUtZW50aXR5LndvcmtmbG93XCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eU1vZGlmeUV2ZW50IH0gZnJvbSBcIi4vd29ya2Zsb3dzL21vZGlmeS1zZWN0aW9uLndvcmtmbG93XCI7XHJcbmltcG9ydCB7IEFYUEVudGl0eURldGFpbExpc3RWaWV3TW9kZWwgfSBmcm9tIFwiLi9lbnRpdHktZGV0YWlsLWxpc3Qudmlld21vZGVsXCI7XHJcbmltcG9ydCB7IEFYUEJlYXJkQ3J1bWIsIEFYUEVudGl0eSwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBFbnRpdHlQcm9wZXJ0eSwgQVhQRW50aXR5UHJvcGVydHlWaWV3LCBBWFBFbnRpdHlTZWN0aW9uVmlldywgQVhQR3JpZExheW91dE9wdGlvbnMsIEFYUExheW91dFNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdHcm91cFZpZXdNb2RlbCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnRpdHk6IEFYUEVudGl0eSwgcHJpdmF0ZSBzZWN0aW9uOiBBWFBFbnRpdHlTZWN0aW9uVmlldykge1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBncm91cCA9IHRoaXMuZW50aXR5Lmdyb3Vwcz8uZmluZChjID0+IGMuaWQgPT0gdGhpcy5zZWN0aW9uLmlkKSE7XHJcbiAgICBuYW1lID0gc2lnbmFsKHRoaXMuZ3JvdXAuaWQpO1xyXG4gICAgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgICB0aXRsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwLnRpdGxlID8/IHRoaXMuZ3JvdXAuaWQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkZXNjcmlwdGlvbiA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ncm91cC5kZXNjcmlwdGlvbjtcclxuICAgIH0pO1xyXG5cclxuICAgIGxheW91dCA9IGNvbXB1dGVkPEFYUEdyaWRMYXlvdXRPcHRpb25zPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc291cmNlID0gY2xvbmVEZWVwKHRoaXMuc2VjdGlvbi5sYXlvdXQgPz8ge30pIGFzIG9iamVjdDtcclxuICAgICAgICBzZXQoc291cmNlLCBcInBvc2l0aW9ucy5kZWZhdWx0LmNvbFNwYW5cIiwgMTIpO1xyXG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgQVhQR3JpZExheW91dE9wdGlvbnM7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwcm9wcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMsIGludGVyZmFjZXMgfSA9IHRoaXMuZW50aXR5O1xyXG4gICAgICAgIGNvbnN0IGdyb3VwUHJvcGVydGllcyA9IHByb3BlcnRpZXNcclxuICAgICAgICAgICAgLmZpbHRlcigoeyBncm91cElkLCBzY2hlbWEgfSkgPT4gZ3JvdXBJZCA9PT0gdGhpcy5ncm91cC5pZCAmJiAhc2NoZW1hLmhpZGRlbilcclxuICAgICAgICAgICAgLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3UHJvcGVydGllcyA9IGludGVyZmFjZXM/Lm1hc3Rlcj8uc2luZ2xlPy5wcm9wZXJ0aWVzPy5maWx0ZXIoKHsgbmFtZSB9KSA9PlxyXG4gICAgICAgICAgICBncm91cFByb3BlcnRpZXMuaW5jbHVkZXMobmFtZSlcclxuICAgICAgICApID8/IFtdO1xyXG5cclxuICAgICAgICByZXR1cm4gdmlld1Byb3BlcnRpZXMubWFwKHByb3AgPT5cclxuICAgICAgICAgICAgbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZUVsZW1lbnRWaWV3TW9kZWwodGhpcy5lbnRpdHksIHRoaXMsIHByb3ApXHJcbiAgICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVkaXRhYmxlUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBpbnRlcmZhY2VzIH0gPSB0aGlzLmVudGl0eTtcclxuICAgICAgICBjb25zdCBlZGl0YWJsZVByb3BlcnR5TmFtZXMgPSBpbnRlcmZhY2VzPy5tYXN0ZXI/LnVwZGF0ZT8ucHJvcGVydGllcz8ubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkgPz8gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKCh7IGdyb3VwSWQsIHNjaGVtYSwgbmFtZSB9KSA9PlxyXG4gICAgICAgICAgICBncm91cElkID09PSB0aGlzLmdyb3VwLmlkICYmICFzY2hlbWEuaGlkZGVuICYmIGVkaXRhYmxlUHJvcGVydHlOYW1lcy5pbmNsdWRlcyhuYW1lKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZFByb3BlcnRpZXMubWFwKHByb3AgPT5cclxuICAgICAgICAgICAgbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZUVsZW1lbnRWaWV3TW9kZWwodGhpcy5lbnRpdHksIHRoaXMsIHByb3ApXHJcbiAgICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVkaXRhYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRhYmxlUHJvcHMoKS5sZW5ndGggPiAwXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZUVsZW1lbnRWaWV3TW9kZWwge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZW50aXR5OiBBWFBFbnRpdHksIHByaXZhdGUgc2VjdGlvbjogQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld0dyb3VwVmlld01vZGVsLCBwcml2YXRlIHByb3BlcnR5VmlldzogQVhQRW50aXR5UHJvcGVydHlWaWV3KSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvcGVydHkgPSB0aGlzLmVudGl0eS5wcm9wZXJ0aWVzLmZpbmQoYyA9PiBjLm5hbWUgPT0gdGhpcy5wcm9wZXJ0eVZpZXcubmFtZSkhXHJcbiAgICBuYW1lID0gc2lnbmFsKHRoaXMucHJvcGVydHkubmFtZSk7XHJcbiAgICB0aXRsZSA9IHNpZ25hbCh0aGlzLnByb3BlcnR5LnRpdGxlKTtcclxuICAgIGRlc2NyaXB0aW9uID0gc2lnbmFsKHRoaXMucHJvcGVydHkuZGVzY3JpcHRpb24pO1xyXG5cclxuXHJcbiAgICBsYXlvdXQgPSBjb21wdXRlZDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpZXdQcm9wID0gdGhpcy5lbnRpdHkuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LnByb3BlcnRpZXM/LmZpbmQoYyA9PiBjLm5hbWUgPT0gdGhpcy5wcm9wZXJ0eS5uYW1lKTtcclxuICAgICAgICBjb25zdCBzb3VyY2UgPSBjbG9uZURlZXAodmlld1Byb3A/LmxheW91dCA/PyB7fSkgYXMgb2JqZWN0O1xyXG4gICAgICAgIHNldChzb3VyY2UsIFwicG9zaXRpb25zLmRlZmF1bHQuY29sU3BhblwiLCAxMik7XHJcbiAgICAgICAgcmV0dXJuIHNvdXJjZSBhcyBBWFBHcmlkTGF5b3V0T3B0aW9ucztcclxuICAgIH0pO1xyXG5cclxuICAgIG5vZGUgPSBjb21wdXRlZDxBWFBXaWRnZXROb2RlPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5wcm9wZXJ0eS5zY2hlbWEhO1xyXG4gICAgICAgIGNvbnN0IHdpZGdldCA9IHNjaGVtYS5pbnRlcmZhY2UhO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IHdpZGdldC50eXBlLFxyXG4gICAgICAgICAgICBtb2RlOiAndmlldycsXHJcbiAgICAgICAgICAgIHBhdGg6IHRoaXMubmFtZSgpLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogd2lkZ2V0LmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBmb3JtdWxhOiB3aWRnZXQuZm9ybXVsYSxcclxuICAgICAgICAgICAgb3B0aW9uczogbWVyZ2UoXHJcbiAgICAgICAgICAgICAgICBzY2hlbWEuaW50ZXJmYWNlPy5vcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgLy90aGlzLnByb3BlcnR5Lm9wdGlvbnM/LmNyZWF0ZT8ud2lkZ2V0LFxyXG4gICAgICAgICAgICAgICAgeyB2YWxpZGF0aW9uUnVsZXM6IHRoaXMucHJvcGVydHkudmFsaWRhdGlvbnMgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZTtcclxuICAgIH0pXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnRpdHlEZWYgPSBjbG9uZURlZXAodGhpcy5jb25maWcpITtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdEZWYgPSBjbG9uZURlZXAodGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGUpIVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uID0gdGhpcy5pbmplY3Rvci5nZXQoQVhQU2Vzc2lvblNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhGb3JtYXRTZXJ2aWNlKVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgZXZlbnRzJDogU3ViamVjdDx7IGFjdGlvbjogc3RyaW5nIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIGNvbmZpZzogQVhQRW50aXR5LFxyXG4gICAgICAgIHByaXZhdGUgZW50aXR5RGF0YTogYW55LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvdy5ldmVudHMkXHJcbiAgICAgICAgICAgIC5waXBlKG9mVHlwZShBWFBFbnRpdHlEZWxldGVkRXZlbnQpKVxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQuZW50aXR5ID09IHRoaXMuZW50aXR5RGVmLnNvdXJjZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQuaWRzLmluY2x1ZGVzKHRoaXMuY29udGV4dCgpLmlkKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdzaG93LWxpc3QtdmlldycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eURlZi5zb3VyY2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvdy5ldmVudHMkXHJcbiAgICAgICAgICAgIC5waXBlKG9mVHlwZShBWFBFbnRpdHlNb2RpZnlFdmVudCkpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucGF5bG9hZC5lbnRpdHkgPT0gdGhpcy5lbnRpdHlEZWYuc291cmNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucGF5bG9hZC52YWx1ZXMuaWQgPT09IHRoaXMuY29udGV4dCgpLmlkXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuc2V0KGV2ZW50LnBheWxvYWQudmFsdWVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBjb250ZXh0ID0gc2lnbmFsPGFueT4oY2xvbmVEZWVwKHRoaXMuZW50aXR5RGF0YSkpO1xyXG5cclxuICAgIHByaXZhdGUgYWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LmFjdGlvbnM/Lm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAncHJpbWFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihjID0+IGMucHJpb3JpdHkgPT0gJ3NlY29uZGFyeScpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHVibGljIHNlY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld0dyb3VwVmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICBjb25zdCB7IGludGVyZmFjZXMsIHByb3BlcnRpZXMgfSA9IHRoaXMuZW50aXR5RGVmO1xyXG4gICAgICAgIGNvbnN0IHZpZXdQcm9wcyA9IGludGVyZmFjZXM/Lm1hc3Rlcj8uc2luZ2xlPy5wcm9wZXJ0aWVzPy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSA/PyBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIoKHsgZ3JvdXBJZCwgc2NoZW1hLCBuYW1lIH0pID0+XHJcbiAgICAgICAgICAgIGdyb3VwSWQgJiYgIXNjaGVtYS5oaWRkZW4gJiYgdmlld1Byb3BzLmluY2x1ZGVzKG5hbWUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LnNlY3Rpb25zPy5maWx0ZXIoKHsgaWQgfSkgPT5cclxuICAgICAgICAgICAgZmlsdGVyZWRQcm9wZXJ0aWVzLnNvbWUoKHsgZ3JvdXBJZCB9KSA9PiBncm91cElkID09PSBpZClcclxuICAgICAgICApID8/IFtdO1xyXG5cclxuICAgICAgICByZXR1cm4gZ3JvdXBzLm1hcChzZWN0aW9uID0+XHJcbiAgICAgICAgICAgIG5ldyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwodGhpcy5lbnRpdHlEZWYsIHNlY3Rpb24pXHJcbiAgICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBUaXRsZSAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIHRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGVkUHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbmQoKGMpID0+IFsndGl0bGUnLCAnbmFtZScsICdjb2RlJ10uaW5jbHVkZXMoYy5uYW1lKSk7XHJcbiAgICAgICAgbGV0IHN1Z2dlc3RlZEZvcm1hdCA9ICdJdGVtICN7e2lkfX0nO1xyXG4gICAgICAgIGlmIChzdWdnZXN0ZWRQcm9wcykgc3VnZ2VzdGVkRm9ybWF0ID0gYHt7JHtzdWdnZXN0ZWRQcm9wcy5uYW1lfX19YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl92aWV3RGVmLnRpdGxlID8/IHN1Z2dlc3RlZEZvcm1hdCxcclxuICAgICAgICAgICAgJ3N0cmluZycsXHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCgpXHJcbiAgICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgLy8qKioqKioqKioqKioqKioqKiogRGVzY3JpcHRpb24gKioqKioqKioqKioqKioqKioqLy9cclxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbiA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmlld0RlZi5kZXNjcmlwdGlvbiA/IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fdmlld0RlZi5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgJ3N0cmluZycsXHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCgpXHJcbiAgICAgICAgKSA6IG51bGw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKiBCZWFyZGNydW1icyAqKioqKioqKioqKioqKioqKiovL1xyXG4gICAgcHVibGljIGJlYXJkY3J1bWJzID0gY29tcHV0ZWQ8QVhQQmVhcmRDcnVtYltdPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiSG9tZVwiLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogXCJmYS1zb2xpZCBmYS1ob21lIGF4LXRleHQteHMgYXgtbWUtMlwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBbYC8ke3RoaXMuc2Vzc2lvbi5hcHBsaWNhdGlvbj8ubmFtZX1gXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5lbnRpdHlEZWYuZm9ybWF0cy5wbHVyYWwgPz8gdGhpcy5lbnRpdHlEZWYuZm9ybWF0cy5pbmRpdmlkdWFsLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBbYC8ke3RoaXMuc2Vzc2lvbi5hcHBsaWNhdGlvbj8ubmFtZX1gLCAnbScsIGAke3RoaXMuZW50aXR5RGVmLm1vZHVsZX1gLCAnZScsIGAke3RoaXMuZW50aXR5RGVmLm5hbWV9YCwgJ2xpc3QnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZSgpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHB1YmxpYyByZWxhdGVkRW50aXRpZXMgPSBjb21wdXRlZDxBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld01vZGVsW10+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYucmVsYXRlZEVudGl0aWVzPy5tYXAocmUgPT5cclxuICAgICAgICAgICAgbmV3IEFYUEVudGl0eURldGFpbExpc3RWaWV3TW9kZWwodGhpcy5pbmplY3RvciwgcmUsIHsgZW50aXR5OiB0aGlzLmVudGl0eURlZiwgZGF0YTogdGhpcy5lbnRpdHlEYXRhIH0pXHJcbiAgICAgICAgKSA/PyBbXVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ29tbWFuZChjb21tYW5kTmFtZTogc3RyaW5nLCBkYXRhOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgLy9UT0RPOiBzeW50YWN0IGZvciB3b3JrZmxvd1xyXG4gICAgICAgIHN3aXRjaCAoY29tbWFuZE5hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSAnZGVsZXRlLWVudGl0eSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ2RlbGV0ZS1lbnRpdHknLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eURlZi5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogW3RoaXMuY29udGV4dCgpXSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vZGlmeS1lbnRpdHktc2VjdGlvbic6IHtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnbW9kaWZ5LWVudGl0eS1zZWN0aW9uJywge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogdGhpcy5lbnRpdHlEZWYuc291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuY29udGV4dCgpLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiAoZGF0YSBhcyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwpLmVkaXRhYmxlUHJvcHMoKS5tYXAobSA9PiBtLm5hbWUoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbnMoKS5maW5kKGMgPT4gYy5uYW1lID09IGNvbW1hbmROYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoY29tbWFuZE5hbWUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eURlZi5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbj8uc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwgPyB0aGlzLmNvbnRleHQoKSA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vXHJcbiAgICAvL1xyXG4gICAgZGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICAgIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eURldGFpbFZpZXdNb2RlbEZhY3Rvcnkge1xyXG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XHJcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlKG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw+IHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UucmVzb2x2ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lKTtcclxuICAgICAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyh0cnVlKTtcclxuICAgICAgICBpZiAoY29uZmlnLnF1ZXJpZXMuYnlLZXkpIHtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IGNvbmZpZy5xdWVyaWVzLmJ5S2V5LmV4ZWN1dGUgYXMgRnVuY3Rpb247XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmdW5jKGlkKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0TmF2aWdhdGlvbkxvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCBjb25maWcsIGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdjYW5ub3QgZmV0Y2ggJyk7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3QgQVhQRW50aXR5RGV0YWlsVmlld01vZGVsUmVzb2x2ZXI6IFJlc29sdmVGbjxQcm9taXNlPEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbD4+ID0gKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgIHNlcnZpY2U6IEFYUEVudGl0eURldGFpbFZpZXdNb2RlbEZhY3RvcnkgPSBpbmplY3QoQVhQRW50aXR5RGV0YWlsVmlld01vZGVsRmFjdG9yeSlcclxuKTogUHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw+ID0+IHtcclxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnbW9kdWxlJykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgZW50aXR5TmFtZSA9IHJvdXRlLnBhcmFtTWFwLmdldCgnZW50aXR5JykgYXMgc3RyaW5nO1xyXG4gICAgY29uc3QgaWQgPSByb3V0ZS5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgc3RyaW5nO1xyXG4gICAgLy9cclxuICAgIHJldHVybiBzZXJ2aWNlLmNyZWF0ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lLCBpZCk7XHJcbn07XHJcblxyXG5cclxuIl19
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5L3NyYy9saWIvZW50aXR5LW1hc3Rlci1zaW5nbGUudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBNEIscUJBQXFCLEVBQXdGLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbE0sT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR2hFLE1BQU0sT0FBTyx1Q0FBdUM7SUFFaEQsWUFBb0Is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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9mb3JtYXRcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UsIHNldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZUZuLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlLCBvZlR5cGUgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvd1wiO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9hdXRoXCI7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSBcIi4vZW50aXR5LXJlZ2lzdGVyeS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCB9IGZyb20gXCIuL2VudGl0eS52aWV3bW9kZWxcIjtcbmltcG9ydCB7IEFYUFdpZGdldE5vZGUgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlclwiO1xuaW1wb3J0IHsgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSBcIi4vd29ya2Zsb3dzL2RlbGV0ZS1lbnRpdHkud29ya2Zsb3dcIjtcbmltcG9ydCB7IEFYUEVudGl0eU1vZGlmeUV2ZW50IH0gZnJvbSBcIi4vd29ya2Zsb3dzL21vZGlmeS1zZWN0aW9uLndvcmtmbG93XCI7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld01vZGVsIH0gZnJvbSBcIi4vZW50aXR5LWRldGFpbC1saXN0LnZpZXdtb2RlbFwiO1xuaW1wb3J0IHsgQVhQQmVhcmRDcnVtYiwgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVByb3BlcnR5LCBBWFBFbnRpdHlQcm9wZXJ0eVZpZXcsIEFYUEVudGl0eVNlY3Rpb25WaWV3LCBBWFBHcmlkTGF5b3V0T3B0aW9ucywgQVhQTGF5b3V0U2VydmljZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uXCI7XG5cblxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdHcm91cFZpZXdNb2RlbCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eTogQVhQRW50aXR5LCBwcml2YXRlIHNlY3Rpb246IEFYUEVudGl0eVNlY3Rpb25WaWV3KSB7XG4gICAgfVxuXG5cbiAgICBncm91cCA9IHRoaXMuZW50aXR5Lmdyb3Vwcz8uZmluZChjID0+IGMuaWQgPT0gdGhpcy5zZWN0aW9uLmlkKSE7XG4gICAgbmFtZSA9IHNpZ25hbCh0aGlzLmdyb3VwLmlkKTtcbiAgICBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAudGl0bGUgPz8gdGhpcy5ncm91cC5pZDtcbiAgICB9KTtcblxuICAgIGRlc2NyaXB0aW9uID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cC5kZXNjcmlwdGlvbjtcbiAgICB9KTtcblxuICAgIGxheW91dCA9IGNvbXB1dGVkPEFYUEdyaWRMYXlvdXRPcHRpb25zPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGNsb25lRGVlcCh0aGlzLnNlY3Rpb24ubGF5b3V0ID8/IHt9KSBhcyBvYmplY3Q7XG4gICAgICAgIHNldChzb3VyY2UsIFwicG9zaXRpb25zLmRlZmF1bHQuY29sU3BhblwiLCAxMik7XG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgQVhQR3JpZExheW91dE9wdGlvbnM7XG4gICAgfSk7XG5cbiAgICBwcm9wcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBpbnRlcmZhY2VzIH0gPSB0aGlzLmVudGl0eTtcbiAgICAgICAgY29uc3QgZ3JvdXBQcm9wZXJ0aWVzID0gcHJvcGVydGllc1xuICAgICAgICAgICAgLmZpbHRlcigoeyBncm91cElkLCBzY2hlbWEgfSkgPT4gZ3JvdXBJZCA9PT0gdGhpcy5ncm91cC5pZCAmJiAhc2NoZW1hLmhpZGRlbilcbiAgICAgICAgICAgIC5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKTtcblxuICAgICAgICBjb25zdCB2aWV3UHJvcGVydGllcyA9IGludGVyZmFjZXM/Lm1hc3Rlcj8uc2luZ2xlPy5wcm9wZXJ0aWVzPy5maWx0ZXIoKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgZ3JvdXBQcm9wZXJ0aWVzLmluY2x1ZGVzKG5hbWUpXG4gICAgICAgICkgPz8gW107XG5cbiAgICAgICAgcmV0dXJuIHZpZXdQcm9wZXJ0aWVzLm1hcChwcm9wID0+XG4gICAgICAgICAgICBuZXcgQVhQRW50aXR5TWFzdGVyU2luZ2xlRWxlbWVudFZpZXdNb2RlbCh0aGlzLmVudGl0eSwgdGhpcywgcHJvcClcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGVkaXRhYmxlUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgaW50ZXJmYWNlcyB9ID0gdGhpcy5lbnRpdHk7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlUHJvcGVydHlOYW1lcyA9IGludGVyZmFjZXM/Lm1hc3Rlcj8udXBkYXRlPy5wcm9wZXJ0aWVzPy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSA/PyBbXTtcblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcigoeyBncm91cElkLCBzY2hlbWEsIG5hbWUgfSkgPT5cbiAgICAgICAgICAgIGdyb3VwSWQgPT09IHRoaXMuZ3JvdXAuaWQgJiYgIXNjaGVtYS5oaWRkZW4gJiYgZWRpdGFibGVQcm9wZXJ0eU5hbWVzLmluY2x1ZGVzKG5hbWUpXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkUHJvcGVydGllcy5tYXAocHJvcCA9PlxuICAgICAgICAgICAgbmV3IEFYUEVudGl0eU1hc3RlclNpbmdsZUVsZW1lbnRWaWV3TW9kZWwodGhpcy5lbnRpdHksIHRoaXMsIHByb3ApXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBlZGl0YWJsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdGFibGVQcm9wcygpLmxlbmd0aCA+IDBcbiAgICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZUVsZW1lbnRWaWV3TW9kZWwge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnRpdHk6IEFYUEVudGl0eSwgcHJpdmF0ZSBzZWN0aW9uOiBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwsIHByaXZhdGUgcHJvcGVydHlWaWV3OiBBWFBFbnRpdHlQcm9wZXJ0eVZpZXcpIHtcblxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvcGVydHkgPSB0aGlzLmVudGl0eS5wcm9wZXJ0aWVzLmZpbmQoYyA9PiBjLm5hbWUgPT0gdGhpcy5wcm9wZXJ0eVZpZXcubmFtZSkhXG4gICAgbmFtZSA9IHNpZ25hbCh0aGlzLnByb3BlcnR5Lm5hbWUpO1xuICAgIHRpdGxlID0gc2lnbmFsKHRoaXMucHJvcGVydHkudGl0bGUpO1xuICAgIGRlc2NyaXB0aW9uID0gc2lnbmFsKHRoaXMucHJvcGVydHkuZGVzY3JpcHRpb24pO1xuXG5cbiAgICBsYXlvdXQgPSBjb21wdXRlZDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4oKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3UHJvcCA9IHRoaXMuZW50aXR5LmludGVyZmFjZXM/Lm1hc3Rlcj8uc2luZ2xlPy5wcm9wZXJ0aWVzPy5maW5kKGMgPT4gYy5uYW1lID09IHRoaXMucHJvcGVydHkubmFtZSk7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGNsb25lRGVlcCh2aWV3UHJvcD8ubGF5b3V0ID8/IHt9KSBhcyBvYmplY3Q7XG4gICAgICAgIHNldChzb3VyY2UsIFwicG9zaXRpb25zLmRlZmF1bHQuY29sU3BhblwiLCAxMik7XG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgQVhQR3JpZExheW91dE9wdGlvbnM7XG4gICAgfSk7XG5cbiAgICBub2RlID0gY29tcHV0ZWQ8QVhQV2lkZ2V0Tm9kZT4oKCkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLnByb3BlcnR5LnNjaGVtYSE7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IHNjaGVtYS5pbnRlcmZhY2UhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogd2lkZ2V0LnR5cGUsXG4gICAgICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICAgICAgICBwYXRoOiB0aGlzLm5hbWUoKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiB3aWRnZXQuY2hpbGRyZW4sXG4gICAgICAgICAgICBmb3JtdWxhOiB3aWRnZXQuZm9ybXVsYSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG1lcmdlKFxuICAgICAgICAgICAgICAgIHNjaGVtYS5pbnRlcmZhY2U/Lm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLy90aGlzLnByb3BlcnR5Lm9wdGlvbnM/LmNyZWF0ZT8ud2lkZ2V0LFxuICAgICAgICAgICAgICAgIHsgdmFsaWRhdGlvblJ1bGVzOiB0aGlzLnByb3BlcnR5LnZhbGlkYXRpb25zIH0sXG4gICAgICAgICAgICApXG4gICAgICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZTtcbiAgICB9KVxufVxuXG5cblxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eURlZiA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZykhO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdEZWYgPSBjbG9uZURlZXAodGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGUpIVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1hdFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBWEZvcm1hdFNlcnZpY2UpXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSAgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBldmVudHMkOiBTdWJqZWN0PHsgYWN0aW9uOiBzdHJpbmcgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNvbmZpZzogQVhQRW50aXR5LFxuICAgICAgICBwcml2YXRlIGVudGl0eURhdGE6IGFueSxcbiAgICApIHtcbiAgICAgICAgdGhpcy53b3JrZmxvdy5ldmVudHMkXG4gICAgICAgICAgICAucGlwZShvZlR5cGUoQVhQRW50aXR5RGVsZXRlZEV2ZW50KSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucGF5bG9hZC5lbnRpdHkgPT0gdGhpcy5lbnRpdHlEZWYuc291cmNlICYmXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQuaWRzLmluY2x1ZGVzKHRoaXMuY29udGV4dCgpLmlkKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ3Nob3ctbGlzdC12aWV3Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eURlZi5zb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMud29ya2Zsb3cuZXZlbnRzJFxuICAgICAgICAgICAgLnBpcGUob2ZUeXBlKEFYUEVudGl0eU1vZGlmeUV2ZW50KSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucGF5bG9hZC5lbnRpdHkgPT0gdGhpcy5lbnRpdHlEZWYuc291cmNlICYmXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnBheWxvYWQudmFsdWVzLmlkID09PSB0aGlzLmNvbnRleHQoKS5pZFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuc2V0KGV2ZW50LnBheWxvYWQudmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBjb250ZXh0ID0gc2lnbmFsPGFueT4oY2xvbmVEZWVwKHRoaXMuZW50aXR5RGF0YSkpO1xuXG4gICAgcHJpdmF0ZSBhY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5zaW5nbGU/LmFjdGlvbnM/Lm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLmZpbHRlcihjID0+IGMucHJpb3JpdHkgPT0gJ3ByaW1hcnknKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBzZWNvbmRhcnlBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zKCkuZmlsdGVyKGMgPT4gYy5wcmlvcml0eSA9PSAnc2Vjb25kYXJ5Jyk7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgc2VjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGludGVyZmFjZXMsIHByb3BlcnRpZXMgfSA9IHRoaXMuZW50aXR5RGVmO1xuICAgICAgICBjb25zdCB2aWV3UHJvcHMgPSBpbnRlcmZhY2VzPy5tYXN0ZXI/LnNpbmdsZT8ucHJvcGVydGllcz8ubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkgPz8gW107XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIoKHsgZ3JvdXBJZCwgc2NoZW1hLCBuYW1lIH0pID0+XG4gICAgICAgICAgICBncm91cElkICYmICFzY2hlbWEuaGlkZGVuICYmIHZpZXdQcm9wcy5pbmNsdWRlcyhuYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IGludGVyZmFjZXM/Lm1hc3Rlcj8uc2luZ2xlPy5zZWN0aW9ucz8uZmlsdGVyKCh7IGlkIH0pID0+XG4gICAgICAgICAgICBmaWx0ZXJlZFByb3BlcnRpZXMuc29tZSgoeyBncm91cElkIH0pID0+IGdyb3VwSWQgPT09IGlkKVxuICAgICAgICApID8/IFtdO1xuXG4gICAgICAgIHJldHVybiBncm91cHMubWFwKHNlY3Rpb24gPT5cbiAgICAgICAgICAgIG5ldyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3R3JvdXBWaWV3TW9kZWwodGhpcy5lbnRpdHlEZWYsIHNlY3Rpb24pXG4gICAgICAgICk7XG4gICAgfSk7XG5cblxuICAgIC8vKioqKioqKioqKioqKioqKioqIFRpdGxlICoqKioqKioqKioqKioqKioqKi8vXG4gICAgcHVibGljIHRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3RlZFByb3BzID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maW5kKChjKSA9PiBbJ3RpdGxlJywgJ25hbWUnLCAnY29kZSddLmluY2x1ZGVzKGMubmFtZSkpO1xuICAgICAgICBsZXQgc3VnZ2VzdGVkRm9ybWF0ID0gJ0l0ZW0gI3t7aWR9fSc7XG4gICAgICAgIGlmIChzdWdnZXN0ZWRQcm9wcykgc3VnZ2VzdGVkRm9ybWF0ID0gYHt7JHtzdWdnZXN0ZWRQcm9wcy5uYW1lfX19YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy5fdmlld0RlZi50aXRsZSA/PyBzdWdnZXN0ZWRGb3JtYXQsXG4gICAgICAgICAgICAnc3RyaW5nJyxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCgpXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgLy8qKioqKioqKioqKioqKioqKiogRGVzY3JpcHRpb24gKioqKioqKioqKioqKioqKioqLy9cbiAgICBwdWJsaWMgZGVzY3JpcHRpb24gPSBjb21wdXRlZDxzdHJpbmcgfCBudWxsPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uID8gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLl92aWV3RGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgJ3N0cmluZycsXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQoKVxuICAgICAgICApIDogbnVsbDtcbiAgICB9KTtcblxuICAgIC8vKioqKioqKioqKioqKioqKioqIEJlYXJkY3J1bWJzICoqKioqKioqKioqKioqKioqKi8vXG4gICAgcHVibGljIGJlYXJkY3J1bWJzID0gY29tcHV0ZWQ8QVhQQmVhcmRDcnVtYltdPigoKSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCdlbnRpdHkuaG9tZScpLFxuICAgICAgICAgICAgICAgIGljb246IFwiZmEtc29saWQgZmEtaG9tZSBheC10ZXh0LXhzIGF4LW1lLTJcIixcbiAgICAgICAgICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmVudGl0eURlZi5mb3JtYXRzLnBsdXJhbCA/PyB0aGlzLmVudGl0eURlZi5mb3JtYXRzLmluZGl2aWR1YWwsXG4gICAgICAgICAgICAgICAgdXJsOiBbYC8ke3RoaXMuc2Vzc2lvbi5hcHBsaWNhdGlvbj8ubmFtZX1gLCAnbScsIGAke3RoaXMuZW50aXR5RGVmLm1vZHVsZX1gLCAnZScsIGAke3RoaXMuZW50aXR5RGVmLm5hbWV9YCwgJ2xpc3QnXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZSgpLFxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSk7XG5cblxuICAgIHB1YmxpYyByZWxhdGVkRW50aXRpZXMgPSBjb21wdXRlZDxBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld01vZGVsW10+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5RGVmLnJlbGF0ZWRFbnRpdGllcz8ubWFwKHJlID0+XG4gICAgICAgICAgICBuZXcgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCByZSwgeyBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLCBkYXRhOiB0aGlzLmVudGl0eURhdGEgfSlcbiAgICAgICAgKSA/PyBbXVxuICAgIH0pO1xuXG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUNvbW1hbmQoY29tbWFuZE5hbWU6IHN0cmluZywgZGF0YTogYW55ID0gbnVsbCkge1xuICAgICAgICAvL1RPRE86IHN5bnRhY3QgZm9yIHdvcmtmbG93XG4gICAgICAgIHN3aXRjaCAoY29tbWFuZE5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ21vZGlmeS1lbnRpdHktc2VjdGlvbic6IHtcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ21vZGlmeS1lbnRpdHktc2VjdGlvbicsIHtcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0eURlZi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmNvbnRleHQoKS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IChkYXRhIGFzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdHcm91cFZpZXdNb2RlbCkuZWRpdGFibGVQcm9wcygpLm1hcChtID0+IG0ubmFtZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbnMoKS5maW5kKGMgPT4gYy5uYW1lID09IGNvbW1hbmROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKGNvbW1hbmROYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbj8uc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwgPyB0aGlzLmNvbnRleHQoKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9cbiAgICAvL1xuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5RGV0YWlsVmlld01vZGVsRmFjdG9yeSB7XG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xuICAgIHByaXZhdGUgbGF5b3V0ID0gaW5qZWN0KEFYUExheW91dFNlcnZpY2UpO1xuICAgIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZShtb2R1bGVOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsPiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZW50aXR5U2VydmljZS5yZXNvbHZlKG1vZHVsZU5hbWUsIGVudGl0eU5hbWUpO1xuICAgICAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyh0cnVlKTtcbiAgICAgICAgaWYgKGNvbmZpZy5xdWVyaWVzLmJ5S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBmdW5jID0gY29uZmlnLnF1ZXJpZXMuYnlLZXkuZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmdW5jKGlkKTtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldE5hdmlnYXRpb25Mb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsKHRoaXMuaW5qZWN0b3IsIGNvbmZpZywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXlvdXQuc2V0TmF2aWdhdGlvbkxvYWRpbmcoZmFsc2UpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ2Nhbm5vdCBmZXRjaCAnKTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eURldGFpbFZpZXdNb2RlbFJlc29sdmVyOiBSZXNvbHZlRm48UHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw+PiA9IChcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgICBzZXJ2aWNlOiBBWFBFbnRpdHlEZXRhaWxWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eURldGFpbFZpZXdNb2RlbEZhY3RvcnkpXG4pOiBQcm9taXNlPEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbD4gPT4ge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnbW9kdWxlJykgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGVudGl0eU5hbWUgPSByb3V0ZS5wYXJhbU1hcC5nZXQoJ2VudGl0eScpIGFzIHN0cmluZztcbiAgICBjb25zdCBpZCA9IHJvdXRlLnBhcmFtTWFwLmdldCgnaWQnKSBhcyBzdHJpbmc7XG4gICAgLy9cbiAgICByZXR1cm4gc2VydmljZS5jcmVhdGUobW9kdWxlTmFtZSwgZW50aXR5TmFtZSwgaWQpO1xufTtcblxuXG4iXX0=