@eo-sdk/client 10.6.11 → 10.6.12

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 (247) hide show
  1. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  2. package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts.map +1 -1
  3. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  4. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +2 -0
  5. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  6. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  7. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +18 -1
  8. package/esm2020/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
  9. package/esm2020/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +2 -1
  10. package/esm2020/app/eo-framework/grid/grid.component.mjs +2 -2
  11. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -1
  12. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  13. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +10 -3
  14. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +2 -2
  15. package/fesm2015/eo-sdk-client.mjs +37 -11
  16. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  17. package/fesm2020/eo-sdk-client.mjs +37 -11
  18. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  19. package/misc/scripts/exclude-core-ng-package.js +11 -0
  20. package/package.json +2 -10
  21. package/esm2020/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.mjs +0 -5
  22. package/esm2020/projects/eo-sdk/core/lib/config/core-config.mjs +0 -23
  23. package/esm2020/projects/eo-sdk/core/lib/config/core-init.service.mjs +0 -71
  24. package/esm2020/projects/eo-sdk/core/lib/config/core-init.tokens.mjs +0 -8
  25. package/esm2020/projects/eo-sdk/core/lib/config/initialize-module.mjs +0 -11
  26. package/esm2020/projects/eo-sdk/core/lib/config/missing-translation-handler.mjs +0 -15
  27. package/esm2020/projects/eo-sdk/core/lib/config/translate-json-loader.mjs +0 -130
  28. package/esm2020/projects/eo-sdk/core/lib/environment.enaio.mjs +0 -12
  29. package/esm2020/projects/eo-sdk/core/lib/eo-core-shared.module.mjs +0 -24
  30. package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +0 -117
  31. package/esm2020/projects/eo-sdk/core/lib/interface/change-password.interface.mjs +0 -2
  32. package/esm2020/projects/eo-sdk/core/lib/interface/event.interface.mjs +0 -2
  33. package/esm2020/projects/eo-sdk/core/lib/interface/http-options.interface.mjs +0 -2
  34. package/esm2020/projects/eo-sdk/core/lib/interface/logger.interface.mjs +0 -7
  35. package/esm2020/projects/eo-sdk/core/lib/interface/organization-objects.interface.mjs +0 -2
  36. package/esm2020/projects/eo-sdk/core/lib/interface/tree-node.interface.mjs +0 -2
  37. package/esm2020/projects/eo-sdk/core/lib/model/baseparams.model.mjs +0 -2
  38. package/esm2020/projects/eo-sdk/core/lib/model/bpm.model.mjs +0 -70
  39. package/esm2020/projects/eo-sdk/core/lib/model/custom-action.model.mjs +0 -2
  40. package/esm2020/projects/eo-sdk/core/lib/model/dms-object-history.model.mjs +0 -30
  41. package/esm2020/projects/eo-sdk/core/lib/model/dms-object.model.mjs +0 -138
  42. package/esm2020/projects/eo-sdk/core/lib/model/eo-error.model.mjs +0 -37
  43. package/esm2020/projects/eo-sdk/core/lib/model/eo-user.model.mjs +0 -86
  44. package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +0 -36
  45. package/esm2020/projects/eo-sdk/core/lib/model/object-type.model.mjs +0 -39
  46. package/esm2020/projects/eo-sdk/core/lib/model/org.model.mjs +0 -2
  47. package/esm2020/projects/eo-sdk/core/lib/model/prepared-item.model.mjs +0 -35
  48. package/esm2020/projects/eo-sdk/core/lib/model/range-value.model.mjs +0 -45
  49. package/esm2020/projects/eo-sdk/core/lib/model/upload-file-item.model.mjs +0 -17
  50. package/esm2020/projects/eo-sdk/core/lib/model/upload-target.model.mjs +0 -50
  51. package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +0 -54
  52. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-interceptor.mjs +0 -29
  53. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.mjs +0 -2
  54. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +0 -215
  55. package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +0 -2
  56. package/esm2020/projects/eo-sdk/core/lib/service/backend/backend.service.mjs +0 -360
  57. package/esm2020/projects/eo-sdk/core/lib/service/bpm/bpm.service.mjs +0 -286
  58. package/esm2020/projects/eo-sdk/core/lib/service/cache/app-cache.service.mjs +0 -117
  59. package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +0 -2
  60. package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +0 -60
  61. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.mjs +0 -6
  62. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.mjs +0 -2
  63. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.mjs +0 -100
  64. package/esm2020/projects/eo-sdk/core/lib/service/config/config.enum.mjs +0 -6
  65. package/esm2020/projects/eo-sdk/core/lib/service/config/config.interface.mjs +0 -2
  66. package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +0 -135
  67. package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +0 -507
  68. package/esm2020/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.mjs +0 -2
  69. package/esm2020/projects/eo-sdk/core/lib/service/events/event.service.mjs +0 -44
  70. package/esm2020/projects/eo-sdk/core/lib/service/events/events.mjs +0 -27
  71. package/esm2020/projects/eo-sdk/core/lib/service/inbox/inbox.service.mjs +0 -111
  72. package/esm2020/projects/eo-sdk/core/lib/service/logger/console-log.service.mjs +0 -41
  73. package/esm2020/projects/eo-sdk/core/lib/service/logger/logger.mjs +0 -47
  74. package/esm2020/projects/eo-sdk/core/lib/service/notifications/notifications.service.mjs +0 -136
  75. package/esm2020/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.mjs +0 -2
  76. package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +0 -305
  77. package/esm2020/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.mjs +0 -2
  78. package/esm2020/projects/eo-sdk/core/lib/service/search/search-query.model.mjs +0 -510
  79. package/esm2020/projects/eo-sdk/core/lib/service/search/search.service.mjs +0 -484
  80. package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +0 -60
  81. package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +0 -111
  82. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.mjs +0 -2
  83. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +0 -216
  84. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.mjs +0 -98
  85. package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +0 -345
  86. package/esm2020/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.mjs +0 -2
  87. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system-status.service.mjs +0 -104
  88. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.enum.mjs +0 -9
  89. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.interface.mjs +0 -2
  90. package/esm2020/projects/eo-sdk/core/lib/service/upload/upload.service.mjs +0 -46
  91. package/esm2020/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.mjs +0 -83
  92. package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +0 -399
  93. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +0 -304
  94. package/esm2020/projects/eo-sdk/core/public_api.mjs +0 -85
  95. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6124
  96. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
  97. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6139
  98. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
  99. package/projects/eo-sdk/core/README.md +0 -113
  100. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.d.ts.map +0 -1
  101. package/projects/eo-sdk/core/index.d.ts +0 -6
  102. package/projects/eo-sdk/core/lib/config/core-config.d.ts +0 -14
  103. package/projects/eo-sdk/core/lib/config/core-config.d.ts.map +0 -1
  104. package/projects/eo-sdk/core/lib/config/core-init.service.d.ts +0 -33
  105. package/projects/eo-sdk/core/lib/config/core-init.service.d.ts.map +0 -1
  106. package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts +0 -8
  107. package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts.map +0 -1
  108. package/projects/eo-sdk/core/lib/config/initialize-module.d.ts +0 -7
  109. package/projects/eo-sdk/core/lib/config/initialize-module.d.ts.map +0 -1
  110. package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts +0 -14
  111. package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts.map +0 -1
  112. package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts +0 -21
  113. package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts.map +0 -1
  114. package/projects/eo-sdk/core/lib/environment.enaio.d.ts +0 -6
  115. package/projects/eo-sdk/core/lib/environment.enaio.d.ts.map +0 -1
  116. package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts +0 -12
  117. package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts.map +0 -1
  118. package/projects/eo-sdk/core/lib/eo-core.module.d.ts +0 -46
  119. package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +0 -1
  120. package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts +0 -8
  121. package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts.map +0 -1
  122. package/projects/eo-sdk/core/lib/interface/event.interface.d.ts +0 -14
  123. package/projects/eo-sdk/core/lib/interface/event.interface.d.ts.map +0 -1
  124. package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts +0 -17
  125. package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts.map +0 -1
  126. package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts +0 -20
  127. package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts.map +0 -1
  128. package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts +0 -20
  129. package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts.map +0 -1
  130. package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts +0 -24
  131. package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts.map +0 -1
  132. package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts +0 -58
  133. package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts.map +0 -1
  134. package/projects/eo-sdk/core/lib/model/bpm.model.d.ts +0 -253
  135. package/projects/eo-sdk/core/lib/model/bpm.model.d.ts.map +0 -1
  136. package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts +0 -34
  137. package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts.map +0 -1
  138. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +0 -59
  139. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts.map +0 -1
  140. package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +0 -137
  141. package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts.map +0 -1
  142. package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts +0 -19
  143. package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts.map +0 -1
  144. package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +0 -107
  145. package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts.map +0 -1
  146. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts +0 -71
  147. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +0 -1
  148. package/projects/eo-sdk/core/lib/model/object-type.model.d.ts +0 -125
  149. package/projects/eo-sdk/core/lib/model/object-type.model.d.ts.map +0 -1
  150. package/projects/eo-sdk/core/lib/model/org.model.d.ts +0 -94
  151. package/projects/eo-sdk/core/lib/model/org.model.d.ts.map +0 -1
  152. package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts +0 -190
  153. package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts.map +0 -1
  154. package/projects/eo-sdk/core/lib/model/range-value.model.d.ts +0 -22
  155. package/projects/eo-sdk/core/lib/model/range-value.model.d.ts.map +0 -1
  156. package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts +0 -30
  157. package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts.map +0 -1
  158. package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts +0 -60
  159. package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts.map +0 -1
  160. package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts +0 -52
  161. package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts.map +0 -1
  162. package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts +0 -12
  163. package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts.map +0 -1
  164. package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts +0 -23
  165. package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts.map +0 -1
  166. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +0 -104
  167. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +0 -1
  168. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -18
  169. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +0 -1
  170. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +0 -209
  171. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts.map +0 -1
  172. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +0 -150
  173. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts.map +0 -1
  174. package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts +0 -59
  175. package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts.map +0 -1
  176. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +0 -54
  177. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +0 -1
  178. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +0 -35
  179. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +0 -1
  180. package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts +0 -5
  181. package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts.map +0 -1
  182. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts +0 -16
  183. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts.map +0 -1
  184. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts +0 -49
  185. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts.map +0 -1
  186. package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts +0 -5
  187. package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts.map +0 -1
  188. package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts +0 -55
  189. package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts.map +0 -1
  190. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +0 -80
  191. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +0 -1
  192. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +0 -286
  193. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +0 -1
  194. package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts +0 -13
  195. package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts.map +0 -1
  196. package/projects/eo-sdk/core/lib/service/events/event.service.d.ts +0 -31
  197. package/projects/eo-sdk/core/lib/service/events/event.service.d.ts.map +0 -1
  198. package/projects/eo-sdk/core/lib/service/events/events.d.ts +0 -27
  199. package/projects/eo-sdk/core/lib/service/events/events.d.ts.map +0 -1
  200. package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts +0 -66
  201. package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts.map +0 -1
  202. package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts +0 -20
  203. package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts.map +0 -1
  204. package/projects/eo-sdk/core/lib/service/logger/logger.d.ts +0 -25
  205. package/projects/eo-sdk/core/lib/service/logger/logger.d.ts.map +0 -1
  206. package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts +0 -78
  207. package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts.map +0 -1
  208. package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts +0 -9
  209. package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts.map +0 -1
  210. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +0 -189
  211. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +0 -1
  212. package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts +0 -10
  213. package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts.map +0 -1
  214. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +0 -327
  215. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts.map +0 -1
  216. package/projects/eo-sdk/core/lib/service/search/search.service.d.ts +0 -173
  217. package/projects/eo-sdk/core/lib/service/search/search.service.d.ts.map +0 -1
  218. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +0 -52
  219. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +0 -1
  220. package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +0 -53
  221. package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +0 -1
  222. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts +0 -15
  223. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts.map +0 -1
  224. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts +0 -108
  225. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +0 -1
  226. package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts +0 -74
  227. package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts.map +0 -1
  228. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts +0 -125
  229. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +0 -1
  230. package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts +0 -53
  231. package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts.map +0 -1
  232. package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts +0 -26
  233. package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts.map +0 -1
  234. package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts +0 -8
  235. package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts.map +0 -1
  236. package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts +0 -8
  237. package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts.map +0 -1
  238. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +0 -28
  239. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts.map +0 -1
  240. package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts +0 -50
  241. package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts.map +0 -1
  242. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +0 -216
  243. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +0 -1
  244. package/projects/eo-sdk/core/lib/util/utils.d.ts +0 -148
  245. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +0 -1
  246. package/projects/eo-sdk/core/public_api.d.ts +0 -82
  247. package/projects/eo-sdk/core/public_api.d.ts.map +0 -1
@@ -1,507 +0,0 @@
1
- import { tap, mergeMap, catchError, map } from 'rxjs/operators';
2
- import { Injectable } from '@angular/core';
3
- import { of } from 'rxjs';
4
- import { DmsObject, DmsObjectAttachment } from '../../model/dms-object.model';
5
- import { Utils } from '../../util/utils';
6
- import { DmsObjectHistoryEntry } from '../../model/dms-object-history.model';
7
- import { EnaioEvent } from '../events/events';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../backend/backend.service";
10
- import * as i2 from "../system/system.service";
11
- import * as i3 from "../events/event.service";
12
- export var SubscriptionMode;
13
- (function (SubscriptionMode) {
14
- SubscriptionMode["ONLY_INDEX_DATA_CHANGED"] = "META";
15
- SubscriptionMode["ONLY_DOCUMENT_CONTENT_CHANGED"] = "CONTENT";
16
- SubscriptionMode["DMS_OBJECT_CHANGED"] = "BOTH";
17
- })(SubscriptionMode || (SubscriptionMode = {}));
18
- export const resolveObjectRights = [];
19
- /**
20
- * Collection of DMS Services
21
- */
22
- export class DmsService {
23
- constructor(backend, systemService, eventService) {
24
- this.backend = backend;
25
- this.systemService = systemService;
26
- this.eventService = eventService;
27
- }
28
- /**
29
- * Fetches a dms object.
30
- *
31
- * @param id Objects id
32
- * @param type Objects type name, will improve load time if provided
33
- * @param version Target version
34
- * @param intent Used for server side logging. If you provide an intent, the backend will recognize the request and add it to its logs
35
- * @param recyclebin If true, objects from recyclebin are included
36
- * @param withStorageInfo If true, storageinfo is included on the dms object
37
- * @returns Observable<DmsObject>
38
- */
39
- getDmsObject(id, type, version, intent, recyclebin, withStorageInfo) {
40
- const uri = `/dms/${id}`;
41
- const q = {
42
- additionalvisibility: true,
43
- subscription: 'CURRENT',
44
- resubmission: 'CURRENT',
45
- rights: 'CURRENT',
46
- datameta: 'true',
47
- contextfolder: 'true',
48
- type,
49
- recyclebin,
50
- version,
51
- storageinfo: withStorageInfo,
52
- '_intent': intent
53
- };
54
- return this.backend
55
- .getViaTempCache(Utils.buildUri(uri, q))
56
- .pipe(catchError(Utils.catchSkip(err => err.status === 404)), map(res => this.resolveObjectTypes(new DmsObject(res))));
57
- }
58
- /**
59
- * Getter for the DMS Objects by params
60
- *
61
- * @param DmsParams params
62
- * @returns Observable<DmsObject>
63
- */
64
- getDmsObjectByParams(params) {
65
- return this.getDmsObject(params.id, params.type, params.version, params.intent, params.recyclebin, params.withStorageInfo);
66
- }
67
- /**
68
- * Reolver of Object Types by DMS Object
69
- *
70
- * @param DmsObject dmsObject
71
- * @returns DmsObject
72
- */
73
- resolveObjectTypes(dmsObject) {
74
- dmsObject.type = this.systemService.getObjectType(dmsObject.typeName);
75
- if (dmsObject.contextFolder) {
76
- dmsObject.contextFolder.type = this.systemService.getObjectType(dmsObject.contextFolder.typeName);
77
- }
78
- return resolveObjectRights.reduce((value, fn) => fn.call(this, value), dmsObject);
79
- }
80
- /**
81
- * Deletes a DMS object.
82
- * @param id The id of the dms object to be deleted.
83
- * @param type Type of object
84
- * @param hardDelete If object should really be deleted or only put into the recycle bin
85
- * @param force If object should be forced to be deleted, even if it is used inside of a process. Default: false
86
- */
87
- deleteDmsObject(id, type, hardDelete, force = false) {
88
- const url = `/dms/${id}`;
89
- const params = {};
90
- if (type && type.length > 0) {
91
- params['type'] = type;
92
- }
93
- if (hardDelete) {
94
- params['harddelete'] = hardDelete;
95
- }
96
- if (force) {
97
- params['forcedelete'] = force;
98
- }
99
- return this.backend.del(Utils.buildUri(url, params));
100
- }
101
- /**
102
- * Returns the context path of the given dms object
103
- * @param id The id of the object.
104
- * @returns The context path of the dms object
105
- */
106
- getContextPath(id) {
107
- return this.backend.get(`/dms/${id}/context`)
108
- .pipe(map(contextPath => {
109
- contextPath.forEach(pathItem => {
110
- pathItem.dmsobject = new DmsObject(pathItem.dmsobject);
111
- });
112
- return contextPath;
113
- }));
114
- }
115
- /**
116
- * Fetches the children of a DmsObject.
117
- *
118
- * @param dmsObject
119
- * @returns Observable<DmsObject[]>
120
- */
121
- getChildren(dmsObject) {
122
- const uri = `/dms/${dmsObject.id}/children`;
123
- return this.backend.getViaTempCache(Utils.buildUri(uri, { type: dmsObject.type.name })).pipe(map((res) => {
124
- return res.map(r => this.resolveObjectTypes(new DmsObject(r)));
125
- }));
126
- }
127
- /**
128
- * Fetches the versions of a DmsObject.
129
- *
130
- * @param id
131
- * @param type
132
- * @returns Observable<DmsObject>
133
- */
134
- getVersions(id, type) {
135
- const uri = `/dms/${id}/versions`;
136
- return this.backend.getViaTempCache(Utils.buildUri(uri, { type })).pipe(map((res) => {
137
- return new DmsObject(res);
138
- }));
139
- }
140
- /**
141
- * Fetches the attachments of a DmsObject.
142
- *
143
- * @param dmsObject
144
- * @returns Observable<DmsObjectAttachment[]>
145
- */
146
- getAttachments(dmsObject) {
147
- const type = dmsObject.content?.type;
148
- const version = dmsObject.content?.linked ? -1 : dmsObject.version;
149
- const contentID = dmsObject.content?.id;
150
- const uri = Utils.buildUri(`/dms/${contentID}/attachments`, { type, version });
151
- return !contentID ? of([]) : this.backend.getViaTempCache(uri).pipe(catchError(Utils.catchSkip(err => err.status === 404)), map((res) => res.attachmentinfo && res.attachmentinfo.attachments ? res.attachmentinfo.attachments
152
- .map((a, i) => new DmsObjectAttachment(Object.assign(a, { id: i, previewUri: this.getAttachmentByIndex(contentID, i, type, version) }))) : []));
153
- }
154
- /**
155
- * Fetches the specific attachment of a DmsObject.
156
- *
157
- * @param id
158
- * @param index
159
- * @param type
160
- * @param version
161
- * @returns string
162
- */
163
- getAttachmentByIndex(id, index, type, version) {
164
- const uri = Utils.buildUri(`/dms/${id}/attachments/${index}`, { type, version });
165
- return this.backend.getServiceBase() + uri;
166
- }
167
- /**
168
- * Generates the URI for getting a DmsObjects slide (Preview image).
169
- *
170
- * @param id Objects id
171
- * @param type Objects type name, will improve load time if provided
172
- * @param version Target version
173
- * @param size The size of the preview image in px
174
- * @returns string
175
- */
176
- getSlide(id, type, version, size) {
177
- return Utils.buildUri(this.backend.getServiceBase() + '/dms/' + id + '/slide', {
178
- type,
179
- version,
180
- height: size
181
- });
182
- }
183
- /**
184
- * Generates the URI for getting a DmsObjects preview (PDF rendition).
185
- *
186
- * @param id Objects id
187
- * @param type Objects type name, will improve load time if provided
188
- * @param version Target version
189
- * @param rendition Target rendition (PDF)
190
- * @param recyclebin If true, objects from recyclebin are included
191
- * @returns string
192
- */
193
- getPreview(id, type, version, rendition, recyclebin) {
194
- return Utils.buildUri(this.backend.getServiceBase() + '/dms/' + id + '/content', {
195
- rendition,
196
- type,
197
- version,
198
- recyclebin
199
- });
200
- }
201
- /**
202
- * Updates an existing dms object.
203
- *
204
- * @param id ID of the object to be updated
205
- * @param indexdata Object holding the objects indexdata (property: value)
206
- * @param type The object type of the object to be updated
207
- * @param version The current version of the object to be updated
208
- * @param checkreferences If the reference fields should be validated or not
209
- * @returns Observable<DmsObject> The updated dms object
210
- */
211
- updateObject(id, indexdata, type, version, checkreferences) {
212
- const url = Utils.buildUri(`/dms/${id}`, { type, version, checkreferences });
213
- return this.triggerUpdate({ id, type, typeName: type }, this.backend.put(url, indexdata));
214
- }
215
- /**
216
- * Fetch the history (audit) of one dms object
217
- *
218
- * @param id ID of the dms object to fetch history for
219
- * @param type Type of the dms object to fetch history for
220
- * @param recyclebin If true, objects from recyclebin are included
221
- * @returns Observable<DmsObjectHistoryEntry[]> The history of the dms object
222
- */
223
- getHistory(id, type, recyclebin) {
224
- const uri = `/dms/${id}/audit`;
225
- return this.backend.getJson(Utils.buildUri(uri, { type: type, recyclebin: recyclebin })).pipe(map((res) => res.audit.map((auditEntry) => new DmsObjectHistoryEntry(auditEntry))));
226
- }
227
- /**
228
- * Restores an earlier version of the selected DmsObject by adding the earlier version
229
- * as the new recent version.
230
- *
231
- * @param id DMS object id
232
- * @param version The version to be restored
233
- * @param type The dms object type
234
- * @return
235
- */
236
- restoreVersion(id, version, type) {
237
- const uri = `/dms/restoreversion/${id}/${version}`;
238
- return this.backend.post(Utils.buildUri(uri, { type: type }), null);
239
- }
240
- /**
241
- * Restores File
242
- * @param id DMS object id
243
- * @param type The dms object type
244
- * @param userId user id
245
- * @return
246
- */
247
- restore(id, userId, type) {
248
- const uri = `/dms/restore/${id}?userid=${userId}`;
249
- return this.backend.put(uri);
250
- }
251
- /**
252
- * if dmsObject is specified, load latest version and trigger Enaio event DMS_OBJECT_UPDATED
253
- *
254
- * @param dmsObject
255
- * @param request
256
- * @return
257
- */
258
- triggerUpdate(dmsObject, request) {
259
- return !dmsObject ? request : request.pipe(mergeMap(() => this.getDmsObject(dmsObject.id, dmsObject.typeName)), tap(_dmsObject => this.eventService.trigger(EnaioEvent.DMS_OBJECT_UPDATED, _dmsObject)));
260
- }
261
- /**
262
- * Remove Content
263
- *
264
- * @param DmsObject dmsObject
265
- * @returns Observable<any>
266
- */
267
- removeContent(dmsObject) {
268
- const uri = `/dms/${dmsObject.id}/content`;
269
- return this.triggerUpdate(dmsObject, this.backend.del(uri));
270
- }
271
- /**
272
- * Creates a new DmsObject.
273
- * @param targetType Target object type name
274
- * @param file File to be added as DmsObjects content
275
- * @param indexData Indexdata as plain object where keys are the objects properties and values the values to be applied to it
276
- * @param parent Parent context folder of the new DmsObject
277
- */
278
- createDmsObject(targetType, file, indexData, parent) {
279
- const formData = new FormData();
280
- if (indexData) {
281
- formData.append('data', new Blob([JSON.stringify(indexData)], {
282
- type: 'application/json'
283
- }));
284
- }
285
- else {
286
- formData.append('noindexdata', '');
287
- }
288
- if (file) {
289
- formData.append('files[]', file, Utils.encodeFileName(file.name));
290
- }
291
- let uri = `/dms/create/${targetType}`;
292
- if (parent) {
293
- uri = Utils.buildUri(uri, {
294
- parentId: parent.id,
295
- parentType: parent.type
296
- });
297
- }
298
- return this.backend.postMultiPart(uri, formData, null, { headers: {} });
299
- }
300
- /**
301
- * Create a Subscription
302
- *
303
- * @param DmsObject dmsObject
304
- * @param string subject
305
- * @param receiver
306
- * @param boolean sendemail
307
- * @param boolean onlyemail
308
- * @param mode SubscriptionMode
309
- * @returns Observable<any>
310
- */
311
- createSubscription(dmsObject, subject, receiver, sendemail, onlyemail, mode) {
312
- const uri = `/dms/subscription/${dmsObject.id}`;
313
- return this.triggerUpdate(dmsObject, this.backend.post(Utils.buildUri(uri, {
314
- subject,
315
- type: dmsObject.typeName,
316
- receiver,
317
- sendemail,
318
- onlyemail,
319
- mode
320
- }), {}));
321
- }
322
- /**
323
- * Create a Resubmission
324
- *
325
- * @param DmsObject dmsObject
326
- * @param string subject
327
- * @param due
328
- * @param receiver
329
- * @param boolean sendEmail
330
- * @param boolean onlyEmail
331
- * @returns Observable<any>
332
- */
333
- createResubmission(dmsObject, subject, due, receiver, sendEmail, onlyEmail) {
334
- const uri = `/dms/resubmission/${dmsObject.id}`;
335
- return this.triggerUpdate(dmsObject, this.backend.post(Utils.buildUri(uri, {
336
- subject,
337
- type: dmsObject.typeName,
338
- receiver,
339
- due: due ? due.toISOString() : '',
340
- sendemail: sendEmail,
341
- onlyemail: onlyEmail
342
- }), {}));
343
- }
344
- /**
345
- * Reamove a Subscription by a given Id
346
- *
347
- * @param subscriptionId
348
- * @param DmsObject dmsObject
349
- * @returns Observable<any>
350
- */
351
- removeSubscriptionById(subscriptionId, dmsObject) {
352
- return this.triggerUpdate(dmsObject, this.backend.del(`/messageprovider/subscription/${subscriptionId}`));
353
- }
354
- /**
355
- * Remove a Resubmission by a given Id
356
- *
357
- * @param itemId
358
- * @param DmsObject dmsObject
359
- * @returns Observable<any>
360
- */
361
- removeResubmissionsById(itemId, dmsObject) {
362
- return this.triggerUpdate(dmsObject, this.backend.del(`/dms/resubmission/${itemId}`));
363
- }
364
- /**
365
- * Update a Resubmission
366
- *
367
- * @param DmsObject dmsObject
368
- * @param string subject
369
- * @param due
370
- * @param receiver
371
- * @param boolean sendEmail
372
- * @param boolean onlyEmail
373
- * @returns Observable<any>
374
- */
375
- updateResubmission(dmsObject, subject, due, receiver, sendEmail, onlyEmail) {
376
- return this.removeResubmissionsById(dmsObject.id).pipe(mergeMap(() => {
377
- return this.createResubmission(dmsObject, subject, due, receiver, sendEmail, onlyEmail);
378
- }));
379
- }
380
- /**
381
- * Shares a dms object (and its children) with certain users
382
- * @param dmsObject The dms object to be shared
383
- * @param shareWith Array of organization objects to share the object with. Each entry
384
- * will have the ID of the target organization object as well as an optional param
385
- * whether or not to also share the dms objects children.
386
- * @returns Observable being resolved once the request is done
387
- */
388
- share(dmsObject, shareWith) {
389
- return this.triggerUpdate(dmsObject, this.backend.put(`/dms/${dmsObject.id}/share`, {
390
- shares: shareWith.map(i => ({
391
- organizationobject: i.id,
392
- sharechildren: !!i.shareChildren
393
- }))
394
- }));
395
- }
396
- /**
397
- * Move a DMS Object
398
- *
399
- * @param id
400
- * @param typeName
401
- * @param parentId
402
- * @param parentTypeName
403
- * @returns Observable<any>
404
- */
405
- move(id, typeName, parentId, parentTypeName) {
406
- const uri = `/dms/location/${id}`;
407
- return this.backend.post(Utils.buildUri(uri, {
408
- type: typeName,
409
- parentId,
410
- parentType: parentTypeName
411
- }), {});
412
- }
413
- /**
414
- * Copy a DMS Object
415
- *
416
- * @param id
417
- * @param typeName
418
- * @param parentId
419
- * @param parentTypeName
420
- * @param createContentLink
421
- * @returns Observable<any>
422
- */
423
- copy(id, typeName, parentId, parentTypeName, createContentLink) {
424
- const uri = `/dms/copy/${id}`;
425
- return this.backend.post(Utils.buildUri(uri, {
426
- type: typeName,
427
- parentId,
428
- parentType: parentTypeName,
429
- createcontentlink: createContentLink
430
- }), {});
431
- }
432
- /**
433
- * Set a DMS Object to Finilited
434
- *
435
- * @param DmsObject item
436
- * @returns Observable<any>
437
- */
438
- finalize(item) {
439
- const url = '/dms/finalize/' + item.id + '?type=' + item.typeName;
440
- return this.triggerUpdate(item, this.backend.put(url));
441
- }
442
- /**
443
- * Remove the Finilized Flag from a DMS Object
444
- *
445
- * @param DmsObject item
446
- * @returns Observable<any>
447
- */
448
- definalize(item) {
449
- const url = '/dms/definalize/' + item.id + '?type=' + item.typeName;
450
- return this.triggerUpdate(item, this.backend.put(url));
451
- }
452
- createLocalCopyOfDMSObject(dmsObject) {
453
- const base = {
454
- id: dmsObject.id,
455
- title: dmsObject.title,
456
- description: dmsObject.description,
457
- version: dmsObject.version,
458
- versions: dmsObject.versions,
459
- data: dmsObject.data,
460
- type: dmsObject.typeName,
461
- activeversion: dmsObject.isActiveVersion,
462
- finalized: dmsObject.isFinalized,
463
- favorite: dmsObject.isFavorite,
464
- folder: dmsObject.isFolder,
465
- iscontextfolder: dmsObject.isContextFolder,
466
- contextfolder: dmsObject.contextFolder ? {
467
- id: dmsObject.contextFolder.id,
468
- type: dmsObject.contextFolder.typeName,
469
- title: dmsObject.contextFolder.title,
470
- description: dmsObject.contextFolder.description
471
- } : null,
472
- created: dmsObject.created,
473
- modified: dmsObject.modified,
474
- lock: !dmsObject.lock ? 'NOT_LOCKED' : dmsObject.lock.by.me ? 'LOCKED_BY_SESSION_USER' : 'LOCKED_BY_OTHER_USER',
475
- lockinfo: dmsObject.lock ? { username: dmsObject.lock.by.name, usertitle: dmsObject.lock.by.label, time: dmsObject.lock.on } : null,
476
- rights: [{
477
- privileges: {
478
- select: dmsObject.rights.select,
479
- edit: dmsObject.rights.edit,
480
- delete: dmsObject.rights.delete,
481
- finalize: dmsObject.rights.finalize,
482
- recycle: dmsObject.rights.recycle
483
- }
484
- }],
485
- shares: dmsObject.shares,
486
- contentid: dmsObject.content ? dmsObject.content.id : null,
487
- contenttype: dmsObject.content ? dmsObject.content.type : null,
488
- contentcount: dmsObject.content ? dmsObject.content.count : null,
489
- contents: dmsObject.content ? dmsObject.content.contents : null,
490
- subscriptions: dmsObject.subscriptions,
491
- resubmissions: dmsObject.resubmissions,
492
- additionalvisibility: dmsObject.additionalvisibility
493
- };
494
- let copiedDmsObject = new DmsObject(base);
495
- copiedDmsObject.type = dmsObject.type;
496
- return copiedDmsObject;
497
- }
498
- }
499
- DmsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DmsService, deps: [{ token: i1.BackendService }, { token: i2.SystemService }, { token: i3.EventService }], target: i0.ɵɵFactoryTarget.Injectable });
500
- DmsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DmsService, providedIn: 'root' });
501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DmsService, decorators: [{
502
- type: Injectable,
503
- args: [{
504
- providedIn: 'root'
505
- }]
506
- }], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i2.SystemService }, { type: i3.EventService }]; } });
507
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRzVFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBSTVDLE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsb0RBQWdDLENBQUE7SUFDaEMsNkRBQXlDLENBQUE7SUFDekMsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFdEM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUVyQixZQUFvQixPQUF1QixFQUNqQyxhQUE0QixFQUM1QixZQUEwQjtRQUZoQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksQ0FB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VixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RhcCwgbWVyZ2VNYXAsIGNhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc09iamVjdEF0dGFjaG1lbnR9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQge0Rtc09iamVjdEhpc3RvcnlFbnRyeX0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsJztcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtEbXNQYXJhbXN9IGZyb20gJy4vZG1zUGFyYW1zLmludGVyZmFjZSc7XG5cbmV4cG9ydCBlbnVtIFN1YnNjcmlwdGlvbk1vZGUge1xuICBPTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCA9ICdNRVRBJyxcbiAgT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQgPSAnQ09OVEVOVCcsXG4gIERNU19PQkpFQ1RfQ0hBTkdFRCA9ICdCT1RIJ1xufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU9iamVjdFJpZ2h0cyA9IFtdO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgRE1TIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERtc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgZG1zIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB3aXRoU3RvcmFnZUluZm8gSWYgdHJ1ZSwgc3RvcmFnZWluZm8gaXMgaW5jbHVkZWQgb24gdGhlIGRtcyBvYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXREbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgaW50ZW50Pzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbiwgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xuXG4gICAgY29uc3QgcSA9IHtcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgc3Vic2NyaXB0aW9uOiAnQ1VSUkVOVCcsXG4gICAgICByZXN1Ym1pc3Npb246ICdDVVJSRU5UJyxcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxuICAgICAgZGF0YW1ldGE6ICd0cnVlJyxcbiAgICAgIGNvbnRleHRmb2xkZXI6ICd0cnVlJyxcbiAgICAgIHR5cGUsXG4gICAgICByZWN5Y2xlYmluLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXG4gICAgICAnX2ludGVudCc6IGludGVudFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwgcSkpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgICBtYXAocmVzID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocmVzKSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3IgdGhlIERNUyBPYmplY3RzIGJ5IHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREbXNPYmplY3QocGFyYW1zLmlkLCBwYXJhbXMudHlwZSwgcGFyYW1zLnZlcnNpb24sIHBhcmFtcy5pbnRlbnQsIHBhcmFtcy5yZWN5Y2xlYmluLCBwYXJhbXMud2l0aFN0b3JhZ2VJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW9sdmVyIG9mIE9iamVjdCBUeXBlcyBieSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIERtc09iamVjdFxuICAgKi9cbiAgcmVzb2x2ZU9iamVjdFR5cGVzKGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBkbXNPYmplY3QudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC50eXBlTmFtZSk7XG5cbiAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgIGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVPYmplY3RSaWdodHMucmVkdWNlKCh2YWx1ZSwgZm4pID0+IGZuLmNhbGwodGhpcywgdmFsdWUpLCBkbXNPYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBETVMgb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2Ygb2JqZWN0XG4gICAqIEBwYXJhbSBoYXJkRGVsZXRlIElmIG9iamVjdCBzaG91bGQgcmVhbGx5IGJlIGRlbGV0ZWQgb3Igb25seSBwdXQgaW50byB0aGUgcmVjeWNsZSBiaW5cbiAgICogQHBhcmFtIGZvcmNlIElmIG9iamVjdCBzaG91bGQgYmUgZm9yY2VkIHRvIGJlIGRlbGV0ZWQsIGV2ZW4gaWYgaXQgaXMgdXNlZCBpbnNpZGUgb2YgYSBwcm9jZXNzLiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgZGVsZXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIGhhcmREZWxldGU/OiBib29sZWFuLCBmb3JjZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgL2Rtcy8ke2lkfWA7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgaWYgKHR5cGUgJiYgdHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXNbJ3R5cGUnXSA9IHR5cGU7XG4gICAgfVxuICAgIGlmIChoYXJkRGVsZXRlKSB7XG4gICAgICBwYXJhbXNbJ2hhcmRkZWxldGUnXSA9IGhhcmREZWxldGU7XG4gICAgfVxuICAgIGlmIChmb3JjZSkge1xuICAgICAgcGFyYW1zWydmb3JjZWRlbGV0ZSddID0gZm9yY2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGV4dCBwYXRoIG9mIHRoZSBnaXZlbiBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZG1zIG9iamVjdFxuICAgKi9cbiAgZ2V0Q29udGV4dFBhdGgoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KGAvZG1zLyR7aWR9L2NvbnRleHRgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICBjb250ZXh0UGF0aCA9PiB7XG4gICAgICAgICAgICBjb250ZXh0UGF0aC5mb3JFYWNoKHBhdGhJdGVtID0+IHtcbiAgICAgICAgICAgICAgcGF0aEl0ZW0uZG1zb2JqZWN0ID0gbmV3IERtc09iamVjdChwYXRoSXRlbS5kbXNvYmplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGV4dFBhdGg7XG4gICAgICAgICAgfVxuICAgICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBjaGlsZHJlbiBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdFtdPlxuICAgKi9cbiAgZ2V0Q2hpbGRyZW4oZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NoaWxkcmVuYDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiBkbXNPYmplY3QudHlwZS5uYW1lfSkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlcy5tYXAociA9PiB0aGlzLnJlc29sdmVPYmplY3RUeXBlcyhuZXcgRG1zT2JqZWN0KHIpKSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgdmVyc2lvbnMgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldFZlcnNpb25zKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L3ZlcnNpb25zYDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlfSkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRG1zT2JqZWN0KHJlcyk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgYXR0YWNobWVudHMgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+XG4gICAqL1xuICBnZXRBdHRhY2htZW50cyhkbXNPYmplY3Q6IERtc09iamVjdCk6IE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGRtc09iamVjdC5jb250ZW50Py50eXBlO1xuICAgIGNvbnN0IHZlcnNpb24gPSBkbXNPYmplY3QuY29udGVudD8ubGlua2VkID8gLTEgOiBkbXNPYmplY3QudmVyc2lvbjtcbiAgICBjb25zdCBjb250ZW50SUQgPSBkbXNPYmplY3QuY29udGVudD8uaWQ7XG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtjb250ZW50SUR9L2F0dGFjaG1lbnRzYCwge3R5cGUsIHZlcnNpb259KTtcbiAgICByZXR1cm4gIWNvbnRlbnRJRCA/IG9mKFtdKSA6IHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLmF0dGFjaG1lbnRpbmZvICYmIHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50cyA/IHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50c1xuICAgICAgICAubWFwKChhLCBpKSA9PiBuZXcgRG1zT2JqZWN0QXR0YWNobWVudChPYmplY3QuYXNzaWduKGEsIHtpZDogaSwgcHJldmlld1VyaTogdGhpcy5nZXRBdHRhY2htZW50QnlJbmRleChjb250ZW50SUQsIGksIHR5cGUsIHZlcnNpb24pfSkpKSA6IFtdXG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBzcGVjaWZpYyBhdHRhY2htZW50IG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSB2ZXJzaW9uXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0QXR0YWNobWVudEJ5SW5kZXgoaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfS9hdHRhY2htZW50cy8ke2luZGV4fWAsIHt0eXBlLCB2ZXJzaW9ufSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgdXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBzbGlkZSAoUHJldmlldyBpbWFnZSkuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSBzaXplIFRoZSBzaXplIG9mIHRoZSBwcmV2aWV3IGltYWdlIGluIHB4XG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0U2xpZGUoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgc2l6ZT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKFxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyAnL2Rtcy8nICsgaWQgKyAnL3NsaWRlJyxcbiAgICAgIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgaGVpZ2h0OiBzaXplXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgcHJldmlldyAoUERGIHJlbmRpdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBnZXRQcmV2aWV3KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHJlbmRpdGlvbj86IHN0cmluZywgcmVjeWNsZWJpbj86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9jb250ZW50JyxcbiAgICAgIHtcbiAgICAgICAgcmVuZGl0aW9uLFxuICAgICAgICB0eXBlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICByZWN5Y2xlYmluXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGRtcyBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGluZGV4ZGF0YSBPYmplY3QgaG9sZGluZyB0aGUgb2JqZWN0cyBpbmRleGRhdGEgKHByb3BlcnR5OiB2YWx1ZSlcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gY2hlY2tyZWZlcmVuY2VzIElmIHRoZSByZWZlcmVuY2UgZmllbGRzIHNob3VsZCBiZSB2YWxpZGF0ZWQgb3Igbm90XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PiBUaGUgdXBkYXRlZCBkbXMgb2JqZWN0XG4gICAqL1xuICB1cGRhdGVPYmplY3QoaWQ6IHN0cmluZywgaW5kZXhkYXRhOiBhbnksIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIGNoZWNrcmVmZXJlbmNlcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9YCwge3R5cGUsIHZlcnNpb24sIGNoZWNrcmVmZXJlbmNlc30pO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoPGFueT57aWQsIHR5cGUsIHR5cGVOYW1lOiB0eXBlfSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGluZGV4ZGF0YSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBoaXN0b3J5IChhdWRpdCkgb2Ygb25lIGRtcyBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IFRoZSBoaXN0b3J5IG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqL1xuICBnZXRIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L2F1ZGl0YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZSwgcmVjeWNsZWJpbjogcmVjeWNsZWJpbn0pKS5waXBlKG1hcCgocmVzKSA9PiByZXMuYXVkaXQubWFwKChhdWRpdEVudHJ5KSA9PiBuZXcgRG1zT2JqZWN0SGlzdG9yeUVudHJ5KGF1ZGl0RW50cnkpKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgc2VsZWN0ZWQgRG1zT2JqZWN0IGJ5IGFkZGluZyB0aGUgZWFybGllciB2ZXJzaW9uXG4gICAqIGFzIHRoZSBuZXcgcmVjZW50IHZlcnNpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHRvIGJlIHJlc3RvcmVkXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkbXMgb2JqZWN0IHR5cGVcbiAgICogQHJldHVyblxuICAgKi9cbiAgcmVzdG9yZVZlcnNpb24oaWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZXZlcnNpb24vJHtpZH0vJHt2ZXJzaW9ufWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGV9KSwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAqIFJlc3RvcmVzIEZpbGVcbiAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXG4gKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXG4gKiBAcGFyYW0gdXNlcklkIHVzZXIgaWRcbiAqIEByZXR1cm5cbiAqL1xuICByZXN0b3JlKGlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZS8ke2lkfT91c2VyaWQ9JHt1c2VySWR9YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGlmIGRtc09iamVjdCBpcyBzcGVjaWZpZWQsIGxvYWQgbGF0ZXN0IHZlcnNpb24gYW5kIHRyaWdnZXIgRW5haW8gZXZlbnQgRE1TX09CSkVDVF9VUERBVEVEXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHBhcmFtIHJlcXVlc3RcbiAgICogQHJldHVyblxuICAgKi9cbiAgdHJpZ2dlclVwZGF0ZShkbXNPYmplY3Q6IERtc09iamVjdCwgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgcmV0dXJuICFkbXNPYmplY3QgPyByZXF1ZXN0IDogcmVxdWVzdC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXREbXNPYmplY3QoZG1zT2JqZWN0LmlkLCBkbXNPYmplY3QudHlwZU5hbWUpKSxcbiAgICAgIHRhcChfZG1zT2JqZWN0ID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIF9kbXNPYmplY3QpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIENvbnRlbnRcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVDb250ZW50KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NvbnRlbnRgO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKHVyaSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRG1zT2JqZWN0LlxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZSBUYXJnZXQgb2JqZWN0IHR5cGUgbmFtZVxuICAgKiBAcGFyYW0gZmlsZSBGaWxlIHRvIGJlIGFkZGVkIGFzIERtc09iamVjdHMgY29udGVudFxuICAgKiBAcGFyYW0gaW5kZXhEYXRhIEluZGV4ZGF0YSBhcyBwbGFpbiBvYmplY3Qgd2hlcmUga2V5cyBhcmUgdGhlIG9iamVjdHMgcHJvcGVydGllcyBhbmQgdmFsdWVzIHRoZSB2YWx1ZXMgdG8gYmUgYXBwbGllZCB0byBpdFxuICAgKiBAcGFyYW0gcGFyZW50IFBhcmVudCBjb250ZXh0IGZvbGRlciBvZiB0aGUgbmV3IERtc09iamVjdFxuICAgKi9cbiAgY3JlYXRlRG1zT2JqZWN0KHRhcmdldFR5cGU6IHN0cmluZywgZmlsZT86IEZpbGUsIGluZGV4RGF0YT86IGFueSwgcGFyZW50Pzoge2lkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmd9KTogT2JzZXJ2YWJsZTx7aWQ6IHN0cmluZywgdXJpOiBzdHJpbmd9PiB7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGlmIChpbmRleERhdGEpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShpbmRleERhdGEpXSwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdub2luZGV4ZGF0YScsICcnKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlc1tdJywgZmlsZSwgVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZS5uYW1lKSk7XG4gICAgfVxuXG4gICAgbGV0IHVyaSA9IGAvZG1zL2NyZWF0ZS8ke3RhcmdldFR5cGV9YDtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB1cmkgPSBVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudC5pZCxcbiAgICAgICAgcGFyZW50VHlwZTogcGFyZW50LnR5cGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3RNdWx0aVBhcnQodXJpLCBmb3JtRGF0YSwgbnVsbCwge2hlYWRlcnM6IHt9fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgU3Vic2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZGVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHllbWFpbFxuICAgKiBAcGFyYW0gbW9kZSBTdWJzY3JpcHRpb25Nb2RlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgY3JlYXRlU3Vic2NyaXB0aW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIHJlY2VpdmVyLCBzZW5kZW1haWw6IGJvb2xlYW4sIG9ubHllbWFpbDogYm9vbGVhbiwgbW9kZT86IFN1YnNjcmlwdGlvbk1vZGUpIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9zdWJzY3JpcHRpb24vJHtkbXNPYmplY3QuaWR9YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBzZW5kZW1haWwsXG4gICAgICBvbmx5ZW1haWwsXG4gICAgICBtb2RlXG4gICAgfSksIHt9KVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBSZXN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSBkdWVcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9yZXN1Ym1pc3Npb24vJHtkbXNPYmplY3QuaWR9YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBkdWU6IGR1ZSA/IGR1ZS50b0lTT1N0cmluZygpIDogJycsXG4gICAgICBzZW5kZW1haWw6IHNlbmRFbWFpbCxcbiAgICAgIG9ubHllbWFpbDogb25seUVtYWlsXG4gICAgfSksIHt9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhbW92ZSBhIFN1YnNjcmlwdGlvbiBieSBhIGdpdmVuIElkXG4gICAqXG4gICAqIEBwYXJhbSBzdWJzY3JpcHRpb25JZFxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZVN1YnNjcmlwdGlvbkJ5SWQoc3Vic2NyaXB0aW9uSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvbWVzc2FnZXByb3ZpZGVyL3N1YnNjcmlwdGlvbi8ke3N1YnNjcmlwdGlvbklkfWApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBSZXN1Ym1pc3Npb24gYnkgYSBnaXZlbiBJZFxuICAgKlxuICAgKiBAcGFyYW0gaXRlbUlkXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoaXRlbUlkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL2Rtcy9yZXN1Ym1pc3Npb24vJHtpdGVtSWR9YCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhIFJlc3VibWlzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIGR1ZVxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHVwZGF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGRtc09iamVjdC5pZCkucGlwZShtZXJnZU1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0LCBzdWJqZWN0LCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWwsIG9ubHlFbWFpbCk7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlcyBhIGRtcyBvYmplY3QgKGFuZCBpdHMgY2hpbGRyZW4pIHdpdGggY2VydGFpbiB1c2Vyc1xuICAgKiBAcGFyYW0gZG1zT2JqZWN0IFRoZSBkbXMgb2JqZWN0IHRvIGJlIHNoYXJlZFxuICAgKiBAcGFyYW0gc2hhcmVXaXRoIEFycmF5IG9mIG9yZ2FuaXphdGlvbiBvYmplY3RzIHRvIHNoYXJlIHRoZSBvYmplY3Qgd2l0aC4gRWFjaCBlbnRyeVxuICAgKiB3aWxsIGhhdmUgdGhlIElEIG9mIHRoZSB0YXJnZXQgb3JnYW5pemF0aW9uIG9iamVjdCBhcyB3ZWxsIGFzIGFuIG9wdGlvbmFsIHBhcmFtXG4gICAqIHdoZXRoZXIgb3Igbm90IHRvIGFsc28gc2hhcmUgdGhlIGRtcyBvYmplY3RzIGNoaWxkcmVuLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGJlaW5nIHJlc29sdmVkIG9uY2UgdGhlIHJlcXVlc3QgaXMgZG9uZVxuICAgKi9cbiAgc2hhcmUoZG1zT2JqZWN0OiBEbXNPYmplY3QsIHNoYXJlV2l0aDoge2lkOiBzdHJpbmcsIHNoYXJlQ2hpbGRyZW4/OiBib29sZWFufVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKFxuICAgICAgZG1zT2JqZWN0LFxuICAgICAgdGhpcy5iYWNrZW5kLnB1dChcbiAgICAgICAgYC9kbXMvJHtkbXNPYmplY3QuaWR9L3NoYXJlYCxcbiAgICAgICAge1xuICAgICAgICAgIHNoYXJlczogc2hhcmVXaXRoLm1hcChpID0+ICh7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25vYmplY3Q6IGkuaWQsXG4gICAgICAgICAgICBzaGFyZWNoaWxkcmVuOiAhIWkuc2hhcmVDaGlsZHJlblxuICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVOYW1lXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBtb3ZlKGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvbG9jYXRpb24vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEBwYXJhbSBjcmVhdGVDb250ZW50TGlua1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNvcHkoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUsIGNyZWF0ZUNvbnRlbnRMaW5rKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgdHlwZTogdHlwZU5hbWUsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lLFxuICAgICAgY3JlYXRlY29udGVudGxpbms6IGNyZWF0ZUNvbnRlbnRMaW5rXG4gICAgfSksIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBETVMgT2JqZWN0IHRvIEZpbmlsaXRlZFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9maW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBkZWZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGNvbnN0IGJhc2UgPSB7XG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxuICAgICAgdGl0bGU6IGRtc09iamVjdC50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuZGVzY3JpcHRpb24sXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcbiAgICAgIHZlcnNpb25zOiBkbXNPYmplY3QudmVyc2lvbnMsXG4gICAgICBkYXRhOiBkbXNPYmplY3QuZGF0YSxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcblxuICAgICAgYWN0aXZldmVyc2lvbjogZG1zT2JqZWN0LmlzQWN0aXZlVmVyc2lvbixcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxuICAgICAgZmF2b3JpdGU6IGRtc09iamVjdC5pc0Zhdm9yaXRlLFxuICAgICAgZm9sZGVyOiBkbXNPYmplY3QuaXNGb2xkZXIsXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXG5cbiAgICAgIGNvbnRleHRmb2xkZXI6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyID8ge1xuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgIHR5cGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lLFxuICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxuICAgICAgfSA6IG51bGwsXG5cbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxuICAgICAgbW9kaWZpZWQ6IGRtc09iamVjdC5tb2RpZmllZCxcblxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxuICAgICAgbG9ja2luZm86IGRtc09iamVjdC5sb2NrID8ge3VzZXJuYW1lOiBkbXNPYmplY3QubG9jay5ieS5uYW1lLCB1c2VydGl0bGU6IGRtc09iamVjdC5sb2NrLmJ5LmxhYmVsLCB0aW1lOiBkbXNPYmplY3QubG9jay5vbn0gOiBudWxsLFxuXG4gICAgICByaWdodHM6IFt7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICBzZWxlY3Q6IGRtc09iamVjdC5yaWdodHMuc2VsZWN0LFxuICAgICAgICAgIGVkaXQ6IGRtc09iamVjdC5yaWdodHMuZWRpdCxcbiAgICAgICAgICBkZWxldGU6IGRtc09iamVjdC5yaWdodHMuZGVsZXRlLFxuICAgICAgICAgIGZpbmFsaXplOiBkbXNPYmplY3QucmlnaHRzLmZpbmFsaXplLFxuICAgICAgICAgIHJlY3ljbGU6IGRtc09iamVjdC5yaWdodHMucmVjeWNsZVxuICAgICAgICB9XG4gICAgICB9XSxcbiAgICAgIHNoYXJlczogZG1zT2JqZWN0LnNoYXJlcyxcbiAgICAgIGNvbnRlbnRpZDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5pZCA6IG51bGwsXG4gICAgICBjb250ZW50dHlwZTogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC50eXBlIDogbnVsbCxcbiAgICAgIGNvbnRlbnRjb3VudDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb3VudCA6IG51bGwsXG4gICAgICBjb250ZW50czogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb250ZW50cyA6IG51bGwsXG5cbiAgICAgIHN1YnNjcmlwdGlvbnM6IGRtc09iamVjdC5zdWJzY3JpcHRpb25zLFxuICAgICAgcmVzdWJtaXNzaW9uczogZG1zT2JqZWN0LnJlc3VibWlzc2lvbnMsXG4gICAgICBhZGRpdGlvbmFsdmlzaWJpbGl0eTogZG1zT2JqZWN0LmFkZGl0aW9uYWx2aXNpYmlsaXR5XG4gICAgfTtcblxuICAgIGxldCBjb3BpZWREbXNPYmplY3QgPSBuZXcgRG1zT2JqZWN0KGJhc2UpO1xuICAgIGNvcGllZERtc09iamVjdC50eXBlID0gZG1zT2JqZWN0LnR5cGU7XG5cbiAgICByZXR1cm4gY29waWVkRG1zT2JqZWN0O1xuICB9XG5cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zUGFyYW1zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VvLXNkay9jb3JlL3NyYy9saWIvc2VydmljZS9kbXMvZG1zUGFyYW1zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaWdub3JlXG4gKiBETVMgUGFyYW1zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG1zUGFyYW1zIHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgaW50ZW50Pzogc3RyaW5nO1xuICByZWN5Y2xlYmluPzogYm9vbGVhbjtcbiAgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,44 +0,0 @@
1
- import { filter } from 'rxjs/operators';
2
- import { Injectable } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Triggerable and Subscribable events
7
- */
8
- export class EventService {
9
- /**
10
- * @ignore
11
- */
12
- constructor() {
13
- this.eventSource = new Subject();
14
- /**
15
- * Eventstream to subscribe to
16
- */
17
- this.event$ = this.eventSource.asObservable();
18
- }
19
- /**
20
- * Trigger an global event
21
- * @param type Type/key of the event
22
- * @param data Data to be send along with the event
23
- */
24
- trigger(type, data) {
25
- this.eventSource.next({ type, data });
26
- }
27
- /**
28
- * Listen on a triggered event
29
- * @param types Type/key of the event
30
- */
31
- on(...types) {
32
- return this.event$
33
- .pipe(filter(event => event && !!types.find(t => t === event.type)));
34
- }
35
- }
36
- EventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
37
- EventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EventService, providedIn: 'root' });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: EventService, decorators: [{
39
- type: Injectable,
40
- args: [{
41
- providedIn: 'root'
42
- }]
43
- }], ctorParameters: function () { return []; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VvLXNkay9jb3JlL3NyYy9saWIvc2VydmljZS9ldmVudHMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUd6Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxZQUFZO0lBUXZCOztPQUVHO0lBQ0g7UUFUUSxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFDM0M7O1dBRUc7UUFDSSxXQUFNLEdBQW9CLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFNakUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsSUFBWSxFQUFFLElBQVU7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsRUFBRSxDQUFDLEdBQUcsS0FBZTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7O3lHQTlCVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtFdmVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL2V2ZW50LmludGVyZmFjZSdcblxuLyoqXG4gKiBUcmlnZ2VyYWJsZSBhbmQgU3Vic2NyaWJhYmxlIGV2ZW50c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgZXZlbnRTb3VyY2UgPSBuZXcgU3ViamVjdDxFdmVudD4oKTtcbiAgLyoqXG4gICAqIEV2ZW50c3RyZWFtIHRvIHN1YnNjcmliZSB0b1xuICAgKi9cbiAgcHVibGljIGV2ZW50JDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5ldmVudFNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBhbiBnbG9iYWwgZXZlbnRcbiAgICogQHBhcmFtIHR5cGUgVHlwZS9rZXkgb2YgdGhlIGV2ZW50XG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgc2VuZCBhbG9uZyB3aXRoIHRoZSBldmVudFxuICAgKi9cbiAgdHJpZ2dlcih0eXBlOiBzdHJpbmcsIGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLmV2ZW50U291cmNlLm5leHQoe3R5cGUsIGRhdGF9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gb24gYSB0cmlnZ2VyZWQgZXZlbnRcbiAgICogQHBhcmFtIHR5cGVzIFR5cGUva2V5IG9mIHRoZSBldmVudFxuICAgKi9cbiAgb24oLi4udHlwZXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50JFxuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50ICYmICEhdHlwZXMuZmluZCh0ID0+IHQgPT09IGV2ZW50LnR5cGUpKSk7XG4gIH1cbn1cbiJdfQ==