@posiwise/admin-module 0.0.66 → 0.0.67
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/esm2022/index.mjs +1 -2
- package/esm2022/lib/admin-guard.service.mjs +3 -3
- package/esm2022/lib/admin-module.routing.mjs +4 -4
- package/esm2022/lib/admin.module.mjs +6 -6
- package/esm2022/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +6 -6
- package/esm2022/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +7 -7
- package/esm2022/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +3 -3
- package/esm2022/lib/components/config/global-config-details/global-config-details.component.mjs +7 -7
- package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +6 -6
- package/esm2022/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +3 -3
- package/esm2022/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +6 -6
- package/esm2022/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +3 -3
- package/esm2022/lib/components/credentials/credentials/credentials.component.mjs +6 -6
- package/esm2022/lib/components/credentials/credentials-details/credentials-details.component.mjs +7 -7
- package/esm2022/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +3 -3
- package/esm2022/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +6 -6
- package/esm2022/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +6 -6
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +7 -7
- package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +6 -6
- package/esm2022/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +3 -3
- package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +7 -7
- package/esm2022/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +3 -3
- package/esm2022/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +7 -7
- package/esm2022/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +6 -6
- package/esm2022/lib/components/generic/generic-insight/generic-insight.component.mjs +3 -3
- package/esm2022/lib/components/generic/generic-misc/generic-misc.component.mjs +6 -6
- package/esm2022/lib/components/generic/generic-tabs/generic-tabs.component.mjs +3 -3
- package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +7 -7
- package/esm2022/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +3 -3
- package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +7 -7
- package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +7 -7
- package/esm2022/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +3 -3
- package/esm2022/lib/components/permissions/permissions-details/permissions-details.component.mjs +7 -7
- package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +6 -6
- package/esm2022/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +3 -3
- package/esm2022/lib/components/permissions/role-details/role-details.component.mjs +7 -7
- package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +6 -6
- package/esm2022/lib/components/products/product-details/product-details.component.mjs +7 -7
- package/esm2022/lib/components/products/products-insight/products-insight.component.mjs +3 -3
- package/esm2022/lib/components/products/products-list/products-list.component.mjs +3 -3
- package/esm2022/lib/components/products/products-tabs/products-tabs.component.mjs +3 -3
- package/esm2022/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +7 -7
- package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +3 -3
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +6 -6
- package/esm2022/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tags/tags-category/tags-category.component.mjs +3 -3
- package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +5 -5
- package/esm2022/lib/components/tags/tags-tabs/tags-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tips/tip-detail/tip-detail.component.mjs +5 -5
- package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +3 -3
- package/esm2022/lib/components/tips/tips-tabs/tips-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +3 -3
- package/esm2022/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +3 -3
- package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +3 -3
- package/esm2022/lib/components/tracking/events/events.component.mjs +3 -3
- package/esm2022/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tracking/versions/versions.component.mjs +3 -3
- package/esm2022/lib/components/users/user-details/user-details.component.mjs +7 -7
- package/esm2022/lib/components/users/users-insight/users-insight.component.mjs +6 -6
- package/esm2022/lib/components/users/users-list/users-list.component.mjs +6 -6
- package/esm2022/lib/components/users/users-tabs/users-tabs.component.mjs +3 -3
- package/fesm2022/posiwise-admin-module.mjs +316 -1056
- package/fesm2022/posiwise-admin-module.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +1 -1
- package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +1 -1
- package/lib/components/config/global-config-details/global-config-details.component.d.ts +1 -1
- package/lib/components/config/global-config-list/global-config-list.component.d.ts +1 -1
- package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +1 -1
- package/lib/components/credentials/credentials/credentials.component.d.ts +1 -1
- package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +1 -1
- package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +1 -1
- package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +1 -1
- package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +1 -1
- package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +1 -1
- package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +1 -1
- package/lib/components/generic/generic-misc/generic-misc.component.d.ts +1 -1
- package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +1 -1
- package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +1 -1
- package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +1 -1
- package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +1 -1
- package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +1 -1
- package/lib/components/permissions/role-details/role-details.component.d.ts +1 -1
- package/lib/components/permissions/roles-list/roles-list.component.d.ts +1 -1
- package/lib/components/products/product-details/product-details.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +1 -1
- package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +1 -1
- package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +1 -1
- package/lib/components/users/user-details/user-details.component.d.ts +1 -1
- package/lib/components/users/users-insight/users-insight.component.d.ts +1 -1
- package/lib/components/users/users-list/users-list.component.d.ts +1 -1
- package/package.json +1 -1
- package/esm2022/lib/admin.service.mjs +0 -411
- package/esm2022/lib/shared/models/admin.model.mjs +0 -338
- package/lib/admin.service.d.ts +0 -145
- package/lib/shared/models/admin.model.d.ts +0 -29
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ADMIN_PATH } from '@posiwise/common-utilities';
|
|
3
|
-
import { HelperService } from '@posiwise/helper-service';
|
|
4
|
-
import { MainApiHttpService } from '@posiwise/common-services';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@posiwise/common-services";
|
|
7
|
-
export class AdminService {
|
|
8
|
-
constructor(api) {
|
|
9
|
-
this.api = api;
|
|
10
|
-
this.endpoint = ADMIN_PATH;
|
|
11
|
-
this.newsletters = '/newsletters';
|
|
12
|
-
this.newslettersItems = '/newsletter_items';
|
|
13
|
-
this.permissions = '/admin/permissions';
|
|
14
|
-
this.ahoy = '/ahoy';
|
|
15
|
-
this.subscriptionCredentials = '/subscription_credentials';
|
|
16
|
-
this.globalConfigs = '/global_configs';
|
|
17
|
-
this.feedbackQuestionsUrl = `${ADMIN_PATH}/feedback_questions`;
|
|
18
|
-
this.contactUs = `${ADMIN_PATH}/contact_us`;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* User API
|
|
22
|
-
* @param page
|
|
23
|
-
* @param pageSize
|
|
24
|
-
* @param search
|
|
25
|
-
*/
|
|
26
|
-
getUsers(paging, params) {
|
|
27
|
-
return this.api.getWithParams(`${this.endpoint}/users/get_all`, {
|
|
28
|
-
...HelperService.getPagingParams(paging),
|
|
29
|
-
...params
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
postAgent(id, data) {
|
|
33
|
-
return this.api.post(`${ADMIN_PATH}/subscriptions/${id}/agents`, data);
|
|
34
|
-
}
|
|
35
|
-
getAgents(id) {
|
|
36
|
-
return this.api.get(`${ADMIN_PATH}/subscriptions/${id}/agents`);
|
|
37
|
-
}
|
|
38
|
-
getAgentById(subscription_id, agent_id) {
|
|
39
|
-
return this.api.get(`${ADMIN_PATH}/subscriptions/${subscription_id}/agents/${agent_id}`);
|
|
40
|
-
}
|
|
41
|
-
destroyAgent(id, agent_id) {
|
|
42
|
-
return this.api.delete(`${ADMIN_PATH}/subscriptions/${id}/agents/${agent_id}`);
|
|
43
|
-
}
|
|
44
|
-
inspectAgent(type) {
|
|
45
|
-
return this.api.getWithParams(`${ADMIN_PATH}/inspect`, { type });
|
|
46
|
-
}
|
|
47
|
-
updateSubscriptionProduct(data) {
|
|
48
|
-
return this.api.put(`${ADMIN_PATH}/subscription_product`, data);
|
|
49
|
-
}
|
|
50
|
-
getSubscriptionProduct(id, subscription_id) {
|
|
51
|
-
return this.api.getWithParams(`${ADMIN_PATH}/subscription_product/${id}`, {
|
|
52
|
-
subscription_id
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
getUserById(id, subscription_id) {
|
|
56
|
-
return this.api.getWithParams(`/users/${id}`, { subscription_id });
|
|
57
|
-
}
|
|
58
|
-
deleteUser(id, subscription_id) {
|
|
59
|
-
return this.api.delete(`/user/?id=${id}&subscription_id=${subscription_id}`);
|
|
60
|
-
}
|
|
61
|
-
createUser(user) {
|
|
62
|
-
return this.api.post('/admin/users', user);
|
|
63
|
-
}
|
|
64
|
-
getUsersInsight(subscription_id) {
|
|
65
|
-
return this.api.get(`/admin/users_analytics?type=users&subscription_id=${subscription_id}`);
|
|
66
|
-
}
|
|
67
|
-
saveUserDetails(user) {
|
|
68
|
-
const formData = new FormData();
|
|
69
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
70
|
-
for (const key in user) {
|
|
71
|
-
if (key in user) {
|
|
72
|
-
formData.append(key, user[key]);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return this.api.put('/user', formData);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Roles Management
|
|
79
|
-
* @param page
|
|
80
|
-
* @param pageSize
|
|
81
|
-
* @param search
|
|
82
|
-
*/
|
|
83
|
-
getRoles(paging, subscription_id) {
|
|
84
|
-
return this.api.getWithParams('/admin/roles/get_all', {
|
|
85
|
-
...HelperService.getPagingParams(paging),
|
|
86
|
-
subscription_id
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
deleteRole(id) {
|
|
90
|
-
return this.api.delete(`${this.endpoint}/roles/${id}`);
|
|
91
|
-
}
|
|
92
|
-
saveRole(role, id) {
|
|
93
|
-
return this.api.put(`${this.endpoint}/roles/${id}`, role);
|
|
94
|
-
}
|
|
95
|
-
addRole(role) {
|
|
96
|
-
return this.api.post(`${this.endpoint}/roles`, role);
|
|
97
|
-
}
|
|
98
|
-
// User Roles
|
|
99
|
-
getUserRole(id, subscription_id) {
|
|
100
|
-
return this.api.getWithParams(`/users/${id}/roles`, { subscription_id });
|
|
101
|
-
}
|
|
102
|
-
saveUserRole(userId, role_id, subscription_id) {
|
|
103
|
-
return this.api.post(`/admin/user_roles/`, { id: userId, role_id, subscription_id });
|
|
104
|
-
}
|
|
105
|
-
deleteUserRole(userId, role_id, subscription_id) {
|
|
106
|
-
return this.api.delete(`/admin/user_roles?role_id=${role_id}&id=${userId}&subscription_id=${subscription_id}`);
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Newsletter API
|
|
110
|
-
*/
|
|
111
|
-
getNewsletters(paging, subscription_id) {
|
|
112
|
-
return this.api.getWithParams(`${this.newsletters}/get_all`, {
|
|
113
|
-
...HelperService.getPagingParams(paging),
|
|
114
|
-
subscription_id
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
getNewsletterById(id) {
|
|
118
|
-
return this.api.get(`${this.newsletters}/${id}`);
|
|
119
|
-
}
|
|
120
|
-
deleteNewsletter(id, subscription_id) {
|
|
121
|
-
return this.api.delete(`${this.newsletters}/${id}?subscription_id=${subscription_id}`);
|
|
122
|
-
}
|
|
123
|
-
updateNewsletter(data, id) {
|
|
124
|
-
return this.api.put(`${this.newsletters}/${id}`, data);
|
|
125
|
-
}
|
|
126
|
-
addNewsletter(data) {
|
|
127
|
-
return this.api.post(this.newsletters, data);
|
|
128
|
-
}
|
|
129
|
-
getNewsletterInsight() {
|
|
130
|
-
return this.api.get('/admin/newsletters_analytics?type=global');
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Newsletters Items API
|
|
134
|
-
*/
|
|
135
|
-
getNewslettersItems(paging, subscription_id) {
|
|
136
|
-
return this.api.getWithParams(`${this.newslettersItems}/get_all`, {
|
|
137
|
-
...HelperService.getPagingParams(paging),
|
|
138
|
-
subscription_id
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
getNewsletterItemById(id, subscription_id) {
|
|
142
|
-
return this.api.getWithParams(`${this.newslettersItems}/${id}`, { subscription_id });
|
|
143
|
-
}
|
|
144
|
-
deleteNewsletterItem(id) {
|
|
145
|
-
return this.api.delete(`${this.newslettersItems}/${id}`);
|
|
146
|
-
}
|
|
147
|
-
updateNewsletterItem(data, id) {
|
|
148
|
-
return this.api.put(`${this.newslettersItems}/${id}`, data);
|
|
149
|
-
}
|
|
150
|
-
addNewsletterItem(data) {
|
|
151
|
-
return this.api.post(`${this.newslettersItems}`, data);
|
|
152
|
-
}
|
|
153
|
-
getNewsletterItemUserList(id, subscription_id, paging) {
|
|
154
|
-
return this.api.getWithParams(`${this.newslettersItems}/${id}/insights?subscription_id=${subscription_id}`, HelperService.getPagingParams(paging));
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Subscription API
|
|
158
|
-
*/
|
|
159
|
-
getSubscriptions(feature_keys, subscription_status, paging, subscription_id) {
|
|
160
|
-
return this.api.getWithParams(`${this.endpoint}/subscriptions/get_all`, {
|
|
161
|
-
feature_keys,
|
|
162
|
-
subscription_status,
|
|
163
|
-
...HelperService.getPagingParams(paging),
|
|
164
|
-
subscription_id
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
getSubscriptionAnalytics(type, subscription_id, starting_at, ending_at) {
|
|
168
|
-
return this.api.getWithParams(`/admin/subscriptions_analytics?type=${type}&subscription_id=${subscription_id}`, { starting_at, ending_at });
|
|
169
|
-
}
|
|
170
|
-
deleteSubscription(id, reqJson) {
|
|
171
|
-
return this.api.delete(`/subscriptions/${id}`, reqJson);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Permissions API
|
|
175
|
-
*/
|
|
176
|
-
getPermissions(paging) {
|
|
177
|
-
return this.api.getWithParams(`${this.permissions}/get_all`, HelperService.getPagingParams(paging));
|
|
178
|
-
}
|
|
179
|
-
getPermissionById(id) {
|
|
180
|
-
return this.api.get(`${this.endpoint}/permissions/${id}`);
|
|
181
|
-
}
|
|
182
|
-
savePermission(permission, id) {
|
|
183
|
-
return this.api.put(`${this.endpoint}/permissions/${id}`, permission);
|
|
184
|
-
}
|
|
185
|
-
addPermission(permission) {
|
|
186
|
-
return this.api.post(`${this.endpoint}/permissions`, permission);
|
|
187
|
-
}
|
|
188
|
-
deletePermission(id) {
|
|
189
|
-
return this.api.delete(`${this.endpoint}/permissions/${id}`);
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*/
|
|
195
|
-
postFaq(data, subscription_id) {
|
|
196
|
-
return this.api.post('/admin/faq', { ...data, subscription_id });
|
|
197
|
-
}
|
|
198
|
-
putFaq(data, subscription_id) {
|
|
199
|
-
return this.api.put(`/admin/faq/${data.id}`, { ...data, subscription_id });
|
|
200
|
-
}
|
|
201
|
-
deleteFaq(id, subscription_id) {
|
|
202
|
-
return this.api.delete(`/admin/faq/${id}?subscription_id=${subscription_id}`);
|
|
203
|
-
}
|
|
204
|
-
updateDB(type) {
|
|
205
|
-
return this.api.get(`/admin/update_db?type=${type}`);
|
|
206
|
-
}
|
|
207
|
-
flushRedis(type) {
|
|
208
|
-
return this.api.get(`/admin/rediscache_ops?type=${type}`);
|
|
209
|
-
}
|
|
210
|
-
flushMemcached(type) {
|
|
211
|
-
return this.api.get(`/admin/memcached_ops?type=${type}`);
|
|
212
|
-
}
|
|
213
|
-
saveSubscriptionRoles(data) {
|
|
214
|
-
return this.api.post('/admin/subscription_roles', data);
|
|
215
|
-
}
|
|
216
|
-
getSubscriptionRoles(id) {
|
|
217
|
-
return this.api.get(`/subscription_roles/${id}`);
|
|
218
|
-
}
|
|
219
|
-
saveProductRoles(data) {
|
|
220
|
-
return this.api.post(`/admin/product_roles`, data);
|
|
221
|
-
}
|
|
222
|
-
getProductsRoles(id) {
|
|
223
|
-
return this.api.get(`/admin/product_roles/${id}`);
|
|
224
|
-
}
|
|
225
|
-
saveUserSubscriptionRole(data) {
|
|
226
|
-
return this.api.post('/admin/user_roles', data);
|
|
227
|
-
}
|
|
228
|
-
deleteUserSubscriptionRole(data) {
|
|
229
|
-
return this.api.delete(`/admin/user_roles?role_id=${data.role_id}&id=${data.id}`);
|
|
230
|
-
}
|
|
231
|
-
sendTestMail(id, subscription_id) {
|
|
232
|
-
return this.api.getWithParams(`/newsletter_items/${id}/send_test_email`, {
|
|
233
|
-
subscription_id
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
getAllTos(paging, subscription_id) {
|
|
237
|
-
return this.api.getWithParams(`/product_privacy_services/get_all`, {
|
|
238
|
-
...HelperService.getPagingParams(paging),
|
|
239
|
-
subscription_id
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
deleteTos(id) {
|
|
243
|
-
return this.api.delete(`/product_privacy_services/${id}`);
|
|
244
|
-
}
|
|
245
|
-
postTos(data) {
|
|
246
|
-
return this.api.post(`/product_privacy_services`, data);
|
|
247
|
-
}
|
|
248
|
-
getTosDetails(id) {
|
|
249
|
-
return this.api.get(`/product_privacy_services/${id}`);
|
|
250
|
-
}
|
|
251
|
-
updateTos(id, data) {
|
|
252
|
-
return this.api.put(`/product_privacy_services/${id}`, data);
|
|
253
|
-
}
|
|
254
|
-
getAllCredentials(paging) {
|
|
255
|
-
return this.api.getWithParams(`/credentials/get_all`, HelperService.getPagingParams(paging));
|
|
256
|
-
}
|
|
257
|
-
deleteCredentials(id) {
|
|
258
|
-
return this.api.delete(`${this.endpoint}/credentials/${id}`);
|
|
259
|
-
}
|
|
260
|
-
saveCredentials(data) {
|
|
261
|
-
return this.api.post(`${this.endpoint}/credentials`, data);
|
|
262
|
-
}
|
|
263
|
-
updateCredentials(id, data) {
|
|
264
|
-
return this.api.put(`${this.endpoint}/credentials/${id}`, data);
|
|
265
|
-
}
|
|
266
|
-
getCredentialsDetails(id) {
|
|
267
|
-
return this.api.get(`${this.endpoint}/credentials/${id}`);
|
|
268
|
-
}
|
|
269
|
-
getAllSubscriptionCredentials(paging) {
|
|
270
|
-
return this.api.getWithParams(`${this.endpoint}${this.subscriptionCredentials}/get_all`, HelperService.getPagingParams(paging));
|
|
271
|
-
}
|
|
272
|
-
getSubscriptionCredentials(id, subscription_id) {
|
|
273
|
-
return this.api.get(`${this.subscriptionCredentials}/${id}?subscription_id=${subscription_id}`);
|
|
274
|
-
}
|
|
275
|
-
postSubscriptionCredential(data) {
|
|
276
|
-
return this.api.post(`${this.subscriptionCredentials}`, data);
|
|
277
|
-
}
|
|
278
|
-
editSubscriptionCredential(id, data) {
|
|
279
|
-
return this.api.put(`${this.subscriptionCredentials}/${id}`, data);
|
|
280
|
-
}
|
|
281
|
-
deleteSubscriptionCredential(id, subscription_id) {
|
|
282
|
-
return this.api.delete(`${this.subscriptionCredentials}/${id}?subscription_id=${subscription_id}`);
|
|
283
|
-
}
|
|
284
|
-
getAhoyEvents(paging) {
|
|
285
|
-
return this.api.getWithParams(`${this.ahoy}/events`, HelperService.getPagingParams(paging));
|
|
286
|
-
}
|
|
287
|
-
getAhoyMessages(paging) {
|
|
288
|
-
return this.api.getWithParams(`${this.ahoy}/messages`, paging);
|
|
289
|
-
}
|
|
290
|
-
getAhoyVisits(paging) {
|
|
291
|
-
return this.api.getWithParams(`${this.ahoy}/visits`, HelperService.getPagingParams(paging));
|
|
292
|
-
}
|
|
293
|
-
getVersions(paging) {
|
|
294
|
-
return this.api.getWithParams(`versions/get_all`, HelperService.getPagingParams(paging));
|
|
295
|
-
}
|
|
296
|
-
getEvents(paging) {
|
|
297
|
-
return this.api.getWithParams(`events/get_all`, HelperService.getPagingParams(paging));
|
|
298
|
-
}
|
|
299
|
-
getAllGlobalConfigs(paging) {
|
|
300
|
-
return this.api.getWithParams(`${this.globalConfigs}/get_all`, HelperService.getPagingParams(paging));
|
|
301
|
-
}
|
|
302
|
-
getGlobalConfigDetails(id) {
|
|
303
|
-
return this.api.get(`${this.globalConfigs}/${id}`);
|
|
304
|
-
}
|
|
305
|
-
postGlobalConfig(data) {
|
|
306
|
-
return this.api.post(`${this.globalConfigs}`, data);
|
|
307
|
-
}
|
|
308
|
-
editGlobalConfig(id, data) {
|
|
309
|
-
return this.api.put(`${this.globalConfigs}/${id}`, data);
|
|
310
|
-
}
|
|
311
|
-
deleteGlobalConfig(id) {
|
|
312
|
-
return this.api.delete(`${this.globalConfigs}/${id}`);
|
|
313
|
-
}
|
|
314
|
-
getAllFieldType() {
|
|
315
|
-
return this.api.get(`/global_configs/valid_field_types`);
|
|
316
|
-
}
|
|
317
|
-
// domain config
|
|
318
|
-
getAllDomainConfig(paging, subscription_id) {
|
|
319
|
-
return this.api.getWithParams(`${this.endpoint}/domains_metadata/get_all`, {
|
|
320
|
-
...HelperService.getPagingParams(paging),
|
|
321
|
-
subscription_id
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
deleteDomainConfig(id, subscription_id) {
|
|
325
|
-
return this.api.delete(`${this.endpoint}/domains_metadata/${id}?subscription_id=${subscription_id}`);
|
|
326
|
-
}
|
|
327
|
-
updateDomainConfig(id, data) {
|
|
328
|
-
return this.api.put(`${this.endpoint}/domains_metadata/${id}`, data);
|
|
329
|
-
}
|
|
330
|
-
createDomainConfig(data) {
|
|
331
|
-
return this.api.post(`${this.endpoint}/domains_metadata`, data);
|
|
332
|
-
}
|
|
333
|
-
getDomainConfigById(id, subscription_id) {
|
|
334
|
-
return this.api.getWithParams(`${this.endpoint}/domains_metadata/${id}`, {
|
|
335
|
-
subscription_id
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
getAvailableDomainOptions(subscription_id) {
|
|
339
|
-
return this.api.get(`${this.endpoint}/domains_metadata/available_domain_options?subscription_id=${subscription_id}`);
|
|
340
|
-
}
|
|
341
|
-
// login notifications
|
|
342
|
-
getAllLoginNotifications(paging, subscription_id) {
|
|
343
|
-
return this.api.getWithParams(`${this.endpoint}/login_notifications/get_all`, {
|
|
344
|
-
...HelperService.getPagingParams(paging),
|
|
345
|
-
subscription_id
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
createLoginNotification(data) {
|
|
349
|
-
return this.api.post(`${this.endpoint}/login_notifications`, data);
|
|
350
|
-
}
|
|
351
|
-
deleteLoginNotification(id, subscription_id) {
|
|
352
|
-
return this.api.delete(`login_notifications/${id}?subscription_id=${subscription_id}`);
|
|
353
|
-
}
|
|
354
|
-
updateLoginNotification(id, data) {
|
|
355
|
-
return this.api.put(`login_notifications/${id}`, data);
|
|
356
|
-
}
|
|
357
|
-
getLoginNotificationById(id, subscription_id) {
|
|
358
|
-
return this.api.getWithParams(`login_notifications/${id}`, {
|
|
359
|
-
subscription_id
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
getAvailableLoginNotificationTypes(subscription_id) {
|
|
363
|
-
return this.api.getWithParams(`login_notifications/available_types`, {
|
|
364
|
-
subscription_id
|
|
365
|
-
});
|
|
366
|
-
}
|
|
367
|
-
// feedback questions
|
|
368
|
-
getAllFeedbackQuestions(subscription_id, product_id, paging) {
|
|
369
|
-
return this.api.getWithParams(`${this.feedbackQuestionsUrl}/get_all`, {
|
|
370
|
-
subscription_id,
|
|
371
|
-
product_id,
|
|
372
|
-
...HelperService.getPagingParams(paging)
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
deleteFeedbackQuestion(id, subscription_id) {
|
|
376
|
-
return this.api.delete(`${this.feedbackQuestionsUrl}/${id}?subscription_id=${subscription_id}`);
|
|
377
|
-
}
|
|
378
|
-
updateFeedbackQuestion(id, data) {
|
|
379
|
-
return this.api.put(`${this.feedbackQuestionsUrl}/${id}`, data);
|
|
380
|
-
}
|
|
381
|
-
createFeedbackQuestion(data) {
|
|
382
|
-
return this.api.post(`${this.feedbackQuestionsUrl}`, data);
|
|
383
|
-
}
|
|
384
|
-
getDomainFeedbackQuestionById(id, subscription_id) {
|
|
385
|
-
return this.api.getWithParams(`${this.feedbackQuestionsUrl}/${id}`, { subscription_id });
|
|
386
|
-
}
|
|
387
|
-
// contact-us
|
|
388
|
-
getAllContactUs(subscription_id, product_id, closed, paging) {
|
|
389
|
-
return this.api.getWithParams(`${this.contactUs}/get_all`, {
|
|
390
|
-
subscription_id,
|
|
391
|
-
product_id,
|
|
392
|
-
...HelperService.getPagingParams(paging),
|
|
393
|
-
closed: closed || ''
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
updateContactUs(id, data) {
|
|
397
|
-
return this.api.put(`${this.contactUs}/${id}`, data);
|
|
398
|
-
}
|
|
399
|
-
remove2fa(userId, subscription_id) {
|
|
400
|
-
return this.api.put(`${ADMIN_PATH}/users/${userId}/remove_2fa`, { subscription_id });
|
|
401
|
-
}
|
|
402
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AdminService, deps: [{ token: i1.MainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
403
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AdminService, providedIn: 'root' }); }
|
|
404
|
-
}
|
|
405
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AdminService, decorators: [{
|
|
406
|
-
type: Injectable,
|
|
407
|
-
args: [{
|
|
408
|
-
providedIn: 'root'
|
|
409
|
-
}]
|
|
410
|
-
}], ctorParameters: () => [{ type: i1.MainApiHttpService }] });
|
|
411
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvYWRtaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFLL0QsTUFBTSxPQUFPLFlBQVk7SUFtQnJCLFlBQW9CLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBbEJuQyxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBRXRCLGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBRTdCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBRXZDLGdCQUFXLEdBQUcsb0JBQW9CLENBQUM7UUFFbkMsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQUVmLDRCQUF1QixHQUFHLDJCQUEyQixDQUFDO1FBRXRELGtCQUFhLEdBQUcsaUJBQWlCLENBQUM7UUFFbEMseUJBQW9CLEdBQUcsR0FBRyxVQUFVLHFCQUFxQixDQUFDO1FBRTFELGNBQVMsR0FBRyxHQUFHLFVBQVUsYUFBYSxDQUFDO0lBRUQsQ0FBQztJQUUvQzs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxNQUFlLEVBQUUsTUFBTztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsZ0JBQWdCLEVBQUU7WUFDNUQsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxHQUFHLE1BQU07U0FDWixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVUsRUFBRSxJ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QUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGFBQWE7SUFDYixlQUFlLENBQUMsZUFBdUIsRUFBRSxVQUFrQixFQUFFLE1BQWUsRUFBRSxNQUFlO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxVQUFVLEVBQUU7WUFDdkQsZUFBZTtZQUNmLFVBQVU7WUFDVixHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRTtTQUN2QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQVUsRUFBRSxJQUFJO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLGVBQXVCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLFVBQVUsTUFBTSxhQUFhLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7OEdBemhCUSxZQUFZO2tIQUFaLFlBQVksY0FGVCxNQUFNOzsyRkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQURNSU5fUEFUSCwgUGFnaW5nLCBVc2VyLCBSb2xlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBNYWluQXBpSHR0cFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pblNlcnZpY2Uge1xuICAgIHByaXZhdGUgZW5kcG9pbnQgPSBBRE1JTl9QQVRIO1xuXG4gICAgcHJpdmF0ZSBuZXdzbGV0dGVycyA9ICcvbmV3c2xldHRlcnMnO1xuXG4gICAgcHJpdmF0ZSBuZXdzbGV0dGVyc0l0ZW1zID0gJy9uZXdzbGV0dGVyX2l0ZW1zJztcblxuICAgIHByaXZhdGUgcGVybWlzc2lvbnMgPSAnL2FkbWluL3Blcm1pc3Npb25zJztcblxuICAgIHByaXZhdGUgYWhveSA9ICcvYWhveSc7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbkNyZWRlbnRpYWxzID0gJy9zdWJzY3JpcHRpb25fY3JlZGVudGlhbHMnO1xuXG4gICAgcHJpdmF0ZSBnbG9iYWxDb25maWdzID0gJy9nbG9iYWxfY29uZmlncyc7XG5cbiAgICBwcml2YXRlIGZlZWRiYWNrUXVlc3Rpb25zVXJsID0gYCR7QURNSU5fUEFUSH0vZmVlZGJhY2tfcXVlc3Rpb25zYDtcblxuICAgIHByaXZhdGUgY29udGFjdFVzID0gYCR7QURNSU5fUEFUSH0vY29udGFjdF91c2A7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgLyoqXG4gICAgICogVXNlciBBUElcbiAgICAgKiBAcGFyYW0gcGFnZVxuICAgICAqIEBwYXJhbSBwYWdlU2l6ZVxuICAgICAqIEBwYXJhbSBzZWFyY2hcbiAgICAgKi9cbiAgICBnZXRVc2VycyhwYWdpbmc/OiBQYWdpbmcsIHBhcmFtcz8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7dGhpcy5lbmRwb2ludH0vdXNlcnMvZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZyksXG4gICAgICAgICAgICAuLi5wYXJhbXNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcG9zdEFnZW50KGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7QURNSU5fUEFUSH0vc3Vic2NyaXB0aW9ucy8ke2lkfS9hZ2VudHNgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRBZ2VudHMoaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAke0FETUlOX1BBVEh9L3N1YnNjcmlwdGlvbnMvJHtpZH0vYWdlbnRzYCk7XG4gICAgfVxuXG4gICAgZ2V0QWdlbnRCeUlkKHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyLCBhZ2VudF9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYCR7QURNSU5fUEFUSH0vc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbl9pZH0vYWdlbnRzLyR7YWdlbnRfaWR9YCk7XG4gICAgfVxuXG4gICAgZGVzdHJveUFnZW50KGlkOiBudW1iZXIsIGFnZW50X2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgJHtBRE1JTl9QQVRIfS9zdWJzY3JpcHRpb25zLyR7aWR9L2FnZW50cy8ke2FnZW50X2lkfWApO1xuICAgIH1cblxuICAgIGluc3BlY3RBZ2VudCh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7QURNSU5fUEFUSH0vaW5zcGVjdGAsIHsgdHlwZSB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdWJzY3JpcHRpb25Qcm9kdWN0KGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHtBRE1JTl9QQVRIfS9zdWJzY3JpcHRpb25fcHJvZHVjdGAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldFN1YnNjcmlwdGlvblByb2R1Y3QoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke0FETUlOX1BBVEh9L3N1YnNjcmlwdGlvbl9wcm9kdWN0LyR7aWR9YCwge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFVzZXJCeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAvdXNlcnMvJHtpZH1gLCB7IHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVVc2VyKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC91c2VyLz9pZD0ke2lkfSZzdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuXG4gICAgY3JlYXRlVXNlcih1c2VyOiBVc2VyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvYWRtaW4vdXNlcnMnLCB1c2VyKTtcbiAgICB9XG5cbiAgICBnZXRVc2Vyc0luc2lnaHQoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL2FkbWluL3VzZXJzX2FuYWx5dGljcz90eXBlPXVzZXJzJnN1YnNjcmlwdGlvbl9pZD0ke3N1YnNjcmlwdGlvbl9pZH1gKTtcbiAgICB9XG5cbiAgICBzYXZlVXNlckRldGFpbHModXNlcjogVXNlcikge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB1c2VyKSB7XG4gICAgICAgICAgICBpZiAoa2V5IGluIHVzZXIpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB1c2VyW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dCgnL3VzZXInLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUm9sZXMgTWFuYWdlbWVudFxuICAgICAqIEBwYXJhbSBwYWdlXG4gICAgICogQHBhcmFtIHBhZ2VTaXplXG4gICAgICogQHBhcmFtIHNlYXJjaFxuICAgICAqL1xuXG4gICAgZ2V0Um9sZXMocGFnaW5nPzogUGFnaW5nLCBzdWJzY3JpcHRpb25faWQ/OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoJy9hZG1pbi9yb2xlcy9nZXRfYWxsJywge1xuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVSb2xlKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgJHt0aGlzLmVuZHBvaW50fS9yb2xlcy8ke2lkfWApO1xuICAgIH1cblxuICAgIHNhdmVSb2xlKHJvbGU6IFJvbGUsIGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmVuZHBvaW50fS9yb2xlcy8ke2lkfWAsIHJvbGUpO1xuICAgIH1cblxuICAgIGFkZFJvbGUocm9sZTogUm9sZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHt0aGlzLmVuZHBvaW50fS9yb2xlc2AsIHJvbGUpO1xuICAgIH1cblxuICAgIC8vIFVzZXIgUm9sZXNcbiAgICBnZXRVc2VyUm9sZShpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgL3VzZXJzLyR7aWR9L3JvbGVzYCwgeyBzdWJzY3JpcHRpb25faWQgfSk7XG4gICAgfVxuXG4gICAgc2F2ZVVzZXJSb2xlKHVzZXJJZDogbnVtYmVyLCByb2xlX2lkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvYWRtaW4vdXNlcl9yb2xlcy9gLCB7IGlkOiB1c2VySWQsIHJvbGVfaWQsIHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVVc2VyUm9sZSh1c2VySWQ6IG51bWJlciwgcm9sZV9pZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKFxuICAgICAgICAgICAgYC9hZG1pbi91c2VyX3JvbGVzP3JvbGVfaWQ9JHtyb2xlX2lkfSZpZD0ke3VzZXJJZH0mc3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOZXdzbGV0dGVyIEFQSVxuICAgICAqL1xuICAgIGdldE5ld3NsZXR0ZXJzKHBhZ2luZz86IFBhZ2luZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke3RoaXMubmV3c2xldHRlcnN9L2dldF9hbGxgLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE5ld3NsZXR0ZXJCeUlkKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLm5ld3NsZXR0ZXJzfS8ke2lkfWApO1xuICAgIH1cblxuICAgIGRlbGV0ZU5ld3NsZXR0ZXIoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgJHt0aGlzLm5ld3NsZXR0ZXJzfS8ke2lkfT9zdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTmV3c2xldHRlcihkYXRhLCBpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7dGhpcy5uZXdzbGV0dGVyc30vJHtpZH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICBhZGROZXdzbGV0dGVyKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QodGhpcy5uZXdzbGV0dGVycywgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0TmV3c2xldHRlckluc2lnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoJy9hZG1pbi9uZXdzbGV0dGVyc19hbmFseXRpY3M/dHlwZT1nbG9iYWwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOZXdzbGV0dGVycyBJdGVtcyBBUElcbiAgICAgKi9cbiAgICBnZXROZXdzbGV0dGVyc0l0ZW1zKHBhZ2luZz86IFBhZ2luZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke3RoaXMubmV3c2xldHRlcnNJdGVtc30vZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZyksXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TmV3c2xldHRlckl0ZW1CeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZD86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLm5ld3NsZXR0ZXJzSXRlbXN9LyR7aWR9YCwgeyBzdWJzY3JpcHRpb25faWQgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlTmV3c2xldHRlckl0ZW0oaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKGAke3RoaXMubmV3c2xldHRlcnNJdGVtc30vJHtpZH1gKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZXdzbGV0dGVySXRlbShkYXRhLCBpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7dGhpcy5uZXdzbGV0dGVyc0l0ZW1zfS8ke2lkfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGFkZE5ld3NsZXR0ZXJJdGVtKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7dGhpcy5uZXdzbGV0dGVyc0l0ZW1zfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldE5ld3NsZXR0ZXJJdGVtVXNlckxpc3QoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAke3RoaXMubmV3c2xldHRlcnNJdGVtc30vJHtpZH0vaW5zaWdodHM/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWAsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaXB0aW9uIEFQSVxuICAgICAqL1xuICAgIGdldFN1YnNjcmlwdGlvbnMoZmVhdHVyZV9rZXlzLCBzdWJzY3JpcHRpb25fc3RhdHVzLCBwYWdpbmc/OiBQYWdpbmcsIHN1YnNjcmlwdGlvbl9pZD86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmVuZHBvaW50fS9zdWJzY3JpcHRpb25zL2dldF9hbGxgLCB7XG4gICAgICAgICAgICBmZWF0dXJlX2tleXMsXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25fc3RhdHVzLFxuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRTdWJzY3JpcHRpb25BbmFseXRpY3ModHlwZTogc3RyaW5nLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlciwgc3RhcnRpbmdfYXQ/LCBlbmRpbmdfYXQ/KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYC9hZG1pbi9zdWJzY3JpcHRpb25zX2FuYWx5dGljcz90eXBlPSR7dHlwZX0mc3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWAsXG4gICAgICAgICAgICB7IHN0YXJ0aW5nX2F0LCBlbmRpbmdfYXQgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZVN1YnNjcmlwdGlvbihpZDogbnVtYmVyLCByZXFKc29uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC9zdWJzY3JpcHRpb25zLyR7aWR9YCwgcmVxSnNvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVybWlzc2lvbnMgQVBJXG4gICAgICovXG5cbiAgICBnZXRQZXJtaXNzaW9ucyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgJHt0aGlzLnBlcm1pc3Npb25zfS9nZXRfYWxsYCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBlcm1pc3Npb25CeUlkKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmVuZHBvaW50fS9wZXJtaXNzaW9ucy8ke2lkfWApO1xuICAgIH1cblxuICAgIHNhdmVQZXJtaXNzaW9uKHBlcm1pc3Npb246IFJvbGUsIGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmVuZHBvaW50fS9wZXJtaXNzaW9ucy8ke2lkfWAsIHBlcm1pc3Npb24pO1xuICAgIH1cblxuICAgIGFkZFBlcm1pc3Npb24ocGVybWlzc2lvbjogUm9sZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHt0aGlzLmVuZHBvaW50fS9wZXJtaXNzaW9uc2AsIHBlcm1pc3Npb24pO1xuICAgIH1cblxuICAgIGRlbGV0ZVBlcm1pc3Npb24oaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKGAke3RoaXMuZW5kcG9pbnR9L3Blcm1pc3Npb25zLyR7aWR9YCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKlxuICAgICAqL1xuXG4gICAgcG9zdEZhcShkYXRhLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL2FkbWluL2ZhcScsIHsgLi4uZGF0YSwgc3Vic2NyaXB0aW9uX2lkIH0pO1xuICAgIH1cblxuICAgIHB1dEZhcShkYXRhLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvYWRtaW4vZmFxLyR7ZGF0YS5pZH1gLCB7IC4uLmRhdGEsIHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVGYXEoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgL2FkbWluL2ZhcS8ke2lkfT9zdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuXG4gICAgdXBkYXRlREIodHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC9hZG1pbi91cGRhdGVfZGI/dHlwZT0ke3R5cGV9YCk7XG4gICAgfVxuXG4gICAgZmx1c2hSZWRpcyh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL2FkbWluL3JlZGlzY2FjaGVfb3BzP3R5cGU9JHt0eXBlfWApO1xuICAgIH1cblxuICAgIGZsdXNoTWVtY2FjaGVkKHR5cGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAvYWRtaW4vbWVtY2FjaGVkX29wcz90eXBlPSR7dHlwZX1gKTtcbiAgICB9XG5cbiAgICBzYXZlU3Vic2NyaXB0aW9uUm9sZXMoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL2FkbWluL3N1YnNjcmlwdGlvbl9yb2xlcycsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldFN1YnNjcmlwdGlvblJvbGVzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL3N1YnNjcmlwdGlvbl9yb2xlcy8ke2lkfWApO1xuICAgIH1cblxuICAgIHNhdmVQcm9kdWN0Um9sZXMoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgL2FkbWluL3Byb2R1Y3Rfcm9sZXNgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0c1JvbGVzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL2FkbWluL3Byb2R1Y3Rfcm9sZXMvJHtpZH1gKTtcbiAgICB9XG5cbiAgICBzYXZlVXNlclN1YnNjcmlwdGlvblJvbGUoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL2FkbWluL3VzZXJfcm9sZXMnLCBkYXRhKTtcbiAgICB9XG5cbiAgICBkZWxldGVVc2VyU3Vic2NyaXB0aW9uUm9sZShkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC9hZG1pbi91c2VyX3JvbGVzP3JvbGVfaWQ9JHtkYXRhLnJvbGVfaWR9JmlkPSR7ZGF0YS5pZH1gKTtcbiAgICB9XG5cbiAgICBzZW5kVGVzdE1haWwoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAvbmV3c2xldHRlcl9pdGVtcy8ke2lkfS9zZW5kX3Rlc3RfZW1haWxgLCB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsVG9zKHBhZ2luZz86IFBhZ2luZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAvcHJvZHVjdF9wcml2YWN5X3NlcnZpY2VzL2dldF9hbGxgLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZVRvcyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC9wcm9kdWN0X3ByaXZhY3lfc2VydmljZXMvJHtpZH1gKTtcbiAgICB9XG5cbiAgICBwb3N0VG9zKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYC9wcm9kdWN0X3ByaXZhY3lfc2VydmljZXNgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRUb3NEZXRhaWxzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL3Byb2R1Y3RfcHJpdmFjeV9zZXJ2aWNlcy8ke2lkfWApO1xuICAgIH1cblxuICAgIHVwZGF0ZVRvcyhpZDogbnVtYmVyLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYC9wcm9kdWN0X3ByaXZhY3lfc2VydmljZXMvJHtpZH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRBbGxDcmVkZW50aWFscyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgL2NyZWRlbnRpYWxzL2dldF9hbGxgLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZUNyZWRlbnRpYWxzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgJHt0aGlzLmVuZHBvaW50fS9jcmVkZW50aWFscy8ke2lkfWApO1xuICAgIH1cblxuICAgIHNhdmVDcmVkZW50aWFscyhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke3RoaXMuZW5kcG9pbnR9L2NyZWRlbnRpYWxzYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ3JlZGVudGlhbHMoaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuZW5kcG9pbnR9L2NyZWRlbnRpYWxzLyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0Q3JlZGVudGlhbHNEZXRhaWxzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmVuZHBvaW50fS9jcmVkZW50aWFscy8ke2lkfWApO1xuICAgIH1cblxuICAgIGdldEFsbFN1YnNjcmlwdGlvbkNyZWRlbnRpYWxzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAke3RoaXMuZW5kcG9pbnR9JHt0aGlzLnN1YnNjcmlwdGlvbkNyZWRlbnRpYWxzfS9nZXRfYWxsYCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRTdWJzY3JpcHRpb25DcmVkZW50aWFscyhpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KFxuICAgICAgICAgICAgYCR7dGhpcy5zdWJzY3JpcHRpb25DcmVkZW50aWFsc30vJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0U3Vic2NyaXB0aW9uQ3JlZGVudGlhbChkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke3RoaXMuc3Vic2NyaXB0aW9uQ3JlZGVudGlhbHN9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZWRpdFN1YnNjcmlwdGlvbkNyZWRlbnRpYWwoaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuc3Vic2NyaXB0aW9uQ3JlZGVudGlhbHN9LyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZGVsZXRlU3Vic2NyaXB0aW9uQ3JlZGVudGlhbChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKFxuICAgICAgICAgICAgYCR7dGhpcy5zdWJzY3JpcHRpb25DcmVkZW50aWFsc30vJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRBaG95RXZlbnRzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmFob3l9L2V2ZW50c2AsIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZykpO1xuICAgIH1cblxuICAgIGdldEFob3lNZXNzYWdlcyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7dGhpcy5haG95fS9tZXNzYWdlc2AsIHBhZ2luZyk7XG4gICAgfVxuXG4gICAgZ2V0QWhveVZpc2l0cyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7dGhpcy5haG95fS92aXNpdHNgLCBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpKTtcbiAgICB9XG5cbiAgICBnZXRWZXJzaW9ucyhwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYHZlcnNpb25zL2dldF9hbGxgLCBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpKTtcbiAgICB9XG5cbiAgICBnZXRFdmVudHMocGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGBldmVudHMvZ2V0X2FsbGAsIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZykpO1xuICAgIH1cblxuICAgIGdldEFsbEdsb2JhbENvbmZpZ3MocGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYCR7dGhpcy5nbG9iYWxDb25maWdzfS9nZXRfYWxsYCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRHbG9iYWxDb25maWdEZXRhaWxzKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmdsb2JhbENvbmZpZ3N9LyR7aWR9YCk7XG4gICAgfVxuXG4gICAgcG9zdEdsb2JhbENvbmZpZyhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAke3RoaXMuZ2xvYmFsQ29uZmlnc31gLCBkYXRhKTtcbiAgICB9XG5cbiAgICBlZGl0R2xvYmFsQ29uZmlnKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmdsb2JhbENvbmZpZ3N9LyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZGVsZXRlR2xvYmFsQ29uZmlnKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgJHt0aGlzLmdsb2JhbENvbmZpZ3N9LyR7aWR9YCk7XG4gICAgfVxuXG4gICAgZ2V0QWxsRmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAvZ2xvYmFsX2NvbmZpZ3MvdmFsaWRfZmllbGRfdHlwZXNgKTtcbiAgICB9XG5cbiAgICAvLyBkb21haW4gY29uZmlnXG5cbiAgICBnZXRBbGxEb21haW5Db25maWcocGFnaW5nPzogUGFnaW5nLCBzdWJzY3JpcHRpb25faWQ/OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYCR7dGhpcy5lbmRwb2ludH0vZG9tYWluc19tZXRhZGF0YS9nZXRfYWxsYCwge1xuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVEb21haW5Db25maWcoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShcbiAgICAgICAgICAgIGAke3RoaXMuZW5kcG9pbnR9L2RvbWFpbnNfbWV0YWRhdGEvJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVEb21haW5Db25maWcoaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuZW5kcG9pbnR9L2RvbWFpbnNfbWV0YWRhdGEvJHtpZH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICBjcmVhdGVEb21haW5Db25maWcoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHt0aGlzLmVuZHBvaW50fS9kb21haW5zX21ldGFkYXRhYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0RG9tYWluQ29uZmlnQnlJZChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmVuZHBvaW50fS9kb21haW5zX21ldGFkYXRhLyR7aWR9YCwge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEF2YWlsYWJsZURvbWFpbk9wdGlvbnMoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChcbiAgICAgICAgICAgIGAke3RoaXMuZW5kcG9pbnR9L2RvbWFpbnNfbWV0YWRhdGEvYXZhaWxhYmxlX2RvbWFpbl9vcHRpb25zP3N1YnNjcmlwdGlvbl9pZD0ke3N1YnNjcmlwdGlvbl9pZH1gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gbG9naW4gbm90aWZpY2F0aW9uc1xuICAgIGdldEFsbExvZ2luTm90aWZpY2F0aW9ucyhwYWdpbmc/OiBQYWdpbmcsIHN1YnNjcmlwdGlvbl9pZD86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmVuZHBvaW50fS9sb2dpbl9ub3RpZmljYXRpb25zL2dldF9hbGxgLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNyZWF0ZUxvZ2luTm90aWZpY2F0aW9uKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7dGhpcy5lbmRwb2ludH0vbG9naW5fbm90aWZpY2F0aW9uc2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGRlbGV0ZUxvZ2luTm90aWZpY2F0aW9uKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYGxvZ2luX25vdGlmaWNhdGlvbnMvJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWApO1xuICAgIH1cblxuICAgIHVwZGF0ZUxvZ2luTm90aWZpY2F0aW9uKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgbG9naW5fbm90aWZpY2F0aW9ucy8ke2lkfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldExvZ2luTm90aWZpY2F0aW9uQnlJZChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgbG9naW5fbm90aWZpY2F0aW9ucy8ke2lkfWAsIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBdmFpbGFibGVMb2dpbk5vdGlmaWNhdGlvblR5cGVzKHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGBsb2dpbl9ub3RpZmljYXRpb25zL2F2YWlsYWJsZV90eXBlc2AsIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBmZWVkYmFjayBxdWVzdGlvbnNcblxuICAgIGdldEFsbEZlZWRiYWNrUXVlc3Rpb25zKHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyLCBwcm9kdWN0X2lkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmZlZWRiYWNrUXVlc3Rpb25zVXJsfS9nZXRfYWxsYCwge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkLFxuICAgICAgICAgICAgcHJvZHVjdF9pZCxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlRmVlZGJhY2tRdWVzdGlvbihpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKFxuICAgICAgICAgICAgYCR7dGhpcy5mZWVkYmFja1F1ZXN0aW9uc1VybH0vJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVGZWVkYmFja1F1ZXN0aW9uKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmZlZWRiYWNrUXVlc3Rpb25zVXJsfS8ke2lkfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGNyZWF0ZUZlZWRiYWNrUXVlc3Rpb24oZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHt0aGlzLmZlZWRiYWNrUXVlc3Rpb25zVXJsfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldERvbWFpbkZlZWRiYWNrUXVlc3Rpb25CeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke3RoaXMuZmVlZGJhY2tRdWVzdGlvbnNVcmx9LyR7aWR9YCwgeyBzdWJzY3JpcHRpb25faWQgfSk7XG4gICAgfVxuXG4gICAgLy8gY29udGFjdC11c1xuICAgIGdldEFsbENvbnRhY3RVcyhzdWJzY3JpcHRpb25faWQ6IG51bWJlciwgcHJvZHVjdF9pZDogbnVtYmVyLCBjbG9zZWQ6IGJvb2xlYW4sIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmNvbnRhY3RVc30vZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZCxcbiAgICAgICAgICAgIHByb2R1Y3RfaWQsXG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpLFxuICAgICAgICAgICAgY2xvc2VkOiBjbG9zZWQgfHwgJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ29udGFjdFVzKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmNvbnRhY3RVc30vJHtpZH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICByZW1vdmUyZmEodXNlcklkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7QURNSU5fUEFUSH0vdXNlcnMvJHt1c2VySWR9L3JlbW92ZV8yZmFgLCB7IHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG59XG4iXX0=
|