@veloceapps/sdk 8.0.0-20 → 8.0.0-200

Sign up to get free protection for your applications and to get access to all the features.
Files changed (317) hide show
  1. package/README.md +0 -1
  2. package/cms/README.md +0 -20
  3. package/cms/cms.actions.d.ts +15 -1
  4. package/cms/components/preview/preview.component.d.ts +2 -3
  5. package/cms/components/preview/preview.types.d.ts +4 -0
  6. package/cms/index.d.ts +1 -0
  7. package/cms/modules/runtime/services/runtime.service.d.ts +1 -1
  8. package/cms/services/index.d.ts +0 -1
  9. package/cms/services/resources.service.d.ts +2 -0
  10. package/cms/types/index.d.ts +0 -1
  11. package/cms/utils/element-metadata-worker.d.ts +11 -0
  12. package/cms/utils/elements-resolver.d.ts +0 -2
  13. package/cms/utils/index.d.ts +3 -0
  14. package/cms/utils/transpilation-worker.d.ts +13 -0
  15. package/cms/vendor-map.d.ts +29 -19
  16. package/core/README.md +20 -0
  17. package/core/modules/configuration/configuration.module.d.ts +2 -1
  18. package/core/modules/configuration/helpers.d.ts +4 -3
  19. package/core/modules/configuration/index.d.ts +1 -1
  20. package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -1
  21. package/core/modules/configuration/services/configuration-state.service.d.ts +54 -0
  22. package/core/modules/configuration/services/configuration.service.d.ts +11 -6
  23. package/core/modules/configuration/types/configuration.types.d.ts +4 -0
  24. package/core/modules/flow-configuration/flow-configuration.module.d.ts +2 -1
  25. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +5 -0
  26. package/core/pipes/action-code.pipe.d.ts +8 -0
  27. package/core/pipes/date.pipe.d.ts +2 -1
  28. package/core/pipes/index.d.ts +1 -0
  29. package/core/pipes/pipes.module.d.ts +2 -1
  30. package/core/services/context.service.d.ts +4 -0
  31. package/core/services/flow-info.service.d.ts +29 -0
  32. package/core/services/flow-state-configuration.service.d.ts +19 -0
  33. package/core/services/flow-state.service.d.ts +80 -0
  34. package/core/services/index.d.ts +4 -1
  35. package/core/services/quote-draft.service.d.ts +12 -28
  36. package/core/services/runtime-settings.service.d.ts +4 -1
  37. package/core/types/flow-customization.types.d.ts +22 -0
  38. package/core/types/flow-state.types.d.ts +11 -0
  39. package/core/types/formatting-settings.types.d.ts +2 -0
  40. package/core/types/index.d.ts +3 -0
  41. package/{cms → core}/types/integration.types.d.ts +1 -1
  42. package/core/types/pipe.types.d.ts +1 -0
  43. package/core/utils/line-item.utils.d.ts +1 -3
  44. package/esm2020/cms/cms.actions.mjs +25 -1
  45. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +3 -3
  46. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
  47. package/esm2020/cms/components/preview/preview.component.mjs +10 -10
  48. package/esm2020/cms/components/preview/preview.module.mjs +2 -2
  49. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  50. package/esm2020/cms/index.mjs +2 -1
  51. package/esm2020/cms/launcher.module.mjs +4 -4
  52. package/esm2020/cms/modules/migrations/migrations.mjs +2 -2
  53. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +6 -2
  54. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +11 -7
  55. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +4 -4
  56. package/esm2020/cms/plugins/configuration.plugin.mjs +8 -4
  57. package/esm2020/cms/services/index.mjs +1 -2
  58. package/esm2020/cms/services/io-provider.service.mjs +10 -9
  59. package/esm2020/cms/services/resources.service.mjs +10 -6
  60. package/esm2020/cms/services/templates.service.mjs +10 -9
  61. package/esm2020/cms/types/index.mjs +1 -2
  62. package/esm2020/cms/utils/element-metadata-worker.mjs +31 -0
  63. package/esm2020/cms/utils/elements-resolver.mjs +14 -28
  64. package/esm2020/cms/utils/encoding.utils.mjs +3 -2
  65. package/esm2020/cms/utils/index.mjs +4 -1
  66. package/esm2020/cms/utils/path.utils.mjs +3 -3
  67. package/esm2020/cms/utils/script.utils.mjs +19 -15
  68. package/esm2020/cms/utils/transpilation-worker.mjs +52 -0
  69. package/esm2020/cms/vendor-map.mjs +18 -6
  70. package/esm2020/core/core.module.mjs +12 -5
  71. package/esm2020/core/modules/configuration/configuration.module.mjs +7 -23
  72. package/esm2020/core/modules/configuration/helpers.mjs +28 -3
  73. package/esm2020/core/modules/configuration/index.mjs +2 -2
  74. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +8 -11
  75. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +335 -0
  76. package/esm2020/core/modules/configuration/services/configuration.service.mjs +77 -52
  77. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +6 -6
  78. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  79. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +6 -6
  80. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +12 -9
  81. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  82. package/esm2020/core/pipes/date.pipe.mjs +10 -4
  83. package/esm2020/core/pipes/index.mjs +2 -1
  84. package/esm2020/core/pipes/pipes.module.mjs +5 -4
  85. package/esm2020/core/services/context.service.mjs +33 -6
  86. package/esm2020/core/services/flow-info.service.mjs +99 -0
  87. package/esm2020/core/services/flow-state-configuration.service.mjs +53 -0
  88. package/esm2020/core/services/flow-state.service.mjs +512 -0
  89. package/esm2020/core/services/index.mjs +5 -2
  90. package/esm2020/core/services/integration.state.mjs +36 -0
  91. package/esm2020/core/services/product-images.service.mjs +4 -5
  92. package/esm2020/core/services/quote-draft.service.mjs +40 -91
  93. package/esm2020/core/services/runtime-settings.service.mjs +22 -5
  94. package/esm2020/core/types/flow-customization.types.mjs +3 -0
  95. package/esm2020/core/types/flow-state.types.mjs +2 -0
  96. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  97. package/esm2020/core/types/index.mjs +4 -1
  98. package/esm2020/core/types/integration.types.mjs +2 -0
  99. package/esm2020/core/types/pipe.types.mjs +2 -0
  100. package/esm2020/core/utils/line-item.utils.mjs +33 -32
  101. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +49 -49
  102. package/esm2020/src/components/flow-header/flow-header.component.mjs +108 -0
  103. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  104. package/esm2020/src/components/flow-header/index.mjs +2 -0
  105. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +37 -43
  106. package/esm2020/src/configure-primeng.mjs +33 -0
  107. package/esm2020/src/flow-routing.module.mjs +56 -78
  108. package/esm2020/src/flow.component.mjs +23 -32
  109. package/esm2020/src/flow.module.mjs +7 -5
  110. package/esm2020/src/guards/context.guard.mjs +6 -11
  111. package/esm2020/src/guards/flow.guard.mjs +37 -0
  112. package/esm2020/src/guards/product-unload.guard.mjs +4 -1
  113. package/esm2020/src/guards/root.guard.mjs +14 -10
  114. package/esm2020/src/pages/assets/assets.component.mjs +33 -37
  115. package/esm2020/src/pages/catalog/catalog.component.mjs +33 -37
  116. package/esm2020/src/pages/debug/debug.component.mjs +10 -14
  117. package/esm2020/src/pages/product/product.component.mjs +35 -22
  118. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +6 -3
  119. package/esm2020/src/pages/remote/remote.component.mjs +19 -19
  120. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +34 -38
  121. package/esm2020/src/resolvers/flow.resolver.mjs +37 -49
  122. package/esm2020/src/resolvers/quote.resolver.mjs +55 -63
  123. package/esm2020/src/services/doc-gen.service.mjs +4 -3
  124. package/esm2020/src/services/flow-dialog.service.mjs +21 -6
  125. package/esm2020/src/services/flow-router.service.mjs +57 -16
  126. package/esm2020/src/services/flow.service.mjs +83 -28
  127. package/esm2020/src/services/guided-selling.service.mjs +5 -4
  128. package/esm2020/src/services/index.mjs +3 -1
  129. package/esm2020/src/types/index.mjs +1 -2
  130. package/esm2020/src/utils/flow.utils.mjs +6 -2
  131. package/fesm2015/veloceapps-sdk-cms.mjs +298 -195
  132. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  133. package/fesm2015/veloceapps-sdk-core.mjs +1846 -1023
  134. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  135. package/fesm2015/veloceapps-sdk.mjs +756 -1493
  136. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  137. package/fesm2020/veloceapps-sdk-cms.mjs +302 -209
  138. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  139. package/fesm2020/veloceapps-sdk-core.mjs +1596 -811
  140. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  141. package/fesm2020/veloceapps-sdk.mjs +819 -1553
  142. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  143. package/package.json +5 -12
  144. package/src/components/doc-gen/doc-gen.component.d.ts +8 -9
  145. package/src/components/flow-header/flow-header.component.d.ts +25 -0
  146. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  147. package/src/components/flow-header/index.d.ts +1 -0
  148. package/src/components/guided-selling/guided-selling.component.d.ts +6 -8
  149. package/src/configure-primeng.d.ts +1 -0
  150. package/src/flow-routing.module.d.ts +5 -7
  151. package/src/flow.component.d.ts +7 -11
  152. package/src/flow.module.d.ts +2 -2
  153. package/src/guards/context.guard.d.ts +4 -5
  154. package/src/guards/flow.guard.d.ts +2 -0
  155. package/src/guards/product-unload.guard.d.ts +2 -2
  156. package/src/guards/root.guard.d.ts +0 -1
  157. package/src/pages/assets/assets.component.d.ts +5 -7
  158. package/src/pages/catalog/catalog.component.d.ts +5 -7
  159. package/src/pages/debug/debug.component.d.ts +5 -8
  160. package/src/pages/product/product.component.d.ts +8 -7
  161. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -0
  162. package/src/pages/remote/remote.component.d.ts +2 -3
  163. package/src/pages/shopping-cart/shopping-cart.component.d.ts +5 -7
  164. package/src/resolvers/flow.resolver.d.ts +6 -7
  165. package/src/resolvers/quote.resolver.d.ts +7 -12
  166. package/src/services/doc-gen.service.d.ts +1 -1
  167. package/src/services/flow-dialog.service.d.ts +5 -2
  168. package/src/services/flow-router.service.d.ts +7 -3
  169. package/src/services/flow.service.d.ts +11 -4
  170. package/src/services/guided-selling.service.d.ts +1 -1
  171. package/src/services/index.d.ts +2 -0
  172. package/src/types/index.d.ts +0 -1
  173. package/core/modules/configuration/services/configuration.state.d.ts +0 -30
  174. package/core/services/metric-calculation/metric-calculation.service.d.ts +0 -25
  175. package/core/services/metric-calculation/metric-calculation.types.d.ts +0 -1
  176. package/core/services/metric-calculation/metric-calculation.utils.d.ts +0 -5
  177. package/esm2020/cms/services/integration.state.mjs +0 -37
  178. package/esm2020/cms/types/integration.types.mjs +0 -2
  179. package/esm2020/core/modules/configuration/services/configuration.state.mjs +0 -142
  180. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +0 -85
  181. package/esm2020/core/services/metric-calculation/metric-calculation.types.mjs +0 -2
  182. package/esm2020/core/services/metric-calculation/metric-calculation.utils.mjs +0 -42
  183. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  184. package/esm2020/runtime/components/index.mjs +0 -5
  185. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  186. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  187. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  188. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  189. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  190. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  191. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  192. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  193. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  194. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  195. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  196. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  197. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  198. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  199. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  200. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  201. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  202. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  203. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  204. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  205. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  206. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  207. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  208. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  209. package/esm2020/runtime/index.mjs +0 -5
  210. package/esm2020/runtime/runtime.module.mjs +0 -74
  211. package/esm2020/runtime/services/cart.service.mjs +0 -29
  212. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  213. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  214. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  215. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  216. package/esm2020/runtime/services/index.mjs +0 -4
  217. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  218. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  219. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  220. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  221. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  222. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  223. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  224. package/esm2020/runtime/services/section.service.mjs +0 -117
  225. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  226. package/esm2020/runtime/types/index.mjs +0 -3
  227. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  228. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  229. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  230. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  231. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  232. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  233. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  234. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +0 -119
  235. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +0 -47
  236. package/esm2020/src/components/header/header.component.mjs +0 -355
  237. package/esm2020/src/components/header/header.module.mjs +0 -52
  238. package/esm2020/src/components/header/header.types.mjs +0 -2
  239. package/esm2020/src/components/header/metrics/index.mjs +0 -2
  240. package/esm2020/src/components/header/metrics/metrics.component.mjs +0 -255
  241. package/esm2020/src/components/header/metrics/metrics.definitions.mjs +0 -2
  242. package/esm2020/src/components/header/metrics/metrics.module.mjs +0 -69
  243. package/esm2020/src/pages/empty-account/empty-account.component.mjs +0 -12
  244. package/esm2020/src/pages/empty-account/empty-account.module.mjs +0 -20
  245. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  246. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  247. package/esm2020/src/types/flow-customization.types.mjs +0 -3
  248. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  249. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  250. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  251. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  252. package/runtime/README.md +0 -5
  253. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  254. package/runtime/components/index.d.ts +0 -4
  255. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  256. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  257. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  258. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  259. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  260. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  261. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  262. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  263. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  264. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  265. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  266. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  267. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  268. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  269. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  270. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  271. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  272. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  273. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  274. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  275. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  276. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  277. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  278. package/runtime/execution/utils/federated.util.d.ts +0 -6
  279. package/runtime/index.d.ts +0 -4
  280. package/runtime/runtime.module.d.ts +0 -16
  281. package/runtime/services/cart.service.d.ts +0 -15
  282. package/runtime/services/collapsible-state.service.d.ts +0 -15
  283. package/runtime/services/configuration.service.d.ts +0 -20
  284. package/runtime/services/current-state.service.d.ts +0 -8
  285. package/runtime/services/form-scope.service.d.ts +0 -20
  286. package/runtime/services/index.d.ts +0 -3
  287. package/runtime/services/product-model-cache.service.d.ts +0 -14
  288. package/runtime/services/runtime-context.service.d.ts +0 -16
  289. package/runtime/services/runtime-form.service.d.ts +0 -24
  290. package/runtime/services/runtime.service.d.ts +0 -44
  291. package/runtime/services/section-helper.service.d.ts +0 -8
  292. package/runtime/services/section-scope.service.d.ts +0 -14
  293. package/runtime/services/section-store.service.d.ts +0 -11
  294. package/runtime/services/section.service.d.ts +0 -30
  295. package/runtime/types/bound-data.types.d.ts +0 -13
  296. package/runtime/types/index.d.ts +0 -2
  297. package/runtime/types/quote-states.types.d.ts +0 -6
  298. package/runtime/types/runtime.types.d.ts +0 -19
  299. package/runtime/types/script-registry.types.d.ts +0 -13
  300. package/runtime/utils/line-item.util.d.ts +0 -34
  301. package/runtime/utils/section.utils.d.ts +0 -2
  302. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  303. package/src/components/header/cart-overlay/cart-preview.component.d.ts +0 -36
  304. package/src/components/header/cart-overlay/cart-preview.module.d.ts +0 -14
  305. package/src/components/header/header.component.d.ts +0 -70
  306. package/src/components/header/header.module.d.ts +0 -16
  307. package/src/components/header/header.types.d.ts +0 -20
  308. package/src/components/header/metrics/index.d.ts +0 -1
  309. package/src/components/header/metrics/metrics.component.d.ts +0 -67
  310. package/src/components/header/metrics/metrics.definitions.d.ts +0 -1
  311. package/src/components/header/metrics/metrics.module.d.ts +0 -18
  312. package/src/pages/empty-account/empty-account.component.d.ts +0 -5
  313. package/src/pages/empty-account/empty-account.module.d.ts +0 -10
  314. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  315. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
  316. package/src/types/flow-customization.types.d.ts +0 -12
  317. /package/{cms → core}/services/integration.state.d.ts +0 -0
@@ -2,15 +2,17 @@ import { HttpErrorResponse } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
3
  import { ConfigurationApiService } from '@veloceapps/api';
4
4
  import { ConfirmationComponent, ToastType } from '@veloceapps/components';
5
- import { ConfigurationMode, ConfigurationTranslatorUtils, getUIDefinitionProperties, } from '@veloceapps/core';
6
- import { transform } from 'lodash';
5
+ import { ConfigurationMode, ConfigurationTranslatorUtils, } from '@veloceapps/core';
6
+ import { cloneDeep, transform } from 'lodash';
7
7
  import { MessageService } from 'primeng/api';
8
8
  import { DialogService } from 'primeng/dynamicdialog';
9
9
  import { BehaviorSubject, shareReplay, throwError } from 'rxjs';
10
10
  import { catchError, finalize, first, map, switchMap, tap } from 'rxjs/operators';
11
11
  import { ContextService } from '../../../services/context.service';
12
12
  import { QuoteDraftService } from '../../../services/quote-draft.service';
13
+ import { RuntimeSettingsService } from '../../../services/runtime-settings.service';
13
14
  import { RuntimeStep } from '../../../types';
15
+ import { assetPredicateFn } from '../../../utils';
14
16
  import { LineItemWorker } from '../../../utils/line-item.worker';
15
17
  import { getDefaultLineItem, getGuidedSellingConfigurationRequest } from '../helpers';
16
18
  import { ConfigurationRuntimeService } from './configuration-runtime.service';
@@ -21,18 +23,18 @@ import * as i3 from "../../../services/context.service";
21
23
  import * as i4 from "@veloceapps/api";
22
24
  import * as i5 from "primeng/api";
23
25
  import * as i6 from "primeng/dynamicdialog";
26
+ import * as i7 from "../../../services/runtime-settings.service";
24
27
  export class ConfigurationService {
25
- constructor(quoteDraftService, runtimeService, contextService, configurationApiService, messageService, dialogService) {
28
+ constructor(quoteDraftService, runtimeService, contextService, configurationApiService, messageService, dialogService, runtimeSettings) {
26
29
  this.quoteDraftService = quoteDraftService;
27
30
  this.runtimeService = runtimeService;
28
31
  this.contextService = contextService;
29
32
  this.configurationApiService = configurationApiService;
30
33
  this.messageService = messageService;
31
34
  this.dialogService = dialogService;
35
+ this.runtimeSettings = runtimeSettings;
32
36
  this.mode = ConfigurationMode.SEARCH;
33
- this.lineItem = new BehaviorSubject(undefined);
34
- this.charges = new BehaviorSubject({});
35
- this.pricePlans = new BehaviorSubject({});
37
+ this.configurationState = new BehaviorSubject(null);
36
38
  this.isLoadingSubj$ = new BehaviorSubject(false);
37
39
  this.isLoading$ = this.isLoadingSubj$.asObservable();
38
40
  this.hasUnsavedChanges = false;
@@ -41,23 +43,23 @@ export class ConfigurationService {
41
43
  this.hasUnsavedChanges = false;
42
44
  this.runtimeService.reset();
43
45
  this.configurableRamp = undefined;
44
- this.lineItem.next(undefined);
45
- this.charges.next({});
46
- this.pricePlans.next({});
46
+ this.configurationState.next(null);
47
47
  }
48
48
  patch$(lineItem, options) {
49
- if (!this.lineItem.value) {
49
+ const source = this.getSnapshot();
50
+ if (!source) {
50
51
  return throwError(() => new Error(`Source LineItem not found`));
51
52
  }
52
53
  const skipCardinalityCalculation = options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';
53
- this.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem, skipCardinalityCalculation).li;
54
+ this.configurableRamp = new LineItemWorker(source).replace(lineItem, skipCardinalityCalculation).li;
54
55
  return this.configure().pipe(catchError(error => {
55
56
  console.error(error);
56
57
  if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {
57
58
  this.messageService.add({ severity: 'error', summary: error });
58
59
  }
59
60
  // bounce back if configuration call has failed
60
- this.lineItem.next(this.lineItem.value ? { ...this.lineItem.value } : undefined);
61
+ const prevState = this.configurationState.value;
62
+ this.configurationState.next(prevState ? { ...prevState } : null);
61
63
  return throwError(() => error);
62
64
  }), tap(() => {
63
65
  if (!this.hasUnsavedChanges) {
@@ -72,10 +74,10 @@ export class ConfigurationService {
72
74
  this.configurableRamp = lineItem;
73
75
  }
74
76
  get() {
75
- return this.lineItem.asObservable().pipe(shareReplay());
77
+ return this.configurationState.pipe(map(state => state?.lineItem), shareReplay());
76
78
  }
77
79
  getSnapshot() {
78
- return this.lineItem.value ? { ...this.lineItem.value } : undefined;
80
+ return this.configurationState.value?.lineItem ? { ...this.configurationState.value?.lineItem } : undefined;
79
81
  }
80
82
  getRuntimeModel() {
81
83
  const runtimeModel = this.runtimeService.runtimeModel;
@@ -91,6 +93,12 @@ export class ConfigurationService {
91
93
  }
92
94
  return runtimeContext;
93
95
  }
96
+ get state$() {
97
+ return this.configurationState.asObservable();
98
+ }
99
+ get stateSnapshot() {
100
+ return this.configurationState.value;
101
+ }
94
102
  get contextSnapshot() {
95
103
  return this.contextService.resolve();
96
104
  }
@@ -98,16 +106,22 @@ export class ConfigurationService {
98
106
  return this.contextService.resolve$();
99
107
  }
100
108
  get charges$() {
101
- return this.charges.asObservable();
109
+ return this.configurationState.pipe(map(state => state?.charges ?? {}));
102
110
  }
103
111
  get chargesSnapshot() {
104
- return this.charges.value;
112
+ return this.configurationState.value?.charges ?? {};
105
113
  }
106
114
  get pricePlans$() {
107
- return this.pricePlans.asObservable();
115
+ return this.configurationState.pipe(map(state => state?.pricePlans ?? {}));
108
116
  }
109
117
  get pricePlansSnapshot() {
110
- return this.pricePlans.value;
118
+ return this.configurationState.value?.pricePlans ?? {};
119
+ }
120
+ get procedureContext$() {
121
+ return this.configurationState.pipe(map(state => state?.procedureContext ?? {}));
122
+ }
123
+ get procedureContextSnapshot() {
124
+ return this.configurationState.value?.procedureContext ?? {};
111
125
  }
112
126
  configure() {
113
127
  return this.configureRequest$(this.generateRequest());
@@ -118,18 +132,22 @@ export class ConfigurationService {
118
132
  const uiDefinitionProperties = this.getUIDefinitionProperties();
119
133
  const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;
120
134
  const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;
135
+ const customPriceApi = this.runtimeSettings.getConfigurationSettings()['CUSTOM_PRICE_API'];
121
136
  this.isLoadingSubj$.next(true);
122
- return this.configurationApiService.configureLineItem({ configurationRequest, runtimeModel, pricingEnabled }).pipe(tap(({ lineItem, context, charges, pricePlans, deletedLineItems }) => {
123
- this.contextService.update(context ?? {});
124
- this.charges.next(charges ?? {});
125
- this.pricePlans.next(pricePlans ?? {});
126
- if (lineItem) {
127
- this.lineItem.next(lineItem);
128
- }
129
- if (deletedLineItems?.length) {
137
+ const configure$ = pricingEnabled && customPriceApi
138
+ ? this.configurationApiService.customConfigurePrice({ url: customPriceApi, configurationRequest, runtimeModel })
139
+ : this.configurationApiService.configureLineItem({
140
+ configurationRequest,
141
+ runtimeModel,
142
+ pricingEnabled,
143
+ });
144
+ return configure$.pipe(tap(result => {
145
+ this.contextService.update(result.context);
146
+ this.configurationState.next(result);
147
+ if (result.deletedLineItems?.length) {
130
148
  this.showInactiveProductsConfirmation();
131
149
  }
132
- this.configurableRamp = lineItem;
150
+ this.configurableRamp = result.lineItem;
133
151
  }), map(({ lineItem }) => lineItem), catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))), finalize(() => this.isLoadingSubj$.next(false)));
134
152
  }
135
153
  configureExternal$(props) {
@@ -143,7 +161,7 @@ export class ConfigurationService {
143
161
  configureGuidedSelling$(data) {
144
162
  return this.configurationApiService
145
163
  .configureLineItem({
146
- configurationRequest: getGuidedSellingConfigurationRequest(data),
164
+ configurationRequest: getGuidedSellingConfigurationRequest(data, this.contextService.resolve()),
147
165
  })
148
166
  .pipe(catchError(error => {
149
167
  if (error instanceof HttpErrorResponse) {
@@ -152,10 +170,26 @@ export class ConfigurationService {
152
170
  throw error;
153
171
  }));
154
172
  }
155
- generateRequest() {
173
+ generateRequest(lightMode = true) {
174
+ const lineItem = this.generateLineItem();
175
+ let request = {
176
+ lineItem,
177
+ mode: this.mode,
178
+ step: !this.configurationState.value?.lineItem ? RuntimeStep.START : RuntimeStep.UPDATE,
179
+ attributeDomainMode: 'ALL',
180
+ context: this.contextService.resolve(),
181
+ lineItems: this.quoteDraftService.quoteDraft?.currentState || [],
182
+ asset: this.getAsset(),
183
+ };
184
+ if (lightMode) {
185
+ request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);
186
+ }
187
+ return request;
188
+ }
189
+ generateLineItem() {
156
190
  const runtimeContext = this.getRuntimeContext();
157
191
  const uiDefinitionProperties = this.getUIDefinitionProperties();
158
- let lineItem = this.configurableRamp;
192
+ let lineItem = cloneDeep(this.configurableRamp);
159
193
  if (!lineItem) {
160
194
  const { initializationProps } = this.runtimeService ?? {};
161
195
  lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);
@@ -165,21 +199,19 @@ export class ConfigurationService {
165
199
  lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;
166
200
  }
167
201
  }
168
- let request = {
169
- lineItem,
170
- mode: this.mode,
171
- step: !this.lineItem.value ? RuntimeStep.START : RuntimeStep.UPDATE,
172
- attributeDomainMode: 'ALL',
173
- context: this.contextService.resolve(),
174
- lineItems: this.quoteDraftService.quoteDraft?.currentState || [],
175
- asset: this.getAsset(),
176
- };
177
- request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);
178
- return request;
202
+ return lineItem;
203
+ }
204
+ getAsset() {
205
+ const lineItem = this.configurableRamp;
206
+ if (!lineItem) {
207
+ return;
208
+ }
209
+ const assetId = lineItem.assetId ?? lineItem.openOrderLineItemId;
210
+ return this.quoteDraftService.assetsState?.initialState.find(li => assetPredicateFn(li, assetId));
179
211
  }
180
212
  getUIDefinitionProperties() {
181
213
  return {
182
- ...getUIDefinitionProperties(this.getRuntimeContext().uiDefinitionContainer),
214
+ ...(this.getRuntimeContext().uiDefinitionContainer?.source.properties ?? {}),
183
215
  ...(this.runtimeService.uiDefinitionProperties ?? {}),
184
216
  };
185
217
  }
@@ -207,17 +239,10 @@ export class ConfigurationService {
207
239
  }
208
240
  });
209
241
  }
210
- getAsset() {
211
- const lineItem = this.configurableRamp;
212
- if (!lineItem) {
213
- return;
214
- }
215
- return this.quoteDraftService.quoteDraft?.initialState.find(a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId);
216
- }
217
242
  }
218
- ConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService, deps: [{ token: i1.QuoteDraftService }, { token: i2.ConfigurationRuntimeService }, { token: i3.ContextService }, { token: i4.ConfigurationApiService }, { token: i5.MessageService }, { token: i6.DialogService }], target: i0.ɵɵFactoryTarget.Injectable });
243
+ ConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService, deps: [{ token: i1.QuoteDraftService }, { token: i2.ConfigurationRuntimeService }, { token: i3.ContextService }, { token: i4.ConfigurationApiService }, { token: i5.MessageService }, { token: i6.DialogService }, { token: i7.RuntimeSettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
219
244
  ConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService });
220
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService, decorators: [{
221
246
  type: Injectable
222
- }], ctorParameters: function () { return [{ type: i1.QuoteDraftService }, { type: i2.ConfigurationRuntimeService }, { type: i3.ContextService }, { type: i4.ConfigurationApiService }, { type: i5.MessageService }, { type: i6.DialogService }]; } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFzQixTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RixPQUFPLEVBSUwsaUJBQWlCLEVBRWpCLDRCQUE0QixFQVE1Qix5QkFBeUIsR0FDMUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlD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LENBQUMsQ0FBQyxDQUFDO2FBQ3hEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQ3pELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsbUJBQW1CLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsT0FBTyxDQUN4RSxDQUFDO0lBQ0osQ0FBQzs7aUhBeFFVLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCwgQ29uZmlybWF0aW9uQ29uZmlnLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYXJnZSxcbiAgQ29tcGlsZWRQcmljZVBsYW4sXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0LFxuICBDb25maWd1cmF0aW9uTW9kZSxcbiAgQ29uZmlndXJhdGlvblJlcXVlc3QsXG4gIENvbmZpZ3VyYXRpb25UcmFuc2xhdG9yVXRpbHMsXG4gIENvbmZpZ3VyZVByaWNlLFxuICBMaW5lSXRlbSxcbiAgTmV3QXR0cmlidXRlLFxuICBQYXRjaExpbmVJdGVtT3B0aW9ucyxcbiAgUnVudGltZU1vZGVsLFxuICBVSURlZmluaXRpb25Qcm9wcyxcbiAgVmxXaW5kb3csXG4gIGdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSwgdHJhbnNmb3JtIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3F1b3RlLWRyYWZ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUnVudGltZUNvbnRleHQsIFJ1bnRpbWVTdGVwIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTGluZUl0ZW1Xb3JrZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9saW5lLWl0ZW0ud29ya2VyJztcbmltcG9ydCB7IGdldERlZmF1bHRMaW5lSXRlbSwgZ2V0R3VpZGVkU2VsbGluZ0NvbmZpZ3VyYXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBFeHRlcm5hbENvbmZpZ3VyYXRpb25Qcm9wcywgR3VpZGVkU2VsbGluZ1N1Ym1pdERhdGEgfSBmcm9tICcuLi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogVmxXaW5kb3c7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgbW9kZSA9IENvbmZpZ3VyYXRpb25Nb2RlLlNFQVJDSDtcbiAgcHJpdmF0ZSBjb25maWd1cmFibGVSYW1wOiBMaW5lSXRlbSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGxpbmVJdGVtID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMaW5lSXRlbSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBjaGFyZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEaWN0aW9uYXJ5PENoYXJnZT4+KHt9KTtcbiAgcHJpdmF0ZSBwcmljZVBsYW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPj4oe30pO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGlzTG9hZGluZyQgPSB0aGlzLmlzTG9hZGluZ1N1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQXBpU2VydmljZTogQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJlc2V0KCk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5saW5lSXRlbS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFyZ2VzLm5leHQoe30pO1xuICAgIHRoaXMucHJpY2VQbGFucy5uZXh0KHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCQobGluZUl0ZW06IExpbmVJdGVtLCBvcHRpb25zPzogUGF0Y2hMaW5lSXRlbU9wdGlvbnMpOiBPYnNlcnZhYmxlPExpbmVJdGVtPiB7XG4gICAgaWYgKCF0aGlzLmxpbmVJdGVtLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFNvdXJjZSBMaW5lSXRlbSBub3QgZm91bmRgKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gPVxuICAgICAgb3B0aW9ucz8uc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gfHwgdGhpcy5jb250ZXh0U25hcHNob3QucHJvcGVydGllc1snI3NraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uJ10gPT09ICd0cnVlJztcblxuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IG5ldyBMaW5lSXRlbVdvcmtlcih0aGlzLmxpbmVJdGVtLnZhbHVlKS5yZXBsYWNlKGxpbmVJdGVtLCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbikubGk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmUoKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGlmICghdGhpcy5ydW50aW1lU2VydmljZS51aURlZmluaXRpb25Qcm9wZXJ0aWVzLnN1cHByZXNzVG9hc3RNZXNzYWdlcykge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IGVycm9yIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYm91bmNlIGJhY2sgaWYgY29uZmlndXJhdGlvbiBjYWxsIGhhcyBmYWlsZWRcbiAgICAgICAgdGhpcy5saW5lSXRlbS5uZXh0KHRoaXMubGluZUl0ZW0udmFsdWUgPyB7IC4uLnRoaXMubGluZUl0ZW0udmFsdWUgfSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaChsaW5lSXRlbTogTGluZUl0ZW0sIG9wdGlvbnM/OiBQYXRjaExpbmVJdGVtT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2gkKGxpbmVJdGVtLCBvcHRpb25zKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWd1cmFibGVSYW1wKGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IGxpbmVJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMubGluZUl0ZW0uYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbmFwc2hvdCgpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGluZUl0ZW0udmFsdWUgPyB7IC4uLnRoaXMubGluZUl0ZW0udmFsdWUgfSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSdW50aW1lTW9kZWwoKTogUnVudGltZU1vZGVsIHtcbiAgICBjb25zdCBydW50aW1lTW9kZWwgPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVNb2RlbDtcbiAgICBpZiAoIXJ1bnRpbWVNb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW50aW1lIG1vZGVsIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBydW50aW1lTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0UnVudGltZUNvbnRleHQoKTogUnVudGltZUNvbnRleHQge1xuICAgIGNvbnN0IHJ1bnRpbWVDb250ZXh0ID0gdGhpcy5ydW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dDtcbiAgICBpZiAoIXJ1bnRpbWVDb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bnRpbWUgY29udGV4dCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVudGltZUNvbnRleHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHRTbmFwc2hvdCgpOiBDb25maWd1cmF0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0JCgpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlcyQoKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PENoYXJnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5jaGFyZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFyZ2VzU25hcHNob3QoKTogRGljdGlvbmFyeTxDaGFyZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5jaGFyZ2VzLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmljZVBsYW5zJCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+PiB7XG4gICAgcmV0dXJuIHRoaXMucHJpY2VQbGFucy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJpY2VQbGFuc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wcmljZVBsYW5zLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZSgpOiBPYnNlcnZhYmxlPExpbmVJdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJlUmVxdWVzdCQodGhpcy5nZW5lcmF0ZVJlcXVlc3QoKSk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlUmVxdWVzdCQoY29uZmlndXJhdGlvblJlcXVlc3Q6IENvbmZpZ3VyYXRpb25SZXF1ZXN0KTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIGNvbnN0IHJ1bnRpbWVDb250ZXh0ID0gdGhpcy5nZXRSdW50aW1lQ29udGV4dCgpO1xuICAgIGNvbnN0IHJ1bnRpbWVNb2RlbCA9IHRoaXMuZ2V0UnVudGltZU1vZGVsKCk7XG4gICAgY29uc3QgdWlEZWZpbml0aW9uUHJvcGVydGllcyA9IHRoaXMuZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpO1xuXG4gICAgY29uc3QgbWFpblByaWNpbmdFbmFibGVkID0gcnVudGltZUNvbnRleHQucHJvcGVydGllcz8uUHJpY2luZ0VuYWJsZWQ7XG4gICAgY29uc3QgcHJpY2luZ0VuYWJsZWQgPSBtYWluUHJpY2luZ0VuYWJsZWQgPyBtYWluUHJpY2luZ0VuYWJsZWQgPT09ICd0cnVlJyA6IHVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2luZ0VuYWJsZWQ7XG5cbiAgICB0aGlzLmlzTG9hZGluZ1N1YmokLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uQXBpU2VydmljZS5jb25maWd1cmVMaW5lSXRlbSh7IGNvbmZpZ3VyYXRpb25SZXF1ZXN0LCBydW50aW1lTW9kZWwsIHByaWNpbmdFbmFibGVkIH0pLnBpcGUoXG4gICAgICB0YXAoKHsgbGluZUl0ZW0sIGNvbnRleHQsIGNoYXJnZXMsIHByaWNlUGxhbnMsIGRlbGV0ZWRMaW5lSXRlbXMgfSkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZShjb250ZXh0ID8/IHt9KTtcbiAgICAgICAgdGhpcy5jaGFyZ2VzLm5leHQoY2hhcmdlcyA/PyB7fSk7XG4gICAgICAgIHRoaXMucHJpY2VQbGFucy5uZXh0KHByaWNlUGxhbnMgPz8ge30pO1xuXG4gICAgICAgIGlmIChsaW5lSXRlbSkge1xuICAgICAgICAgIHRoaXMubGluZUl0ZW0ubmV4dChsaW5lSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVsZXRlZExpbmVJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zaG93SW5hY3RpdmVQcm9kdWN0c0NvbmZpcm1hdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmFibGVSYW1wID0gbGluZUl0ZW07XG4gICAgICB9KSxcbiAgICAgIG1hcCgoeyBsaW5lSXRlbSB9KSA9PiBsaW5lSXRlbSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGVycm9yLm1lc3NhZ2UgfHwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKSkpLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVTZXJ2aWNlXG4gICAgICAuaW5pdCh7IHByb2R1Y3RJZDogcHJvcHMucHJvZHVjdElkLCBkZWZhdWx0UXR5OiBwcm9wcy5xdHksIGF0dHJpYnV0ZXNNYXA6IHByb3BzLmF0dHJpYnV0ZXNNYXAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmUoKSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnJlc2V0KCkpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVHdWlkZWRTZWxsaW5nJChkYXRhOiBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSk6IE9ic2VydmFibGU8Q29uZmlndXJlUHJpY2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uQXBpU2VydmljZVxuICAgICAgLmNvbmZpZ3VyZUxpbmVJdGVtKHtcbiAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3Q6IGdldEd1aWRlZFNlbGxpbmdDb25maWd1cmF0aW9uUmVxdWVzdChkYXRhKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogZXJyb3IuZXJyb3IubWVzc2FnZSB8fCBlcnJvci5lcnJvciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVJlcXVlc3QoKTogQ29uZmlndXJhdGlvblJlcXVlc3Qge1xuICAgIGNvbnN0IHJ1bnRpbWVDb250ZXh0ID0gdGhpcy5nZXRSdW50aW1lQ29udGV4dCgpO1xuICAgIGNvbnN0IHVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSB0aGlzLmdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMoKTtcblxuICAgIGxldCBsaW5lSXRlbSA9IHRoaXMuY29uZmlndXJhYmxlUmFtcDtcbiAgICBpZiAoIWxpbmVJdGVtKSB7XG4gICAgICBjb25zdCB7IGluaXRpYWxpemF0aW9uUHJvcHMgfSA9IHRoaXMucnVudGltZVNlcnZpY2UgPz8ge307XG5cbiAgICAgIGxpbmVJdGVtID0gZ2V0RGVmYXVsdExpbmVJdGVtKHJ1bnRpbWVDb250ZXh0LCB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLCBpbml0aWFsaXphdGlvblByb3BzPy5kZWZhdWx0UXR5KTtcblxuICAgICAgLy8gU2V0IGRlZmF1bHQgYXR0cmlidXRlc1xuICAgICAgaWYgKGluaXRpYWxpemF0aW9uUHJvcHM/LmF0dHJpYnV0ZXNNYXApIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRyYW5zZm9ybShcbiAgICAgICAgICBpbml0aWFsaXphdGlvblByb3BzPy5hdHRyaWJ1dGVzTWFwLFxuICAgICAgICAgIChhY2M6IE5ld0F0dHJpYnV0ZVtdLCB2YWx1ZSwgbmFtZSkgPT4gYWNjLnB1c2goeyBuYW1lLCB2YWx1ZSB9KSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKTtcblxuICAgICAgICBsaW5lSXRlbSA9IG5ldyBMaW5lSXRlbVdvcmtlcihsaW5lSXRlbSkucGF0Y2hBdHRyaWJ1dGUoYXR0cmlidXRlcykubGk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlcXVlc3Q6IENvbmZpZ3VyYXRpb25SZXF1ZXN0ID0ge1xuICAgICAgbGluZUl0ZW0sXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBzdGVwOiAhdGhpcy5saW5lSXRlbS52YWx1ZSA/IFJ1bnRpbWVTdGVwLlNUQVJUIDogUnVudGltZVN0ZXAuVVBEQVRFLFxuICAgICAgYXR0cmlidXRlRG9tYWluTW9kZTogJ0FMTCcsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSxcbiAgICAgIGxpbmVJdGVtczogdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgfHwgW10sXG4gICAgICBhc3NldDogdGhpcy5nZXRBc3NldCgpLFxuICAgIH07XG5cbiAgICByZXF1ZXN0ID0gQ29uZmlndXJhdGlvblRyYW5zbGF0b3JVdGlscy5saWdodGVuQ29uZmlndXJhdGlvblJlcXVlc3QocmVxdWVzdCk7XG5cbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpOiBVSURlZmluaXRpb25Qcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdldFVJRGVmaW5pdGlvblByb3BlcnRpZXModGhpcy5nZXRSdW50aW1lQ29udGV4dCgpLnVpRGVmaW5pdGlvbkNvbnRhaW5lciksXG4gICAgICAuLi4odGhpcy5ydW50aW1lU2VydmljZS51aURlZmluaXRpb25Qcm9wZXJ0aWVzID8/IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93SW5hY3RpdmVQcm9kdWN0c0NvbmZpcm1hdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maXJtYXRpb25Db25maWc6IENvbmZpcm1hdGlvbkNvbmZpZyA9IHtcbiAgICAgIHRpdGxlOiAnICcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgcXVvdGUgY29udGFpbnMgaW5hY3RpdmUgcHJvZHVjdHMuIERvIHlvdSB3YW50IHRvIHJlbW92ZSB0aGVtPycsXG4gICAgICBwcmltYXJ5QnV0dG9uTGFiZWw6ICdSZW1vdmUgcHJvZHVjdHMnLFxuICAgICAgc2Vjb25kYXJ5QnV0dG9uTGFiZWw6ICdCYWNrIHRvIFF1b3RlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXG4gICAgICAub3BlbihDb25maXJtYXRpb25Db21wb25lbnQsIHtcbiAgICAgICAgZGlzbWlzc2FibGVNYXNrOiBmYWxzZSxcbiAgICAgICAgY2xvc2VPbkVzY2FwZTogZmFsc2UsXG4gICAgICAgIGNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgc2hvd0hlYWRlcjogdHJ1ZSxcbiAgICAgICAgaGVhZGVyOiBgSW5hY3RpdmUgUHJvZHVjdHMgaW4gUXVvdGVgLFxuICAgICAgICB3aWR0aDogJzQ0MHB4JyxcbiAgICAgICAgZGF0YTogeyBjb25maXJtYXRpb25Db25maWcgfSxcbiAgICAgIH0pXG4gICAgICAub25DbG9zZS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgICAgICAgd2luZG93WydWRUxPX0JBQ0tfRk4nXS5hcHBseShudWxsLCBbY29udGV4dC5oZWFkZXJJZF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXQoKTogTGluZUl0ZW0gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5jb25maWd1cmFibGVSYW1wO1xuICAgIGlmICghbGluZUl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5pbml0aWFsU3RhdGUuZmluZChcbiAgICAgIGEgPT4gYS5pZCA9PT0gbGluZUl0ZW0ub3Blbk9yZGVyTGluZUl0ZW1JZCB8fCBhLmlkID09PSBsaW5lSXRlbS5hc3NldElkLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
247
+ }], ctorParameters: function () { return [{ type: i1.QuoteDraftService }, { type: i2.ConfigurationRuntimeService }, { type: i3.ContextService }, { type: i4.ConfigurationApiService }, { type: i5.MessageService }, { type: i6.DialogService }, { type: i7.RuntimeSettingsService }]; } });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFzQixTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RixPQUFPLEVBSUwsaUJBQWlCLEVBRWpCLDRCQUE0QixHQVE3QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0Is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LEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFO1NBQzdCLENBQUM7YUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN4RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7aUhBdFNVLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCwgQ29uZmlybWF0aW9uQ29uZmlnLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYXJnZSxcbiAgQ29tcGlsZWRQcmljZVBsYW4sXG4gIENvbmZpZ3VyYXRpb25Db250ZXh0LFxuICBDb25maWd1cmF0aW9uTW9kZSxcbiAgQ29uZmlndXJhdGlvblJlcXVlc3QsXG4gIENvbmZpZ3VyYXRpb25UcmFuc2xhdG9yVXRpbHMsXG4gIENvbmZpZ3VyZVByaWNlLFxuICBMaW5lSXRlbSxcbiAgTmV3QXR0cmlidXRlLFxuICBQYXRjaExpbmVJdGVtT3B0aW9ucyxcbiAgUnVudGltZU1vZGVsLFxuICBVSURlZmluaXRpb25Qcm9wcyxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBEaWN0aW9uYXJ5LCB0cmFuc2Zvcm0gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFF1b3RlRHJhZnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFJ1bnRpbWVDb250ZXh0LCBSdW50aW1lU3RlcCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGFzc2V0UHJlZGljYXRlRm4gfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBMaW5lSXRlbVdvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xpbmUtaXRlbS53b3JrZXInO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdExpbmVJdGVtLCBnZXRHdWlkZWRTZWxsaW5nQ29uZmlndXJhdGlvblJlcXVlc3QgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzLCBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBWbFdpbmRvdztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RlID0gQ29uZmlndXJhdGlvbk1vZGUuU0VBUkNIO1xuICBwcml2YXRlIGNvbmZpZ3VyYWJsZVJhbXA6IExpbmVJdGVtIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmVQcmljZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGlzTG9hZGluZyQgPSB0aGlzLmlzTG9hZGluZ1N1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQXBpU2VydmljZTogQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZVNldHRpbmdzOiBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJlc2V0KCk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGUubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCQobGluZUl0ZW06IExpbmVJdGVtLCBvcHRpb25zPzogUGF0Y2hMaW5lSXRlbU9wdGlvbnMpOiBPYnNlcnZhYmxlPExpbmVJdGVtPiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5nZXRTbmFwc2hvdCgpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFNvdXJjZSBMaW5lSXRlbSBub3QgZm91bmRgKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gPVxuICAgICAgb3B0aW9ucz8uc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb24gfHwgdGhpcy5jb250ZXh0U25hcHNob3QucHJvcGVydGllc1snI3NraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uJ10gPT09ICd0cnVlJztcblxuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IG5ldyBMaW5lSXRlbVdvcmtlcihzb3VyY2UpLnJlcGxhY2UobGluZUl0ZW0sIHNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKS5saTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZSgpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvblByb3BlcnRpZXMuc3VwcHJlc3NUb2FzdE1lc3NhZ2VzKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBib3VuY2UgYmFjayBpZiBjb25maWd1cmF0aW9uIGNhbGwgaGFzIGZhaWxlZFxuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS52YWx1ZTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGUubmV4dChwcmV2U3RhdGUgPyB7IC4uLnByZXZTdGF0ZSB9IDogbnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaChsaW5lSXRlbTogTGluZUl0ZW0sIG9wdGlvbnM/OiBQYXRjaExpbmVJdGVtT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2gkKGxpbmVJdGVtLCBvcHRpb25zKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWd1cmFibGVSYW1wKGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhYmxlUmFtcCA9IGxpbmVJdGVtO1xuICB9XG5cbiAgcHVibGljIGdldCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGU/LmxpbmVJdGVtKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTbmFwc2hvdCgpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5saW5lSXRlbSA/IHsgLi4udGhpcy5jb25maWd1cmF0aW9uU3RhdGUudmFsdWU/LmxpbmVJdGVtIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0UnVudGltZU1vZGVsKCk6IFJ1bnRpbWVNb2RlbCB7XG4gICAgY29uc3QgcnVudGltZU1vZGVsID0gdGhpcy5ydW50aW1lU2VydmljZS5ydW50aW1lTW9kZWw7XG4gICAgaWYgKCFydW50aW1lTW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBtb2RlbCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVudGltZU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldFJ1bnRpbWVDb250ZXh0KCk6IFJ1bnRpbWVDb250ZXh0IHtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMucnVudGltZVNlcnZpY2UucnVudGltZUNvbnRleHQ7XG4gICAgaWYgKCFydW50aW1lQ29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW50aW1lIGNvbnRleHQgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bnRpbWVDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxDb25maWd1cmVQcmljZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlU25hcHNob3QoKTogQ29uZmlndXJlUHJpY2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHRTbmFwc2hvdCgpOiBDb25maWd1cmF0aW9uQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb250ZXh0JCgpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlcyQoKTogT2JzZXJ2YWJsZTxEaWN0aW9uYXJ5PENoYXJnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGU/LmNoYXJnZXMgPz8ge30pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmdlc1NuYXBzaG90KCk6IERpY3Rpb25hcnk8Q2hhcmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5jaGFyZ2VzID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBwcmljZVBsYW5zJCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8Q29tcGlsZWRQcmljZVBsYW4+PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlPy5wcmljZVBsYW5zID8/IHt9KSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByaWNlUGxhbnNTbmFwc2hvdCgpOiBEaWN0aW9uYXJ5PENvbXBpbGVkUHJpY2VQbGFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5wcmljZVBsYW5zID8/IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9jZWR1cmVDb250ZXh0JCgpOiBPYnNlcnZhYmxlPERpY3Rpb25hcnk8dW5rbm93bj4+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUucGlwZShtYXAoc3RhdGUgPT4gc3RhdGU/LnByb2NlZHVyZUNvbnRleHQgPz8ge30pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvY2VkdXJlQ29udGV4dFNuYXBzaG90KCk6IERpY3Rpb25hcnk8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS52YWx1ZT8ucHJvY2VkdXJlQ29udGV4dCA/PyB7fTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmUoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZVJlcXVlc3QkKHRoaXMuZ2VuZXJhdGVSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVJlcXVlc3QkKGNvbmZpZ3VyYXRpb25SZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCk6IE9ic2VydmFibGU8TGluZUl0ZW0+IHtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMuZ2V0UnVudGltZUNvbnRleHQoKTtcbiAgICBjb25zdCBydW50aW1lTW9kZWwgPSB0aGlzLmdldFJ1bnRpbWVNb2RlbCgpO1xuICAgIGNvbnN0IHVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSB0aGlzLmdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMoKTtcblxuICAgIGNvbnN0IG1haW5QcmljaW5nRW5hYmxlZCA9IHJ1bnRpbWVDb250ZXh0LnByb3BlcnRpZXM/LlByaWNpbmdFbmFibGVkO1xuICAgIGNvbnN0IHByaWNpbmdFbmFibGVkID0gbWFpblByaWNpbmdFbmFibGVkID8gbWFpblByaWNpbmdFbmFibGVkID09PSAndHJ1ZScgOiB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnByaWNpbmdFbmFibGVkO1xuICAgIGNvbnN0IGN1c3RvbVByaWNlQXBpID0gdGhpcy5ydW50aW1lU2V0dGluZ3MuZ2V0Q29uZmlndXJhdGlvblNldHRpbmdzKClbJ0NVU1RPTV9QUklDRV9BUEknXTtcblxuICAgIHRoaXMuaXNMb2FkaW5nU3ViaiQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZSQgPVxuICAgICAgcHJpY2luZ0VuYWJsZWQgJiYgY3VzdG9tUHJpY2VBcGlcbiAgICAgICAgPyB0aGlzLmNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLmN1c3RvbUNvbmZpZ3VyZVByaWNlKHsgdXJsOiBjdXN0b21QcmljZUFwaSwgY29uZmlndXJhdGlvblJlcXVlc3QsIHJ1bnRpbWVNb2RlbCB9KVxuICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbkFwaVNlcnZpY2UuY29uZmlndXJlTGluZUl0ZW0oe1xuICAgICAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3QsXG4gICAgICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgICAgICBwcmljaW5nRW5hYmxlZCxcbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBjb25maWd1cmUkLnBpcGUoXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUocmVzdWx0LmNvbnRleHQpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS5uZXh0KHJlc3VsdCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5kZWxldGVkTGluZUl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnNob3dJbmFjdGl2ZVByb2R1Y3RzQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZ3VyYWJsZVJhbXAgPSByZXN1bHQubGluZUl0ZW07XG4gICAgICB9KSxcbiAgICAgIG1hcCgoeyBsaW5lSXRlbSB9KSA9PiBsaW5lSXRlbSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGVycm9yLm1lc3NhZ2UgfHwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKSkpLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTxMaW5lSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVTZXJ2aWNlXG4gICAgICAuaW5pdCh7IHByb2R1Y3RJZDogcHJvcHMucHJvZHVjdElkLCBkZWZhdWx0UXR5OiBwcm9wcy5xdHksIGF0dHJpYnV0ZXNNYXA6IHByb3BzLmF0dHJpYnV0ZXNNYXAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmUoKSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnJlc2V0KCkpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVHdWlkZWRTZWxsaW5nJChkYXRhOiBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSk6IE9ic2VydmFibGU8Q29uZmlndXJlUHJpY2U+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uQXBpU2VydmljZVxuICAgICAgLmNvbmZpZ3VyZUxpbmVJdGVtKHtcbiAgICAgICAgY29uZmlndXJhdGlvblJlcXVlc3Q6IGdldEd1aWRlZFNlbGxpbmdDb25maWd1cmF0aW9uUmVxdWVzdChkYXRhLCB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSksXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IGVycm9yLmVycm9yLm1lc3NhZ2UgfHwgZXJyb3IuZXJyb3IgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVSZXF1ZXN0KGxpZ2h0TW9kZTogYm9vbGVhbiA9IHRydWUpOiBDb25maWd1cmF0aW9uUmVxdWVzdCB7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmdlbmVyYXRlTGluZUl0ZW0oKTtcblxuICAgIGxldCByZXF1ZXN0OiBDb25maWd1cmF0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGxpbmVJdGVtLFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgc3RlcDogIXRoaXMuY29uZmlndXJhdGlvblN0YXRlLnZhbHVlPy5saW5lSXRlbSA/IFJ1bnRpbWVTdGVwLlNUQVJUIDogUnVudGltZVN0ZXAuVVBEQVRFLFxuICAgICAgYXR0cmlidXRlRG9tYWluTW9kZTogJ0FMTCcsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSxcbiAgICAgIGxpbmVJdGVtczogdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgfHwgW10sXG4gICAgICBhc3NldDogdGhpcy5nZXRBc3NldCgpLFxuICAgIH07XG5cbiAgICBpZiAobGlnaHRNb2RlKSB7XG4gICAgICByZXF1ZXN0ID0gQ29uZmlndXJhdGlvblRyYW5zbGF0b3JVdGlscy5saWdodGVuQ29uZmlndXJhdGlvblJlcXVlc3QocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVMaW5lSXRlbSgpOiBMaW5lSXRlbSB7XG4gICAgY29uc3QgcnVudGltZUNvbnRleHQgPSB0aGlzLmdldFJ1bnRpbWVDb250ZXh0KCk7XG4gICAgY29uc3QgdWlEZWZpbml0aW9uUHJvcGVydGllcyA9IHRoaXMuZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpO1xuXG4gICAgbGV0IGxpbmVJdGVtID0gY2xvbmVEZWVwKHRoaXMuY29uZmlndXJhYmxlUmFtcCk7XG4gICAgaWYgKCFsaW5lSXRlbSkge1xuICAgICAgY29uc3QgeyBpbml0aWFsaXphdGlvblByb3BzIH0gPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlID8/IHt9O1xuXG4gICAgICBsaW5lSXRlbSA9IGdldERlZmF1bHRMaW5lSXRlbShydW50aW1lQ29udGV4dCwgdWlEZWZpbml0aW9uUHJvcGVydGllcywgaW5pdGlhbGl6YXRpb25Qcm9wcz8uZGVmYXVsdFF0eSk7XG5cbiAgICAgIC8vIFNldCBkZWZhdWx0IGF0dHJpYnV0ZXNcbiAgICAgIGlmIChpbml0aWFsaXphdGlvblByb3BzPy5hdHRyaWJ1dGVzTWFwKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0cmFuc2Zvcm0oXG4gICAgICAgICAgaW5pdGlhbGl6YXRpb25Qcm9wcz8uYXR0cmlidXRlc01hcCxcbiAgICAgICAgICAoYWNjOiBOZXdBdHRyaWJ1dGVbXSwgdmFsdWUsIG5hbWUpID0+IGFjYy5wdXNoKHsgbmFtZSwgdmFsdWUgfSksXG4gICAgICAgICAgW10sXG4gICAgICAgICk7XG5cbiAgICAgICAgbGluZUl0ZW0gPSBuZXcgTGluZUl0ZW1Xb3JrZXIobGluZUl0ZW0pLnBhdGNoQXR0cmlidXRlKGF0dHJpYnV0ZXMpLmxpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lSXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBc3NldCgpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmNvbmZpZ3VyYWJsZVJhbXA7XG4gICAgaWYgKCFsaW5lSXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0SWQgPSBsaW5lSXRlbS5hc3NldElkID8/IGxpbmVJdGVtLm9wZW5PcmRlckxpbmVJdGVtSWQ7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYXNzZXRzU3RhdGU/LmluaXRpYWxTdGF0ZS5maW5kKGxpID0+IGFzc2V0UHJlZGljYXRlRm4obGksIGFzc2V0SWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcygpOiBVSURlZmluaXRpb25Qcm9wcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLih0aGlzLmdldFJ1bnRpbWVDb250ZXh0KCkudWlEZWZpbml0aW9uQ29udGFpbmVyPy5zb3VyY2UucHJvcGVydGllcyA/PyB7fSksXG4gICAgICAuLi4odGhpcy5ydW50aW1lU2VydmljZS51aURlZmluaXRpb25Qcm9wZXJ0aWVzID8/IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93SW5hY3RpdmVQcm9kdWN0c0NvbmZpcm1hdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maXJtYXRpb25Db25maWc6IENvbmZpcm1hdGlvbkNvbmZpZyA9IHtcbiAgICAgIHRpdGxlOiAnICcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgcXVvdGUgY29udGFpbnMgaW5hY3RpdmUgcHJvZHVjdHMuIERvIHlvdSB3YW50IHRvIHJlbW92ZSB0aGVtPycsXG4gICAgICBwcmltYXJ5QnV0dG9uTGFiZWw6ICdSZW1vdmUgcHJvZHVjdHMnLFxuICAgICAgc2Vjb25kYXJ5QnV0dG9uTGFiZWw6ICdCYWNrIHRvIFF1b3RlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXG4gICAgICAub3BlbihDb25maXJtYXRpb25Db21wb25lbnQsIHtcbiAgICAgICAgZGlzbWlzc2FibGVNYXNrOiBmYWxzZSxcbiAgICAgICAgY2xvc2VPbkVzY2FwZTogZmFsc2UsXG4gICAgICAgIGNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgc2hvd0hlYWRlcjogdHJ1ZSxcbiAgICAgICAgaGVhZGVyOiBgSW5hY3RpdmUgUHJvZHVjdHMgaW4gUXVvdGVgLFxuICAgICAgICB3aWR0aDogJzQ0MHB4JyxcbiAgICAgICAgZGF0YTogeyBjb25maXJtYXRpb25Db25maWcgfSxcbiAgICAgIH0pXG4gICAgICAub25DbG9zZS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgICAgICAgd2luZG93WydWRUxPX0JBQ0tfRk4nXS5hcHBseShudWxsLCBbY29udGV4dC5oZWFkZXJJZF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ConfigurationApiService } from '@veloceapps/api';
3
- import { RuntimeModel, getUIDefinitionProperties, isLegacyUIDefinition, } from '@veloceapps/core';
3
+ import { isNotLegacyUIDefinition, RuntimeModel } from '@veloceapps/core';
4
4
  import { map } from 'rxjs/operators';
5
5
  import { RuntimeMode } from '../../../types';
6
6
  import * as i0 from "@angular/core";
@@ -14,7 +14,7 @@ export class RuntimeContextService {
14
14
  const uiDefinitionContainer = this.getUIDefinitionContainer(runtimeData);
15
15
  const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);
16
16
  const { productName, properties } = Array.from(runtimeModel.components.values()).find(c => c.productId === productId) ?? {};
17
- const uiDefinitionProperties = getUIDefinitionProperties(uiDefinitionContainer);
17
+ const uiDefinitionProperties = uiDefinitionContainer?.source.properties;
18
18
  return {
19
19
  modelId: runtimeData.modelId,
20
20
  uiDefinitionContainer: uiDefinitionContainer,
@@ -24,14 +24,14 @@ export class RuntimeContextService {
24
24
  productType: properties?.['displayName'] || productName,
25
25
  offeringId: offeringId,
26
26
  properties: {
27
- PricingEnabled: uiDefinitionProperties.pricingEnabled ? 'true' : 'false',
28
- PriceListId: uiDefinitionProperties.priceList,
27
+ PricingEnabled: uiDefinitionProperties?.pricingEnabled ? 'true' : 'false',
28
+ PriceListId: uiDefinitionProperties?.priceList,
29
29
  },
30
30
  };
31
31
  }));
32
32
  }
33
33
  getUIDefinitionContainer(runtimeData) {
34
- const containers = runtimeData.uiDefinitions.filter(container => !isLegacyUIDefinition(container.source));
34
+ const containers = runtimeData.uiDefinitions.filter(container => isNotLegacyUIDefinition(container.source));
35
35
  return containers.find(container => container.source.primary) ?? containers[0];
36
36
  }
37
37
  }
@@ -40,4 +40,4 @@ RuntimeContextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeContextService, decorators: [{
41
41
  type: Injectable
42
42
  }], ctorParameters: function () { return [{ type: i1.ConfigurationApiService }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9ydW50aW1lLWNvbnRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFFTCxZQUFZLEVBRVoseUJBQXlCLEVBQ3pCLG9CQUFvQixHQUNyQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHN0QsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtJQUFHLENBQUM7SUFFakUsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxVQUFtQjtRQUM3RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUN2RixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekUsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRixNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUxRixNQUFNLHNCQUFzQixHQUFHLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFFaEYsT0FBTztnQkFDTCxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87Z0JBQzVCLHFCQUFxQixFQUFFLHFCQUFxQjtnQkFDNUMsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSTtnQkFDN0IsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxXQUFXO2dCQUN2RCxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsVUFBVSxFQUFFO29CQUNWLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDeEUsV0FBVyxFQUFFLHNCQUFzQixDQUFDLFNBQVM7aUJBQzlDO2FBQ3VCLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxXQUF3QjtRQUN2RCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUcsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQzs7a0hBakNVLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQge1xuICBSdW50aW1lRGF0YSxcbiAgUnVudGltZU1vZGVsLFxuICBVSURlZmluaXRpb25Db250YWluZXIsXG4gIGdldFVJRGVmaW5pdGlvblByb3BlcnRpZXMsXG4gIGlzTGVnYWN5VUlEZWZpbml0aW9uLFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJ1bnRpbWVDb250ZXh0LCBSdW50aW1lTW9kZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb250ZXh0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlndXJhdGlvbkFwaVNlcnZpY2U6IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBnZXRSdW50aW1lQ29udGV4dChwcm9kdWN0SWQ6IHN0cmluZywgb2ZmZXJpbmdJZD86IHN0cmluZyk6IE9ic2VydmFibGU8UnVudGltZUNvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uQXBpU2VydmljZS5nZXRSdW50aW1lRGF0YUJ5UHJvZHVjdElkKHByb2R1Y3RJZCwgb2ZmZXJpbmdJZCkucGlwZShcbiAgICAgIG1hcChydW50aW1lRGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHVpRGVmaW5pdGlvbkNvbnRhaW5lciA9IHRoaXMuZ2V0VUlEZWZpbml0aW9uQ29udGFpbmVyKHJ1bnRpbWVEYXRhKTtcbiAgICAgICAgY29uc3QgcnVudGltZU1vZGVsID0gUnVudGltZU1vZGVsLmNyZWF0ZShydW50aW1lRGF0YS50eXBlcywgcnVudGltZURhdGEucHJvZHVjdHMpO1xuICAgICAgICBjb25zdCB7IHByb2R1Y3ROYW1lLCBwcm9wZXJ0aWVzIH0gPVxuICAgICAgICAgIEFycmF5LmZyb20ocnVudGltZU1vZGVsLmNvbXBvbmVudHMudmFsdWVzKCkpLmZpbmQoYyA9PiBjLnByb2R1Y3RJZCA9PT0gcHJvZHVjdElkKSA/PyB7fTtcblxuICAgICAgICBjb25zdCB1aURlZmluaXRpb25Qcm9wZXJ0aWVzID0gZ2V0VUlEZWZpbml0aW9uUHJvcGVydGllcyh1aURlZmluaXRpb25Db250YWluZXIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbW9kZWxJZDogcnVudGltZURhdGEubW9kZWxJZCxcbiAgICAgICAgICB1aURlZmluaXRpb25Db250YWluZXI6IHVpRGVmaW5pdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICBydW50aW1lTW9kZWw6IHJ1bnRpbWVNb2RlbCxcbiAgICAgICAgICBydW50aW1lTW9kZTogUnVudGltZU1vZGUuUFJPRCxcbiAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3RJZCxcbiAgICAgICAgICBwcm9kdWN0VHlwZTogcHJvcGVydGllcz8uWydkaXNwbGF5TmFtZSddIHx8IHByb2R1Y3ROYW1lLFxuICAgICAgICAgIG9mZmVyaW5nSWQ6IG9mZmVyaW5nSWQsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgUHJpY2luZ0VuYWJsZWQ6IHVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2luZ0VuYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAgICAgUHJpY2VMaXN0SWQ6IHVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2VMaXN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gc2F0aXNmaWVzIFJ1bnRpbWVDb250ZXh0O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VUlEZWZpbml0aW9uQ29udGFpbmVyKHJ1bnRpbWVEYXRhOiBSdW50aW1lRGF0YSk6IFVJRGVmaW5pdGlvbkNvbnRhaW5lciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29udGFpbmVycyA9IHJ1bnRpbWVEYXRhLnVpRGVmaW5pdGlvbnMuZmlsdGVyKGNvbnRhaW5lciA9PiAhaXNMZWdhY3lVSURlZmluaXRpb24oY29udGFpbmVyLnNvdXJjZSkpO1xuICAgIHJldHVybiBjb250YWluZXJzLmZpbmQoY29udGFpbmVyID0+IGNvbnRhaW5lci5zb3VyY2UucHJpbWFyeSkgPz8gY29udGFpbmVyc1swXTtcbiAgfVxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL21vZHVsZXMvY29uZmlndXJhdGlvbi9zZXJ2aWNlcy9ydW50aW1lLWNvbnRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBZSxZQUFZLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFFN0csT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUc3RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLHVCQUFnRDtRQUFoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO0lBQUcsQ0FBQztJQUVqRSxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLFVBQW1CO1FBQzdELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ3ZGLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6RSxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTFGLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUV4RSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztnQkFDNUIscUJBQXFCLEVBQUUscUJBQXFCO2dCQUM1QyxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxJQUFJO2dCQUM3QixTQUFTLEVBQUUsU0FBUztnQkFDcEIsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVc7Z0JBQ3ZELFVBQVUsRUFBRSxVQUFVO2dCQUN0QixVQUFVLEVBQUU7b0JBQ1YsY0FBYyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPO29CQUN6RSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsU0FBUztpQkFDL0M7YUFDdUIsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQXdCO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDNUcsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQzs7a0hBakNVLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBpc05vdExlZ2FjeVVJRGVmaW5pdGlvbiwgUnVudGltZURhdGEsIFJ1bnRpbWVNb2RlbCwgVUlEZWZpbml0aW9uQ29udGFpbmVyIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSdW50aW1lQ29udGV4dCwgUnVudGltZU1vZGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29udGV4dFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlOiBDb25maWd1cmF0aW9uQXBpU2VydmljZSkge31cblxuICBwdWJsaWMgZ2V0UnVudGltZUNvbnRleHQocHJvZHVjdElkOiBzdHJpbmcsIG9mZmVyaW5nSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJ1bnRpbWVDb250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkFwaVNlcnZpY2UuZ2V0UnVudGltZURhdGFCeVByb2R1Y3RJZChwcm9kdWN0SWQsIG9mZmVyaW5nSWQpLnBpcGUoXG4gICAgICBtYXAocnVudGltZURhdGEgPT4ge1xuICAgICAgICBjb25zdCB1aURlZmluaXRpb25Db250YWluZXIgPSB0aGlzLmdldFVJRGVmaW5pdGlvbkNvbnRhaW5lcihydW50aW1lRGF0YSk7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVNb2RlbCA9IFJ1bnRpbWVNb2RlbC5jcmVhdGUocnVudGltZURhdGEudHlwZXMsIHJ1bnRpbWVEYXRhLnByb2R1Y3RzKTtcbiAgICAgICAgY29uc3QgeyBwcm9kdWN0TmFtZSwgcHJvcGVydGllcyB9ID1cbiAgICAgICAgICBBcnJheS5mcm9tKHJ1bnRpbWVNb2RlbC5jb21wb25lbnRzLnZhbHVlcygpKS5maW5kKGMgPT4gYy5wcm9kdWN0SWQgPT09IHByb2R1Y3RJZCkgPz8ge307XG5cbiAgICAgICAgY29uc3QgdWlEZWZpbml0aW9uUHJvcGVydGllcyA9IHVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlLnByb3BlcnRpZXM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtb2RlbElkOiBydW50aW1lRGF0YS5tb2RlbElkLFxuICAgICAgICAgIHVpRGVmaW5pdGlvbkNvbnRhaW5lcjogdWlEZWZpbml0aW9uQ29udGFpbmVyLFxuICAgICAgICAgIHJ1bnRpbWVNb2RlbDogcnVudGltZU1vZGVsLFxuICAgICAgICAgIHJ1bnRpbWVNb2RlOiBSdW50aW1lTW9kZS5QUk9ELFxuICAgICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdElkLFxuICAgICAgICAgIHByb2R1Y3RUeXBlOiBwcm9wZXJ0aWVzPy5bJ2Rpc3BsYXlOYW1lJ10gfHwgcHJvZHVjdE5hbWUsXG4gICAgICAgICAgb2ZmZXJpbmdJZDogb2ZmZXJpbmdJZCxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBQcmljaW5nRW5hYmxlZDogdWlEZWZpbml0aW9uUHJvcGVydGllcz8ucHJpY2luZ0VuYWJsZWQgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICAgICAgUHJpY2VMaXN0SWQ6IHVpRGVmaW5pdGlvblByb3BlcnRpZXM/LnByaWNlTGlzdCxcbiAgICAgICAgICB9LFxuICAgICAgICB9IHNhdGlzZmllcyBSdW50aW1lQ29udGV4dDtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVJRGVmaW5pdGlvbkNvbnRhaW5lcihydW50aW1lRGF0YTogUnVudGltZURhdGEpOiBVSURlZmluaXRpb25Db250YWluZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBydW50aW1lRGF0YS51aURlZmluaXRpb25zLmZpbHRlcihjb250YWluZXIgPT4gaXNOb3RMZWdhY3lVSURlZmluaXRpb24oY29udGFpbmVyLnNvdXJjZSkpO1xuICAgIHJldHVybiBjb250YWluZXJzLmZpbmQoY29udGFpbmVyID0+IGNvbnRhaW5lci5zb3VyY2UucHJpbWFyeSkgPz8gY29udGFpbmVyc1swXTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgR3VpZGVkU2VsbGluZ1N1Ym1pdERhdGEge1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIG1vZGVsVHlwZTogc3RyaW5nO1xuICBhdHRyaWJ1dGVzTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzIHtcbiAgcHJvZHVjdElkOiBzdHJpbmc7XG4gIHF0eT86IG51bWJlcjtcbiAgYXR0cmlidXRlc01hcD86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgbW9kZWxUeXBlOiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXNNYXA6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxDb25maWd1cmF0aW9uUHJvcHMge1xuICBwcm9kdWN0SWQ6IHN0cmluZztcbiAgcXR5PzogbnVtYmVyO1xuICBhdHRyaWJ1dGVzTWFwPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdDb25maWd1cmF0aW9uUHJvcHMgZXh0ZW5kcyBFeHRlcm5hbENvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIHByb2R1Y3Q6IFByb2R1Y3Q7XG59XG4iXX0=
@@ -1,18 +1,18 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { PriceApiService } from '@veloceapps/api';
2
+ import { ApiModule } from '@veloceapps/api';
3
3
  import { FlowConfigurationService } from './services/flow-configuration.service';
4
4
  import { FlowUpdateService } from './services/flow-update.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export class FlowConfigurationModule {
7
7
  }
8
8
  FlowConfigurationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- FlowConfigurationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationModule });
10
- FlowConfigurationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationModule, providers: [FlowConfigurationService, FlowUpdateService, PriceApiService] });
9
+ FlowConfigurationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationModule, imports: [ApiModule] });
10
+ FlowConfigurationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationModule, providers: [FlowConfigurationService, FlowUpdateService], imports: [ApiModule] });
11
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowConfigurationModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
- imports: [],
15
- providers: [FlowConfigurationService, FlowUpdateService, PriceApiService],
14
+ imports: [ApiModule],
15
+ providers: [FlowConfigurationService, FlowUpdateService],
16
16
  }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCO3FIQUF2Qix1QkFBdUIsYUFGdkIsQ0FBQyx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLENBQUM7MkZBRTlELHVCQUF1QjtrQkFKbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLENBQUM7aUJBQzFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaWNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dVcGRhdGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mbG93LXVwZGF0ZS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIHByb3ZpZGVyczogW0Zsb3dDb25maWd1cmF0aW9uU2VydmljZSwgRmxvd1VwZGF0ZVNlcnZpY2UsIFByaWNlQXBpU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dDb25maWd1cmF0aW9uTW9kdWxlIHt9XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24vZmxvdy1jb25maWd1cmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLFlBSHhCLFNBQVM7cUhBR1IsdUJBQXVCLGFBRnZCLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLENBQUMsWUFEOUMsU0FBUzsyRkFHUix1QkFBdUI7a0JBSm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUNwQixTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxpQkFBaUIsQ0FBQztpQkFDekQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBpTW9kdWxlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1VwZGF0ZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Zsb3ctdXBkYXRlLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQXBpTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBGbG93VXBkYXRlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dDb25maWd1cmF0aW9uTW9kdWxlIHt9XG4iXX0=