taxtank-core 0.31.8 → 0.31.9

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.
@@ -1,33 +1,20 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ACCOUNT_SETUP_ITEMS } from '../../models/account-setup/account-setup-items.const';
3
3
  import { AccountSetupItemsEnum } from '../../models/account-setup/account-setup-items.enum';
4
- import { ClientIncomeTypes } from '../../models/client/client-income-types';
5
- import { IncomeSourceCollection } from '../../collections/income-source/income-source.collection';
6
- import { combineLatest, of, ReplaySubject } from 'rxjs';
4
+ import { AccountSetupItemCollection, IncomeSourceCollection, TransactionCollection } from '../../collections';
5
+ import { ReplaySubject, combineLatest, of } from 'rxjs';
7
6
  import { map, mergeMap } from 'rxjs/operators';
8
- import { AccountSetupItemCollection } from '../../collections/account-setup-item.collection';
9
- import fromPairs from 'lodash/fromPairs';
10
7
  import cloneDeep from 'lodash/cloneDeep';
11
8
  import intersection from 'lodash/intersection';
12
- import { plainToClass } from 'class-transformer';
13
- import { TransactionCollection } from '../../collections/transaction/transaction.collection';
14
9
  import { UserRolesEnum } from '../../db/Enums/user-roles.enum';
15
10
  import * as i0 from "@angular/core";
16
- import * as i1 from "../http/firm/client-income/client-income-types.service";
17
- import * as i2 from "../http/property/property.service";
18
- import * as i3 from "../http/income-source/income-source.service";
19
- import * as i4 from "../http/bank/bank-account/bank-account.service";
20
- import * as i5 from "../http/transaction/transaction-allocation/transaction-allocation.service";
21
- import * as i6 from "../http/vehicle/vehicle-claim.service";
22
- import * as i7 from "../http/transaction/transaction.service";
23
- import * as i8 from "../http";
11
+ import * as i1 from "../http";
24
12
  /**
25
13
  * Service handling user's account setup process.
26
14
  * Checks required steps and their completion
27
15
  */
28
16
  export class AccountSetupService {
29
- constructor(clientIncomeTypesService, propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService) {
30
- this.clientIncomeTypesService = clientIncomeTypesService;
17
+ constructor(propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService) {
31
18
  this.propertyService = propertyService;
32
19
  this.incomeSourceService = incomeSourceService;
33
20
  this.bankAccountsService = bankAccountsService;
@@ -45,12 +32,10 @@ export class AccountSetupService {
45
32
  get() {
46
33
  if (!this.cache) {
47
34
  this.cache = new AccountSetupItemCollection([]);
48
- this.clientIncomeTypesService.getFirst()
49
- .pipe(mergeMap((incomeTypes) => {
50
- this.clientIncomeTypesId = incomeTypes.id;
51
- return this.createBatch(incomeTypes);
52
- }))
53
- .subscribe((items) => {
35
+ this.userService.getFirst().pipe(mergeMap((user) => {
36
+ this.user = user;
37
+ return this.createBatch();
38
+ })).subscribe((items) => {
54
39
  switch (true) {
55
40
  case !this.cache:
56
41
  case this.cache.filterBy('isCompleted', true).length !== items.filterBy('isCompleted', true).length:
@@ -62,12 +47,6 @@ export class AccountSetupService {
62
47
  }
63
48
  return this.cacheSubject.asObservable();
64
49
  }
65
- /**
66
- * Prepare client income types to update to hide depended account setup items
67
- */
68
- prepareIncomeTypes(item) {
69
- return plainToClass(ClientIncomeTypes, Object.assign({ id: this.clientIncomeTypesId }, fromPairs(item.clientIncomeTypes.map((type) => [type, false]))));
70
- }
71
50
  /**
72
51
  * Get a single AccountSetupItem and check it's completion
73
52
  */
@@ -87,28 +66,27 @@ export class AccountSetupService {
87
66
  * Get batch of requests to get list of required AccountSetupItem's.
88
67
  * Some items are optional and depends of user's client income types
89
68
  */
90
- createBatch(incomeTypes) {
69
+ createBatch() {
91
70
  const batch = [];
92
- const user = this.userService.getCacheFirst();
93
71
  // Salary item is completed when user added salary income source
94
- if (incomeTypes.work && user.hasRoles(UserRolesEnum.WORK_TANK)) {
72
+ if (this.user.hasRoles(UserRolesEnum.WORK_TANK)) {
95
73
  batch.push(this.create(AccountSetupItemsEnum.SALARY, this.getIncomeSources(true)),
96
74
  // Other income is a part of work tank, completed when user added at least one other income source
97
75
  this.create(AccountSetupItemsEnum.OTHER_INCOME, this.getIncomeSources()));
98
76
  }
99
77
  // Rental income item is completed when user added at least one property
100
- if (incomeTypes.property && user.hasRoles(UserRolesEnum.PROPERTY_TANK)) {
78
+ if (this.user.hasRoles(UserRolesEnum.PROPERTY_TANK)) {
101
79
  batch.push(this.create(AccountSetupItemsEnum.PROPERTY, this.propertyService.getArray()));
102
80
  }
103
81
  // Sole business item is completed when user added at least one business
104
- if (incomeTypes.sole && user.hasRoles(UserRolesEnum.SOLE_TANK)) {
82
+ if (this.user.hasRoles(UserRolesEnum.SOLE_TANK)) {
105
83
  batch.push(this.create(AccountSetupItemsEnum.SOLE_BUSINESS, this.soleBusinessService.get()));
106
84
  }
107
85
  // holdings item is completed when user added at least one holding
108
- if (incomeTypes.holdings && user.hasRoles(UserRolesEnum.HOLDING_TANK)) {
86
+ if (this.user.hasRoles(UserRolesEnum.HOLDING_TANK)) {
109
87
  batch.push(this.create(AccountSetupItemsEnum.HOLDINGS, this.holdingService.getArray()));
110
88
  }
111
- if (incomeTypes.sole || incomeTypes.property || incomeTypes.work || incomeTypes.holdings) {
89
+ if (this.user.hasRoles([UserRolesEnum.WORK_TANK, UserRolesEnum.PROPERTY_TANK, UserRolesEnum.SOLE_TANK, UserRolesEnum.HOLDING_TANK])) {
112
90
  // Bank feeds item is completed when user added at least one bank account (basiq or manual)
113
91
  batch.push(this.getBankFeedsItem());
114
92
  // Logbook item is completed when user has at least one vehicle claim with any method (kms or logbook)
@@ -157,12 +135,12 @@ export class AccountSetupService {
157
135
  return this.create(AccountSetupItemsEnum.BANK_FEEDS, this.bankAccountsService.getArray());
158
136
  }
159
137
  }
160
- AccountSetupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, deps: [{ token: i1.ClientIncomeTypesService }, { token: i2.PropertyService }, { token: i3.IncomeSourceService }, { token: i4.BankAccountService }, { token: i5.TransactionAllocationService }, { token: i6.VehicleClaimService }, { token: i7.TransactionService }, { token: i8.SoleBusinessService }, { token: i8.HoldingService }, { token: i8.UserService }], target: i0.ɵɵFactoryTarget.Injectable });
138
+ AccountSetupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, deps: [{ token: i1.PropertyService }, { token: i1.IncomeSourceService }, { token: i1.BankAccountService }, { token: i1.TransactionAllocationService }, { token: i1.VehicleClaimService }, { token: i1.TransactionService }, { token: i1.SoleBusinessService }, { token: i1.HoldingService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Injectable });
161
139
  AccountSetupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, providedIn: 'root' });
162
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, decorators: [{
163
141
  type: Injectable,
164
142
  args: [{
165
143
  providedIn: 'root'
166
144
  }]
167
- }], ctorParameters: function () { return [{ type: i1.ClientIncomeTypesService }, { type: i2.PropertyService }, { type: i3.IncomeSourceService }, { type: i4.BankAccountService }, { type: i5.TransactionAllocationService }, { type: i6.VehicleClaimService }, { type: i7.TransactionService }, { type: i8.SoleBusinessService }, { type: i8.HoldingService }, { type: i8.UserService }]; } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZXR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFFekYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFFMUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFHMUUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFJaEcsT0FBTyxFQUFDLGFBQWEsRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFFM0YsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxZQUFZLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBRTNGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7OztBQUU3RDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQ1Usd0JBQWtELEVBQ2xELGVBQWdDLEVBQ2hDLG1CQUF3QyxFQUN4QyxtQkFBdUMs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QixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDOztnSEFoTFUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QUNDT1VOVF9TRVRVUF9JVEVNU30gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC1pdGVtcy5jb25zdCc7XG5pbXBvcnQge0FjY291bnRTZXR1cEl0ZW19IGZyb20gJy4uLy4uL21vZGVscy9hY2NvdW50LXNldHVwL2FjY291bnQtc2V0dXAtaXRlbSc7XG5pbXBvcnQge0FjY291bnRTZXR1cEl0ZW1zRW51bX0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC1pdGVtcy5lbnVtJztcbmltcG9ydCB7QmFua0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi9odHRwL2JhbmsvYmFuay1hY2NvdW50L2JhbmstYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7Q2xpZW50SW5jb21lVHlwZXN9IGZyb20gJy4uLy4uL21vZGVscy9jbGllbnQvY2xpZW50LWluY29tZS10eXBlcyc7XG5pbXBvcnQge0NsaWVudEluY29tZVR5cGVzU2VydmljZX0gZnJvbSAnLi4vaHR0cC9maXJtL2NsaWVudC1pbmNvbWUvY2xpZW50LWluY29tZS10eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7SW5jb21lU291cmNlfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5jb21lLXNvdXJjZS9pbmNvbWUtc291cmNlJztcbmltcG9ydCB7SW5jb21lU291cmNlQ29sbGVjdGlvbn0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvaW5jb21lLXNvdXJjZS9pbmNvbWUtc291cmNlLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHtJbmNvbWVTb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9odHRwL2luY29tZS1zb3VyY2UvaW5jb21lLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7UHJvcGVydHlTZXJ2aWNlfSBmcm9tICcuLi9odHRwL3Byb3BlcnR5L3Byb3BlcnR5LnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlfSBmcm9tICcuLi9odHRwL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLWFsbG9jYXRpb24vdHJhbnNhY3Rpb24tYWxsb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9ufSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucy9hY2NvdW50LXNldHVwLWl0ZW0uY29sbGVjdGlvbic7XG5pbXBvcnQge1ZlaGljbGVDbGFpbVNlcnZpY2V9IGZyb20gJy4uL2h0dHAvdmVoaWNsZS92ZWhpY2xlLWNsYWltLnNlcnZpY2UnO1xuaW1wb3J0IGZyb21QYWlycyBmcm9tICdsb2Rhc2gvZnJvbVBhaXJzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgaW50ZXJzZWN0aW9uIGZyb20gJ2xvZGFzaC9pbnRlcnNlY3Rpb24nO1xuaW1wb3J0IHtwbGFpblRvQ2xhc3N9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi9odHRwL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7VHJhbnNhY3Rpb25Db2xsZWN0aW9ufSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi5jb2xsZWN0aW9uJztcbmltcG9ydCB7SG9sZGluZ1NlcnZpY2UsIFNvbGVCdXNpbmVzc1NlcnZpY2UsIFVzZXJTZXJ2aWNlfSBmcm9tICcuLi9odHRwJztcbmltcG9ydCB7VXNlclJvbGVzRW51bX0gZnJvbSAnLi4vLi4vZGIvRW51bXMvdXNlci1yb2xlcy5lbnVtJztcblxuLyoqXG4gKiBTZXJ2aWNlIGhhbmRsaW5nIHVzZXIncyBhY2NvdW50IHNldHVwIHByb2Nlc3MuXG4gKiBDaGVja3MgcmVxdWlyZWQgc3RlcHMgYW5kIHRoZWlyIGNvbXBsZXRpb25cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFNldHVwU2VydmljZSB7XG4gIGNhY2hlOiBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbjtcbiAgY2FjaGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPiA9IG5ldyBSZXBsYXlTdWJqZWN0PEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPigxKTtcbiAgY2xpZW50SW5jb21lVHlwZXNJZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2xpZW50SW5jb21lVHlwZXNTZXJ2aWNlOiBDbGllbnRJbmNvbWVUeXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9wZXJ0eVNlcnZpY2U6IFByb3BlcnR5U2VydmljZSxcbiAgICBwcml2YXRlIGluY29tZVNvdXJjZVNlcnZpY2U6IEluY29tZVNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYW5rQWNjb3VudHNTZXJ2aWNlOiBCYW5rQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdmVoaWNsZUNsYWltU2VydmljZTogVmVoaWNsZUNsYWltU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc29sZUJ1c2luZXNzU2VydmljZTogU29sZUJ1c2luZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGhvbGRpbmdTZXJ2aWNlOiBIb2xkaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgYWNjb3VudCBzZXR1cCBpdGVtcyBmb3IgY3VycmVudCB1c2VyXG4gICAqL1xuICBnZXQoKTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbj4ge1xuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5jYWNoZSA9IG5ldyBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbihbXSk7XG5cbiAgICAgIHRoaXMuY2xpZW50SW5jb21lVHlwZXNTZXJ2aWNlLmdldEZpcnN0KClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGluY29tZVR5cGVzOiBDbGllbnRJbmNvbWVUeXBlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGllbnRJbmNvbWVUeXBlc0lkID0gaW5jb21lVHlwZXMuaWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJhdGNoKGluY29tZVR5cGVzKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgY2FzZSAhdGhpcy5jYWNoZTpcbiAgICAgICAgICAgIGNhc2UgdGhpcy5jYWNoZS5maWx0ZXJCeSgnaXNDb21wbGV0ZWQnLCB0cnVlKS5sZW5ndGggIT09IGl0ZW1zLmZpbHRlckJ5KCdpc0NvbXBsZXRlZCcsIHRydWUpLmxlbmd0aDpcbiAgICAgICAgICAgIGNhc2UgdGhpcy5jYWNoZS5sZW5ndGggIT09IGl0ZW1zLmxlbmd0aDpcbiAgICAgICAgICAgICAgdGhpcy5jYWNoZSA9IGNsb25lRGVlcChpdGVtcyk7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBjbGllbnQgaW5jb21lIHR5cGVzIHRvIHVwZGF0ZSB0byBoaWRlIGRlcGVuZGVkIGFjY291bnQgc2V0dXAgaXRlbXNcbiAgICovXG4gIHByZXBhcmVJbmNvbWVUeXBlcyhpdGVtOiBBY2NvdW50U2V0dXBJdGVtKTogQ2xpZW50SW5jb21lVHlwZXMge1xuICAgIHJldHVybiBwbGFpblRvQ2xhc3MoXG4gICAgICBDbGllbnRJbmNvbWVUeXBlcyxcbiAgICAgIE9iamVjdC5hc3NpZ24oe2lkOiB0aGlzLmNsaWVudEluY29tZVR5cGVzSWR9LCBmcm9tUGFpcnMoaXRlbS5jbGllbnRJbmNvbWVUeXBlcy5tYXAoKHR5cGU6IHN0cmluZykgPT4gW3R5cGUsIGZhbHNlXSkpKVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGUgQWNjb3VudFNldHVwSXRlbSBhbmQgY2hlY2sgaXQncyBjb21wbGV0aW9uXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZShpdGVtVHlwZTogQWNjb3VudFNldHVwSXRlbXNFbnVtLCByZXF1ZXN0OiBPYnNlcnZhYmxlPG9iamVjdFtdPik6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT4ge1xuICAgIHJldHVybiByZXF1ZXN0LnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDogb2JqZWN0W10pOiBBY2NvdW50U2V0dXBJdGVtID0+IHtcbiAgICAgICAgY29uc3QgaXRlbTogQWNjb3VudFNldHVwSXRlbSA9IEFDQ09VTlRfU0VUVVBfSVRFTVNbaXRlbVR5cGVdO1xuXG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgaXRlbS5pc0NvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS5pc0NvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJhdGNoIG9mIHJlcXVlc3RzIHRvIGdldCBsaXN0IG9mIHJlcXVpcmVkIEFjY291bnRTZXR1cEl0ZW0ncy5cbiAgICogU29tZSBpdGVtcyBhcmUgb3B0aW9uYWwgYW5kIGRlcGVuZHMgb2YgdXNlcidzIGNsaWVudCBpbmNvbWUgdHlwZXNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQmF0Y2goaW5jb21lVHlwZXM6IENsaWVudEluY29tZVR5cGVzKTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbj4ge1xuICAgIGNvbnN0IGJhdGNoOiBPYnNlcnZhYmxlPEFjY291bnRTZXR1cEl0ZW0+W10gPSBbXTtcbiAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyU2VydmljZS5nZXRDYWNoZUZpcnN0KCk7XG5cbiAgICAvLyBTYWxhcnkgaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIHNhbGFyeSBpbmNvbWUgc291cmNlXG4gICAgaWYgKGluY29tZVR5cGVzLndvcmsgJiYgdXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLldPUktfVEFOSykpIHtcbiAgICAgIGJhdGNoLnB1c2goXG4gICAgICAgIHRoaXMuY3JlYXRlKFxuICAgICAgICAgIEFjY291bnRTZXR1cEl0ZW1zRW51bS5TQUxBUlksXG4gICAgICAgICAgdGhpcy5nZXRJbmNvbWVTb3VyY2VzKHRydWUpXG4gICAgICAgICksXG4gICAgICAgIC8vIE90aGVyIGluY29tZSBpcyBhIHBhcnQgb2Ygd29yayB0YW5rLCBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSBvdGhlciBpbmNvbWUgc291cmNlXG4gICAgICAgIHRoaXMuY3JlYXRlKFxuICAgICAgICAgIEFjY291bnRTZXR1cEl0ZW1zRW51bS5PVEhFUl9JTkNPTUUsXG4gICAgICAgICAgdGhpcy5nZXRJbmNvbWVTb3VyY2VzKClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZW50YWwgaW5jb21lIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgcHJvcGVydHlcbiAgICBpZiAoaW5jb21lVHlwZXMucHJvcGVydHkgJiYgdXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLlBST1BFUlRZX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5QUk9QRVJUWSwgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0QXJyYXkoKSkpO1xuICAgIH1cblxuICAgIC8vIFNvbGUgYnVzaW5lc3MgaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSBidXNpbmVzc1xuICAgIGlmIChpbmNvbWVUeXBlcy5zb2xlICYmIHVzZXIuaGFzUm9sZXMoVXNlclJvbGVzRW51bS5TT0xFX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5TT0xFX0JVU0lORVNTLCB0aGlzLnNvbGVCdXNpbmVzc1NlcnZpY2UuZ2V0KCkpKTtcbiAgICB9XG5cbiAgICAvLyBob2xkaW5ncyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIGhvbGRpbmdcbiAgICBpZiAoaW5jb21lVHlwZXMuaG9sZGluZ3MgICYmIHVzZXIuaGFzUm9sZXMoVXNlclJvbGVzRW51bS5IT0xESU5HX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5IT0xESU5HUywgdGhpcy5ob2xkaW5nU2VydmljZS5nZXRBcnJheSgpKSk7XG4gICAgfVxuXG4gICAgaWYgKGluY29tZVR5cGVzLnNvbGUgfHwgaW5jb21lVHlwZXMucHJvcGVydHkgfHwgaW5jb21lVHlwZXMud29yayB8fCBpbmNvbWVUeXBlcy5ob2xkaW5ncykge1xuICAgICAgLy8gQmFuayBmZWVkcyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIGJhbmsgYWNjb3VudCAoYmFzaXEgb3IgbWFudWFsKVxuICAgICAgYmF0Y2gucHVzaCh0aGlzLmdldEJhbmtGZWVkc0l0ZW0oKSk7XG5cbiAgICAgIC8vIExvZ2Jvb2sgaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGhhcyBhdCBsZWFzdCBvbmUgdmVoaWNsZSBjbGFpbSB3aXRoIGFueSBtZXRob2QgKGttcyBvciBsb2dib29rKVxuICAgICAgYmF0Y2gucHVzaCh0aGlzLmdldExvZ2Jvb2tJdGVtKCkpO1xuXG4gICAgICAvLyBBbGxvY2F0aW9uIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgdHJhbnNhY3Rpb24gYWxsb2NhdGlvblxuICAgICAgYmF0Y2gucHVzaCh0aGlzLmNyZWF0ZShBY2NvdW50U2V0dXBJdGVtc0VudW0uVFJBTlNBQ1RJT04sIHRoaXMudHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZS5nZXQoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGJhdGNoKS5waXBlKG1hcCgoaXRlbXM6IEFjY291bnRTZXR1cEl0ZW1bXSkgPT4gbmV3IEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uKGl0ZW1zKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIEFsZXg6IHdvcmsgd2l0aCBjb2xsZWN0aW9uIHdoZW4gc2VydmljZXMgcmVmYWN0b3JlZFxuICAgKiBAVE9ETyBWaWs6IHdhaXRpbmcgZm9yIGluY29tZSBzb3VyY2VzIHJlZmFjdG9yaW5nXG4gICAqL1xuICBwcml2YXRlIGdldEluY29tZVNvdXJjZXMoaXNTYWxhcnkgPSBmYWxzZSk6IE9ic2VydmFibGU8SW5jb21lU291cmNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5pbmNvbWVTb3VyY2VTZXJ2aWNlLmdldCgpLnBpcGUoXG4gICAgICBtYXAoKGluY29tZVNvdXJjZXM6IEluY29tZVNvdXJjZVtdKTogSW5jb21lU291cmNlW10gPT4ge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uOiBJbmNvbWVTb3VyY2VDb2xsZWN0aW9uID0gbmV3IEluY29tZVNvdXJjZUNvbGxlY3Rpb24oaW5jb21lU291cmNlcyk7XG4gICAgICAgIGlmIChpc1NhbGFyeSkge1xuICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmdldFNhbGFyeSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uaXRlbXMuZmlsdGVyKChpbmNvbWVTb3VyY2U6IEluY29tZVNvdXJjZSkgPT4gaW5jb21lU291cmNlLmlzT3RoZXJJbmNvbWUoKSk7XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGxvZ2Jvb2sgaXRlbSB3aGVuIHVzZXIgaGFzIGF0IGxlYXN0IDEgdmVoaWNsZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRMb2dib29rSXRlbSgpOiBPYnNlcnZhYmxlPEFjY291bnRTZXR1cEl0ZW0+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBAVE9ETyBBbGV4OiByZW1vdmUgbWFwIHdoZW4gc2VydmljZXMgc3RhcnQgd29yayB3aXRoIGNvbGxlY3Rpb25zXG4gICAgICAgIG1hcCgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKSA9PiBuZXcgVHJhbnNhY3Rpb25Db2xsZWN0aW9uKHRyYW5zYWN0aW9ucykpLFxuICAgICAgICBtZXJnZU1hcCgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbkNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb25zLmdldFZlaGljbGVUcmFuc2FjdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZShBY2NvdW50U2V0dXBJdGVtc0VudW0uV09SS19MT0dCT09LLCB0aGlzLnZlaGljbGVDbGFpbVNlcnZpY2UuZ2V0KCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBiYW5rIGZlZWRzIGl0ZW0gd2hlbiB1c2VyIGhhcyBvbmx5IGhvbGRpbmcgdGFua1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRCYW5rRmVlZHNJdGVtKCk6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT4ge1xuICAgIGNvbnN0IHVzZXJSb2xlcyA9IHRoaXMudXNlclNlcnZpY2UuZ2V0Q2FjaGVGaXJzdCgpLnJvbGVzO1xuICAgIGNvbnN0IGJhbmtGZWVkc1JvbGVzID0gW1VzZXJSb2xlc0VudW0uUFJPUEVSVFlfVEFOSywgVXNlclJvbGVzRW51bS5XT1JLX1RBTkssIFVzZXJSb2xlc0VudW0uU09MRV9UQU5LXTtcblxuICAgIGlmICghaW50ZXJzZWN0aW9uKGJhbmtGZWVkc1JvbGVzLCB1c2VyUm9sZXMpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZShBY2NvdW50U2V0dXBJdGVtc0VudW0uQkFOS19GRUVEUywgdGhpcy5iYW5rQWNjb3VudHNTZXJ2aWNlLmdldEFycmF5KCkpO1xuICB9XG59XG4iXX0=
145
+ }], ctorParameters: function () { return [{ type: i1.PropertyService }, { type: i1.IncomeSourceService }, { type: i1.BankAccountService }, { type: i1.TransactionAllocationService }, { type: i1.VehicleClaimService }, { type: i1.TransactionService }, { type: i1.SoleBusinessService }, { type: i1.HoldingService }, { type: i1.UserService }]; } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZXR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFhNUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUcsT0FBTyxFQUFjLGFBQWEsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxZQUFZLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFFL0Q7OztHQUdHO0FBSUgsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUNVLGVBQWdDLEVBQ2hDLG1CQUF3QyxFQUN4QyxtQkFBdUMsRUFDdkMsNEJBQTBELEVBQzFELG1CQUF3QyxFQUN4QyxrQkFBc0MsRUFDdEMsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLFdBQXdCO1FBUnhCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE4QjtRQUMxRCx3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O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDekQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNuRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQzs7Z0hBbEtVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFDQ09VTlRfU0VUVVBfSVRFTVMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudC1zZXR1cC9hY2NvdW50LXNldHVwLWl0ZW1zLmNvbnN0JztcbmltcG9ydCB7IEFjY291bnRTZXR1cEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudC1zZXR1cC9hY2NvdW50LXNldHVwLWl0ZW0nO1xuaW1wb3J0IHsgQWNjb3VudFNldHVwSXRlbXNFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC1pdGVtcy5lbnVtJztcbmltcG9ydCB7XG4gIEJhbmtBY2NvdW50U2VydmljZSxcbiAgSG9sZGluZ1NlcnZpY2UsXG4gIEluY29tZVNvdXJjZVNlcnZpY2UsXG4gIFByb3BlcnR5U2VydmljZSxcbiAgU29sZUJ1c2luZXNzU2VydmljZSxcbiAgVHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZSxcbiAgVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVmVoaWNsZUNsYWltU2VydmljZVxufSBmcm9tICcuLi9odHRwJztcbmltcG9ydCB7IEluY29tZVNvdXJjZSwgVHJhbnNhY3Rpb24sIFVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWNjb3VudFNldHVwSXRlbUNvbGxlY3Rpb24sIEluY29tZVNvdXJjZUNvbGxlY3Rpb24sIFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpbnRlcnNlY3Rpb24gZnJvbSAnbG9kYXNoL2ludGVyc2VjdGlvbic7XG5pbXBvcnQgeyBVc2VyUm9sZXNFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvdXNlci1yb2xlcy5lbnVtJztcblxuLyoqXG4gKiBTZXJ2aWNlIGhhbmRsaW5nIHVzZXIncyBhY2NvdW50IHNldHVwIHByb2Nlc3MuXG4gKiBDaGVja3MgcmVxdWlyZWQgc3RlcHMgYW5kIHRoZWlyIGNvbXBsZXRpb25cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFNldHVwU2VydmljZSB7XG4gIGNhY2hlOiBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbjtcbiAgY2FjaGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPiA9IG5ldyBSZXBsYXlTdWJqZWN0PEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPigxKTtcbiAgdXNlcjogVXNlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5jb21lU291cmNlU2VydmljZTogSW5jb21lU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIGJhbmtBY2NvdW50c1NlcnZpY2U6IEJhbmtBY2NvdW50U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uQWxsb2NhdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uQWxsb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2ZWhpY2xlQ2xhaW1TZXJ2aWNlOiBWZWhpY2xlQ2xhaW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzb2xlQnVzaW5lc3NTZXJ2aWNlOiBTb2xlQnVzaW5lc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9sZGluZ1NlcnZpY2U6IEhvbGRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBhY2NvdW50IHNldHVwIGl0ZW1zIGZvciBjdXJyZW50IHVzZXJcbiAgICovXG4gIGdldCgpOiBPYnNlcnZhYmxlPEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPiB7XG4gICAgaWYgKCF0aGlzLmNhY2hlKSB7XG4gICAgICB0aGlzLmNhY2hlID0gbmV3IEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uKFtdKTtcblxuICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRGaXJzdCgpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh1c2VyOiBVc2VyKSA9PiB7XG4gICAgICAgICAgdGhpcy51c2VyID0gdXNlcjtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJhdGNoKCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgoaXRlbXM6IEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgIGNhc2UgIXRoaXMuY2FjaGU6XG4gICAgICAgICAgY2FzZSB0aGlzLmNhY2hlLmZpbHRlckJ5KCdpc0NvbXBsZXRlZCcsIHRydWUpLmxlbmd0aCAhPT0gaXRlbXMuZmlsdGVyQnkoJ2lzQ29tcGxldGVkJywgdHJ1ZSkubGVuZ3RoOlxuICAgICAgICAgIGNhc2UgdGhpcy5jYWNoZS5sZW5ndGggIT09IGl0ZW1zLmxlbmd0aDpcbiAgICAgICAgICAgIHRoaXMuY2FjaGUgPSBjbG9uZURlZXAoaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZSBBY2NvdW50U2V0dXBJdGVtIGFuZCBjaGVjayBpdCdzIGNvbXBsZXRpb25cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlKGl0ZW1UeXBlOiBBY2NvdW50U2V0dXBJdGVtc0VudW0sIHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0W10+KTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPiB7XG4gICAgcmV0dXJuIHJlcXVlc3QucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiBvYmplY3RbXSk6IEFjY291bnRTZXR1cEl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBpdGVtOiBBY2NvdW50U2V0dXBJdGVtID0gQUNDT1VOVF9TRVRVUF9JVEVNU1tpdGVtVHlwZV07XG5cbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgICBpdGVtLmlzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmlzQ29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYmF0Y2ggb2YgcmVxdWVzdHMgdG8gZ2V0IGxpc3Qgb2YgcmVxdWlyZWQgQWNjb3VudFNldHVwSXRlbSdzLlxuICAgKiBTb21lIGl0ZW1zIGFyZSBvcHRpb25hbCBhbmQgZGVwZW5kcyBvZiB1c2VyJ3MgY2xpZW50IGluY29tZSB0eXBlc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCYXRjaCgpOiBPYnNlcnZhYmxlPEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPiB7XG4gICAgY29uc3QgYmF0Y2g6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT5bXSA9IFtdO1xuXG4gICAgLy8gU2FsYXJ5IGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBzYWxhcnkgaW5jb21lIHNvdXJjZVxuICAgIGlmICh0aGlzLnVzZXIuaGFzUm9sZXMoVXNlclJvbGVzRW51bS5XT1JLX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLmNyZWF0ZShcbiAgICAgICAgICBBY2NvdW50U2V0dXBJdGVtc0VudW0uU0FMQVJZLFxuICAgICAgICAgIHRoaXMuZ2V0SW5jb21lU291cmNlcyh0cnVlKVxuICAgICAgICApLFxuICAgICAgICAvLyBPdGhlciBpbmNvbWUgaXMgYSBwYXJ0IG9mIHdvcmsgdGFuaywgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgb3RoZXIgaW5jb21lIHNvdXJjZVxuICAgICAgICB0aGlzLmNyZWF0ZShcbiAgICAgICAgICBBY2NvdW50U2V0dXBJdGVtc0VudW0uT1RIRVJfSU5DT01FLFxuICAgICAgICAgIHRoaXMuZ2V0SW5jb21lU291cmNlcygpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVudGFsIGluY29tZSBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIHByb3BlcnR5XG4gICAgaWYgKHRoaXMudXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLlBST1BFUlRZX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5QUk9QRVJUWSwgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0QXJyYXkoKSkpO1xuICAgIH1cblxuICAgIC8vIFNvbGUgYnVzaW5lc3MgaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSBidXNpbmVzc1xuICAgIGlmICh0aGlzLnVzZXIuaGFzUm9sZXMoVXNlclJvbGVzRW51bS5TT0xFX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5TT0xFX0JVU0lORVNTLCB0aGlzLnNvbGVCdXNpbmVzc1NlcnZpY2UuZ2V0KCkpKTtcbiAgICB9XG5cbiAgICAvLyBob2xkaW5ncyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIGhvbGRpbmdcbiAgICBpZiAodGhpcy51c2VyLmhhc1JvbGVzKFVzZXJSb2xlc0VudW0uSE9MRElOR19UQU5LKSkge1xuICAgICAgYmF0Y2gucHVzaCh0aGlzLmNyZWF0ZShBY2NvdW50U2V0dXBJdGVtc0VudW0uSE9MRElOR1MsIHRoaXMuaG9sZGluZ1NlcnZpY2UuZ2V0QXJyYXkoKSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnVzZXIuaGFzUm9sZXMoW1VzZXJSb2xlc0VudW0uV09SS19UQU5LLCBVc2VyUm9sZXNFbnVtLlBST1BFUlRZX1RBTkssIFVzZXJSb2xlc0VudW0uU09MRV9UQU5LLCBVc2VyUm9sZXNFbnVtLkhPTERJTkdfVEFOS10pKSB7XG4gICAgICAvLyBCYW5rIGZlZWRzIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgYmFuayBhY2NvdW50IChiYXNpcSBvciBtYW51YWwpXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuZ2V0QmFua0ZlZWRzSXRlbSgpKTtcblxuICAgICAgLy8gTG9nYm9vayBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgaGFzIGF0IGxlYXN0IG9uZSB2ZWhpY2xlIGNsYWltIHdpdGggYW55IG1ldGhvZCAoa21zIG9yIGxvZ2Jvb2spXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuZ2V0TG9nYm9va0l0ZW0oKSk7XG5cbiAgICAgIC8vIEFsbG9jYXRpb24gaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiBhbGxvY2F0aW9uXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5UUkFOU0FDVElPTiwgdGhpcy50cmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlLmdldCgpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoYmF0Y2gpLnBpcGUobWFwKChpdGVtczogQWNjb3VudFNldHVwSXRlbVtdKSA9PiBuZXcgQWNjb3VudFNldHVwSXRlbUNvbGxlY3Rpb24oaXRlbXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gQWxleDogd29yayB3aXRoIGNvbGxlY3Rpb24gd2hlbiBzZXJ2aWNlcyByZWZhY3RvcmVkXG4gICAqIEBUT0RPIFZpazogd2FpdGluZyBmb3IgaW5jb21lIHNvdXJjZXMgcmVmYWN0b3JpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0SW5jb21lU291cmNlcyhpc1NhbGFyeSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJbmNvbWVTb3VyY2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmluY29tZVNvdXJjZVNlcnZpY2UuZ2V0KCkucGlwZShcbiAgICAgIG1hcCgoaW5jb21lU291cmNlczogSW5jb21lU291cmNlW10pOiBJbmNvbWVTb3VyY2VbXSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb246IEluY29tZVNvdXJjZUNvbGxlY3Rpb24gPSBuZXcgSW5jb21lU291cmNlQ29sbGVjdGlvbihpbmNvbWVTb3VyY2VzKTtcbiAgICAgICAgaWYgKGlzU2FsYXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0U2FsYXJ5KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5pdGVtcy5maWx0ZXIoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKSA9PiBpbmNvbWVTb3VyY2UuaXNPdGhlckluY29tZSgpKTtcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgbG9nYm9vayBpdGVtIHdoZW4gdXNlciBoYXMgYXQgbGVhc3QgMSB2ZWhpY2xlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldExvZ2Jvb2tJdGVtKCk6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIEBUT0RPIEFsZXg6IHJlbW92ZSBtYXAgd2hlbiBzZXJ2aWNlcyBzdGFydCB3b3JrIHdpdGggY29sbGVjdGlvbnNcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pID0+IG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24odHJhbnNhY3Rpb25zKSksXG4gICAgICAgIG1lcmdlTWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2FjdGlvbnMuZ2V0VmVoaWNsZVRyYW5zYWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5XT1JLX0xPR0JPT0ssIHRoaXMudmVoaWNsZUNsYWltU2VydmljZS5nZXQoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGJhbmsgZmVlZHMgaXRlbSB3aGVuIHVzZXIgaGFzIG9ubHkgaG9sZGluZyB0YW5rXG4gICAqL1xuICBwcml2YXRlIGdldEJhbmtGZWVkc0l0ZW0oKTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPiB7XG4gICAgY29uc3QgdXNlclJvbGVzID0gdGhpcy51c2VyU2VydmljZS5nZXRDYWNoZUZpcnN0KCkucm9sZXM7XG4gICAgY29uc3QgYmFua0ZlZWRzUm9sZXMgPSBbVXNlclJvbGVzRW51bS5QUk9QRVJUWV9UQU5LLCBVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5TT0xFX1RBTktdO1xuXG4gICAgaWYgKCFpbnRlcnNlY3Rpb24oYmFua0ZlZWRzUm9sZXMsIHVzZXJSb2xlcykubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKEFjY291bnRTZXR1cEl0ZW1zRW51bS5CQU5LX0ZFRURTLCB0aGlzLmJhbmtBY2NvdW50c1NlcnZpY2UuZ2V0QXJyYXkoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -118,7 +118,7 @@ export class SubscriptionService extends RestService {
118
118
  // @TODO vik test and remove
119
119
  setTimeout(() => {
120
120
  this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.SERVICE_SUBSCRIPTION_UPDATED, null));
121
- this.toastService.success('Subscription successfully updated');
121
+ this.toastService.success('Subscription successfully updated!!!');
122
122
  }, 2000);
123
123
  });
124
124
  }
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
134
134
  type: Inject,
135
135
  args: ['environment']
136
136
  }] }]; } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zdWJzY3JpcHRpb24vc2VydmljZS1zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkcsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVyRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUF3RjtJQU8vSCxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUNoRCxVQUFzQixFQUN0QixZQUEwQixFQUNELFdBQWdCO1FBRWpELEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFOdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNC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eEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUNqRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dIQXZJVSxtQkFBbUIsd0lBWXBCLGFBQWE7b0hBWlosbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBYUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGxvYWRTdHJpcGUgfSBmcm9tICdAc3RyaXBlL3N0cmlwZS1qcyc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4sIHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIFNzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudCwgQXBwRXZlbnRUeXBlRW51bSwgU2VydmljZVByb21vQ29kZSwgU2VydmljZVN1YnNjcmlwdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90b2FzdCc7XG5pbXBvcnQgeyBSZXN0TWV0aG9kLCBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QnO1xuaW1wb3J0IHsgU2VydmljZVN1YnNjcmlwdGlvbiBhcyBTZXJ2aWNlU3Vic2NyaXB0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscyc7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk1lc3NhZ2VzRW51bSB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLW1lc3NhZ2VzLmVudW0nO1xuXG4vKipcbiAqIEBUT0RPIEFsZXggcmVmYWN0b3JcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFNlcnZpY2VTdWJzY3JpcHRpb25CYXNlLCBTZXJ2aWNlU3Vic2NyaXB0aW9uLCBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICBpc0FwaVBsYXRmb3JtID0gdHJ1ZTtcbiAgZW5kcG9pbnRVcmkgPSAnc2VydmljZS1zdWJzY3JpcHRpb25zJztcbiAgbW9kZWxDbGFzczogdHlwZW9mIFNlcnZpY2VTdWJzY3JpcHRpb24gPSBTZXJ2aWNlU3Vic2NyaXB0aW9uO1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbiA9IFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uO1xuICBkaXNhYmxlZE1ldGhvZHM6IFJlc3RNZXRob2RbXSA9IFsncHV0QmF0Y2gnLCAnZGVsZXRlJywgJ2RlbGV0ZUJhdGNoJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG5cbiAgICB0aGlzLmxpc3RlblN1YnNjcmlwdGlvbnMoKTtcbiAgfVxuXG4gIHN0YXJ0VHJpYWwoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXBpVXJsfS90cmlhbGAsIHN1YnNjcmlwdGlvbilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBTZXJ2aWNlU3Vic2NyaXB0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbiA9IHBsYWluVG9DbGFzcyhTZXJ2aWNlU3Vic2NyaXB0aW9uLCByZXNwb25zZSk7XG5cbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFtuZXdTdWJzY3JpcHRpb25dLCAncG9zdCcpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ld1N1YnNjcmlwdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwb3N0U3RyaXBlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbik6IE9ic2VydmFibGU8c3RyaW5nIHwgdm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaVVybCwgY2xhc3NUb1BsYWluKHN1YnNjcmlwdGlvbikpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogc3RyaW5nKSA9PiByZXNwb25zZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKFN1YnNjcmlwdGlvbk1lc3NhZ2VzRW51bS5QUk9NT0NPREVfRVJST1IpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3RpdmUoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUobWFwKChzdWJzY3JpcHRpb25zKSA9PiBzdWJzY3JpcHRpb25zLmdldEFjdGl2ZSgpKSk7XG4gIH1cblxuICBnZXRUcmlhbHMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUobWFwKChzdWJzY3JpcHRpb25zKSA9PiBzdWJzY3JpcHRpb25zLmdldFRyaWFscygpKSk7XG4gIH1cblxuICBnZXRBY3RpdmVUcmlhbHMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLnBpcGUobWFwKChzdWJzY3JpcHRpb25zKSA9PiBzdWJzY3JpcHRpb25zLmdldFRyaWFscygpKSk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gcmVtb3ZlXG4gICAqIHJlZGlyZWN0IHRvIHN0cmlwZSBwYXltZW50IHBhZ2VcbiAgICovXG4gIGFzeW5jIGNoZWNrb3V0UmVkaXJlY3Qoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzdHJpcGU6IGFueSA9IGF3YWl0IGxvYWRTdHJpcGUodGhpcy5lbnZpcm9ubWVudC5zdHJpcGVQayk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvY2hlY2tvdXQtc2Vzc2lvbmAsIHtcbiAgICAgIGl0ZW1zOiBzdWJzY3JpcHRpb24uaXRlbXMsXG4gICAgICBzdWNjZXNzVXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIGNhbmNlbFVybDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoc2Vzc2lvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIEBUb2RvIHJlbW92ZSB1c2VyIFRSSUFMIHN0YXR1c1xuICAgICAgICBzdHJpcGUucmVkaXJlY3RUb0NoZWNrb3V0KHsgc2Vzc2lvbklkOiBzZXNzaW9uIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gcmVtb3ZlXG4gICAqIHJlZGlyZWN0IHRvIHN0cmlwZSBiaWxsaW5nIHBhZ2VcbiAgICovXG4gIGJpbGxpbmdSZWRpcmVjdChyZXR1cm5Vcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc3RyaXBlL2JpbGxpbmctcG9ydGFsLXNlc3Npb25gLCB7XG4gICAgICBwYXJhbXM6IHsgcmV0dXJuVXJsIH1cbiAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlc3BvbnNlLnVybCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IHN1YnNjcmlwdGlvbiBhbmQgc2VsZWN0ZWQgbmV3IHN1YnNjcmlwdGlvblxuICAgKi9cbiAgZ2V0UHJvcmF0aW9uQ29zdChzdWJzY3JpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3NlcnZpY2Utc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbi5pZH0vcHJvcmF0aW9uLWNvc3RgLCBzdWJzY3JpcHRpb24pLnBpcGUoXG4gICAgICBtYXAoKHByb3JhdGlvbkNvc3Q6IG51bWJlcikgPT4gcHJvcmF0aW9uQ29zdClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIGl0J3Mgbm90IGEgY2hhbmdlLCBpdCdzIHJlcXVlc3QgdG8gY2hhbmdlXG4gICAqIENoYW5nZSBzdWJzY3JpcHRpb24gcGxhblxuICAgKi9cbiAgY2hhbmdlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uLmlkfWAsIHN1YnNjcmlwdGlvbik7XG4gIH1cblxuICBjYW5jZWwoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zZXJ2aWNlLXN1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb24uaWR9L2NhbmNlbGAsIHt9KTtcbiAgfVxuXG4gIHJlbmV3KHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uLmlkfS9yZW5ld2FsYCwge30pO1xuICB9XG5cbiAgZ2V0Q291cG9uKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1wcm9tby1jb2Rlc2AsIHtcbiAgICAgIHBhcmFtczogeyBjb2RlIH1cbiAgICB9KS5waXBlKG1hcCgocmVzcG9uc2U6IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKFNlcnZpY2VQcm9tb0NvZGUsIHJlc3BvbnNlKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5TdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuc3NlU2VydmljZS5vbihgc2VydmljZVN1YnNjcmlwdGlvbnNgKVxuICAgICAgLnN1YnNjcmliZSgoc2VydmljZVN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbkJhc2UpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uID0gcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb24sIHNlcnZpY2VTdWJzY3JpcHRpb24pO1xuICAgICAgICAvLyB1cGRhdGUgZXhpc3RpbmcgbWVzc2FnZSBpZiByZWFkIGFuZCBhZGQgbmV3IG1lc3NhZ2UgaWYgbm90IHJlYWRcbiAgICAgICAgaWYgKHRoaXMuY2FjaGUuZmluZEJ5KCdpZCcsIHN1YnNjcmlwdGlvbi5pZCkpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFtzdWJzY3JpcHRpb25dLCAncHV0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbc3Vic2NyaXB0aW9uXSwgJ3Bvc3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEBUT0RPIHZpayB0ZXN0IGFuZCByZW1vdmVcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlNFUlZJQ0VfU1VCU0NSSVBUSU9OX1VQREFURUQsIG51bGwpKTtcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKCdTdWJzY3JpcHRpb24gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQnKTtcbiAgICAgICAgfSwgMjAwMCk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zdWJzY3JpcHRpb24vc2VydmljZS1zdWJzY3JpcHRpb24vc3Vic2NyaXB0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkcsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVyRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUF3RjtJQU8vSCxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUNoRCxVQUFzQixFQUN0QixZQUEwQixFQUNELFdBQWdCO1FBRWpELEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFOdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNC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eEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUNwRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dIQXZJVSxtQkFBbUIsd0lBWXBCLGFBQWE7b0hBWlosbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBYUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGxvYWRTdHJpcGUgfSBmcm9tICdAc3RyaXBlL3N0cmlwZS1qcyc7XG5pbXBvcnQgeyBjbGFzc1RvUGxhaW4sIHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIFNzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudCwgQXBwRXZlbnRUeXBlRW51bSwgU2VydmljZVByb21vQ29kZSwgU2VydmljZVN1YnNjcmlwdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90b2FzdCc7XG5pbXBvcnQgeyBSZXN0TWV0aG9kLCBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QnO1xuaW1wb3J0IHsgU2VydmljZVN1YnNjcmlwdGlvbiBhcyBTZXJ2aWNlU3Vic2NyaXB0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscyc7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk1lc3NhZ2VzRW51bSB9IGZyb20gJy4vc3Vic2NyaXB0aW9uLW1lc3NhZ2VzLmVudW0nO1xuXG4vKipcbiAqIEBUT0RPIEFsZXggcmVmYWN0b3JcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFNlcnZpY2VTdWJzY3JpcHRpb25CYXNlLCBTZXJ2aWNlU3Vic2NyaXB0aW9uLCBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICBpc0FwaVBsYXRmb3JtID0gdHJ1ZTtcbiAgZW5kcG9pbnRVcmkgPSAnc2VydmljZS1zdWJzY3JpcHRpb25zJztcbiAgbW9kZWxDbGFzczogdHlwZW9mIFNlcnZpY2VTdWJzY3JpcHRpb24gPSBTZXJ2aWNlU3Vic2NyaXB0aW9uO1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbiA9IFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uO1xuICBkaXNhYmxlZE1ldGhvZHM6IFJlc3RNZXRob2RbXSA9IFsncHV0QmF0Y2gnLCAnZGVsZXRlJywgJ2RlbGV0ZUJhdGNoJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG5cbiAgICB0aGlzLmxpc3RlblN1YnNjcmlwdGlvbnMoKTtcbiAgfVxuXG4gIHN0YXJ0VHJpYWwoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYXBpVXJsfS90cmlhbGAsIHN1YnNjcmlwdGlvbilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBTZXJ2aWNlU3Vic2NyaXB0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbiA9IHBsYWluVG9DbGFzcyhTZXJ2aWNlU3Vic2NyaXB0aW9uLCByZXNwb25zZSk7XG5cbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFtuZXdTdWJzY3JpcHRpb25dLCAncG9zdCcpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ld1N1YnNjcmlwdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwb3N0U3RyaXBlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbik6IE9ic2VydmFibGU8c3RyaW5nIHwgdm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaVVybCwgY2xhc3NUb1BsYWluKHN1YnNjcmlwdGlvbikpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogc3RyaW5nKSA9PiByZXNwb25zZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKFN1YnNjcmlwdGlvbk1lc3NhZ2VzRW51bS5QUk9NT0NPREVfRVJST1IpO1xuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3RpdmUoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUobWFwKChzdWJzY3JpcHRpb25zKSA9PiBzdWJzY3JpcHRpb25zLmdldEFjdGl2ZSgpKSk7XG4gIH1cblxuICBnZXRUcmlhbHMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUobWFwKChzdWJzY3JpcHRpb25zKSA9PiBzdWJzY3JpcHRpb25zLmdldFRyaWFscygpKSk7XG4gIH1cblxuICBnZXRBY3RpdmVUcmlhbHMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLnBpcGUobWFwKChzdWJzY3JpcHRpb25zKSA9PiBzdWJzY3JpcHRpb25zLmdldFRyaWFscygpKSk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gcmVtb3ZlXG4gICAqIHJlZGlyZWN0IHRvIHN0cmlwZSBwYXltZW50IHBhZ2VcbiAgICovXG4gIGFzeW5jIGNoZWNrb3V0UmVkaXJlY3Qoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzdHJpcGU6IGFueSA9IGF3YWl0IGxvYWRTdHJpcGUodGhpcy5lbnZpcm9ubWVudC5zdHJpcGVQayk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvY2hlY2tvdXQtc2Vzc2lvbmAsIHtcbiAgICAgIGl0ZW1zOiBzdWJzY3JpcHRpb24uaXRlbXMsXG4gICAgICBzdWNjZXNzVXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIGNhbmNlbFVybDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoc2Vzc2lvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIEBUb2RvIHJlbW92ZSB1c2VyIFRSSUFMIHN0YXR1c1xuICAgICAgICBzdHJpcGUucmVkaXJlY3RUb0NoZWNrb3V0KHsgc2Vzc2lvbklkOiBzZXNzaW9uIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gcmVtb3ZlXG4gICAqIHJlZGlyZWN0IHRvIHN0cmlwZSBiaWxsaW5nIHBhZ2VcbiAgICovXG4gIGJpbGxpbmdSZWRpcmVjdChyZXR1cm5Vcmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc3RyaXBlL2JpbGxpbmctcG9ydGFsLXNlc3Npb25gLCB7XG4gICAgICBwYXJhbXM6IHsgcmV0dXJuVXJsIH1cbiAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlc3BvbnNlLnVybCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IHN1YnNjcmlwdGlvbiBhbmQgc2VsZWN0ZWQgbmV3IHN1YnNjcmlwdGlvblxuICAgKi9cbiAgZ2V0UHJvcmF0aW9uQ29zdChzdWJzY3JpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3NlcnZpY2Utc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbi5pZH0vcHJvcmF0aW9uLWNvc3RgLCBzdWJzY3JpcHRpb24pLnBpcGUoXG4gICAgICBtYXAoKHByb3JhdGlvbkNvc3Q6IG51bWJlcikgPT4gcHJvcmF0aW9uQ29zdClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIGl0J3Mgbm90IGEgY2hhbmdlLCBpdCdzIHJlcXVlc3QgdG8gY2hhbmdlXG4gICAqIENoYW5nZSBzdWJzY3JpcHRpb24gcGxhblxuICAgKi9cbiAgY2hhbmdlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uLmlkfWAsIHN1YnNjcmlwdGlvbik7XG4gIH1cblxuICBjYW5jZWwoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zZXJ2aWNlLXN1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb24uaWR9L2NhbmNlbGAsIHt9KTtcbiAgfVxuXG4gIHJlbmV3KHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uLmlkfS9yZW5ld2FsYCwge30pO1xuICB9XG5cbiAgZ2V0Q291cG9uKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1wcm9tby1jb2Rlc2AsIHtcbiAgICAgIHBhcmFtczogeyBjb2RlIH1cbiAgICB9KS5waXBlKG1hcCgocmVzcG9uc2U6IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKFNlcnZpY2VQcm9tb0NvZGUsIHJlc3BvbnNlKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5TdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuc3NlU2VydmljZS5vbihgc2VydmljZVN1YnNjcmlwdGlvbnNgKVxuICAgICAgLnN1YnNjcmliZSgoc2VydmljZVN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbkJhc2UpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uID0gcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb24sIHNlcnZpY2VTdWJzY3JpcHRpb24pO1xuICAgICAgICAvLyB1cGRhdGUgZXhpc3RpbmcgbWVzc2FnZSBpZiByZWFkIGFuZCBhZGQgbmV3IG1lc3NhZ2UgaWYgbm90IHJlYWRcbiAgICAgICAgaWYgKHRoaXMuY2FjaGUuZmluZEJ5KCdpZCcsIHN1YnNjcmlwdGlvbi5pZCkpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFtzdWJzY3JpcHRpb25dLCAncHV0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbc3Vic2NyaXB0aW9uXSwgJ3Bvc3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEBUT0RPIHZpayB0ZXN0IGFuZCByZW1vdmVcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlNFUlZJQ0VfU1VCU0NSSVBUSU9OX1VQREFURUQsIG51bGwpKTtcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zdWNjZXNzKCdTdWJzY3JpcHRpb24gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQhISEnKTtcbiAgICAgICAgfSwgMjAwMCk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
@@ -34,7 +34,6 @@ import { NavigationEnd } from '@angular/router';
34
34
  import _ from 'lodash';
35
35
  import merge from 'lodash/merge';
36
36
  import { loadStripe } from '@stripe/stripe-js';
37
- import fromPairs from 'lodash/fromPairs';
38
37
  import { jsPDF } from 'jspdf';
39
38
  import { applyPlugin } from 'jspdf-autotable';
40
39
  import html2pdf from 'html2pdf.js';
@@ -13974,7 +13973,7 @@ class SubscriptionService extends RestService$1 {
13974
13973
  // @TODO vik test and remove
13975
13974
  setTimeout(() => {
13976
13975
  this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.SERVICE_SUBSCRIPTION_UPDATED, null));
13977
- this.toastService.success('Subscription successfully updated');
13976
+ this.toastService.success('Subscription successfully updated!!!');
13978
13977
  }, 2000);
13979
13978
  });
13980
13979
  }
@@ -17899,8 +17898,7 @@ const ACCOUNT_SETUP_ITEMS = {
17899
17898
  * Checks required steps and their completion
17900
17899
  */
17901
17900
  class AccountSetupService {
17902
- constructor(clientIncomeTypesService, propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService) {
17903
- this.clientIncomeTypesService = clientIncomeTypesService;
17901
+ constructor(propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService) {
17904
17902
  this.propertyService = propertyService;
17905
17903
  this.incomeSourceService = incomeSourceService;
17906
17904
  this.bankAccountsService = bankAccountsService;
@@ -17918,12 +17916,10 @@ class AccountSetupService {
17918
17916
  get() {
17919
17917
  if (!this.cache) {
17920
17918
  this.cache = new AccountSetupItemCollection([]);
17921
- this.clientIncomeTypesService.getFirst()
17922
- .pipe(mergeMap((incomeTypes) => {
17923
- this.clientIncomeTypesId = incomeTypes.id;
17924
- return this.createBatch(incomeTypes);
17925
- }))
17926
- .subscribe((items) => {
17919
+ this.userService.getFirst().pipe(mergeMap((user) => {
17920
+ this.user = user;
17921
+ return this.createBatch();
17922
+ })).subscribe((items) => {
17927
17923
  switch (true) {
17928
17924
  case !this.cache:
17929
17925
  case this.cache.filterBy('isCompleted', true).length !== items.filterBy('isCompleted', true).length:
@@ -17935,12 +17931,6 @@ class AccountSetupService {
17935
17931
  }
17936
17932
  return this.cacheSubject.asObservable();
17937
17933
  }
17938
- /**
17939
- * Prepare client income types to update to hide depended account setup items
17940
- */
17941
- prepareIncomeTypes(item) {
17942
- return plainToClass(ClientIncomeTypes, Object.assign({ id: this.clientIncomeTypesId }, fromPairs(item.clientIncomeTypes.map((type) => [type, false]))));
17943
- }
17944
17934
  /**
17945
17935
  * Get a single AccountSetupItem and check it's completion
17946
17936
  */
@@ -17960,28 +17950,27 @@ class AccountSetupService {
17960
17950
  * Get batch of requests to get list of required AccountSetupItem's.
17961
17951
  * Some items are optional and depends of user's client income types
17962
17952
  */
17963
- createBatch(incomeTypes) {
17953
+ createBatch() {
17964
17954
  const batch = [];
17965
- const user = this.userService.getCacheFirst();
17966
17955
  // Salary item is completed when user added salary income source
17967
- if (incomeTypes.work && user.hasRoles(UserRolesEnum.WORK_TANK)) {
17956
+ if (this.user.hasRoles(UserRolesEnum.WORK_TANK)) {
17968
17957
  batch.push(this.create(AccountSetupItemsEnum.SALARY, this.getIncomeSources(true)),
17969
17958
  // Other income is a part of work tank, completed when user added at least one other income source
17970
17959
  this.create(AccountSetupItemsEnum.OTHER_INCOME, this.getIncomeSources()));
17971
17960
  }
17972
17961
  // Rental income item is completed when user added at least one property
17973
- if (incomeTypes.property && user.hasRoles(UserRolesEnum.PROPERTY_TANK)) {
17962
+ if (this.user.hasRoles(UserRolesEnum.PROPERTY_TANK)) {
17974
17963
  batch.push(this.create(AccountSetupItemsEnum.PROPERTY, this.propertyService.getArray()));
17975
17964
  }
17976
17965
  // Sole business item is completed when user added at least one business
17977
- if (incomeTypes.sole && user.hasRoles(UserRolesEnum.SOLE_TANK)) {
17966
+ if (this.user.hasRoles(UserRolesEnum.SOLE_TANK)) {
17978
17967
  batch.push(this.create(AccountSetupItemsEnum.SOLE_BUSINESS, this.soleBusinessService.get()));
17979
17968
  }
17980
17969
  // holdings item is completed when user added at least one holding
17981
- if (incomeTypes.holdings && user.hasRoles(UserRolesEnum.HOLDING_TANK)) {
17970
+ if (this.user.hasRoles(UserRolesEnum.HOLDING_TANK)) {
17982
17971
  batch.push(this.create(AccountSetupItemsEnum.HOLDINGS, this.holdingService.getArray()));
17983
17972
  }
17984
- if (incomeTypes.sole || incomeTypes.property || incomeTypes.work || incomeTypes.holdings) {
17973
+ if (this.user.hasRoles([UserRolesEnum.WORK_TANK, UserRolesEnum.PROPERTY_TANK, UserRolesEnum.SOLE_TANK, UserRolesEnum.HOLDING_TANK])) {
17985
17974
  // Bank feeds item is completed when user added at least one bank account (basiq or manual)
17986
17975
  batch.push(this.getBankFeedsItem());
17987
17976
  // Logbook item is completed when user has at least one vehicle claim with any method (kms or logbook)
@@ -18030,14 +18019,14 @@ class AccountSetupService {
18030
18019
  return this.create(AccountSetupItemsEnum.BANK_FEEDS, this.bankAccountsService.getArray());
18031
18020
  }
18032
18021
  }
18033
- AccountSetupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, deps: [{ token: ClientIncomeTypesService }, { token: PropertyService }, { token: IncomeSourceService }, { token: BankAccountService }, { token: TransactionAllocationService }, { token: VehicleClaimService }, { token: TransactionService }, { token: SoleBusinessService }, { token: HoldingService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Injectable });
18022
+ AccountSetupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, deps: [{ token: PropertyService }, { token: IncomeSourceService }, { token: BankAccountService }, { token: TransactionAllocationService }, { token: VehicleClaimService }, { token: TransactionService }, { token: SoleBusinessService }, { token: HoldingService }, { token: UserService }], target: i0.ɵɵFactoryTarget.Injectable });
18034
18023
  AccountSetupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, providedIn: 'root' });
18035
18024
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccountSetupService, decorators: [{
18036
18025
  type: Injectable,
18037
18026
  args: [{
18038
18027
  providedIn: 'root'
18039
18028
  }]
18040
- }], ctorParameters: function () { return [{ type: ClientIncomeTypesService }, { type: PropertyService }, { type: IncomeSourceService }, { type: BankAccountService }, { type: TransactionAllocationService }, { type: VehicleClaimService }, { type: TransactionService }, { type: SoleBusinessService }, { type: HoldingService }, { type: UserService }]; } });
18029
+ }], ctorParameters: function () { return [{ type: PropertyService }, { type: IncomeSourceService }, { type: BankAccountService }, { type: TransactionAllocationService }, { type: VehicleClaimService }, { type: TransactionService }, { type: SoleBusinessService }, { type: HoldingService }, { type: UserService }]; } });
18041
18030
 
18042
18031
  /**
18043
18032
  * Service to work with Rewardful (affiliate program) API