@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.
Files changed (136) hide show
  1. package/esm2022/index.mjs +1 -2
  2. package/esm2022/lib/admin-guard.service.mjs +3 -3
  3. package/esm2022/lib/admin-module.routing.mjs +4 -4
  4. package/esm2022/lib/admin.module.mjs +6 -6
  5. package/esm2022/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +6 -6
  6. package/esm2022/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +7 -7
  7. package/esm2022/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +3 -3
  8. package/esm2022/lib/components/config/global-config-details/global-config-details.component.mjs +7 -7
  9. package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +6 -6
  10. package/esm2022/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +3 -3
  11. package/esm2022/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +6 -6
  12. package/esm2022/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +3 -3
  13. package/esm2022/lib/components/credentials/credentials/credentials.component.mjs +6 -6
  14. package/esm2022/lib/components/credentials/credentials-details/credentials-details.component.mjs +7 -7
  15. package/esm2022/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +3 -3
  16. package/esm2022/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +6 -6
  17. package/esm2022/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +7 -7
  18. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +7 -7
  19. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +7 -7
  20. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +6 -6
  21. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +7 -7
  22. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +7 -7
  23. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +7 -7
  24. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +7 -7
  25. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +7 -7
  26. package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +6 -6
  27. package/esm2022/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +3 -3
  28. package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +7 -7
  29. package/esm2022/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +3 -3
  30. package/esm2022/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +7 -7
  31. package/esm2022/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +6 -6
  32. package/esm2022/lib/components/generic/generic-insight/generic-insight.component.mjs +3 -3
  33. package/esm2022/lib/components/generic/generic-misc/generic-misc.component.mjs +6 -6
  34. package/esm2022/lib/components/generic/generic-tabs/generic-tabs.component.mjs +3 -3
  35. package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +7 -7
  36. package/esm2022/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +3 -3
  37. package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +6 -6
  38. package/esm2022/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +7 -7
  39. package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +7 -7
  40. package/esm2022/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +6 -6
  41. package/esm2022/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +6 -6
  42. package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +6 -6
  43. package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +6 -6
  44. package/esm2022/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +3 -3
  45. package/esm2022/lib/components/permissions/permissions-details/permissions-details.component.mjs +7 -7
  46. package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +6 -6
  47. package/esm2022/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +3 -3
  48. package/esm2022/lib/components/permissions/role-details/role-details.component.mjs +7 -7
  49. package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +6 -6
  50. package/esm2022/lib/components/products/product-details/product-details.component.mjs +7 -7
  51. package/esm2022/lib/components/products/products-insight/products-insight.component.mjs +3 -3
  52. package/esm2022/lib/components/products/products-list/products-list.component.mjs +3 -3
  53. package/esm2022/lib/components/products/products-tabs/products-tabs.component.mjs +3 -3
  54. package/esm2022/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +3 -3
  55. package/esm2022/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +7 -7
  56. package/esm2022/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +7 -7
  57. package/esm2022/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +7 -7
  58. package/esm2022/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +7 -7
  59. package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +3 -3
  60. package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +3 -3
  61. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +6 -6
  62. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +6 -6
  63. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +3 -3
  64. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +6 -6
  65. package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +6 -6
  66. package/esm2022/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +3 -3
  67. package/esm2022/lib/components/tags/tags-category/tags-category.component.mjs +3 -3
  68. package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +5 -5
  69. package/esm2022/lib/components/tags/tags-tabs/tags-tabs.component.mjs +3 -3
  70. package/esm2022/lib/components/tips/tip-detail/tip-detail.component.mjs +5 -5
  71. package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +3 -3
  72. package/esm2022/lib/components/tips/tips-tabs/tips-tabs.component.mjs +3 -3
  73. package/esm2022/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +3 -3
  74. package/esm2022/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +3 -3
  75. package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +3 -3
  76. package/esm2022/lib/components/tracking/events/events.component.mjs +3 -3
  77. package/esm2022/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +3 -3
  78. package/esm2022/lib/components/tracking/versions/versions.component.mjs +3 -3
  79. package/esm2022/lib/components/users/user-details/user-details.component.mjs +7 -7
  80. package/esm2022/lib/components/users/users-insight/users-insight.component.mjs +6 -6
  81. package/esm2022/lib/components/users/users-list/users-list.component.mjs +6 -6
  82. package/esm2022/lib/components/users/users-tabs/users-tabs.component.mjs +3 -3
  83. package/fesm2022/posiwise-admin-module.mjs +316 -1056
  84. package/fesm2022/posiwise-admin-module.mjs.map +1 -1
  85. package/index.d.ts +0 -1
  86. package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +1 -1
  87. package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +1 -1
  88. package/lib/components/config/global-config-details/global-config-details.component.d.ts +1 -1
  89. package/lib/components/config/global-config-list/global-config-list.component.d.ts +1 -1
  90. package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +1 -1
  91. package/lib/components/credentials/credentials/credentials.component.d.ts +1 -1
  92. package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +1 -1
  93. package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +1 -1
  94. package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +1 -1
  95. package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +1 -1
  96. package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +1 -1
  97. package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +1 -1
  98. package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +1 -1
  99. package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +1 -1
  100. package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +1 -1
  101. package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +1 -1
  102. package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +1 -1
  103. package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +1 -1
  104. package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +1 -1
  105. package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +1 -1
  106. package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +1 -1
  107. package/lib/components/generic/generic-misc/generic-misc.component.d.ts +1 -1
  108. package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +1 -1
  109. package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +1 -1
  110. package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +1 -1
  111. package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +1 -1
  112. package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +1 -1
  113. package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +1 -1
  114. package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +1 -1
  115. package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +1 -1
  116. package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +1 -1
  117. package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +1 -1
  118. package/lib/components/permissions/role-details/role-details.component.d.ts +1 -1
  119. package/lib/components/permissions/roles-list/roles-list.component.d.ts +1 -1
  120. package/lib/components/products/product-details/product-details.component.d.ts +1 -1
  121. package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +1 -1
  122. package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +1 -1
  123. package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +1 -1
  124. package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +1 -1
  125. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +1 -1
  126. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +1 -1
  127. package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +1 -1
  128. package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +1 -1
  129. package/lib/components/users/user-details/user-details.component.d.ts +1 -1
  130. package/lib/components/users/users-insight/users-insight.component.d.ts +1 -1
  131. package/lib/components/users/users-list/users-list.component.d.ts +1 -1
  132. package/package.json +1 -1
  133. package/esm2022/lib/admin.service.mjs +0 -411
  134. package/esm2022/lib/shared/models/admin.model.mjs +0 -338
  135. package/lib/admin.service.d.ts +0 -145
  136. 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=