@veloceapps/sdk 11.0.0-126 → 11.0.0-128

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.
@@ -2,10 +2,10 @@ import { DataSource } from '@angular/cdk/collections';
2
2
  import * as angularCore from '@angular/core';
3
3
  import * as angularForms from '@angular/forms';
4
4
  import { ContractedPriceApiService } from '@veloceapps/api';
5
- import { CatalogApiService, ConfigurationSettingsApiService, GuidedSellingApiService, DocumentAttachmentApiService, SalesforceApiService, SalesTransactionApiService, ShoppingCartSettingsApiService } from '@veloceapps/api/v2';
5
+ import { CatalogApiService, ConfigurationSettingsApiService, DocumentAttachmentApiService, GuidedSellingApiService, SalesforceApiService, SalesTransactionApiService, ShoppingCartSettingsApiService } from '@veloceapps/api/v2';
6
6
  import { ToastService, ToastType } from '@veloceapps/components';
7
7
  import { Operator, parseJsonSafely, parseJwt, Predicate, TokenInfoService, UITemplateType } from '@veloceapps/core';
8
- import { ActionCodePipe, ConfigurationService, GuidedSellingService, ConfigurationStateService, DatePipe, filterSuccessfulExecute, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, IntegrationState, NumberPipe, PricePipe, ProductImagesService, RuntimeSettingsService, SalesTransactionService, TransactionItemWorker } from '@veloceapps/sdk/core';
8
+ import { ActionCodePipe, ConfigurationService, ConfigurationStateService, DatePipe, filterSuccessfulExecute, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, GuidedSellingService, IntegrationState, NumberPipe, PCMUtils, PricePipe, ProductImagesService, RuntimeSettingsService, SalesTransactionService, TransactionItemWorker } from '@veloceapps/sdk/core';
9
9
  import lodash from 'lodash';
10
10
  import * as rxjs from 'rxjs';
11
11
  import * as rxjsOperators from 'rxjs/operators';
@@ -56,7 +56,10 @@ export declare const vendorMap: {
56
56
  NumberPipe: typeof NumberPipe;
57
57
  PricePipe: typeof PricePipe;
58
58
  SalesTransactionService: typeof SalesTransactionService;
59
- generateTransactionItem: (pcm: import("@veloceapps/core").PCMProduct, salesTransactionId: string | undefined) => import("@veloceapps/core").SalesTransactionItem;
59
+ generateTransactionItem: (option: import("@veloceapps/core").PCMProduct, salesTransactionId?: string | undefined, qty?: number | undefined, parentTi?: import("@veloceapps/core").SalesTransactionItem | undefined) => import("@veloceapps/core").SalesTransactionItem;
60
+ updateQuantity: (ti: import("@veloceapps/core").SalesTransactionItem, qty: number, pcm: import("@veloceapps/core").PCMProduct, parentQty?: number | undefined) => import("@veloceapps/core").SalesTransactionItem;
61
+ flattenTransactionItem: (ti: import("@veloceapps/core").SalesTransactionItem) => import("@veloceapps/core").SalesTransactionItem[];
62
+ PCMUtils: typeof PCMUtils;
60
63
  };
61
64
  '@veloceapps/sdk/cms': {
62
65
  TemplatesService: typeof TemplatesService;
@@ -14,3 +14,7 @@ export interface NewConfigurationProps extends ExternalConfigurationProps {
14
14
  export interface TestModeConfigurationOptions {
15
15
  customizationMode?: boolean;
16
16
  }
17
+ export interface QuantityChangeProps {
18
+ id: string;
19
+ qty: number;
20
+ }
@@ -1,11 +1,11 @@
1
+ import { PCMApiService } from '@veloceapps/api/v2';
1
2
  import { Observable } from 'rxjs';
2
3
  import { ConfigurationService } from '../modules/configuration/services/configuration.service';
3
- import { NewConfigurationProps } from '../modules/configuration/types/configuration.types';
4
+ import { NewConfigurationProps, QuantityChangeProps } from '../modules/configuration/types/configuration.types';
4
5
  import { FlowConfigurationService } from '../modules/flow-configuration/services/flow-configuration.service';
5
6
  import { FlowInfoService } from './flow-info.service';
6
7
  import { FlowStateService } from './flow-state.service';
7
8
  import { SalesTransactionService } from './sales-transaction.service';
8
- import { PCMApiService } from '@veloceapps/api/v2';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class FlowStateConfigurationService {
11
11
  private flowInfoService;
@@ -14,9 +14,12 @@ export declare class FlowStateConfigurationService {
14
14
  private salesTransactionService;
15
15
  private flowConfigurationService;
16
16
  private pcmApiService;
17
+ private pcmCache;
17
18
  constructor(flowInfoService: FlowInfoService, flowStateService: FlowStateService, configurationService: ConfigurationService, salesTransactionService: SalesTransactionService, flowConfigurationService: FlowConfigurationService, pcmApiService: PCMApiService);
19
+ updateQuantity$(props: QuantityChangeProps): Observable<void>;
18
20
  addToCart$(props: NewConfigurationProps): Observable<void>;
19
21
  private configureExternal$;
22
+ private getPCMProduct$;
20
23
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowStateConfigurationService, never>;
21
24
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowStateConfigurationService>;
22
25
  }
@@ -1,3 +1,4 @@
1
+ export * from './pcm.utils';
1
2
  export * from './transaction-item.utils';
2
3
  export * from './transaction-item.worker';
3
4
  export * from './ui-definition.utils';
@@ -0,0 +1,5 @@
1
+ import { PCMProduct } from '@veloceapps/core';
2
+ import { Dictionary } from 'lodash';
3
+ export declare class PCMUtils {
4
+ static mapByPrcId(pcm: PCMProduct): Dictionary<PCMProduct>;
5
+ }
@@ -1,8 +1,10 @@
1
- import { PCMModel, SalesTransactionItem } from '@veloceapps/core';
1
+ import { PCMModel, PCMProduct, SalesTransactionItem } from '@veloceapps/core';
2
2
  export declare const findTransactionItem: (id: string, items: SalesTransactionItem[]) => SalesTransactionItem | undefined;
3
3
  export declare const findTransactionItemWithComparator: (items: SalesTransactionItem[], comparator: (ti: SalesTransactionItem) => boolean) => SalesTransactionItem | undefined;
4
4
  export declare const insertTransactionItem: (item: SalesTransactionItem, parentId: string, toInsert: SalesTransactionItem) => SalesTransactionItem;
5
5
  export declare const removeTransactionItem: (item: SalesTransactionItem, idToRemove: string) => SalesTransactionItem;
6
6
  export declare const replaceTransactionItem: (item: SalesTransactionItem, replaceTo: SalesTransactionItem) => SalesTransactionItem;
7
- export declare const generateTransactionItem: (pcm: PCMModel, salesTransactionId: string | undefined) => SalesTransactionItem;
8
- export declare const generateTransactionItemFromPCM: (option: PCMModel, parentTi: SalesTransactionItem, salesTransactionId: string | undefined) => SalesTransactionItem;
7
+ export declare const generateTransactionItem: (option: PCMModel, salesTransactionId?: string, qty?: number, parentTi?: SalesTransactionItem) => SalesTransactionItem;
8
+ export declare const generateTransactionItemFromPCM: (option: PCMModel, salesTransactionId?: string, parentTi?: SalesTransactionItem) => SalesTransactionItem;
9
+ export declare const flattenTransactionItem: (ti: SalesTransactionItem) => SalesTransactionItem[];
10
+ export declare const updateQuantity: (ti: SalesTransactionItem, qty: number, pcm: PCMProduct, parentQty?: number) => SalesTransactionItem;
@@ -2,10 +2,10 @@ import { DataSource } from '@angular/cdk/collections';
2
2
  import * as angularCore from '@angular/core';
3
3
  import * as angularForms from '@angular/forms';
4
4
  import { ContractedPriceApiService } from '@veloceapps/api';
5
- import { CatalogApiService, ConfigurationSettingsApiService, GuidedSellingApiService, DocumentAttachmentApiService, SalesforceApiService, SalesTransactionApiService, ShoppingCartSettingsApiService, } from '@veloceapps/api/v2';
5
+ import { CatalogApiService, ConfigurationSettingsApiService, DocumentAttachmentApiService, GuidedSellingApiService, SalesforceApiService, SalesTransactionApiService, ShoppingCartSettingsApiService, } from '@veloceapps/api/v2';
6
6
  import { ToastService, ToastType } from '@veloceapps/components';
7
7
  import { isDefined, Operator, parseJsonSafely, parseJwt, Predicate, TokenInfoService, UITemplateType, } from '@veloceapps/core';
8
- import { ActionCodePipe, ConfigurationService, GuidedSellingService, ConfigurationStateService, DatePipe, filterSuccessfulExecute, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, IntegrationState, NumberPipe, PricePipe, ProductImagesService, RuntimeSettingsService, SalesTransactionService, TransactionItemWorker, generateTransactionItem, } from '@veloceapps/sdk/core';
8
+ import { ActionCodePipe, ConfigurationService, ConfigurationStateService, DatePipe, filterSuccessfulExecute, flattenTransactionItem, FlowConfigurationService, FlowInfoService, FlowStateConfigurationService, FlowStateService, generateTransactionItem, GuidedSellingService, IntegrationState, NumberPipe, PCMUtils, PricePipe, ProductImagesService, RuntimeSettingsService, SalesTransactionService, TransactionItemWorker, updateQuantity, } from '@veloceapps/sdk/core';
9
9
  import lodash from 'lodash';
10
10
  import * as rxjs from 'rxjs';
11
11
  import * as rxjsOperators from 'rxjs/operators';
@@ -59,6 +59,9 @@ export const vendorMap = {
59
59
  PricePipe,
60
60
  SalesTransactionService,
61
61
  generateTransactionItem,
62
+ updateQuantity,
63
+ flattenTransactionItem,
64
+ PCMUtils,
62
65
  },
63
66
  '@veloceapps/sdk/cms': {
64
67
  ...cmsInjectionTokens,
@@ -77,4 +80,4 @@ export const vendorMap = {
77
80
  'rxjs/operators': rxjsOperators,
78
81
  lodash: lodash,
79
82
  };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy92ZW5kb3ItbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEtBQUssV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQUssWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQiw4QkFBOEIsR0FDL0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixRQUFRLEVBQ1IsU0FBUyxFQUNULGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsU0FBUyxFQUNULG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQix1QkFBdUIsR0FDeEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEtBQUssa0JBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixrQkFBa0IsRUFBRTtRQUNsQixTQUFTO1FBQ1QsUUFBUTtRQUNSLFNBQVM7UUFDVCxlQUFlO1FBQ2YsUUFBUTtRQUNSLGdCQUFnQjtRQUNoQixjQUFjO0tBQ2Y7SUFDRCx3QkFBd0IsRUFBRTtRQUN4QixZQUFZO1FBQ1osU0FBUztLQUNWO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIseUJBQXlCO0tBQzFCO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsaUJBQWlCO1FBQ2pCLCtCQUErQjtRQUMvQiw0QkFBNEI7UUFDNUIsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQiwwQkFBMEI7UUFDMUIsOEJBQThCO0tBQy9CO0lBQ0Qsc0JBQXNCLEVBQUU7UUFDdEIsb0JBQW9CO1FBQ3BCLHlCQUF5QjtRQUN6QixvQkFBb0I7UUFDcEIsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQiw2QkFBNkI7UUFDN0IscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsY0FBYztRQUNkLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULHVCQUF1QjtRQUN2Qix1QkFBdUI7S0FDeEI7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLGtCQUFrQjtRQUNyQixHQUFHLFVBQVU7UUFDYixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixTQUFTO0tBQ1Y7SUFDRCxlQUFlLEVBQUUsV0FBVztJQUM1QixnQkFBZ0IsRUFBRSxZQUFZO0lBQzlCLDBCQUEwQixFQUFFO1FBQzFCLFVBQVU7S0FDWDtJQUNELElBQUksRUFBRSxJQUFJO0lBQ1YsZ0JBQWdCLEVBQUUsYUFBYTtJQUMvQixNQUFNLEVBQUUsTUFBTTtDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCAqIGFzIGFuZ3VsYXJDb3JlIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgYW5ndWxhckZvcm1zIGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyYWN0ZWRQcmljZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ0FwaVNlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TZXR0aW5nc0FwaVNlcnZpY2UsXG4gIEd1aWRlZFNlbGxpbmdBcGlTZXJ2aWNlLFxuICBEb2N1bWVudEF0dGFjaG1lbnRBcGlTZXJ2aWNlLFxuICBTYWxlc2ZvcmNlQXBpU2VydmljZSxcbiAgU2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2UsXG4gIFNob3BwaW5nQ2FydFNldHRpbmdzQXBpU2VydmljZSxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSwgVG9hc3RUeXBlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBpc0RlZmluZWQsXG4gIE9wZXJhdG9yLFxuICBwYXJzZUpzb25TYWZlbHksXG4gIHBhcnNlSnd0LFxuICBQcmVkaWNhdGUsXG4gIFRva2VuSW5mb1NlcnZpY2UsXG4gIFVJVGVtcGxhdGVUeXBlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkNvZGVQaXBlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgR3VpZGVkU2VsbGluZ1NlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gIERhdGVQaXBlLFxuICBmaWx0ZXJTdWNjZXNzZnVsRXhlY3V0ZSxcbiAgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBGbG93SW5mb1NlcnZpY2UsXG4gIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBGbG93U3RhdGVTZXJ2aWNlLFxuICBJbnRlZ3JhdGlvblN0YXRlLFxuICBOdW1iZXJQaXBlLFxuICBQcmljZVBpcGUsXG4gIFByb2R1Y3RJbWFnZXNTZXJ2aWNlLFxuICBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSxcbiAgVHJhbnNhY3Rpb25JdGVtV29ya2VyLFxuICBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbSxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIHJ4anNPcGVyYXRvcnMgZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgY21zQWN0aW9ucyBmcm9tICcuL2Ntcy5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGNtc0luamVjdGlvblRva2VucyBmcm9tICcuL2luamVjdGlvbi10b2tlbnMnO1xuaW1wb3J0IHsgUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcmVzb3VyY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgY21zSW5qZWN0IH0gZnJvbSAnLi91dGlscy9pbmplY3QnO1xuXG5leHBvcnQgY29uc3QgdmVuZG9yTWFwID0ge1xuICAnQHZlbG9jZWFwcHMvY29yZSc6IHtcbiAgICBpc0RlZmluZWQsXG4gICAgT3BlcmF0b3IsXG4gICAgUHJlZGljYXRlLFxuICAgIHBhcnNlSnNvblNhZmVseSxcbiAgICBwYXJzZUp3dCxcbiAgICBUb2tlbkluZm9TZXJ2aWNlLFxuICAgIFVJVGVtcGxhdGVUeXBlLFxuICB9LFxuICAnQHZlbG9jZWFwcHMvY29tcG9uZW50cyc6IHtcbiAgICBUb2FzdFNlcnZpY2UsXG4gICAgVG9hc3RUeXBlLFxuICB9LFxuICAnQHZlbG9jZWFwcHMvYXBpJzoge1xuICAgIENvbnRyYWN0ZWRQcmljZUFwaVNlcnZpY2UsXG4gIH0sXG4gICdAdmVsb2NlYXBwcy9hcGkvdjInOiB7XG4gICAgQ2F0YWxvZ0FwaVNlcnZpY2UsXG4gICAgQ29uZmlndXJhdGlvblNldHRpbmdzQXBpU2VydmljZSxcbiAgICBEb2N1bWVudEF0dGFjaG1lbnRBcGlTZXJ2aWNlLFxuICAgIEd1aWRlZFNlbGxpbmdBcGlTZXJ2aWNlLFxuICAgIFNhbGVzZm9yY2VBcGlTZXJ2aWNlLFxuICAgIFNhbGVzVHJhbnNhY3Rpb25BcGlTZXJ2aWNlLFxuICAgIFNob3BwaW5nQ2FydFNldHRpbmdzQXBpU2VydmljZSxcbiAgfSxcbiAgJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJzoge1xuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIENvbmZpZ3VyYXRpb25TdGF0ZVNlcnZpY2UsXG4gICAgR3VpZGVkU2VsbGluZ1NlcnZpY2UsXG4gICAgZmlsdGVyU3VjY2Vzc2Z1bEV4ZWN1dGUsXG4gICAgRmxvd0luZm9TZXJ2aWNlLFxuICAgIEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIEZsb3dTdGF0ZVNlcnZpY2UsXG4gICAgRmxvd1N0YXRlQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgVHJhbnNhY3Rpb25JdGVtV29ya2VyLFxuICAgIFByb2R1Y3RJbWFnZXNTZXJ2aWNlLFxuICAgIFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsXG4gICAgQWN0aW9uQ29kZVBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgTnVtYmVyUGlwZSxcbiAgICBQcmljZVBpcGUsXG4gICAgU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0sXG4gIH0sXG4gICdAdmVsb2NlYXBwcy9zZGsvY21zJzoge1xuICAgIC4uLmNtc0luamVjdGlvblRva2VucyxcbiAgICAuLi5jbXNBY3Rpb25zLFxuICAgIFRlbXBsYXRlc1NlcnZpY2UsXG4gICAgSW50ZWdyYXRpb25TdGF0ZSxcbiAgICBSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIGNtc0luamVjdCxcbiAgfSxcbiAgJ0Bhbmd1bGFyL2NvcmUnOiBhbmd1bGFyQ29yZSxcbiAgJ0Bhbmd1bGFyL2Zvcm1zJzogYW5ndWxhckZvcm1zLFxuICAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJzoge1xuICAgIERhdGFTb3VyY2UsXG4gIH0sXG4gIHJ4anM6IHJ4anMsXG4gICdyeGpzL29wZXJhdG9ycyc6IHJ4anNPcGVyYXRvcnMsXG4gIGxvZGFzaDogbG9kYXNoLFxufTtcblxuZXhwb3J0IHR5cGUgVmVuZG9yTWFwID0gdHlwZW9mIHZlbmRvck1hcDtcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy92ZW5kb3ItbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEtBQUssV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEtBQUssWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsK0JBQStCLEVBQy9CLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQiw4QkFBOEIsR0FDL0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLGVBQWUsRUFDZixRQUFRLEVBQ1IsU0FBUyxFQUNULGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixjQUFjLEdBQ2YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEtBQUssa0JBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixrQkFBa0IsRUFBRTtRQUNsQixTQUFTO1FBQ1QsUUFBUTtRQUNSLFNBQVM7UUFDVCxlQUFlO1FBQ2YsUUFBUTtRQUNSLGdCQUFnQjtRQUNoQixjQUFjO0tBQ2Y7SUFDRCx3QkFBd0IsRUFBRTtRQUN4QixZQUFZO1FBQ1osU0FBUztLQUNWO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIseUJBQXlCO0tBQzFCO0lBQ0Qsb0JBQW9CLEVBQUU7UUFDcEIsaUJBQWlCO1FBQ2pCLCtCQUErQjtRQUMvQiw0QkFBNEI7UUFDNUIsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQiwwQkFBMEI7UUFDMUIsOEJBQThCO0tBQy9CO0lBQ0Qsc0JBQXNCLEVBQUU7UUFDdEIsb0JBQW9CO1FBQ3BCLHlCQUF5QjtRQUN6QixvQkFBb0I7UUFDcEIsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQiw2QkFBNkI7UUFDN0IscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsY0FBYztRQUNkLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsY0FBYztRQUNkLHNCQUFzQjtRQUN0QixRQUFRO0tBQ1Q7SUFDRCxxQkFBcUIsRUFBRTtRQUNyQixHQUFHLGtCQUFrQjtRQUNyQixHQUFHLFVBQVU7UUFDYixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixTQUFTO0tBQ1Y7SUFDRCxlQUFlLEVBQUUsV0FBVztJQUM1QixnQkFBZ0IsRUFBRSxZQUFZO0lBQzlCLDBCQUEwQixFQUFFO1FBQzFCLFVBQVU7S0FDWDtJQUNELElBQUksRUFBRSxJQUFJO0lBQ1YsZ0JBQWdCLEVBQUUsYUFBYTtJQUMvQixNQUFNLEVBQUUsTUFBTTtDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCAqIGFzIGFuZ3VsYXJDb3JlIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgYW5ndWxhckZvcm1zIGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyYWN0ZWRQcmljZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ0FwaVNlcnZpY2UsXG4gIENvbmZpZ3VyYXRpb25TZXR0aW5nc0FwaVNlcnZpY2UsXG4gIERvY3VtZW50QXR0YWNobWVudEFwaVNlcnZpY2UsXG4gIEd1aWRlZFNlbGxpbmdBcGlTZXJ2aWNlLFxuICBTYWxlc2ZvcmNlQXBpU2VydmljZSxcbiAgU2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2UsXG4gIFNob3BwaW5nQ2FydFNldHRpbmdzQXBpU2VydmljZSxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSwgVG9hc3RUeXBlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBpc0RlZmluZWQsXG4gIE9wZXJhdG9yLFxuICBwYXJzZUpzb25TYWZlbHksXG4gIHBhcnNlSnd0LFxuICBQcmVkaWNhdGUsXG4gIFRva2VuSW5mb1NlcnZpY2UsXG4gIFVJVGVtcGxhdGVUeXBlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkNvZGVQaXBlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgRGF0ZVBpcGUsXG4gIGZpbHRlclN1Y2Nlc3NmdWxFeGVjdXRlLFxuICBmbGF0dGVuVHJhbnNhY3Rpb25JdGVtLFxuICBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gIEZsb3dJbmZvU2VydmljZSxcbiAgRmxvd1N0YXRlQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gIEZsb3dTdGF0ZVNlcnZpY2UsXG4gIGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtLFxuICBHdWlkZWRTZWxsaW5nU2VydmljZSxcbiAgSW50ZWdyYXRpb25TdGF0ZSxcbiAgTnVtYmVyUGlwZSxcbiAgUENNVXRpbHMsXG4gIFByaWNlUGlwZSxcbiAgUHJvZHVjdEltYWdlc1NlcnZpY2UsXG4gIFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsXG4gIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIsXG4gIHVwZGF0ZVF1YW50aXR5LFxufSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgcnhqc09wZXJhdG9ycyBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBjbXNBY3Rpb25zIGZyb20gJy4vY21zLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgY21zSW5qZWN0aW9uVG9rZW5zIGZyb20gJy4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9yZXNvdXJjZXMuc2VydmljZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZW1wbGF0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBjbXNJbmplY3QgfSBmcm9tICcuL3V0aWxzL2luamVjdCc7XG5cbmV4cG9ydCBjb25zdCB2ZW5kb3JNYXAgPSB7XG4gICdAdmVsb2NlYXBwcy9jb3JlJzoge1xuICAgIGlzRGVmaW5lZCxcbiAgICBPcGVyYXRvcixcbiAgICBQcmVkaWNhdGUsXG4gICAgcGFyc2VKc29uU2FmZWx5LFxuICAgIHBhcnNlSnd0LFxuICAgIFRva2VuSW5mb1NlcnZpY2UsXG4gICAgVUlUZW1wbGF0ZVR5cGUsXG4gIH0sXG4gICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJzoge1xuICAgIFRvYXN0U2VydmljZSxcbiAgICBUb2FzdFR5cGUsXG4gIH0sXG4gICdAdmVsb2NlYXBwcy9hcGknOiB7XG4gICAgQ29udHJhY3RlZFByaWNlQXBpU2VydmljZSxcbiAgfSxcbiAgJ0B2ZWxvY2VhcHBzL2FwaS92Mic6IHtcbiAgICBDYXRhbG9nQXBpU2VydmljZSxcbiAgICBDb25maWd1cmF0aW9uU2V0dGluZ3NBcGlTZXJ2aWNlLFxuICAgIERvY3VtZW50QXR0YWNobWVudEFwaVNlcnZpY2UsXG4gICAgR3VpZGVkU2VsbGluZ0FwaVNlcnZpY2UsXG4gICAgU2FsZXNmb3JjZUFwaVNlcnZpY2UsXG4gICAgU2FsZXNUcmFuc2FjdGlvbkFwaVNlcnZpY2UsXG4gICAgU2hvcHBpbmdDYXJ0U2V0dGluZ3NBcGlTZXJ2aWNlLFxuICB9LFxuICAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnOiB7XG4gICAgQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgQ29uZmlndXJhdGlvblN0YXRlU2VydmljZSxcbiAgICBHdWlkZWRTZWxsaW5nU2VydmljZSxcbiAgICBmaWx0ZXJTdWNjZXNzZnVsRXhlY3V0ZSxcbiAgICBGbG93SW5mb1NlcnZpY2UsXG4gICAgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIEludGVncmF0aW9uU3RhdGUsXG4gICAgRmxvd1N0YXRlU2VydmljZSxcbiAgICBGbG93U3RhdGVDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIsXG4gICAgUHJvZHVjdEltYWdlc1NlcnZpY2UsXG4gICAgUnVudGltZVNldHRpbmdzU2VydmljZSxcbiAgICBBY3Rpb25Db2RlUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBOdW1iZXJQaXBlLFxuICAgIFByaWNlUGlwZSxcbiAgICBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSxcbiAgICBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbSxcbiAgICB1cGRhdGVRdWFudGl0eSxcbiAgICBmbGF0dGVuVHJhbnNhY3Rpb25JdGVtLFxuICAgIFBDTVV0aWxzLFxuICB9LFxuICAnQHZlbG9jZWFwcHMvc2RrL2Ntcyc6IHtcbiAgICAuLi5jbXNJbmplY3Rpb25Ub2tlbnMsXG4gICAgLi4uY21zQWN0aW9ucyxcbiAgICBUZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIEludGVncmF0aW9uU3RhdGUsXG4gICAgUmVzb3VyY2VzU2VydmljZSxcbiAgICBjbXNJbmplY3QsXG4gIH0sXG4gICdAYW5ndWxhci9jb3JlJzogYW5ndWxhckNvcmUsXG4gICdAYW5ndWxhci9mb3Jtcyc6IGFuZ3VsYXJGb3JtcyxcbiAgJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc6IHtcbiAgICBEYXRhU291cmNlLFxuICB9LFxuICByeGpzOiByeGpzLFxuICAncnhqcy9vcGVyYXRvcnMnOiByeGpzT3BlcmF0b3JzLFxuICBsb2Rhc2g6IGxvZGFzaCxcbn07XG5cbmV4cG9ydCB0eXBlIFZlbmRvck1hcCA9IHR5cGVvZiB2ZW5kb3JNYXA7XG4iXX0=
@@ -63,10 +63,8 @@ export class ConfigurationService {
63
63
  transactionItem = salesTransactionItems.find(item => item.productId === productId);
64
64
  }
65
65
  if (!transactionItem) {
66
- transactionItem = generateTransactionItem(this.getPCMModel(), this.state?.salesTransaction.id);
67
- if (typeof newProductQty === 'number' && newProductQty > 0) {
68
- transactionItem.qty = newProductQty;
69
- }
66
+ const quantity = typeof newProductQty === 'number' && newProductQty > 0 ? newProductQty : undefined;
67
+ transactionItem = generateTransactionItem(this.getPCMModel(), this.state?.salesTransaction.id, quantity);
70
68
  isRootGenerated = true;
71
69
  }
72
70
  const guidedSellingResult = this.guidedSellingService.guidedSellingResult;
@@ -146,7 +144,6 @@ export class ConfigurationService {
146
144
  })));
147
145
  }
148
146
  getPCMModel() {
149
- console.log('GET PCM');
150
147
  const pcmModel = this.configurationRuntimeService.pcmModel;
151
148
  if (!pcmModel) {
152
149
  throw new Error('PCM model not initialized');
@@ -159,4 +156,4 @@ ConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
159
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService, decorators: [{
160
157
  type: Injectable
161
158
  }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.MessageService }, { type: i3.ConfigurationRuntimeService }, { type: i1.SalesTransactionService }, { type: i4.OrchestrationsApiService }, { type: i5.GuidedSellingService }]; } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsU0FBUyxHQUtWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFHaEUsTUFBTSxPQUFPLG9CQUFvQjtJQVEvQixZQUNVLGVBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLDJCQUF3RCxFQUN4RCx1QkFBZ0QsRUFDaEQsd0JBQWtELEVBQ2xELG9CQUEwQztRQUwxQyxvQkFBZSxHQUFm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YW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSwgUHJvY2VkdXJlQXBwbHlSZXF1ZXN0IH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7XG4gIGV4dHJhY3RFcnJvckRldGFpbHMsXG4gIGlzRGVmaW5lZCxcbiAgUENNTW9kZWwsXG4gIFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZSxcbiAgVHJhbnNhY3Rpb25Db250ZXh0LFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgZmluYWxpemUsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmxvd0luZm9TZXJ2aWNlLCBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtLCBUcmFuc2FjdGlvbkl0ZW1Xb3JrZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tcnVudGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IEd1aWRlZFNlbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi9ndWlkZWQtc2VsbGluZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBoYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY29uZmlndXJhdGlvblN0YXRlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGlzTG9hZGluZ1N1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmbG93SW5mb1NlcnZpY2U6IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZTogQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlOiBPcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBndWlkZWRTZWxsaW5nU2VydmljZTogR3VpZGVkU2VsbGluZ1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuaXNMb2FkaW5nJCA9IHRoaXMuaXNMb2FkaW5nU3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKGlzRGVmaW5lZCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpOiBUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmV2aW91c1N0YXRlKCk6IFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9vdCQoKTogT2JzZXJ2YWJsZTxTYWxlc1RyYW5zYWN0aW9uSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgbWFwKHN0YXRlID0+IHN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zWzBdKSxcbiAgICAgIGZpbHRlcihpc0RlZmluZWQpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJvb3QoKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpPy5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtc1swXSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChudWxsKTtcbiAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlO1xuICAgIGNvbnN0IHsgc3RhbmRhbG9uZSB9ID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdy5wcm9wZXJ0aWVzO1xuICAgIGNvbnN0IHsgcHJvZHVjdElkLCB0cmFuc2FjdGlvbkl0ZW1JZCwgbmV3UHJvZHVjdFF0eSB9ID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuY29udGV4dDtcblxuICAgIGlmICghc3RhdGUgfHwgIXByb2R1Y3RJZCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID0gc3RhdGU/LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuICAgIGxldCBpc1Jvb3RHZW5lcmF0ZWQgPSBmYWxzZTtcbiAgICBsZXQgdHJhbnNhY3Rpb25JdGVtID0gc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSB0cmFuc2FjdGlvbkl0ZW1JZCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbkl0ZW0gJiYgc3RhbmRhbG9uZSkge1xuICAgICAgdHJhbnNhY3Rpb25JdGVtID0gc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnByb2R1Y3RJZCA9PT0gcHJvZHVjdElkKTtcbiAgICB9XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uSXRlbSkge1xuICAgICAgdHJhbnNhY3Rpb25JdGVtID0gZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0odGhpcy5nZXRQQ01Nb2RlbCgpLCB0aGlzLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLmlkKTtcbiAgICAgIGlmICh0eXBlb2YgbmV3UHJvZHVjdFF0eSA9PT0gJ251bWJlcicgJiYgbmV3UHJvZHVjdFF0eSA+IDApIHtcbiAgICAgICAgdHJhbnNhY3Rpb25JdGVtLnF0eSA9IG5ld1Byb2R1Y3RRdHk7XG4gICAgICB9XG4gICAgICBpc1Jvb3RHZW5lcmF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGd1aWRlZFNlbGxpbmdSZXN1bHQgPSB0aGlzLmd1aWRlZFNlbGxpbmdTZXJ2aWNlLmd1aWRlZFNlbGxpbmdSZXN1bHQ7XG4gICAgaWYgKHRyYW5zYWN0aW9uSXRlbSAmJiBPYmplY3Qua2V5cyhndWlkZWRTZWxsaW5nUmVzdWx0KS5sZW5ndGggJiYgaXNSb290R2VuZXJhdGVkKSB7XG4gICAgICB0cmFuc2FjdGlvbkl0ZW0uc3RpQXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKGd1aWRlZFNlbGxpbmdSZXN1bHQpLm1hcCgoW2F0dHJpYnV0ZU5hbWUsIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgYXR0cmlidXRlTmFtZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KSkgYXMgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGVbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uU3RhdGU6IFRyYW5zYWN0aW9uQ29udGV4dCA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHRyYW5zYWN0aW9uSXRlbSA/IFt0cmFuc2FjdGlvbkl0ZW1dIDogW10sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gKGlzUm9vdEdlbmVyYXRlZCA/IHRoaXMuY29uZmlndXJlJChjb25maWd1cmF0aW9uU3RhdGUpIDogb2YoY29uZmlndXJhdGlvblN0YXRlKSkucGlwZShcbiAgICAgIHRhcChjb25maWd1cmF0aW9uU3RhdGUgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQoY29uZmlndXJhdGlvblN0YXRlKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQoY29uZmlndXJhdGlvblN0YXRlKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcGF0Y2gkKHRyYW5zYWN0aW9uSXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB7IHN0YXRlLCByb290IH0gPSB0aGlzO1xuXG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBDb25maWd1cmF0aW9uIFN0YXRlIGlzIG5vdCBpbml0aWFsaXplZGApKTtcbiAgICB9XG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFJvb3QgU2FsZXNUcmFuc2FjdGlvbkl0ZW0gbm90IGZvdW5kYCkpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1Jvb3QgPSBuZXcgVHJhbnNhY3Rpb25JdGVtV29ya2VyKHJvb3QpLnJlcGxhY2UodHJhbnNhY3Rpb25JdGVtKS50aTtcbiAgICBjb25zdCBuZXdUcmFuc2FjdGlvbkNvbnRleHQ6IFRyYW5zYWN0aW9uQ29udGV4dCA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IFtuZXdSb290XSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZSQobmV3VHJhbnNhY3Rpb25Db250ZXh0KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UudWlEZWZpbml0aW9uUHJvcHMuc3VwcHJlc3NUb2FzdE1lc3NhZ2VzKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogZXJyb3IgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHBhdGNoKHRyYW5zYWN0aW9uSXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnBhdGNoJCh0cmFuc2FjdGlvbkl0ZW0pLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZSQodHJhbnNhY3Rpb25Db250ZXh0OiBUcmFuc2FjdGlvbkNvbnRleHQpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29udGV4dD4ge1xuICAgIHRoaXMuaXNMb2FkaW5nU3ViaiQubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLmp1c3RDb25maWd1cmVSZXF1ZXN0JCh0cmFuc2FjdGlvbkNvbnRleHQpLnBpcGUoXG4gICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNsb25lRGVlcChyZXN1bHQpKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlID0+IHtcbiAgICAgICAgY29uc3QgcmVzZXRTdGF0ZSA9IHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAocmVzZXRTdGF0ZSkge1xuICAgICAgICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNsb25lRGVlcChyZXNldFN0YXRlKSk7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KHJlc2V0U3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICB9KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nU3ViaiQubmV4dChmYWxzZSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMganVzdENvbmZpZ3VyZVJlcXVlc3QkKHRyYW5zYWN0aW9uQ29udGV4dDogVHJhbnNhY3Rpb25Db250ZXh0KTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbkNvbnRleHQ+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBQcm9jZWR1cmVBcHBseVJlcXVlc3QgPSB7XG4gICAgICB0cmFuc2FjdGlvbkNvbnRleHQsXG4gICAgICBmbG93SWQ6IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3cuaWQsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLm9yY2hlc3RyYXRpb25zQXBpU2VydmljZS5hcHBseSQocmVxdWVzdCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT5cbiAgICAgICAgdGhyb3dFcnJvcigoKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmFjdEVycm9yRGV0YWlscyhlcnJvci5lcnJvcikuam9pbignLiAnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFBDTU1vZGVsKCk6IFBDTU1vZGVsIHtcbiAgICBjb25zb2xlLmxvZygnR0VUIFBDTScpO1xuICAgIGNvbnN0IHBjbU1vZGVsID0gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UucGNtTW9kZWw7XG4gICAgaWYgKCFwY21Nb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQQ00gbW9kZWwgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBjbU1vZGVsO1xuICB9XG59XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsU0FBUyxHQUtWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFHaEUsTUFBTSxPQUFPLG9CQUFvQjtJQVEvQixZQUNVLGVBQWdDLEVBQ2hDLGNBQThCLEVBQzlCLDJCQUF3RCxFQUN4RCx1QkFBZ0QsRUFDaEQsd0JBQWtELEVBQ2xELG9CQUEwQztRQUwxQyxvQkFBZSxHQUFm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QVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxrQkFBc0M7UUFDakUsTUFBTSxPQUFPLEdBQTBCO1lBQ3JDLGtCQUFrQjtZQUNsQixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtTQUNyQyxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdkQsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YsT0FBTyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BEO1lBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7aUhBekxVLG9CQUFvQjtxSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2UsIFByb2NlZHVyZUFwcGx5UmVxdWVzdCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaS92Mic7XG5pbXBvcnQge1xuICBleHRyYWN0RXJyb3JEZXRhaWxzLFxuICBpc0RlZmluZWQsXG4gIFBDTU1vZGVsLFxuICBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbiAgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGUsXG4gIFRyYW5zYWN0aW9uQ29udGV4dCxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG5vb3AsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSwgU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbSwgVHJhbnNhY3Rpb25JdGVtV29ya2VyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBHdWlkZWRTZWxsaW5nU2VydmljZSB9IGZyb20gJy4vZ3VpZGVkLXNlbGxpbmcuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uU2VydmljZSB7XG4gIHB1YmxpYyBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBwcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBpc0xvYWRpbmdTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIHNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlOiBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG9yY2hlc3RyYXRpb25zQXBpU2VydmljZTogT3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3VpZGVkU2VsbGluZ1NlcnZpY2U6IEd1aWRlZFNlbGxpbmdTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmlzTG9hZGluZyQgPSB0aGlzLmlzTG9hZGluZ1N1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbkNvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihpc0RlZmluZWQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogVHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJldmlvdXNTdGF0ZSgpOiBUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJvb3QkKCk6IE9ic2VydmFibGU8U2FsZXNUcmFuc2FjdGlvbkl0ZW0+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShcbiAgICAgIG1hcChzdGF0ZSA9PiBzdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtc1swXSksXG4gICAgICBmaWx0ZXIoaXNEZWZpbmVkKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCByb290KCk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQuZ2V0VmFsdWUoKT8uc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZTtcbiAgICBjb25zdCB7IHN0YW5kYWxvbmUgfSA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3cucHJvcGVydGllcztcbiAgICBjb25zdCB7IHByb2R1Y3RJZCwgdHJhbnNhY3Rpb25JdGVtSWQsIG5ld1Byb2R1Y3RRdHkgfSA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmNvbnRleHQ7XG5cbiAgICBpZiAoIXN0YXRlIHx8ICFwcm9kdWN0SWQpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbGVzVHJhbnNhY3Rpb25JdGVtcyA9IHN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtcyA/PyBbXTtcbiAgICBsZXQgaXNSb290R2VuZXJhdGVkID0gZmFsc2U7XG4gICAgbGV0IHRyYW5zYWN0aW9uSXRlbSA9IHNhbGVzVHJhbnNhY3Rpb25JdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdHJhbnNhY3Rpb25JdGVtSWQpO1xuICAgIGlmICghdHJhbnNhY3Rpb25JdGVtICYmIHN0YW5kYWxvbmUpIHtcbiAgICAgIHRyYW5zYWN0aW9uSXRlbSA9IHNhbGVzVHJhbnNhY3Rpb25JdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9kdWN0SWQgPT09IHByb2R1Y3RJZCk7XG4gICAgfVxuXG4gICAgaWYgKCF0cmFuc2FjdGlvbkl0ZW0pIHtcbiAgICAgIGNvbnN0IHF1YW50aXR5ID0gdHlwZW9mIG5ld1Byb2R1Y3RRdHkgPT09ICdudW1iZXInICYmIG5ld1Byb2R1Y3RRdHkgPiAwID8gbmV3UHJvZHVjdFF0eSA6IHVuZGVmaW5lZDtcbiAgICAgIHRyYW5zYWN0aW9uSXRlbSA9IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtKHRoaXMuZ2V0UENNTW9kZWwoKSwgdGhpcy5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbi5pZCwgcXVhbnRpdHkpO1xuICAgICAgaXNSb290R2VuZXJhdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBndWlkZWRTZWxsaW5nUmVzdWx0ID0gdGhpcy5ndWlkZWRTZWxsaW5nU2VydmljZS5ndWlkZWRTZWxsaW5nUmVzdWx0O1xuICAgIGlmICh0cmFuc2FjdGlvbkl0ZW0gJiYgT2JqZWN0LmtleXMoZ3VpZGVkU2VsbGluZ1Jlc3VsdCkubGVuZ3RoICYmIGlzUm9vdEdlbmVyYXRlZCkge1xuICAgICAgdHJhbnNhY3Rpb25JdGVtLnN0aUF0dHJpYnV0ZXMgPSBPYmplY3QuZW50cmllcyhndWlkZWRTZWxsaW5nUmVzdWx0KS5tYXAoKFthdHRyaWJ1dGVOYW1lLCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIGF0dHJpYnV0ZU5hbWUsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSkpIGFzIFNhbGVzVHJhbnNhY3Rpb25JdGVtQXR0cmlidXRlW107XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJhdGlvblN0YXRlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiB0cmFuc2FjdGlvbkl0ZW0gPyBbdHJhbnNhY3Rpb25JdGVtXSA6IFtdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChpc1Jvb3RHZW5lcmF0ZWQgPyB0aGlzLmNvbmZpZ3VyZSQoY29uZmlndXJhdGlvblN0YXRlKSA6IG9mKGNvbmZpZ3VyYXRpb25TdGF0ZSkpLnBpcGUoXG4gICAgICB0YXAoY29uZmlndXJhdGlvblN0YXRlID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHBhdGNoJCh0cmFuc2FjdGlvbkl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzdGF0ZSwgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgQ29uZmlndXJhdGlvbiBTdGF0ZSBpcyBub3QgaW5pdGlhbGl6ZWRgKSk7XG4gICAgfVxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSb290IFNhbGVzVHJhbnNhY3Rpb25JdGVtIG5vdCBmb3VuZGApKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSb290ID0gbmV3IFRyYW5zYWN0aW9uSXRlbVdvcmtlcihyb290KS5yZXBsYWNlKHRyYW5zYWN0aW9uSXRlbSkudGk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb25Db250ZXh0OiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbbmV3Um9vdF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmUkKG5ld1RyYW5zYWN0aW9uQ29udGV4dCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcblxuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvblByb3BzLnN1cHByZXNzVG9hc3RNZXNzYWdlcykge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IGVycm9yIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCh0cmFuc2FjdGlvbkl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtKTogdm9pZCB7XG4gICAgdGhpcy5wYXRjaCQodHJhbnNhY3Rpb25JdGVtKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmUkKHRyYW5zYWN0aW9uQ29udGV4dDogVHJhbnNhY3Rpb25Db250ZXh0KTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbkNvbnRleHQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZ1N1YmokLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5qdXN0Q29uZmlndXJlUmVxdWVzdCQodHJhbnNhY3Rpb25Db250ZXh0KS5waXBlKFxuICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChyZXN1bHQpO1xuICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjbG9uZURlZXAocmVzdWx0KSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc2V0U3RhdGUgPSB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKHJlc2V0U3RhdGUpIHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjbG9uZURlZXAocmVzZXRTdGF0ZSkpO1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChyZXNldFN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZ1N1YmokLm5leHQoZmFsc2UpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGp1c3RDb25maWd1cmVSZXF1ZXN0JCh0cmFuc2FjdGlvbkNvbnRleHQ6IFRyYW5zYWN0aW9uQ29udGV4dCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db250ZXh0PiB7XG4gICAgY29uc3QgcmVxdWVzdDogUHJvY2VkdXJlQXBwbHlSZXF1ZXN0ID0ge1xuICAgICAgdHJhbnNhY3Rpb25Db250ZXh0LFxuICAgICAgZmxvd0lkOiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LmlkLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5vcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2UuYXBwbHkkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+XG4gICAgICAgIHRocm93RXJyb3IoKCkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RFcnJvckRldGFpbHMoZXJyb3IuZXJyb3IpLmpvaW4oJy4gJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgfHwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQQ01Nb2RlbCgpOiBQQ01Nb2RlbCB7XG4gICAgY29uc3QgcGNtTW9kZWwgPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5wY21Nb2RlbDtcbiAgICBpZiAoIXBjbU1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BDTSBtb2RlbCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGNtTW9kZWw7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB7XG4gIG9yY2hlc3RyYXRpb25OYW1lOiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXNNYXA6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxDb25maWd1cmF0aW9uUHJvcHMge1xuICBwcm9kdWN0SWQ6IHN0cmluZztcbiAgcXR5PzogbnVtYmVyO1xuICBhdHRyaWJ1dGVzTWFwPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdDb25maWd1cmF0aW9uUHJvcHMgZXh0ZW5kcyBFeHRlcm5hbENvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIHByb2R1Y3Q6IFByb2R1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1vZGVDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gIGN1c3RvbWl6YXRpb25Nb2RlPzogYm9vbGVhbjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB7XG4gIG9yY2hlc3RyYXRpb25OYW1lOiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXNNYXA6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxDb25maWd1cmF0aW9uUHJvcHMge1xuICBwcm9kdWN0SWQ6IHN0cmluZztcbiAgcXR5PzogbnVtYmVyO1xuICBhdHRyaWJ1dGVzTWFwPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXdDb25maWd1cmF0aW9uUHJvcHMgZXh0ZW5kcyBFeHRlcm5hbENvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIHByb2R1Y3Q6IFByb2R1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1vZGVDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gIGN1c3RvbWl6YXRpb25Nb2RlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWFudGl0eUNoYW5nZVByb3BzIHtcbiAgaWQ6IHN0cmluZztcbiAgcXR5OiBudW1iZXI7XG59XG4iXX0=
@@ -1,12 +1,12 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { map, noop, of, switchMap } from 'rxjs';
2
+ import { PCMApiService } from '@veloceapps/api/v2';
3
+ import { map, noop, of, switchMap, tap } from 'rxjs';
3
4
  import { ConfigurationService } from '../modules/configuration/services/configuration.service';
4
5
  import { FlowConfigurationService } from '../modules/flow-configuration/services/flow-configuration.service';
6
+ import { generateTransactionItem, updateQuantity } from '../utils';
5
7
  import { FlowInfoService } from './flow-info.service';
6
8
  import { FlowStateService } from './flow-state.service';
7
9
  import { SalesTransactionService } from './sales-transaction.service';
8
- import { PCMApiService } from '@veloceapps/api/v2';
9
- import { generateTransactionItem } from '../utils';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "./flow-info.service";
12
12
  import * as i2 from "./flow-state.service";
@@ -22,9 +22,32 @@ export class FlowStateConfigurationService {
22
22
  this.salesTransactionService = salesTransactionService;
23
23
  this.flowConfigurationService = flowConfigurationService;
24
24
  this.pcmApiService = pcmApiService;
25
+ this.pcmCache = {};
26
+ }
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));
25
49
  }
26
50
  addToCart$(props) {
27
- console.log(props);
28
51
  let request$;
29
52
  const stateful = this.flowInfoService.flow?.properties.stateful;
30
53
  if (stateful) {
@@ -43,7 +66,7 @@ export class FlowStateConfigurationService {
43
66
  return request$.pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));
44
67
  }
45
68
  configureExternal$(props) {
46
- return this.pcmApiService.fetchPCMByProductId(props.productId).pipe(switchMap(pcm => {
69
+ return this.getPCMProduct$(props.productId).pipe(switchMap(pcm => {
47
70
  const { state } = this.salesTransactionService;
48
71
  if (!state) {
49
72
  return of();
@@ -54,8 +77,7 @@ export class FlowStateConfigurationService {
54
77
  ...state.salesTransaction,
55
78
  salesTransactionItems: [
56
79
  {
57
- ...generateTransactionItem(pcm, this.configurationService.state?.salesTransaction.id),
58
- qty: props.qty ?? 1,
80
+ ...generateTransactionItem(pcm, this.configurationService.state?.salesTransaction.id, props.qty ?? 1),
59
81
  stiAttributes: Object.entries(props.attributesMap ?? {}).map(([attributeName, value]) => ({
60
82
  attributeName,
61
83
  value,
@@ -80,10 +102,19 @@ export class FlowStateConfigurationService {
80
102
  }));
81
103
  }));
82
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
+ }
83
114
  }
84
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 });
85
116
  FlowStateConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService });
86
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, decorators: [{
87
118
  type: Injectable
88
119
  }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.FlowStateService }, { type: i3.ConfigurationService }, { type: i4.SalesTransactionService }, { type: i5.FlowConfigurationService }, { type: i6.PCMApiService }]; } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUUvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7QUFHbkQsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLGVBQWdDLEVBQ2hDLGdCQUFrQyxFQUNsQyxvQkFBMEMsRUFDMUMsdUJBQWdELEVBQ2hELHdCQUFrRCxFQUNsRCxhQUE0QjtRQUw1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxrQkFBYSxHQUFiLGFBQWEsQ0FB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LENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzswSEE1RVUsNkJBQTZCOzhIQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25JdGVtQXR0cmlidXRlLCBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyB9IGZyb20gJy4uL21vZHVsZXMvY29uZmlndXJhdGlvbi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zYWxlcy10cmFuc2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBDTUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0gfSBmcm9tICcuLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93U3RhdGVDb25maWd1cmF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwY21BcGlTZXJ2aWNlOiBQQ01BcGlTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIGFkZFRvQ2FydCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnNvbGUubG9nKHByb3BzKTtcbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5rbm93bj47XG4gICAgY29uc3Qgc3RhdGVmdWwgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICAgIGlmIChzdGF0ZWZ1bCkge1xuICAgICAgY29uc3Qgc3RhdGVJZCA9IHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkO1xuICAgICAgaWYgKCFzdGF0ZUlkKSB7XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnBjbUFwaVNlcnZpY2UuZmV0Y2hQQ01CeVByb2R1Y3RJZChwcm9wcy5wcm9kdWN0SWQpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGNtID0+IHtcbiAgICAgICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZTtcbiAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGVUb0NvbmZpZ3VyZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLmdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtKHBjbSwgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbi5pZCksXG4gICAgICAgICAgICAgICAgcXR5OiBwcm9wcy5xdHkgPz8gMSxcbiAgICAgICAgICAgICAgICBzdGlBdHRyaWJ1dGVzOiBPYmplY3QuZW50cmllcyhwcm9wcy5hdHRyaWJ1dGVzTWFwID8/IHt9KS5tYXAoKFthdHRyaWJ1dGVOYW1lLCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgfSkpIGFzIFNhbGVzVHJhbnNhY3Rpb25JdGVtQXR0cmlidXRlW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuanVzdENvbmZpZ3VyZVJlcXVlc3QkKHN0YXRlVG9Db25maWd1cmUpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGNvbmZpZ3VyYXRpb25SZXN1bHQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgICAgICAgICAgY29uc3QgYWRkZWRQcm9kdWN0ID0gY29uZmlndXJhdGlvblJlc3VsdC5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtc1swXTtcbiAgICAgICAgICAgIGlmICghc3RhdGUgfHwgIWFkZGVkUHJvZHVjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmNhbGN1bGF0ZSQoe1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXMsIGFkZGVkUHJvZHVjdF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQUd0RSxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQ1UsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG9CQUEwQyxFQUMxQyx1QkFBZ0QsRUFDaEQsd0JBQWtELEVBQ2xELGFBQTRCO1FBTDVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xE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LEVBQUU7d0JBQ2hCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQjt3QkFDekIscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUM7cUJBQ3ZGO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFpQjtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkI7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzswSEF6SFUsNkJBQTZCOzhIQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBDTUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgUENNUHJvZHVjdCwgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGUsIFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBtYXAsIG5vb3AsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcywgUXVhbnRpdHlDaGFuZ2VQcm9wcyB9IGZyb20gJy4uL21vZHVsZXMvY29uZmlndXJhdGlvbi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtLCB1cGRhdGVRdWFudGl0eSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zYWxlcy10cmFuc2FjdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwY21DYWNoZTogRGljdGlvbmFyeTxQQ01Qcm9kdWN0PiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwY21BcGlTZXJ2aWNlOiBQQ01BcGlTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHVwZGF0ZVF1YW50aXR5JChwcm9wczogUXVhbnRpdHlDaGFuZ2VQcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbj8uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuICAgIGNvbnN0IHRpID0gYWxsSXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHByb3BzLmlkKTtcblxuICAgIGlmICghdGkpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHRpLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIG1hcChwY20gPT4gdXBkYXRlUXVhbnRpdHkodGksIHByb3BzLnF0eSwgcGNtKSksXG4gICAgICBzd2l0Y2hNYXAodXBkYXRlZFRpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRUaS5pZCA9PT0gaXRlbS5pZCA/IHVwZGF0ZWRUaSA6IGl0ZW07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0NhcnQkKHByb3BzOiBOZXdDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5rbm93bj47XG4gICAgY29uc3Qgc3RhdGVmdWwgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICAgIGlmIChzdGF0ZWZ1bCkge1xuICAgICAgY29uc3Qgc3RhdGVJZCA9IHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkO1xuICAgICAgaWYgKCFzdGF0ZUlkKSB7XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHByb3BzLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChwY20gPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZVRvQ29uZmlndXJlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4uZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocGNtLCB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLmlkLCBwcm9wcy5xdHkgPz8gMSksXG4gICAgICAgICAgICAgICAgc3RpQXR0cmlidXRlczogT2JqZWN0LmVudHJpZXMocHJvcHMuYXR0cmlidXRlc01hcCA/PyB7fSkubWFwKChbYXR0cmlidXRlTmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZVtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmp1c3RDb25maWd1cmVSZXF1ZXN0JChzdGF0ZVRvQ29uZmlndXJlKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChjb25maWd1cmF0aW9uUmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGFkZGVkUHJvZHVjdCA9IGNvbmZpZ3VyYXRpb25SZXN1bHQuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF07XG4gICAgICAgICAgICBpZiAoIXN0YXRlIHx8ICFhZGRlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogWy4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLCBhZGRlZFByb2R1Y3RdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQQ01Qcm9kdWN0JChwcm9kdWN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UENNUHJvZHVjdD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucGNtQ2FjaGVbcHJvZHVjdElkXTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gb2YoY2FjaGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wY21BcGlTZXJ2aWNlXG4gICAgICAuZmV0Y2hQQ01CeVByb2R1Y3RJZChwcm9kdWN0SWQpXG4gICAgICAucGlwZSh0YXAocGNtUHJvZHVjdCA9PiAodGhpcy5wY21DYWNoZVtwcm9kdWN0SWRdID0gcGNtUHJvZHVjdCkpKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
+ export * from './pcm.utils';
1
2
  export * from './transaction-item.utils';
2
3
  export * from './transaction-item.worker';
3
4
  export * from './ui-definition.utils';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbi1pdGVtLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24taXRlbS53b3JrZXInO1xuZXhwb3J0ICogZnJvbSAnLi91aS1kZWZpbml0aW9uLnV0aWxzJztcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wY20udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2FjdGlvbi1pdGVtLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24taXRlbS53b3JrZXInO1xuZXhwb3J0ICogZnJvbSAnLi91aS1kZWZpbml0aW9uLnV0aWxzJztcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ export class PCMUtils {
2
+ static mapByPrcId(pcm) {
3
+ const map = {};
4
+ if (pcm.productRelatedComponent) {
5
+ map[pcm.productRelatedComponent.id] = pcm;
6
+ }
7
+ for (const group of pcm.productComponentGroups) {
8
+ for (const gc of group.components) {
9
+ Object.assign(map, PCMUtils.mapByPrcId(gc));
10
+ }
11
+ }
12
+ return map;
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGNtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9wY20udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLFFBQVE7SUFDWixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQWU7UUFDdEMsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRTtZQUMvQixHQUFHLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUMzQztRQUNELEtBQUssTUFBTSxLQUFLLElBQUksR0FBRyxDQUFDLHNCQUFzQixFQUFFO1lBQzlDLEtBQUssTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzdDO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBDTVByb2R1Y3QgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY2xhc3MgUENNVXRpbHMge1xuICBwdWJsaWMgc3RhdGljIG1hcEJ5UHJjSWQocGNtOiBQQ01Qcm9kdWN0KTogRGljdGlvbmFyeTxQQ01Qcm9kdWN0PiB7XG4gICAgY29uc3QgbWFwOiBEaWN0aW9uYXJ5PFBDTVByb2R1Y3Q+ID0ge307XG4gICAgaWYgKHBjbS5wcm9kdWN0UmVsYXRlZENvbXBvbmVudCkge1xuICAgICAgbWFwW3BjbS5wcm9kdWN0UmVsYXRlZENvbXBvbmVudC5pZF0gPSBwY207XG4gICAgfVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgcGNtLnByb2R1Y3RDb21wb25lbnRHcm91cHMpIHtcbiAgICAgIGZvciAoY29uc3QgZ2Mgb2YgZ3JvdXAuY29tcG9uZW50cykge1xuICAgICAgICBPYmplY3QuYXNzaWduKG1hcCwgUENNVXRpbHMubWFwQnlQcmNJZChnYykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
- import { isDefined, UUID } from '@veloceapps/core';
1
+ import { isDefined, UUID, } from '@veloceapps/core';
2
2
  import { flatten } from 'lodash';
3
+ import { PCMUtils } from './pcm.utils';
3
4
  export const findTransactionItem = (id, items) => {
4
5
  return findTransactionItemWithComparator(items, (ti) => ti.id === id);
5
6
  };
@@ -51,26 +52,13 @@ export const replaceTransactionItem = (item, replaceTo) => {
51
52
  children: item.children.map(ti => replaceTransactionItem(ti, replaceTo)),
52
53
  };
53
54
  };
54
- export const generateTransactionItem = (pcm, salesTransactionId) => {
55
- const defaultSTI = {
56
- id: UUID.UUID(),
57
- productId: pcm.id,
58
- };
59
- const defaultChildren = pcm.productComponentGroups.reduce((acc, group) => {
60
- group.components.forEach(component => {
61
- const { isComponentRequired, isDefaultComponent } = component.productRelatedComponent ?? {};
62
- if (isComponentRequired || isDefaultComponent) {
63
- acc.push(generateTransactionItemFromPCM(component, defaultSTI, salesTransactionId));
64
- }
65
- });
66
- return acc;
67
- }, []);
68
- if (!defaultChildren.length) {
69
- return defaultSTI;
70
- }
71
- return { ...defaultSTI, children: defaultChildren };
55
+ export const generateTransactionItem = (option, salesTransactionId, qty, parentTi) => {
56
+ const newItem = generateTransactionItemFromPCM(option, salesTransactionId, parentTi);
57
+ // propagate Proportional quantities to children
58
+ const updatedNewItem = updateQuantity(newItem, qty ?? newItem.qty, option, parentTi?.qty);
59
+ return updatedNewItem;
72
60
  };
73
- export const generateTransactionItemFromPCM = (option, parentTi, salesTransactionId) => {
61
+ export const generateTransactionItemFromPCM = (option, salesTransactionId, parentTi) => {
74
62
  const childId = UUID.UUID();
75
63
  const newItem = {
76
64
  id: childId,
@@ -86,18 +74,63 @@ export const generateTransactionItemFromPCM = (option, parentTi, salesTransactio
86
74
  SalesTransactionItemParent: salesTransactionId,
87
75
  ProductSellingModel: option.productSellingModelOptions?.[0]?.productSellingModel.id,
88
76
  },
89
- parentId: parentTi.id,
90
77
  qty: option.productRelatedComponent?.quantity ?? 1,
91
78
  };
79
+ if (parentTi) {
80
+ newItem.parentId = parentTi.id;
81
+ }
92
82
  newItem.children = option.productComponentGroups.reduce((acc, group) => {
93
83
  group.components.forEach(component => {
94
84
  if (component.productRelatedComponent?.isComponentRequired ||
95
85
  component.productRelatedComponent?.isDefaultComponent) {
96
- acc.push(generateTransactionItemFromPCM(component, newItem, salesTransactionId));
86
+ acc.push(generateTransactionItemFromPCM(component, salesTransactionId, newItem));
97
87
  }
98
88
  });
99
89
  return acc;
100
90
  }, []);
101
91
  return newItem;
102
92
  };
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taXRlbS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdXRpbHMvdHJhbnNhY3Rpb24taXRlbS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsRUFBVSxFQUFFLEtBQTZCLEVBQW9DLEVBQUU7SUFDakgsT0FBTyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzlGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQy9DLEtBQTZCLEVBQzdCLFVBQWlELEVBQ2YsRUFBRTtJQUNwQyxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFekIsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFO1FBQzFCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7S0FDckU7SUFFRCxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsSUFBMEIsRUFDMUIsUUFBZ0IsRUFDaEIsUUFBOEIsRUFDUixFQUFFO0lBQ3hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxF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TyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGVmaW5lZCwgUENNTW9kZWwsIFNhbGVzVHJhbnNhY3Rpb25JdGVtLCBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZSwgVVVJRCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgZmxhdHRlbiB9IGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjb25zdCBmaW5kVHJhbnNhY3Rpb25JdGVtID0gKGlkOiBzdHJpbmcsIGl0ZW1zOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gZmluZFRyYW5zYWN0aW9uSXRlbVdpdGhDb21wYXJhdG9yKGl0ZW1zLCAodGk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtKSA9PiB0aS5pZCA9PT0gaWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRUcmFuc2FjdGlvbkl0ZW1XaXRoQ29tcGFyYXRvciA9IChcbiAgaXRlbXM6IFNhbGVzVHJhbnNhY3Rpb25JdGVtW10sXG4gIGNvbXBhcmF0b3I6ICh0aTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pID0+IGJvb2xlYW4sXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIGxldCBjdXJyZW50TGV2ZWwgPSBpdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5jaGlsZHJlbikpO1xuICB9XG5cbiAgcmV0dXJuO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydFRyYW5zYWN0aW9uSXRlbSA9IChcbiAgaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIHBhcmVudElkOiBzdHJpbmcsXG4gIHRvSW5zZXJ0OiBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbik6IFNhbGVzVHJhbnNhY3Rpb25JdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGl0ZW0uaWQgPT09IHBhcmVudElkID8gW3RvSW5zZXJ0XSA6IFtdO1xuXG4gIHJldHVybiB7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogW1xuICAgICAgLi4uaW5zZXJ0RGF0YSxcbiAgICAgIC4uLml0ZW0uY2hpbGRyZW4ubWFwKHRpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydFRyYW5zYWN0aW9uSXRlbSh0aSwgcGFyZW50SWQsIHRvSW5zZXJ0KTtcbiAgICAgIH0pLFxuICAgIF0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlVHJhbnNhY3Rpb25JdGVtID0gKGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtLCBpZFRvUmVtb3ZlOiBzdHJpbmcpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlblxuICAgICAgLm1hcCh0aSA9PiB7XG4gICAgICAgIGlmICh0aS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0aS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gcmVtb3ZlVHJhbnNhY3Rpb25JdGVtKHRpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGlzRGVmaW5lZCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVwbGFjZVRyYW5zYWN0aW9uSXRlbSA9IChcbiAgaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIHJlcGxhY2VUbzogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIGlmIChpdGVtLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXBsYWNlVG8gfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlbi5tYXAodGkgPT4gcmVwbGFjZVRyYW5zYWN0aW9uSXRlbSh0aSwgcmVwbGFjZVRvKSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0gPSAoXG4gIHBjbTogUENNTW9kZWwsXG4gIHNhbGVzVHJhbnNhY3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gPT4ge1xuICBjb25zdCBkZWZhdWx0U1RJID0ge1xuICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICBwcm9kdWN0SWQ6IHBjbS5pZCxcbiAgfSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbTtcblxuICBjb25zdCBkZWZhdWx0Q2hpbGRyZW4gPSBwY20ucHJvZHVjdENvbXBvbmVudEdyb3Vwcy5yZWR1Y2UoKGFjYzogU2FsZXNUcmFuc2FjdGlvbkl0ZW1bXSwgZ3JvdXApID0+IHtcbiAgICBncm91cC5jb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgIGNvbnN0IHsgaXNDb21wb25lbnRSZXF1aXJlZCwgaXNEZWZhdWx0Q29tcG9uZW50IH0gPSBjb21wb25lbnQucHJvZHVjdFJlbGF0ZWRDb21wb25lbnQgPz8ge307XG5cbiAgICAgIGlmIChpc0NvbXBvbmVudFJlcXVpcmVkIHx8IGlzRGVmYXVsdENvbXBvbmVudCkge1xuICAgICAgICBhY2MucHVzaChnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbUZyb21QQ00oY29tcG9uZW50LCBkZWZhdWx0U1RJLCBzYWxlc1RyYW5zYWN0aW9uSWQpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuICBpZiAoIWRlZmF1bHRDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZGVmYXVsdFNUSTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLmRlZmF1bHRTVEksIGNoaWxkcmVuOiBkZWZhdWx0Q2hpbGRyZW4gfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbUZyb21QQ00gPSAoXG4gIG9wdGlvbjogUENNTW9kZWwsXG4gIHBhcmVudFRpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbiAgc2FsZXNUcmFuc2FjdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIGNvbnN0IGNoaWxkSWQgPSBVVUlELlVVSUQoKTtcblxuICBjb25zdCBuZXdJdGVtID0ge1xuICAgIGlkOiBjaGlsZElkLFxuICAgIHByb2R1Y3RJZDogb3B0aW9uLmlkLFxuICAgIHByb2R1Y3ROYW1lOiBvcHRpb24ubmFtZSxcbiAgICBwcm9kdWN0Q29kZTogb3B0aW9uLnByb2R1Y3RDb2RlLFxuICAgIHByb2R1Y3RSZWxhdGVkQ29tcG9uZW50SWQ6IG9wdGlvbi5wcm9kdWN0UmVsYXRlZENvbXBvbmVudD8uaWQsXG4gICAgc3RpQXR0cmlidXRlczogW10gYXMgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGVbXSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICBQYXJlbnRSZWZlcmVuY2U6IHNhbGVzVHJhbnNhY3Rpb25JZCxcbiAgICAgIEl0ZW1QYXRoOiBvcHRpb24uaWQsXG4gICAgICBTYWxlc1RyYW5zYWN0aW9uSXRlbVNvdXJjZTogY2hpbGRJZCxcbiAgICAgIFNhbGVzVHJhbnNhY3Rpb25JdGVtUGFyZW50OiBzYWxlc1RyYW5zYWN0aW9uSWQsXG4gICAgICBQcm9kdWN0U2VsbGluZ01vZGVsOiBvcHRpb24ucHJvZHVjdFNlbGxpbmdNb2RlbE9wdGlvbnM/LlswXT8ucHJvZHVjdFNlbGxpbmdNb2RlbC5pZCxcbiAgICB9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHBhcmVudElkOiBwYXJlbnRUaS5pZCxcbiAgICBxdHk6IG9wdGlvbi5wcm9kdWN0UmVsYXRlZENvbXBvbmVudD8ucXVhbnRpdHkgPz8gMSxcbiAgfSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbTtcblxuICBuZXdJdGVtLmNoaWxkcmVuID0gb3B0aW9uLnByb2R1Y3RDb21wb25lbnRHcm91cHMucmVkdWNlKChhY2M6IFNhbGVzVHJhbnNhY3Rpb25JdGVtW10sIGdyb3VwKSA9PiB7XG4gICAgZ3JvdXAuY29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGNvbXBvbmVudC5wcm9kdWN0UmVsYXRlZENvbXBvbmVudD8uaXNDb21wb25lbnRSZXF1aXJlZCB8fFxuICAgICAgICBjb21wb25lbnQucHJvZHVjdFJlbGF0ZWRDb21wb25lbnQ/LmlzRGVmYXVsdENvbXBvbmVudFxuICAgICAgKSB7XG4gICAgICAgIGFjYy5wdXNoKGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtRnJvbVBDTShjb21wb25lbnQsIG5ld0l0ZW0sIHNhbGVzVHJhbnNhY3Rpb25JZCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG4gIHJldHVybiBuZXdJdGVtO1xufTtcbiJdfQ==
93
+ export const flattenTransactionItem = (ti) => {
94
+ const result = [];
95
+ const traverse = (item) => {
96
+ if (!item)
97
+ return;
98
+ result.push(item);
99
+ if (Array.isArray(item.children) && item.children.length) {
100
+ for (const child of item.children) {
101
+ traverse(child);
102
+ }
103
+ }
104
+ };
105
+ traverse(ti);
106
+ return result;
107
+ };
108
+ export const updateQuantity = (ti, qty, pcm, parentQty = 1) => {
109
+ const pcmMap = PCMUtils.mapByPrcId(pcm);
110
+ const calcNewQty = (item, parentPrevQty, parentNewQty, parentPcm, inputQty, isDirectChange) => {
111
+ const scaleMethod = parentPcm?.productRelatedComponent?.quantityScaleMethod;
112
+ if (isDirectChange) {
113
+ return scaleMethod === 'Proportional' ? parentPrevQty * inputQty : inputQty;
114
+ }
115
+ else {
116
+ return scaleMethod === 'Proportional' ? (item.qty / parentPrevQty) * parentNewQty : item.qty;
117
+ }
118
+ };
119
+ const updateItem = (item, parentPrevQty, parentNewQty, isDirectChange) => {
120
+ const pcm = pcmMap[item.productRelatedComponentId];
121
+ let nextQty = item.qty;
122
+ if (item.id === ti.id || isDirectChange) {
123
+ nextQty = calcNewQty(item, parentPrevQty, parentNewQty, pcm, qty, true);
124
+ }
125
+ else if (parentPrevQty !== parentNewQty) {
126
+ nextQty = calcNewQty(item, parentPrevQty, parentNewQty, pcm, qty, false);
127
+ }
128
+ return {
129
+ ...item,
130
+ qty: nextQty,
131
+ children: item.children.map(child => updateItem(child, item.qty, nextQty, false)),
132
+ };
133
+ };
134
+ return updateItem(ti, parentQty, parentQty, false);
135
+ };
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taXRlbS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvdXRpbHMvdHJhbnNhY3Rpb24taXRlbS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUtULElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUE2QixFQUFvQyxFQUFFO0lBQ2pILE9BQU8saUNBQWlDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM5RixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxDQUMvQyxLQUE2QixFQUM3QixVQUFpRCxFQUNmLEVBQUU7SUFDcEMsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRXpCLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRTtRQUMxQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVDLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQ3JFO0lBRUQsT0FBTztBQUNULENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLElBQTBCLEVBQzFCLFFBQWdCLEVBQ2hCLFFBQThCLEVB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R0FBRyxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLGNBQWMsRUFBRTtZQUN2QyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekU7YUFBTSxJQUFJLGFBQWEsS0FBSyxZQUFZLEVBQUU7WUFDekMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFFO1FBRUQsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLEdBQUcsRUFBRSxPQUFPO1lBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsRixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNEZWZpbmVkLFxuICBQQ01Nb2RlbCxcbiAgUENNUHJvZHVjdCxcbiAgU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIFNhbGVzVHJhbnNhY3Rpb25JdGVtQXR0cmlidXRlLFxuICBVVUlELFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUENNVXRpbHMgfSBmcm9tICcuL3BjbS51dGlscyc7XG5cbmV4cG9ydCBjb25zdCBmaW5kVHJhbnNhY3Rpb25JdGVtID0gKGlkOiBzdHJpbmcsIGl0ZW1zOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gZmluZFRyYW5zYWN0aW9uSXRlbVdpdGhDb21wYXJhdG9yKGl0ZW1zLCAodGk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtKSA9PiB0aS5pZCA9PT0gaWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRUcmFuc2FjdGlvbkl0ZW1XaXRoQ29tcGFyYXRvciA9IChcbiAgaXRlbXM6IFNhbGVzVHJhbnNhY3Rpb25JdGVtW10sXG4gIGNvbXBhcmF0b3I6ICh0aTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pID0+IGJvb2xlYW4sXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIGxldCBjdXJyZW50TGV2ZWwgPSBpdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5jaGlsZHJlbikpO1xuICB9XG5cbiAgcmV0dXJuO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydFRyYW5zYWN0aW9uSXRlbSA9IChcbiAgaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIHBhcmVudElkOiBzdHJpbmcsXG4gIHRvSW5zZXJ0OiBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbik6IFNhbGVzVHJhbnNhY3Rpb25JdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGl0ZW0uaWQgPT09IHBhcmVudElkID8gW3RvSW5zZXJ0XSA6IFtdO1xuXG4gIHJldHVybiB7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogW1xuICAgICAgLi4uaW5zZXJ0RGF0YSxcbiAgICAgIC4uLml0ZW0uY2hpbGRyZW4ubWFwKHRpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydFRyYW5zYWN0aW9uSXRlbSh0aSwgcGFyZW50SWQsIHRvSW5zZXJ0KTtcbiAgICAgIH0pLFxuICAgIF0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlVHJhbnNhY3Rpb25JdGVtID0gKGl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtLCBpZFRvUmVtb3ZlOiBzdHJpbmcpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlblxuICAgICAgLm1hcCh0aSA9PiB7XG4gICAgICAgIGlmICh0aS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0aS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gcmVtb3ZlVHJhbnNhY3Rpb25JdGVtKHRpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGlzRGVmaW5lZCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVwbGFjZVRyYW5zYWN0aW9uSXRlbSA9IChcbiAgaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIHJlcGxhY2VUbzogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4pOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gIGlmIChpdGVtLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXBsYWNlVG8gfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uaXRlbSxcbiAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlbi5tYXAodGkgPT4gcmVwbGFjZVRyYW5zYWN0aW9uSXRlbSh0aSwgcmVwbGFjZVRvKSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0gPSAoXG4gIG9wdGlvbjogUENNTW9kZWwsXG4gIHNhbGVzVHJhbnNhY3Rpb25JZD86IHN0cmluZyxcbiAgcXR5PzogbnVtYmVyLFxuICBwYXJlbnRUaT86IFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuKTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0gPT4ge1xuICBjb25zdCBuZXdJdGVtID0gZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW1Gcm9tUENNKG9wdGlvbiwgc2FsZXNUcmFuc2FjdGlvbklkLCBwYXJlbnRUaSk7XG5cbiAgLy8gcHJvcGFnYXRlIFByb3BvcnRpb25hbCBxdWFudGl0aWVzIHRvIGNoaWxkcmVuXG4gIGNvbnN0IHVwZGF0ZWROZXdJdGVtID0gdXBkYXRlUXVhbnRpdHkobmV3SXRlbSwgcXR5ID8/IG5ld0l0ZW0ucXR5LCBvcHRpb24sIHBhcmVudFRpPy5xdHkpO1xuXG4gIHJldHVybiB1cGRhdGVkTmV3SXRlbTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbUZyb21QQ00gPSAoXG4gIG9wdGlvbjogUENNTW9kZWwsXG4gIHNhbGVzVHJhbnNhY3Rpb25JZD86IHN0cmluZyxcbiAgcGFyZW50VGk/OiBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbik6IFNhbGVzVHJhbnNhY3Rpb25JdGVtID0+IHtcbiAgY29uc3QgY2hpbGRJZCA9IFVVSUQuVVVJRCgpO1xuXG4gIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgaWQ6IGNoaWxkSWQsXG4gICAgcHJvZHVjdElkOiBvcHRpb24uaWQsXG4gICAgcHJvZHVjdE5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHByb2R1Y3RDb2RlOiBvcHRpb24ucHJvZHVjdENvZGUsXG4gICAgcHJvZHVjdFJlbGF0ZWRDb21wb25lbnRJZDogb3B0aW9uLnByb2R1Y3RSZWxhdGVkQ29tcG9uZW50Py5pZCxcbiAgICBzdGlBdHRyaWJ1dGVzOiBbXSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZVtdLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIFBhcmVudFJlZmVyZW5jZTogc2FsZXNUcmFuc2FjdGlvbklkLFxuICAgICAgSXRlbVBhdGg6IG9wdGlvbi5pZCxcbiAgICAgIFNhbGVzVHJhbnNhY3Rpb25JdGVtU291cmNlOiBjaGlsZElkLFxuICAgICAgU2FsZXNUcmFuc2FjdGlvbkl0ZW1QYXJlbnQ6IHNhbGVzVHJhbnNhY3Rpb25JZCxcbiAgICAgIFByb2R1Y3RTZWxsaW5nTW9kZWw6IG9wdGlvbi5wcm9kdWN0U2VsbGluZ01vZGVsT3B0aW9ucz8uWzBdPy5wcm9kdWN0U2VsbGluZ01vZGVsLmlkLFxuICAgIH0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgcXR5OiBvcHRpb24ucHJvZHVjdFJlbGF0ZWRDb21wb25lbnQ/LnF1YW50aXR5ID8/IDEsXG4gIH0gYXMgU2FsZXNUcmFuc2FjdGlvbkl0ZW07XG5cbiAgaWYgKHBhcmVudFRpKSB7XG4gICAgbmV3SXRlbS5wYXJlbnRJZCA9IHBhcmVudFRpLmlkO1xuICB9XG5cbiAgbmV3SXRlbS5jaGlsZHJlbiA9IG9wdGlvbi5wcm9kdWN0Q29tcG9uZW50R3JvdXBzLnJlZHVjZSgoYWNjOiBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdLCBncm91cCkgPT4ge1xuICAgIGdyb3VwLmNvbXBvbmVudHMuZm9yRWFjaChjb21wb25lbnQgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjb21wb25lbnQucHJvZHVjdFJlbGF0ZWRDb21wb25lbnQ/LmlzQ29tcG9uZW50UmVxdWlyZWQgfHxcbiAgICAgICAgY29tcG9uZW50LnByb2R1Y3RSZWxhdGVkQ29tcG9uZW50Py5pc0RlZmF1bHRDb21wb25lbnRcbiAgICAgICkge1xuICAgICAgICBhY2MucHVzaChnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbUZyb21QQ00oY29tcG9uZW50LCBzYWxlc1RyYW5zYWN0aW9uSWQsIG5ld0l0ZW0pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gbmV3SXRlbTtcbn07XG5cbmV4cG9ydCBjb25zdCBmbGF0dGVuVHJhbnNhY3Rpb25JdGVtID0gKHRpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSk6IFNhbGVzVHJhbnNhY3Rpb25JdGVtW10gPT4ge1xuICBjb25zdCByZXN1bHQ6IFNhbGVzVHJhbnNhY3Rpb25JdGVtW10gPSBbXTtcbiAgY29uc3QgdHJhdmVyc2UgPSAoaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0pID0+IHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHRyYXZlcnNlKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdHJhdmVyc2UodGkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUXVhbnRpdHkgPSAoXG4gIHRpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbiAgcXR5OiBudW1iZXIsXG4gIHBjbTogUENNUHJvZHVjdCxcbiAgcGFyZW50UXR5ID0gMSxcbik6IFNhbGVzVHJhbnNhY3Rpb25JdGVtID0+IHtcbiAgY29uc3QgcGNtTWFwID0gUENNVXRpbHMubWFwQnlQcmNJZChwY20pO1xuXG4gIGNvbnN0IGNhbGNOZXdRdHkgPSAoXG4gICAgaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gICAgcGFyZW50UHJldlF0eTogbnVtYmVyLFxuICAgIHBhcmVudE5ld1F0eTogbnVtYmVyLFxuICAgIHBhcmVudFBjbTogUENNUHJvZHVjdCB8IHVuZGVmaW5lZCxcbiAgICBpbnB1dFF0eTogbnVtYmVyLFxuICAgIGlzRGlyZWN0Q2hhbmdlOiBib29sZWFuLFxuICApOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHNjYWxlTWV0aG9kID0gcGFyZW50UGNtPy5wcm9kdWN0UmVsYXRlZENvbXBvbmVudD8ucXVhbnRpdHlTY2FsZU1ldGhvZDtcbiAgICBpZiAoaXNEaXJlY3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiBzY2FsZU1ldGhvZCA9PT0gJ1Byb3BvcnRpb25hbCcgPyBwYXJlbnRQcmV2UXR5ICogaW5wdXRRdHkgOiBpbnB1dFF0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNjYWxlTWV0aG9kID09PSAnUHJvcG9ydGlvbmFsJyA/IChpdGVtLnF0eSAvIHBhcmVudFByZXZRdHkpICogcGFyZW50TmV3UXR5IDogaXRlbS5xdHk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW0gPSAoXG4gICAgaXRlbTogU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gICAgcGFyZW50UHJldlF0eTogbnVtYmVyLFxuICAgIHBhcmVudE5ld1F0eTogbnVtYmVyLFxuICAgIGlzRGlyZWN0Q2hhbmdlOiBib29sZWFuLFxuICApOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSA9PiB7XG4gICAgY29uc3QgcGNtID0gcGNtTWFwW2l0ZW0ucHJvZHVjdFJlbGF0ZWRDb21wb25lbnRJZF07XG4gICAgbGV0IG5leHRRdHkgPSBpdGVtLnF0eTtcblxuICAgIGlmIChpdGVtLmlkID09PSB0aS5pZCB8fCBpc0RpcmVjdENoYW5nZSkge1xuICAgICAgbmV4dFF0eSA9IGNhbGNOZXdRdHkoaXRlbSwgcGFyZW50UHJldlF0eSwgcGFyZW50TmV3UXR5LCBwY20sIHF0eSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChwYXJlbnRQcmV2UXR5ICE9PSBwYXJlbnROZXdRdHkpIHtcbiAgICAgIG5leHRRdHkgPSBjYWxjTmV3UXR5KGl0ZW0sIHBhcmVudFByZXZRdHksIHBhcmVudE5ld1F0eSwgcGNtLCBxdHksIGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaXRlbSxcbiAgICAgIHF0eTogbmV4dFF0eSxcbiAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuLm1hcChjaGlsZCA9PiB1cGRhdGVJdGVtKGNoaWxkLCBpdGVtLnF0eSwgbmV4dFF0eSwgZmFsc2UpKSxcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiB1cGRhdGVJdGVtKHRpLCBwYXJlbnRRdHksIHBhcmVudFF0eSwgZmFsc2UpO1xufTtcbiJdfQ==