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