@veloceapps/sdk 8.0.0-9 → 8.0.0-90

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) 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 +7 -2
  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/date.pipe.d.ts +2 -1
  9. package/core/pipes/index.d.ts +1 -0
  10. package/core/pipes/pipes.module.d.ts +2 -1
  11. package/core/services/context.service.d.ts +2 -0
  12. package/core/services/runtime-settings.service.d.ts +4 -1
  13. package/core/types/formatting-settings.types.d.ts +2 -0
  14. package/core/types/index.d.ts +1 -0
  15. package/core/types/pipe.types.d.ts +1 -0
  16. package/esm2020/cms/components/element-children/element-children.component.mjs +3 -3
  17. package/esm2020/cms/components/element-children/element-children.module.mjs +4 -4
  18. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +3 -3
  19. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +4 -4
  20. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +3 -3
  21. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +4 -4
  22. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +5 -5
  23. package/esm2020/cms/components/plugin.component.mjs +3 -3
  24. package/esm2020/cms/components/preview/preview.component.mjs +3 -3
  25. package/esm2020/cms/components/preview/preview.module.mjs +4 -4
  26. package/esm2020/cms/directives/custom-template.directive.mjs +7 -7
  27. package/esm2020/cms/launcher.module.mjs +4 -4
  28. package/esm2020/cms/modules/federated/federated-host.directive.mjs +3 -3
  29. package/esm2020/cms/modules/federated/federated.component.mjs +3 -3
  30. package/esm2020/cms/modules/federated/federated.module.mjs +4 -4
  31. package/esm2020/cms/modules/migrations/migrations.module.mjs +4 -4
  32. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +3 -3
  33. package/esm2020/cms/modules/runtime/runtime.module.mjs +4 -4
  34. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +3 -3
  35. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +3 -3
  36. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +3 -3
  37. package/esm2020/cms/plugins/configuration.plugin.mjs +3 -3
  38. package/esm2020/cms/plugins/element-hover.plugin.mjs +3 -3
  39. package/esm2020/cms/plugins/io.plugin.mjs +8 -7
  40. package/esm2020/cms/plugins/page.plugin.mjs +3 -3
  41. package/esm2020/cms/plugins/region.plugin.mjs +3 -3
  42. package/esm2020/cms/plugins/script.plugin.mjs +3 -3
  43. package/esm2020/cms/services/element-context.service.mjs +3 -3
  44. package/esm2020/cms/services/integration.state.mjs +3 -3
  45. package/esm2020/cms/services/io-provider.service.mjs +3 -3
  46. package/esm2020/cms/services/resources.service.mjs +3 -3
  47. package/esm2020/cms/services/templates.service.mjs +3 -3
  48. package/esm2020/cms/utils/element.utils.mjs +10 -3
  49. package/esm2020/cms/utils/elements-resolver.mjs +2 -2
  50. package/esm2020/cms/vendor-map.mjs +8 -3
  51. package/esm2020/core/core.module.mjs +8 -17
  52. package/esm2020/core/directives/directives.module.mjs +4 -4
  53. package/esm2020/core/directives/primeng-calendar.directive.mjs +3 -3
  54. package/esm2020/core/modules/configuration/configuration.module.mjs +4 -4
  55. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +11 -14
  56. package/esm2020/core/modules/configuration/services/configuration.service.mjs +28 -9
  57. package/esm2020/core/modules/configuration/services/configuration.state.mjs +3 -3
  58. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +9 -9
  59. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +4 -4
  60. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +3 -3
  61. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +7 -14
  62. package/esm2020/core/modules/flow-configuration/types/update.types.mjs +1 -1
  63. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  64. package/esm2020/core/pipes/date.pipe.mjs +13 -7
  65. package/esm2020/core/pipes/index.mjs +2 -1
  66. package/esm2020/core/pipes/number.pipe.mjs +3 -3
  67. package/esm2020/core/pipes/pipes.module.mjs +8 -7
  68. package/esm2020/core/pipes/price.pipe.mjs +3 -3
  69. package/esm2020/core/services/context.service.mjs +20 -5
  70. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +3 -3
  71. package/esm2020/core/services/product-images.service.mjs +3 -3
  72. package/esm2020/core/services/quote-draft.service.mjs +5 -4
  73. package/esm2020/core/services/runtime-settings.service.mjs +20 -5
  74. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  75. package/esm2020/core/types/index.mjs +2 -1
  76. package/esm2020/core/types/pipe.types.mjs +2 -0
  77. package/esm2020/src/components/dialog/dialog.component.mjs +3 -3
  78. package/esm2020/src/components/dialog/dialog.module.mjs +4 -4
  79. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +13 -14
  80. package/esm2020/src/components/doc-gen/doc-gen.module.mjs +4 -4
  81. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +13 -14
  82. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +4 -4
  83. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +3 -3
  84. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +4 -4
  85. package/esm2020/src/components/header/header.component.mjs +4 -4
  86. package/esm2020/src/components/header/header.module.mjs +4 -4
  87. package/esm2020/src/components/header/metrics/metrics.component.mjs +4 -4
  88. package/esm2020/src/components/header/metrics/metrics.module.mjs +4 -4
  89. package/esm2020/src/flow-routing.module.mjs +66 -75
  90. package/esm2020/src/flow.component.mjs +16 -10
  91. package/esm2020/src/flow.module.mjs +4 -4
  92. package/esm2020/src/guards/context.guard.mjs +4 -4
  93. package/esm2020/src/guards/flow.guard.mjs +23 -0
  94. package/esm2020/src/guards/product-unload.guard.mjs +7 -4
  95. package/esm2020/src/guards/root.guard.mjs +17 -13
  96. package/esm2020/src/pages/assets/assets.component.mjs +12 -12
  97. package/esm2020/src/pages/assets/assets.module.mjs +4 -4
  98. package/esm2020/src/pages/catalog/catalog.component.mjs +12 -12
  99. package/esm2020/src/pages/catalog/catalog.module.mjs +4 -4
  100. package/esm2020/src/pages/debug/debug.component.mjs +12 -16
  101. package/esm2020/src/pages/debug/debug.module.mjs +4 -4
  102. package/esm2020/src/pages/empty-account/empty-account.component.mjs +3 -3
  103. package/esm2020/src/pages/empty-account/empty-account.module.mjs +4 -4
  104. package/esm2020/src/pages/product/product.component.mjs +5 -6
  105. package/esm2020/src/pages/product/product.module.mjs +4 -4
  106. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +3 -3
  107. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +4 -4
  108. package/esm2020/src/pages/remote/remote.component.mjs +8 -9
  109. package/esm2020/src/pages/remote/remote.module.mjs +4 -4
  110. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +12 -12
  111. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +4 -4
  112. package/esm2020/src/resolvers/flow.resolver.mjs +17 -11
  113. package/esm2020/src/resolvers/quote.resolver.mjs +12 -8
  114. package/esm2020/src/services/doc-gen.service.mjs +3 -3
  115. package/esm2020/src/services/flow-dialog.service.mjs +3 -3
  116. package/esm2020/src/services/flow-router.service.mjs +5 -5
  117. package/esm2020/src/services/flow.service.mjs +34 -11
  118. package/esm2020/src/services/guided-selling.service.mjs +3 -3
  119. package/esm2020/src/utils/flow.utils.mjs +6 -2
  120. package/fesm2015/veloceapps-sdk-cms.mjs +129 -116
  121. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  122. package/fesm2015/veloceapps-sdk-core.mjs +1064 -1011
  123. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  124. package/fesm2015/veloceapps-sdk.mjs +605 -695
  125. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  126. package/fesm2020/veloceapps-sdk-cms.mjs +128 -115
  127. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  128. package/fesm2020/veloceapps-sdk-core.mjs +589 -538
  129. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  130. package/fesm2020/veloceapps-sdk.mjs +606 -697
  131. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  132. package/package.json +3 -11
  133. package/src/components/doc-gen/doc-gen.component.d.ts +4 -5
  134. package/src/components/guided-selling/guided-selling.component.d.ts +5 -6
  135. package/src/flow-routing.module.d.ts +6 -7
  136. package/src/flow.component.d.ts +3 -2
  137. package/src/guards/context.guard.d.ts +4 -4
  138. package/src/guards/flow.guard.d.ts +2 -0
  139. package/src/guards/product-unload.guard.d.ts +2 -2
  140. package/src/guards/root.guard.d.ts +0 -1
  141. package/src/pages/assets/assets.component.d.ts +3 -3
  142. package/src/pages/catalog/catalog.component.d.ts +3 -3
  143. package/src/pages/debug/debug.component.d.ts +5 -8
  144. package/src/pages/shopping-cart/shopping-cart.component.d.ts +3 -3
  145. package/src/resolvers/flow.resolver.d.ts +3 -1
  146. package/src/resolvers/quote.resolver.d.ts +3 -1
  147. package/src/services/flow.service.d.ts +11 -2
  148. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  149. package/esm2020/runtime/components/index.mjs +0 -5
  150. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  151. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  152. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  153. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  154. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  155. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  156. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  157. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  158. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  159. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  160. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  161. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  162. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  163. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  164. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  165. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  166. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  167. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  168. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  169. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  170. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  171. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  172. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  173. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  174. package/esm2020/runtime/index.mjs +0 -5
  175. package/esm2020/runtime/runtime.module.mjs +0 -74
  176. package/esm2020/runtime/services/cart.service.mjs +0 -29
  177. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  178. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  179. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  180. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  181. package/esm2020/runtime/services/index.mjs +0 -4
  182. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  183. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  184. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  185. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  186. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  187. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  188. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  189. package/esm2020/runtime/services/section.service.mjs +0 -117
  190. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  191. package/esm2020/runtime/types/index.mjs +0 -3
  192. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  193. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  194. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  195. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  196. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  197. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  198. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  199. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  200. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  201. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  202. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  203. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  204. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  205. package/runtime/README.md +0 -5
  206. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  207. package/runtime/components/index.d.ts +0 -4
  208. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  209. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  210. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  211. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  212. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  213. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  214. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  215. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  216. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  217. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  218. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  219. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  220. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  221. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  222. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  223. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  224. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  225. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  226. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  227. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  228. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  229. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  230. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  231. package/runtime/execution/utils/federated.util.d.ts +0 -6
  232. package/runtime/index.d.ts +0 -4
  233. package/runtime/runtime.module.d.ts +0 -16
  234. package/runtime/services/cart.service.d.ts +0 -15
  235. package/runtime/services/collapsible-state.service.d.ts +0 -15
  236. package/runtime/services/configuration.service.d.ts +0 -20
  237. package/runtime/services/current-state.service.d.ts +0 -8
  238. package/runtime/services/form-scope.service.d.ts +0 -20
  239. package/runtime/services/index.d.ts +0 -3
  240. package/runtime/services/product-model-cache.service.d.ts +0 -14
  241. package/runtime/services/runtime-context.service.d.ts +0 -16
  242. package/runtime/services/runtime-form.service.d.ts +0 -24
  243. package/runtime/services/runtime.service.d.ts +0 -44
  244. package/runtime/services/section-helper.service.d.ts +0 -8
  245. package/runtime/services/section-scope.service.d.ts +0 -14
  246. package/runtime/services/section-store.service.d.ts +0 -11
  247. package/runtime/services/section.service.d.ts +0 -30
  248. package/runtime/types/bound-data.types.d.ts +0 -13
  249. package/runtime/types/index.d.ts +0 -2
  250. package/runtime/types/quote-states.types.d.ts +0 -6
  251. package/runtime/types/runtime.types.d.ts +0 -19
  252. package/runtime/types/script-registry.types.d.ts +0 -13
  253. package/runtime/utils/line-item.util.d.ts +0 -34
  254. package/runtime/utils/section.utils.d.ts +0 -2
  255. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  256. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  257. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
@@ -6,10 +6,10 @@ import { EmptyAccountComponent } from './empty-account.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class EmptyAccountModule {
8
8
  }
9
- EmptyAccountModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmptyAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- EmptyAccountModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: EmptyAccountModule, declarations: [EmptyAccountComponent], imports: [CommonModule, PreviewModule, LoaderModule, EmptyStateModule], exports: [EmptyAccountComponent] });
11
- EmptyAccountModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmptyAccountModule, imports: [CommonModule, PreviewModule, LoaderModule, EmptyStateModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: EmptyAccountModule, decorators: [{
9
+ EmptyAccountModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmptyAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ EmptyAccountModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: EmptyAccountModule, declarations: [EmptyAccountComponent], imports: [CommonModule, PreviewModule, LoaderModule, EmptyStateModule], exports: [EmptyAccountComponent] });
11
+ EmptyAccountModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmptyAccountModule, imports: [CommonModule, PreviewModule, LoaderModule, EmptyStateModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EmptyAccountModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [EmptyAccountComponent],
@@ -1,5 +1,4 @@
1
1
  import { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';
2
- import { isLegacyUIDefinition } from '@veloceapps/core';
3
2
  import { IntegrationState } from '@veloceapps/sdk/cms';
4
3
  import { ConfigurationRuntimeService, ConfigurationService, ConfigurationState, ContextService, QuoteDraftService, } from '@veloceapps/sdk/core';
5
4
  import { BehaviorSubject, first, map, of, switchMap, tap } from 'rxjs';
@@ -49,7 +48,7 @@ export class ProductComponent {
49
48
  return this.configurationRuntimeService.init({ productId, offeringId });
50
49
  }), switchMap(() => this.customizeUI$()), tap(() => {
51
50
  const uiDefinition = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer?.source;
52
- if (uiDefinition && !isLegacyUIDefinition(uiDefinition)) {
51
+ if (uiDefinition) {
53
52
  this.uiDefinition$.next(uiDefinition);
54
53
  }
55
54
  else {
@@ -71,9 +70,9 @@ export class ProductComponent {
71
70
  return id;
72
71
  }
73
72
  }
74
- ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductComponent, deps: [{ token: i1.ContextService }, { token: i1.ConfigurationRuntimeService }, { token: i1.ConfigurationService }, { token: i1.ConfigurationState }, { token: i1.QuoteDraftService }, { token: i2.IntegrationState }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
75
- ProductComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ProductComponent, selector: "vl-flow-product", ngImport: i0, template: "<vl-cms-preview [uiDefinition]=\"$any(uiDefinition$ | async)\" [config]=\"config\"></vl-cms-preview>\n", styles: [""], dependencies: [{ kind: "component", type: i2.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductComponent, decorators: [{
73
+ ProductComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, deps: [{ token: i1.ContextService }, { token: i1.ConfigurationRuntimeService }, { token: i1.ConfigurationService }, { token: i1.ConfigurationState }, { token: i1.QuoteDraftService }, { token: i2.IntegrationState }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
74
+ ProductComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ProductComponent, selector: "vl-flow-product", ngImport: i0, template: "<vl-cms-preview [uiDefinition]=\"$any(uiDefinition$ | async)\" [config]=\"config\"></vl-cms-preview>\n", styles: [""], dependencies: [{ kind: "component", type: i2.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductComponent, decorators: [{
77
76
  type: Component,
78
77
  args: [{ selector: 'vl-flow-product', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vl-cms-preview [uiDefinition]=\"$any(uiDefinition$ | async)\" [config]=\"config\"></vl-cms-preview>\n" }]
79
78
  }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i1.ConfigurationRuntimeService }, { type: i1.ConfigurationService }, { type: i1.ConfigurationState }, { type: i1.QuoteDraftService }, { type: i2.IntegrationState }, { type: undefined, decorators: [{
@@ -82,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
82
81
  type: Inject,
83
82
  args: [FLOW_CUSTOMIZATION]
84
83
  }] }]; } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBNEIsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRixPQUFPLEVBQW9CLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxpQkFBaUIsR0FDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFxQixNQUFNLHNDQUFzQyxDQUFDOzs7OztBQVE3RixNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQ1UsY0FBOEIsRUFDOUIsMkJBQXdELEVBQ3hELG9CQUEwQyxFQUMxQyxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLGdCQUFrQyxFQUNNLG9CQUF3QztRQU5oRixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ00seUJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtRQVRuRixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUEyQixTQUFTLENBQUMsQ0FBQztRQVc5RSxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUM1RSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLGVBQWUsRUFBRTtZQUM3RCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1lBQzFCLElBQUkscUJBQXFCLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQzlFO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLO1FBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDNUMsS0FBSyxFQUFFLEVBQ1AsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1lBRTlDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO2FBQzFFO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7WUFFaEYsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDakU7WUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBRTlDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFDcEMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxDQUFDO1lBQ3BHLElBQUksWUFBWSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQzthQUMzRDtRQUNILENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLG1CQUFtQixDQUFDLGFBQWE7b0JBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFpQixFQUFFLFNBQWlCLEVBQUUsVUFBbUI7UUFDN0UsNkJBQTZCO1FBQzdCLElBQUksRUFBRSxHQUF1QixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRXJGLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUM5QyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNwRTtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7NkdBbkZVLGdCQUFnQixrT0FXTCxrQkFBa0I7aUdBWDdCLGdCQUFnQix1RENuQjdCLHdHQUNBOzJGRGtCYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OzBCQWE1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1b3RlRHJhZnQsIFVJRGVmaW5pdGlvbiwgaXNMZWdhY3lVSURlZmluaXRpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IENNU1ByZXZpZXdDb25maWcsIEludGVncmF0aW9uU3RhdGUgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TdGF0ZSxcbiAgQ29udGV4dFNlcnZpY2UsXG4gIFF1b3RlRHJhZnRTZXJ2aWNlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZpcnN0LCBtYXAsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkxPV19DVVNUT01JWkFUSU9OLCBGbG93Q3VzdG9taXphdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL2Zsb3ctY3VzdG9taXphdGlvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctcHJvZHVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdENvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25maWc6IENNU1ByZXZpZXdDb25maWc7XG4gIHB1YmxpYyB1aURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVSURlZmluaXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZTogQ29uZmlndXJhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZWdyYXRpb25TdGF0ZTogSW50ZWdyYXRpb25TdGF0ZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGluaXQkOiAoKSA9PiB0aGlzLmluaXQkKCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9taXplVUkkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgcHJvZHVjdElkIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dCA/PyB7fTtcbiAgICBpZiAoIXByb2R1Y3RJZCB8fCAhdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VWlEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5nZXRVaURlZmluaXRpb24ocHJvZHVjdElkKS5waXBlKFxuICAgICAgbWFwKHVpRGVmaW5pdGlvbkNvbnRhaW5lciA9PiB7XG4gICAgICAgIGlmICh1aURlZmluaXRpb25Db250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5vdmVycmlkZVVJRGVmaW5pdGlvbih1aURlZmluaXRpb25Db250YWluZXIpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHN3aXRjaE1hcChxdW90ZSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9wZXJ0aWVzID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcztcbiAgICAgICAgY29uc3QgcHJvZHVjdElkID0gY29udGV4dFByb3BlcnRpZXMucHJvZHVjdElkO1xuXG4gICAgICAgIGlmICghcHJvZHVjdElkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gc3RhcnQgY29uZmlndXJhdGlvbiBmb3IgJ3Byb2R1Y3RJZCA9PSBudWxsJ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGluZUl0ZW1JZCA9IHRoaXMuZ2V0TGluZUl0ZW1JZChxdW90ZSwgcHJvZHVjdElkLCBjb250ZXh0UHJvcGVydGllcy5saW5lSXRlbUlkKTtcbiAgICAgICAgY29uc3QgY3VycmVudFN0YXRlSXRlbSA9IHF1b3RlLmN1cnJlbnRTdGF0ZS5maW5kKCh7IGlkIH0pID0+IGlkID09PSBsaW5lSXRlbUlkKTtcblxuICAgICAgICBpZiAoY3VycmVudFN0YXRlSXRlbSkge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2Uuc2V0Q29uZmlndXJhYmxlUmFtcChjdXJyZW50U3RhdGVJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgb2ZmZXJpbmdJZCB9ID0gY3VycmVudFN0YXRlSXRlbSA/PyB7fTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdCh7IHByb2R1Y3RJZCwgb2ZmZXJpbmdJZCB9KTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY3VzdG9taXplVUkkKCkpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgdWlEZWZpbml0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UucnVudGltZUNvbnRleHQ/LnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlO1xuICAgICAgICBpZiAodWlEZWZpbml0aW9uICYmICFpc0xlZ2FjeVVJRGVmaW5pdGlvbih1aURlZmluaXRpb24pKSB7XG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24kLm5leHQodWlEZWZpbml0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb2R1Y3QgZG9lcyBub3QgaGF2ZSBDb25maWd1cmF0aW9uIFVJJyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXRpYWxpemF0aW9uUHJvcHMpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0aWFsaXphdGlvblByb3BzLmF0dHJpYnV0ZXNNYXAgPVxuICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLnN0YXRlLmd1aWRlZFNlbGxpbmc7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlndXJhdGlvblN0YXRlLmluaXQkKCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmVJdGVtSWQocXVvdGU6IFF1b3RlRHJhZnQsIHByb2R1Y3RJZDogc3RyaW5nLCBsaW5lSXRlbUlkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBzZWFyY2ggYnkgbGluZUl0ZW1JZCBmaXJzdFxuICAgIGxldCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkuaWQgPT09IGxpbmVJdGVtSWQpPy5pZDtcblxuICAgIGlmICghaWQgJiYgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc1N0YW5kYWxvbmUpIHtcbiAgICAgIGlkID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQobGkgPT4gbGkucHJvZHVjdElkID09PSBwcm9kdWN0SWQpPy5pZDtcbiAgICB9XG5cbiAgICByZXR1cm4gaWQ7XG4gIH1cbn1cbiIsIjx2bC1jbXMtcHJldmlldyBbdWlEZWZpbml0aW9uXT1cIiRhbnkodWlEZWZpbml0aW9uJCB8IGFzeW5jKVwiIFtjb25maWddPVwiY29uZmlnXCI+PC92bC1jbXMtcHJldmlldz5cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJGLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQXFCLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBUTdGLE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0IsWUFDVSxjQUE4QixFQUM5QiwyQkFBd0QsRUFDeEQsb0JBQTBDLEVBQzFDLGtCQUFzQyxFQUN0QyxpQkFBb0MsRUFDcEMsZ0JBQWtDLEVBQ00sb0JBQXdDO1FBTmhGLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFD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QUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFpQixFQUFFLFNBQWlCLEVBQUUsVUFBbUI7UUFDN0UsNkJBQTZCO1FBQzdCLElBQUksRUFBRSxHQUF1QixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRXJGLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUM5QyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNwRTtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7NkdBbkZVLGdCQUFnQixrT0FXTCxrQkFBa0I7aUdBWDdCLGdCQUFnQix1RENuQjdCLHdHQUNBOzJGRGtCYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OzBCQWE1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1b3RlRHJhZnQsIFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ01TUHJldmlld0NvbmZpZywgSW50ZWdyYXRpb25TdGF0ZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jbXMnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblN0YXRlLFxuICBDb250ZXh0U2VydmljZSxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93Q3VzdG9taXphdGlvbiwgRkxPV19DVVNUT01JWkFUSU9OIH0gZnJvbSAnLi4vLi4vdHlwZXMvZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtZmxvdy1wcm9kdWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0Q29tcG9uZW50IHtcbiAgcHVibGljIGNvbmZpZzogQ01TUHJldmlld0NvbmZpZztcbiAgcHVibGljIHVpRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJRGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZTogQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlOiBDb25maWd1cmF0aW9uU3RhdGUsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaW5pdCQ6ICgpID0+IHRoaXMuaW5pdCQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21pemVVSSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQgfSA9IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0ID8/IHt9O1xuICAgIGlmICghcHJvZHVjdElkIHx8ICF0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRVaURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldFVpRGVmaW5pdGlvbihwcm9kdWN0SWQpLnBpcGUoXG4gICAgICBtYXAodWlEZWZpbml0aW9uQ29udGFpbmVyID0+IHtcbiAgICAgICAgaWYgKHVpRGVmaW5pdGlvbkNvbnRhaW5lcikge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLm92ZXJyaWRlVUlEZWZpbml0aW9uKHVpRGVmaW5pdGlvbkNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQkLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgc3dpdGNoTWFwKHF1b3RlID0+IHtcbiAgICAgICAgY29uc3QgY29udGV4dFByb3BlcnRpZXMgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5wcm9wZXJ0aWVzO1xuICAgICAgICBjb25zdCBwcm9kdWN0SWQgPSBjb250ZXh0UHJvcGVydGllcy5wcm9kdWN0SWQ7XG5cbiAgICAgICAgaWYgKCFwcm9kdWN0SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBzdGFydCBjb25maWd1cmF0aW9uIGZvciAncHJvZHVjdElkID09IG51bGwnYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaW5lSXRlbUlkID0gdGhpcy5nZXRMaW5lSXRlbUlkKHF1b3RlLCBwcm9kdWN0SWQsIGNvbnRleHRQcm9wZXJ0aWVzLmxpbmVJdGVtSWQpO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGVJdGVtID0gcXVvdGUuY3VycmVudFN0YXRlLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGxpbmVJdGVtSWQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50U3RhdGVJdGVtKSB7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zZXRDb25maWd1cmFibGVSYW1wKGN1cnJlbnRTdGF0ZUl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBvZmZlcmluZ0lkIH0gPSBjdXJyZW50U3RhdGVJdGVtID8/IHt9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5pbml0KHsgcHJvZHVjdElkLCBvZmZlcmluZ0lkIH0pO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXN0b21pemVVSSQoKSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB1aURlZmluaXRpb24gPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dD8udWlEZWZpbml0aW9uQ29udGFpbmVyPy5zb3VyY2U7XG4gICAgICAgIGlmICh1aURlZmluaXRpb24pIHtcbiAgICAgICAgICB0aGlzLnVpRGVmaW5pdGlvbiQubmV4dCh1aURlZmluaXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZHVjdCBkb2VzIG5vdCBoYXZlIENvbmZpZ3VyYXRpb24gVUknKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdGlhbGl6YXRpb25Qcm9wcykge1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXRpYWxpemF0aW9uUHJvcHMuYXR0cmlidXRlc01hcCA9XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uU3RhdGUuc3RhdGUuZ3VpZGVkU2VsbGluZztcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGUuaW5pdCQoKSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGluZUl0ZW1JZChxdW90ZTogUXVvdGVEcmFmdCwgcHJvZHVjdElkOiBzdHJpbmcsIGxpbmVJdGVtSWQ/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIHNlYXJjaCBieSBsaW5lSXRlbUlkIGZpcnN0XG4gICAgbGV0IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5pZCA9PT0gbGluZUl0ZW1JZCk/LmlkO1xuXG4gICAgaWYgKCFpZCAmJiB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzU3RhbmRhbG9uZSkge1xuICAgICAgaWQgPSBxdW90ZS5jdXJyZW50U3RhdGUuZmluZChsaSA9PiBsaS5wcm9kdWN0SWQgPT09IHByb2R1Y3RJZCk/LmlkO1xuICAgIH1cblxuICAgIHJldHVybiBpZDtcbiAgfVxufVxuIiwiPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwiJGFueSh1aURlZmluaXRpb24kIHwgYXN5bmMpXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3ZsLWNtcy1wcmV2aWV3PlxuIl19
@@ -6,10 +6,10 @@ import { ProductComponent } from './product.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class ProductModule {
8
8
  }
9
- ProductModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- ProductModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: ProductModule, declarations: [ProductComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [ProductComponent] });
11
- ProductModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductModule, imports: [CommonModule, PreviewModule, LoaderModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductModule, decorators: [{
9
+ ProductModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ ProductModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, declarations: [ProductComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [ProductComponent] });
11
+ ProductModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, imports: [CommonModule, PreviewModule, LoaderModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [ProductComponent],
@@ -16,9 +16,9 @@ export class RecordNotFoundComponent {
16
16
  }
17
17
  }
18
18
  }
19
- RecordNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RecordNotFoundComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20
- RecordNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: RecordNotFoundComponent, selector: "vl-flow-record-not-found", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div class=\"msg\">\n <div *ngIf=\"message; else defaultMessage\" class=\"message-title\">\n <p>{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"message-title\">{{ subMessage }}</p>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;padding:24px 54px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RecordNotFoundComponent, decorators: [{
19
+ RecordNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
20
+ RecordNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RecordNotFoundComponent, selector: "vl-flow-record-not-found", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div class=\"msg\">\n <div *ngIf=\"message; else defaultMessage\" class=\"message-title\">\n <p>{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"message-title\">{{ subMessage }}</p>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;padding:24px 54px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{ selector: 'vl-flow-record-not-found', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div class=\"msg\">\n <div *ngIf=\"message; else defaultMessage\" class=\"message-title\">\n <p>{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"message-title\">{{ subMessage }}</p>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;padding:24px 54px}\n"] }]
24
24
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }]; } });
@@ -7,10 +7,10 @@ import * as i1 from "@angular/router";
7
7
  const routes = [{ path: '', component: RecordNotFoundComponent }];
8
8
  export class RecordNotFoundModule {
9
9
  }
10
- RecordNotFoundModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RecordNotFoundModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- RecordNotFoundModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: RecordNotFoundModule, declarations: [RecordNotFoundComponent], imports: [CommonModule, i1.RouterModule] });
12
- RecordNotFoundModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RecordNotFoundModule, imports: [CommonModule, RouterModule.forChild(routes)] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RecordNotFoundModule, decorators: [{
10
+ RecordNotFoundModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ RecordNotFoundModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundModule, declarations: [RecordNotFoundComponent], imports: [CommonModule, i1.RouterModule] });
12
+ RecordNotFoundModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundModule, imports: [CommonModule, RouterModule.forChild(routes)] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RecordNotFoundModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [RecordNotFoundComponent],
@@ -1,10 +1,10 @@
1
1
  import { Location } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { UUID, getUIDefinitionProperties, isLegacyUIDefinition, } from '@veloceapps/core';
3
+ import { UUID, } from '@veloceapps/core';
4
4
  import { FlowAction, IntegrationState } from '@veloceapps/sdk/cms';
5
5
  import { ConfigurationRuntimeService, ConfigurationService, ConfigurationState, ContextService, QuoteDraftService, } from '@veloceapps/sdk/core';
6
6
  import { MessageService } from 'primeng/api';
7
- import { BehaviorSubject, Subject, catchError, first, of, switchMap, takeUntil, tap, throwError, } from 'rxjs';
7
+ import { BehaviorSubject, catchError, first, of, Subject, switchMap, takeUntil, tap, throwError, } from 'rxjs';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@veloceapps/sdk/core";
10
10
  import * as i2 from "primeng/api";
@@ -56,9 +56,8 @@ export class RemoteComponent {
56
56
  this.runtimeService
57
57
  .init({ productId })
58
58
  .pipe(first(), tap(context => {
59
- const uiDefinitionProperties = getUIDefinitionProperties(context.uiDefinitionContainer);
60
- const uiDefinition = context.uiDefinitionContainer?.source;
61
- this.uiDefinition = uiDefinition && !isLegacyUIDefinition(uiDefinition) ? uiDefinition : undefined;
59
+ const uiDefinitionProperties = context.uiDefinitionContainer?.source.properties ?? {};
60
+ this.uiDefinition = context.uiDefinitionContainer?.source;
62
61
  const pricingEnabled = uiDefinitionProperties.pricingEnabled ? 'true' : 'false';
63
62
  const priceListId = uiDefinitionProperties.priceList;
64
63
  const runtimeContextProperties = this.runtimeService.runtimeContext?.properties;
@@ -333,10 +332,10 @@ export class RemoteComponent {
333
332
  return optionConfigurations;
334
333
  }
335
334
  }
336
- RemoteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RemoteComponent, deps: [{ token: i1.ContextService }, { token: i1.QuoteDraftService }, { token: i1.ConfigurationRuntimeService }, { token: i1.ConfigurationService }, { token: i1.ConfigurationState }, { token: i2.MessageService }, { token: i3.IntegrationState }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component });
337
- RemoteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: RemoteComponent, selector: "vl-flow-remote", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i5.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RemoteComponent, decorators: [{
335
+ RemoteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteComponent, deps: [{ token: i1.ContextService }, { token: i1.QuoteDraftService }, { token: i1.ConfigurationRuntimeService }, { token: i1.ConfigurationService }, { token: i1.ConfigurationState }, { token: i2.MessageService }, { token: i3.IntegrationState }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component });
336
+ RemoteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RemoteComponent, selector: "vl-flow-remote", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i5.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteComponent, decorators: [{
339
338
  type: Component,
340
339
  args: [{ selector: 'vl-flow-remote', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n" }]
341
340
  }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i1.QuoteDraftService }, { type: i1.ConfigurationRuntimeService }, { type: i1.ConfigurationService }, { type: i1.ConfigurationState }, { type: i2.MessageService }, { type: i3.IntegrationState }, { type: i4.Location }]; } });
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9yZW1vdGUvcmVtb3RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9yZW1vdGUvcmVtb3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFVTCxJQUFJLEVBRUoseUJBQXlCLEVBQ3pCLG9CQUFvQixHQUNyQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLGlCQUFpQixHQUVsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssRUFDTCxFQUFFLEVBQ0YsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZ0JkLE1BQU0sT0FBTyxlQUFlO0lBUzFCLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLGNBQTJDLEVBQzNDLG9CQUEwQyxFQUMxQyxrQkFBc0MsRUFDdEMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFFBQWtCO1FBUGxCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1C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LENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNsRztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLHVCQUF1QixDQUFDLE9BQW1CO1FBQ2pELE1BQU0sb0JBQW9CLEdBQTZDLEVBQUUsQ0FBQztRQUMxRSxNQUFNLDJCQUEyQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7UUFFdkUsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRCxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekUsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDOzs0R0F6WlUsZUFBZTtnR0FBZixlQUFlLHNEQ3RENUIsd1ZBU0E7MkZENkNhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENoYXJnZUdyb3VwSXRlbSxcbiAgQ29udGV4dFByb3BlcnRpZXMsXG4gIExpbmVJdGVtLFxuICBScGNNZXNzYWdlLFxuICBScGNPcHRpb24sXG4gIFJwY09wdGlvbkNvbmZpZ3VyYXRpb24sXG4gIFJwY1Byb2R1Y3QsXG4gIFJwY1F1b3RlLFxuICBVSURlZmluaXRpb24sXG4gIFVVSUQsXG4gIFZsV2luZG93LFxuICBnZXRVSURlZmluaXRpb25Qcm9wZXJ0aWVzLFxuICBpc0xlZ2FjeVVJRGVmaW5pdGlvbixcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBGbG93QWN0aW9uLCBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2Ntcyc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU3RhdGUsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBRdW90ZURyYWZ0U2VydmljZSxcbiAgUnVudGltZUNvbnRleHQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjYXRjaEVycm9yLFxuICBmaXJzdCxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGluZUl0ZW1XaXRoUGFyZW50IH0gZnJvbSAnLi9yZW1vdGUudHlwZXMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogVmxXaW5kb3c7XG5cbmludGVyZmFjZSBTdGF0ZSB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGZhaWx1cmU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctcmVtb3RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlbW90ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlbW90ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVtb3RlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbj86IFVJRGVmaW5pdGlvbjtcbiAgcHVibGljIHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RhdGU+KHsgbG9hZGluZzogdHJ1ZSwgZmFpbHVyZTogZmFsc2UgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBEWU5BTUlDX09QVElPTl9QUk9EVUNUU19LRVkgPSAnRHluYW1pYyc7XG5cbiAgcHJpdmF0ZSBycGNNZXNzYWdlOiBScGNNZXNzYWdlO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZTogQ29uZmlndXJhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZWdyYXRpb25TdGF0ZTogSW50ZWdyYXRpb25TdGF0ZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgKSB7XG4gICAgdGhpcy5ycGNNZXNzYWdlID0gSlNPTi5wYXJzZSh3aW5kb3cuUlBDX01FU1NBR0UgYXMgc3RyaW5nKTtcbiAgICB0aGlzLnJwY01lc3NhZ2Uub3B0aW9ucy5zb3J0KChhLCBiKSA9PiAoYS5mZWF0dXJlTnVtYmVyID8/IDk5OTk5KSAtIChiLmZlYXR1cmVOdW1iZXIgPz8gOTk5OTkpKTtcbiAgICB0aGlzLnVwZGF0ZUhhc0NoaWxkcmVuRmxhZyh0aGlzLnJwY01lc3NhZ2UucHJvZHVjdC5jb25maWd1cmVkUHJvZHVjdElkKTtcblxuICAgIC8vIHVwZGF0ZSBjb250ZXh0IHByb3BlcnRpZXNcbiAgICBpZiAodGhpcy5ycGNNZXNzYWdlLnF1b3RlKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBDb250ZXh0UHJvcGVydGllcyA9IHt9O1xuXG4gICAgICBpZiAodGhpcy5ycGNNZXNzYWdlLnF1b3RlWydTQlFRX19PcHBvcnR1bml0eTJfX2MnXSkge1xuICAgICAgICBwcm9wZXJ0aWVzLk9wcG9ydHVuaXR5SWQgPSB0aGlzLnJwY01lc3NhZ2UucXVvdGVbJ1NCUVFfX09wcG9ydHVuaXR5Ml9fYyddO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLnJwY01lc3NhZ2UucXVvdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSkge1xuICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoeyBwcm9wZXJ0aWVzIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcbiAgICB0aGlzLmluaXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcHJvZHVjdElkID0gdGhpcy5ycGNNZXNzYWdlLnByb2R1Y3QuY29uZmlndXJlZFByb2R1Y3RJZDtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcblxuICAgIGlmICghcHJvZHVjdElkIHx8ICFxdW90ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucnVudGltZVNlcnZpY2VcbiAgICAgIC5pbml0KHsgcHJvZHVjdElkIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgdGFwKGNvbnRleHQgPT4ge1xuICAgICAgICAgIGNvbnN0IHVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSBnZXRVSURlZmluaXRpb25Qcm9wZXJ0aWVzKGNvbnRleHQudWlEZWZpbml0aW9uQ29udGFpbmVyKTtcbiAgICAgICAgICBjb25zdCB1aURlZmluaXRpb24gPSBjb250ZXh0LnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlO1xuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uID0gdWlEZWZpbml0aW9uICYmICFpc0xlZ2FjeVVJRGVmaW5pdGlvbih1aURlZmluaXRpb24pID8gdWlEZWZpbml0aW9uIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgY29uc3QgcHJpY2luZ0VuYWJsZWQgPSB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnByaWNpbmdFbmFibGVkID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICAgICAgICBjb25zdCBwcmljZUxpc3RJZCA9IHVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2VMaXN0O1xuXG4gICAgICAgICAgY29uc3QgcnVudGltZUNvbnRleHRQcm9wZXJ0aWVzID0gdGhpcy5ydW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dD8ucHJvcGVydGllcztcbiAgICAgICAgICBpZiAocnVudGltZUNvbnRleHRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBydW50aW1lQ29udGV4dFByb3BlcnRpZXMuUHJpY2VMaXN0SWQgPSBwcmljZUxpc3RJZDtcbiAgICAgICAgICAgIHJ1bnRpbWVDb250ZXh0UHJvcGVydGllcy5QcmljaW5nRW5hYmxlZCA9IHByaWNpbmdFbmFibGVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHtcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgTW9kZWxJZDogY29udGV4dC5tb2RlbElkLFxuICAgICAgICAgICAgICBSdW50aW1lTW9kZTogJ1RFU1QnLFxuICAgICAgICAgICAgICBQcmljaW5nRW5hYmxlZDogcHJpY2luZ0VuYWJsZWQsXG4gICAgICAgICAgICAgIFByaWNlTGlzdElkOiBwcmljZUxpc3RJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnNldENvbmZpZ3VyYWJsZVJhbXAodGhpcy5jcmVhdGVMaW5lSXRlbSgpKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMudGhyb3dJZk5vVUlEZWZpbml0aW9uKCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS5pbml0JCgpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdGUkLm5leHQoeyBsb2FkaW5nOiBmYWxzZSwgZmFpbHVyZTogZmFsc2UgfSkpLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMudWlEZWZpbml0aW9uPy5wcm9wZXJ0aWVzPy5zdXBwcmVzc1RvYXN0TWVzc2FnZXMpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IGVycm9yIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoeyBsb2FkaW5nOiBmYWxzZSwgZmFpbHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aHJvd0lmTm9VSURlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIDxUPihzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy51aURlZmluaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdQcm9kdWN0IGRvZXMgbm90IGhhdmUgQ29uZmlndXJhdGlvbiBVSScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzb3VyY2UkO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLlJFTU9URV9DQU5DRUwpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kKEZsb3dBY3Rpb24uUkVNT1RFX0FQUExZKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnNhdmVScGNNZXNzYWdlKCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTGluZUl0ZW0oKTogTGluZUl0ZW0ge1xuICAgIGNvbnN0IFtxdW90ZURyYWZ0TGluZUl0ZW1dID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgPz8gW107XG4gICAgaWYgKHF1b3RlRHJhZnRMaW5lSXRlbSAmJiAocXVvdGVEcmFmdExpbmVJdGVtLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCB8fCBxdW90ZURyYWZ0TGluZUl0ZW0ubGluZUl0ZW1zLmxlbmd0aCA+IDApKSB7XG4gICAgICByZXR1cm4gcXVvdGVEcmFmdExpbmVJdGVtO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5jcmVhdGVSb290TGluZUl0ZW0oKTtcbiAgICBjb25zdCBkeW5hbWljT3B0aW9uUHJvZHVjdHMgPSB0aGlzLnJwY01lc3NhZ2UucHJvZHVjdC5vcHRpb25Db25maWd1cmF0aW9uc1t0aGlzLkRZTkFNSUNfT1BUSU9OX1BST0RVQ1RTX0tFWV07XG5cbiAgICBpZiAoZHluYW1pY09wdGlvblByb2R1Y3RzKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy50b1BhcmVudENoaWxkTWFwKGR5bmFtaWNPcHRpb25Qcm9kdWN0cyk7XG4gICAgICBsZXQgaXRlbXMgPSBbbGluZUl0ZW1dO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gb3B0aW9ucy5nZXQoaXRlbS5pZCk7XG4gICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgIGl0ZW0ubGluZUl0ZW1zID0gY2hpbGRyZW47XG4gICAgICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsaW5lSXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUm9vdExpbmVJdGVtKCk6IExpbmVJdGVtIHtcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5ycGNNZXNzYWdlLnByb2R1Y3Q7XG4gICAgY29uc3QgcnVudGltZUNvbnRleHQgPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0IGFzIFJ1bnRpbWVDb250ZXh0O1xuICAgIGNvbnN0IHZlbG9jZUluc3RhbmNlSWQgPSBwcm9kdWN0LmNvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzWydWZWxvY2VJbnN0YW5jZUlkX19jJ107XG4gICAgY29uc3QgcXVvdGVJZCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY3VycmVudFN0YXRlWzBdPy5pZDtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogcXVvdGVJZCB8fCB2ZWxvY2VJbnN0YW5jZUlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgdHlwZTogcnVudGltZUNvbnRleHQucHJvZHVjdFR5cGUgPz8gJycsXG4gICAgICBuYW1lOiBydW50aW1lQ29udGV4dC5wcm9wZXJ0aWVzPy5bJ2Rpc3BsYXlOYW1lJ10gfHwgcnVudGltZUNvbnRleHQucHJvZHVjdE5hbWUsXG4gICAgICBwcm9kdWN0TmFtZTogcnVudGltZUNvbnRleHQucHJvZHVjdE5hbWUsXG4gICAgICBwcm9kdWN0SWQ6IHJ1bnRpbWVDb250ZXh0LnByb2R1Y3RJZCxcbiAgICAgIGNmZ1N0YXR1czogJ0RlZmF1bHQnLFxuICAgICAgYWN0aW9uQ29kZTogJ0FERCcsXG4gICAgICBxdHk6IDEsXG4gICAgfSBhcyBMaW5lSXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgdG9QYXJlbnRDaGlsZE1hcChyZW1vdGVPcHRpb25Qcm9kdWN0czogUnBjT3B0aW9uQ29uZmlndXJhdGlvbltdKTogTWFwPHN0cmluZywgTGluZUl0ZW1bXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBMaW5lSXRlbVtdPigpO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgcmVtb3RlT3B0aW9uUHJvZHVjdHMpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25EYXRhID0gb3B0aW9uPy5yZWFkT25seT8ubGluZTtcbiAgICAgIGNvbnN0IGlkID0gY29uZmlndXJhdGlvbkRhdGE/LlZlbG9jZUluc3RhbmNlSWRfX2M7XG4gICAgICBjb25zdCBwYXJlbnRJZCA9IGNvbmZpZ3VyYXRpb25EYXRhPy5WZWxvY2VQYXJlbnRJbnN0YW5jZUlkX19jO1xuXG4gICAgICBpZiAoIW9wdGlvbi5zZWxlY3RlZCB8fCAhY29uZmlndXJhdGlvbkRhdGEgfHwgIWlkIHx8ICFwYXJlbnRJZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvZHVjdElkID0gb3B0aW9uLnByb2R1Y3RJZDtcbiAgICAgIGNvbnN0IGxpbmVJdGVtID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgcHJvZHVjdElkLFxuICAgICAgICBwYXJlbnRJZCxcbiAgICAgICAgdHlwZTogY29uZmlndXJhdGlvbkRhdGEuTW9kZWxUeXBlX19jLFxuICAgICAgICBwb3J0OiBjb25maWd1cmF0aW9uRGF0YS5Nb2RlbFBvcnRfX2MsXG4gICAgICAgIGNmZ1N0YXR1czogY29uZmlndXJhdGlvbkRhdGEuQ29uZmlndXJhdGlvblN0YXR1c19fYyxcbiAgICAgICAgYWN0aW9uQ29kZTogY29uZmlndXJhdGlvbkRhdGEuQWN0aW9uQ29kZV9fYyxcbiAgICAgICAgcXR5OiBvcHRpb24uUXVhbnRpdHksXG4gICAgICB9IGFzIExpbmVJdGVtO1xuXG4gICAgICBsZXQgc2libGluZ3MgPSByZXN1bHQuZ2V0KHByb2R1Y3RJZCk7XG4gICAgICBpZiAoIXNpYmxpbmdzKSB7XG4gICAgICAgIHJlc3VsdC5zZXQocGFyZW50SWQsIChzaWJsaW5ncyA9IFtdKSk7XG4gICAgICB9XG5cbiAgICAgIHNpYmxpbmdzLnB1c2gobGluZUl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUnBjTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBjb25zdCBsaW5lSXRlbSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0U25hcHNob3QoKTtcblxuICAgIGlmICghcXVvdGUgfHwgIWxpbmVJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ycGNNZXNzYWdlLlZlbG9jZVJlZmVyZW5jZUlkID0gcXVvdGUucXVvdGVJZDtcbiAgICB0aGlzLnJwY01lc3NhZ2UucHJvZHVjdC5jb25maWd1cmF0aW9uRGF0YS5WZWxvY2VJbnN0YW5jZUlkX19jID0gbGluZUl0ZW0uaWQ7XG4gICAgY29uc3QgY2hpbGRJdGVtcyA9IHRoaXMuZmxhdHRlbkNoaWxkTGluZUl0ZW1zKGxpbmVJdGVtKTtcbiAgICBjb25zdCBzYXZpbmdNb2RlID0gd2luZG93LlNhdmluZ01vZGU7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnREYXRhKHRoaXMucnBjTWVzc2FnZS5wcm9kdWN0LCBsaW5lSXRlbSk7XG4gICAgdGhpcy5ycGNNZXNzYWdlLnF1b3RlID0gdGhpcy5tYXBBdHRyaWJ1dGVzVG8oJ1F1b3RlJywgbGluZUl0ZW0pIGFzIFJwY1F1b3RlO1xuXG4gICAgaWYgKHNhdmluZ01vZGUgPT09ICdBTEwnKSB7XG4gICAgICBjb25zdCBvcHRpb25Db25maWd1cmF0aW9ucyA9IHRoaXMuZ2V0T3B0aW9uQ29uZmlndXJhdGlvbnModGhpcy5ycGNNZXNzYWdlLnByb2R1Y3QpO1xuICAgICAgY29uc3Qgcm9vdFByb2R1Y3RPcHRpb25zID0gdGhpcy5ycGNNZXNzYWdlLm9wdGlvbnMuZmlsdGVyKHBvID0+IHBvLmNvbmZpZ3VyZWRQcm9kdWN0SWQgPT09IGxpbmVJdGVtLnByb2R1Y3RJZCk7XG5cbiAgICAgIGNoaWxkSXRlbXMuZm9yRWFjaChsaW5lSXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb3RPcHRpb24gPSByb290UHJvZHVjdE9wdGlvbnMuZmluZChwbyA9PiBwby5vcHRpb25hbFByb2R1Y3RJZCA9PT0gbGluZUl0ZW0ucHJvZHVjdElkKTtcbiAgICAgICAgaWYgKHJvb3RPcHRpb24pIHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlT3B0aW9ucyA9XG4gICAgICAgICAgICBvcHRpb25Db25maWd1cmF0aW9uc1tyb290T3B0aW9uLmZlYXR1cmVOYW1lXSA/PyAob3B0aW9uQ29uZmlndXJhdGlvbnNbcm9vdE9wdGlvbi5mZWF0dXJlTmFtZV0gPSBbXSk7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luT3B0aW9uID0gIXJvb3RPcHRpb24uaGFzQ2hpbGRyZW5cbiAgICAgICAgICAgID8gb3B0aW9uQ29uZmlndXJhdGlvbnNbcm9vdE9wdGlvbi5mZWF0dXJlTmFtZV0uZmluZCgoeyBvcHRpb25JZCB9KSA9PiBvcHRpb25JZCA9PT0gcm9vdE9wdGlvbi5vcHRpb25JZClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbjogUnBjT3B0aW9uQ29uZmlndXJhdGlvbiA9IG9yaWdpbk9wdGlvbiA/PyAoe30gYXMgUnBjT3B0aW9uQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgICBvcHRpb24ub3B0aW9uSWQgPSBvcHRpb24ub3B0aW9uSWQgPz8gcm9vdE9wdGlvbi5vcHRpb25JZDtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnREYXRhKG9wdGlvbiwgbGluZUl0ZW0pO1xuICAgICAgICAgIG9wdGlvbi5pbmRleCA9IG9wdGlvbi5pbmRleCA/PyBmZWF0dXJlT3B0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgIGlmICghb3JpZ2luT3B0aW9uKSB7XG4gICAgICAgICAgICBmZWF0dXJlT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxpbmVJdGVtLnBhcmVudExpbmVJdGVtKSB7XG4gICAgICAgICAgICBjb25zdCBuZXN0ZWRQcm9kdWN0T3B0aW9uID0gdGhpcy5ycGNNZXNzYWdlLm9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgcG8gPT5cbiAgICAgICAgICAgICAgICBwby5jb25maWd1cmVkUHJvZHVjdElkID09PSBsaW5lSXRlbS5wYXJlbnRMaW5lSXRlbT8ucHJvZHVjdElkICYmXG4gICAgICAgICAgICAgICAgcG8ub3B0aW9uYWxQcm9kdWN0SWQgPT09IGxpbmVJdGVtLnByb2R1Y3RJZCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChuZXN0ZWRQcm9kdWN0T3B0aW9uKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5jb25maWd1cmF0aW9uRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb24uY29uZmlndXJhdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgVmVsb2NlUGFyZW50SW5zdGFuY2VJZF9fYzogbGluZUl0ZW0ucGFyZW50TGluZUl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgVmVsb2NlTmVzdGVkT3B0aW9uSWRfX2M6IG5lc3RlZFByb2R1Y3RPcHRpb24ub3B0aW9uSWQsXG4gICAgICAgICAgICAgICAgVmVsb2NlTmVzdGVkRmVhdHVyZUlkX19jOiBuZXN0ZWRQcm9kdWN0T3B0aW9uLmZlYXR1cmVJZCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ycGNNZXNzYWdlLmR5bmFtaWNGZWF0dXJlcy5mb3JFYWNoKGZlYXR1cmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmVhdHVyZU9wdGlvbnMgPSBvcHRpb25Db25maWd1cmF0aW9uc1tmZWF0dXJlLm5hbWVdID8/IChvcHRpb25Db25maWd1cmF0aW9uc1tmZWF0dXJlLm5hbWVdID0gW10pO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luT3B0aW9uID0gZmVhdHVyZU9wdGlvbnMuZmluZCgoeyBwcm9kdWN0SWQgfSkgPT4gcHJvZHVjdElkID09PSBsaW5lSXRlbS5wcm9kdWN0SWQpO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uOiBScGNPcHRpb25Db25maWd1cmF0aW9uID0gb3JpZ2luT3B0aW9uID8/ICh7fSBhcyBScGNPcHRpb25Db25maWd1cmF0aW9uKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50RGF0YShvcHRpb24sIGxpbmVJdGVtKTtcbiAgICAgICAgICAgIG9wdGlvbi5pbmRleCA9IG9wdGlvbi5pbmRleCA/PyBmZWF0dXJlT3B0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoIW9yaWdpbk9wdGlvbikge1xuICAgICAgICAgICAgICBmZWF0dXJlT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJwY01lc3NhZ2UucHJvZHVjdCA9IHsgLi4udGhpcy5ycGNNZXNzYWdlLnByb2R1Y3QsIG9wdGlvbkNvbmZpZ3VyYXRpb25zIH07XG4gICAgfVxuXG4gICAgd2luZG93LlJQQ19CUk9BRENBU1Q/LmFwcGx5KG51bGwsIFt0aGlzLnJwY01lc3NhZ2VdKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSGFzQ2hpbGRyZW5GbGFnKGJ1bmRsZVByb2R1Y3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnVuZGxlT3B0aW9uc0J5T3B0aW9uSWQ6IFJlY29yZDxzdHJpbmcsIFJwY09wdGlvbj4gPSB7fTtcbiAgICBjb25zdCBub3RCdW5kbGVPcHRpb25zOiBScGNPcHRpb25bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcHJvZHVjdE9wdGlvbiBvZiB0aGlzLnJwY01lc3NhZ2Uub3B0aW9ucykge1xuICAgICAgaWYgKHByb2R1Y3RPcHRpb24uY29uZmlndXJlZFByb2R1Y3RJZCA9PT0gYnVuZGxlUHJvZHVjdElkKSB7XG4gICAgICAgIGJ1bmRsZU9wdGlvbnNCeU9wdGlvbklkW3Byb2R1Y3RPcHRpb24ub3B0aW9uYWxQcm9kdWN0SWRdID0gcHJvZHVjdE9wdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vdEJ1bmRsZU9wdGlvbnMucHVzaChwcm9kdWN0T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygbm90QnVuZGxlT3B0aW9ucykge1xuICAgICAgaWYgKGJ1bmRsZU9wdGlvbnNCeU9wdGlvbklkW29wdGlvbi5jb25maWd1cmVkUHJvZHVjdElkXSkge1xuICAgICAgICBidW5kbGVPcHRpb25zQnlPcHRpb25JZFtvcHRpb24uY29uZmlndXJlZFByb2R1Y3RJZF0uaGFzQ2hpbGRyZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbkNoaWxkTGluZUl0ZW1zKGxpbmVJdGVtOiBMaW5lSXRlbSk6IExpbmVJdGVtV2l0aFBhcmVudFtdIHtcbiAgICBsZXQgaXRlbXMgPSBsaW5lSXRlbS5saW5lSXRlbXMgPz8gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgaWYgKGl0ZW0ubGluZUl0ZW1zKSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGl0ZW0ubGluZUl0ZW1zLm1hcChsaSA9PiAoeyAuLi5saSwgcGFyZW50TGluZUl0ZW06IGl0ZW0gfSkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50RGF0YShlbnRpdHk6IFJwY1Byb2R1Y3QgfCBScGNPcHRpb25Db25maWd1cmF0aW9uLCBsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAobGluZUl0ZW0ucHJvZHVjdElkKSB7XG4gICAgICBlbnRpdHkucHJvZHVjdElkID0gbGluZUl0ZW0ucHJvZHVjdElkO1xuICAgIH1cblxuICAgIGNvbnN0IHF1YW50aXR5QXR0cmlidXRlID0gbGluZUl0ZW0ucHJvcGVydGllc1sncXVhbnRpdHlBdHRyaWJ1dGUnXTtcbiAgICBlbnRpdHkuUXVhbnRpdHkgPSBxdWFudGl0eUF0dHJpYnV0ZVxuICAgICAgPyBsaW5lSXRlbS5hdHRyaWJ1dGVzLmZpbmQoYXR0cmlidXRlID0+IGF0dHJpYnV0ZS5uYW1lID09PSBxdWFudGl0eUF0dHJpYnV0ZSk/LnZhbHVlID8/IDFcbiAgICAgIDogbGluZUl0ZW0ucXR5O1xuXG4gICAgY29uc3QgdG90YWxQcmljZSA9IHRoaXMuY29tcHV0ZU5ldFByaWNlKGxpbmVJdGVtKTtcbiAgICBjb25zdCB0YXJnZXRUb3RhbFByaWNlRmllbGQgPSBsaW5lSXRlbS5wcm9wZXJ0aWVzWydUYXJnZXRUb3RhbFByaWNlRmllbGQnXSB8fCAnVG90YWxQcmljZV9fYyc7XG4gICAgZW50aXR5LmNvbmZpZ3VyYXRpb25EYXRhW3RhcmdldFRvdGFsUHJpY2VGaWVsZF0gPSBlbnRpdHkuY29uZmlndXJhdGlvbkRhdGFbdGFyZ2V0VG90YWxQcmljZUZpZWxkXVxuICAgICAgPyBlbnRpdHkuY29uZmlndXJhdGlvbkRhdGFbdGFyZ2V0VG90YWxQcmljZUZpZWxkXSArIHRvdGFsUHJpY2VcbiAgICAgIDogdG90YWxQcmljZTtcblxuICAgIGNvbnN0IHRhcmdldFByaWNlRmllbGQgPSBsaW5lSXRlbS5wcm9wZXJ0aWVzWydUYXJnZXRQcmljZUZpZWxkJ10gfHwgJ1NCUVFfX0xpc3RQcmljZV9fYyc7XG4gICAgY29uc3QgcHJpY2UgPSBlbnRpdHkuUXVhbnRpdHkgIT0gbnVsbCA/IGVudGl0eS5jb25maWd1cmF0aW9uRGF0YVt0YXJnZXRUb3RhbFByaWNlRmllbGRdIC8gZW50aXR5LlF1YW50aXR5IHx8IDAgOiAwO1xuICAgIGNvbnN0IHRhcmdldFByaWNlVmFsdWUgPSBOdW1iZXIoZW50aXR5LmNvbmZpZ3VyYXRpb25EYXRhW3RhcmdldFByaWNlRmllbGRdKSB8fCAwO1xuICAgIGVudGl0eS5jb25maWd1cmF0aW9uRGF0YVt0YXJnZXRQcmljZUZpZWxkXSA9IHRhcmdldFByaWNlVmFsdWVcbiAgICAgID8gKHRhcmdldFByaWNlVmFsdWUgKyBwcmljZSkudG9GaXhlZCgyKVxuICAgICAgOiBwcmljZS50b0ZpeGVkKDIpO1xuXG4gICAgZW50aXR5LmNvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzID0gdGhpcy5tYXBBdHRyaWJ1dGVzVG8oJ0F0dHJpYnV0ZScsIGxpbmVJdGVtKTtcbiAgICBlbnRpdHkuY29uZmlndXJhdGlvbkRhdGEgPSB7XG4gICAgICAuLi5lbnRpdHkuY29uZmlndXJhdGlvbkRhdGEsXG4gICAgICAuLi50aGlzLm1hcEF0dHJpYnV0ZXNUbygnRmllbGQnLCBsaW5lSXRlbSksXG4gICAgICAuLi50aGlzLm1hcEF0dHJpYnV0ZXNUbygnJywgbGluZUl0ZW0pLFxuICAgICAgVmVsb2NlSW5zdGFuY2VJZF9fYzogbGluZUl0ZW0uaWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZU5ldFByaWNlKGxpbmVJdGVtOiBMaW5lSXRlbSk6IG51bWJlciB7XG4gICAgaWYgKGxpbmVJdGVtLnByb3BlcnRpZXNbJ0dyb3VwQ2hhcmdlcyddKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdW1OZXRQcmljZShsaW5lSXRlbS5jaGFyZ2VHcm91cEl0ZW1zLCB0aGlzLmdldENoYXJnZU5hbWVTZXQobGluZUl0ZW0ucHJvcGVydGllc1snR3JvdXBDaGFyZ2VzJ10pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdW1OZXRQcmljZShsaW5lSXRlbS5jaGFyZ2VJdGVtcywgdGhpcy5nZXRDaGFyZ2VOYW1lU2V0KGxpbmVJdGVtLnByb3BlcnRpZXNbJ0NoYXJnZXMnXSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGFyZ2VOYW1lU2V0KHByb3BlcnR5Pzogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbmV3IFNldChwcm9wZXJ0eS5zcGxpdCgnLCcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdW1OZXRQcmljZShjaGFyZ2VJdGVtczogQ2hhcmdlR3JvdXBJdGVtW10sIGNoYXJnZXM6IFNldDxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgbmV0UHJpY2UgPSAwO1xuXG4gICAgZm9yIChjb25zdCBjaGFyZ2VJdGVtIG9mIGNoYXJnZUl0ZW1zKSB7XG4gICAgICBpZiAoIWNoYXJnZXMgfHwgY2hhcmdlcy5oYXMoY2hhcmdlSXRlbS5jaGFyZ2VUeXBlKSkge1xuICAgICAgICBuZXRQcmljZSArPSBjaGFyZ2VJdGVtLm5ldFByaWNlID8/IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldFByaWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBBdHRyaWJ1dGVzVG8odGFyZ2V0OiBzdHJpbmcsIGxpbmVJdGVtOiBMaW5lSXRlbSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMucnVudGltZVNlcnZpY2UucnVudGltZU1vZGVsPy5jb21wb25lbnRzLmdldChsaW5lSXRlbS50eXBlKTtcblxuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9ICdtYXBUbycgKyB0YXJnZXQ7XG4gICAgY29tcG9uZW50LmF0dHJpYnV0ZXNcbiAgICAgIC5maWx0ZXIoYSA9PiBhLnByb3BlcnRpZXMgJiYgYS5wcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0pXG4gICAgICAuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gbGluZUl0ZW0uYXR0cmlidXRlcy5maW5kKGEgPT4gYS5uYW1lID09PSBtYXBwaW5nLm5hbWUpO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICBuZXcgU2V0KG1hcHBpbmcucHJvcGVydGllc1twcm9wZXJ0eU5hbWVdLnNwbGl0KCcsJykpLmZvckVhY2goayA9PiAocmVzdWx0W2tdID0gYXR0cmlidXRlLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3B0aW9uQ29uZmlndXJhdGlvbnMocHJvZHVjdDogUnBjUHJvZHVjdCk6IFJlY29yZDxzdHJpbmcsIFJwY09wdGlvbkNvbmZpZ3VyYXRpb25bXT4ge1xuICAgIGNvbnN0IG9wdGlvbkNvbmZpZ3VyYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBScGNPcHRpb25Db25maWd1cmF0aW9uW10+ID0ge307XG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbkNvbmZpZ3VyYXRpb25zID0gcHJvZHVjdC5vcHRpb25Db25maWd1cmF0aW9ucyA/PyB7fTtcblxuICAgIE9iamVjdC5rZXlzKHJlcXVlc3RPcHRpb25Db25maWd1cmF0aW9ucykuZm9yRWFjaChrID0+IHtcbiAgICAgIG9wdGlvbkNvbmZpZ3VyYXRpb25zW2tdID0gKHJlcXVlc3RPcHRpb25Db25maWd1cmF0aW9uc1trXSA/PyBbXSkubWFwKG9wdCA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLm9wdCwgc2VsZWN0ZWQ6IGZhbHNlIH07XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvcHRpb25Db25maWd1cmF0aW9ucztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlJCB8IGFzeW5jIGFzIHN0YXRlXCI+XG4gIDx2bC1sb2FkZXIgKm5nSWY9XCJzdGF0ZS5sb2FkaW5nOyBlbHNlIGNvbnRlbnRcIiBbbGFiZWxdPVwiJ0xvYWRpbmcgVUknXCI+PC92bC1sb2FkZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RhdGUuZmFpbHVyZVwiPlxuICAgICAgPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwidWlEZWZpbml0aW9uXCI+PC92bC1jbXMtcHJldmlldz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9yZW1vdGUvcmVtb3RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9yZW1vdGUvcmVtb3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFVTCxJQUFJLEdBRUwsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxpQkFBaUIsR0FFbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLEtBQUssRUFFTCxFQUFFLEVBQ0YsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQWdCZCxNQUFNLE9BQU8sZUFBZTtJQVMxQixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxjQUEyQyxFQUMzQyxvQkFBMEMsRUFDMUMsa0JBQXNDLEVBQ3RDLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxRQUFrQjtRQVBsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FB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LENBQUMsQ0FBQztRQUVMLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxPQUFtQjtRQUNqRCxNQUFNLG9CQUFvQixHQUE2QyxFQUFFLENBQUM7UUFDMUUsTUFBTSwyQkFBMkIsR0FBRyxPQUFPLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDO1FBRXZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkQsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3pFLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQzs7NEdBeFpVLGVBQWU7Z0dBQWYsZUFBZSxzRENwRDVCLHdWQVNBOzJGRDJDYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDaGFyZ2VHcm91cEl0ZW0sXG4gIENvbnRleHRQcm9wZXJ0aWVzLFxuICBMaW5lSXRlbSxcbiAgUnBjTWVzc2FnZSxcbiAgUnBjT3B0aW9uLFxuICBScGNPcHRpb25Db25maWd1cmF0aW9uLFxuICBScGNQcm9kdWN0LFxuICBScGNRdW90ZSxcbiAgVUlEZWZpbml0aW9uLFxuICBVVUlELFxuICBWbFdpbmRvdyxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBGbG93QWN0aW9uLCBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2Ntcyc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU3RhdGUsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBRdW90ZURyYWZ0U2VydmljZSxcbiAgUnVudGltZUNvbnRleHQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjYXRjaEVycm9yLFxuICBmaXJzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGluZUl0ZW1XaXRoUGFyZW50IH0gZnJvbSAnLi9yZW1vdGUudHlwZXMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogVmxXaW5kb3c7XG5cbmludGVyZmFjZSBTdGF0ZSB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGZhaWx1cmU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctcmVtb3RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlbW90ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlbW90ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVtb3RlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbj86IFVJRGVmaW5pdGlvbjtcbiAgcHVibGljIHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RhdGU+KHsgbG9hZGluZzogdHJ1ZSwgZmFpbHVyZTogZmFsc2UgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBEWU5BTUlDX09QVElPTl9QUk9EVUNUU19LRVkgPSAnRHluYW1pYyc7XG5cbiAgcHJpdmF0ZSBycGNNZXNzYWdlOiBScGNNZXNzYWdlO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZTogQ29uZmlndXJhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZWdyYXRpb25TdGF0ZTogSW50ZWdyYXRpb25TdGF0ZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgKSB7XG4gICAgdGhpcy5ycGNNZXNzYWdlID0gSlNPTi5wYXJzZSh3aW5kb3cuUlBDX01FU1NBR0UgYXMgc3RyaW5nKTtcbiAgICB0aGlzLnJwY01lc3NhZ2Uub3B0aW9ucy5zb3J0KChhLCBiKSA9PiAoYS5mZWF0dXJlTnVtYmVyID8/IDk5OTk5KSAtIChiLmZlYXR1cmVOdW1iZXIgPz8gOTk5OTkpKTtcbiAgICB0aGlzLnVwZGF0ZUhhc0NoaWxkcmVuRmxhZyh0aGlzLnJwY01lc3NhZ2UucHJvZHVjdC5jb25maWd1cmVkUHJvZHVjdElkKTtcblxuICAgIC8vIHVwZGF0ZSBjb250ZXh0IHByb3BlcnRpZXNcbiAgICBpZiAodGhpcy5ycGNNZXNzYWdlLnF1b3RlKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBDb250ZXh0UHJvcGVydGllcyA9IHt9O1xuXG4gICAgICBpZiAodGhpcy5ycGNNZXNzYWdlLnF1b3RlWydTQlFRX19PcHBvcnR1bml0eTJfX2MnXSkge1xuICAgICAgICBwcm9wZXJ0aWVzLk9wcG9ydHVuaXR5SWQgPSB0aGlzLnJwY01lc3NhZ2UucXVvdGVbJ1NCUVFfX09wcG9ydHVuaXR5Ml9fYyddO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLnJwY01lc3NhZ2UucXVvdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSkge1xuICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoeyBwcm9wZXJ0aWVzIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcbiAgICB0aGlzLmluaXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcHJvZHVjdElkID0gdGhpcy5ycGNNZXNzYWdlLnByb2R1Y3QuY29uZmlndXJlZFByb2R1Y3RJZDtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcblxuICAgIGlmICghcHJvZHVjdElkIHx8ICFxdW90ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucnVudGltZVNlcnZpY2VcbiAgICAgIC5pbml0KHsgcHJvZHVjdElkIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgdGFwKGNvbnRleHQgPT4ge1xuICAgICAgICAgIGNvbnN0IHVpRGVmaW5pdGlvblByb3BlcnRpZXMgPSBjb250ZXh0LnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlLnByb3BlcnRpZXMgPz8ge307XG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24gPSBjb250ZXh0LnVpRGVmaW5pdGlvbkNvbnRhaW5lcj8uc291cmNlO1xuXG4gICAgICAgICAgY29uc3QgcHJpY2luZ0VuYWJsZWQgPSB1aURlZmluaXRpb25Qcm9wZXJ0aWVzLnByaWNpbmdFbmFibGVkID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICAgICAgICBjb25zdCBwcmljZUxpc3RJZCA9IHVpRGVmaW5pdGlvblByb3BlcnRpZXMucHJpY2VMaXN0O1xuXG4gICAgICAgICAgY29uc3QgcnVudGltZUNvbnRleHRQcm9wZXJ0aWVzID0gdGhpcy5ydW50aW1lU2VydmljZS5ydW50aW1lQ29udGV4dD8ucHJvcGVydGllcztcbiAgICAgICAgICBpZiAocnVudGltZUNvbnRleHRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBydW50aW1lQ29udGV4dFByb3BlcnRpZXMuUHJpY2VMaXN0SWQgPSBwcmljZUxpc3RJZDtcbiAgICAgICAgICAgIHJ1bnRpbWVDb250ZXh0UHJvcGVydGllcy5QcmljaW5nRW5hYmxlZCA9IHByaWNpbmdFbmFibGVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHtcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgTW9kZWxJZDogY29udGV4dC5tb2RlbElkLFxuICAgICAgICAgICAgICBSdW50aW1lTW9kZTogJ1RFU1QnLFxuICAgICAgICAgICAgICBQcmljaW5nRW5hYmxlZDogcHJpY2luZ0VuYWJsZWQsXG4gICAgICAgICAgICAgIFByaWNlTGlzdElkOiBwcmljZUxpc3RJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnNldENvbmZpZ3VyYWJsZVJhbXAodGhpcy5jcmVhdGVMaW5lSXRlbSgpKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMudGhyb3dJZk5vVUlEZWZpbml0aW9uKCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZS5pbml0JCgpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdGUkLm5leHQoeyBsb2FkaW5nOiBmYWxzZSwgZmFpbHVyZTogZmFsc2UgfSkpLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMudWlEZWZpbml0aW9uPy5wcm9wZXJ0aWVzPy5zdXBwcmVzc1RvYXN0TWVzc2FnZXMpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IGVycm9yIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoeyBsb2FkaW5nOiBmYWxzZSwgZmFpbHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aHJvd0lmTm9VSURlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIDxUPihzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiA9PiB7XG4gICAgICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy51aURlZmluaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdQcm9kdWN0IGRvZXMgbm90IGhhdmUgQ29uZmlndXJhdGlvbiBVSScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzb3VyY2UkO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJChGbG93QWN0aW9uLlJFTU9URV9DQU5DRUwpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kKEZsb3dBY3Rpb24uUkVNT1RFX0FQUExZKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnNhdmVScGNNZXNzYWdlKCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTGluZUl0ZW0oKTogTGluZUl0ZW0ge1xuICAgIGNvbnN0IFtxdW90ZURyYWZ0TGluZUl0ZW1dID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jdXJyZW50U3RhdGUgPz8gW107XG4gICAgaWYgKHF1b3RlRHJhZnRMaW5lSXRlbSAmJiAocXVvdGVEcmFmdExpbmVJdGVtLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCB8fCBxdW90ZURyYWZ0TGluZUl0ZW0ubGluZUl0ZW1zLmxlbmd0aCA+IDApKSB7XG4gICAgICByZXR1cm4gcXVvdGVEcmFmdExpbmVJdGVtO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5jcmVhdGVSb290TGluZUl0ZW0oKTtcbiAgICBjb25zdCBkeW5hbWljT3B0aW9uUHJvZHVjdHMgPSB0aGlzLnJwY01lc3NhZ2UucHJvZHVjdC5vcHRpb25Db25maWd1cmF0aW9uc1t0aGlzLkRZTkFNSUNfT1BUSU9OX1BST0RVQ1RTX0tFWV07XG5cbiAgICBpZiAoZHluYW1pY09wdGlvblByb2R1Y3RzKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy50b1BhcmVudENoaWxkTWFwKGR5bmFtaWNPcHRpb25Qcm9kdWN0cyk7XG4gICAgICBsZXQgaXRlbXMgPSBbbGluZUl0ZW1dO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gb3B0aW9ucy5nZXQoaXRlbS5pZCk7XG4gICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgIGl0ZW0ubGluZUl0ZW1zID0gY2hpbGRyZW47XG4gICAgICAgICAgaXRlbXMgPSBpdGVtcy5jb25jYXQoY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsaW5lSXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUm9vdExpbmVJdGVtKCk6IExpbmVJdGVtIHtcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5ycGNNZXNzYWdlLnByb2R1Y3Q7XG4gICAgY29uc3QgcnVudGltZUNvbnRleHQgPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnJ1bnRpbWVDb250ZXh0IGFzIFJ1bnRpbWVDb250ZXh0O1xuICAgIGNvbnN0IHZlbG9jZUluc3RhbmNlSWQgPSBwcm9kdWN0LmNvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzWydWZWxvY2VJbnN0YW5jZUlkX19jJ107XG4gICAgY29uc3QgcXVvdGVJZCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY3VycmVudFN0YXRlWzBdPy5pZDtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogcXVvdGVJZCB8fCB2ZWxvY2VJbnN0YW5jZUlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgdHlwZTogcnVudGltZUNvbnRleHQucHJvZHVjdFR5cGUgPz8gJycsXG4gICAgICBuYW1lOiBydW50aW1lQ29udGV4dC5wcm9wZXJ0aWVzPy5bJ2Rpc3BsYXlOYW1lJ10gfHwgcnVudGltZUNvbnRleHQucHJvZHVjdE5hbWUsXG4gICAgICBwcm9kdWN0TmFtZTogcnVudGltZUNvbnRleHQucHJvZHVjdE5hbWUsXG4gICAgICBwcm9kdWN0SWQ6IHJ1bnRpbWVDb250ZXh0LnByb2R1Y3RJZCxcbiAgICAgIGNmZ1N0YXR1czogJ0RlZmF1bHQnLFxuICAgICAgYWN0aW9uQ29kZTogJ0FERCcsXG4gICAgICBxdHk6IDEsXG4gICAgfSBhcyBMaW5lSXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgdG9QYXJlbnRDaGlsZE1hcChyZW1vdGVPcHRpb25Qcm9kdWN0czogUnBjT3B0aW9uQ29uZmlndXJhdGlvbltdKTogTWFwPHN0cmluZywgTGluZUl0ZW1bXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBMaW5lSXRlbVtdPigpO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgcmVtb3RlT3B0aW9uUHJvZHVjdHMpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25EYXRhID0gb3B0aW9uPy5yZWFkT25seT8ubGluZTtcbiAgICAgIGNvbnN0IGlkID0gY29uZmlndXJhdGlvbkRhdGE/LlZlbG9jZUluc3RhbmNlSWRfX2M7XG4gICAgICBjb25zdCBwYXJlbnRJZCA9IGNvbmZpZ3VyYXRpb25EYXRhPy5WZWxvY2VQYXJlbnRJbnN0YW5jZUlkX19jO1xuXG4gICAgICBpZiAoIW9wdGlvbi5zZWxlY3RlZCB8fCAhY29uZmlndXJhdGlvbkRhdGEgfHwgIWlkIHx8ICFwYXJlbnRJZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvZHVjdElkID0gb3B0aW9uLnByb2R1Y3RJZDtcbiAgICAgIGNvbnN0IGxpbmVJdGVtID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgcHJvZHVjdElkLFxuICAgICAgICBwYXJlbnRJZCxcbiAgICAgICAgdHlwZTogY29uZmlndXJhdGlvbkRhdGEuTW9kZWxUeXBlX19jLFxuICAgICAgICBwb3J0OiBjb25maWd1cmF0aW9uRGF0YS5Nb2RlbFBvcnRfX2MsXG4gICAgICAgIGNmZ1N0YXR1czogY29uZmlndXJhdGlvbkRhdGEuQ29uZmlndXJhdGlvblN0YXR1c19fYyxcbiAgICAgICAgYWN0aW9uQ29kZTogY29uZmlndXJhdGlvbkRhdGEuQWN0aW9uQ29kZV9fYyxcbiAgICAgICAgcXR5OiBvcHRpb24uUXVhbnRpdHksXG4gICAgICB9IGFzIExpbmVJdGVtO1xuXG4gICAgICBsZXQgc2libGluZ3MgPSByZXN1bHQuZ2V0KHByb2R1Y3RJZCk7XG4gICAgICBpZiAoIXNpYmxpbmdzKSB7XG4gICAgICAgIHJlc3VsdC5zZXQocGFyZW50SWQsIChzaWJsaW5ncyA9IFtdKSk7XG4gICAgICB9XG5cbiAgICAgIHNpYmxpbmdzLnB1c2gobGluZUl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUnBjTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBjb25zdCBsaW5lSXRlbSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0U25hcHNob3QoKTtcblxuICAgIGlmICghcXVvdGUgfHwgIWxpbmVJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ycGNNZXNzYWdlLlZlbG9jZVJlZmVyZW5jZUlkID0gcXVvdGUucXVvdGVJZDtcbiAgICB0aGlzLnJwY01lc3NhZ2UucHJvZHVjdC5jb25maWd1cmF0aW9uRGF0YS5WZWxvY2VJbnN0YW5jZUlkX19jID0gbGluZUl0ZW0uaWQ7XG4gICAgY29uc3QgY2hpbGRJdGVtcyA9IHRoaXMuZmxhdHRlbkNoaWxkTGluZUl0ZW1zKGxpbmVJdGVtKTtcbiAgICBjb25zdCBzYXZpbmdNb2RlID0gd2luZG93LlNhdmluZ01vZGU7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnREYXRhKHRoaXMucnBjTWVzc2FnZS5wcm9kdWN0LCBsaW5lSXRlbSk7XG4gICAgdGhpcy5ycGNNZXNzYWdlLnF1b3RlID0gdGhpcy5tYXBBdHRyaWJ1dGVzVG8oJ1F1b3RlJywgbGluZUl0ZW0pIGFzIFJwY1F1b3RlO1xuXG4gICAgaWYgKHNhdmluZ01vZGUgPT09ICdBTEwnKSB7XG4gICAgICBjb25zdCBvcHRpb25Db25maWd1cmF0aW9ucyA9IHRoaXMuZ2V0T3B0aW9uQ29uZmlndXJhdGlvbnModGhpcy5ycGNNZXNzYWdlLnByb2R1Y3QpO1xuICAgICAgY29uc3Qgcm9vdFByb2R1Y3RPcHRpb25zID0gdGhpcy5ycGNNZXNzYWdlLm9wdGlvbnMuZmlsdGVyKHBvID0+IHBvLmNvbmZpZ3VyZWRQcm9kdWN0SWQgPT09IGxpbmVJdGVtLnByb2R1Y3RJZCk7XG5cbiAgICAgIGNoaWxkSXRlbXMuZm9yRWFjaChsaW5lSXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb3RPcHRpb24gPSByb290UHJvZHVjdE9wdGlvbnMuZmluZChwbyA9PiBwby5vcHRpb25hbFByb2R1Y3RJZCA9PT0gbGluZUl0ZW0ucHJvZHVjdElkKTtcbiAgICAgICAgaWYgKHJvb3RPcHRpb24pIHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlT3B0aW9ucyA9XG4gICAgICAgICAgICBvcHRpb25Db25maWd1cmF0aW9uc1tyb290T3B0aW9uLmZlYXR1cmVOYW1lXSA/PyAob3B0aW9uQ29uZmlndXJhdGlvbnNbcm9vdE9wdGlvbi5mZWF0dXJlTmFtZV0gPSBbXSk7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luT3B0aW9uID0gIXJvb3RPcHRpb24uaGFzQ2hpbGRyZW5cbiAgICAgICAgICAgID8gb3B0aW9uQ29uZmlndXJhdGlvbnNbcm9vdE9wdGlvbi5mZWF0dXJlTmFtZV0uZmluZCgoeyBvcHRpb25JZCB9KSA9PiBvcHRpb25JZCA9PT0gcm9vdE9wdGlvbi5vcHRpb25JZClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbjogUnBjT3B0aW9uQ29uZmlndXJhdGlvbiA9IG9yaWdpbk9wdGlvbiA/PyAoe30gYXMgUnBjT3B0aW9uQ29uZmlndXJhdGlvbik7XG5cbiAgICAgICAgICBvcHRpb24ub3B0aW9uSWQgPSBvcHRpb24ub3B0aW9uSWQgPz8gcm9vdE9wdGlvbi5vcHRpb25JZDtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnREYXRhKG9wdGlvbiwgbGluZUl0ZW0pO1xuICAgICAgICAgIG9wdGlvbi5pbmRleCA9IG9wdGlvbi5pbmRleCA/PyBmZWF0dXJlT3B0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgIGlmICghb3JpZ2luT3B0aW9uKSB7XG4gICAgICAgICAgICBmZWF0dXJlT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxpbmVJdGVtLnBhcmVudExpbmVJdGVtKSB7XG4gICAgICAgICAgICBjb25zdCBuZXN0ZWRQcm9kdWN0T3B0aW9uID0gdGhpcy5ycGNNZXNzYWdlLm9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgcG8gPT5cbiAgICAgICAgICAgICAgICBwby5jb25maWd1cmVkUHJvZHVjdElkID09PSBsaW5lSXRlbS5wYXJlbnRMaW5lSXRlbT8ucHJvZHVjdElkICYmXG4gICAgICAgICAgICAgICAgcG8ub3B0aW9uYWxQcm9kdWN0SWQgPT09IGxpbmVJdGVtLnByb2R1Y3RJZCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChuZXN0ZWRQcm9kdWN0T3B0aW9uKSB7XG4gICAgICAgICAgICAgIG9wdGlvbi5jb25maWd1cmF0aW9uRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb24uY29uZmlndXJhdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgVmVsb2NlUGFyZW50SW5zdGFuY2VJZF9fYzogbGluZUl0ZW0ucGFyZW50TGluZUl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgVmVsb2NlTmVzdGVkT3B0aW9uSWRfX2M6IG5lc3RlZFByb2R1Y3RPcHRpb24ub3B0aW9uSWQsXG4gICAgICAgICAgICAgICAgVmVsb2NlTmVzdGVkRmVhdHVyZUlkX19jOiBuZXN0ZWRQcm9kdWN0T3B0aW9uLmZlYXR1cmVJZCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ycGNNZXNzYWdlLmR5bmFtaWNGZWF0dXJlcy5mb3JFYWNoKGZlYXR1cmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmVhdHVyZU9wdGlvbnMgPSBvcHRpb25Db25maWd1cmF0aW9uc1tmZWF0dXJlLm5hbWVdID8/IChvcHRpb25Db25maWd1cmF0aW9uc1tmZWF0dXJlLm5hbWVdID0gW10pO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luT3B0aW9uID0gZmVhdHVyZU9wdGlvbnMuZmluZCgoeyBwcm9kdWN0SWQgfSkgPT4gcHJvZHVjdElkID09PSBsaW5lSXRlbS5wcm9kdWN0SWQpO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uOiBScGNPcHRpb25Db25maWd1cmF0aW9uID0gb3JpZ2luT3B0aW9uID8/ICh7fSBhcyBScGNPcHRpb25Db25maWd1cmF0aW9uKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50RGF0YShvcHRpb24sIGxpbmVJdGVtKTtcbiAgICAgICAgICAgIG9wdGlvbi5pbmRleCA9IG9wdGlvbi5pbmRleCA/PyBmZWF0dXJlT3B0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoIW9yaWdpbk9wdGlvbikge1xuICAgICAgICAgICAgICBmZWF0dXJlT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJwY01lc3NhZ2UucHJvZHVjdCA9IHsgLi4udGhpcy5ycGNNZXNzYWdlLnByb2R1Y3QsIG9wdGlvbkNvbmZpZ3VyYXRpb25zIH07XG4gICAgfVxuXG4gICAgd2luZG93LlJQQ19CUk9BRENBU1Q/LmFwcGx5KG51bGwsIFt0aGlzLnJwY01lc3NhZ2VdKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSGFzQ2hpbGRyZW5GbGFnKGJ1bmRsZVByb2R1Y3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnVuZGxlT3B0aW9uc0J5T3B0aW9uSWQ6IFJlY29yZDxzdHJpbmcsIFJwY09wdGlvbj4gPSB7fTtcbiAgICBjb25zdCBub3RCdW5kbGVPcHRpb25zOiBScGNPcHRpb25bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcHJvZHVjdE9wdGlvbiBvZiB0aGlzLnJwY01lc3NhZ2Uub3B0aW9ucykge1xuICAgICAgaWYgKHByb2R1Y3RPcHRpb24uY29uZmlndXJlZFByb2R1Y3RJZCA9PT0gYnVuZGxlUHJvZHVjdElkKSB7XG4gICAgICAgIGJ1bmRsZU9wdGlvbnNCeU9wdGlvbklkW3Byb2R1Y3RPcHRpb24ub3B0aW9uYWxQcm9kdWN0SWRdID0gcHJvZHVjdE9wdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vdEJ1bmRsZU9wdGlvbnMucHVzaChwcm9kdWN0T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygbm90QnVuZGxlT3B0aW9ucykge1xuICAgICAgaWYgKGJ1bmRsZU9wdGlvbnNCeU9wdGlvbklkW29wdGlvbi5jb25maWd1cmVkUHJvZHVjdElkXSkge1xuICAgICAgICBidW5kbGVPcHRpb25zQnlPcHRpb25JZFtvcHRpb24uY29uZmlndXJlZFByb2R1Y3RJZF0uaGFzQ2hpbGRyZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlbkNoaWxkTGluZUl0ZW1zKGxpbmVJdGVtOiBMaW5lSXRlbSk6IExpbmVJdGVtV2l0aFBhcmVudFtdIHtcbiAgICBsZXQgaXRlbXMgPSBsaW5lSXRlbS5saW5lSXRlbXMgPz8gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgaWYgKGl0ZW0ubGluZUl0ZW1zKSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGl0ZW0ubGluZUl0ZW1zLm1hcChsaSA9PiAoeyAuLi5saSwgcGFyZW50TGluZUl0ZW06IGl0ZW0gfSkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50RGF0YShlbnRpdHk6IFJwY1Byb2R1Y3QgfCBScGNPcHRpb25Db25maWd1cmF0aW9uLCBsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAobGluZUl0ZW0ucHJvZHVjdElkKSB7XG4gICAgICBlbnRpdHkucHJvZHVjdElkID0gbGluZUl0ZW0ucHJvZHVjdElkO1xuICAgIH1cblxuICAgIGNvbnN0IHF1YW50aXR5QXR0cmlidXRlID0gbGluZUl0ZW0ucHJvcGVydGllc1sncXVhbnRpdHlBdHRyaWJ1dGUnXTtcbiAgICBlbnRpdHkuUXVhbnRpdHkgPSBxdWFudGl0eUF0dHJpYnV0ZVxuICAgICAgPyBsaW5lSXRlbS5hdHRyaWJ1dGVzLmZpbmQoYXR0cmlidXRlID0+IGF0dHJpYnV0ZS5uYW1lID09PSBxdWFudGl0eUF0dHJpYnV0ZSk/LnZhbHVlID8/IDFcbiAgICAgIDogbGluZUl0ZW0ucXR5O1xuXG4gICAgY29uc3QgdG90YWxQcmljZSA9IHRoaXMuY29tcHV0ZU5ldFByaWNlKGxpbmVJdGVtKTtcbiAgICBjb25zdCB0YXJnZXRUb3RhbFByaWNlRmllbGQgPSBsaW5lSXRlbS5wcm9wZXJ0aWVzWydUYXJnZXRUb3RhbFByaWNlRmllbGQnXSB8fCAnVG90YWxQcmljZV9fYyc7XG4gICAgZW50aXR5LmNvbmZpZ3VyYXRpb25EYXRhW3RhcmdldFRvdGFsUHJpY2VGaWVsZF0gPSBlbnRpdHkuY29uZmlndXJhdGlvbkRhdGFbdGFyZ2V0VG90YWxQcmljZUZpZWxkXVxuICAgICAgPyBlbnRpdHkuY29uZmlndXJhdGlvbkRhdGFbdGFyZ2V0VG90YWxQcmljZUZpZWxkXSArIHRvdGFsUHJpY2VcbiAgICAgIDogdG90YWxQcmljZTtcblxuICAgIGNvbnN0IHRhcmdldFByaWNlRmllbGQgPSBsaW5lSXRlbS5wcm9wZXJ0aWVzWydUYXJnZXRQcmljZUZpZWxkJ10gfHwgJ1NCUVFfX0xpc3RQcmljZV9fYyc7XG4gICAgY29uc3QgcHJpY2UgPSBlbnRpdHkuUXVhbnRpdHkgIT0gbnVsbCA/IGVudGl0eS5jb25maWd1cmF0aW9uRGF0YVt0YXJnZXRUb3RhbFByaWNlRmllbGRdIC8gZW50aXR5LlF1YW50aXR5IHx8IDAgOiAwO1xuICAgIGNvbnN0IHRhcmdldFByaWNlVmFsdWUgPSBOdW1iZXIoZW50aXR5LmNvbmZpZ3VyYXRpb25EYXRhW3RhcmdldFByaWNlRmllbGRdKSB8fCAwO1xuICAgIGVudGl0eS5jb25maWd1cmF0aW9uRGF0YVt0YXJnZXRQcmljZUZpZWxkXSA9IHRhcmdldFByaWNlVmFsdWVcbiAgICAgID8gKHRhcmdldFByaWNlVmFsdWUgKyBwcmljZSkudG9GaXhlZCgyKVxuICAgICAgOiBwcmljZS50b0ZpeGVkKDIpO1xuXG4gICAgZW50aXR5LmNvbmZpZ3VyYXRpb25BdHRyaWJ1dGVzID0gdGhpcy5tYXBBdHRyaWJ1dGVzVG8oJ0F0dHJpYnV0ZScsIGxpbmVJdGVtKTtcbiAgICBlbnRpdHkuY29uZmlndXJhdGlvbkRhdGEgPSB7XG4gICAgICAuLi5lbnRpdHkuY29uZmlndXJhdGlvbkRhdGEsXG4gICAgICAuLi50aGlzLm1hcEF0dHJpYnV0ZXNUbygnRmllbGQnLCBsaW5lSXRlbSksXG4gICAgICAuLi50aGlzLm1hcEF0dHJpYnV0ZXNUbygnJywgbGluZUl0ZW0pLFxuICAgICAgVmVsb2NlSW5zdGFuY2VJZF9fYzogbGluZUl0ZW0uaWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZU5ldFByaWNlKGxpbmVJdGVtOiBMaW5lSXRlbSk6IG51bWJlciB7XG4gICAgaWYgKGxpbmVJdGVtLnByb3BlcnRpZXNbJ0dyb3VwQ2hhcmdlcyddKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdW1OZXRQcmljZShsaW5lSXRlbS5jaGFyZ2VHcm91cEl0ZW1zLCB0aGlzLmdldENoYXJnZU5hbWVTZXQobGluZUl0ZW0ucHJvcGVydGllc1snR3JvdXBDaGFyZ2VzJ10pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdW1OZXRQcmljZShsaW5lSXRlbS5jaGFyZ2VJdGVtcywgdGhpcy5nZXRDaGFyZ2VOYW1lU2V0KGxpbmVJdGVtLnByb3BlcnRpZXNbJ0NoYXJnZXMnXSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGFyZ2VOYW1lU2V0KHByb3BlcnR5Pzogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbmV3IFNldChwcm9wZXJ0eS5zcGxpdCgnLCcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdW1OZXRQcmljZShjaGFyZ2VJdGVtczogQ2hhcmdlR3JvdXBJdGVtW10sIGNoYXJnZXM6IFNldDxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgbmV0UHJpY2UgPSAwO1xuXG4gICAgZm9yIChjb25zdCBjaGFyZ2VJdGVtIG9mIGNoYXJnZUl0ZW1zKSB7XG4gICAgICBpZiAoIWNoYXJnZXMgfHwgY2hhcmdlcy5oYXMoY2hhcmdlSXRlbS5jaGFyZ2VUeXBlKSkge1xuICAgICAgICBuZXRQcmljZSArPSBjaGFyZ2VJdGVtLm5ldFByaWNlID8/IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldFByaWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBBdHRyaWJ1dGVzVG8odGFyZ2V0OiBzdHJpbmcsIGxpbmVJdGVtOiBMaW5lSXRlbSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMucnVudGltZVNlcnZpY2UucnVudGltZU1vZGVsPy5jb21wb25lbnRzLmdldChsaW5lSXRlbS50eXBlKTtcblxuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9ICdtYXBUbycgKyB0YXJnZXQ7XG4gICAgY29tcG9uZW50LmF0dHJpYnV0ZXNcbiAgICAgIC5maWx0ZXIoYSA9PiBhLnByb3BlcnRpZXMgJiYgYS5wcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0pXG4gICAgICAuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gbGluZUl0ZW0uYXR0cmlidXRlcy5maW5kKGEgPT4gYS5uYW1lID09PSBtYXBwaW5nLm5hbWUpO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICBuZXcgU2V0KG1hcHBpbmcucHJvcGVydGllc1twcm9wZXJ0eU5hbWVdLnNwbGl0KCcsJykpLmZvckVhY2goayA9PiAocmVzdWx0W2tdID0gYXR0cmlidXRlLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3B0aW9uQ29uZmlndXJhdGlvbnMocHJvZHVjdDogUnBjUHJvZHVjdCk6IFJlY29yZDxzdHJpbmcsIFJwY09wdGlvbkNvbmZpZ3VyYXRpb25bXT4ge1xuICAgIGNvbnN0IG9wdGlvbkNvbmZpZ3VyYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBScGNPcHRpb25Db25maWd1cmF0aW9uW10+ID0ge307XG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbkNvbmZpZ3VyYXRpb25zID0gcHJvZHVjdC5vcHRpb25Db25maWd1cmF0aW9ucyA/PyB7fTtcblxuICAgIE9iamVjdC5rZXlzKHJlcXVlc3RPcHRpb25Db25maWd1cmF0aW9ucykuZm9yRWFjaChrID0+IHtcbiAgICAgIG9wdGlvbkNvbmZpZ3VyYXRpb25zW2tdID0gKHJlcXVlc3RPcHRpb25Db25maWd1cmF0aW9uc1trXSA/PyBbXSkubWFwKG9wdCA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLm9wdCwgc2VsZWN0ZWQ6IGZhbHNlIH07XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvcHRpb25Db25maWd1cmF0aW9ucztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlJCB8IGFzeW5jIGFzIHN0YXRlXCI+XG4gIDx2bC1sb2FkZXIgKm5nSWY9XCJzdGF0ZS5sb2FkaW5nOyBlbHNlIGNvbnRlbnRcIiBbbGFiZWxdPVwiJ0xvYWRpbmcgVUknXCI+PC92bC1sb2FkZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RhdGUuZmFpbHVyZVwiPlxuICAgICAgPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwidWlEZWZpbml0aW9uXCI+PC92bC1jbXMtcHJldmlldz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -6,10 +6,10 @@ import { RemoteComponent } from './remote.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class RemoteModule {
8
8
  }
9
- RemoteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RemoteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- RemoteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: RemoteModule, declarations: [RemoteComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [RemoteComponent] });
11
- RemoteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RemoteModule, imports: [CommonModule, PreviewModule, LoaderModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RemoteModule, decorators: [{
9
+ RemoteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ RemoteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, declarations: [RemoteComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [RemoteComponent] });
11
+ RemoteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, imports: [CommonModule, PreviewModule, LoaderModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RemoteModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [RemoteComponent],
@@ -2,27 +2,27 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Optional
2
2
  import { UITemplatesApiService } from '@veloceapps/api';
3
3
  import { ToastService, ToastType } from '@veloceapps/components';
4
4
  import { UITemplateComponentType, } from '@veloceapps/core';
5
- import { ContextService } from '@veloceapps/sdk/core';
6
- import { BehaviorSubject, Subject, catchError, map, of, switchMap, takeUntil, tap } from 'rxjs';
5
+ import { BehaviorSubject, catchError, map, of, Subject, switchMap, takeUntil, tap } from 'rxjs';
6
+ import { FlowService } from '../../services';
7
7
  import { FLOW_CUSTOMIZATION } from '../../types';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@veloceapps/api";
10
- import * as i2 from "@veloceapps/sdk/core";
11
- import * as i3 from "@veloceapps/components";
10
+ import * as i2 from "@veloceapps/components";
11
+ import * as i3 from "../../services";
12
12
  import * as i4 from "@angular/common";
13
13
  import * as i5 from "@veloceapps/sdk/cms";
14
14
  export class ShoppingCartComponent {
15
- constructor(templatesApi, contextService, cdr, toastService, customizationService) {
15
+ constructor(templatesApi, cdr, toastService, flowService, customizationService) {
16
16
  this.templatesApi = templatesApi;
17
- this.contextService = contextService;
18
17
  this.cdr = cdr;
19
18
  this.toastService = toastService;
19
+ this.flowService = flowService;
20
20
  this.customizationService = customizationService;
21
21
  this.uiDefinition = undefined;
22
22
  this.state$ = new BehaviorSubject({ loading: true, failure: false });
23
23
  this.templateApiName = '';
24
24
  this.destroyed$ = new Subject();
25
- this.templateApiName = this.contextService.resolve().properties.cartTemplateApiName ?? '';
25
+ this.templateApiName = this.flowService.flow?.properties.templates.shoppingCart ?? '';
26
26
  }
27
27
  ngOnInit() {
28
28
  this.generateUIDefinition$()
@@ -97,15 +97,15 @@ export class ShoppingCartComponent {
97
97
  }));
98
98
  }
99
99
  }
100
- ShoppingCartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ShoppingCartComponent, deps: [{ token: i1.UITemplatesApiService }, { token: i2.ContextService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
101
- ShoppingCartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ShoppingCartComponent, selector: "vl-flow-shopping-cart", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i3.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ShoppingCartComponent, decorators: [{
100
+ ShoppingCartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartComponent, deps: [{ token: i1.UITemplatesApiService }, { token: i0.ChangeDetectorRef }, { token: i2.ToastService }, { token: i3.FlowService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
101
+ ShoppingCartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ShoppingCartComponent, selector: "vl-flow-shopping-cart", ngImport: i0, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "component", type: i2.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartComponent, decorators: [{
103
103
  type: Component,
104
104
  args: [{ selector: 'vl-flow-shopping-cart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n" }]
105
- }], ctorParameters: function () { return [{ type: i1.UITemplatesApiService }, { type: i2.ContextService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: undefined, decorators: [{
105
+ }], ctorParameters: function () { return [{ type: i1.UITemplatesApiService }, { type: i0.ChangeDetectorRef }, { type: i2.ToastService }, { type: i3.FlowService }, { type: undefined, decorators: [{
106
106
  type: Optional
107
107
  }, {
108
108
  type: Inject,
109
109
  args: [FLOW_CUSTOMIZATION]
110
110
  }] }]; } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvc2hvcHBpbmctY2FydC9zaG9wcGluZy1jYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFHTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBS0wsdUJBQXVCLEdBQ3hCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7QUFhcEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9oQyxZQUNVLFlBQW1DLEVBQ25DLGNBQThCLEVBQzlCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQ2Msb0JBQXdDO1FBSmhGLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7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QUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsRUFDM0UsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxPQUFPO2FBQ1I7WUFFRCxNQUFNLEtBQUssR0FBaUI7Z0JBQzFCLElBQUksRUFBRSxFQUFFO2dCQUNSLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxJQUFJO2dCQUNiLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxDQUFDO2dCQUNWLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxRQUFRLEVBQUUsRUFBRTt3QkFDWixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO3FCQUNuQztpQkFDRjthQUNGLENBQUM7WUFFRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztrSEF0SFUscUJBQXFCLGtKQVlWLGtCQUFrQjtzR0FaN0IscUJBQXFCLDZEQ2pDbEMsd1ZBU0E7MkZEd0JhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07OzBCQWM1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSVRlbXBsYXRlc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbXBvbmVudEF0dGFjaG1lbnRzLFxuICBUZW1wbGF0ZUNvbXBvbmVudCxcbiAgVUlEZWZpbml0aW9uLFxuICBVSVRlbXBsYXRlLFxuICBVSVRlbXBsYXRlQ29tcG9uZW50VHlwZSxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY2F0Y2hFcnJvciwgbWFwLCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkxPV19DVVNUT01JWkFUSU9OLCBGbG93Q3VzdG9taXphdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIFN0YXRlIHtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZmFpbHVyZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtZmxvdy1zaG9wcGluZy1jYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Nob3BwaW5nLWNhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaG9wcGluZy1jYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaG9wcGluZ0NhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyB1aURlZmluaXRpb24/OiBVSURlZmluaXRpb24gPSB1bmRlZmluZWQ7XG4gIHB1YmxpYyBzdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0YXRlPih7IGxvYWRpbmc6IHRydWUsIGZhaWx1cmU6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgdGVtcGxhdGVBcGlOYW1lID0gJyc7XG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXNBcGk6IFVJVGVtcGxhdGVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICB0aGlzLnRlbXBsYXRlQXBpTmFtZSA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLnByb3BlcnRpZXMuY2FydFRlbXBsYXRlQXBpTmFtZSA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRlVUlEZWZpbml0aW9uJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHVpRGVmID0+IHtcbiAgICAgICAgICBpZiAoIXVpRGVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB3aXRoIG5hbWUgJyR7dGhpcy50ZW1wbGF0ZUFwaU5hbWV9JyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24gPSB1aURlZjtcbiAgICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHsgbG9hZGluZzogZmFsc2UsIGZhaWx1cmU6IGZhbHNlIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnRmFpbGVkIHRvIHJlc29sdmUgU2hvcHBpbmcgY2FydCBjb21wb25lbnQuICcgKyAoZXJyLm1lc3NhZ2UgPz8gJycpO1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IG1lc3NhZ2UsIHN0aWNreTogdHJ1ZSB9KTtcblxuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoeyBsb2FkaW5nOiBmYWxzZSwgZmFpbHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFRlbXBsYXRlUm9vdENvbXBvbmVudCQodGVtcGxhdGU6IFVJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQXBpXG4gICAgICAuZmV0Y2hDb21wb25lbnRzJCh0ZW1wbGF0ZS5pZClcbiAgICAgIC5waXBlKG1hcChjb21wb25lbnRzID0+IGNvbXBvbmVudHMuZmluZChjID0+IGMudHlwZSA9PT0gVUlUZW1wbGF0ZUNvbXBvbmVudFR5cGUuUk9PVCkgPz8gdW5kZWZpbmVkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU2hvcHBpbmdDYXJ0Q29tcG9uZW50TWV0YSQoKTogT2JzZXJ2YWJsZTxDb21wb25lbnRBdHRhY2htZW50cyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0U2hvcHBpbmdDYXJ0Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0U2hvcHBpbmdDYXJ0Q29tcG9uZW50KHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudCA9PiB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxDb21wb25lbnRBdHRhY2htZW50cz57XG4gICAgICAgICAgaHRtbDogY29tcG9uZW50Lmh0bWwsXG4gICAgICAgICAgY3NzOiBjb21wb25lbnQuY3NzLFxuICAgICAgICAgIGpzOiBjb21wb25lbnQuanMsXG4gICAgICAgICAganNvbjogY29tcG9uZW50Lmpzb24sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaG9wcGluZ0NhcnRDb21wb25lbnRNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQXBpLmZldGNoVGVtcGxhdGVzJCgpLnBpcGUoXG4gICAgICBtYXA8VUlUZW1wbGF0ZVtdLCBVSVRlbXBsYXRlIHwgdW5kZWZpbmVkPih0ZW1wbGF0ZXMgPT5cbiAgICAgICAgdGVtcGxhdGVzLmZpbmQodGVtcGxhdGUgPT4gdGVtcGxhdGUubmFtZSA9PT0gdGhpcy50ZW1wbGF0ZUFwaU5hbWUpLFxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCh0ZW1wbGF0ZSA9PiAodGVtcGxhdGUgPyB0aGlzLmdldFRlbXBsYXRlUm9vdENvbXBvbmVudCQodGVtcGxhdGUpIDogb2YodW5kZWZpbmVkKSkpLFxuICAgICAgc3dpdGNoTWFwKGNvbXBvbmVudCA9PlxuICAgICAgICBjb21wb25lbnQgPyB0aGlzLnRlbXBsYXRlc0FwaS5mZXRjaENvbXBvbmVudEF0dGFjaG1lbnRzJChjb21wb25lbnQudWlUZW1wbGF0ZUlkLCBjb21wb25lbnQpIDogb2YodW5kZWZpbmVkKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVVSURlZmluaXRpb24kKCk6IE9ic2VydmFibGU8VUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZUFwaU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbG93IFF1ZXJ5IHBhcmFtZXRlciAnY2FydFRlbXBsYXRlQXBpTmFtZScgaXMgbWlzc2luZy5cIik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0TG9jYWxTaG9wcGluZ0NhcnRDb21wb25lbnRNZXRhJCgpKSxcbiAgICAgIHN3aXRjaE1hcChtZXRhID0+IChtZXRhID8gb2YobWV0YSkgOiB0aGlzLmdldFNob3BwaW5nQ2FydENvbXBvbmVudE1ldGEkKCkpKSxcbiAgICAgIG1hcChtZXRhID0+IHtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdWlEZWY6IFVJRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiAwLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0RFRkFVTFQnLFxuICAgICAgICAgIHZlcnNpb246IDIsXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogbWV0YS5odG1sICYmIGJ0b2EobWV0YS5odG1sKSxcbiAgICAgICAgICAgICAgc2NyaXB0OiBtZXRhLmpzICYmIGJ0b2EobWV0YS5qcyksXG4gICAgICAgICAgICAgIHN0eWxlczogbWV0YS5jc3MgJiYgYnRvYShtZXRhLmNzcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHVpRGVmO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlJCB8IGFzeW5jIGFzIHN0YXRlXCI+XG4gIDx2bC1sb2FkZXIgKm5nSWY9XCJzdGF0ZS5sb2FkaW5nOyBlbHNlIGNvbnRlbnRcIiBbbGFiZWxdPVwiJ0xvYWRpbmcgVUknXCI+PC92bC1sb2FkZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RhdGUuZmFpbHVyZVwiPlxuICAgICAgPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwidWlEZWZpbml0aW9uXCI+PC92bC1jbXMtcHJldmlldz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvcGFnZXMvc2hvcHBpbmctY2FydC9zaG9wcGluZy1jYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9wYWdlcy9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFHTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBS0wsdUJBQXVCLEdBQ3hCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7QUFhcEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9oQyxZQUNVLFlBQW1DLEVBQ25DLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ2dCLG9CQUF3QztRQUpoRixpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7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QUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLEVBQzNFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsT0FBTzthQUNSO1lBRUQsTUFBTSxLQUFLLEdBQWlCO2dCQUMxQixJQUFJLEVBQUUsRUFBRTtnQkFDUixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsQ0FBQztnQkFDVixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsUUFBUSxFQUFFLEVBQUU7d0JBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDbkM7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7a0hBdEhVLHFCQUFxQiwrSUFZVixrQkFBa0I7c0dBWjdCLHFCQUFxQiw2RENqQ2xDLHdWQVNBOzJGRHdCYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFjNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVUlUZW1wbGF0ZXNBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSwgVG9hc3RUeXBlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRBdHRhY2htZW50cyxcbiAgVGVtcGxhdGVDb21wb25lbnQsXG4gIFVJRGVmaW5pdGlvbixcbiAgVUlUZW1wbGF0ZSxcbiAgVUlUZW1wbGF0ZUNvbXBvbmVudFR5cGUsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZsb3dDdXN0b21pemF0aW9uLCBGTE9XX0NVU1RPTUlaQVRJT04gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmludGVyZmFjZSBTdGF0ZSB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGZhaWx1cmU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctc2hvcHBpbmctY2FydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaG9wcGluZy1jYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2hvcHBpbmctY2FydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2hvcHBpbmdDYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgdWlEZWZpbml0aW9uPzogVUlEZWZpbml0aW9uID0gdW5kZWZpbmVkO1xuICBwdWJsaWMgc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGF0ZT4oeyBsb2FkaW5nOiB0cnVlLCBmYWlsdXJlOiBmYWxzZSB9KTtcblxuICBwcml2YXRlIHRlbXBsYXRlQXBpTmFtZSA9ICcnO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQXBpOiBVSVRlbXBsYXRlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U2VydmljZTogRmxvd1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGTE9XX0NVU1RPTUlaQVRJT04pIHByaXZhdGUgY3VzdG9taXphdGlvblNlcnZpY2U/OiBGbG93Q3VzdG9taXphdGlvbixcbiAgKSB7XG4gICAgdGhpcy50ZW1wbGF0ZUFwaU5hbWUgPSB0aGlzLmZsb3dTZXJ2aWNlLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzLnNob3BwaW5nQ2FydCA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyYXRlVUlEZWZpbml0aW9uJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHVpRGVmID0+IHtcbiAgICAgICAgICBpZiAoIXVpRGVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB3aXRoIG5hbWUgJyR7dGhpcy50ZW1wbGF0ZUFwaU5hbWV9JyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24gPSB1aURlZjtcbiAgICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHsgbG9hZGluZzogZmFsc2UsIGZhaWx1cmU6IGZhbHNlIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnRmFpbGVkIHRvIHJlc29sdmUgU2hvcHBpbmcgY2FydCBjb21wb25lbnQuICcgKyAoZXJyLm1lc3NhZ2UgPz8gJycpO1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IG1lc3NhZ2UsIHN0aWNreTogdHJ1ZSB9KTtcblxuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoeyBsb2FkaW5nOiBmYWxzZSwgZmFpbHVyZTogdHJ1ZSB9KTtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFRlbXBsYXRlUm9vdENvbXBvbmVudCQodGVtcGxhdGU6IFVJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQXBpXG4gICAgICAuZmV0Y2hDb21wb25lbnRzJCh0ZW1wbGF0ZS5pZClcbiAgICAgIC5waXBlKG1hcChjb21wb25lbnRzID0+IGNvbXBvbmVudHMuZmluZChjID0+IGMudHlwZSA9PT0gVUlUZW1wbGF0ZUNvbXBvbmVudFR5cGUuUk9PVCkgPz8gdW5kZWZpbmVkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU2hvcHBpbmdDYXJ0Q29tcG9uZW50TWV0YSQoKTogT2JzZXJ2YWJsZTxDb21wb25lbnRBdHRhY2htZW50cyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0U2hvcHBpbmdDYXJ0Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0U2hvcHBpbmdDYXJ0Q29tcG9uZW50KHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudCA9PiB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxDb21wb25lbnRBdHRhY2htZW50cz57XG4gICAgICAgICAgaHRtbDogY29tcG9uZW50Lmh0bWwsXG4gICAgICAgICAgY3NzOiBjb21wb25lbnQuY3NzLFxuICAgICAgICAgIGpzOiBjb21wb25lbnQuanMsXG4gICAgICAgICAganNvbjogY29tcG9uZW50Lmpzb24sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaG9wcGluZ0NhcnRDb21wb25lbnRNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQXBpLmZldGNoVGVtcGxhdGVzJCgpLnBpcGUoXG4gICAgICBtYXA8VUlUZW1wbGF0ZVtdLCBVSVRlbXBsYXRlIHwgdW5kZWZpbmVkPih0ZW1wbGF0ZXMgPT5cbiAgICAgICAgdGVtcGxhdGVzLmZpbmQodGVtcGxhdGUgPT4gdGVtcGxhdGUubmFtZSA9PT0gdGhpcy50ZW1wbGF0ZUFwaU5hbWUpLFxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCh0ZW1wbGF0ZSA9PiAodGVtcGxhdGUgPyB0aGlzLmdldFRlbXBsYXRlUm9vdENvbXBvbmVudCQodGVtcGxhdGUpIDogb2YodW5kZWZpbmVkKSkpLFxuICAgICAgc3dpdGNoTWFwKGNvbXBvbmVudCA9PlxuICAgICAgICBjb21wb25lbnQgPyB0aGlzLnRlbXBsYXRlc0FwaS5mZXRjaENvbXBvbmVudEF0dGFjaG1lbnRzJChjb21wb25lbnQudWlUZW1wbGF0ZUlkLCBjb21wb25lbnQpIDogb2YodW5kZWZpbmVkKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVVSURlZmluaXRpb24kKCk6IE9ic2VydmFibGU8VUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZUFwaU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbG93IFF1ZXJ5IHBhcmFtZXRlciAnY2FydFRlbXBsYXRlQXBpTmFtZScgaXMgbWlzc2luZy5cIik7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0TG9jYWxTaG9wcGluZ0NhcnRDb21wb25lbnRNZXRhJCgpKSxcbiAgICAgIHN3aXRjaE1hcChtZXRhID0+IChtZXRhID8gb2YobWV0YSkgOiB0aGlzLmdldFNob3BwaW5nQ2FydENvbXBvbmVudE1ldGEkKCkpKSxcbiAgICAgIG1hcChtZXRhID0+IHtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdWlEZWY6IFVJRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiAwLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0RFRkFVTFQnLFxuICAgICAgICAgIHZlcnNpb246IDIsXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogbWV0YS5odG1sICYmIGJ0b2EobWV0YS5odG1sKSxcbiAgICAgICAgICAgICAgc2NyaXB0OiBtZXRhLmpzICYmIGJ0b2EobWV0YS5qcyksXG4gICAgICAgICAgICAgIHN0eWxlczogbWV0YS5jc3MgJiYgYnRvYShtZXRhLmNzcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHVpRGVmO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlJCB8IGFzeW5jIGFzIHN0YXRlXCI+XG4gIDx2bC1sb2FkZXIgKm5nSWY9XCJzdGF0ZS5sb2FkaW5nOyBlbHNlIGNvbnRlbnRcIiBbbGFiZWxdPVwiJ0xvYWRpbmcgVUknXCI+PC92bC1sb2FkZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RhdGUuZmFpbHVyZVwiPlxuICAgICAgPHZsLWNtcy1wcmV2aWV3IFt1aURlZmluaXRpb25dPVwidWlEZWZpbml0aW9uXCI+PC92bC1jbXMtcHJldmlldz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -6,10 +6,10 @@ import { ShoppingCartComponent } from './shopping-cart.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class ShoppingCartModule {
8
8
  }
9
- ShoppingCartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ShoppingCartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- ShoppingCartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: ShoppingCartModule, declarations: [ShoppingCartComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [ShoppingCartComponent] });
11
- ShoppingCartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ShoppingCartModule, imports: [CommonModule, PreviewModule, LoaderModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ShoppingCartModule, decorators: [{
9
+ ShoppingCartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ ShoppingCartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartModule, declarations: [ShoppingCartComponent], imports: [CommonModule, PreviewModule, LoaderModule], exports: [ShoppingCartComponent] });
11
+ ShoppingCartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartModule, imports: [CommonModule, PreviewModule, LoaderModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ShoppingCartModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [ShoppingCartComponent],