@veloceapps/sdk 8.0.0-8 → 8.0.0-80

Sign up to get free protection for your applications and to get access to all the features.
Files changed (239) hide show
  1. package/README.md +0 -1
  2. package/cms/utils/element.utils.d.ts +1 -0
  3. package/cms/vendor-map.d.ts +2 -1
  4. package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -1
  5. package/core/modules/configuration/services/configuration.service.d.ts +6 -1
  6. package/core/modules/flow-configuration/types/update.types.d.ts +1 -1
  7. package/core/pipes/action-code.pipe.d.ts +8 -0
  8. package/core/pipes/index.d.ts +1 -0
  9. package/core/pipes/pipes.module.d.ts +2 -1
  10. package/core/services/context.service.d.ts +1 -0
  11. package/core/services/runtime-settings.service.d.ts +4 -1
  12. package/core/types/formatting-settings.types.d.ts +2 -0
  13. package/esm2020/cms/components/element-children/element-children.component.mjs +3 -3
  14. package/esm2020/cms/components/element-children/element-children.module.mjs +4 -4
  15. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +3 -3
  16. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +4 -4
  17. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +3 -3
  18. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +4 -4
  19. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +5 -5
  20. package/esm2020/cms/components/plugin.component.mjs +3 -3
  21. package/esm2020/cms/components/preview/preview.component.mjs +3 -3
  22. package/esm2020/cms/components/preview/preview.module.mjs +4 -4
  23. package/esm2020/cms/directives/custom-template.directive.mjs +7 -7
  24. package/esm2020/cms/launcher.module.mjs +4 -4
  25. package/esm2020/cms/modules/federated/federated-host.directive.mjs +3 -3
  26. package/esm2020/cms/modules/federated/federated.component.mjs +3 -3
  27. package/esm2020/cms/modules/federated/federated.module.mjs +4 -4
  28. package/esm2020/cms/modules/migrations/migrations.module.mjs +4 -4
  29. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +3 -3
  30. package/esm2020/cms/modules/runtime/runtime.module.mjs +4 -4
  31. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +3 -3
  32. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +3 -3
  33. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +3 -3
  34. package/esm2020/cms/plugins/configuration.plugin.mjs +3 -3
  35. package/esm2020/cms/plugins/element-hover.plugin.mjs +3 -3
  36. package/esm2020/cms/plugins/io.plugin.mjs +8 -7
  37. package/esm2020/cms/plugins/page.plugin.mjs +3 -3
  38. package/esm2020/cms/plugins/region.plugin.mjs +3 -3
  39. package/esm2020/cms/plugins/script.plugin.mjs +3 -3
  40. package/esm2020/cms/services/element-context.service.mjs +3 -3
  41. package/esm2020/cms/services/integration.state.mjs +3 -3
  42. package/esm2020/cms/services/io-provider.service.mjs +3 -3
  43. package/esm2020/cms/services/resources.service.mjs +3 -3
  44. package/esm2020/cms/services/templates.service.mjs +3 -3
  45. package/esm2020/cms/utils/element.utils.mjs +10 -3
  46. package/esm2020/cms/utils/elements-resolver.mjs +2 -2
  47. package/esm2020/cms/vendor-map.mjs +3 -2
  48. package/esm2020/core/core.module.mjs +7 -6
  49. package/esm2020/core/directives/directives.module.mjs +4 -4
  50. package/esm2020/core/directives/primeng-calendar.directive.mjs +3 -3
  51. package/esm2020/core/modules/configuration/configuration.module.mjs +4 -4
  52. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +11 -14
  53. package/esm2020/core/modules/configuration/services/configuration.service.mjs +28 -9
  54. package/esm2020/core/modules/configuration/services/configuration.state.mjs +3 -3
  55. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +9 -9
  56. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +4 -4
  57. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +3 -3
  58. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +7 -14
  59. package/esm2020/core/modules/flow-configuration/types/update.types.mjs +1 -1
  60. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  61. package/esm2020/core/pipes/date.pipe.mjs +3 -3
  62. package/esm2020/core/pipes/index.mjs +2 -1
  63. package/esm2020/core/pipes/number.pipe.mjs +3 -3
  64. package/esm2020/core/pipes/pipes.module.mjs +8 -7
  65. package/esm2020/core/pipes/price.pipe.mjs +3 -3
  66. package/esm2020/core/services/context.service.mjs +17 -5
  67. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +3 -3
  68. package/esm2020/core/services/product-images.service.mjs +3 -3
  69. package/esm2020/core/services/quote-draft.service.mjs +3 -3
  70. package/esm2020/core/services/runtime-settings.service.mjs +20 -5
  71. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  72. package/esm2020/src/components/dialog/dialog.component.mjs +3 -3
  73. package/esm2020/src/components/dialog/dialog.module.mjs +4 -4
  74. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +11 -15
  75. package/esm2020/src/components/doc-gen/doc-gen.module.mjs +4 -4
  76. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +10 -13
  77. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +4 -4
  78. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +3 -3
  79. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +4 -4
  80. package/esm2020/src/components/header/header.component.mjs +4 -4
  81. package/esm2020/src/components/header/header.module.mjs +4 -4
  82. package/esm2020/src/components/header/metrics/metrics.component.mjs +4 -4
  83. package/esm2020/src/components/header/metrics/metrics.module.mjs +4 -4
  84. package/esm2020/src/flow-routing.module.mjs +5 -22
  85. package/esm2020/src/flow.component.mjs +3 -3
  86. package/esm2020/src/flow.module.mjs +4 -4
  87. package/esm2020/src/guards/context.guard.mjs +3 -3
  88. package/esm2020/src/guards/product-unload.guard.mjs +7 -4
  89. package/esm2020/src/guards/root.guard.mjs +3 -3
  90. package/esm2020/src/pages/assets/assets.component.mjs +3 -3
  91. package/esm2020/src/pages/assets/assets.module.mjs +4 -4
  92. package/esm2020/src/pages/catalog/catalog.component.mjs +3 -3
  93. package/esm2020/src/pages/catalog/catalog.module.mjs +4 -4
  94. package/esm2020/src/pages/debug/debug.component.mjs +3 -3
  95. package/esm2020/src/pages/debug/debug.module.mjs +4 -4
  96. package/esm2020/src/pages/empty-account/empty-account.component.mjs +3 -3
  97. package/esm2020/src/pages/empty-account/empty-account.module.mjs +4 -4
  98. package/esm2020/src/pages/product/product.component.mjs +5 -6
  99. package/esm2020/src/pages/product/product.module.mjs +4 -4
  100. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +3 -3
  101. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +4 -4
  102. package/esm2020/src/pages/remote/remote.component.mjs +8 -9
  103. package/esm2020/src/pages/remote/remote.module.mjs +4 -4
  104. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +3 -3
  105. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +4 -4
  106. package/esm2020/src/resolvers/flow.resolver.mjs +3 -3
  107. package/esm2020/src/resolvers/quote.resolver.mjs +3 -3
  108. package/esm2020/src/services/doc-gen.service.mjs +3 -3
  109. package/esm2020/src/services/flow-dialog.service.mjs +3 -3
  110. package/esm2020/src/services/flow-router.service.mjs +5 -5
  111. package/esm2020/src/services/flow.service.mjs +13 -5
  112. package/esm2020/src/services/guided-selling.service.mjs +3 -3
  113. package/fesm2015/veloceapps-sdk-cms.mjs +123 -114
  114. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  115. package/fesm2015/veloceapps-sdk-core.mjs +1053 -1000
  116. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  117. package/fesm2015/veloceapps-sdk.mjs +221 -364
  118. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  119. package/fesm2020/veloceapps-sdk-cms.mjs +123 -114
  120. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  121. package/fesm2020/veloceapps-sdk-core.mjs +578 -527
  122. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  123. package/fesm2020/veloceapps-sdk.mjs +218 -365
  124. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  125. package/package.json +3 -11
  126. package/src/components/doc-gen/doc-gen.component.d.ts +3 -6
  127. package/src/components/guided-selling/guided-selling.component.d.ts +2 -4
  128. package/src/flow-routing.module.d.ts +6 -7
  129. package/src/guards/product-unload.guard.d.ts +2 -2
  130. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  131. package/esm2020/runtime/components/index.mjs +0 -5
  132. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  133. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  134. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  135. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  136. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  137. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  138. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  139. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  140. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  141. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  142. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  143. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  144. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  145. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  146. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  147. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  148. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  149. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  150. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  151. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  152. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  153. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  154. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  155. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  156. package/esm2020/runtime/index.mjs +0 -5
  157. package/esm2020/runtime/runtime.module.mjs +0 -74
  158. package/esm2020/runtime/services/cart.service.mjs +0 -29
  159. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  160. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  161. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  162. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  163. package/esm2020/runtime/services/index.mjs +0 -4
  164. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  165. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  166. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  167. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  168. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  169. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  170. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  171. package/esm2020/runtime/services/section.service.mjs +0 -117
  172. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  173. package/esm2020/runtime/types/index.mjs +0 -3
  174. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  175. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  176. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  177. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  178. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  179. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  180. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  181. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  182. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  183. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  184. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  185. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  186. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  187. package/runtime/README.md +0 -5
  188. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  189. package/runtime/components/index.d.ts +0 -4
  190. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  191. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  192. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  193. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  194. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  195. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  196. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  197. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  198. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  199. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  200. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  201. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  202. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  203. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  204. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  205. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  206. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  207. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  208. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  209. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  210. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  211. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  212. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  213. package/runtime/execution/utils/federated.util.d.ts +0 -6
  214. package/runtime/index.d.ts +0 -4
  215. package/runtime/runtime.module.d.ts +0 -16
  216. package/runtime/services/cart.service.d.ts +0 -15
  217. package/runtime/services/collapsible-state.service.d.ts +0 -15
  218. package/runtime/services/configuration.service.d.ts +0 -20
  219. package/runtime/services/current-state.service.d.ts +0 -8
  220. package/runtime/services/form-scope.service.d.ts +0 -20
  221. package/runtime/services/index.d.ts +0 -3
  222. package/runtime/services/product-model-cache.service.d.ts +0 -14
  223. package/runtime/services/runtime-context.service.d.ts +0 -16
  224. package/runtime/services/runtime-form.service.d.ts +0 -24
  225. package/runtime/services/runtime.service.d.ts +0 -44
  226. package/runtime/services/section-helper.service.d.ts +0 -8
  227. package/runtime/services/section-scope.service.d.ts +0 -14
  228. package/runtime/services/section-store.service.d.ts +0 -11
  229. package/runtime/services/section.service.d.ts +0 -30
  230. package/runtime/types/bound-data.types.d.ts +0 -13
  231. package/runtime/types/index.d.ts +0 -2
  232. package/runtime/types/quote-states.types.d.ts +0 -6
  233. package/runtime/types/runtime.types.d.ts +0 -19
  234. package/runtime/types/script-registry.types.d.ts +0 -13
  235. package/runtime/utils/line-item.util.d.ts +0 -34
  236. package/runtime/utils/section.utils.d.ts +0 -2
  237. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  238. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  239. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
@@ -1,105 +0,0 @@
1
- import { EntityUtil, SectionPathUtil, UUID } from '@veloceapps/core';
2
- import { BoundDataType } from '../types/bound-data.types';
3
- import { LineItemUtil } from './line-item.util';
4
- export class SectionsBinderHelper {
5
- static setLineItemsPath(runtimeModel, rootLineItem, sections, sourceSections, filterFn, pricingEnabled) {
6
- const filtered = sections.filter(filterFn);
7
- filtered.forEach(section => {
8
- const path = section.boundData.path;
9
- let foundLineItems;
10
- if (path.relative) {
11
- foundLineItems = LineItemUtil.findLineItemsByType(runtimeModel, rootLineItem, path.types[0]);
12
- }
13
- else {
14
- const remainder = rootLineItem.path ? SectionPathUtil.cut(runtimeModel, path, rootLineItem.path) : undefined;
15
- if (!remainder) {
16
- return [];
17
- }
18
- foundLineItems = LineItemUtil.findLineItemsByPath(runtimeModel, rootLineItem, remainder);
19
- }
20
- if (section.boundData.entityType === BoundDataType[BoundDataType.TYPE]) {
21
- SectionsBinderHelper.bindMatchingLineItems(runtimeModel, foundLineItems, section, sections, sourceSections, pricingEnabled);
22
- }
23
- else if (section.boundData.entityType === BoundDataType[BoundDataType.ATTRIBUTE]) {
24
- foundLineItems = foundLineItems.filter(item => item.attributes &&
25
- item.attributes.findIndex(a => a.name.toLowerCase() === section.boundData.name.toLowerCase()) !== -1);
26
- foundLineItems.forEach(lineItem => {
27
- SectionsBinderHelper.bindLineItem(section, sections, sourceSections, lineItem, pricingEnabled);
28
- });
29
- }
30
- else if (section.boundData.entityType === BoundDataType[BoundDataType.PORT]) {
31
- foundLineItems = foundLineItems.filter(item => item.portDomains && item.portDomains[section.boundData.name]);
32
- SectionsBinderHelper.bindMatchingLineItems(runtimeModel, foundLineItems, section, sections, sourceSections, pricingEnabled);
33
- }
34
- return;
35
- });
36
- return sections;
37
- }
38
- static isAddAllowed(model, portName, quantityToAdd = 1) {
39
- const quantity = this.getQuantity(model, portName);
40
- return quantity + quantityToAdd <= +this.getPortMax(model, portName);
41
- }
42
- static isRemoveAllowed(model, portName, quantityToRemove = 1) {
43
- const quantity = this.getQuantity(model, portName);
44
- return quantity - quantityToRemove >= +this.getPortMin(model, portName);
45
- }
46
- static getMaxAllowed(lineItem, portName) {
47
- return +this.getPortMax(lineItem, portName) - this.getQuantity(lineItem, portName);
48
- }
49
- static getQuantityGroupByValue(model, portName) {
50
- const quantities = {};
51
- if (model && portName) {
52
- model.lineItems
53
- .filter(li => li.port === portName)
54
- .forEach(li => {
55
- let quantity = (EntityUtil.isPresent(li.qty) && li.qty) || 1;
56
- if (EntityUtil.isPresent(quantities[li.type])) {
57
- quantity += quantities[li.type];
58
- }
59
- quantities[li.type] = quantity;
60
- });
61
- }
62
- return quantities;
63
- }
64
- static bindMatchingLineItems(runtimeModel, foundLineItems, section, sections, sourceSections, pricingEnabled) {
65
- foundLineItems.forEach(lineItem => {
66
- const boundSection = SectionsBinderHelper.bindLineItem(section, sections, sourceSections, lineItem, pricingEnabled);
67
- SectionsBinderHelper.setLineItemsPath(runtimeModel, lineItem, sections, sourceSections, (sec) => {
68
- return sec.boundData && sec.parentId === boundSection.id;
69
- }, pricingEnabled);
70
- });
71
- }
72
- static bindLineItem(section, sections, sourceSections, lineItem, pricingEnabled) {
73
- const boundSection = section.model ? SectionsBinderHelper.doClone(section, sections, sourceSections) : section;
74
- boundSection.model = lineItem;
75
- boundSection.pricingEnabled = pricingEnabled;
76
- return boundSection;
77
- }
78
- static doClone(source, sections, sourceSections, parent) {
79
- const sourceClass = sourceSections.find(s => s.classId === source.classId);
80
- const clone = EntityUtil.clone(sourceClass);
81
- clone.id = UUID.UUID();
82
- clone.parentId = parent ? parent.id : source.parentId;
83
- sections.splice(sections.findIndex(s => s.id === source.id) + 1, 0, clone);
84
- sourceSections
85
- .filter(s => s.parentId === sourceClass.id)
86
- .forEach(s => SectionsBinderHelper.doClone(s, sections, sourceSections, clone));
87
- return clone;
88
- }
89
- static getQuantity(model, portName) {
90
- let quantity = 0;
91
- model.lineItems
92
- .filter(li => li.port === portName)
93
- .forEach(li => {
94
- quantity += li.qty;
95
- });
96
- return quantity;
97
- }
98
- static getPortMax(model, portName) {
99
- return model.portDomains[portName].maxCard;
100
- }
101
- static getPortMin(model, portName) {
102
- return model.portDomains[portName].minCard;
103
- }
104
- }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbnMtYmluZGVyLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvdXRpbHMvc2VjdGlvbnMtYmluZGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFnRCxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsWUFBMEIsRUFDMUIsWUFBc0IsRUFDdEIsUUFBbUIsRUFDbkIsY0FBeUIsRUFDekIsUUFBYSxFQUNiLGNBQXVCO1FBRXZCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0MsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksR0FBZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDakQsSUFBSSxjQUEwQixDQUFDO1lBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsY0FBYyxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5RjtpQkFBTTtnQkFDTCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzdHLElBQUksQ0FBQyxT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LENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxFQUFFLENBQUM7YUFDMUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFbEYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFlLEVBQUUsUUFBZ0I7UUFDMUQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLEtBQUssQ0FBQyxTQUFTO2FBQ1osTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7YUFDbEMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ1osUUFBUSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFlLEVBQUUsUUFBZ0I7UUFDekQsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM3QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFlLEVBQUUsUUFBZ0I7UUFDekQsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlVdGlsLCBMaW5lSXRlbSwgUnVudGltZU1vZGVsLCBTZWN0aW9uLCBTZWN0aW9uUGF0aCwgU2VjdGlvblBhdGhVdGlsLCBVVUlEIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBCb3VuZERhdGFUeXBlIH0gZnJvbSAnLi4vdHlwZXMvYm91bmQtZGF0YS50eXBlcyc7XG5pbXBvcnQgeyBMaW5lSXRlbVV0aWwgfSBmcm9tICcuL2xpbmUtaXRlbS51dGlsJztcblxuZXhwb3J0IGNsYXNzIFNlY3Rpb25zQmluZGVySGVscGVyIHtcbiAgcHVibGljIHN0YXRpYyBzZXRMaW5lSXRlbXNQYXRoKFxuICAgIHJ1bnRpbWVNb2RlbDogUnVudGltZU1vZGVsLFxuICAgIHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sXG4gICAgc2VjdGlvbnM6IFNlY3Rpb25bXSxcbiAgICBzb3VyY2VTZWN0aW9uczogU2VjdGlvbltdLFxuICAgIGZpbHRlckZuOiBhbnksXG4gICAgcHJpY2luZ0VuYWJsZWQ6IGJvb2xlYW4sXG4gICk6IFNlY3Rpb25bXSB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBzZWN0aW9ucy5maWx0ZXIoZmlsdGVyRm4pO1xuXG4gICAgZmlsdGVyZWQuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIGNvbnN0IHBhdGg6IFNlY3Rpb25QYXRoID0gc2VjdGlvbi5ib3VuZERhdGEucGF0aDtcbiAgICAgIGxldCBmb3VuZExpbmVJdGVtczogTGluZUl0ZW1bXTtcbiAgICAgIGlmIChwYXRoLnJlbGF0aXZlKSB7XG4gICAgICAgIGZvdW5kTGluZUl0ZW1zID0gTGluZUl0ZW1VdGlsLmZpbmRMaW5lSXRlbXNCeVR5cGUocnVudGltZU1vZGVsLCByb290TGluZUl0ZW0sIHBhdGgudHlwZXNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVtYWluZGVyID0gcm9vdExpbmVJdGVtLnBhdGggPyBTZWN0aW9uUGF0aFV0aWwuY3V0KHJ1bnRpbWVNb2RlbCwgcGF0aCwgcm9vdExpbmVJdGVtLnBhdGgpIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIXJlbWFpbmRlcikge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3VuZExpbmVJdGVtcyA9IExpbmVJdGVtVXRpbC5maW5kTGluZUl0ZW1zQnlQYXRoKHJ1bnRpbWVNb2RlbCwgcm9vdExpbmVJdGVtLCByZW1haW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VjdGlvbi5ib3VuZERhdGEuZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLlRZUEVdKSB7XG4gICAgICAgIFNlY3Rpb25zQmluZGVySGVscGVyLmJpbmRNYXRjaGluZ0xpbmVJdGVtcyhcbiAgICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgICAgZm91bmRMaW5lSXRlbXMsXG4gICAgICAgICAgc2VjdGlvbixcbiAgICAgICAgICBzZWN0aW9ucyxcbiAgICAgICAgICBzb3VyY2VTZWN0aW9ucyxcbiAgICAgICAgICBwcmljaW5nRW5hYmxlZCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VjdGlvbi5ib3VuZERhdGEuZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLkFUVFJJQlVURV0pIHtcbiAgICAgICAgZm91bmRMaW5lSXRlbXMgPSBmb3VuZExpbmVJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgaXRlbS5hdHRyaWJ1dGVzICYmXG4gICAgICAgICAgICBpdGVtLmF0dHJpYnV0ZXMuZmluZEluZGV4KGEgPT4gYS5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHNlY3Rpb24uYm91bmREYXRhLm5hbWUudG9Mb3dlckNhc2UoKSkgIT09IC0xLFxuICAgICAgICApO1xuXG4gICAgICAgIGZvdW5kTGluZUl0ZW1zLmZvckVhY2gobGluZUl0ZW0gPT4ge1xuICAgICAgICAgIFNlY3Rpb25zQmluZGVySGVscGVyLmJpbmRMaW5lSXRlbShzZWN0aW9uLCBzZWN0aW9ucywgc291cmNlU2VjdGlvbnMsIGxpbmVJdGVtLCBwcmljaW5nRW5hYmxlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChzZWN0aW9uLmJvdW5kRGF0YS5lbnRpdHlUeXBlID09PSBCb3VuZERhdGFUeXBlW0JvdW5kRGF0YVR5cGUuUE9SVF0pIHtcbiAgICAgICAgZm91bmRMaW5lSXRlbXMgPSBmb3VuZExpbmVJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBvcnREb21haW5zICYmIGl0ZW0ucG9ydERvbWFpbnNbc2VjdGlvbi5ib3VuZERhdGEubmFtZV0pO1xuXG4gICAgICAgIFNlY3Rpb25zQmluZGVySGVscGVyLmJpbmRNYXRjaGluZ0xpbmVJdGVtcyhcbiAgICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgICAgZm91bmRMaW5lSXRlbXMsXG4gICAgICAgICAgc2VjdGlvbixcbiAgICAgICAgICBzZWN0aW9ucyxcbiAgICAgICAgICBzb3VyY2VTZWN0aW9ucyxcbiAgICAgICAgICBwcmljaW5nRW5hYmxlZCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlY3Rpb25zO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0FkZEFsbG93ZWQobW9kZWw6IExpbmVJdGVtLCBwb3J0TmFtZTogc3RyaW5nLCBxdWFudGl0eVRvQWRkOiBudW1iZXIgPSAxKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcXVhbnRpdHkgPSB0aGlzLmdldFF1YW50aXR5KG1vZGVsLCBwb3J0TmFtZSk7XG5cbiAgICByZXR1cm4gcXVhbnRpdHkgKyBxdWFudGl0eVRvQWRkIDw9ICt0aGlzLmdldFBvcnRNYXgobW9kZWwsIHBvcnROYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNSZW1vdmVBbGxvd2VkKG1vZGVsOiBMaW5lSXRlbSwgcG9ydE5hbWU6IHN0cmluZywgcXVhbnRpdHlUb1JlbW92ZTogbnVtYmVyID0gMSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1YW50aXR5ID0gdGhpcy5nZXRRdWFudGl0eShtb2RlbCwgcG9ydE5hbWUpO1xuXG4gICAgcmV0dXJuIHF1YW50aXR5IC0gcXVhbnRpdHlUb1JlbW92ZSA+PSArdGhpcy5nZXRQb3J0TWluKG1vZGVsLCBwb3J0TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldE1heEFsbG93ZWQobGluZUl0ZW06IExpbmVJdGVtLCBwb3J0TmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gK3RoaXMuZ2V0UG9ydE1heChsaW5lSXRlbSwgcG9ydE5hbWUpIC0gdGhpcy5nZXRRdWFudGl0eShsaW5lSXRlbSwgcG9ydE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRRdWFudGl0eUdyb3VwQnlWYWx1ZShtb2RlbDogTGluZUl0ZW0sIHBvcnROYW1lOiBzdHJpbmcpOiB7IFtpbmRleDogc3RyaW5nXTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHF1YW50aXRpZXM6IHsgW2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gICAgaWYgKG1vZGVsICYmIHBvcnROYW1lKSB7XG4gICAgICBtb2RlbC5saW5lSXRlbXNcbiAgICAgICAgLmZpbHRlcihsaSA9PiBsaS5wb3J0ID09PSBwb3J0TmFtZSlcbiAgICAgICAgLmZvckVhY2gobGkgPT4ge1xuICAgICAgICAgIGxldCBxdWFudGl0eSA9IChFbnRpdHlVdGlsLmlzUHJlc2VudChsaS5xdHkpICYmIGxpLnF0eSkgfHwgMTtcblxuICAgICAgICAgIGlmIChFbnRpdHlVdGlsLmlzUHJlc2VudChxdWFudGl0aWVzW2xpLnR5cGVdKSkge1xuICAgICAgICAgICAgcXVhbnRpdHkgKz0gcXVhbnRpdGllc1tsaS50eXBlXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBxdWFudGl0aWVzW2xpLnR5cGVdID0gcXVhbnRpdHk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBxdWFudGl0aWVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYmluZE1hdGNoaW5nTGluZUl0ZW1zKFxuICAgIHJ1bnRpbWVNb2RlbDogUnVudGltZU1vZGVsLFxuICAgIGZvdW5kTGluZUl0ZW1zOiBMaW5lSXRlbVtdLFxuICAgIHNlY3Rpb246IFNlY3Rpb24sXG4gICAgc2VjdGlvbnM6IFNlY3Rpb25bXSxcbiAgICBzb3VyY2VTZWN0aW9uczogU2VjdGlvbltdLFxuICAgIHByaWNpbmdFbmFibGVkOiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICBmb3VuZExpbmVJdGVtcy5mb3JFYWNoKGxpbmVJdGVtID0+IHtcbiAgICAgIGNvbnN0IGJvdW5kU2VjdGlvbiA9IFNlY3Rpb25zQmluZGVySGVscGVyLmJpbmRMaW5lSXRlbShcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgc2VjdGlvbnMsXG4gICAgICAgIHNvdXJjZVNlY3Rpb25zLFxuICAgICAgICBsaW5lSXRlbSxcbiAgICAgICAgcHJpY2luZ0VuYWJsZWQsXG4gICAgICApO1xuXG4gICAgICBTZWN0aW9uc0JpbmRlckhlbHBlci5zZXRMaW5lSXRlbXNQYXRoKFxuICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgIGxpbmVJdGVtLFxuICAgICAgICBzZWN0aW9ucyxcbiAgICAgICAgc291cmNlU2VjdGlvbnMsXG4gICAgICAgIChzZWM6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBzZWMuYm91bmREYXRhICYmIHNlYy5wYXJlbnRJZCA9PT0gYm91bmRTZWN0aW9uLmlkO1xuICAgICAgICB9LFxuICAgICAgICBwcmljaW5nRW5hYmxlZCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBiaW5kTGluZUl0ZW0oXG4gICAgc2VjdGlvbjogU2VjdGlvbixcbiAgICBzZWN0aW9uczogU2VjdGlvbltdLFxuICAgIHNvdXJjZVNlY3Rpb25zOiBTZWN0aW9uW10sXG4gICAgbGluZUl0ZW06IExpbmVJdGVtLFxuICAgIHByaWNpbmdFbmFibGVkOiBib29sZWFuLFxuICApOiBTZWN0aW9uIHtcbiAgICBjb25zdCBib3VuZFNlY3Rpb24gPSBzZWN0aW9uLm1vZGVsID8gU2VjdGlvbnNCaW5kZXJIZWxwZXIuZG9DbG9uZShzZWN0aW9uLCBzZWN0aW9ucywgc291cmNlU2VjdGlvbnMpIDogc2VjdGlvbjtcblxuICAgIGJvdW5kU2VjdGlvbi5tb2RlbCA9IGxpbmVJdGVtO1xuICAgIGJvdW5kU2VjdGlvbi5wcmljaW5nRW5hYmxlZCA9IHByaWNpbmdFbmFibGVkO1xuXG4gICAgcmV0dXJuIGJvdW5kU2VjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRvQ2xvbmUoc291cmNlOiBTZWN0aW9uLCBzZWN0aW9uczogU2VjdGlvbltdLCBzb3VyY2VTZWN0aW9uczogU2VjdGlvbltdLCBwYXJlbnQ/OiBTZWN0aW9uKTogU2VjdGlvbiB7XG4gICAgY29uc3Qgc291cmNlQ2xhc3MgPSBzb3VyY2VTZWN0aW9ucy5maW5kKHMgPT4gcy5jbGFzc0lkID09PSBzb3VyY2UuY2xhc3NJZCkgYXMgU2VjdGlvbjtcblxuICAgIGNvbnN0IGNsb25lID0gRW50aXR5VXRpbC5jbG9uZShzb3VyY2VDbGFzcyk7XG5cbiAgICBjbG9uZS5pZCA9IFVVSUQuVVVJRCgpO1xuICAgIGNsb25lLnBhcmVudElkID0gcGFyZW50ID8gcGFyZW50LmlkIDogc291cmNlLnBhcmVudElkO1xuXG4gICAgc2VjdGlvbnMuc3BsaWNlKHNlY3Rpb25zLmZpbmRJbmRleChzID0+IHMuaWQgPT09IHNvdXJjZS5pZCkgKyAxLCAwLCBjbG9uZSk7XG4gICAgc291cmNlU2VjdGlvbnNcbiAgICAgIC5maWx0ZXIocyA9PiBzLnBhcmVudElkID09PSBzb3VyY2VDbGFzcy5pZClcbiAgICAgIC5mb3JFYWNoKHMgPT4gU2VjdGlvbnNCaW5kZXJIZWxwZXIuZG9DbG9uZShzLCBzZWN0aW9ucywgc291cmNlU2VjdGlvbnMsIGNsb25lKSk7XG5cbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRRdWFudGl0eShtb2RlbDogTGluZUl0ZW0sIHBvcnROYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBxdWFudGl0eSA9IDA7XG5cbiAgICBtb2RlbC5saW5lSXRlbXNcbiAgICAgIC5maWx0ZXIobGkgPT4gbGkucG9ydCA9PT0gcG9ydE5hbWUpXG4gICAgICAuZm9yRWFjaChsaSA9PiB7XG4gICAgICAgIHF1YW50aXR5ICs9IGxpLnF0eTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHF1YW50aXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UG9ydE1heChtb2RlbDogTGluZUl0ZW0sIHBvcnROYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBtb2RlbC5wb3J0RG9tYWluc1twb3J0TmFtZV0ubWF4Q2FyZDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFBvcnRNaW4obW9kZWw6IExpbmVJdGVtLCBwb3J0TmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbW9kZWwucG9ydERvbWFpbnNbcG9ydE5hbWVdLm1pbkNhcmQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsb2NlYXBwcy1zZGstcnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvdmVsb2NlYXBwcy1zZGstcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,137 +0,0 @@
1
- import { Component, Inject, Optional } from '@angular/core';
2
- import { ActivatedRoute } from '@angular/router';
3
- import { QuoteApiService } from '@veloceapps/api';
4
- import { EntityUtil } from '@veloceapps/core';
5
- import { ContextService, QuoteDraftService, RuntimeOperation } from '@veloceapps/sdk/core';
6
- import { CurrentStateService, RuntimeContextService, RuntimeService, } from '@veloceapps/sdk/runtime';
7
- import { Subject, of } from 'rxjs';
8
- import { first, map, switchMap, take, takeUntil } from 'rxjs/operators';
9
- import { FLOW_CUSTOMIZATION } from '../../types';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/router";
12
- import * as i2 from "@veloceapps/sdk/core";
13
- import * as i3 from "@veloceapps/api";
14
- import * as i4 from "@veloceapps/sdk/runtime";
15
- export class LegacyProductComponent {
16
- constructor(route, quoteDraftService, quoteApiService, contextService, runtimeContextService, runtimeService, currentStateService, customizationService) {
17
- this.route = route;
18
- this.quoteDraftService = quoteDraftService;
19
- this.quoteApiService = quoteApiService;
20
- this.contextService = contextService;
21
- this.runtimeContextService = runtimeContextService;
22
- this.runtimeService = runtimeService;
23
- this.currentStateService = currentStateService;
24
- this.customizationService = customizationService;
25
- this.destroyed$ = new Subject();
26
- }
27
- ngOnInit() {
28
- this.quoteDraftService.quoteDraft$
29
- .pipe(first(), takeUntil(this.destroyed$))
30
- .subscribe(quote => this.init(quote, this.route.snapshot.queryParams));
31
- this.runtimeService.onSolutionStopEvent.pipe(take(1)).subscribe(lineItem => this.onSolutionStop(lineItem));
32
- this.runtimeService.onSolutionReadyEvent.pipe(take(1)).subscribe(event => this.onSolutionReady(event));
33
- this.runtimeService.onSolutionCancelEvent.pipe(take(1)).subscribe(() => this.onSolutionCancel());
34
- }
35
- ngOnDestroy() {
36
- this.destroyed$.next();
37
- this.destroyed$.complete();
38
- }
39
- onSolutionReady(lineItem) {
40
- lineItem.actionCode = lineItem.actionCode ?? 'ADD';
41
- }
42
- onSolutionCancel() {
43
- this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroyed$)).subscribe(quote => {
44
- window['VELO_BACK_FN'].apply(null, [quote.quoteId]);
45
- });
46
- }
47
- onSolutionUpdated(lineItem) {
48
- const states = {
49
- configurableRamp: lineItem,
50
- currentState: this.currentStateService.currentState,
51
- asset: this.getAsset(lineItem),
52
- };
53
- this.runtimeService.updateRuntime(states);
54
- }
55
- onSolutionStop(lineItem) {
56
- this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroyed$)).subscribe(quote => {
57
- const quoteToUpsert = {
58
- ...quote,
59
- context: this.contextService.resolve(),
60
- currentState: [...(this.currentStateService.currentState || []).filter(li => li.id !== lineItem.id), lineItem],
61
- };
62
- this.quoteApiService
63
- .upsertQuote(quoteToUpsert)
64
- .pipe(take(1))
65
- .subscribe(quote => {
66
- window['VELO_BACK_FN'].apply(null, [quote.quoteId]);
67
- });
68
- });
69
- }
70
- init(quote, queryParams) {
71
- const productId = queryParams['productId'];
72
- const lineItemId = this.getLineItemId(quote, queryParams);
73
- this.assets = quote.initialState;
74
- lineItemId && quote.currentState ? this.reConfigure(lineItemId, quote.currentState) : this.configure(productId);
75
- }
76
- getLineItemId(quote, queryParams) {
77
- if (EntityUtil.isPresent(queryParams['lineItemId'])) {
78
- return queryParams['lineItemId'];
79
- }
80
- return quote.currentState
81
- .filter(lineItem => lineItem.productId === queryParams['productId'])
82
- .map(lineItem => lineItem.id)
83
- .find(id => id);
84
- }
85
- configure(productId) {
86
- const runtimeContext = this.getRuntimeContext(productId, '', RuntimeOperation.INIT);
87
- this.startRuntime({}, runtimeContext);
88
- }
89
- reConfigure(lineItemId, currentState) {
90
- const currentStateItem = EntityUtil.findById(lineItemId, currentState);
91
- const runtimeContext = this.getRuntimeContext(currentStateItem.productId, currentStateItem.offeringId, RuntimeOperation.UPDATE);
92
- const states = {
93
- configurableRamp: currentStateItem,
94
- currentState,
95
- asset: this.getAsset(currentStateItem),
96
- };
97
- this.currentStateService.update(currentState);
98
- this.startRuntime(states, runtimeContext);
99
- }
100
- getAsset(lineItem) {
101
- return this.assets && this.assets.find(a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId);
102
- }
103
- startRuntime(states, runtimeContext$) {
104
- runtimeContext$
105
- .pipe(take(1), map(runtimeContext => {
106
- this.runtimeService.startRuntime(runtimeContext, states);
107
- }))
108
- .subscribe();
109
- }
110
- customizeContext(productId, context) {
111
- if (!this.customizationService?.getLegacyUiDefinition) {
112
- return of(context);
113
- }
114
- return this.customizationService.getLegacyUiDefinition(productId).pipe(map(uiDefinitionContainer => ({
115
- ...context,
116
- uiDefinitionContainer: uiDefinitionContainer ?? undefined,
117
- })));
118
- }
119
- getRuntimeContext(productId, offeringId, runtimeOperation) {
120
- return this.runtimeContextService.getRuntimeContext(productId, offeringId).pipe(map(runtimeContext => {
121
- runtimeContext.invocationContext = { runtimeOperation: RuntimeOperation[runtimeOperation] };
122
- return runtimeContext;
123
- }), switchMap(runtimeContext => this.customizeContext(productId, runtimeContext)));
124
- }
125
- }
126
- LegacyProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LegacyProductComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.QuoteDraftService }, { token: i3.QuoteApiService }, { token: i2.ContextService }, { token: i4.RuntimeContextService }, { token: i4.RuntimeService }, { token: i4.CurrentStateService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
127
- LegacyProductComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: LegacyProductComponent, selector: "ng-component", ngImport: i0, template: "<vl-runtime #runtimeView (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{display:block;height:100%}\n"], dependencies: [{ kind: "component", type: i4.RuntimeComponent, selector: "vl-runtime", outputs: ["solutionUpdated"] }] });
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LegacyProductComponent, decorators: [{
129
- type: Component,
130
- args: [{ template: "<vl-runtime #runtimeView (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{display:block;height:100%}\n"] }]
131
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.QuoteDraftService }, { type: i3.QuoteApiService }, { type: i2.ContextService }, { type: i4.RuntimeContextService }, { type: i4.RuntimeService }, { type: i4.CurrentStateService }, { type: undefined, decorators: [{
132
- type: Optional
133
- }, {
134
- type: Inject,
135
- args: [FLOW_CUSTOMIZATION]
136
- }] }]; } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3BhZ2VzL2xlZ2FjeS1wcm9kdWN0L2xlZ2FjeS1wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9sZWdhY3ktcHJvZHVjdC9sZWdhY3ktcHJvZHVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0YsT0FBTyxFQUNMLG1CQUFtQixFQUduQixxQkFBcUIsRUFDckIsY0FBYyxHQUdmLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQXFCLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUNVLEtBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixxQkFBNEMsRUFDNUMsY0FBOEIsRUFDOUIsbUJBQXdDLEVBQ0Esb0JBQXdDO1FBUGhGLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ0EseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtRQVpsRixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQWF0QyxDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXO2FBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTNHLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV2RyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFrQjtRQUN2QyxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3RixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQWtCO1FBQ3pDLE1BQU0sTUFBTSxHQUFnQjtZQUMxQixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLFlBQVksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWTtZQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7U0FDL0IsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxjQUFjLENBQUMsUUFBa0I7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3RixNQUFNLGFBQWEsR0FBZTtnQkFDaEMsR0FBRyxLQUFLO2dCQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDdEMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDO2FBQy9HLENBQUM7WUFFRixJQUFJLENBQUMsZUFBZTtpQkFDakIsV0FBVyxDQUFDLGFBQWEsQ0FBQztpQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxJQUFJLENBQUMsS0FBaUIsRUFBRSxXQUFtQjtRQUNqRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBRWpDLFVBQVUsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFpQixFQUFFLFdBQW1CO1FBQzFELElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRTtZQUNuRCxPQUFPLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNsQztRQUVELE9BQU8sS0FBSyxDQUFDLFlBQVk7YUFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbkUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQzthQUM1QixJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRU8sU0FBUyxDQUFDLFNBQWlCO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBa0IsRUFBRSxZQUF3QjtRQUM5RCxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDM0MsZ0JBQWdCLENBQUMsU0FBUyxFQUMxQixnQkFBZ0IsQ0FBQyxVQUFVLEVBQzNCLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEIsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFnQjtZQUMxQixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsWUFBWTtZQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1NBQ3ZDLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxRQUFRLENBQUMsUUFBa0I7UUFDakMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsbUJBQW1CLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFtQixFQUFFLGVBQWlEO1FBQ3pGLGVBQWU7YUFDWixJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxPQUE2QjtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFO1lBQ3JELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUNwRSxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsR0FBRyxPQUFPO1lBQ1YscUJBQXFCLEVBQUUscUJBQXFCLElBQUksU0FBUztTQUMxRCxDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUN2QixTQUFpQixFQUNqQixVQUFrQixFQUNsQixnQkFBa0M7UUFFbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDN0UsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ25CLGNBQWMsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUM1RixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQzlFLENBQUM7SUFDSixDQUFDOzttSEF6SlUsc0JBQXNCLG9QQWFYLGtCQUFrQjt1R0FiN0Isc0JBQXNCLG9EQ3hCbkMsMEZBQ0E7MkZEdUJhLHNCQUFzQjtrQkFKbEMsU0FBUzs7OzBCQWlCTCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUXVvdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IEVudGl0eVV0aWwsIExpbmVJdGVtLCBRdW90ZURyYWZ0LCBWbFdpbmRvdyB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIFF1b3RlRHJhZnRTZXJ2aWNlLCBSdW50aW1lT3BlcmF0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ3VycmVudFN0YXRlU2VydmljZSxcbiAgTGVnYWN5UnVudGltZUNvbnRleHQsXG4gIFF1b3RlU3RhdGVzLFxuICBSdW50aW1lQ29udGV4dFNlcnZpY2UsXG4gIFJ1bnRpbWVTZXJ2aWNlLFxuICBTb2x1dGlvblJlYWR5QXdhcmUsXG4gIFNvbHV0aW9uVXBkYXRlZEF3YXJlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvcnVudGltZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGTE9XX0NVU1RPTUlaQVRJT04sIEZsb3dDdXN0b21pemF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogVmxXaW5kb3c7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vbGVnYWN5LXByb2R1Y3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sZWdhY3ktcHJvZHVjdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMZWdhY3lQcm9kdWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFNvbHV0aW9uVXBkYXRlZEF3YXJlLCBTb2x1dGlvblJlYWR5QXdhcmUge1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgYXNzZXRzPzogTGluZUl0ZW1bXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlQXBpU2VydmljZTogUXVvdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZUNvbnRleHRTZXJ2aWNlOiBSdW50aW1lQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydW50aW1lU2VydmljZTogUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjdXJyZW50U3RhdGVTZXJ2aWNlOiBDdXJyZW50U3RhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JFxuICAgICAgLnBpcGUoZmlyc3QoKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKHF1b3RlID0+IHRoaXMuaW5pdChxdW90ZSwgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykpO1xuXG4gICAgdGhpcy5ydW50aW1lU2VydmljZS5vblNvbHV0aW9uU3RvcEV2ZW50LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGxpbmVJdGVtID0+IHRoaXMub25Tb2x1dGlvblN0b3AobGluZUl0ZW0pKTtcblxuICAgIHRoaXMucnVudGltZVNlcnZpY2Uub25Tb2x1dGlvblJlYWR5RXZlbnQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vblNvbHV0aW9uUmVhZHkoZXZlbnQpKTtcblxuICAgIHRoaXMucnVudGltZVNlcnZpY2Uub25Tb2x1dGlvbkNhbmNlbEV2ZW50LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Tb2x1dGlvbkNhbmNlbCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU29sdXRpb25SZWFkeShsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICBsaW5lSXRlbS5hY3Rpb25Db2RlID0gbGluZUl0ZW0uYWN0aW9uQ29kZSA/PyAnQUREJztcbiAgfVxuXG4gIHB1YmxpYyBvblNvbHV0aW9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShmaXJzdCgpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKHF1b3RlID0+IHtcbiAgICAgIHdpbmRvd1snVkVMT19CQUNLX0ZOJ10uYXBwbHkobnVsbCwgW3F1b3RlLnF1b3RlSWRdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvbHV0aW9uVXBkYXRlZChsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZXM6IFF1b3RlU3RhdGVzID0ge1xuICAgICAgY29uZmlndXJhYmxlUmFtcDogbGluZUl0ZW0sXG4gICAgICBjdXJyZW50U3RhdGU6IHRoaXMuY3VycmVudFN0YXRlU2VydmljZS5jdXJyZW50U3RhdGUsXG4gICAgICBhc3NldDogdGhpcy5nZXRBc3NldChsaW5lSXRlbSksXG4gICAgfTtcblxuICAgIHRoaXMucnVudGltZVNlcnZpY2UudXBkYXRlUnVudGltZShzdGF0ZXMpO1xuICB9XG5cbiAgcHVibGljIG9uU29sdXRpb25TdG9wKGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCQucGlwZShmaXJzdCgpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKHF1b3RlID0+IHtcbiAgICAgIGNvbnN0IHF1b3RlVG9VcHNlcnQ6IFF1b3RlRHJhZnQgPSB7XG4gICAgICAgIC4uLnF1b3RlLFxuICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKSxcbiAgICAgICAgY3VycmVudFN0YXRlOiBbLi4uKHRoaXMuY3VycmVudFN0YXRlU2VydmljZS5jdXJyZW50U3RhdGUgfHwgW10pLmZpbHRlcihsaSA9PiBsaS5pZCAhPT0gbGluZUl0ZW0uaWQpLCBsaW5lSXRlbV0sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnF1b3RlQXBpU2VydmljZVxuICAgICAgICAudXBzZXJ0UXVvdGUocXVvdGVUb1Vwc2VydClcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShxdW90ZSA9PiB7XG4gICAgICAgICAgd2luZG93WydWRUxPX0JBQ0tfRk4nXS5hcHBseShudWxsLCBbcXVvdGUucXVvdGVJZF0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdChxdW90ZTogUXVvdGVEcmFmdCwgcXVlcnlQYXJhbXM6IFBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHByb2R1Y3RJZCA9IHF1ZXJ5UGFyYW1zWydwcm9kdWN0SWQnXTtcbiAgICBjb25zdCBsaW5lSXRlbUlkID0gdGhpcy5nZXRMaW5lSXRlbUlkKHF1b3RlLCBxdWVyeVBhcmFtcyk7XG4gICAgdGhpcy5hc3NldHMgPSBxdW90ZS5pbml0aWFsU3RhdGU7XG5cbiAgICBsaW5lSXRlbUlkICYmIHF1b3RlLmN1cnJlbnRTdGF0ZSA/IHRoaXMucmVDb25maWd1cmUobGluZUl0ZW1JZCwgcXVvdGUuY3VycmVudFN0YXRlKSA6IHRoaXMuY29uZmlndXJlKHByb2R1Y3RJZCk7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmVJdGVtSWQocXVvdGU6IFF1b3RlRHJhZnQsIHF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChFbnRpdHlVdGlsLmlzUHJlc2VudChxdWVyeVBhcmFtc1snbGluZUl0ZW1JZCddKSkge1xuICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zWydsaW5lSXRlbUlkJ107XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1b3RlLmN1cnJlbnRTdGF0ZVxuICAgICAgLmZpbHRlcihsaW5lSXRlbSA9PiBsaW5lSXRlbS5wcm9kdWN0SWQgPT09IHF1ZXJ5UGFyYW1zWydwcm9kdWN0SWQnXSlcbiAgICAgIC5tYXAobGluZUl0ZW0gPT4gbGluZUl0ZW0uaWQpXG4gICAgICAuZmluZChpZCA9PiBpZCk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZShwcm9kdWN0SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bnRpbWVDb250ZXh0ID0gdGhpcy5nZXRSdW50aW1lQ29udGV4dChwcm9kdWN0SWQsICcnLCBSdW50aW1lT3BlcmF0aW9uLklOSVQpO1xuXG4gICAgdGhpcy5zdGFydFJ1bnRpbWUoe30sIHJ1bnRpbWVDb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVDb25maWd1cmUobGluZUl0ZW1JZDogc3RyaW5nLCBjdXJyZW50U3RhdGU6IExpbmVJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGVJdGVtID0gRW50aXR5VXRpbC5maW5kQnlJZChsaW5lSXRlbUlkLCBjdXJyZW50U3RhdGUpO1xuICAgIGNvbnN0IHJ1bnRpbWVDb250ZXh0ID0gdGhpcy5nZXRSdW50aW1lQ29udGV4dChcbiAgICAgIGN1cnJlbnRTdGF0ZUl0ZW0ucHJvZHVjdElkLFxuICAgICAgY3VycmVudFN0YXRlSXRlbS5vZmZlcmluZ0lkLFxuICAgICAgUnVudGltZU9wZXJhdGlvbi5VUERBVEUsXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRlczogUXVvdGVTdGF0ZXMgPSB7XG4gICAgICBjb25maWd1cmFibGVSYW1wOiBjdXJyZW50U3RhdGVJdGVtLFxuICAgICAgY3VycmVudFN0YXRlLFxuICAgICAgYXNzZXQ6IHRoaXMuZ2V0QXNzZXQoY3VycmVudFN0YXRlSXRlbSksXG4gICAgfTtcblxuICAgIHRoaXMuY3VycmVudFN0YXRlU2VydmljZS51cGRhdGUoY3VycmVudFN0YXRlKTtcbiAgICB0aGlzLnN0YXJ0UnVudGltZShzdGF0ZXMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNzZXQobGluZUl0ZW06IExpbmVJdGVtKTogTGluZUl0ZW0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFzc2V0cyAmJiB0aGlzLmFzc2V0cy5maW5kKGEgPT4gYS5pZCA9PT0gbGluZUl0ZW0ub3Blbk9yZGVyTGluZUl0ZW1JZCB8fCBhLmlkID09PSBsaW5lSXRlbS5hc3NldElkKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRSdW50aW1lKHN0YXRlczogUXVvdGVTdGF0ZXMsIHJ1bnRpbWVDb250ZXh0JDogT2JzZXJ2YWJsZTxMZWdhY3lSdW50aW1lQ29udGV4dD4pOiB2b2lkIHtcbiAgICBydW50aW1lQ29udGV4dCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAocnVudGltZUNvbnRleHQgPT4ge1xuICAgICAgICAgIHRoaXMucnVudGltZVNlcnZpY2Uuc3RhcnRSdW50aW1lKHJ1bnRpbWVDb250ZXh0LCBzdGF0ZXMpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9taXplQ29udGV4dChwcm9kdWN0SWQ6IHN0cmluZywgY29udGV4dDogTGVnYWN5UnVudGltZUNvbnRleHQpOiBPYnNlcnZhYmxlPExlZ2FjeVJ1bnRpbWVDb250ZXh0PiB7XG4gICAgaWYgKCF0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRMZWdhY3lVaURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZihjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXRMZWdhY3lVaURlZmluaXRpb24ocHJvZHVjdElkKS5waXBlKFxuICAgICAgbWFwKHVpRGVmaW5pdGlvbkNvbnRhaW5lciA9PiAoe1xuICAgICAgICAuLi5jb250ZXh0LFxuICAgICAgICB1aURlZmluaXRpb25Db250YWluZXI6IHVpRGVmaW5pdGlvbkNvbnRhaW5lciA/PyB1bmRlZmluZWQsXG4gICAgICB9KSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UnVudGltZUNvbnRleHQoXG4gICAgcHJvZHVjdElkOiBzdHJpbmcsXG4gICAgb2ZmZXJpbmdJZDogc3RyaW5nLFxuICAgIHJ1bnRpbWVPcGVyYXRpb246IFJ1bnRpbWVPcGVyYXRpb24sXG4gICk6IE9ic2VydmFibGU8TGVnYWN5UnVudGltZUNvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lQ29udGV4dFNlcnZpY2UuZ2V0UnVudGltZUNvbnRleHQocHJvZHVjdElkLCBvZmZlcmluZ0lkKS5waXBlKFxuICAgICAgbWFwKHJ1bnRpbWVDb250ZXh0ID0+IHtcbiAgICAgICAgcnVudGltZUNvbnRleHQuaW52b2NhdGlvbkNvbnRleHQgPSB7IHJ1bnRpbWVPcGVyYXRpb246IFJ1bnRpbWVPcGVyYXRpb25bcnVudGltZU9wZXJhdGlvbl0gfTtcbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVDb250ZXh0O1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAocnVudGltZUNvbnRleHQgPT4gdGhpcy5jdXN0b21pemVDb250ZXh0KHByb2R1Y3RJZCwgcnVudGltZUNvbnRleHQpKSxcbiAgICApO1xuICB9XG59XG4iLCI8dmwtcnVudGltZSAjcnVudGltZVZpZXcgKHNvbHV0aW9uVXBkYXRlZCk9XCJvblNvbHV0aW9uVXBkYXRlZCgkZXZlbnQpXCI+PC92bC1ydW50aW1lPlxuIl19
@@ -1,19 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { RuntimeModule } from '@veloceapps/sdk/runtime';
4
- import { LegacyProductComponent } from './legacy-product.component';
5
- import * as i0 from "@angular/core";
6
- export class LegacyProductModule {
7
- }
8
- LegacyProductModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LegacyProductModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- LegacyProductModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: LegacyProductModule, declarations: [LegacyProductComponent], imports: [CommonModule, RuntimeModule], exports: [LegacyProductComponent] });
10
- LegacyProductModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LegacyProductModule, imports: [CommonModule, RuntimeModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: LegacyProductModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- declarations: [LegacyProductComponent],
15
- imports: [CommonModule, RuntimeModule],
16
- exports: [LegacyProductComponent],
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LXByb2R1Y3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3BhZ2VzL2xlZ2FjeS1wcm9kdWN0L2xlZ2FjeS1wcm9kdWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT3BFLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFKZixzQkFBc0IsYUFDM0IsWUFBWSxFQUFFLGFBQWEsYUFDM0Isc0JBQXNCO2lIQUVyQixtQkFBbUIsWUFIcEIsWUFBWSxFQUFFLGFBQWE7MkZBRzFCLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSdW50aW1lTW9kdWxlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL3J1bnRpbWUnO1xuaW1wb3J0IHsgTGVnYWN5UHJvZHVjdENvbXBvbmVudCB9IGZyb20gJy4vbGVnYWN5LXByb2R1Y3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTGVnYWN5UHJvZHVjdENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJ1bnRpbWVNb2R1bGVdLFxuICBleHBvcnRzOiBbTGVnYWN5UHJvZHVjdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExlZ2FjeVByb2R1Y3RNb2R1bGUge31cbiJdfQ==