@veloceapps/sdk 11.0.0-13 → 11.0.0-130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/cms/cms.actions.d.ts +94 -29
  2. package/cms/components/element-renderer/element-renderer.component.d.ts +3 -10
  3. package/cms/components/preview/preview.component.d.ts +5 -6
  4. package/cms/components/preview/preview.types.d.ts +0 -4
  5. package/cms/services/element-context.service.d.ts +0 -1
  6. package/cms/types/common.types.d.ts +2 -0
  7. package/cms/types/index.d.ts +0 -1
  8. package/cms/utils/path.utils.d.ts +1 -2
  9. package/cms/vendor-map.d.ts +21 -40
  10. package/core/index.d.ts +1 -1
  11. package/core/modules/configuration/index.d.ts +4 -4
  12. package/core/modules/configuration/services/configuration-runtime.service.d.ts +8 -17
  13. package/core/modules/configuration/services/configuration-state.service.d.ts +5 -4
  14. package/core/modules/configuration/services/configuration.service.d.ts +24 -47
  15. package/core/modules/configuration/services/guided-selling.service.d.ts +15 -0
  16. package/core/modules/configuration/services/test-mode-configuration.service.d.ts +26 -0
  17. package/core/modules/configuration/types/configuration-runtime.types.d.ts +0 -5
  18. package/core/modules/configuration/types/configuration.types.d.ts +8 -2
  19. package/core/modules/configuration/types/index.d.ts +2 -0
  20. package/core/modules/flow-configuration/index.d.ts +0 -3
  21. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +11 -17
  22. package/core/operators/filter-successful-execute.operator.d.ts +3 -0
  23. package/core/operators/index.d.ts +1 -0
  24. package/core/services/flow-info.service.d.ts +11 -9
  25. package/core/services/flow-state-configuration.service.d.ts +14 -8
  26. package/core/services/flow-state.service.d.ts +6 -15
  27. package/core/services/index.d.ts +1 -1
  28. package/core/services/integration.state.d.ts +1 -1
  29. package/core/services/product-images.service.d.ts +3 -3
  30. package/core/services/runtime-settings.service.d.ts +1 -1
  31. package/core/services/sales-transaction.service.d.ts +9 -10
  32. package/core/types/flow-customization.types.d.ts +2 -2
  33. package/core/types/index.d.ts +0 -1
  34. package/core/utils/index.d.ts +3 -2
  35. package/core/utils/pcm.utils.d.ts +5 -0
  36. package/core/utils/transaction-item.utils.d.ts +10 -0
  37. package/core/utils/transaction-item.worker.d.ts +8 -0
  38. package/esm2020/cms/cms.actions.mjs +93 -71
  39. package/esm2020/cms/cms.default.mjs +2 -3
  40. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +7 -64
  41. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
  42. package/esm2020/cms/components/preview/preview.component.mjs +19 -28
  43. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  44. package/esm2020/cms/services/element-context.service.mjs +1 -1
  45. package/esm2020/cms/types/common.types.mjs +1 -1
  46. package/esm2020/cms/types/index.mjs +1 -2
  47. package/esm2020/cms/utils/element.utils.mjs +3 -3
  48. package/esm2020/cms/utils/elements-resolver.mjs +16 -5
  49. package/esm2020/cms/utils/path.utils.mjs +1 -10
  50. package/esm2020/cms/vendor-map.mjs +21 -18
  51. package/esm2020/core/core.module.mjs +3 -6
  52. package/esm2020/core/index.mjs +2 -2
  53. package/esm2020/core/modules/configuration/configuration.module.mjs +17 -4
  54. package/esm2020/core/modules/configuration/index.mjs +5 -5
  55. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +16 -64
  56. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +65 -62
  57. package/esm2020/core/modules/configuration/services/configuration.service.mjs +123 -229
  58. package/esm2020/core/modules/configuration/services/guided-selling.service.mjs +62 -0
  59. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +97 -0
  60. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +1 -1
  61. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  62. package/esm2020/core/modules/configuration/types/index.mjs +3 -0
  63. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +3 -4
  64. package/esm2020/core/modules/flow-configuration/index.mjs +1 -4
  65. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +31 -39
  66. package/esm2020/core/operators/filter-successful-execute.operator.mjs +5 -0
  67. package/esm2020/core/operators/index.mjs +2 -0
  68. package/esm2020/core/services/flow-info.service.mjs +31 -22
  69. package/esm2020/core/services/flow-state-configuration.service.mjs +91 -24
  70. package/esm2020/core/services/flow-state.service.mjs +34 -82
  71. package/esm2020/core/services/index.mjs +2 -2
  72. package/esm2020/core/services/integration.state.mjs +2 -2
  73. package/esm2020/core/services/product-images.service.mjs +8 -8
  74. package/esm2020/core/services/runtime-settings.service.mjs +3 -3
  75. package/esm2020/core/services/sales-transaction.service.mjs +18 -13
  76. package/esm2020/core/types/flow-customization.types.mjs +1 -1
  77. package/esm2020/core/types/index.mjs +1 -2
  78. package/esm2020/core/utils/index.mjs +4 -3
  79. package/esm2020/core/utils/pcm.utils.mjs +15 -0
  80. package/esm2020/core/utils/transaction-item.utils.mjs +136 -0
  81. package/esm2020/core/utils/transaction-item.worker.mjs +16 -0
  82. package/esm2020/src/components/flow-header/flow-header.component.mjs +7 -8
  83. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +7 -8
  84. package/esm2020/src/flow-routing.module.mjs +10 -8
  85. package/esm2020/src/guards/flow.guard.mjs +5 -7
  86. package/esm2020/src/guards/product-unload.guard.mjs +10 -8
  87. package/esm2020/src/index.mjs +1 -2
  88. package/esm2020/src/pages/assets/assets.component.mjs +7 -8
  89. package/esm2020/src/pages/catalog/catalog.component.mjs +7 -8
  90. package/esm2020/src/pages/debug/debug.component.mjs +12 -17
  91. package/esm2020/src/pages/product/product.component.mjs +39 -69
  92. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +5 -6
  93. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +7 -8
  94. package/esm2020/src/resolvers/pcm-model.resolver.mjs +12 -0
  95. package/esm2020/src/resolvers/sales-transaction.resolver.mjs +64 -0
  96. package/esm2020/src/resolvers/ui-definition.resolver.mjs +44 -0
  97. package/esm2020/src/services/flow-dialog.service.mjs +3 -24
  98. package/esm2020/src/services/flow-router.service.mjs +26 -33
  99. package/esm2020/src/services/flow.service.mjs +11 -17
  100. package/esm2020/src/types/index.mjs +2 -3
  101. package/esm2020/src/types/route.types.mjs +1 -1
  102. package/fesm2015/veloceapps-sdk-cms.mjs +166 -309
  103. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  104. package/fesm2015/veloceapps-sdk-core.mjs +706 -1179
  105. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  106. package/fesm2015/veloceapps-sdk.mjs +194 -250
  107. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  108. package/fesm2020/veloceapps-sdk-cms.mjs +162 -300
  109. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  110. package/fesm2020/veloceapps-sdk-core.mjs +764 -1204
  111. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  112. package/fesm2020/veloceapps-sdk.mjs +193 -247
  113. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  114. package/package.json +1 -1
  115. package/src/components/flow-header/flow-header.component.d.ts +3 -3
  116. package/src/components/guided-selling/guided-selling.component.d.ts +3 -3
  117. package/src/guards/product-unload.guard.d.ts +3 -3
  118. package/src/index.d.ts +0 -1
  119. package/src/pages/assets/assets.component.d.ts +3 -3
  120. package/src/pages/catalog/catalog.component.d.ts +3 -3
  121. package/src/pages/debug/debug.component.d.ts +2 -4
  122. package/src/pages/product/product.component.d.ts +14 -13
  123. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -3
  124. package/src/pages/shopping-cart/shopping-cart.component.d.ts +3 -3
  125. package/src/resolvers/pcm-model.resolver.d.ts +3 -0
  126. package/src/resolvers/sales-transaction.resolver.d.ts +18 -0
  127. package/src/resolvers/ui-definition.resolver.d.ts +3 -0
  128. package/src/services/flow-dialog.service.d.ts +3 -5
  129. package/src/services/flow-router.service.d.ts +8 -8
  130. package/src/services/flow.service.d.ts +3 -3
  131. package/src/types/index.d.ts +1 -2
  132. package/src/types/route.types.d.ts +0 -5
  133. package/cms/plugins/configuration.plugin.d.ts +0 -23
  134. package/cms/types/configuration.types.d.ts +0 -21
  135. package/core/modules/configuration/helpers.d.ts +0 -7
  136. package/core/modules/configuration/services/runtime-context.service.d.ts +0 -12
  137. package/core/modules/flow-configuration/services/flow-update.service.d.ts +0 -13
  138. package/core/modules/flow-configuration/types/update.types.d.ts +0 -12
  139. package/core/services/quote-draft.service.d.ts +0 -50
  140. package/core/types/runtime.types.d.ts +0 -30
  141. package/core/utils/line-item.utils.d.ts +0 -25
  142. package/core/utils/line-item.worker.d.ts +0 -9
  143. package/esm2020/cms/plugins/configuration.plugin.mjs +0 -109
  144. package/esm2020/cms/types/configuration.types.mjs +0 -2
  145. package/esm2020/core/modules/configuration/helpers.mjs +0 -67
  146. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +0 -45
  147. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +0 -138
  148. package/esm2020/core/modules/flow-configuration/types/update.types.mjs +0 -2
  149. package/esm2020/core/services/quote-draft.service.mjs +0 -174
  150. package/esm2020/core/types/runtime.types.mjs +0 -16
  151. package/esm2020/core/utils/line-item.utils.mjs +0 -187
  152. package/esm2020/core/utils/line-item.worker.mjs +0 -19
  153. package/esm2020/src/resolvers/quote.resolver.mjs +0 -82
  154. package/esm2020/src/types/context-route.types.mjs +0 -2
  155. package/esm2020/src/types/metrics.types.mjs +0 -2
  156. package/esm2020/src/utils/flow.utils.mjs +0 -14
  157. package/esm2020/src/utils/index.mjs +0 -2
  158. package/src/resolvers/quote.resolver.d.ts +0 -18
  159. package/src/types/context-route.types.d.ts +0 -5
  160. package/src/types/metrics.types.d.ts +0 -5
  161. package/src/utils/flow.utils.d.ts +0 -1
  162. package/src/utils/index.d.ts +0 -1
@@ -1,25 +1,51 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { FlowStateApiService } from '@veloceapps/api';
3
- import { BehaviorSubject, map, noop, of, switchMap, tap } from 'rxjs';
4
- import { generateConfigurationLineItem } from '../modules/configuration';
5
- import { FlowConfigurationService } from '../modules/flow-configuration';
2
+ import { PCMApiService } from '@veloceapps/api/v2';
3
+ import { map, noop, of, switchMap, tap } from 'rxjs';
4
+ import { ConfigurationService } from '../modules/configuration/services/configuration.service';
5
+ import { FlowConfigurationService } from '../modules/flow-configuration/services/flow-configuration.service';
6
+ import { generateTransactionItem, updateQuantity } from '../utils';
6
7
  import { FlowInfoService } from './flow-info.service';
7
8
  import { FlowStateService } from './flow-state.service';
9
+ import { SalesTransactionService } from './sales-transaction.service';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "./flow-info.service";
10
- import * as i2 from "../modules/flow-configuration";
11
- import * as i3 from "@veloceapps/api";
12
- import * as i4 from "./flow-state.service";
12
+ import * as i2 from "./flow-state.service";
13
+ import * as i3 from "../modules/configuration/services/configuration.service";
14
+ import * as i4 from "./sales-transaction.service";
15
+ import * as i5 from "../modules/flow-configuration/services/flow-configuration.service";
16
+ import * as i6 from "@veloceapps/api/v2";
13
17
  export class FlowStateConfigurationService {
14
- constructor(flowInfoService, flowConfigurationService, flowStateApiService, flowStateService) {
18
+ constructor(flowInfoService, flowStateService, configurationService, salesTransactionService, flowConfigurationService, pcmApiService) {
15
19
  this.flowInfoService = flowInfoService;
16
- this.flowConfigurationService = flowConfigurationService;
17
- this.flowStateApiService = flowStateApiService;
18
20
  this.flowStateService = flowStateService;
19
- this.configurationStateId$ = new BehaviorSubject(null);
21
+ this.configurationService = configurationService;
22
+ this.salesTransactionService = salesTransactionService;
23
+ this.flowConfigurationService = flowConfigurationService;
24
+ this.pcmApiService = pcmApiService;
25
+ this.pcmCache = {};
20
26
  }
21
- get configurationStateId() {
22
- return this.configurationStateId$.value;
27
+ updateQuantity$(props) {
28
+ const allItems = this.salesTransactionService.state?.salesTransaction?.salesTransactionItems ?? [];
29
+ const ti = allItems.find(item => item.id === props.id);
30
+ if (!ti) {
31
+ return of(undefined);
32
+ }
33
+ return this.getPCMProduct$(ti.productId).pipe(map(pcm => updateQuantity(ti, props.qty, pcm)), switchMap(updatedTi => {
34
+ const state = this.salesTransactionService.state;
35
+ if (!state) {
36
+ return of(undefined);
37
+ }
38
+ const updatedState = {
39
+ ...state,
40
+ salesTransaction: {
41
+ ...state.salesTransaction,
42
+ salesTransactionItems: state.salesTransaction.salesTransactionItems.map(item => {
43
+ return updatedTi.id === item.id ? updatedTi : item;
44
+ }),
45
+ },
46
+ };
47
+ return this.flowConfigurationService.calculate$(updatedState);
48
+ }), switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));
23
49
  }
24
50
  addToCart$(props) {
25
51
  let request$;
@@ -30,24 +56,65 @@ export class FlowStateConfigurationService {
30
56
  request$ = of();
31
57
  }
32
58
  else {
33
- const lineItem = generateConfigurationLineItem(props, props.qty);
34
- request$ = this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(tap(r => this.configurationStateId$.next(r.stateId)), switchMap(() => {
35
- if (!this.configurationStateId) {
36
- return of();
37
- }
38
- return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(tap(() => this.configurationStateId$.next(null)), map(noop));
39
- }));
59
+ // TODO: Implement
60
+ request$ = of();
40
61
  }
41
62
  }
42
63
  else {
43
- request$ = this.flowConfigurationService.addToCart$(props).pipe(map(noop));
64
+ request$ = this.configureExternal$(props);
44
65
  }
45
66
  return request$.pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));
46
67
  }
68
+ configureExternal$(props) {
69
+ return this.getPCMProduct$(props.productId).pipe(switchMap(pcm => {
70
+ const { state } = this.salesTransactionService;
71
+ if (!state) {
72
+ return of();
73
+ }
74
+ const stateToConfigure = {
75
+ ...state,
76
+ salesTransaction: {
77
+ ...state.salesTransaction,
78
+ salesTransactionItems: [
79
+ {
80
+ ...generateTransactionItem(pcm, this.configurationService.state?.salesTransaction.id, props.qty ?? 1),
81
+ stiAttributes: Object.entries(props.attributesMap ?? {}).map(([attributeName, value]) => ({
82
+ attributeName,
83
+ value,
84
+ })),
85
+ },
86
+ ],
87
+ },
88
+ };
89
+ return this.configurationService.justConfigureRequest$(stateToConfigure).pipe(switchMap(configurationResult => {
90
+ const state = this.salesTransactionService.state;
91
+ const addedProduct = configurationResult.salesTransaction.salesTransactionItems[0];
92
+ if (!state || !addedProduct) {
93
+ return of();
94
+ }
95
+ return this.flowConfigurationService.calculate$({
96
+ ...state,
97
+ salesTransaction: {
98
+ ...state.salesTransaction,
99
+ salesTransactionItems: [...state.salesTransaction.salesTransactionItems, addedProduct],
100
+ },
101
+ });
102
+ }));
103
+ }));
104
+ }
105
+ getPCMProduct$(productId) {
106
+ const cached = this.pcmCache[productId];
107
+ if (cached) {
108
+ return of(cached);
109
+ }
110
+ return this.pcmApiService
111
+ .fetchPCMByProductId(productId)
112
+ .pipe(tap(pcmProduct => (this.pcmCache[productId] = pcmProduct)));
113
+ }
47
114
  }
48
- FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.FlowConfigurationService }, { token: i3.FlowStateApiService }, { token: i4.FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
115
+ FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.FlowStateService }, { token: i3.ConfigurationService }, { token: i4.SalesTransactionService }, { token: i5.FlowConfigurationService }, { token: i6.PCMApiService }], target: i0.ɵɵFactoryTarget.Injectable });
49
116
  FlowStateConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService });
50
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, decorators: [{
51
118
  type: Injectable
52
- }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.FlowConfigurationService }, { type: i3.FlowStateApiService }, { type: i4.FlowStateService }]; } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw2QkFBNkIsRUFBeUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQUd4RCxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQ1UsZUFBZ0MsRUFDaEMsd0JBQWtELEVBQ2xELG1CQUF3QyxFQUN4QyxnQkFBa0M7UUFIbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTnBDLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQU90RSxDQUFDO0lBRUosSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBNEI7UUFDNUMsSUFBSSxRQUFRLENBQUM7UUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM5RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUNwRCxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7d0JBQzlCLE9BQU8sRUFBRSxFQUFFLENBQUM7cUJBQ2I7b0JBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FDeEYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDaEQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNWLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO1NBQ0Y7YUFBTTtZQUNMLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1RTtRQUVELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ2hFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDVixDQUFDO0lBQ0osQ0FBQzs7MEhBNUNVLDZCQUE2Qjs4SEFBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93U3RhdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdlbmVyYXRlQ29uZmlndXJhdGlvbkxpbmVJdGVtLCBOZXdDb25maWd1cmF0aW9uUHJvcHMgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbW9kdWxlcy9mbG93LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgRmxvd0luZm9TZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBGbG93U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LXN0YXRlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1N0YXRlQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dDb25maWd1cmF0aW9uU2VydmljZTogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd1N0YXRlQXBpU2VydmljZTogRmxvd1N0YXRlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgZ2V0IGNvbmZpZ3VyYXRpb25TdGF0ZUlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZUlkJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0NhcnQkKHByb3BzOiBOZXdDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcmVxdWVzdCQ7XG4gICAgY29uc3Qgc3RhdGVmdWwgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICAgIGlmIChzdGF0ZWZ1bCkge1xuICAgICAgY29uc3Qgc3RhdGVJZCA9IHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkO1xuICAgICAgaWYgKCFzdGF0ZUlkKSB7XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxpbmVJdGVtID0gZ2VuZXJhdGVDb25maWd1cmF0aW9uTGluZUl0ZW0ocHJvcHMsIHByb3BzLnF0eSk7XG4gICAgICAgIHJlcXVlc3QkID0gdGhpcy5mbG93U3RhdGVBcGlTZXJ2aWNlLm5ld0NvbmZpZ3VyYXRpb24oc3RhdGVJZCwgeyBsaW5lSXRlbSB9KS5waXBlKFxuICAgICAgICAgIHRhcChyID0+IHRoaXMuY29uZmlndXJhdGlvblN0YXRlSWQkLm5leHQoci5zdGF0ZUlkKSksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uU3RhdGVJZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2Uuc2F2ZUNvbmZpZ3VyYXRpb24oc3RhdGVJZCwgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVJZCkucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuY29uZmlndXJhdGlvblN0YXRlSWQkLm5leHQobnVsbCkpLFxuICAgICAgICAgICAgICBtYXAobm9vcCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0JCA9IHRoaXMuZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmFkZFRvQ2FydCQocHJvcHMpLnBpcGUobWFwKG5vb3ApKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxufVxuIl19
119
+ }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.FlowStateService }, { type: i3.ConfigurationService }, { type: i4.SalesTransactionService }, { type: i5.FlowConfigurationService }, { type: i6.PCMApiService }]; } });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQUd0RSxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQ1UsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG9CQUEwQyxFQUMxQyx1QkFBZ0QsRUFDaEQsd0JBQWtELEVBQ2xELGFBQTRCO1FBTDVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUjlCLGFBQVEsR0FBMkIsRUFBRSxDQUFDO0lBUzNDLENBQUM7SUFFRyxlQUFlLENBQUMsS0FBMEI7UUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsSUFBSSxFQUFFLENBQUM7UUFDbkcsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDOUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7WUFFakQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN0QjtZQUVELE1BQU0sWUFBWSxHQUF1QjtnQkFDdkMsR0FBRyxLQUFLO2dCQUNSLGdCQUFnQixFQUFFO29CQUNoQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0I7b0JBQ3pCLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzdFLE9BQU8sU0FBUyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDckQsQ0FBQyxDQUFDO2lCQUNIO2FBQ0YsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQTRCO1FBQzVDLElBQUksUUFBNkIsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxrQkFBa0I7Z0JBQ2xCLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtTQUNGO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBNEI7UUFDckQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNkLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQ2I7WUFFRCxNQUFNLGdCQUFnQixHQUF1QjtnQkFDM0MsR0FBRyxLQUFLO2dCQUNSLGdCQUFnQixFQUFFO29CQUNoQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0I7b0JBQ3pCLHFCQUFxQixFQUFFO3dCQUNyQjs0QkFDRSxHQUFHLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzs0QkFDckcsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQ0FDeEYsYUFBYTtnQ0FDYixLQUFLOzZCQUNOLENBQUMsQ0FBb0M7eUJBQ3ZDO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUMzRSxTQUFTLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztnQkFDakQsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQzNCLE9BQU8sRUFBRSxFQUFFLENBQUM7aUJBQ2I7Z0JBRUQsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDO29CQUM5QyxHQUFHLEtBQUs7b0JBQ1IsZ0JBQWdCLEVBQUU7d0JBQ2hCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQjt3QkFDekIscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUM7cUJBQ3ZGO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFpQjtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkI7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzswSEF6SFUsNkJBQTZCOzhIQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBDTUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgUENNUHJvZHVjdCwgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGUsIFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBtYXAsIG5vb3AsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcywgUXVhbnRpdHlDaGFuZ2VQcm9wcyB9IGZyb20gJy4uL21vZHVsZXMvY29uZmlndXJhdGlvbi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtLCB1cGRhdGVRdWFudGl0eSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zYWxlcy10cmFuc2FjdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwY21DYWNoZTogRGljdGlvbmFyeTxQQ01Qcm9kdWN0PiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwY21BcGlTZXJ2aWNlOiBQQ01BcGlTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHVwZGF0ZVF1YW50aXR5JChwcm9wczogUXVhbnRpdHlDaGFuZ2VQcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbj8uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuICAgIGNvbnN0IHRpID0gYWxsSXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHByb3BzLmlkKTtcblxuICAgIGlmICghdGkpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHRpLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIG1hcChwY20gPT4gdXBkYXRlUXVhbnRpdHkodGksIHByb3BzLnF0eSwgcGNtKSksXG4gICAgICBzd2l0Y2hNYXAodXBkYXRlZFRpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRUaS5pZCA9PT0gaXRlbS5pZCA/IHVwZGF0ZWRUaSA6IGl0ZW07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0NhcnQkKHByb3BzOiBOZXdDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5rbm93bj47XG4gICAgY29uc3Qgc3RhdGVmdWwgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICAgIGlmIChzdGF0ZWZ1bCkge1xuICAgICAgY29uc3Qgc3RhdGVJZCA9IHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkO1xuICAgICAgaWYgKCFzdGF0ZUlkKSB7XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHByb3BzLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChwY20gPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZVRvQ29uZmlndXJlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4uZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocGNtLCB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLmlkLCBwcm9wcy5xdHkgPz8gMSksXG4gICAgICAgICAgICAgICAgc3RpQXR0cmlidXRlczogT2JqZWN0LmVudHJpZXMocHJvcHMuYXR0cmlidXRlc01hcCA/PyB7fSkubWFwKChbYXR0cmlidXRlTmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZVtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmp1c3RDb25maWd1cmVSZXF1ZXN0JChzdGF0ZVRvQ29uZmlndXJlKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChjb25maWd1cmF0aW9uUmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGFkZGVkUHJvZHVjdCA9IGNvbmZpZ3VyYXRpb25SZXN1bHQuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF07XG4gICAgICAgICAgICBpZiAoIXN0YXRlIHx8ICFhZGRlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogWy4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLCBhZGRlZFByb2R1Y3RdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQQ01Qcm9kdWN0JChwcm9kdWN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UENNUHJvZHVjdD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucGNtQ2FjaGVbcHJvZHVjdElkXTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gb2YoY2FjaGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wY21BcGlTZXJ2aWNlXG4gICAgICAuZmV0Y2hQQ01CeVByb2R1Y3RJZChwcm9kdWN0SWQpXG4gICAgICAucGlwZSh0YXAocGNtUHJvZHVjdCA9PiAodGhpcy5wY21DYWNoZVtwcm9kdWN0SWRdID0gcGNtUHJvZHVjdCkpKTtcbiAgfVxufVxuIl19