@infrab4a/connect-angular 4.3.14 → 4.4.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/angular-connect.module.d.ts +24 -26
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +11 -11
  4. package/angular-firestore.module.d.ts +18 -18
  5. package/angular-hasura-graphql.module.d.ts +16 -16
  6. package/consts/backend-url.const.d.ts +1 -1
  7. package/consts/category-structure.d.ts +1 -1
  8. package/consts/default-shop.const.d.ts +1 -1
  9. package/consts/es-config.const.d.ts +1 -1
  10. package/consts/firebase-const.d.ts +3 -3
  11. package/consts/hasura-options.const.d.ts +1 -1
  12. package/consts/index.d.ts +6 -7
  13. package/consts/storage-base-url.const.d.ts +1 -1
  14. package/esm2020/angular-connect.module.mjs +113 -115
  15. package/esm2020/angular-elastic-search.module.mjs +34 -34
  16. package/esm2020/angular-firebase-auth.module.mjs +115 -115
  17. package/esm2020/angular-firestore.module.mjs +502 -502
  18. package/esm2020/angular-hasura-graphql.module.mjs +265 -265
  19. package/esm2020/consts/backend-url.const.mjs +1 -1
  20. package/esm2020/consts/category-structure.mjs +2 -2
  21. package/esm2020/consts/default-shop.const.mjs +2 -2
  22. package/esm2020/consts/es-config.const.mjs +2 -2
  23. package/esm2020/consts/firebase-const.mjs +4 -4
  24. package/esm2020/consts/hasura-options.const.mjs +2 -2
  25. package/esm2020/consts/index.mjs +7 -8
  26. package/esm2020/consts/storage-base-url.const.mjs +2 -2
  27. package/esm2020/helpers/index.mjs +2 -2
  28. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -7
  29. package/esm2020/index.mjs +6 -7
  30. package/esm2020/infrab4a-connect-angular.mjs +4 -4
  31. package/esm2020/services/auth.service.mjs +37 -37
  32. package/esm2020/services/cart.service.mjs +281 -281
  33. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -2
  34. package/esm2020/services/catalog/adapters/index.mjs +4 -4
  35. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +41 -43
  36. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -23
  37. package/esm2020/services/catalog/catalog.service.mjs +185 -194
  38. package/esm2020/services/catalog/category.service.mjs +51 -51
  39. package/esm2020/services/catalog/enums/index.mjs +2 -2
  40. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -11
  41. package/esm2020/services/catalog/index.mjs +8 -8
  42. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -10
  43. package/esm2020/services/catalog/models/index.mjs +2 -2
  44. package/esm2020/services/catalog/types/index.mjs +2 -2
  45. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -2
  46. package/esm2020/services/catalog/wishlist.service.mjs +115 -115
  47. package/esm2020/services/checkout-subscription.service.mjs +53 -50
  48. package/esm2020/services/checkout.service.mjs +71 -68
  49. package/esm2020/services/coupon.service.mjs +235 -235
  50. package/esm2020/services/helpers/index.mjs +2 -2
  51. package/esm2020/services/helpers/util.helper.mjs +18 -18
  52. package/esm2020/services/home-shop.service.mjs +125 -125
  53. package/esm2020/services/index.mjs +11 -11
  54. package/esm2020/services/order.service.mjs +30 -30
  55. package/esm2020/services/shipping.service.mjs +96 -96
  56. package/esm2020/services/types/index.mjs +3 -3
  57. package/esm2020/services/types/required-checkout-data.type.mjs +2 -2
  58. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -2
  59. package/esm2020/services/types/shipping-methods.type.mjs +2 -2
  60. package/esm2020/types/firebase-app-config.type.mjs +2 -2
  61. package/esm2020/types/index.mjs +2 -2
  62. package/fesm2015/infrab4a-connect-angular.mjs +2313 -2337
  63. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
  64. package/fesm2020/infrab4a-connect-angular.mjs +2245 -2272
  65. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
  66. package/helpers/index.d.ts +1 -1
  67. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -3
  68. package/index.d.ts +5 -6
  69. package/package.json +2 -2
  70. package/services/auth.service.d.ts +18 -18
  71. package/services/cart.service.d.ts +42 -42
  72. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -4
  73. package/services/catalog/adapters/index.d.ts +3 -3
  74. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -12
  75. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -10
  76. package/services/catalog/catalog.service.d.ts +86 -86
  77. package/services/catalog/category.service.d.ts +20 -20
  78. package/services/catalog/enums/index.d.ts +1 -1
  79. package/services/catalog/enums/product-sorts.enum.d.ts +9 -9
  80. package/services/catalog/index.d.ts +7 -7
  81. package/services/catalog/models/category-with-tree.model.d.ts +4 -4
  82. package/services/catalog/models/index.d.ts +1 -1
  83. package/services/catalog/types/index.d.ts +1 -1
  84. package/services/catalog/types/product-sort.type.d.ts +2 -2
  85. package/services/catalog/wishlist.service.d.ts +38 -38
  86. package/services/checkout-subscription.service.d.ts +18 -19
  87. package/services/checkout.service.d.ts +23 -24
  88. package/services/coupon.service.d.ts +29 -29
  89. package/services/helpers/index.d.ts +1 -1
  90. package/services/helpers/util.helper.d.ts +3 -3
  91. package/services/home-shop.service.d.ts +26 -26
  92. package/services/index.d.ts +10 -10
  93. package/services/order.service.d.ts +13 -13
  94. package/services/shipping.service.d.ts +19 -19
  95. package/services/types/index.d.ts +2 -2
  96. package/services/types/required-checkout-data.type.d.ts +2 -2
  97. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  98. package/services/types/shipping-methods.type.d.ts +12 -12
  99. package/types/firebase-app-config.type.d.ts +1 -1
  100. package/types/index.d.ts +1 -1
  101. package/consts/persistence.const.d.ts +0 -1
  102. package/esm2020/consts/persistence.const.mjs +0 -2
  103. package/esm2020/persistence/cookie-data-persistence.mjs +0 -22
  104. package/esm2020/persistence/data-persistence.mjs +0 -2
  105. package/esm2020/persistence/index.mjs +0 -3
  106. package/persistence/cookie-data-persistence.d.ts +0 -10
  107. package/persistence/data-persistence.d.ts +0 -6
  108. package/persistence/index.d.ts +0 -2
@@ -1,502 +1,502 @@
1
- import { isPlatformBrowser, isPlatformServer } from '@angular/common';
2
- import { NgModule, PLATFORM_ID } from '@angular/core';
3
- import { FirebaseApp } from '@angular/fire/app';
4
- import { Firestore, getFirestore, initializeFirestore, memoryLocalCache, provideFirestore, } from '@angular/fire/firestore';
5
- import { Storage, getStorage, provideStorage } from '@angular/fire/storage';
6
- import { Buy2WinFirestoreRepository, CampaignDashboardFirestoreRepository, CampaignHashtagFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, FirebaseFileUploaderService, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ProductVariantFirestoreRepository, ShopMenuFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionSummaryFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
7
- import { AngularElasticSeachModule } from './angular-elastic-search.module';
8
- import { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts';
9
- import { STORAGE_BASE_URL } from './consts/storage-base-url.const';
10
- import { MobileOperationSystemCheckerHelper } from './helpers';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/fire/firestore";
13
- import * as i2 from "@angular/fire/storage";
14
- export class AngularFirestoreModule {
15
- static initializeApp(options, nameOrConfig) {
16
- return {
17
- ngModule: AngularFirestoreModule,
18
- providers: [
19
- { provide: FIREBASE_OPTIONS, useValue: options.firebase },
20
- { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
21
- { provide: ES_CONFIG, useValue: options.elasticSearch },
22
- ],
23
- };
24
- }
25
- }
26
- AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
- AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, imports: [AngularElasticSeachModule, i1.FirestoreModule, i2.StorageModule] });
28
- AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, providers: [
29
- {
30
- provide: 'FirestoreOptions',
31
- useFactory: (firestore, platformId) => ({
32
- firestore,
33
- interceptors: {
34
- request: (request) => {
35
- if (isPlatformBrowser(platformId))
36
- return request;
37
- const interval = setInterval(() => { }, 100);
38
- request.interval = interval;
39
- return request;
40
- },
41
- response: (response, request) => {
42
- if (isPlatformBrowser(platformId))
43
- return response;
44
- clearInterval(request.interval);
45
- return response;
46
- },
47
- },
48
- }),
49
- deps: [Firestore, PLATFORM_ID],
50
- },
51
- {
52
- provide: 'BeautyProfileRepository',
53
- useFactory: (config, userRepository) => {
54
- return new UserBeautyProfileFirestoreRepository(config, userRepository);
55
- },
56
- deps: ['FirestoreOptions', 'UserRepository'],
57
- },
58
- {
59
- provide: 'Buy2WinRepository',
60
- useFactory: (options) => {
61
- return new Buy2WinFirestoreRepository(options);
62
- },
63
- deps: ['FirestoreOptions'],
64
- },
65
- {
66
- provide: CategoryFirestoreRepository,
67
- useFactory: (options) => {
68
- return new CategoryFirestoreRepository(options);
69
- },
70
- deps: ['FirestoreOptions'],
71
- },
72
- {
73
- provide: 'CheckoutRepository',
74
- useFactory: (options) => {
75
- return new CheckoutFirestoreRepository(options);
76
- },
77
- deps: ['FirestoreOptions'],
78
- },
79
- {
80
- provide: 'CheckoutSubscriptionRepository',
81
- useFactory: (options) => {
82
- return new CheckoutSubscriptionFirestoreRepository(options);
83
- },
84
- deps: ['FirestoreOptions'],
85
- },
86
- {
87
- provide: 'CouponRepository',
88
- useFactory: (options) => {
89
- return new CouponFirestoreRepository(options);
90
- },
91
- deps: ['FirestoreOptions'],
92
- },
93
- {
94
- provide: 'CampaignHashtagRepository',
95
- useFactory: (options) => {
96
- return new CampaignHashtagFirestoreRepository(options);
97
- },
98
- deps: ['FirestoreOptions'],
99
- },
100
- {
101
- provide: 'CampaignDashboardRepository',
102
- useFactory: (options) => {
103
- return new CampaignDashboardFirestoreRepository(options);
104
- },
105
- deps: ['FirestoreOptions'],
106
- },
107
- {
108
- provide: 'EditionRepository',
109
- useFactory: (options, subscriptionRepository) => {
110
- return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
111
- },
112
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
113
- },
114
- {
115
- provide: 'HomeRepository',
116
- useFactory: (options) => {
117
- return new HomeFirestoreRepository(options);
118
- },
119
- deps: ['FirestoreOptions'],
120
- },
121
- {
122
- provide: 'LeadRepository',
123
- useFactory: (options) => {
124
- return new LeadFirestoreRepository(options);
125
- },
126
- deps: ['FirestoreOptions'],
127
- },
128
- {
129
- provide: 'LegacyOrderRepository',
130
- useFactory: (options) => {
131
- return new LegacyOrderFirestoreRepository(options);
132
- },
133
- deps: ['FirestoreOptions'],
134
- },
135
- {
136
- provide: 'ShopMenuRepository',
137
- useFactory: (options) => {
138
- return new ShopMenuFirestoreRepository(options);
139
- },
140
- deps: ['FirestoreOptions'],
141
- },
142
- {
143
- provide: 'OrderRepository',
144
- useFactory: (options) => {
145
- return new OrderFirestoreRepository(options);
146
- },
147
- deps: ['FirestoreOptions'],
148
- },
149
- {
150
- provide: 'PaymentRepository',
151
- useFactory: (options) => {
152
- return new PaymentFirestoreRepository(options);
153
- },
154
- deps: ['FirestoreOptions'],
155
- },
156
- {
157
- provide: ProductFirestoreRepository,
158
- useFactory: (options) => {
159
- return new ProductFirestoreRepository(options);
160
- },
161
- deps: ['FirestoreOptions'],
162
- },
163
- {
164
- provide: 'ShopSettingsRepository',
165
- useFactory: (options) => {
166
- return new ShopSettingsFirestoreRepository(options);
167
- },
168
- deps: ['FirestoreOptions'],
169
- },
170
- {
171
- provide: 'SubscriptionPaymentRepository',
172
- useFactory: (options, subscriptionRepository) => {
173
- return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
174
- },
175
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
176
- },
177
- {
178
- provide: 'SubscriptionPlanRepository',
179
- useFactory: (options) => {
180
- return new SubscriptionPlanFirestoreRepository(options);
181
- },
182
- deps: ['FirestoreOptions'],
183
- },
184
- {
185
- provide: 'SubscriptionProductRepository',
186
- useFactory: (options) => {
187
- return new SubscriptionProductFirestoreRepository(options);
188
- },
189
- deps: ['FirestoreOptions'],
190
- },
191
- {
192
- provide: 'SubscriptionRepository',
193
- useFactory: (options) => {
194
- return new SubscriptionFirestoreRepository(options);
195
- },
196
- deps: ['FirestoreOptions'],
197
- },
198
- {
199
- provide: 'UserRepository',
200
- useFactory: (options) => {
201
- return new UserFirestoreRepository(options);
202
- },
203
- deps: ['FirestoreOptions'],
204
- },
205
- {
206
- provide: 'UserAddressRepository',
207
- useFactory: (options, userRepository) => {
208
- return new UserAddressFirestoreRepository(options, userRepository);
209
- },
210
- deps: ['FirestoreOptions', 'UserRepository'],
211
- },
212
- {
213
- provide: 'UserPaymentMethodRepository',
214
- useFactory: (options, userRepository) => {
215
- return new UserPaymentMethodFirestoreRepository(options, userRepository);
216
- },
217
- deps: ['FirestoreOptions', 'UserRepository'],
218
- },
219
- {
220
- provide: 'SubscriptionMaterializationRepository',
221
- useFactory: (options) => {
222
- return new SubscriptionMaterializationFirestoreRepository(options);
223
- },
224
- deps: ['FirestoreOptions'],
225
- },
226
- {
227
- provide: 'SubscriptionSummaryRepository',
228
- useFactory: (options) => {
229
- return new SubscriptionSummaryFirestoreRepository(options);
230
- },
231
- deps: ['FirestoreOptions'],
232
- },
233
- {
234
- provide: ProductVariantFirestoreRepository,
235
- useFactory: (options, productRepository) => {
236
- return new ProductVariantFirestoreRepository(options, productRepository);
237
- },
238
- deps: ['FirestoreOptions', ProductFirestoreRepository],
239
- },
240
- {
241
- provide: 'FileUploaderService',
242
- useFactory: (storage, baseUrl) => {
243
- return new FirebaseFileUploaderService(storage, baseUrl);
244
- },
245
- deps: [Storage, STORAGE_BASE_URL],
246
- },
247
- ], imports: [AngularElasticSeachModule,
248
- provideFirestore((injector) => {
249
- const platformId = injector.get(PLATFORM_ID);
250
- if (isPlatformServer(platformId))
251
- return getFirestore(injector.get(FirebaseApp));
252
- if (!MobileOperationSystemCheckerHelper.isAppleDevice())
253
- return getFirestore(injector.get(FirebaseApp));
254
- const firestore = initializeFirestore(injector.get(FirebaseApp), {
255
- experimentalForceLongPolling: true,
256
- localCache: memoryLocalCache(),
257
- });
258
- return firestore;
259
- }),
260
- provideStorage(() => getStorage())] });
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, decorators: [{
262
- type: NgModule,
263
- args: [{
264
- imports: [
265
- AngularElasticSeachModule,
266
- provideFirestore((injector) => {
267
- const platformId = injector.get(PLATFORM_ID);
268
- if (isPlatformServer(platformId))
269
- return getFirestore(injector.get(FirebaseApp));
270
- if (!MobileOperationSystemCheckerHelper.isAppleDevice())
271
- return getFirestore(injector.get(FirebaseApp));
272
- const firestore = initializeFirestore(injector.get(FirebaseApp), {
273
- experimentalForceLongPolling: true,
274
- localCache: memoryLocalCache(),
275
- });
276
- return firestore;
277
- }),
278
- provideStorage(() => getStorage()),
279
- ],
280
- providers: [
281
- {
282
- provide: 'FirestoreOptions',
283
- useFactory: (firestore, platformId) => ({
284
- firestore,
285
- interceptors: {
286
- request: (request) => {
287
- if (isPlatformBrowser(platformId))
288
- return request;
289
- const interval = setInterval(() => { }, 100);
290
- request.interval = interval;
291
- return request;
292
- },
293
- response: (response, request) => {
294
- if (isPlatformBrowser(platformId))
295
- return response;
296
- clearInterval(request.interval);
297
- return response;
298
- },
299
- },
300
- }),
301
- deps: [Firestore, PLATFORM_ID],
302
- },
303
- {
304
- provide: 'BeautyProfileRepository',
305
- useFactory: (config, userRepository) => {
306
- return new UserBeautyProfileFirestoreRepository(config, userRepository);
307
- },
308
- deps: ['FirestoreOptions', 'UserRepository'],
309
- },
310
- {
311
- provide: 'Buy2WinRepository',
312
- useFactory: (options) => {
313
- return new Buy2WinFirestoreRepository(options);
314
- },
315
- deps: ['FirestoreOptions'],
316
- },
317
- {
318
- provide: CategoryFirestoreRepository,
319
- useFactory: (options) => {
320
- return new CategoryFirestoreRepository(options);
321
- },
322
- deps: ['FirestoreOptions'],
323
- },
324
- {
325
- provide: 'CheckoutRepository',
326
- useFactory: (options) => {
327
- return new CheckoutFirestoreRepository(options);
328
- },
329
- deps: ['FirestoreOptions'],
330
- },
331
- {
332
- provide: 'CheckoutSubscriptionRepository',
333
- useFactory: (options) => {
334
- return new CheckoutSubscriptionFirestoreRepository(options);
335
- },
336
- deps: ['FirestoreOptions'],
337
- },
338
- {
339
- provide: 'CouponRepository',
340
- useFactory: (options) => {
341
- return new CouponFirestoreRepository(options);
342
- },
343
- deps: ['FirestoreOptions'],
344
- },
345
- {
346
- provide: 'CampaignHashtagRepository',
347
- useFactory: (options) => {
348
- return new CampaignHashtagFirestoreRepository(options);
349
- },
350
- deps: ['FirestoreOptions'],
351
- },
352
- {
353
- provide: 'CampaignDashboardRepository',
354
- useFactory: (options) => {
355
- return new CampaignDashboardFirestoreRepository(options);
356
- },
357
- deps: ['FirestoreOptions'],
358
- },
359
- {
360
- provide: 'EditionRepository',
361
- useFactory: (options, subscriptionRepository) => {
362
- return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
363
- },
364
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
365
- },
366
- {
367
- provide: 'HomeRepository',
368
- useFactory: (options) => {
369
- return new HomeFirestoreRepository(options);
370
- },
371
- deps: ['FirestoreOptions'],
372
- },
373
- {
374
- provide: 'LeadRepository',
375
- useFactory: (options) => {
376
- return new LeadFirestoreRepository(options);
377
- },
378
- deps: ['FirestoreOptions'],
379
- },
380
- {
381
- provide: 'LegacyOrderRepository',
382
- useFactory: (options) => {
383
- return new LegacyOrderFirestoreRepository(options);
384
- },
385
- deps: ['FirestoreOptions'],
386
- },
387
- {
388
- provide: 'ShopMenuRepository',
389
- useFactory: (options) => {
390
- return new ShopMenuFirestoreRepository(options);
391
- },
392
- deps: ['FirestoreOptions'],
393
- },
394
- {
395
- provide: 'OrderRepository',
396
- useFactory: (options) => {
397
- return new OrderFirestoreRepository(options);
398
- },
399
- deps: ['FirestoreOptions'],
400
- },
401
- {
402
- provide: 'PaymentRepository',
403
- useFactory: (options) => {
404
- return new PaymentFirestoreRepository(options);
405
- },
406
- deps: ['FirestoreOptions'],
407
- },
408
- {
409
- provide: ProductFirestoreRepository,
410
- useFactory: (options) => {
411
- return new ProductFirestoreRepository(options);
412
- },
413
- deps: ['FirestoreOptions'],
414
- },
415
- {
416
- provide: 'ShopSettingsRepository',
417
- useFactory: (options) => {
418
- return new ShopSettingsFirestoreRepository(options);
419
- },
420
- deps: ['FirestoreOptions'],
421
- },
422
- {
423
- provide: 'SubscriptionPaymentRepository',
424
- useFactory: (options, subscriptionRepository) => {
425
- return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
426
- },
427
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
428
- },
429
- {
430
- provide: 'SubscriptionPlanRepository',
431
- useFactory: (options) => {
432
- return new SubscriptionPlanFirestoreRepository(options);
433
- },
434
- deps: ['FirestoreOptions'],
435
- },
436
- {
437
- provide: 'SubscriptionProductRepository',
438
- useFactory: (options) => {
439
- return new SubscriptionProductFirestoreRepository(options);
440
- },
441
- deps: ['FirestoreOptions'],
442
- },
443
- {
444
- provide: 'SubscriptionRepository',
445
- useFactory: (options) => {
446
- return new SubscriptionFirestoreRepository(options);
447
- },
448
- deps: ['FirestoreOptions'],
449
- },
450
- {
451
- provide: 'UserRepository',
452
- useFactory: (options) => {
453
- return new UserFirestoreRepository(options);
454
- },
455
- deps: ['FirestoreOptions'],
456
- },
457
- {
458
- provide: 'UserAddressRepository',
459
- useFactory: (options, userRepository) => {
460
- return new UserAddressFirestoreRepository(options, userRepository);
461
- },
462
- deps: ['FirestoreOptions', 'UserRepository'],
463
- },
464
- {
465
- provide: 'UserPaymentMethodRepository',
466
- useFactory: (options, userRepository) => {
467
- return new UserPaymentMethodFirestoreRepository(options, userRepository);
468
- },
469
- deps: ['FirestoreOptions', 'UserRepository'],
470
- },
471
- {
472
- provide: 'SubscriptionMaterializationRepository',
473
- useFactory: (options) => {
474
- return new SubscriptionMaterializationFirestoreRepository(options);
475
- },
476
- deps: ['FirestoreOptions'],
477
- },
478
- {
479
- provide: 'SubscriptionSummaryRepository',
480
- useFactory: (options) => {
481
- return new SubscriptionSummaryFirestoreRepository(options);
482
- },
483
- deps: ['FirestoreOptions'],
484
- },
485
- {
486
- provide: ProductVariantFirestoreRepository,
487
- useFactory: (options, productRepository) => {
488
- return new ProductVariantFirestoreRepository(options, productRepository);
489
- },
490
- deps: ['FirestoreOptions', ProductFirestoreRepository],
491
- },
492
- {
493
- provide: 'FileUploaderService',
494
- useFactory: (storage, baseUrl) => {
495
- return new FirebaseFileUploaderService(storage, baseUrl);
496
- },
497
- deps: [Storage, STORAGE_BASE_URL],
498
- },
499
- ],
500
- }]
501
- }] });
502
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDckUsT0FBTyxFQUFpQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sbUJBQW1CLENBQUE7QUFDaEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBR0wsMEJBQTBCLEVBRTFCLG9DQUFvQyxFQUVwQyxrQ0FBa0MsRUFFbEMsMkJBQTJCLEVBRTNCLDJCQUEyQixFQUUzQix1Q0FBdUMsRUFFdkMseUJBQXlCLEVBR3pCLDJCQUEyQixFQUczQix1QkFBdUIsRUFFdkIsdUJBQXVCLEVBRXZCLDhCQUE4QixFQUU5Qix3QkFBd0IsRUFFeEIsMEJBQTBCLEVBRTFCLDBCQUEwQixFQUUxQixpQ0FBaUMsRUFDakMsMkJBQTJCLEVBRTNCLCtCQUErQixFQUUvQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLDhDQUE4QyxFQUU5QyxzQ0FBc0MsRUFFdEMsbUNBQW1DLEVBRW5DLHNDQUFzQyxFQUd0QyxzQ0FBc0MsRUFFdEMsOEJBQThCLEVBRTlCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIsb0NBQW9DLEdBSXJDLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLHlCQUF5QixFQUFF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eUMsRUFBRTtnQ0FDL0UsT0FBTyxJQUFJLDhDQUE4QyxDQUFDLE9BQU8sQ0FBQyxDQUFBOzRCQUNwRSxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO3lCQUMzQjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxVQUFVLEVBQUUsQ0FBQyxPQUF5QixFQUFpQyxFQUFFO2dDQUN2RSxPQUFPLElBQUksc0NBQXNDLENBQUMsT0FBTyxDQUFDLENBQUE7NEJBQzVELENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUM7eUJBQzNCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxpQ0FBaUM7NEJBQzFDLFVBQVUsRUFBRSxDQUFDLE9BQXlCLEVBQUUsaUJBQTZDLEVBQXFCLEVBQUU7Z0NBQzFHLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTs0QkFDMUUsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSwwQkFBMEIsQ0FBQzt5QkFDdkQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsVUFBVSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsRUFBRTtnQ0FDaEQsT0FBTyxJQUFJLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTs0QkFDMUQsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7eUJBQ2xDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZpcmViYXNlQXBwLCBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCdcbmltcG9ydCB7XG4gIEZpcmVzdG9yZSxcbiAgZ2V0RmlyZXN0b3JlLFxuICBpbml0aWFsaXplRmlyZXN0b3JlLFxuICBtZW1vcnlMb2NhbENhY2hlLFxuICBwcm92aWRlRmlyZXN0b3JlLFxufSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSdcbmltcG9ydCB7IFN0b3JhZ2UsIGdldFN0b3JhZ2UsIHByb3ZpZGVTdG9yYWdlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9zdG9yYWdlJ1xuaW1wb3J0IHtcbiAgQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnLFxuICBCZWF1dHlQcm9maWxlUmVwb3NpdG9yeSxcbiAgQnV5MldpbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5SZXBvc2l0b3J5LFxuICBDYW1wYWlnbkRhc2hib2FyZEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENhbXBhaWduRGFzaGJvYXJkUmVwb3NpdG9yeSxcbiAgQ2FtcGFpZ25IYXNodGFnRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2FtcGFpZ25IYXNodGFnUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ291cG9uUmVwb3NpdG9yeSxcbiAgRWRpdGlvblJlcG9zaXRvcnksXG4gIEZpcmViYXNlRmlsZVVwbG9hZGVyU2VydmljZSxcbiAgRmlyZXN0b3JlQ29uc3RydWN0b3JQYXJhbXMsXG4gIEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXMsXG4gIEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBIb21lUmVwb3NpdG9yeSxcbiAgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExlYWRSZXBvc2l0b3J5LFxuICBMZWdhY3lPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExlZ2FjeU9yZGVyUmVwb3NpdG9yeSxcbiAgT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBPcmRlclJlcG9zaXRvcnksXG4gIFBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBQYXltZW50UmVwb3NpdG9yeSxcbiAgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU2hvcE1lbnVSZXBvc2l0b3J5LFxuICBTaG9wU2V0dGluZ3NGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTaG9wU2V0dGluZ3NSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uU3VtbWFyeUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblN1bW1hcnlSZXBvc2l0b3J5LFxuICBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJBZGRyZXNzUmVwb3NpdG9yeSxcbiAgVXNlckJlYXV0eVByb2ZpbGVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnksXG4gIFVzZXJSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXItZWxhc3RpYy1zZWFyY2gubW9kdWxlJ1xuaW1wb3J0IHsgRVNfQ09ORklHLCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RzJ1xuaW1wb3J0IHsgU1RPUkFHRV9CQVNFX1VSTCB9IGZyb20gJy4vY29uc3RzL3N0b3JhZ2UtYmFzZS11cmwuY29uc3QnXG5pbXBvcnQgeyBNb2JpbGVPcGVyYXRpb25TeXN0ZW1DaGVja2VySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBGaXJlc3RvcmVPcHRpb25zID0gUGljazxGaXJlc3RvcmVDb25zdHJ1Y3RvclBhcmFtczxhbnk+LCAnZmlyZXN0b3JlJyB8ICdpbnRlcmNlcHRvcnMnPlxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQW5ndWxhckVsYXN0aWNTZWFjaE1vZHVsZSxcbiAgICBwcm92aWRlRmlyZXN0b3JlKChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgIGNvbnN0IHBsYXRmb3JtSWQgPSBpbmplY3Rvci5nZXQoUExBVEZPUk1fSUQpXG5cbiAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKSByZXR1cm4gZ2V0RmlyZXN0b3JlKGluamVjdG9yLmdldChGaXJlYmFzZUFwcCkpXG4gICAgICBpZiAoIU1vYmlsZU9wZXJhdGlvblN5c3RlbUNoZWNrZXJIZWxwZXIuaXNBcHBsZURldmljZSgpKSByZXR1cm4gZ2V0RmlyZXN0b3JlKGluamVjdG9yLmdldChGaXJlYmFzZUFwcCkpXG5cbiAgICAgIGNvbnN0IGZpcmVzdG9yZSA9IGluaXRpYWxpemVGaXJlc3RvcmUoaW5qZWN0b3IuZ2V0KEZpcmViYXNlQXBwKSwge1xuICAgICAgICBleHBlcmltZW50YWxGb3JjZUxvbmdQb2xsaW5nOiB0cnVlLFxuICAgICAgICBsb2NhbENhY2hlOiBtZW1vcnlMb2NhbENhY2hlKCksXG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gZmlyZXN0b3JlXG4gICAgfSksXG4gICAgcHJvdmlkZVN0b3JhZ2UoKCkgPT4gZ2V0U3RvcmFnZSgpKSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0ZpcmVzdG9yZU9wdGlvbnMnLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogRmlyZXN0b3JlLCBwbGF0Zm9ybUlkOiBzdHJpbmcpOiBGaXJlc3RvcmVPcHRpb25zID0+ICh7XG4gICAgICAgIGZpcmVzdG9yZSxcbiAgICAgICAgaW50ZXJjZXB0b3JzOiB7XG4gICAgICAgICAgcmVxdWVzdDogKHJlcXVlc3Q6IEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXM8YW55PiAmIHsgaW50ZXJ2YWw6IE5vZGVKUy5UaW1lb3V0IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkgcmV0dXJuIHJlcXVlc3RcblxuICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7fSwgMTAwKVxuXG4gICAgICAgICAgICByZXF1ZXN0LmludGVydmFsID0gaW50ZXJ2YWxcblxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlOiAoXG4gICAgICAgICAgICByZXNwb25zZTogYW55LFxuICAgICAgICAgICAgcmVxdWVzdDogRmlyZXN0b3JlSW50ZXJ0Y2VwdG9yUmVxdWVzdFBhcmFtczxhbnk+ICYgeyBpbnRlcnZhbDogTm9kZUpTLlRpbWVvdXQgfSxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkgcmV0dXJuIHJlc3BvbnNlXG5cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVxdWVzdC5pbnRlcnZhbClcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgZGVwczogW0ZpcmVzdG9yZSwgUExBVEZPUk1fSURdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0JlYXV0eVByb2ZpbGVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChjb25maWc6IEZpcmVzdG9yZU9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IEJlYXV0eVByb2ZpbGVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQmVhdXR5UHJvZmlsZUZpcmVzdG9yZVJlcG9zaXRvcnkoY29uZmlnLCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCdXkyV2luUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IEJ1eTJXaW5SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDYXRlZ29yeVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NoZWNrb3V0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENoZWNrb3V0UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hlY2tvdXRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDb3Vwb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ291cG9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDYW1wYWlnbkhhc2h0YWdSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW1wYWlnbkhhc2h0YWdGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2FtcGFpZ25EYXNoYm9hcmRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ2FtcGFpZ25EYXNoYm9hcmRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW1wYWlnbkRhc2hib2FyZEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdFZGl0aW9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBFZGl0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRWRpdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0hvbWVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogSG9tZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnTGVhZFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBMZWFkUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdMZWdhY3lPcmRlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBMZWdhY3lPcmRlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IExlZ2FjeU9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1Nob3BNZW51UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFNob3BNZW51UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnT3JkZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogT3JkZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdQYXltZW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFBheW1lbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1Nob3BTZXR0aW5nc1JlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTaG9wU2V0dGluZ3NSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaG9wU2V0dGluZ3NGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zLFxuICAgICAgICBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgKTogU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMsIHN1YnNjcmlwdGlvblJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJywgJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFN1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdVc2VyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFVzZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJBZGRyZXNzUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucywgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KTogVXNlckFkZHJlc3NSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgdXNlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJywgJ1VzZXJSZXBvc2l0b3J5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblN1bW1hcnlSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uU3VtbWFyeVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblN1bW1hcnlGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucywgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCBwcm9kdWN0UmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRmlsZVVwbG9hZGVyU2VydmljZScsXG4gICAgICB1c2VGYWN0b3J5OiAoc3RvcmFnZTogU3RvcmFnZSwgYmFzZVVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRmlyZWJhc2VGaWxlVXBsb2FkZXJTZXJ2aWNlKHN0b3JhZ2UsIGJhc2VVcmwpXG4gICAgICB9LFxuICAgICAgZGVwczogW1N0b3JhZ2UsIFNUT1JBR0VfQkFTRV9VUkxdLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUge1xuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcbiAgICBvcHRpb25zOiB7XG4gICAgICBmaXJlYmFzZTogRmlyZWJhc2VPcHRpb25zXG4gICAgICBlbGFzdGljU2VhcmNoOiBBeGlvc0VsYXN0aWNTZWFyY2hDb25maWdcbiAgICB9LFxuICAgIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnLFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucy5maXJlYmFzZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRVNfQ09ORklHLCB1c2VWYWx1ZTogb3B0aW9ucy5lbGFzdGljU2VhcmNoIH0sXG4gICAgICBdLFxuICAgIH1cbiAgfVxufVxuIl19
1
+ import { isPlatformBrowser, isPlatformServer } from '@angular/common';
2
+ import { NgModule, PLATFORM_ID } from '@angular/core';
3
+ import { FirebaseApp } from '@angular/fire/app';
4
+ import { Firestore, getFirestore, initializeFirestore, memoryLocalCache, provideFirestore, } from '@angular/fire/firestore';
5
+ import { Storage, getStorage, provideStorage } from '@angular/fire/storage';
6
+ import { Buy2WinFirestoreRepository, CampaignDashboardFirestoreRepository, CampaignHashtagFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, ConnectFirestoreService, CouponFirestoreRepository, FirebaseFileUploaderService, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ProductVariantFirestoreRepository, ShopMenuFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionSummaryFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
7
+ import { AngularElasticSeachModule } from './angular-elastic-search.module';
8
+ import { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts';
9
+ import { STORAGE_BASE_URL } from './consts/storage-base-url.const';
10
+ import { MobileOperationSystemCheckerHelper } from './helpers';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/fire/firestore";
13
+ import * as i2 from "@angular/fire/storage";
14
+ export class AngularFirestoreModule {
15
+ static initializeApp(options, nameOrConfig) {
16
+ return {
17
+ ngModule: AngularFirestoreModule,
18
+ providers: [
19
+ { provide: FIREBASE_OPTIONS, useValue: options.firebase },
20
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
21
+ { provide: ES_CONFIG, useValue: options.elasticSearch },
22
+ ],
23
+ };
24
+ }
25
+ }
26
+ AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
+ AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, imports: [AngularElasticSeachModule, i1.FirestoreModule, i2.StorageModule] });
28
+ AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, providers: [
29
+ {
30
+ provide: 'FirestoreOptions',
31
+ useFactory: (firestore, platformId) => ({
32
+ firestore: new ConnectFirestoreService(firestore),
33
+ interceptors: {
34
+ request: (request) => {
35
+ if (isPlatformBrowser(platformId))
36
+ return request;
37
+ const interval = setInterval(() => { }, 100);
38
+ request.interval = interval;
39
+ return request;
40
+ },
41
+ response: (response, request) => {
42
+ if (isPlatformBrowser(platformId))
43
+ return response;
44
+ clearInterval(request.interval);
45
+ return response;
46
+ },
47
+ },
48
+ }),
49
+ deps: [Firestore, PLATFORM_ID],
50
+ },
51
+ {
52
+ provide: 'BeautyProfileRepository',
53
+ useFactory: (config, userRepository) => {
54
+ return new UserBeautyProfileFirestoreRepository(config, userRepository);
55
+ },
56
+ deps: ['FirestoreOptions', 'UserRepository'],
57
+ },
58
+ {
59
+ provide: 'Buy2WinRepository',
60
+ useFactory: (options) => {
61
+ return new Buy2WinFirestoreRepository(options);
62
+ },
63
+ deps: ['FirestoreOptions'],
64
+ },
65
+ {
66
+ provide: CategoryFirestoreRepository,
67
+ useFactory: (options) => {
68
+ return new CategoryFirestoreRepository(options);
69
+ },
70
+ deps: ['FirestoreOptions'],
71
+ },
72
+ {
73
+ provide: 'CheckoutRepository',
74
+ useFactory: (options) => {
75
+ return new CheckoutFirestoreRepository(options);
76
+ },
77
+ deps: ['FirestoreOptions'],
78
+ },
79
+ {
80
+ provide: 'CheckoutSubscriptionRepository',
81
+ useFactory: (options) => {
82
+ return new CheckoutSubscriptionFirestoreRepository(options);
83
+ },
84
+ deps: ['FirestoreOptions'],
85
+ },
86
+ {
87
+ provide: 'CouponRepository',
88
+ useFactory: (options) => {
89
+ return new CouponFirestoreRepository(options);
90
+ },
91
+ deps: ['FirestoreOptions'],
92
+ },
93
+ {
94
+ provide: 'CampaignHashtagRepository',
95
+ useFactory: (options) => {
96
+ return new CampaignHashtagFirestoreRepository(options);
97
+ },
98
+ deps: ['FirestoreOptions'],
99
+ },
100
+ {
101
+ provide: 'CampaignDashboardRepository',
102
+ useFactory: (options) => {
103
+ return new CampaignDashboardFirestoreRepository(options);
104
+ },
105
+ deps: ['FirestoreOptions'],
106
+ },
107
+ {
108
+ provide: 'EditionRepository',
109
+ useFactory: (options, subscriptionRepository) => {
110
+ return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
111
+ },
112
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
113
+ },
114
+ {
115
+ provide: 'HomeRepository',
116
+ useFactory: (options) => {
117
+ return new HomeFirestoreRepository(options);
118
+ },
119
+ deps: ['FirestoreOptions'],
120
+ },
121
+ {
122
+ provide: 'LeadRepository',
123
+ useFactory: (options) => {
124
+ return new LeadFirestoreRepository(options);
125
+ },
126
+ deps: ['FirestoreOptions'],
127
+ },
128
+ {
129
+ provide: 'LegacyOrderRepository',
130
+ useFactory: (options) => {
131
+ return new LegacyOrderFirestoreRepository(options);
132
+ },
133
+ deps: ['FirestoreOptions'],
134
+ },
135
+ {
136
+ provide: 'ShopMenuRepository',
137
+ useFactory: (options) => {
138
+ return new ShopMenuFirestoreRepository(options);
139
+ },
140
+ deps: ['FirestoreOptions'],
141
+ },
142
+ {
143
+ provide: 'OrderRepository',
144
+ useFactory: (options) => {
145
+ return new OrderFirestoreRepository(options);
146
+ },
147
+ deps: ['FirestoreOptions'],
148
+ },
149
+ {
150
+ provide: 'PaymentRepository',
151
+ useFactory: (options) => {
152
+ return new PaymentFirestoreRepository(options);
153
+ },
154
+ deps: ['FirestoreOptions'],
155
+ },
156
+ {
157
+ provide: ProductFirestoreRepository,
158
+ useFactory: (options) => {
159
+ return new ProductFirestoreRepository(options);
160
+ },
161
+ deps: ['FirestoreOptions'],
162
+ },
163
+ {
164
+ provide: 'ShopSettingsRepository',
165
+ useFactory: (options) => {
166
+ return new ShopSettingsFirestoreRepository(options);
167
+ },
168
+ deps: ['FirestoreOptions'],
169
+ },
170
+ {
171
+ provide: 'SubscriptionPaymentRepository',
172
+ useFactory: (options, subscriptionRepository) => {
173
+ return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
174
+ },
175
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
176
+ },
177
+ {
178
+ provide: 'SubscriptionPlanRepository',
179
+ useFactory: (options) => {
180
+ return new SubscriptionPlanFirestoreRepository(options);
181
+ },
182
+ deps: ['FirestoreOptions'],
183
+ },
184
+ {
185
+ provide: 'SubscriptionProductRepository',
186
+ useFactory: (options) => {
187
+ return new SubscriptionProductFirestoreRepository(options);
188
+ },
189
+ deps: ['FirestoreOptions'],
190
+ },
191
+ {
192
+ provide: 'SubscriptionRepository',
193
+ useFactory: (options) => {
194
+ return new SubscriptionFirestoreRepository(options);
195
+ },
196
+ deps: ['FirestoreOptions'],
197
+ },
198
+ {
199
+ provide: 'UserRepository',
200
+ useFactory: (options) => {
201
+ return new UserFirestoreRepository(options);
202
+ },
203
+ deps: ['FirestoreOptions'],
204
+ },
205
+ {
206
+ provide: 'UserAddressRepository',
207
+ useFactory: (options, userRepository) => {
208
+ return new UserAddressFirestoreRepository(options, userRepository);
209
+ },
210
+ deps: ['FirestoreOptions', 'UserRepository'],
211
+ },
212
+ {
213
+ provide: 'UserPaymentMethodRepository',
214
+ useFactory: (options, userRepository) => {
215
+ return new UserPaymentMethodFirestoreRepository(options, userRepository);
216
+ },
217
+ deps: ['FirestoreOptions', 'UserRepository'],
218
+ },
219
+ {
220
+ provide: 'SubscriptionMaterializationRepository',
221
+ useFactory: (options) => {
222
+ return new SubscriptionMaterializationFirestoreRepository(options);
223
+ },
224
+ deps: ['FirestoreOptions'],
225
+ },
226
+ {
227
+ provide: 'SubscriptionSummaryRepository',
228
+ useFactory: (options) => {
229
+ return new SubscriptionSummaryFirestoreRepository(options);
230
+ },
231
+ deps: ['FirestoreOptions'],
232
+ },
233
+ {
234
+ provide: ProductVariantFirestoreRepository,
235
+ useFactory: (options, productRepository) => {
236
+ return new ProductVariantFirestoreRepository(options, productRepository);
237
+ },
238
+ deps: ['FirestoreOptions', ProductFirestoreRepository],
239
+ },
240
+ {
241
+ provide: 'FileUploaderService',
242
+ useFactory: (storage, baseUrl) => {
243
+ return new FirebaseFileUploaderService(storage, baseUrl);
244
+ },
245
+ deps: [Storage, STORAGE_BASE_URL],
246
+ },
247
+ ], imports: [AngularElasticSeachModule,
248
+ provideFirestore((injector) => {
249
+ const platformId = injector.get(PLATFORM_ID);
250
+ if (isPlatformServer(platformId))
251
+ return getFirestore(injector.get(FirebaseApp));
252
+ if (!MobileOperationSystemCheckerHelper.isAppleDevice())
253
+ return getFirestore(injector.get(FirebaseApp));
254
+ const firestore = initializeFirestore(injector.get(FirebaseApp), {
255
+ experimentalForceLongPolling: true,
256
+ localCache: memoryLocalCache(),
257
+ });
258
+ return firestore;
259
+ }),
260
+ provideStorage(() => getStorage())] });
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, decorators: [{
262
+ type: NgModule,
263
+ args: [{
264
+ imports: [
265
+ AngularElasticSeachModule,
266
+ provideFirestore((injector) => {
267
+ const platformId = injector.get(PLATFORM_ID);
268
+ if (isPlatformServer(platformId))
269
+ return getFirestore(injector.get(FirebaseApp));
270
+ if (!MobileOperationSystemCheckerHelper.isAppleDevice())
271
+ return getFirestore(injector.get(FirebaseApp));
272
+ const firestore = initializeFirestore(injector.get(FirebaseApp), {
273
+ experimentalForceLongPolling: true,
274
+ localCache: memoryLocalCache(),
275
+ });
276
+ return firestore;
277
+ }),
278
+ provideStorage(() => getStorage()),
279
+ ],
280
+ providers: [
281
+ {
282
+ provide: 'FirestoreOptions',
283
+ useFactory: (firestore, platformId) => ({
284
+ firestore: new ConnectFirestoreService(firestore),
285
+ interceptors: {
286
+ request: (request) => {
287
+ if (isPlatformBrowser(platformId))
288
+ return request;
289
+ const interval = setInterval(() => { }, 100);
290
+ request.interval = interval;
291
+ return request;
292
+ },
293
+ response: (response, request) => {
294
+ if (isPlatformBrowser(platformId))
295
+ return response;
296
+ clearInterval(request.interval);
297
+ return response;
298
+ },
299
+ },
300
+ }),
301
+ deps: [Firestore, PLATFORM_ID],
302
+ },
303
+ {
304
+ provide: 'BeautyProfileRepository',
305
+ useFactory: (config, userRepository) => {
306
+ return new UserBeautyProfileFirestoreRepository(config, userRepository);
307
+ },
308
+ deps: ['FirestoreOptions', 'UserRepository'],
309
+ },
310
+ {
311
+ provide: 'Buy2WinRepository',
312
+ useFactory: (options) => {
313
+ return new Buy2WinFirestoreRepository(options);
314
+ },
315
+ deps: ['FirestoreOptions'],
316
+ },
317
+ {
318
+ provide: CategoryFirestoreRepository,
319
+ useFactory: (options) => {
320
+ return new CategoryFirestoreRepository(options);
321
+ },
322
+ deps: ['FirestoreOptions'],
323
+ },
324
+ {
325
+ provide: 'CheckoutRepository',
326
+ useFactory: (options) => {
327
+ return new CheckoutFirestoreRepository(options);
328
+ },
329
+ deps: ['FirestoreOptions'],
330
+ },
331
+ {
332
+ provide: 'CheckoutSubscriptionRepository',
333
+ useFactory: (options) => {
334
+ return new CheckoutSubscriptionFirestoreRepository(options);
335
+ },
336
+ deps: ['FirestoreOptions'],
337
+ },
338
+ {
339
+ provide: 'CouponRepository',
340
+ useFactory: (options) => {
341
+ return new CouponFirestoreRepository(options);
342
+ },
343
+ deps: ['FirestoreOptions'],
344
+ },
345
+ {
346
+ provide: 'CampaignHashtagRepository',
347
+ useFactory: (options) => {
348
+ return new CampaignHashtagFirestoreRepository(options);
349
+ },
350
+ deps: ['FirestoreOptions'],
351
+ },
352
+ {
353
+ provide: 'CampaignDashboardRepository',
354
+ useFactory: (options) => {
355
+ return new CampaignDashboardFirestoreRepository(options);
356
+ },
357
+ deps: ['FirestoreOptions'],
358
+ },
359
+ {
360
+ provide: 'EditionRepository',
361
+ useFactory: (options, subscriptionRepository) => {
362
+ return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
363
+ },
364
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
365
+ },
366
+ {
367
+ provide: 'HomeRepository',
368
+ useFactory: (options) => {
369
+ return new HomeFirestoreRepository(options);
370
+ },
371
+ deps: ['FirestoreOptions'],
372
+ },
373
+ {
374
+ provide: 'LeadRepository',
375
+ useFactory: (options) => {
376
+ return new LeadFirestoreRepository(options);
377
+ },
378
+ deps: ['FirestoreOptions'],
379
+ },
380
+ {
381
+ provide: 'LegacyOrderRepository',
382
+ useFactory: (options) => {
383
+ return new LegacyOrderFirestoreRepository(options);
384
+ },
385
+ deps: ['FirestoreOptions'],
386
+ },
387
+ {
388
+ provide: 'ShopMenuRepository',
389
+ useFactory: (options) => {
390
+ return new ShopMenuFirestoreRepository(options);
391
+ },
392
+ deps: ['FirestoreOptions'],
393
+ },
394
+ {
395
+ provide: 'OrderRepository',
396
+ useFactory: (options) => {
397
+ return new OrderFirestoreRepository(options);
398
+ },
399
+ deps: ['FirestoreOptions'],
400
+ },
401
+ {
402
+ provide: 'PaymentRepository',
403
+ useFactory: (options) => {
404
+ return new PaymentFirestoreRepository(options);
405
+ },
406
+ deps: ['FirestoreOptions'],
407
+ },
408
+ {
409
+ provide: ProductFirestoreRepository,
410
+ useFactory: (options) => {
411
+ return new ProductFirestoreRepository(options);
412
+ },
413
+ deps: ['FirestoreOptions'],
414
+ },
415
+ {
416
+ provide: 'ShopSettingsRepository',
417
+ useFactory: (options) => {
418
+ return new ShopSettingsFirestoreRepository(options);
419
+ },
420
+ deps: ['FirestoreOptions'],
421
+ },
422
+ {
423
+ provide: 'SubscriptionPaymentRepository',
424
+ useFactory: (options, subscriptionRepository) => {
425
+ return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
426
+ },
427
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
428
+ },
429
+ {
430
+ provide: 'SubscriptionPlanRepository',
431
+ useFactory: (options) => {
432
+ return new SubscriptionPlanFirestoreRepository(options);
433
+ },
434
+ deps: ['FirestoreOptions'],
435
+ },
436
+ {
437
+ provide: 'SubscriptionProductRepository',
438
+ useFactory: (options) => {
439
+ return new SubscriptionProductFirestoreRepository(options);
440
+ },
441
+ deps: ['FirestoreOptions'],
442
+ },
443
+ {
444
+ provide: 'SubscriptionRepository',
445
+ useFactory: (options) => {
446
+ return new SubscriptionFirestoreRepository(options);
447
+ },
448
+ deps: ['FirestoreOptions'],
449
+ },
450
+ {
451
+ provide: 'UserRepository',
452
+ useFactory: (options) => {
453
+ return new UserFirestoreRepository(options);
454
+ },
455
+ deps: ['FirestoreOptions'],
456
+ },
457
+ {
458
+ provide: 'UserAddressRepository',
459
+ useFactory: (options, userRepository) => {
460
+ return new UserAddressFirestoreRepository(options, userRepository);
461
+ },
462
+ deps: ['FirestoreOptions', 'UserRepository'],
463
+ },
464
+ {
465
+ provide: 'UserPaymentMethodRepository',
466
+ useFactory: (options, userRepository) => {
467
+ return new UserPaymentMethodFirestoreRepository(options, userRepository);
468
+ },
469
+ deps: ['FirestoreOptions', 'UserRepository'],
470
+ },
471
+ {
472
+ provide: 'SubscriptionMaterializationRepository',
473
+ useFactory: (options) => {
474
+ return new SubscriptionMaterializationFirestoreRepository(options);
475
+ },
476
+ deps: ['FirestoreOptions'],
477
+ },
478
+ {
479
+ provide: 'SubscriptionSummaryRepository',
480
+ useFactory: (options) => {
481
+ return new SubscriptionSummaryFirestoreRepository(options);
482
+ },
483
+ deps: ['FirestoreOptions'],
484
+ },
485
+ {
486
+ provide: ProductVariantFirestoreRepository,
487
+ useFactory: (options, productRepository) => {
488
+ return new ProductVariantFirestoreRepository(options, productRepository);
489
+ },
490
+ deps: ['FirestoreOptions', ProductFirestoreRepository],
491
+ },
492
+ {
493
+ provide: 'FileUploaderService',
494
+ useFactory: (storage, baseUrl) => {
495
+ return new FirebaseFileUploaderService(storage, baseUrl);
496
+ },
497
+ deps: [Storage, STORAGE_BASE_URL],
498
+ },
499
+ ],
500
+ }]
501
+ }] });
502
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDckUsT0FBTyxFQUFpQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sbUJBQW1CLENBQUE7QUFDaEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBR0wsMEJBQTBCLEVBRTFCLG9DQUFvQyxFQUVwQyxrQ0FBa0MsRUFFbEMsMkJBQTJCLEVBRTNCLDJCQUEyQixFQUUzQix1Q0FBdUMsRUFFdkMsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUd6QiwyQkFBMkIsRUFHM0IsdUJBQXVCLEVBRXZCLHVCQUF1QixFQUV2Qiw4QkFBOEIsRUFFOUIsd0JBQXdCLEVBRXhCLDBCQUEwQixFQUUxQiwwQkFBMEIsRUFFMUIsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUUzQiwrQkFBK0IsRUFFL0Isc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQiw4Q0FBOEMsRUFFOUMsc0NBQXNDLEVBRXRDLG1DQUFtQyxFQUVuQyxzQ0FBc0MsRUFHdEMsc0NBQXNDLEVBRXRDLDhCQUE4QixFQUU5QixvQ0FBb0MsRUFDcEMsdUJBQXVCLEVBQ3ZCLG9DQUFvQyxHQUlyQyxNQUFNLG1CQUFtQixDQUFBO0FBRTFCLE9BQU8sRUFB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Z0JBQWdCLENBQUM7eUJBQzdDO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSx1Q0FBdUM7NEJBQ2hELFVBQVUsRUFBRSxDQUFDLE9BQXlCLEVBQXlDLEVBQUU7Z0NBQy9FLE9BQU8sSUFBSSw4Q0FBOEMsQ0FBQyxPQUFPLENBQUMsQ0FBQTs0QkFDcEUsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDM0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsVUFBVSxFQUFFLENBQUMsT0FBeUIsRUFBaUMsRUFBRTtnQ0FDdkUsT0FBTyxJQUFJLHNDQUFzQyxDQUFDLE9BQU8sQ0FBQyxDQUFBOzRCQUM1RCxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO3lCQUMzQjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUNBQWlDOzRCQUMxQyxVQUFVLEVBQUUsQ0FBQyxPQUF5QixFQUFFLGlCQUE2QyxFQUFxQixFQUFFO2dDQUMxRyxPQUFPLElBQUksaUNBQWlDLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7NEJBQzFFLENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsMEJBQTBCLENBQUM7eUJBQ3ZEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFVBQVUsRUFBRSxDQUFDLE9BQWdCLEVBQUUsT0FBZSxFQUFFLEVBQUU7Z0NBQ2hELE9BQU8sSUFBSSwyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7NEJBQzFELENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO3lCQUNsQztxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xyXG5pbXBvcnQgeyBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIEZpcmViYXNlT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJ1xyXG5pbXBvcnQge1xyXG4gIEZpcmVzdG9yZSxcclxuICBnZXRGaXJlc3RvcmUsXHJcbiAgaW5pdGlhbGl6ZUZpcmVzdG9yZSxcclxuICBtZW1vcnlMb2NhbENhY2hlLFxyXG4gIHByb3ZpZGVGaXJlc3RvcmUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnXHJcbmltcG9ydCB7IFN0b3JhZ2UsIGdldFN0b3JhZ2UsIHByb3ZpZGVTdG9yYWdlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9zdG9yYWdlJ1xyXG5pbXBvcnQge1xyXG4gIEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZyxcclxuICBCZWF1dHlQcm9maWxlUmVwb3NpdG9yeSxcclxuICBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBCdXkyV2luUmVwb3NpdG9yeSxcclxuICBDYW1wYWlnbkRhc2hib2FyZEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2FtcGFpZ25EYXNoYm9hcmRSZXBvc2l0b3J5LFxyXG4gIENhbXBhaWduSGFzaHRhZ0ZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2FtcGFpZ25IYXNodGFnUmVwb3NpdG9yeSxcclxuICBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBDaGVja291dFJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICBDb25uZWN0RmlyZXN0b3JlU2VydmljZSxcclxuICBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIENvdXBvblJlcG9zaXRvcnksXHJcbiAgRWRpdGlvblJlcG9zaXRvcnksXHJcbiAgRmlyZWJhc2VGaWxlVXBsb2FkZXJTZXJ2aWNlLFxyXG4gIEZpcmVzdG9yZUNvbnN0cnVjdG9yUGFyYW1zLFxyXG4gIEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXMsXHJcbiAgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgSG9tZVJlcG9zaXRvcnksXHJcbiAgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgTGVhZFJlcG9zaXRvcnksXHJcbiAgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIExlZ2FjeU9yZGVyUmVwb3NpdG9yeSxcclxuICBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIFBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFBheW1lbnRSZXBvc2l0b3J5LFxyXG4gIFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gIFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTaG9wTWVudUZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU2hvcE1lbnVSZXBvc2l0b3J5LFxyXG4gIFNob3BTZXR0aW5nc0ZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU2hvcFNldHRpbmdzUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvbk1hdGVyaWFsaXphdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25QYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25Qcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSxcclxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblN1bW1hcnlGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvblN1bW1hcnlSZXBvc2l0b3J5LFxyXG4gIFVzZXJBZGRyZXNzRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBVc2VyQWRkcmVzc1JlcG9zaXRvcnksXHJcbiAgVXNlckJlYXV0eVByb2ZpbGVGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnksXHJcbiAgVXNlclJlcG9zaXRvcnksXHJcbiAgVmFyaWFudFJlcG9zaXRvcnksXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWVsYXN0aWMtc2VhcmNoLm1vZHVsZSdcclxuaW1wb3J0IHsgRVNfQ09ORklHLCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RzJ1xyXG5pbXBvcnQgeyBTVE9SQUdFX0JBU0VfVVJMIH0gZnJvbSAnLi9jb25zdHMvc3RvcmFnZS1iYXNlLXVybC5jb25zdCdcclxuaW1wb3J0IHsgTW9iaWxlT3BlcmF0aW9uU3lzdGVtQ2hlY2tlckhlbHBlciB9IGZyb20gJy4vaGVscGVycydcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHBDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xyXG5cclxuZXhwb3J0IHR5cGUgRmlyZXN0b3JlT3B0aW9ucyA9IFBpY2s8RmlyZXN0b3JlQ29uc3RydWN0b3JQYXJhbXM8YW55PiwgJ2ZpcmVzdG9yZScgfCAnaW50ZXJjZXB0b3JzJz5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQW5ndWxhckVsYXN0aWNTZWFjaE1vZHVsZSxcclxuICAgIHByb3ZpZGVGaXJlc3RvcmUoKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xyXG4gICAgICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0b3IuZ2V0KFBMQVRGT1JNX0lEKVxyXG5cclxuICAgICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkpIHJldHVybiBnZXRGaXJlc3RvcmUoaW5qZWN0b3IuZ2V0KEZpcmViYXNlQXBwKSlcclxuICAgICAgaWYgKCFNb2JpbGVPcGVyYXRpb25TeXN0ZW1DaGVja2VySGVscGVyLmlzQXBwbGVEZXZpY2UoKSkgcmV0dXJuIGdldEZpcmVzdG9yZShpbmplY3Rvci5nZXQoRmlyZWJhc2VBcHApKVxyXG5cclxuICAgICAgY29uc3QgZmlyZXN0b3JlID0gaW5pdGlhbGl6ZUZpcmVzdG9yZShpbmplY3Rvci5nZXQoRmlyZWJhc2VBcHApLCB7XHJcbiAgICAgICAgZXhwZXJpbWVudGFsRm9yY2VMb25nUG9sbGluZzogdHJ1ZSxcclxuICAgICAgICBsb2NhbENhY2hlOiBtZW1vcnlMb2NhbENhY2hlKCksXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICByZXR1cm4gZmlyZXN0b3JlXHJcbiAgICB9KSxcclxuICAgIHByb3ZpZGVTdG9yYWdlKCgpID0+IGdldFN0b3JhZ2UoKSksXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0ZpcmVzdG9yZU9wdGlvbnMnLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBGaXJlc3RvcmUsIHBsYXRmb3JtSWQ6IHN0cmluZyk6IEZpcmVzdG9yZU9wdGlvbnMgPT4gKHtcclxuICAgICAgICBmaXJlc3RvcmU6IG5ldyBDb25uZWN0RmlyZXN0b3JlU2VydmljZShmaXJlc3RvcmUpLFxyXG4gICAgICAgIGludGVyY2VwdG9yczoge1xyXG4gICAgICAgICAgcmVxdWVzdDogKHJlcXVlc3Q6IEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXM8YW55PiAmIHsgaW50ZXJ2YWw6IE5vZGVKUy5UaW1lb3V0IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSByZXR1cm4gcmVxdWVzdFxyXG5cclxuICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7fSwgMTAwKVxyXG5cclxuICAgICAgICAgICAgcmVxdWVzdC5pbnRlcnZhbCA9IGludGVydmFsXHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlc3BvbnNlOiAoXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiBhbnksXHJcbiAgICAgICAgICAgIHJlcXVlc3Q6IEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXM8YW55PiAmIHsgaW50ZXJ2YWw6IE5vZGVKUy5UaW1lb3V0IH0sXHJcbiAgICAgICAgICApID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSByZXR1cm4gcmVzcG9uc2VcclxuXHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVxdWVzdC5pbnRlcnZhbClcclxuXHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KSxcclxuICAgICAgZGVwczogW0ZpcmVzdG9yZSwgUExBVEZPUk1fSURdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0JlYXV0eVByb2ZpbGVSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGNvbmZpZzogRmlyZXN0b3JlT3B0aW9ucywgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KTogQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgVXNlckJlYXV0eVByb2ZpbGVGaXJlc3RvcmVSZXBvc2l0b3J5KGNvbmZpZywgdXNlclJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsICdVc2VyUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0J1eTJXaW5SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBCdXkyV2luUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDYXRlZ29yeVJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0NoZWNrb3V0UmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ2hlY2tvdXRSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnQ291cG9uUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ291cG9uUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0NhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2FtcGFpZ25IYXNodGFnRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdDYW1wYWlnbkRhc2hib2FyZFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENhbXBhaWduRGFzaGJvYXJkUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDYW1wYWlnbkRhc2hib2FyZEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnRWRpdGlvblJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoXHJcbiAgICAgICAgb3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyxcclxuICAgICAgICBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gICAgICApOiBFZGl0aW9uUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCBzdWJzY3JpcHRpb25SZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0hvbWVSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBIb21lUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIb21lRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdMZWFkUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogTGVhZFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnTGVnYWN5T3JkZXJSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBMZWdhY3lPcmRlclJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1Nob3BNZW51UmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU2hvcE1lbnVSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdPcmRlclJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IE9yZGVyUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnUGF5bWVudFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFBheW1lbnRSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU2hvcFNldHRpbmdzUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU2hvcFNldHRpbmdzUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTaG9wU2V0dGluZ3NGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKFxyXG4gICAgICAgIG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgKTogU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJywgJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFN1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdVc2VyUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogVXNlclJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnVXNlckFkZHJlc3NSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IFVzZXJBZGRyZXNzUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgdXNlclJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsICdVc2VyUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1VzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnVXNlclJlcG9zaXRvcnknXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25SZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbk1hdGVyaWFsaXphdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uU3VtbWFyeVJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFN1YnNjcmlwdGlvblN1bW1hcnlSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblN1bW1hcnlGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucywgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMsIHByb2R1Y3RSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnRmlsZVVwbG9hZGVyU2VydmljZScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChzdG9yYWdlOiBTdG9yYWdlLCBiYXNlVXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpcmViYXNlRmlsZVVwbG9hZGVyU2VydmljZShzdG9yYWdlLCBiYXNlVXJsKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbU3RvcmFnZSwgU1RPUkFHRV9CQVNFX1VSTF0sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIHtcclxuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgZmlyZWJhc2U6IEZpcmViYXNlT3B0aW9uc1xyXG4gICAgICBlbGFzdGljU2VhcmNoOiBBeGlvc0VsYXN0aWNTZWFyY2hDb25maWdcclxuICAgIH0sXHJcbiAgICBuYW1lT3JDb25maWc/OiBzdHJpbmcgfCBGaXJlYmFzZUFwcENvbmZpZyxcclxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zLmZpcmViYXNlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9BUFBfTkFNRSwgdXNlVmFsdWU6IG5hbWVPckNvbmZpZyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVNfQ09ORklHLCB1c2VWYWx1ZTogb3B0aW9ucy5lbGFzdGljU2VhcmNoIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==