surveysparrow-ionic-plugin 1.0.7-beta.17 → 1.0.7-beta.19
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/dist/angular-ui/esm2022/spotchecks/SpotcheckStateService.mjs +2 -1
- package/dist/angular-ui/esm2022/spotchecks/api.mjs +18 -27
- package/dist/angular-ui/esm2022/spotchecks/types.mjs +1 -1
- package/dist/angular-ui/fesm2022/angular-ui.mjs +18 -26
- package/dist/angular-ui/fesm2022/angular-ui.mjs.map +1 -1
- package/dist/angular-ui/spotchecks/types.d.ts +1 -0
- package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.js +1 -0
- package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/api.js +17 -26
- package/dist/esm/angular-ui/lib/spotchecks/api.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/types.d.ts +1 -0
- package/dist/esm/angular-ui/lib/spotchecks/types.js.map +1 -1
- package/dist/plugin.cjs.js +18 -26
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +18 -26
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
- package/src/angular-ui/lib/spotchecks/SpotcheckStateService.ts +1 -0
- package/src/angular-ui/lib/spotchecks/api.ts +17 -29
- package/src/angular-ui/lib/spotchecks/types.ts +1 -0
|
@@ -40,6 +40,7 @@ export class SpotcheckStateService {
|
|
|
40
40
|
spotChecksMode: '',
|
|
41
41
|
avatarEnabled: false,
|
|
42
42
|
avatarUrl: '',
|
|
43
|
+
screenwiseUserDetails: {}
|
|
43
44
|
};
|
|
44
45
|
spotcheckState = new BehaviorSubject(this.initialState);
|
|
45
46
|
state$ = this.spotcheckState.asObservable();
|
|
@@ -61,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
61
62
|
providedIn: 'root',
|
|
62
63
|
}]
|
|
63
64
|
}] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNdkMsTUFBTSxPQUFPLHFCQUFxQjtJQUN4QixZQUFZLEdBQW1CO1FBQ3JDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLGlCQUFpQixFQUFFLFFBQVE7UUFDM0IsWUFBWSxFQUFFLEVBQUU7UUFDaEIsV0FBVyxFQUFFLENBQUM7UUFDZCxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JCLFVBQVUsRUFBRSxHQUFHO1FBQ2YsU0FBUyxFQUFFLEdBQUc7UUFDZCxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLGdCQUFnQixFQUFFLEtBQUs7UUFDdkIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLFlBQVksRUFBRSxLQUFLO1FBQ25CLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLHNCQUFzQixFQUFFLEVBQUU7UUFDMUIsV0FBVyxFQUFFLEVBQUU7UUFDZixVQUFVLEVBQUUsRUFBRTtRQUNkLFdBQVcsRUFBRSxFQUFFO1FBQ2YsU0FBUyxFQUFFLEVBQUU7UUFDYixnQkFBZ0IsRUFBRSxFQUFFO1FBQ3BCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxFQUFFO1FBQ1gsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QixjQUFjLEVBQUUsSUFBSTtRQUNwQixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFlBQVksRUFBRSxDQUFDO1FBQ2YsWUFBWSxFQUFFLENBQUM7UUFDZixjQUFjLEVBQUUsQ0FBQztRQUNqQixjQUFjLEVBQUUsRUFBRTtRQUNsQixhQUFhLEVBQUUsS0FBSztRQUNwQixTQUFTLEVBQUUsRUFBRTtRQUNiLHFCQUFxQixFQUFFLEVBQUU7S0FDMUIsQ0FBQztJQUVNLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTVDLFFBQVEsQ0FBQyxLQUE4QjtRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7dUdBdkRVLHFCQUFxQjsyR0FBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTcG90Y2hlY2tTdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIGluaXRpYWxTdGF0ZTogU3BvdGNoZWNrU3RhdGUgPSB7XG4gICAgaXNWaXNpYmxlOiBmYWxzZSxcbiAgICBzcG90Y2hlY2tQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgc3BvdGNoZWNrVVJMOiAnJyxcbiAgICBzcG90Y2hlY2tJRDogMCxcbiAgICBzcG90Y2hlY2tDb250YWN0SUQ6IDAsXG4gICAgYWZ0ZXJEZWxheTogMC4wLFxuICAgIG1heEhlaWdodDogMC41LFxuICAgIGN1cnJlbnRRdWVzdGlvbkhlaWdodDogMCxcbiAgICBpc0Z1bGxTY3JlZW5Nb2RlOiBmYWxzZSxcbiAgICBpc0Jhbm5lckltYWdlT246IGZhbHNlLFxuICAgIHRyaWdnZXJUb2tlbjogJycsXG4gICAgY2xvc2VCdXR0b25TdHlsZToge30sXG4gICAgaXNDbG9zZUJ1dHRvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIGlzU3BvdFBhc3NlZDogZmFsc2UsXG4gICAgaXNDaGVja3NQYXNzZWQ6IGZhbHNlLFxuICAgIGN1c3RvbUV2ZW50c1Nwb3RDaGVja3M6IFtdLFxuICAgIHRhcmdldFRva2VuOiAnJyxcbiAgICBkb21haW5OYW1lOiAnJyxcbiAgICB1c2VyRGV0YWlsczoge30sXG4gICAgdmFyaWFibGVzOiB7fSxcbiAgICBjdXN0b21Qcm9wZXJ0aWVzOiB7fSxcbiAgICB0cmFjZUlkOiAnJyxcbiAgICBpc0NsYXNzaWNMb2FkaW5nOiB0cnVlLFxuICAgIGlzQ2hhdExvYWRpbmc6IHRydWUsXG4gICAgY2xhc3NpY1VybDogJycsXG4gICAgY2hhdFVybDogJycsXG4gICAgY2xhc3NpY1dlYlZpZXdSZWY6IG51bGwsXG4gICAgY2hhdFdlYlZpZXdSZWY6IG51bGwsXG4gICAgZmlsdGVyZWRTcG90Q2hlY2tzOiBbXSxcbiAgICBzcG90Q2hlY2tUeXBlOiAnJyxcbiAgICBpc01vdW50ZWQ6IGZhbHNlLFxuICAgIHRleHRQb3NpdGlvbjogMCxcbiAgICBzY3JlZW5IZWlnaHQ6IDAsXG4gICAga2V5Qm9hcmRIZWlnaHQ6IDAsXG4gICAgc3BvdENoZWNrc01vZGU6ICcnLFxuICAgIGF2YXRhckVuYWJsZWQ6IGZhbHNlLFxuICAgIGF2YXRhclVybDogJycsXG4gICAgc2NyZWVud2lzZVVzZXJEZXRhaWxzOiB7fVxuICB9O1xuICBcbiAgcHJpdmF0ZSBzcG90Y2hlY2tTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3BvdGNoZWNrU3RhdGU+KHRoaXMuaW5pdGlhbFN0YXRlKTtcbiAgc3RhdGUkID0gdGhpcy5zcG90Y2hlY2tTdGF0ZS5hc09ic2VydmFibGUoKTtcblxuICBzZXRTdGF0ZShzdGF0ZTogUGFydGlhbDxTcG90Y2hlY2tTdGF0ZT4pIHtcbiAgICB0aGlzLnNwb3RjaGVja1N0YXRlLm5leHQoeyAuLi50aGlzLnNwb3RjaGVja1N0YXRlLnZhbHVlLCAuLi5zdGF0ZSB9KTtcbiAgfVxuICBcbiAgY2xlYXJTdGF0ZSgpIHtcbiAgICB0aGlzLnNwb3RjaGVja1N0YXRlLm5leHQodGhpcy5pbml0aWFsU3RhdGUpO1xuICB9XG5cbiAgZ2V0U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3BvdGNoZWNrU3RhdGUuZ2V0VmFsdWUoKTtcbiAgfVxufVxuIl19
|
|
@@ -6,17 +6,17 @@ export const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
6
6
|
try {
|
|
7
7
|
const spotcheckStateService = getSpotcheckStateService();
|
|
8
8
|
const oldState = spotcheckStateService.getState();
|
|
9
|
-
let variables = {};
|
|
10
|
-
let customProperties = {};
|
|
11
|
-
let userDetails = {};
|
|
9
|
+
let variables = { ...oldState.variables };
|
|
10
|
+
let customProperties = { ...oldState.customProperties };
|
|
11
|
+
let userDetails = { ...oldState.userDetails };
|
|
12
12
|
if (options && options.variables && Object.keys(options.variables).length > 0) {
|
|
13
|
-
variables = { ...
|
|
13
|
+
variables = { ...variables, ...options.variables };
|
|
14
14
|
}
|
|
15
15
|
if (options && options.customProperties && Object.keys(options.customProperties).length > 0) {
|
|
16
|
-
customProperties = { ...
|
|
16
|
+
customProperties = { ...customProperties, ...options.customProperties };
|
|
17
17
|
}
|
|
18
18
|
if (options && options.userDetails && Object.keys(options.userDetails).length > 0) {
|
|
19
|
-
userDetails = { ...
|
|
19
|
+
userDetails = { ...userDetails, ...options.userDetails };
|
|
20
20
|
}
|
|
21
21
|
let traceId = oldState.traceId;
|
|
22
22
|
if (!traceId) {
|
|
@@ -30,16 +30,16 @@ export const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
30
30
|
}
|
|
31
31
|
spotcheckStateService.setState({
|
|
32
32
|
traceId,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
screenwiseUserDetails: {
|
|
34
|
+
[screen]: userDetails
|
|
35
|
+
},
|
|
36
36
|
});
|
|
37
37
|
const state = spotcheckStateService.getState();
|
|
38
38
|
let { isSpotPassed, isChecksPassed } = state;
|
|
39
39
|
const payload = {
|
|
40
40
|
screenName: screen,
|
|
41
|
-
variables:
|
|
42
|
-
userDetails:
|
|
41
|
+
variables: variables,
|
|
42
|
+
userDetails: userDetails,
|
|
43
43
|
visitor: {
|
|
44
44
|
deviceType: 'MOBILE',
|
|
45
45
|
operatingSystem: await getOS(),
|
|
@@ -51,9 +51,9 @@ export const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
51
51
|
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
52
52
|
},
|
|
53
53
|
traceId: state.traceId,
|
|
54
|
-
customProperties:
|
|
54
|
+
customProperties: customProperties,
|
|
55
55
|
};
|
|
56
|
-
const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/properties?isSpotCheck=true
|
|
56
|
+
const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/properties?isSpotCheck=true`;
|
|
57
57
|
const response = await axios.post(url, payload, {
|
|
58
58
|
headers: {
|
|
59
59
|
'Content-Type': 'application/json',
|
|
@@ -66,7 +66,7 @@ export const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
66
66
|
}
|
|
67
67
|
if (responseJson?.show) {
|
|
68
68
|
if (responseJson?.show) {
|
|
69
|
-
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId,
|
|
69
|
+
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId, variables);
|
|
70
70
|
if (appearance_response) {
|
|
71
71
|
isSpotPassed = true;
|
|
72
72
|
spotcheckStateService.setState({ isSpotPassed });
|
|
@@ -86,7 +86,7 @@ export const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
86
86
|
throw new Error('');
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId,
|
|
89
|
+
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId, variables);
|
|
90
90
|
if (appearance_response) {
|
|
91
91
|
isChecksPassed = true;
|
|
92
92
|
spotcheckStateService.setState({ isChecksPassed });
|
|
@@ -114,7 +114,7 @@ export const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
114
114
|
}
|
|
115
115
|
if (Object.keys(selectedSpotCheck).length > 0) {
|
|
116
116
|
spotcheckStateService.setState({ afterDelay: minDelay });
|
|
117
|
-
const appearance_response = await setAppearance(selectedSpotCheck, screen, state.domainName, traceId,
|
|
117
|
+
const appearance_response = await setAppearance(selectedSpotCheck, screen, state.domainName, traceId, variables);
|
|
118
118
|
if (appearance_response) {
|
|
119
119
|
return { valid: true };
|
|
120
120
|
}
|
|
@@ -146,20 +146,11 @@ export const sendTrackEventRequest = async ({ screen, event }) => {
|
|
|
146
146
|
if (eventKeys.includes(customEvent?.eventName)) {
|
|
147
147
|
selectedSpotCheckID =
|
|
148
148
|
spotCheck?.['id'] ?? spotCheck?.['spotCheckId'] ?? intMax;
|
|
149
|
-
let payloadUserDetails = { ...state.userDetails };
|
|
150
149
|
if (selectedSpotCheckID !== intMax) {
|
|
151
|
-
if (!payloadUserDetails?.email &&
|
|
152
|
-
!payloadUserDetails?.uuid &&
|
|
153
|
-
!payloadUserDetails?.mobile) {
|
|
154
|
-
const uuid = getStoredUUID();
|
|
155
|
-
if (uuid) {
|
|
156
|
-
payloadUserDetails.uuid = uuid;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
150
|
const payload = {
|
|
160
151
|
screenName: screen,
|
|
161
152
|
variables: state.variables,
|
|
162
|
-
userDetails:
|
|
153
|
+
userDetails: state.screenwiseUserDetails[screen] || {},
|
|
163
154
|
visitor: {
|
|
164
155
|
deviceType: 'MOBILE',
|
|
165
156
|
operatingSystem: await getOS(),
|
|
@@ -236,4 +227,4 @@ export const sendTrackEventRequest = async ({ screen, event }) => {
|
|
|
236
227
|
return { valid: false, error: error.message };
|
|
237
228
|
}
|
|
238
229
|
};
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssRUFBRSxFQUMzQyxNQUFNLEVBQ04sT0FBTyxHQUNVLEVBQUUsRUFBRTtJQUNyQixJQUFJLENBQUM7UUFDSCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEQsSUFBSSxTQUFTLEdBQUcsRUFBZSxDQUFDO1FBQ2hDLElBQUksZ0JBQWdCLEdBQUcsRUFBc0IsQ0FBQztRQUM5QyxJQUFJLFdBQVcsR0FBRyxFQUFpQixDQUFDO1FBRXBDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlFLFNBQVMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFB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LENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQ0FDN0QsQ0FBQzs0QkFDSCxDQUFDOzRCQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7Z0NBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUNqQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZVRyYWNlSWQsIGdldE9TLCBzZXRBcHBlYXJhbmNlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IGdldFN0b3JlZFVVSUQsIHNldFVVSUQgfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgVHJhY2tTY3JlZW5Qcm9wcywgVXNlckRldGFpbHMsIFZhcmlhYmxlcywgQ3VzdG9tUHJvcGVydGllcywgVHJhY2tFdmVudFByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuZXhwb3J0IGNvbnN0IHNlbmRUcmFja1NjcmVlblJlcXVlc3QgPSBhc3luYyAoe1xuICBzY3JlZW4sXG4gIG9wdGlvbnMsXG59OiBUcmFja1NjcmVlblByb3BzKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgY29uc3Qgb2xkU3RhdGUgPSBzcG90Y2hlY2tTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKTtcbiAgICBsZXQgdmFyaWFibGVzID0ge30gYXMgVmFyaWFibGVzO1xuICAgIGxldCBjdXN0b21Qcm9wZXJ0aWVzID0ge30gYXMgQ3VzdG9tUHJvcGVydGllcztcbiAgICBsZXQgdXNlckRldGFpbHMgPSB7fSBhcyBVc2VyRGV0YWlsczsgICAgXG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnZhcmlhYmxlcyAmJiBPYmplY3Qua2V5cyhvcHRpb25zLnZhcmlhYmxlcykubGVuZ3RoID4gMCkge1xuICAgICAgdmFyaWFibGVzID0geyAuLi5vbGRTdGF0ZS52YXJpYWJsZXMsIC4uLm9wdGlvbnMudmFyaWFibGVzIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuY3VzdG9tUHJvcGVydGllcyAmJiBPYmplY3Qua2V5cyhvcHRpb25zLmN1c3RvbVByb3BlcnRpZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGN1c3RvbVByb3BlcnRpZXMgPSB7IC4uLm9sZFN0YXRlLmN1c3RvbVByb3BlcnRpZXMsIC4uLm9wdGlvbnMuY3VzdG9tUHJvcGVydGllcyB9O1xuICAgIH1cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnVzZXJEZXRhaWxzICYmIE9iamVjdC5rZXlzKG9wdGlvbnMudXNlckRldGFpbHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIHVzZXJEZXRhaWxzID0geyAuLi5vbGRTdGF0ZS51c2VyRGV0YWlscywgLi4ub3B0aW9ucy51c2VyRGV0YWlscyB9O1xuICAgIH1cblxuICAgIGxldCB0cmFjZUlkID0gb2xkU3RhdGUudHJhY2VJZDtcbiAgICBpZiAoIXRyYWNlSWQpIHtcbiAgICAgIHRyYWNlSWQgPSBnZW5lcmF0ZVRyYWNlSWQoKTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXJEZXRhaWxzLnV1aWQgJiYgIXVzZXJEZXRhaWxzLmVtYWlsICYmICF1c2VyRGV0YWlscy5tb2JpbGUpIHtcbiAgICAgIGNvbnN0IHV1aWQgPSBnZXRTdG9yZWRVVUlEKCk7XG4gICAgICBpZiAodXVpZCkge1xuICAgICAgICB1c2VyRGV0YWlscy51dWlkID0gdXVpZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgdHJhY2VJZCxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGN1c3RvbVByb3BlcnRpZXMsXG4gICAgICB1c2VyRGV0YWlscyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YXRlID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gICAgbGV0IHsgaXNTcG90UGFzc2VkLCBpc0NoZWNrc1Bhc3NlZCB9ID0gc3RhdGU7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIHNjcmVlbk5hbWU6IHNjcmVlbixcbiAgICAgIHZhcmlhYmxlczogc3RhdGUudmFyaWFibGVzLFxuICAgICAgdXNlckRldGFpbHM6IHN0YXRlLnVzZXJEZXRhaWxzLFxuICAgICAgdmlzaXRvcjoge1xuICAgICAgICBkZXZpY2VUeXBlOiAnTU9CSUxFJyxcbiAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBhd2FpdCBnZXRPUygpLFxuICAgICAgICBzY3JlZW5SZXNvbHV0aW9uOiB7XG4gICAgICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICAgICAgd2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50RGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB0aW1lem9uZTogSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxuICAgICAgfSxcbiAgICAgIHRyYWNlSWQ6IHN0YXRlLnRyYWNlSWQsXG4gICAgICBjdXN0b21Qcm9wZXJ0aWVzOiBzdGF0ZS5jdXN0b21Qcm9wZXJ0aWVzLFxuICAgIH07XG5cbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly8ke3N0YXRlLmRvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svd2lkZ2V0LyR7c3RhdGUudGFyZ2V0VG9rZW59L3Byb3BlcnRpZXM/aXNTcG90Q2hlY2s9dHJ1ZSZzZGs9SU9TYDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QodXJsLCBwYXlsb2FkLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlSnNvbiA9IHJlc3BvbnNlLmRhdGE7XG5cbiAgICAgIGlmIChyZXNwb25zZUpzb24udXVpZCkge1xuICAgICAgICBzZXRVVUlEKHJlc3BvbnNlSnNvbi51dWlkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlSnNvbj8uc2hvdykge1xuICAgICAgICBpZiAocmVzcG9uc2VKc29uPy5zaG93KSB7XG4gICAgICAgICAgY29uc3QgYXBwZWFyYW5jZV9yZXNwb25zZSA9IGF3YWl0IHNldEFwcGVhcmFuY2UoXG4gICAgICAgICAgICByZXNwb25zZUpzb24sXG4gICAgICAgICAgICBzY3JlZW4sXG4gICAgICAgICAgICBzdGF0ZS5kb21haW5OYW1lLFxuICAgICAgICAgICAgdHJhY2VJZCxcbiAgICAgICAgICAgIHN0YXRlLnZhcmlhYmxlc1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGFwcGVhcmFuY2VfcmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlzU3BvdFBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc1Nwb3RQYXNzZWQgfSk7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXG4gICAgICBpZiAoIWlzU3BvdFBhc3NlZCAmJiByZXNwb25zZUpzb24/LmNoZWNrUGFzc2VkKSB7XG4gICAgICAgIGlmIChyZXNwb25zZUpzb24uY2hlY2tDb25kaXRpb24pIHtcbiAgICAgICAgICBjb25zdCBjaGVja0NvbmRpdGlvbiA9IHJlc3BvbnNlSnNvbi5jaGVja0NvbmRpdGlvbjtcbiAgICAgICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBhZnRlckRlbGF5OiBjaGVja0NvbmRpdGlvbi5hZnRlckRlbGF5IHx8IDAgfSk7XG4gICAgICAgICAgaWYgKGNoZWNrQ29uZGl0aW9uLmN1c3RvbUV2ZW50KSB7XG4gICAgICAgICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBjdXN0b21FdmVudHNTcG90Q2hlY2tzOiBbcmVzcG9uc2VKc29uXSB9KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwZWFyYW5jZV9yZXNwb25zZSA9IGF3YWl0IHNldEFwcGVhcmFuY2UoXG4gICAgICAgICAgcmVzcG9uc2VKc29uLFxuICAgICAgICAgIHNjcmVlbixcbiAgICAgICAgICBzdGF0ZS5kb21haW5OYW1lLFxuICAgICAgICAgIHRyYWNlSWQsXG4gICAgICAgICAgc3RhdGUudmFyaWFibGVzXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhcHBlYXJhbmNlX3Jlc3BvbnNlKSB7XG4gICAgICAgICAgaXNDaGVja3NQYXNzZWQgPSB0cnVlO1xuICAgICAgICAgIHNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2hlY2tzUGFzc2VkIH0pO1xuICAgICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFpc1Nwb3RQYXNzZWQgJiYgIWlzQ2hlY2tzUGFzc2VkICYmIHJlc3BvbnNlSnNvbj8ubXVsdGlTaG93ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlSnNvbi5tdWx0aVNob3cpIHtcbiAgICAgICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBjdXN0b21FdmVudHNTcG90Q2hlY2tzOiByZXNwb25zZUpzb24ucmVzdWx0YW50U3BvdENoZWNrIH0pO1xuXG4gICAgICAgICAgbGV0IHNlbGVjdGVkU3BvdENoZWNrID0ge307XG4gICAgICAgICAgbGV0IG1pbkRlbGF5OiBudW1iZXIgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHNwb3RjaGVjayBvZiByZXNwb25zZUpzb24ucmVzdWx0YW50U3BvdENoZWNrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGVja3MgPSBzcG90Y2hlY2s/LmNoZWNrcyB8fCB7fTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhjaGVja3MpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBtaW5EZWxheSA9IDA7XG4gICAgICAgICAgICAgIHNlbGVjdGVkU3BvdENoZWNrID0gc3BvdGNoZWNrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVja3MuYWZ0ZXJEZWxheSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRlbGF5ID0gcGFyc2VGbG9hdChjaGVja3MuYWZ0ZXJEZWxheSk7XG4gICAgICAgICAgICAgIGlmIChtaW5EZWxheSA+IGRlbGF5KSB7XG4gICAgICAgICAgICAgICAgbWluRGVsYXkgPSBkZWxheTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFNwb3RDaGVjayA9IHNwb3RjaGVjaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhzZWxlY3RlZFNwb3RDaGVjaykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgYWZ0ZXJEZWxheTogbWluRGVsYXkgfSk7XG4gICAgICAgICAgICBjb25zdCBhcHBlYXJhbmNlX3Jlc3BvbnNlID0gYXdhaXQgc2V0QXBwZWFyYW5jZShcbiAgICAgICAgICAgICAgc2VsZWN0ZWRTcG90Q2hlY2ssXG4gICAgICAgICAgICAgIHNjcmVlbixcbiAgICAgICAgICAgICAgc3RhdGUuZG9tYWluTmFtZSxcbiAgICAgICAgICAgICAgdHJhY2VJZCxcbiAgICAgICAgICAgICAgc3RhdGUudmFyaWFibGVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGFwcGVhcmFuY2VfcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlSnNvbj8ucmVhc29uLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlY2VpdmVkIHN0YXR1cyBjb2RlICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfTtcbiAgfVxufTtcblxuXG5leHBvcnQgY29uc3Qgc2VuZFRyYWNrRXZlbnRSZXF1ZXN0ID0gYXN5bmMgKHsgc2NyZWVuLCBldmVudCB9OiBUcmFja0V2ZW50UHJvcHMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpbnRNYXggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgY29uc3Qgc3RhdGUgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKS5nZXRTdGF0ZSgpO1xuICAgIGxldCBzZWxlY3RlZFNwb3RDaGVja0lEID0gaW50TWF4O1xuICAgIGxldCB7IGlzU3BvdFBhc3NlZCB9ID0gc3RhdGU7XG4gICAgaWYgKHN0YXRlLmN1c3RvbUV2ZW50c1Nwb3RDaGVja3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXZlbnRLZXlzID0gT2JqZWN0LmtleXMoZXZlbnQpO1xuICAgICAgZm9yIChjb25zdCBzcG90Q2hlY2sgb2Ygc3RhdGUuY3VzdG9tRXZlbnRzU3BvdENoZWNrcykge1xuICAgICAgICBjb25zdCBjaGVja3MgPSBzcG90Q2hlY2s/LlsnY2hlY2tzJ10gPz8gc3BvdENoZWNrPy5bJ2NoZWNrQ29uZGl0aW9uJ107XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gY2hlY2tzPy5jdXN0b21FdmVudDtcblxuICAgICAgICAgIGlmIChldmVudEtleXMuaW5jbHVkZXMoY3VzdG9tRXZlbnQ/LmV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkU3BvdENoZWNrSUQgPVxuICAgICAgICAgICAgICBzcG90Q2hlY2s/LlsnaWQnXSA/PyBzcG90Q2hlY2s/Llsnc3BvdENoZWNrSWQnXSA/PyBpbnRNYXg7XG4gICAgICAgICAgICBsZXQgcGF5bG9hZFVzZXJEZXRhaWxzID0geyAuLi5zdGF0ZS51c2VyRGV0YWlscyB9O1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRTcG90Q2hlY2tJRCAhPT0gaW50TWF4KSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhcGF5bG9hZFVzZXJEZXRhaWxzPy5lbWFpbCAmJlxuICAgICAgICAgICAgICAgICFwYXlsb2FkVXNlckRldGFpbHM/LnV1aWQgJiZcbiAgICAgICAgICAgICAgICAhcGF5bG9hZFVzZXJEZXRhaWxzPy5tb2JpbGVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IGdldFN0b3JlZFVVSUQoKTtcbiAgICAgICAgICAgICAgICBpZiAodXVpZCkge1xuICAgICAgICAgICAgICAgICAgcGF5bG9hZFVzZXJEZXRhaWxzLnV1aWQgPSB1dWlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgc2NyZWVuTmFtZTogc2NyZWVuLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogc3RhdGUudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzOiBwYXlsb2FkVXNlckRldGFpbHMsXG4gICAgICAgICAgICAgICAgdmlzaXRvcjoge1xuICAgICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogJ01PQklMRScsXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW06IGF3YWl0IGdldE9TKCksXG4gICAgICAgICAgICAgICAgICBzY3JlZW5SZXNvbHV0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY3VycmVudERhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHRpbWV6b25lOiBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzcG90Q2hlY2tJZDogc2VsZWN0ZWRTcG90Q2hlY2tJRCxcbiAgICAgICAgICAgICAgICBldmVudFRyaWdnZXI6IHtcbiAgICAgICAgICAgICAgICAgIGN1c3RvbUV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRyYWNlSWQ6IHN0YXRlLnRyYWNlSWQsXG4gICAgICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllczogc3RhdGUuY3VzdG9tUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly8ke3N0YXRlLmRvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svd2lkZ2V0LyR7c3RhdGUudGFyZ2V0VG9rZW59L2V2ZW50VHJpZ2dlcj9pc1Nwb3RDaGVjaz10cnVlYDtcblxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCh1cmwsIHBheWxvYWQsIHtcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlSnNvbiA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VKc29uPy5zaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlSnNvbj8uc2hvdykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcGVhcmFuY2VfcmVzcG9uc2UgPSBhd2FpdCBzZXRBcHBlYXJhbmNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VKc29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZG9tYWluTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YXJpYWJsZXNcbiAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGVhcmFuY2VfcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpLnNldFN0YXRlKHsgaXNTcG90UGFzc2VkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNTcG90UGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmICghaXNTcG90UGFzc2VkICYmIHJlc3BvbnNlSnNvbj8uZXZlbnRTaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUpzb24/LmNoZWNrQ29uZGl0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGVja0NvbmRpdGlvbiA9IHJlc3BvbnNlSnNvbj8uY2hlY2tDb25kaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJEZWxheTogY2hlY2tDb25kaXRpb24/LmFmdGVyRGVsYXkgPz8gMCxcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja0NvbmRpdGlvbj8uY3VzdG9tRXZlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlckRlbGF5OiBjaGVja0NvbmRpdGlvbj8uY3VzdG9tRXZlbnQ/LmRlbGF5SW5TZWNvbmRzID8/IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcHBlYXJhbmNlX3Jlc3BvbnNlID0gYXdhaXQgc2V0QXBwZWFyYW5jZShcbiAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUudHJhY2VJZCxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YXJpYWJsZXNcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwZWFyYW5jZV9yZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlSnNvbj8ucmVhc29uLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlY2VpdmVkIHN0YXR1cyBjb2RlICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gIH1cbn07Il19
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssRUFBRSxFQUMzQyxNQUFNLEVBQ04sT0FBTyxHQUNVLEVBQUUsRUFBRTtJQUNyQixJQUFJLENBQUM7UUFDSCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEQsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQWUsQ0FBQztRQUN2RCxJQUFJLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLEVBQXNCLENBQUM7UUFDNUUsSUFBSSxXQUFXLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQWlCLENBQUM7UUFFN0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUUsU0FBUyxHQUFHLEVBQUUsR0FBRyxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1RixnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEYsV0FBVyxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkUsTUFBTSxJQUFJLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUVELHFCQUFxQixDQUFDLFFBQVEsQ0FBQztZQUM3QixPQUFPO1lBQ1AscUJBQXFCLEVBQUU7Z0JBQ3JCLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVzthQUN0QjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9DLElBQUksRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsVUFBVSxFQUFFLE1BQU07WUFDbEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxRQUFRO2dCQUNwQixlQUFlLEVBQUUsTUFBTSxLQUFLLEVBQUU7Z0JBQzlCLGdCQUFnQixFQUFFO29CQUNoQixNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7b0JBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVTtpQkFDekI7Z0JBQ0QsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2dCQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVE7YUFDM0Q7WUFDRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1NBQ25DLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxXQUFXLEtBQUssQ0FBQyxVQUFVLGtDQUFrQyxLQUFLLENBQUMsV0FBVyw4QkFBOEIsQ0FBQztRQUN6SCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtZQUM5QyxPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjthQUNuQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUcsUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMzQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBRW5DLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFFRCxJQUFJLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxhQUFhLENBQzdDLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxDQUFDLFVBQVUsRUFDaEIsT0FBTyxFQUNQLFNBQVMsQ0FDVixDQUFDO29CQUNGLElBQUksbUJBQW1CLEVBQUUsQ0FBQzt3QkFDeEIsWUFBWSxHQUFHLElBQUksQ0FBQzt3QkFDcEIscUJBQXFCLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQzt3QkFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDekIsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUM7b0JBQ25ELHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQy9FLElBQUksY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUMvQixxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDM0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxhQUFhLENBQzdDLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxDQUFDLFVBQVUsRUFDaEIsT0FBTyxFQUNQLFNBQVMsQ0FDVixDQUFDO2dCQUNGLElBQUksbUJBQW1CLEVBQUUsQ0FBQztvQkFDeEIsY0FBYyxHQUFHLElBQUksQ0FBQztvQkFDdEIscUJBQXFCLENBQUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsY0FBYyxJQUFJLFlBQVksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3hFLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUMzQixxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO29CQUU1RixJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxRQUFRLEdBQVcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO29CQUVoRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO3dCQUN4RCxNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQzt3QkFDdkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzs0QkFDckMsUUFBUSxHQUFHLENBQUMsQ0FBQzs0QkFDYixpQkFBaUIsR0FBRyxTQUFTLENBQUM7d0JBQ2hDLENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDOzRCQUNyQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUM1QyxJQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBQztnQ0FDckIsUUFBUSxHQUFHLEtBQUssQ0FBQztnQ0FDakIsaUJBQWlCLEdBQUcsU0FBUyxDQUFDOzRCQUNoQyxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzlDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sYUFBYSxDQUM3QyxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLE9BQU8sRUFDUCxTQUFTLENBQ1YsQ0FBQzt3QkFDRixJQUFJLG1CQUFtQixFQUFFLENBQUM7NEJBQ3hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7d0JBQ3pCLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsQ0FBQztBQUNILENBQUMsQ0FBQztBQUdGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW1CLEVBQUUsRUFBRTtJQUNoRixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwRCxJQUFJLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3JELE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRXRFLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFdBQVcsQ0FBQztvQkFFeEMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO3dCQUMvQyxtQkFBbUI7NEJBQ2pCLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLE1BQU0sQ0FBQzt3QkFFNUQsSUFBSSxtQkFBbUIsS0FBSyxNQUFNLEVBQUUsQ0FBQzs0QkFDbkMsTUFBTSxPQUFPLEdBQUc7Z0NBQ2QsVUFBVSxFQUFFLE1BQU07Z0NBQ2xCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztnQ0FDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2dDQUN0RCxPQUFPLEVBQUU7b0NBQ1AsVUFBVSxFQUFFLFFBQVE7b0NBQ3BCLGVBQWUsRUFBRSxNQUFNLEtBQUssRUFBRTtvQ0FDOUIsZ0JBQWdCLEVBQUU7d0NBQ2hCLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVzt3Q0FDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVO3FDQUN6QjtvQ0FDRCxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7b0NBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUTtpQ0FDM0Q7Z0NBQ0QsV0FBVyxFQUFFLG1CQUFtQjtnQ0FDaEMsWUFBWSxFQUFFO29DQUNaLFdBQVcsRUFBRSxLQUFLO2lDQUNuQjtnQ0FDRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0NBQ3RCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7NkJBQ3pDLENBQUM7NEJBRUYsTUFBTSxHQUFHLEdBQUcsV0FBVyxLQUFLLENBQUMsVUFBVSxrQ0FBa0MsS0FBSyxDQUFDLFdBQVcsZ0NBQWdDLENBQUM7NEJBRTNILElBQUksQ0FBQztnQ0FDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtvQ0FDOUMsT0FBTyxFQUFFO3dDQUNQLGNBQWMsRUFBRSxrQkFBa0I7cUNBQ25DO2lDQUNGLENBQUMsQ0FBQztnQ0FFSCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7b0NBQzVCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0NBQ25DLElBQUksWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQzt3Q0FDL0IsSUFBSSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7NENBQ3ZCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxhQUFhLENBQzdDLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxDQUFDLFVBQVUsRUFDaEIsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFDOzRDQUVGLElBQUksbUJBQW1CLEVBQUUsQ0FBQztnREFDeEIsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnREFDNUQsWUFBWSxHQUFHLElBQUksQ0FBQztnREFDcEIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs0Q0FDekIsQ0FBQzt3Q0FDSCxDQUFDO29DQUNILENBQUM7b0NBRUQsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLEVBQUUsU0FBUyxFQUFFLENBQUM7d0NBQzdDLElBQUksWUFBWSxFQUFFLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQzs0Q0FDekMsTUFBTSxjQUFjLEdBQUcsWUFBWSxFQUFFLGNBQWMsQ0FBQzs0Q0FDcEQsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0RBQ2xDLFVBQVUsRUFBRSxjQUFjLEVBQUUsVUFBVSxJQUFJLENBQUM7NkNBQzVDLENBQUMsQ0FBQzs0Q0FFSCxJQUFJLGNBQWMsRUFBRSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7Z0RBQ3hDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDO29EQUNsQyxVQUFVLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLElBQUksQ0FBQztpREFDN0QsQ0FBQyxDQUFDOzRDQUNMLENBQUM7d0NBQ0gsQ0FBQzt3Q0FFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sYUFBYSxDQUM3QyxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQzt3Q0FFRixJQUFJLG1CQUFtQixFQUFFLENBQUM7NENBQ3hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7d0NBQ3pCLENBQUM7b0NBQ0gsQ0FBQztvQ0FFRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQ0FDbkQsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dDQUM3RCxDQUFDOzRCQUNILENBQUM7NEJBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztnQ0FDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7NEJBQ2pDLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdlbmVyYXRlVHJhY2VJZCwgZ2V0T1MsIHNldEFwcGVhcmFuY2UgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgZ2V0U3RvcmVkVVVJRCwgc2V0VVVJRCB9IGZyb20gJy4vc3RvcmFnZSc7XG5pbXBvcnQgeyBUcmFja1NjcmVlblByb3BzLCBVc2VyRGV0YWlscywgVmFyaWFibGVzLCBDdXN0b21Qcm9wZXJ0aWVzLCBUcmFja0V2ZW50UHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5leHBvcnQgY29uc3Qgc2VuZFRyYWNrU2NyZWVuUmVxdWVzdCA9IGFzeW5jICh7XG4gIHNjcmVlbixcbiAgb3B0aW9ucyxcbn06IFRyYWNrU2NyZWVuUHJvcHMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCBvbGRTdGF0ZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIGxldCB2YXJpYWJsZXMgPSB7IC4uLm9sZFN0YXRlLnZhcmlhYmxlcyB9IGFzIFZhcmlhYmxlcztcbiAgICBsZXQgY3VzdG9tUHJvcGVydGllcyA9IHsgLi4ub2xkU3RhdGUuY3VzdG9tUHJvcGVydGllcyB9IGFzIEN1c3RvbVByb3BlcnRpZXM7XG4gICAgbGV0IHVzZXJEZXRhaWxzID0geyAuLi5vbGRTdGF0ZS51c2VyRGV0YWlscyB9IGFzIFVzZXJEZXRhaWxzOyAgICBcblxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudmFyaWFibGVzICYmIE9iamVjdC5rZXlzKG9wdGlvbnMudmFyaWFibGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICB2YXJpYWJsZXMgPSB7IC4uLnZhcmlhYmxlcywgLi4ub3B0aW9ucy52YXJpYWJsZXMgfTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5jdXN0b21Qcm9wZXJ0aWVzICYmIE9iamVjdC5rZXlzKG9wdGlvbnMuY3VzdG9tUHJvcGVydGllcykubGVuZ3RoID4gMCkge1xuICAgICAgY3VzdG9tUHJvcGVydGllcyA9IHsgLi4uY3VzdG9tUHJvcGVydGllcywgLi4ub3B0aW9ucy5jdXN0b21Qcm9wZXJ0aWVzIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudXNlckRldGFpbHMgJiYgT2JqZWN0LmtleXMob3B0aW9ucy51c2VyRGV0YWlscykubGVuZ3RoID4gMCkge1xuICAgICAgdXNlckRldGFpbHMgPSB7IC4uLnVzZXJEZXRhaWxzLCAuLi5vcHRpb25zLnVzZXJEZXRhaWxzIH07XG4gICAgfVxuXG4gICAgbGV0IHRyYWNlSWQgPSBvbGRTdGF0ZS50cmFjZUlkO1xuICAgIGlmICghdHJhY2VJZCkge1xuICAgICAgdHJhY2VJZCA9IGdlbmVyYXRlVHJhY2VJZCgpO1xuICAgIH1cblxuICAgIGlmICghdXNlckRldGFpbHMudXVpZCAmJiAhdXNlckRldGFpbHMuZW1haWwgJiYgIXVzZXJEZXRhaWxzLm1vYmlsZSkge1xuICAgICAgY29uc3QgdXVpZCA9IGdldFN0b3JlZFVVSUQoKTtcbiAgICAgIGlmICh1dWlkKSB7XG4gICAgICAgIHVzZXJEZXRhaWxzLnV1aWQgPSB1dWlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICB0cmFjZUlkLFxuICAgICAgc2NyZWVud2lzZVVzZXJEZXRhaWxzOiB7XG4gICAgICAgIFtzY3JlZW5dOiB1c2VyRGV0YWlsc1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YXRlID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gICAgbGV0IHsgaXNTcG90UGFzc2VkLCBpc0NoZWNrc1Bhc3NlZCB9ID0gc3RhdGU7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIHNjcmVlbk5hbWU6IHNjcmVlbixcbiAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgdXNlckRldGFpbHM6IHVzZXJEZXRhaWxzLFxuICAgICAgdmlzaXRvcjoge1xuICAgICAgICBkZXZpY2VUeXBlOiAnTU9CSUxFJyxcbiAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBhd2FpdCBnZXRPUygpLFxuICAgICAgICBzY3JlZW5SZXNvbHV0aW9uOiB7XG4gICAgICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICAgICAgd2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50RGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB0aW1lem9uZTogSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lLFxuICAgICAgfSxcbiAgICAgIHRyYWNlSWQ6IHN0YXRlLnRyYWNlSWQsXG4gICAgICBjdXN0b21Qcm9wZXJ0aWVzOiBjdXN0b21Qcm9wZXJ0aWVzLFxuICAgIH07XG5cbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly8ke3N0YXRlLmRvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svd2lkZ2V0LyR7c3RhdGUudGFyZ2V0VG9rZW59L3Byb3BlcnRpZXM/aXNTcG90Q2hlY2s9dHJ1ZWA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KHVybCwgcGF5bG9hZCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICBjb25zdCByZXNwb25zZUpzb24gPSByZXNwb25zZS5kYXRhO1xuXG4gICAgICBpZiAocmVzcG9uc2VKc29uLnV1aWQpIHtcbiAgICAgICAgc2V0VVVJRChyZXNwb25zZUpzb24udXVpZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZUpzb24/LnNob3cpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlSnNvbj8uc2hvdykge1xuICAgICAgICAgIGNvbnN0IGFwcGVhcmFuY2VfcmVzcG9uc2UgPSBhd2FpdCBzZXRBcHBlYXJhbmNlKFxuICAgICAgICAgICAgcmVzcG9uc2VKc29uLFxuICAgICAgICAgICAgc2NyZWVuLFxuICAgICAgICAgICAgc3RhdGUuZG9tYWluTmFtZSxcbiAgICAgICAgICAgIHRyYWNlSWQsXG4gICAgICAgICAgICB2YXJpYWJsZXNcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChhcHBlYXJhbmNlX3Jlc3BvbnNlKSB7XG4gICAgICAgICAgICBpc1Nwb3RQYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNTcG90UGFzc2VkIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIFxuICAgICAgaWYgKCFpc1Nwb3RQYXNzZWQgJiYgcmVzcG9uc2VKc29uPy5jaGVja1Bhc3NlZCkge1xuICAgICAgICBpZiAocmVzcG9uc2VKc29uLmNoZWNrQ29uZGl0aW9uKSB7XG4gICAgICAgICAgY29uc3QgY2hlY2tDb25kaXRpb24gPSByZXNwb25zZUpzb24uY2hlY2tDb25kaXRpb247XG4gICAgICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgYWZ0ZXJEZWxheTogY2hlY2tDb25kaXRpb24uYWZ0ZXJEZWxheSB8fCAwIH0pO1xuICAgICAgICAgIGlmIChjaGVja0NvbmRpdGlvbi5jdXN0b21FdmVudCkge1xuICAgICAgICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgY3VzdG9tRXZlbnRzU3BvdENoZWNrczogW3Jlc3BvbnNlSnNvbl0gfSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGVhcmFuY2VfcmVzcG9uc2UgPSBhd2FpdCBzZXRBcHBlYXJhbmNlKFxuICAgICAgICAgIHJlc3BvbnNlSnNvbixcbiAgICAgICAgICBzY3JlZW4sXG4gICAgICAgICAgc3RhdGUuZG9tYWluTmFtZSxcbiAgICAgICAgICB0cmFjZUlkLFxuICAgICAgICAgIHZhcmlhYmxlc1xuICAgICAgICApO1xuICAgICAgICBpZiAoYXBwZWFyYW5jZV9yZXNwb25zZSkge1xuICAgICAgICAgIGlzQ2hlY2tzUGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NoZWNrc1Bhc3NlZCB9KTtcbiAgICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNTcG90UGFzc2VkICYmICFpc0NoZWNrc1Bhc3NlZCAmJiByZXNwb25zZUpzb24/Lm11bHRpU2hvdyAhPSBudWxsKSB7XG4gICAgICAgIGlmIChyZXNwb25zZUpzb24ubXVsdGlTaG93KSB7XG4gICAgICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgY3VzdG9tRXZlbnRzU3BvdENoZWNrczogcmVzcG9uc2VKc29uLnJlc3VsdGFudFNwb3RDaGVjayB9KTtcblxuICAgICAgICAgIGxldCBzZWxlY3RlZFNwb3RDaGVjayA9IHt9O1xuICAgICAgICAgIGxldCBtaW5EZWxheTogbnVtYmVyID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBzcG90Y2hlY2sgb2YgcmVzcG9uc2VKc29uLnJlc3VsdGFudFNwb3RDaGVjaykge1xuICAgICAgICAgICAgY29uc3QgY2hlY2tzID0gc3BvdGNoZWNrPy5jaGVja3MgfHwge307XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoY2hlY2tzKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgbWluRGVsYXkgPSAwO1xuICAgICAgICAgICAgICBzZWxlY3RlZFNwb3RDaGVjayA9IHNwb3RjaGVjaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tzLmFmdGVyRGVsYXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBjb25zdCBkZWxheSA9IHBhcnNlRmxvYXQoY2hlY2tzLmFmdGVyRGVsYXkpO1xuICAgICAgICAgICAgICBpZiAobWluRGVsYXkgPiBkZWxheSkge1xuICAgICAgICAgICAgICAgIG1pbkRlbGF5ID0gZGVsYXk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTcG90Q2hlY2sgPSBzcG90Y2hlY2s7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoc2VsZWN0ZWRTcG90Q2hlY2spLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGFmdGVyRGVsYXk6IG1pbkRlbGF5IH0pO1xuICAgICAgICAgICAgY29uc3QgYXBwZWFyYW5jZV9yZXNwb25zZSA9IGF3YWl0IHNldEFwcGVhcmFuY2UoXG4gICAgICAgICAgICAgIHNlbGVjdGVkU3BvdENoZWNrLFxuICAgICAgICAgICAgICBzY3JlZW4sXG4gICAgICAgICAgICAgIHN0YXRlLmRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHRyYWNlSWQsXG4gICAgICAgICAgICAgIHZhcmlhYmxlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhcHBlYXJhbmNlX3Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZUpzb24/LnJlYXNvbi50b1N0cmluZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWNlaXZlZCBzdGF0dXMgY29kZSAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH07XG4gIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IHNlbmRUcmFja0V2ZW50UmVxdWVzdCA9IGFzeW5jICh7IHNjcmVlbiwgZXZlbnQgfTogVHJhY2tFdmVudFByb3BzKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaW50TWF4ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuZ2V0U3RhdGUoKTtcbiAgICBsZXQgc2VsZWN0ZWRTcG90Q2hlY2tJRCA9IGludE1heDtcbiAgICBsZXQgeyBpc1Nwb3RQYXNzZWQgfSA9IHN0YXRlO1xuICAgIGlmIChzdGF0ZS5jdXN0b21FdmVudHNTcG90Q2hlY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGV2ZW50S2V5cyA9IE9iamVjdC5rZXlzKGV2ZW50KTtcbiAgICAgIGZvciAoY29uc3Qgc3BvdENoZWNrIG9mIHN0YXRlLmN1c3RvbUV2ZW50c1Nwb3RDaGVja3MpIHtcbiAgICAgICAgY29uc3QgY2hlY2tzID0gc3BvdENoZWNrPy5bJ2NoZWNrcyddID8/IHNwb3RDaGVjaz8uWydjaGVja0NvbmRpdGlvbiddO1xuXG4gICAgICAgIGlmIChjaGVja3MpIHtcbiAgICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IGNoZWNrcz8uY3VzdG9tRXZlbnQ7XG5cbiAgICAgICAgICBpZiAoZXZlbnRLZXlzLmluY2x1ZGVzKGN1c3RvbUV2ZW50Py5ldmVudE5hbWUpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFNwb3RDaGVja0lEID1cbiAgICAgICAgICAgICAgc3BvdENoZWNrPy5bJ2lkJ10gPz8gc3BvdENoZWNrPy5bJ3Nwb3RDaGVja0lkJ10gPz8gaW50TWF4O1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRTcG90Q2hlY2tJRCAhPT0gaW50TWF4KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgc2NyZWVuTmFtZTogc2NyZWVuLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogc3RhdGUudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzOiBzdGF0ZS5zY3JlZW53aXNlVXNlckRldGFpbHNbc2NyZWVuXSB8fCB7fSxcbiAgICAgICAgICAgICAgICB2aXNpdG9yOiB7XG4gICAgICAgICAgICAgICAgICBkZXZpY2VUeXBlOiAnTU9CSUxFJyxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbTogYXdhaXQgZ2V0T1MoKSxcbiAgICAgICAgICAgICAgICAgIHNjcmVlblJlc29sdXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgdGltZXpvbmU6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNwb3RDaGVja0lkOiBzZWxlY3RlZFNwb3RDaGVja0lELFxuICAgICAgICAgICAgICAgIGV2ZW50VHJpZ2dlcjoge1xuICAgICAgICAgICAgICAgICAgY3VzdG9tRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHJhY2VJZDogc3RhdGUudHJhY2VJZCxcbiAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzOiBzdGF0ZS5jdXN0b21Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IGBodHRwczovLyR7c3RhdGUuZG9tYWluTmFtZX0vYXBpL2ludGVybmFsL3Nwb3RjaGVjay93aWRnZXQvJHtzdGF0ZS50YXJnZXRUb2tlbn0vZXZlbnRUcmlnZ2VyP2lzU3BvdENoZWNrPXRydWVgO1xuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KHVybCwgcGF5bG9hZCwge1xuICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VKc29uID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUpzb24/LnNob3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VKc29uPy5zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwZWFyYW5jZV9yZXNwb25zZSA9IGF3YWl0IHNldEFwcGVhcmFuY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5kb21haW5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUudHJhY2VJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnZhcmlhYmxlc1xuICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwZWFyYW5jZV9yZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuc2V0U3RhdGUoeyBpc1Nwb3RQYXNzZWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Nwb3RQYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKCFpc1Nwb3RQYXNzZWQgJiYgcmVzcG9uc2VKc29uPy5ldmVudFNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlSnNvbj8uY2hlY2tDb25kaXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrQ29uZGl0aW9uID0gcmVzcG9uc2VKc29uPy5jaGVja0NvbmRpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckRlbGF5OiBjaGVja0NvbmRpdGlvbj8uYWZ0ZXJEZWxheSA/PyAwLFxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrQ29uZGl0aW9uPy5jdXN0b21FdmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyRGVsYXk6IGNoZWNrQ29uZGl0aW9uPy5jdXN0b21FdmVudD8uZGVsYXlJblNlY29uZHMgPz8gMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcGVhcmFuY2VfcmVzcG9uc2UgPSBhd2FpdCBzZXRBcHBlYXJhbmNlKFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4sXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZG9tYWluTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnZhcmlhYmxlc1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBlYXJhbmNlX3Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2VKc29uPy5yZWFzb24udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVjZWl2ZWQgc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJycpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfTtcbiAgfVxufTsiXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5ndWxhci11aS9saWIvc3BvdGNoZWNrcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTcG90Y2hlY2tTdGF0ZSB7XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAgc3BvdGNoZWNrUG9zaXRpb246IHN0cmluZztcbiAgc3BvdGNoZWNrVVJMOiBzdHJpbmc7XG4gIHNwb3RjaGVja0lEOiBudW1iZXI7XG4gIHNwb3RjaGVja0NvbnRhY3RJRDogbnVtYmVyO1xuICBhZnRlckRlbGF5OiBudW1iZXI7XG4gIG1heEhlaWdodDogbnVtYmVyO1xuICBjdXJyZW50UXVlc3Rpb25IZWlnaHQ6IG51bWJlcjtcbiAgaXNGdWxsU2NyZWVuTW9kZTogYm9vbGVhbjtcbiAgaXNCYW5uZXJJbWFnZU9uOiBib29sZWFuO1xuICB0cmlnZ2VyVG9rZW46IHN0cmluZztcbiAgY2xvc2VCdXR0b25TdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgaXNDbG9zZUJ1dHRvbkVuYWJsZWQ6IGJvb2xlYW47XG4gIGlzU3BvdFBhc3NlZDogYm9vbGVhbjtcbiAgaXNDaGVja3NQYXNzZWQ6IGJvb2xlYW47XG4gIGN1c3RvbUV2ZW50c1Nwb3RDaGVja3M6IFJlY29yZDxzdHJpbmcsIGFueT5bXTtcbiAgdGFyZ2V0VG9rZW46IHN0cmluZztcbiAgZG9tYWluTmFtZTogc3RyaW5nO1xuICB1c2VyRGV0YWlsczogVXNlckRldGFpbHM7XG4gIHZhcmlhYmxlczogVmFyaWFibGVzO1xuICBjdXN0b21Qcm9wZXJ0aWVzOiBDdXN0b21Qcm9wZXJ0aWVzO1xuICB0cmFjZUlkOiBzdHJpbmc7XG4gIGlzQ2xhc3NpY0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzQ2hhdExvYWRpbmc6IGJvb2xlYW47XG4gIGNsYXNzaWNVcmw6IHN0cmluZztcbiAgY2hhdFVybDogc3RyaW5nO1xuICBjbGFzc2ljV2ViVmlld1JlZjogYW55IHwgbnVsbDtcbiAgY2hhdFdlYlZpZXdSZWY6IGFueSB8IG51bGw7XG4gIGZpbHRlcmVkU3BvdENoZWNrczogUmVjb3JkPHN0cmluZywgYW55PltdO1xuICBzcG90Q2hlY2tUeXBlOiBTdHJpbmc7XG4gIGlzTW91bnRlZDogYm9vbGVhbjtcbiAgdGV4dFBvc2l0aW9uOiBudW1iZXI7XG4gIHNjcmVlbkhlaWdodDogbnVtYmVyO1xuICBrZXlCb2FyZEhlaWdodDogbnVtYmVyO1xuICBzcG90Q2hlY2tzTW9kZTogc3RyaW5nO1xuICBhdmF0YXJFbmFibGVkOiBib29sZWFuO1xuICBhdmF0YXJVcmw6IHN0cmluZztcbiAgc2NyZWVud2lzZVVzZXJEZXRhaWxzOiBSZWNvcmQ8c3RyaW5nLCBVc2VyRGV0YWlscyB8IHVuZGVmaW5lZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckRldGFpbHMge1xuICB1dWlkPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICBsYXN0TmFtZT86IHN0cmluZztcbiAgbW9iaWxlPzogbnVtYmVyO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzIHtcbiAgc3BhcnJvd0xhbmc/OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21Qcm9wZXJ0aWVzIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrU2NyZWVuUHJvcHMge1xuICBzY3JlZW46IHN0cmluZztcbiAgb3B0aW9ucz86IHtcbiAgICB2YXJpYWJsZXM/OiBWYXJpYWJsZXM7XG4gICAgY3VzdG9tUHJvcGVydGllcz86IEN1c3RvbVByb3BlcnRpZXM7XG4gICAgdXNlckRldGFpbHM/OiBVc2VyRGV0YWlscztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja0V2ZW50UHJvcHMge1xuICBzY3JlZW46IHN0cmluZztcbiAgZXZlbnQ6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplU3BvdENoZWNrc1Byb3BzIHtcbiAgZG9tYWluTmFtZTogc3RyaW5nO1xuICB0YXJnZXRUb2tlbjogc3RyaW5nO1xuICB1c2VyRGV0YWlscz86IFVzZXJEZXRhaWxzO1xuICB2YXJpYWJsZXM/OiBWYXJpYWJsZXM7XG4gIGN1c3RvbVByb3BlcnRpZXM/OiBDdXN0b21Qcm9wZXJ0aWVzO1xufVxuIl19
|
|
@@ -47,6 +47,7 @@ class SpotcheckStateService {
|
|
|
47
47
|
spotChecksMode: '',
|
|
48
48
|
avatarEnabled: false,
|
|
49
49
|
avatarUrl: '',
|
|
50
|
+
screenwiseUserDetails: {}
|
|
50
51
|
};
|
|
51
52
|
spotcheckState = new BehaviorSubject(this.initialState);
|
|
52
53
|
state$ = this.spotcheckState.asObservable();
|
|
@@ -727,17 +728,17 @@ const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
727
728
|
try {
|
|
728
729
|
const spotcheckStateService = getSpotcheckStateService();
|
|
729
730
|
const oldState = spotcheckStateService.getState();
|
|
730
|
-
let variables = {};
|
|
731
|
-
let customProperties = {};
|
|
732
|
-
let userDetails = {};
|
|
731
|
+
let variables = { ...oldState.variables };
|
|
732
|
+
let customProperties = { ...oldState.customProperties };
|
|
733
|
+
let userDetails = { ...oldState.userDetails };
|
|
733
734
|
if (options && options.variables && Object.keys(options.variables).length > 0) {
|
|
734
|
-
variables = { ...
|
|
735
|
+
variables = { ...variables, ...options.variables };
|
|
735
736
|
}
|
|
736
737
|
if (options && options.customProperties && Object.keys(options.customProperties).length > 0) {
|
|
737
|
-
customProperties = { ...
|
|
738
|
+
customProperties = { ...customProperties, ...options.customProperties };
|
|
738
739
|
}
|
|
739
740
|
if (options && options.userDetails && Object.keys(options.userDetails).length > 0) {
|
|
740
|
-
userDetails = { ...
|
|
741
|
+
userDetails = { ...userDetails, ...options.userDetails };
|
|
741
742
|
}
|
|
742
743
|
let traceId = oldState.traceId;
|
|
743
744
|
if (!traceId) {
|
|
@@ -751,16 +752,16 @@ const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
751
752
|
}
|
|
752
753
|
spotcheckStateService.setState({
|
|
753
754
|
traceId,
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
755
|
+
screenwiseUserDetails: {
|
|
756
|
+
[screen]: userDetails
|
|
757
|
+
},
|
|
757
758
|
});
|
|
758
759
|
const state = spotcheckStateService.getState();
|
|
759
760
|
let { isSpotPassed, isChecksPassed } = state;
|
|
760
761
|
const payload = {
|
|
761
762
|
screenName: screen,
|
|
762
|
-
variables:
|
|
763
|
-
userDetails:
|
|
763
|
+
variables: variables,
|
|
764
|
+
userDetails: userDetails,
|
|
764
765
|
visitor: {
|
|
765
766
|
deviceType: 'MOBILE',
|
|
766
767
|
operatingSystem: await getOS(),
|
|
@@ -772,9 +773,9 @@ const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
772
773
|
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
773
774
|
},
|
|
774
775
|
traceId: state.traceId,
|
|
775
|
-
customProperties:
|
|
776
|
+
customProperties: customProperties,
|
|
776
777
|
};
|
|
777
|
-
const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/properties?isSpotCheck=true
|
|
778
|
+
const url = `https://${state.domainName}/api/internal/spotcheck/widget/${state.targetToken}/properties?isSpotCheck=true`;
|
|
778
779
|
const response = await axios.post(url, payload, {
|
|
779
780
|
headers: {
|
|
780
781
|
'Content-Type': 'application/json',
|
|
@@ -787,7 +788,7 @@ const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
787
788
|
}
|
|
788
789
|
if (responseJson?.show) {
|
|
789
790
|
if (responseJson?.show) {
|
|
790
|
-
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId,
|
|
791
|
+
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId, variables);
|
|
791
792
|
if (appearance_response) {
|
|
792
793
|
isSpotPassed = true;
|
|
793
794
|
spotcheckStateService.setState({ isSpotPassed });
|
|
@@ -807,7 +808,7 @@ const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
807
808
|
throw new Error('');
|
|
808
809
|
}
|
|
809
810
|
}
|
|
810
|
-
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId,
|
|
811
|
+
const appearance_response = await setAppearance(responseJson, screen, state.domainName, traceId, variables);
|
|
811
812
|
if (appearance_response) {
|
|
812
813
|
isChecksPassed = true;
|
|
813
814
|
spotcheckStateService.setState({ isChecksPassed });
|
|
@@ -835,7 +836,7 @@ const sendTrackScreenRequest = async ({ screen, options, }) => {
|
|
|
835
836
|
}
|
|
836
837
|
if (Object.keys(selectedSpotCheck).length > 0) {
|
|
837
838
|
spotcheckStateService.setState({ afterDelay: minDelay });
|
|
838
|
-
const appearance_response = await setAppearance(selectedSpotCheck, screen, state.domainName, traceId,
|
|
839
|
+
const appearance_response = await setAppearance(selectedSpotCheck, screen, state.domainName, traceId, variables);
|
|
839
840
|
if (appearance_response) {
|
|
840
841
|
return { valid: true };
|
|
841
842
|
}
|
|
@@ -867,20 +868,11 @@ const sendTrackEventRequest = async ({ screen, event }) => {
|
|
|
867
868
|
if (eventKeys.includes(customEvent?.eventName)) {
|
|
868
869
|
selectedSpotCheckID =
|
|
869
870
|
spotCheck?.['id'] ?? spotCheck?.['spotCheckId'] ?? intMax;
|
|
870
|
-
let payloadUserDetails = { ...state.userDetails };
|
|
871
871
|
if (selectedSpotCheckID !== intMax) {
|
|
872
|
-
if (!payloadUserDetails?.email &&
|
|
873
|
-
!payloadUserDetails?.uuid &&
|
|
874
|
-
!payloadUserDetails?.mobile) {
|
|
875
|
-
const uuid = getStoredUUID();
|
|
876
|
-
if (uuid) {
|
|
877
|
-
payloadUserDetails.uuid = uuid;
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
872
|
const payload = {
|
|
881
873
|
screenName: screen,
|
|
882
874
|
variables: state.variables,
|
|
883
|
-
userDetails:
|
|
875
|
+
userDetails: state.screenwiseUserDetails[screen] || {},
|
|
884
876
|
visitor: {
|
|
885
877
|
deviceType: 'MOBILE',
|
|
886
878
|
operatingSystem: await getOS(),
|