@infrab4a/connect-angular 4.14.1-beta.0 → 4.14.1-beta.2

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