@infrab4a/connect-angular 3.2.0-beta.0 → 3.2.0

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 (55) hide show
  1. package/angular-connect.module.d.ts +18 -18
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +10 -10
  4. package/angular-firestore.module.d.ts +15 -15
  5. package/angular-hasura-graphql.module.d.ts +16 -16
  6. package/bundles/infrab4a-connect-angular.umd.js +1775 -1777
  7. package/bundles/infrab4a-connect-angular.umd.js.map +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/hasura-options.const.d.ts +1 -1
  11. package/consts/index.d.ts +3 -3
  12. package/esm2015/angular-connect.module.js +49 -49
  13. package/esm2015/angular-elastic-search.module.js +38 -38
  14. package/esm2015/angular-firebase-auth.module.js +113 -113
  15. package/esm2015/angular-firestore.module.js +352 -354
  16. package/esm2015/angular-hasura-graphql.module.js +90 -90
  17. package/esm2015/consts/default-shop.const.js +2 -2
  18. package/esm2015/consts/es-config.const.js +2 -2
  19. package/esm2015/consts/hasura-options.const.js +2 -2
  20. package/esm2015/consts/index.js +4 -4
  21. package/esm2015/index.js +6 -6
  22. package/esm2015/infrab4a-connect-angular.js +4 -4
  23. package/esm2015/services/auth.service.js +42 -42
  24. package/esm2015/services/cart.service.js +148 -148
  25. package/esm2015/services/checkout-subscription.service.js +51 -51
  26. package/esm2015/services/checkout.service.js +75 -75
  27. package/esm2015/services/coupon.service.js +266 -266
  28. package/esm2015/services/errors/group-invalid-coupon.error.js +8 -8
  29. package/esm2015/services/errors/index.js +3 -3
  30. package/esm2015/services/errors/invalid-coupon.error.js +8 -8
  31. package/esm2015/services/home-shop.service.js +113 -113
  32. package/esm2015/services/index.js +8 -8
  33. package/esm2015/services/order.service.js +32 -32
  34. package/esm2015/services/types/index.js +3 -3
  35. package/esm2015/services/types/required-checkout-data.type.js +2 -2
  36. package/esm2015/services/types/required-checkout-subscription-data.type.js +2 -2
  37. package/fesm2015/infrab4a-connect-angular.js +1269 -1271
  38. package/fesm2015/infrab4a-connect-angular.js.map +1 -1
  39. package/index.d.ts +5 -5
  40. package/infrab4a-connect-angular.d.ts +5 -5
  41. package/package.json +3 -3
  42. package/services/auth.service.d.ts +19 -19
  43. package/services/cart.service.d.ts +35 -35
  44. package/services/checkout-subscription.service.d.ts +18 -18
  45. package/services/checkout.service.d.ts +23 -23
  46. package/services/coupon.service.d.ts +26 -26
  47. package/services/errors/group-invalid-coupon.error.d.ts +6 -6
  48. package/services/errors/index.d.ts +2 -2
  49. package/services/errors/invalid-coupon.error.d.ts +5 -5
  50. package/services/home-shop.service.d.ts +25 -25
  51. package/services/index.d.ts +7 -7
  52. package/services/order.service.d.ts +13 -13
  53. package/services/types/index.d.ts +2 -2
  54. package/services/types/required-checkout-data.type.d.ts +2 -2
  55. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
@@ -1,354 +1,352 @@
1
- import { NgModule } from '@angular/core';
2
- import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from '@angular/fire';
3
- import { AngularFirestore } from '@angular/fire/firestore';
4
- import { Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ProductVariantFirestoreRepository, ShopMenuFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethodFirestoreRepository } from '@infrab4a/connect';
5
- import { AngularElasticSeachModule } from './angular-elastic-search.module';
6
- import { ES_CONFIG } from './consts/es-config.const';
7
- import * as i0 from "@angular/core";
8
- export class AngularFirestoreModule {
9
- static initializeApp(options, nameOrConfig) {
10
- return {
11
- ngModule: AngularFirestoreModule,
12
- providers: [
13
- { provide: FIREBASE_OPTIONS, useValue: options.firebase },
14
- { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
15
- { provide: ES_CONFIG, useValue: options.elasticSearch },
16
- ],
17
- };
18
- }
19
- }
20
- AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
- AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, imports: [AngularFireModule, AngularElasticSeachModule] });
22
- AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, providers: [
23
- {
24
- provide: 'BeautyProfileRepository',
25
- useFactory: (firestore, userRepository) => {
26
- return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
27
- },
28
- deps: [AngularFirestore, 'UserRepository'],
29
- },
30
- {
31
- provide: 'Buy2WinRepository',
32
- useFactory: (firestore) => {
33
- return new Buy2WinFirestoreRepository(firestore.firestore);
34
- },
35
- deps: [AngularFirestore],
36
- },
37
- {
38
- provide: CategoryFirestoreRepository,
39
- useFactory: (firestore) => {
40
- return new CategoryFirestoreRepository(firestore.firestore);
41
- },
42
- deps: [AngularFirestore],
43
- },
44
- {
45
- provide: 'CheckoutRepository',
46
- useFactory: (firestore) => {
47
- return new CheckoutFirestoreRepository(firestore.firestore);
48
- },
49
- deps: [AngularFirestore],
50
- },
51
- {
52
- provide: 'CheckoutSubscriptionRepository',
53
- useFactory: (firestore) => {
54
- return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
55
- },
56
- deps: [AngularFirestore],
57
- },
58
- {
59
- provide: 'CouponRepository',
60
- useFactory: (firestore) => {
61
- return new CouponFirestoreRepository(firestore.firestore);
62
- },
63
- deps: [AngularFirestore],
64
- },
65
- {
66
- provide: 'EditionRepository',
67
- useFactory: (firestore, subscriptionRepository) => {
68
- return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
69
- },
70
- deps: [AngularFirestore, 'SubscriptionRepository'],
71
- },
72
- {
73
- provide: 'HomeRepository',
74
- useFactory: (firestore) => {
75
- return new HomeFirestoreRepository(firestore.firestore);
76
- },
77
- deps: [AngularFirestore],
78
- },
79
- {
80
- provide: 'LeadRepository',
81
- useFactory: (firestore) => {
82
- return new LeadFirestoreRepository(firestore.firestore);
83
- },
84
- deps: [AngularFirestore],
85
- },
86
- {
87
- provide: 'LegacyOrderRepository',
88
- useFactory: (firestore) => {
89
- return new LegacyOrderFirestoreRepository(firestore.firestore);
90
- },
91
- deps: [AngularFirestore],
92
- },
93
- {
94
- provide: 'ShopMenuRepository',
95
- useFactory: (firestore) => {
96
- return new ShopMenuFirestoreRepository(firestore.firestore);
97
- },
98
- deps: [AngularFirestore],
99
- },
100
- {
101
- provide: 'OrderRepository',
102
- useFactory: (firestore) => {
103
- return new OrderFirestoreRepository(firestore.firestore);
104
- },
105
- deps: [AngularFirestore],
106
- },
107
- {
108
- provide: 'PaymentRepository',
109
- useFactory: (firestore) => {
110
- return new PaymentFirestoreRepository(firestore.firestore);
111
- },
112
- deps: [AngularFirestore],
113
- },
114
- {
115
- provide: ProductFirestoreRepository,
116
- useFactory: (firestore) => {
117
- return new ProductFirestoreRepository(firestore.firestore);
118
- },
119
- deps: [AngularFirestore],
120
- },
121
- {
122
- provide: 'ShopSettingsRepository',
123
- useFactory: (firestore) => {
124
- return new ShopSettingsFirestoreRepository(firestore.firestore);
125
- },
126
- deps: [AngularFirestore],
127
- },
128
- {
129
- provide: 'SubscriptionPaymentRepository',
130
- useFactory: (firestore, subscriptionRepository) => {
131
- return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
132
- },
133
- deps: [AngularFirestore, 'SubscriptionRepository'],
134
- },
135
- {
136
- provide: 'SubscriptionPlanRepository',
137
- useFactory: (firestore) => {
138
- return new SubscriptionPlanFirestoreRepository(firestore.firestore);
139
- },
140
- deps: [AngularFirestore],
141
- },
142
- {
143
- provide: 'SubscriptionProductRepository',
144
- useFactory: (firestore) => {
145
- return new SubscriptionProductFirestoreRepository(firestore.firestore);
146
- },
147
- deps: [AngularFirestore],
148
- },
149
- {
150
- provide: 'SubscriptionRepository',
151
- useFactory: (firestore) => {
152
- return new SubscriptionFirestoreRepository(firestore.firestore);
153
- },
154
- deps: [AngularFirestore],
155
- },
156
- {
157
- provide: 'UserRepository',
158
- useFactory: (firestore) => {
159
- return new UserFirestoreRepository(firestore.firestore);
160
- },
161
- deps: [AngularFirestore],
162
- },
163
- {
164
- provide: 'UserAddressRepository',
165
- useFactory: (firestore, userRepository) => {
166
- return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
167
- },
168
- deps: [AngularFirestore, 'UserRepository'],
169
- },
170
- {
171
- provide: 'UserPaymentMethodRepository',
172
- useFactory: (firestore, userRepository) => {
173
- return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
174
- },
175
- deps: [AngularFirestore, 'UserRepository'],
176
- },
177
- {
178
- provide: ProductVariantFirestoreRepository,
179
- useFactory: (firestore, productRepository) => {
180
- return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
181
- },
182
- deps: [AngularFirestore, ProductFirestoreRepository],
183
- },
184
- ], imports: [[AngularFireModule, AngularElasticSeachModule]] });
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, decorators: [{
186
- type: NgModule,
187
- args: [{
188
- imports: [AngularFireModule, AngularElasticSeachModule],
189
- providers: [
190
- {
191
- provide: 'BeautyProfileRepository',
192
- useFactory: (firestore, userRepository) => {
193
- return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
194
- },
195
- deps: [AngularFirestore, 'UserRepository'],
196
- },
197
- {
198
- provide: 'Buy2WinRepository',
199
- useFactory: (firestore) => {
200
- return new Buy2WinFirestoreRepository(firestore.firestore);
201
- },
202
- deps: [AngularFirestore],
203
- },
204
- {
205
- provide: CategoryFirestoreRepository,
206
- useFactory: (firestore) => {
207
- return new CategoryFirestoreRepository(firestore.firestore);
208
- },
209
- deps: [AngularFirestore],
210
- },
211
- {
212
- provide: 'CheckoutRepository',
213
- useFactory: (firestore) => {
214
- return new CheckoutFirestoreRepository(firestore.firestore);
215
- },
216
- deps: [AngularFirestore],
217
- },
218
- {
219
- provide: 'CheckoutSubscriptionRepository',
220
- useFactory: (firestore) => {
221
- return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
222
- },
223
- deps: [AngularFirestore],
224
- },
225
- {
226
- provide: 'CouponRepository',
227
- useFactory: (firestore) => {
228
- return new CouponFirestoreRepository(firestore.firestore);
229
- },
230
- deps: [AngularFirestore],
231
- },
232
- {
233
- provide: 'EditionRepository',
234
- useFactory: (firestore, subscriptionRepository) => {
235
- return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
236
- },
237
- deps: [AngularFirestore, 'SubscriptionRepository'],
238
- },
239
- {
240
- provide: 'HomeRepository',
241
- useFactory: (firestore) => {
242
- return new HomeFirestoreRepository(firestore.firestore);
243
- },
244
- deps: [AngularFirestore],
245
- },
246
- {
247
- provide: 'LeadRepository',
248
- useFactory: (firestore) => {
249
- return new LeadFirestoreRepository(firestore.firestore);
250
- },
251
- deps: [AngularFirestore],
252
- },
253
- {
254
- provide: 'LegacyOrderRepository',
255
- useFactory: (firestore) => {
256
- return new LegacyOrderFirestoreRepository(firestore.firestore);
257
- },
258
- deps: [AngularFirestore],
259
- },
260
- {
261
- provide: 'ShopMenuRepository',
262
- useFactory: (firestore) => {
263
- return new ShopMenuFirestoreRepository(firestore.firestore);
264
- },
265
- deps: [AngularFirestore],
266
- },
267
- {
268
- provide: 'OrderRepository',
269
- useFactory: (firestore) => {
270
- return new OrderFirestoreRepository(firestore.firestore);
271
- },
272
- deps: [AngularFirestore],
273
- },
274
- {
275
- provide: 'PaymentRepository',
276
- useFactory: (firestore) => {
277
- return new PaymentFirestoreRepository(firestore.firestore);
278
- },
279
- deps: [AngularFirestore],
280
- },
281
- {
282
- provide: ProductFirestoreRepository,
283
- useFactory: (firestore) => {
284
- return new ProductFirestoreRepository(firestore.firestore);
285
- },
286
- deps: [AngularFirestore],
287
- },
288
- {
289
- provide: 'ShopSettingsRepository',
290
- useFactory: (firestore) => {
291
- return new ShopSettingsFirestoreRepository(firestore.firestore);
292
- },
293
- deps: [AngularFirestore],
294
- },
295
- {
296
- provide: 'SubscriptionPaymentRepository',
297
- useFactory: (firestore, subscriptionRepository) => {
298
- return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
299
- },
300
- deps: [AngularFirestore, 'SubscriptionRepository'],
301
- },
302
- {
303
- provide: 'SubscriptionPlanRepository',
304
- useFactory: (firestore) => {
305
- return new SubscriptionPlanFirestoreRepository(firestore.firestore);
306
- },
307
- deps: [AngularFirestore],
308
- },
309
- {
310
- provide: 'SubscriptionProductRepository',
311
- useFactory: (firestore) => {
312
- return new SubscriptionProductFirestoreRepository(firestore.firestore);
313
- },
314
- deps: [AngularFirestore],
315
- },
316
- {
317
- provide: 'SubscriptionRepository',
318
- useFactory: (firestore) => {
319
- return new SubscriptionFirestoreRepository(firestore.firestore);
320
- },
321
- deps: [AngularFirestore],
322
- },
323
- {
324
- provide: 'UserRepository',
325
- useFactory: (firestore) => {
326
- return new UserFirestoreRepository(firestore.firestore);
327
- },
328
- deps: [AngularFirestore],
329
- },
330
- {
331
- provide: 'UserAddressRepository',
332
- useFactory: (firestore, userRepository) => {
333
- return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
334
- },
335
- deps: [AngularFirestore, 'UserRepository'],
336
- },
337
- {
338
- provide: 'UserPaymentMethodRepository',
339
- useFactory: (firestore, userRepository) => {
340
- return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
341
- },
342
- deps: [AngularFirestore, 'UserRepository'],
343
- },
344
- {
345
- provide: ProductVariantFirestoreRepository,
346
- useFactory: (firestore, productRepository) => {
347
- return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
348
- },
349
- deps: [AngularFirestore, ProductFirestoreRepository],
350
- },
351
- ],
352
- }]
353
- }] });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUNMLGlCQUFpQixFQUdqQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzFELE9BQU8sRUFHTCwwQkFBMEIsRUFFMUIsMkJBQTJCLEVBRTNCLDJCQUEyQixFQUUzQix1Q0FBdUMsRUFFdkMseUJBQXlCLEVBR3pCLHVCQUF1QixFQUV2Qix1QkFBdUIsRUFFdkIsOEJBQThCLEVBRTlCLHdCQUF3QixFQUV4QiwwQkFBMEIsRUFFMUIsMEJBQTBCLEVBRTFCLGlDQUFpQyxFQUNqQywyQkFBMkIsRUFFM0IsK0JBQStCLEVBRS9CLHNDQUFzQyxFQUN0QywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBRXRDLG1DQUFtQyxFQUVuQyxzQ0FBc0MsRUFHdEMsOEJBQThCLEVBRTlCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIsb0NBQW9DLEVBSXJDLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQWlMcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsYUFBYSxDQUNsQixPQUdDLEVBQ0QsWUFBeUM7UUFFekMsT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEs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RSxjQUF1QyxFQUF5QixFQUFFO2dDQUMxRyxPQUFPLElBQUksOEJBQThCLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQTs0QkFDaEYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDM0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDZCQUE2Qjs0QkFDdEMsVUFBVSxFQUFFLENBQ1YsU0FBMkIsRUFDM0IsY0FBdUMsRUFDVixFQUFFO2dDQUMvQixPQUFPLElBQUksb0NBQW9DLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQTs0QkFDdEYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDM0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlDQUFpQzs0QkFDMUMsVUFBVSxFQUFFLENBQUMsU0FBMkIsRUFBRSxpQkFBNkMsRUFBcUIsRUFBRTtnQ0FDNUcsT0FBTyxJQUFJLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTs0QkFDdEYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSwwQkFBMEIsQ0FBQzt5QkFDckQ7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQW5ndWxhckZpcmVNb2R1bGUsXHJcbiAgRmlyZWJhc2VBcHBDb25maWcsXHJcbiAgRmlyZWJhc2VPcHRpb25zLFxyXG4gIEZJUkVCQVNFX0FQUF9OQU1FLFxyXG4gIEZJUkVCQVNFX09QVElPTlNcclxufSBmcm9tICdAYW5ndWxhci9maXJlJ1xyXG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnXHJcbmltcG9ydCB7XHJcbiAgQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnLFxyXG4gIEJlYXV0eVByb2ZpbGVSZXBvc2l0b3J5LFxyXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIEJ1eTJXaW5SZXBvc2l0b3J5LFxyXG4gIENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIENvdXBvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgQ291cG9uUmVwb3NpdG9yeSxcclxuICBFZGl0aW9uUmVwb3NpdG9yeSxcclxuICBIb21lRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBIb21lUmVwb3NpdG9yeSxcclxuICBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBMZWFkUmVwb3NpdG9yeSxcclxuICBMZWdhY3lPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgTGVnYWN5T3JkZXJSZXBvc2l0b3J5LFxyXG4gIE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBPcmRlclJlcG9zaXRvcnksXHJcbiAgUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgUGF5bWVudFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTaG9wTWVudVJlcG9zaXRvcnksXHJcbiAgU2hvcFNldHRpbmdzRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBTaG9wU2V0dGluZ3NSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvbkVkaXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxyXG4gIFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgVXNlckFkZHJlc3NSZXBvc2l0b3J5LFxyXG4gIFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICBVc2VyUGF5bWVudE1ldGhvZEZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5LFxyXG4gIFVzZXJSZXBvc2l0b3J5LFxyXG4gIFZhcmlhbnRSZXBvc2l0b3J5XHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWVsYXN0aWMtc2VhcmNoLm1vZHVsZSdcclxuaW1wb3J0IHsgRVNfQ09ORklHIH0gZnJvbSAnLi9jb25zdHMvZXMtY29uZmlnLmNvbnN0J1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQW5ndWxhckZpcmVNb2R1bGUsIEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBCZWF1dHlQcm9maWxlUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQmVhdXR5UHJvZmlsZUZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnVXNlclJlcG9zaXRvcnknXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdCdXkyV2luUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBCdXkyV2luUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBDYXRlZ29yeVJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdDaGVja291dFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogQ2hlY2tvdXRSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0NvdXBvblJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogQ291cG9uUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdFZGl0aW9uUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChcclxuICAgICAgICBmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsXHJcbiAgICAgICAgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgKTogRWRpdGlvblJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRWRpdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5J10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnSG9tZVJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogSG9tZVJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0xlYWRSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IExlYWRSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IExlYWRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdMZWdhY3lPcmRlclJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogTGVnYWN5T3JkZXJSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IExlZ2FjeU9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU2hvcE1lbnVSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFNob3BNZW51UmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTaG9wTWVudUZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ09yZGVyUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBPcmRlclJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdQYXltZW50UmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBQYXltZW50UmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdTaG9wU2V0dGluZ3NSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFNob3BTZXR0aW5nc1JlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2hvcFNldHRpbmdzRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoXHJcbiAgICAgICAgZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLFxyXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgICAgICk6IFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHN1YnNjcmlwdGlvblJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblBsYW5GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25Qcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1VzZXJSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFVzZXJSZXBvc2l0b3J5ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6ICdVc2VyQWRkcmVzc1JlcG9zaXRvcnknLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBVc2VyQWRkcmVzc1JlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgVXNlckFkZHJlc3NGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZSwgJ1VzZXJSZXBvc2l0b3J5J10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5JyxcclxuICAgICAgdXNlRmFjdG9yeTogKFxyXG4gICAgICAgIGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSxcclxuICAgICAgICB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnksXHJcbiAgICAgICk6IFVzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyUGF5bWVudE1ldGhvZEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnkpXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnVXNlclJlcG9zaXRvcnknXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcclxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSwgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHByb2R1Y3RSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZSwgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnldLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVzdG9yZU1vZHVsZSB7XHJcbiAgc3RhdGljIGluaXRpYWxpemVBcHAoXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIGZpcmViYXNlOiBGaXJlYmFzZU9wdGlvbnNcclxuICAgICAgZWxhc3RpY1NlYXJjaDogQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnXHJcbiAgICB9LFxyXG4gICAgbmFtZU9yQ29uZmlnPzogc3RyaW5nIHwgRmlyZWJhc2VBcHBDb25maWcsXHJcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmd1bGFyRmlyZU1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogRklSRUJBU0VfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMuZmlyZWJhc2UgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBFU19DT05GSUcsIHVzZVZhbHVlOiBvcHRpb25zLmVsYXN0aWNTZWFyY2ggfSxcclxuICAgICAgXSxcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
1
+ import { APP_INITIALIZER, NgModule } from '@angular/core';
2
+ import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, } from '@angular/fire';
3
+ import { AngularFirestore } from '@angular/fire/firestore';
4
+ import { Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ProductVariantFirestoreRepository, ShopMenuFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
5
+ import { AngularElasticSeachModule } from './angular-elastic-search.module';
6
+ import { ES_CONFIG } from './consts/es-config.const';
7
+ import * as i0 from "@angular/core";
8
+ export class AngularFirestoreModule {
9
+ static initializeApp(options, nameOrConfig) {
10
+ return {
11
+ ngModule: AngularFirestoreModule,
12
+ providers: [
13
+ { provide: FIREBASE_OPTIONS, useValue: options.firebase },
14
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
15
+ { provide: ES_CONFIG, useValue: options.elasticSearch },
16
+ ],
17
+ };
18
+ }
19
+ }
20
+ AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
+ AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, imports: [AngularFireModule, AngularElasticSeachModule] });
22
+ AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, providers: [
23
+ {
24
+ provide: 'BeautyProfileRepository',
25
+ useFactory: (firestore, userRepository) => {
26
+ return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
27
+ },
28
+ deps: [AngularFirestore, 'UserRepository'],
29
+ },
30
+ {
31
+ provide: 'Buy2WinRepository',
32
+ useFactory: (firestore) => {
33
+ return new Buy2WinFirestoreRepository(firestore.firestore);
34
+ },
35
+ deps: [AngularFirestore],
36
+ },
37
+ {
38
+ provide: CategoryFirestoreRepository,
39
+ useFactory: (firestore) => {
40
+ return new CategoryFirestoreRepository(firestore.firestore);
41
+ },
42
+ deps: [AngularFirestore],
43
+ },
44
+ {
45
+ provide: 'CheckoutRepository',
46
+ useFactory: (firestore) => {
47
+ return new CheckoutFirestoreRepository(firestore.firestore);
48
+ },
49
+ deps: [AngularFirestore],
50
+ },
51
+ {
52
+ provide: 'CheckoutSubscriptionRepository',
53
+ useFactory: (firestore) => {
54
+ return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
55
+ },
56
+ deps: [AngularFirestore],
57
+ },
58
+ {
59
+ provide: 'CouponRepository',
60
+ useFactory: (firestore) => {
61
+ return new CouponFirestoreRepository(firestore.firestore);
62
+ },
63
+ deps: [AngularFirestore],
64
+ },
65
+ {
66
+ provide: 'EditionRepository',
67
+ useFactory: (firestore, subscriptionRepository) => {
68
+ return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
69
+ },
70
+ deps: [AngularFirestore, 'SubscriptionRepository'],
71
+ },
72
+ {
73
+ provide: 'HomeRepository',
74
+ useFactory: (firestore) => {
75
+ return new HomeFirestoreRepository(firestore.firestore);
76
+ },
77
+ deps: [AngularFirestore],
78
+ },
79
+ {
80
+ provide: 'LeadRepository',
81
+ useFactory: (firestore) => {
82
+ return new LeadFirestoreRepository(firestore.firestore);
83
+ },
84
+ deps: [AngularFirestore],
85
+ },
86
+ {
87
+ provide: 'LegacyOrderRepository',
88
+ useFactory: (firestore) => {
89
+ return new LegacyOrderFirestoreRepository(firestore.firestore);
90
+ },
91
+ deps: [AngularFirestore],
92
+ },
93
+ {
94
+ provide: 'ShopMenuRepository',
95
+ useFactory: (firestore) => {
96
+ return new ShopMenuFirestoreRepository(firestore.firestore);
97
+ },
98
+ deps: [AngularFirestore],
99
+ },
100
+ {
101
+ provide: 'OrderRepository',
102
+ useFactory: (firestore) => {
103
+ return new OrderFirestoreRepository(firestore.firestore);
104
+ },
105
+ deps: [AngularFirestore],
106
+ },
107
+ {
108
+ provide: 'PaymentRepository',
109
+ useFactory: (firestore) => {
110
+ return new PaymentFirestoreRepository(firestore.firestore);
111
+ },
112
+ deps: [AngularFirestore],
113
+ },
114
+ {
115
+ provide: ProductFirestoreRepository,
116
+ useFactory: (firestore) => {
117
+ return new ProductFirestoreRepository(firestore.firestore);
118
+ },
119
+ deps: [AngularFirestore],
120
+ },
121
+ {
122
+ provide: 'SubscriptionPaymentRepository',
123
+ useFactory: (firestore, subscriptionRepository) => {
124
+ return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
125
+ },
126
+ deps: [AngularFirestore, 'SubscriptionRepository'],
127
+ },
128
+ {
129
+ provide: 'SubscriptionPlanRepository',
130
+ useFactory: (firestore) => {
131
+ return new SubscriptionPlanFirestoreRepository(firestore.firestore);
132
+ },
133
+ deps: [AngularFirestore],
134
+ },
135
+ {
136
+ provide: 'SubscriptionProductRepository',
137
+ useFactory: (firestore) => {
138
+ return new SubscriptionProductFirestoreRepository(firestore.firestore);
139
+ },
140
+ deps: [AngularFirestore],
141
+ },
142
+ {
143
+ provide: 'SubscriptionRepository',
144
+ useFactory: (firestore) => {
145
+ return new SubscriptionFirestoreRepository(firestore.firestore);
146
+ },
147
+ deps: [AngularFirestore],
148
+ },
149
+ {
150
+ provide: 'UserRepository',
151
+ useFactory: (firestore) => {
152
+ return new UserFirestoreRepository(firestore.firestore);
153
+ },
154
+ deps: [AngularFirestore],
155
+ },
156
+ {
157
+ provide: 'UserAddressRepository',
158
+ useFactory: (firestore, userRepository) => {
159
+ return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
160
+ },
161
+ deps: [AngularFirestore, 'UserRepository'],
162
+ },
163
+ {
164
+ provide: 'UserPaymentMethodRepository',
165
+ useFactory: (firestore, userRepository) => {
166
+ return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
167
+ },
168
+ deps: [AngularFirestore, 'UserRepository'],
169
+ },
170
+ {
171
+ provide: ProductVariantFirestoreRepository,
172
+ useFactory: (firestore, productRepository) => {
173
+ return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
174
+ },
175
+ deps: [AngularFirestore, ProductFirestoreRepository],
176
+ },
177
+ {
178
+ provide: APP_INITIALIZER,
179
+ useFactory: (firestore) => () => firestore.firestore.settings({ ignoreUndefinedProperties: true }),
180
+ deps: [AngularFirestore],
181
+ multi: true,
182
+ },
183
+ ], imports: [[AngularFireModule, AngularElasticSeachModule]] });
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularFirestoreModule, decorators: [{
185
+ type: NgModule,
186
+ args: [{
187
+ imports: [AngularFireModule, AngularElasticSeachModule],
188
+ providers: [
189
+ {
190
+ provide: 'BeautyProfileRepository',
191
+ useFactory: (firestore, userRepository) => {
192
+ return new UserBeautyProfileFirestoreRepository(firestore.firestore, userRepository);
193
+ },
194
+ deps: [AngularFirestore, 'UserRepository'],
195
+ },
196
+ {
197
+ provide: 'Buy2WinRepository',
198
+ useFactory: (firestore) => {
199
+ return new Buy2WinFirestoreRepository(firestore.firestore);
200
+ },
201
+ deps: [AngularFirestore],
202
+ },
203
+ {
204
+ provide: CategoryFirestoreRepository,
205
+ useFactory: (firestore) => {
206
+ return new CategoryFirestoreRepository(firestore.firestore);
207
+ },
208
+ deps: [AngularFirestore],
209
+ },
210
+ {
211
+ provide: 'CheckoutRepository',
212
+ useFactory: (firestore) => {
213
+ return new CheckoutFirestoreRepository(firestore.firestore);
214
+ },
215
+ deps: [AngularFirestore],
216
+ },
217
+ {
218
+ provide: 'CheckoutSubscriptionRepository',
219
+ useFactory: (firestore) => {
220
+ return new CheckoutSubscriptionFirestoreRepository(firestore.firestore);
221
+ },
222
+ deps: [AngularFirestore],
223
+ },
224
+ {
225
+ provide: 'CouponRepository',
226
+ useFactory: (firestore) => {
227
+ return new CouponFirestoreRepository(firestore.firestore);
228
+ },
229
+ deps: [AngularFirestore],
230
+ },
231
+ {
232
+ provide: 'EditionRepository',
233
+ useFactory: (firestore, subscriptionRepository) => {
234
+ return new SubscriptionEditionFirestoreRepository(firestore.firestore, subscriptionRepository);
235
+ },
236
+ deps: [AngularFirestore, 'SubscriptionRepository'],
237
+ },
238
+ {
239
+ provide: 'HomeRepository',
240
+ useFactory: (firestore) => {
241
+ return new HomeFirestoreRepository(firestore.firestore);
242
+ },
243
+ deps: [AngularFirestore],
244
+ },
245
+ {
246
+ provide: 'LeadRepository',
247
+ useFactory: (firestore) => {
248
+ return new LeadFirestoreRepository(firestore.firestore);
249
+ },
250
+ deps: [AngularFirestore],
251
+ },
252
+ {
253
+ provide: 'LegacyOrderRepository',
254
+ useFactory: (firestore) => {
255
+ return new LegacyOrderFirestoreRepository(firestore.firestore);
256
+ },
257
+ deps: [AngularFirestore],
258
+ },
259
+ {
260
+ provide: 'ShopMenuRepository',
261
+ useFactory: (firestore) => {
262
+ return new ShopMenuFirestoreRepository(firestore.firestore);
263
+ },
264
+ deps: [AngularFirestore],
265
+ },
266
+ {
267
+ provide: 'OrderRepository',
268
+ useFactory: (firestore) => {
269
+ return new OrderFirestoreRepository(firestore.firestore);
270
+ },
271
+ deps: [AngularFirestore],
272
+ },
273
+ {
274
+ provide: 'PaymentRepository',
275
+ useFactory: (firestore) => {
276
+ return new PaymentFirestoreRepository(firestore.firestore);
277
+ },
278
+ deps: [AngularFirestore],
279
+ },
280
+ {
281
+ provide: ProductFirestoreRepository,
282
+ useFactory: (firestore) => {
283
+ return new ProductFirestoreRepository(firestore.firestore);
284
+ },
285
+ deps: [AngularFirestore],
286
+ },
287
+ {
288
+ provide: 'SubscriptionPaymentRepository',
289
+ useFactory: (firestore, subscriptionRepository) => {
290
+ return new SubscriptionPaymentFirestoreRepository(firestore.firestore, subscriptionRepository);
291
+ },
292
+ deps: [AngularFirestore, 'SubscriptionRepository'],
293
+ },
294
+ {
295
+ provide: 'SubscriptionPlanRepository',
296
+ useFactory: (firestore) => {
297
+ return new SubscriptionPlanFirestoreRepository(firestore.firestore);
298
+ },
299
+ deps: [AngularFirestore],
300
+ },
301
+ {
302
+ provide: 'SubscriptionProductRepository',
303
+ useFactory: (firestore) => {
304
+ return new SubscriptionProductFirestoreRepository(firestore.firestore);
305
+ },
306
+ deps: [AngularFirestore],
307
+ },
308
+ {
309
+ provide: 'SubscriptionRepository',
310
+ useFactory: (firestore) => {
311
+ return new SubscriptionFirestoreRepository(firestore.firestore);
312
+ },
313
+ deps: [AngularFirestore],
314
+ },
315
+ {
316
+ provide: 'UserRepository',
317
+ useFactory: (firestore) => {
318
+ return new UserFirestoreRepository(firestore.firestore);
319
+ },
320
+ deps: [AngularFirestore],
321
+ },
322
+ {
323
+ provide: 'UserAddressRepository',
324
+ useFactory: (firestore, userRepository) => {
325
+ return new UserAddressFirestoreRepository(firestore.firestore, userRepository);
326
+ },
327
+ deps: [AngularFirestore, 'UserRepository'],
328
+ },
329
+ {
330
+ provide: 'UserPaymentMethodRepository',
331
+ useFactory: (firestore, userRepository) => {
332
+ return new UserPaymentMethodFirestoreRepository(firestore.firestore, userRepository);
333
+ },
334
+ deps: [AngularFirestore, 'UserRepository'],
335
+ },
336
+ {
337
+ provide: ProductVariantFirestoreRepository,
338
+ useFactory: (firestore, productRepository) => {
339
+ return new ProductVariantFirestoreRepository(firestore.firestore, productRepository);
340
+ },
341
+ deps: [AngularFirestore, ProductFirestoreRepository],
342
+ },
343
+ {
344
+ provide: APP_INITIALIZER,
345
+ useFactory: (firestore) => () => firestore.firestore.settings({ ignoreUndefinedProperties: true }),
346
+ deps: [AngularFirestore],
347
+ multi: true,
348
+ },
349
+ ],
350
+ }]
351
+ }] });
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxpQkFBaUIsRUFHakIsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMxRCxPQUFPLEVBR0wsMEJBQTBCLEVBRTFCLDJCQUEyQixFQUUzQiwyQkFBMkIsRUFFM0IsdUNBQXVDLEVBRXZDLHlCQUF5QixFQUd6Qix1QkFBdUIsRUFFdkIsdUJBQXVCLEVBRXZCLDhCQUE4QixFQUU5Qix3QkFBd0IsRUFFeEIsMEJBQTBCLEVBRTFCLDBCQUEwQixFQUUxQixpQ0FBaUMsRUFDakMsMkJBQTJCLEVBRTNCLHNDQUFzQyxFQUN0QywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBRXRDLG1DQUFtQyxFQUVuQyxzQ0FBc0MsRUFHdEMsOEJBQThCLEVBRTlCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIsb0NBQW9DLEdBSXJDLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQWlMcEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsYUFBYSxDQUNsQixPQUdDLEVBQ0QsWUFBeUM7UUFFekMsT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFB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QkFDM0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDZCQUE2Qjs0QkFDdEMsVUFBVSxFQUFFLENBQ1YsU0FBMkIsRUFDM0IsY0FBdUMsRUFDVixFQUFFO2dDQUMvQixPQUFPLElBQUksb0NBQW9DLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQTs0QkFDdEYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQzt5QkFDM0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlDQUFpQzs0QkFDMUMsVUFBVSxFQUFFLENBQUMsU0FBMkIsRUFBRSxpQkFBNkMsRUFBcUIsRUFBRTtnQ0FDNUcsT0FBTyxJQUFJLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTs0QkFDdEYsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSwwQkFBMEIsQ0FBQzt5QkFDckQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFVBQVUsRUFBRSxDQUFDLFNBQTJCLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUNoRCxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxDQUFDOzRCQUNuRSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzs0QkFDeEIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEFuZ3VsYXJGaXJlTW9kdWxlLFxuICBGaXJlYmFzZUFwcENvbmZpZyxcbiAgRmlyZWJhc2VPcHRpb25zLFxuICBGSVJFQkFTRV9BUFBfTkFNRSxcbiAgRklSRUJBU0VfT1BUSU9OUyxcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZSdcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSdcbmltcG9ydCB7XG4gIEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZyxcbiAgQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBCdXkyV2luUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ291cG9uUmVwb3NpdG9yeSxcbiAgRWRpdGlvblJlcG9zaXRvcnksXG4gIEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBIb21lUmVwb3NpdG9yeSxcbiAgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExlYWRSZXBvc2l0b3J5LFxuICBMZWdhY3lPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExlZ2FjeU9yZGVyUmVwb3NpdG9yeSxcbiAgT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBPcmRlclJlcG9zaXRvcnksXG4gIFBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBQYXltZW50UmVwb3NpdG9yeSxcbiAgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU2hvcE1lbnVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgVXNlckFkZHJlc3NGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyQWRkcmVzc1JlcG9zaXRvcnksXG4gIFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJQYXltZW50TWV0aG9kRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlclBheW1lbnRNZXRob2RSZXBvc2l0b3J5LFxuICBVc2VyUmVwb3NpdG9yeSxcbiAgVmFyaWFudFJlcG9zaXRvcnksXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5pbXBvcnQgeyBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWVsYXN0aWMtc2VhcmNoLm1vZHVsZSdcbmltcG9ydCB7IEVTX0NPTkZJRyB9IGZyb20gJy4vY29uc3RzL2VzLWNvbmZpZy5jb25zdCdcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0FuZ3VsYXJGaXJlTW9kdWxlLCBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0JlYXV0eVByb2ZpbGVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IEJlYXV0eVByb2ZpbGVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQmVhdXR5UHJvZmlsZUZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgdXNlclJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0J1eTJXaW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBCdXkyV2luUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQnV5MldpbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogQ2F0ZWdvcnlSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBDaGVja291dFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENoZWNrb3V0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NvdXBvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IENvdXBvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENvdXBvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRWRpdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBFZGl0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRWRpdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZSwgJ1N1YnNjcmlwdGlvblJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdIb21lUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogSG9tZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEhvbWVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xlYWRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBMZWFkUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgTGVhZEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnTGVnYWN5T3JkZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBMZWdhY3lPcmRlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IExlZ2FjeU9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTaG9wTWVudVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFNob3BNZW51UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ09yZGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBBbmd1bGFyRmlyZXN0b3JlKTogT3JkZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnUGF5bWVudFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFBheW1lbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSxcbiAgICAgICAgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgICk6IFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25QYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlLCBzdWJzY3JpcHRpb25SZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGxhbkZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGZpcmVzdG9yZTogQW5ndWxhckZpcmVzdG9yZSk6IFN1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25Qcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeShmaXJlc3RvcmUuZmlyZXN0b3JlKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpOiBVc2VyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbQW5ndWxhckZpcmVzdG9yZV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVXNlckFkZHJlc3NSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IFVzZXJBZGRyZXNzUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlckFkZHJlc3NGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgICAgIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgICk6IFVzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5KGZpcmVzdG9yZS5maXJlc3RvcmUsIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtBbmd1bGFyRmlyZXN0b3JlLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUsIHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSk6IFZhcmlhbnRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnkoZmlyZXN0b3JlLmZpcmVzdG9yZSwgcHJvZHVjdFJlcG9zaXRvcnkpXG4gICAgICB9LFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmUsIFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IChmaXJlc3RvcmU6IEFuZ3VsYXJGaXJlc3RvcmUpID0+ICgpID0+XG4gICAgICAgIGZpcmVzdG9yZS5maXJlc3RvcmUuc2V0dGluZ3MoeyBpZ25vcmVVbmRlZmluZWRQcm9wZXJ0aWVzOiB0cnVlIH0pLFxuICAgICAgZGVwczogW0FuZ3VsYXJGaXJlc3RvcmVdLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVzdG9yZU1vZHVsZSB7XG4gIHN0YXRpYyBpbml0aWFsaXplQXBwKFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGZpcmViYXNlOiBGaXJlYmFzZU9wdGlvbnNcbiAgICAgIGVsYXN0aWNTZWFyY2g6IEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZ1xuICAgIH0sXG4gICAgbmFtZU9yQ29uZmlnPzogc3RyaW5nIHwgRmlyZWJhc2VBcHBDb25maWcsXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckZpcmVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFuZ3VsYXJGaXJlc3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucy5maXJlYmFzZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX0FQUF9OQU1FLCB1c2VWYWx1ZTogbmFtZU9yQ29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRVNfQ09ORklHLCB1c2VWYWx1ZTogb3B0aW9ucy5lbGFzdGljU2VhcmNoIH0sXG4gICAgICBdLFxuICAgIH1cbiAgfVxufVxuIl19