@envive-ai/react-hooks 0.3.1 → 0.3.2

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 (259) hide show
  1. package/dist/application/commerce-api.cjs +4 -4
  2. package/dist/application/commerce-api.js +4 -4
  3. package/dist/application/models/api/response.d.cts +1 -1
  4. package/dist/application/models/api/response.d.ts +1 -1
  5. package/dist/application/models/frontendConfig.d.cts +1 -1
  6. package/dist/application/models/frontendConfig.d.ts +1 -1
  7. package/dist/application/models/guards/api/isApiFormResponse.cjs +1 -1
  8. package/dist/application/models/guards/api/isApiFormResponse.js +1 -1
  9. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +1 -1
  10. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +1 -1
  11. package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +2 -2
  12. package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +2 -2
  13. package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +1 -1
  14. package/dist/application/models/guards/api/isApiProductResponseAttributes.js +1 -1
  15. package/dist/application/models/guards/api/isApiResponse.cjs +1 -1
  16. package/dist/application/models/guards/api/isApiResponse.js +1 -1
  17. package/dist/application/models/guards/api/isApiSearchEventAttributes.cjs +2 -2
  18. package/dist/application/models/guards/api/isApiSearchEventAttributes.js +2 -2
  19. package/dist/application/models/message.cjs +1 -1
  20. package/dist/application/models/message.d.cts +1 -1
  21. package/dist/application/models/message.d.ts +1 -1
  22. package/dist/application/models/message.js +1 -1
  23. package/dist/application/models/validators/validateGraphQLColorsConfig.cjs +2 -1
  24. package/dist/application/models/validators/validateGraphQLColorsConfig.js +2 -1
  25. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
  26. package/dist/application/models/validators/validateGraphQLFrontendConfig.d.cts +1 -1
  27. package/dist/application/models/validators/validateGraphQLFrontendConfig.d.ts +1 -1
  28. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
  29. package/dist/application/utils/analyticsUtils.cjs +2 -2
  30. package/dist/application/utils/analyticsUtils.js +2 -2
  31. package/dist/application/utils/domObserver.cjs +1 -1
  32. package/dist/application/utils/domObserver.js +1 -1
  33. package/dist/application/utils/elementObserver.cjs +1 -1
  34. package/dist/application/utils/elementObserver.js +1 -1
  35. package/dist/application/utils/mutationHelper.cjs +2 -2
  36. package/dist/application/utils/mutationHelper.js +2 -2
  37. package/dist/application/utils/nodeSelector.cjs +5 -2
  38. package/dist/application/utils/nodeSelector.js +5 -2
  39. package/dist/application/utils/stringUtils.cjs +1 -1
  40. package/dist/application/utils/stringUtils.js +1 -1
  41. package/dist/atoms/app/index.cjs +1 -1
  42. package/dist/atoms/app/index.d.cts +1 -1
  43. package/dist/atoms/app/index.d.ts +1 -1
  44. package/dist/atoms/app/index.js +1 -1
  45. package/dist/atoms/app/variant.cjs +1 -1
  46. package/dist/atoms/app/variant.d.cts +3 -3
  47. package/dist/atoms/app/variant.d.ts +3 -3
  48. package/dist/atoms/app/variant.js +1 -1
  49. package/dist/atoms/chat/chatState.d.cts +15 -15
  50. package/dist/atoms/chat/chatState.d.ts +15 -15
  51. package/dist/atoms/chat/form.d.cts +2 -2
  52. package/dist/atoms/chat/form.d.ts +2 -2
  53. package/dist/atoms/chat/index.cjs +1 -1
  54. package/dist/atoms/chat/index.d.ts +3 -3
  55. package/dist/atoms/chat/index.js +1 -1
  56. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  57. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  58. package/dist/atoms/chat/messageQueue.cjs +1 -1
  59. package/dist/atoms/chat/messageQueue.js +1 -1
  60. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  61. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  62. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  63. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  64. package/dist/atoms/chat/replies.cjs +2 -2
  65. package/dist/atoms/chat/replies.d.cts +2 -2
  66. package/dist/atoms/chat/replies.d.ts +2 -2
  67. package/dist/atoms/chat/replies.js +2 -2
  68. package/dist/atoms/chat/suggestions.d.cts +2 -2
  69. package/dist/atoms/chat/suggestions.d.ts +2 -2
  70. package/dist/atoms/globalSearch/globalSearch.cjs +3 -1
  71. package/dist/atoms/globalSearch/globalSearch.d.cts +10 -7
  72. package/dist/atoms/globalSearch/globalSearch.d.ts +10 -7
  73. package/dist/atoms/globalSearch/globalSearch.js +3 -2
  74. package/dist/atoms/globalSearch/index.cjs +1 -0
  75. package/dist/atoms/globalSearch/index.d.cts +2 -2
  76. package/dist/atoms/globalSearch/index.d.ts +2 -2
  77. package/dist/atoms/globalSearch/index.js +2 -2
  78. package/dist/atoms/org/customerService.d.cts +7 -7
  79. package/dist/atoms/org/customerService.d.ts +6 -6
  80. package/dist/atoms/org/graphqlConfig.cjs +1 -1
  81. package/dist/atoms/org/graphqlConfig.d.cts +5 -5
  82. package/dist/atoms/org/graphqlConfig.d.ts +5 -5
  83. package/dist/atoms/org/graphqlConfig.js +1 -1
  84. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  85. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  86. package/dist/atoms/org/orgAnalyticsConfig.cjs +1 -1
  87. package/dist/atoms/org/orgAnalyticsConfig.d.cts +6 -6
  88. package/dist/atoms/org/orgAnalyticsConfig.d.ts +6 -6
  89. package/dist/atoms/org/orgAnalyticsConfig.js +1 -1
  90. package/dist/atoms/search/chatSearch.d.cts +17 -17
  91. package/dist/atoms/search/chatSearch.d.ts +17 -17
  92. package/dist/atoms/search/searchAPI.cjs +1 -1
  93. package/dist/atoms/search/searchAPI.d.cts +14 -14
  94. package/dist/atoms/search/searchAPI.d.ts +14 -14
  95. package/dist/atoms/search/searchAPI.js +1 -1
  96. package/dist/atoms/search/searchServiceAdapter.cjs +1 -1
  97. package/dist/atoms/search/searchServiceAdapter.js +1 -1
  98. package/dist/atoms/search/types.d.cts +1 -1
  99. package/dist/atoms/search/types.d.ts +1 -1
  100. package/dist/atoms/search/utils.d.cts +1 -1
  101. package/dist/atoms/search/utils.d.ts +1 -1
  102. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +6 -6
  103. package/dist/contexts/amplitudeContext/amplitudeContext.js +6 -6
  104. package/dist/contexts/cdnContext/cdnContext.cjs +1 -1
  105. package/dist/contexts/cdnContext/cdnContext.js +1 -1
  106. package/dist/contexts/chatContext/chatContext.cjs +4 -4
  107. package/dist/contexts/chatContext/chatContext.js +4 -4
  108. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +2 -3
  109. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +2 -3
  110. package/dist/contexts/enviveContext/enviveContext.cjs +52 -0
  111. package/dist/contexts/enviveContext/enviveContext.d.cts +31 -0
  112. package/dist/contexts/enviveContext/enviveContext.d.ts +31 -0
  113. package/dist/contexts/enviveContext/enviveContext.js +51 -0
  114. package/dist/contexts/enviveContext/index.cjs +5 -0
  115. package/dist/contexts/enviveContext/index.d.cts +3 -0
  116. package/dist/contexts/enviveContext/index.d.ts +3 -0
  117. package/dist/contexts/enviveContext/index.js +4 -0
  118. package/dist/contexts/enviveContext/types.cjs +11 -0
  119. package/dist/contexts/enviveContext/types.d.cts +8 -0
  120. package/dist/contexts/enviveContext/types.d.ts +8 -0
  121. package/dist/contexts/enviveContext/types.js +10 -0
  122. package/dist/contexts/featureFlagContext/featureFlagContext.cjs +2 -2
  123. package/dist/contexts/featureFlagContext/featureFlagContext.js +2 -2
  124. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -2
  125. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +2 -2
  126. package/dist/contexts/graphqlContext/graphqlContext.cjs +3 -3
  127. package/dist/contexts/graphqlContext/graphqlContext.js +3 -3
  128. package/dist/contexts/localStorageContext/localStorageContext.cjs +1 -1
  129. package/dist/contexts/localStorageContext/localStorageContext.js +1 -1
  130. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
  131. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
  132. package/dist/contexts/searchContext/searchContext.cjs +1 -1
  133. package/dist/contexts/searchContext/searchContext.js +1 -1
  134. package/dist/contexts/sessionStorageContext/sessionStorageContext.cjs +1 -1
  135. package/dist/contexts/sessionStorageContext/sessionStorageContext.js +1 -1
  136. package/dist/contexts/types.cjs +1 -1
  137. package/dist/contexts/types.d.cts +1 -1
  138. package/dist/contexts/types.d.ts +1 -1
  139. package/dist/contexts/types.js +1 -1
  140. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +1 -1
  141. package/dist/contexts/userIdentityContext/userIdentityContext.js +1 -1
  142. package/dist/events/index.cjs +2 -4
  143. package/dist/events/index.js +2 -4
  144. package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.cjs +1 -1
  145. package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.js +1 -1
  146. package/dist/hooks/Debounce/useDebounce.cjs +1 -1
  147. package/dist/hooks/Debounce/useDebounce.js +1 -1
  148. package/dist/hooks/ElementObserver/useElementObserver.cjs +2 -2
  149. package/dist/hooks/ElementObserver/useElementObserver.js +2 -2
  150. package/dist/hooks/IdentifyUser/useIdentifyUser.cjs +1 -1
  151. package/dist/hooks/IdentifyUser/useIdentifyUser.js +1 -1
  152. package/dist/hooks/ImageResolver/useImageResolver.cjs +2 -2
  153. package/dist/hooks/ImageResolver/useImageResolver.js +2 -2
  154. package/dist/hooks/IsSmallScreen/useIsSmallScreen.cjs +1 -1
  155. package/dist/hooks/IsSmallScreen/useIsSmallScreen.js +1 -1
  156. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +11 -3
  157. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +11 -3
  158. package/dist/hooks/Search/useRecommendedProducts.cjs +1 -1
  159. package/dist/hooks/Search/useRecommendedProducts.js +1 -1
  160. package/dist/hooks/Search/useSearch.cjs +6 -3
  161. package/dist/hooks/Search/useSearch.d.cts +3 -1
  162. package/dist/hooks/Search/useSearch.d.ts +3 -1
  163. package/dist/hooks/Search/useSearch.js +7 -4
  164. package/dist/hooks/Search/useSearchInput.cjs +1 -1
  165. package/dist/hooks/Search/useSearchInput.js +1 -1
  166. package/dist/hooks/SearchOperations/useSearchOperations.cjs +1 -1
  167. package/dist/hooks/SearchOperations/useSearchOperations.d.cts +1 -1
  168. package/dist/hooks/SearchOperations/useSearchOperations.d.ts +1 -1
  169. package/dist/hooks/SearchOperations/useSearchOperations.js +1 -1
  170. package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.cjs +1 -1
  171. package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.js +1 -1
  172. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +1 -1
  173. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +1 -1
  174. package/dist/hooks/utils.cjs +3 -3
  175. package/dist/hooks/utils.d.ts +1 -1
  176. package/dist/hooks/utils.js +3 -3
  177. package/package.json +25 -6
  178. package/src/application/commerce-api.ts +12 -10
  179. package/src/application/models/api/nextMessageRequest.ts +2 -0
  180. package/src/application/models/api/response.ts +4 -4
  181. package/src/application/models/api/search.ts +1 -2
  182. package/src/application/models/api/userEvent.ts +1 -2
  183. package/src/application/models/frontendConfig.ts +2 -2
  184. package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +8 -4
  185. package/src/application/models/guards/api/isApiSearchEventAttributes.ts +1 -1
  186. package/src/application/models/index.ts +1 -0
  187. package/src/application/models/message.ts +5 -5
  188. package/src/application/models/utilityTypes/delimiterCase.ts +1 -0
  189. package/src/application/models/validators/validateGraphQLColorsConfig.ts +2 -1
  190. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +1 -1
  191. package/src/application/models/variantInfo/variantInfo.ts +3 -0
  192. package/src/application/utils/analyticsUtils.ts +3 -3
  193. package/src/application/utils/domObserver.ts +1 -0
  194. package/src/application/utils/elementObserver.ts +1 -0
  195. package/src/application/utils/mutationHelper.ts +3 -1
  196. package/src/application/utils/nodeSelector.ts +7 -1
  197. package/src/application/utils/stringUtils.ts +1 -0
  198. package/src/atoms/app/index.ts +17 -6
  199. package/src/atoms/app/variant.ts +11 -13
  200. package/src/atoms/chat/__tests__/messageQueue.test.spec.ts +61 -0
  201. package/src/atoms/chat/index.ts +8 -8
  202. package/src/atoms/chat/messageQueue.ts +2 -48
  203. package/src/atoms/chat/replies.ts +3 -3
  204. package/src/atoms/org/graphqlConfig.ts +0 -1
  205. package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
  206. package/src/atoms/search/searchAPI.ts +1 -1
  207. package/src/atoms/search/searchServiceAdapter.ts +1 -1
  208. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +4 -3
  209. package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -5
  210. package/src/contexts/cdnContext/cdnContext.tsx +1 -1
  211. package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +2 -3
  212. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -3
  213. package/src/contexts/enviveContext/enviveContext.tsx +89 -0
  214. package/src/contexts/enviveContext/index.ts +2 -0
  215. package/src/contexts/enviveContext/types.ts +4 -0
  216. package/src/contexts/featureFlagContext/featureFlagContext.tsx +1 -1
  217. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +1 -1
  218. package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +7 -5
  219. package/src/contexts/graphqlContext/graphqlContext.tsx +1 -5
  220. package/src/contexts/hardcopyContext/hardcopyContext.tsx +70 -0
  221. package/src/contexts/hardcopyContext/index.ts +1 -0
  222. package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +9 -3
  223. package/src/contexts/localStorageContext/localStorageContext.tsx +1 -1
  224. package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +2 -3
  225. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +1 -1
  226. package/src/contexts/pageContext/__tests__/pageContext.test.tsx +666 -0
  227. package/src/contexts/pageContext/index.ts +2 -0
  228. package/src/contexts/pageContext/mapping.ts +38 -0
  229. package/src/contexts/pageContext/pageContext.tsx +78 -0
  230. package/src/contexts/pageContext/types.ts +27 -0
  231. package/src/contexts/salesAgentContext/chatAPI.ts +75 -0
  232. package/src/contexts/salesAgentContext/index.ts +3 -0
  233. package/src/contexts/salesAgentContext/salesAgentContext.tsx +128 -0
  234. package/src/contexts/salesAgentContext/salesAgentService.ts +197 -0
  235. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +14 -15
  236. package/src/contexts/searchContext/searchContext.tsx +1 -1
  237. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +1 -1
  238. package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +7 -6
  239. package/src/contexts/types.ts +20 -22
  240. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +3 -8
  241. package/src/contexts/userIdentityContext/userIdentityContext.tsx +1 -1
  242. package/src/events/index.ts +5 -7
  243. package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +1 -1
  244. package/src/hooks/Debounce/useDebounce.ts +1 -1
  245. package/src/hooks/ElementObserver/useElementObserver.ts +2 -1
  246. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +4 -2
  247. package/src/hooks/IdentifyUser/useIdentifyUser.ts +1 -1
  248. package/src/hooks/ImageResolver/useImageResolver.ts +2 -0
  249. package/src/hooks/IsSmallScreen/useIsSmallScreen.ts +1 -1
  250. package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +20 -4
  251. package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -10
  252. package/src/hooks/Search/useRecommendedProducts.ts +2 -2
  253. package/src/hooks/Search/useSearchInput.ts +1 -1
  254. package/src/hooks/SearchOperations/useSearchOperations.ts +2 -2
  255. package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +1 -1
  256. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +2 -2
  257. package/src/hooks/utils.ts +3 -2
  258. package/src/contexts/chatContext/chatContext.tsx +0 -463
  259. package/src/contexts/chatContext/index.ts +0 -1
@@ -1,21 +1,21 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_hooks_utils = require('../../hooks/utils.cjs');
3
3
  const require_useMessageInterceptor = require('../../interceptors/useMessageInterceptor.cjs');
4
- const require_message = require('../../application/models/message.cjs');
5
4
  const require_logger = require('../../application/logging/logger.cjs');
5
+ const require_message = require('../../application/models/message.cjs');
6
6
  require('../../application/models/index.cjs');
7
7
  const require_atomStore = require('../../atoms/atomStore/atomStore.cjs');
8
8
  require('../../atoms/atomStore/index.cjs');
9
9
  const require_variant = require('../../atoms/app/variant.cjs');
10
10
  const require_atoms_app_index = require('../../atoms/app/index.cjs');
11
11
  const require_amplitudeContext = require('../amplitudeContext/amplitudeContext.cjs');
12
- const require_messageFromResponse = require('../../application/utils/messageFromResponse.cjs');
13
- require('../../application/utils/index.cjs');
14
12
  const require_chatState = require('../../atoms/chat/chatState.cjs');
15
13
  const require_messageQueue = require('../../atoms/chat/messageQueue.cjs');
16
14
  const require_performanceMetrics = require('../../atoms/chat/performanceMetrics.cjs');
17
15
  const require_atoms_chat_index = require('../../atoms/chat/index.cjs');
18
16
  const require_chatSearch = require('../../atoms/search/chatSearch.cjs');
17
+ const require_messageFromResponse = require('../../application/utils/messageFromResponse.cjs');
18
+ require('../../application/utils/index.cjs');
19
19
  const require_sessionExceptions = require('../../types/exceptions/sessionExceptions.cjs');
20
20
  const require_commerce_api = require('../../application/commerce-api.cjs');
21
21
  const require_useAmplitudeOperations = require('../../hooks/AmplitudeOperations/useAmplitudeOperations.cjs');
@@ -303,4 +303,4 @@ const ChatContextProvider = ({ children }) => {
303
303
  //#endregion
304
304
  exports.ChatContext = ChatContext;
305
305
  exports.ChatContextProvider = ChatContextProvider;
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENvbnRleHQuY2pzIiwibmFtZXMiOlsiZ2V0QXRvbVN0b3JlIiwiY2hhdEF0b20iLCJjaGF0U2VhcmNoU3RhdGVBdG9tIiwiY2hhdFNlYXJjaFByb2R1Y3RzIiwiY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSIsInVzZXJRdWVyeVByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQiLCJVc2VyRXZlbnRDYXRlZ29yeSIsImV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IiwiTWVzc2FnZVJvbGUiLCJNZXNzYWdlVHlwZSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCIsIm1lc3NhZ2VGcm9tUmVzcG9uc2UiLCJlcnJvcjogdW5rbm93biIsImxvZ1BlcmZNZXRyaWNBdG9tIiwidXNlckhhc1JlcGxpZWRBdG9tIiwibWVzc2FnZXNBdG9tIiwidXNlckV2ZW50c0F0b20iLCJzdWdnZXN0aW9uc0F0b20iLCJzdWdnZXN0aW9uc0xvYWRpbmdBdG9tIiwicmVzcG9uc2VTdHJlYW1pbmdBdG9tIiwicmVxdWVzdEZhaWx1cmVBdG9tIiwidXNlckV2ZW50UXVldWVBdG9tIiwidXNlclF1ZXVlRXZlbnRDb3VudEF0b20iLCJwcm9jZXNzVXNlckV2ZW50QXRvbSIsImNsZWFyVXNlckV2ZW50QXRvbSIsInVzZXJJZEF0b20iLCJjaGF0SWRBdG9tIiwic3VwcG9ydGVkRXZlbnRBdG9tIiwidmFyaWFudEluZm9BdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwidXNlTWVzc2FnZUludGVyY2VwdG9yIiwiaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20iLCJjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSIsInVzZUFtcGxpdHVkZVRyYWNraW5nIiwiUGVyZk1ldHJpY3NFdmVudHMiLCJDb21tZXJjZUFwaUNsaWVudCIsImNyZWF0ZVJlc3BvbnNlUGF5bG9hZCIsInVzZXJFdmVudHMiLCJTZXNzaW9uUmVzdGFydFJlcXVpcmVkIiwiY3JlYXRlQXBwTG9hZGVkRXZlbnQiLCJjcmVhdGVWaXNpdFVzZXJFdmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jaGF0Q29udGV4dC9jaGF0Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVxdWVzdEZhaWx1cmVBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgUGVyZk1ldHJpY3NFdmVudHMsXG4gIGxvZ1BlcmZNZXRyaWNBdG9tLFxuICB1c2VyRXZlbnRzQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5pbXBvcnQge1xuICBjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tLFxuICBjaGF0U2VhcmNoUHJvZHVjdHMsXG4gIGNoYXRTZWFyY2hTdGF0ZUF0b20sXG4gIGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tLFxuICBjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaC9jaGF0U2VhcmNoJztcbmltcG9ydCB7IGNyZWF0ZUFwcExvYWRlZEV2ZW50LCBjcmVhdGVWaXNpdFVzZXJFdmVudCB9IGZyb20gJ3NyYy9ob29rcy91dGlscyc7XG5pbXBvcnQgeyB1c2VNZXNzYWdlSW50ZXJjZXB0b3IgfSBmcm9tICdzcmMvaW50ZXJjZXB0b3JzL3VzZU1lc3NhZ2VJbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBzdXBwb3J0ZWRFdmVudEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgY2hhdEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7XG4gIGNsZWFyVXNlckV2ZW50QXRvbSxcbiAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkLFxuICBwcm9jZXNzVXNlckV2ZW50QXRvbSxcbiAgdXNlckV2ZW50UXVldWVBdG9tLFxuICB1c2VyUXVldWVFdmVudENvdW50QXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQvbWVzc2FnZVF1ZXVlJztcbmltcG9ydCB7IHVzZUFtcGxpdHVkZVRyYWNraW5nIH0gZnJvbSAnc3JjL2hvb2tzL0FtcGxpdHVkZU9wZXJhdGlvbnMvdXNlQW1wbGl0dWRlT3BlcmF0aW9ucyc7XG5pbXBvcnQgeyB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvU3lzdGVtU2V0dGluZ3NDb250ZXh0JztcblxuLyoqXG4gKiBSZWNvcmQgdGhlIGNoYXQgYXNzaXN0YW50IHJlc3BvbnNlIGluIEFtcGxpdHVkZVxuICpcbiAqIEBwYXJhbSBzdGFydFRpbWVNcyBUaGUgc3RhcnQgdGltZSBvZiB0aGUgYXNzaXN0YW50IHJlc3BvbnNlXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB1c2VkIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZVxuICovXG5jb25zdCByZWNvcmRBc3Npc3RhbnRSZXNwb25zZSA9IChcbiAgc3RhcnRUaW1lTXM6IG51bWJlcixcbiAgcGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICB0cmFjazogKGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSwgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkLFxuKSA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBjaGF0U3RhdGUgPSBhdG9tU3RvcmUuZ2V0KGNoYXRBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaFN0YXRlID0gYXRvbVN0b3JlLmdldChjaGF0U2VhcmNoU3RhdGVBdG9tKTtcbiAgY29uc3Qgc2VhcmNoUHJvZHVjdHMgPSBhdG9tU3RvcmUuZ2V0KGNoYXRTZWFyY2hQcm9kdWN0cyk7XG4gIGNvbnN0IHNlYXJjaFByb2R1Y3RzU29ydCA9IGF0b21TdG9yZS5nZXQoY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSk7XG4gIGNvbnN0IGFzc2lzdGFudFJlc3BvbnNlVGltZU1zID0geyBzdGFydDogc3RhcnRUaW1lTXMsIGVuZDogRGF0ZS5ub3coKSB9O1xuICBsZXQgdXNlclF1ZXJ5UHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBpZiAoXG4gICAgY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQgJiZcbiAgICBjaGF0U3RhdGUuc3VnZ2VzdGlvblxuICApIHtcbiAgICB1c2VyUXVlcnlQcm9wZXJ0eSA9IGNoYXRTdGF0ZS5zdWdnZXN0aW9uLmNvbnRlbnQ7XG4gIH0gZWxzZSBpZiAoY2hhdFN0YXRlLnVzZXJRdWVyeSAmJiBjaGF0U3RhdGUudXNlclF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICB1c2VyUXVlcnlQcm9wZXJ0eSA9IGNoYXRTdGF0ZS51c2VyUXVlcnk7XG4gIH1cblxuICBjb25zdCBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICByZXNwb25zZV90aW1lX21zOiBhc3Npc3RhbnRSZXNwb25zZVRpbWVNcy5lbmQgLSBhc3Npc3RhbnRSZXNwb25zZVRpbWVNcy5zdGFydCxcbiAgICB1c2VyX2V2ZW50X3R5cGU6IGNoYXRTdGF0ZS5yZXBseUV2ZW50Q2F0ZWdvcnksXG4gICAgdXNlcl9xdWVyeTogdXNlclF1ZXJ5UHJvcGVydHksXG4gIH07XG5cbiAgaWYgKGNoYXRTdGF0ZS5yZXBseUV2ZW50Q2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpIHtcbiAgICBjb25zdCBsYXN0QXNzaXN0YW50VHVybiA9IGNoYXRTdGF0ZS5tZXNzYWdlc1xuICAgICAgLmZpbHRlcih0dXJuID0+IHR1cm4ubGVuZ3RoID4gMCAmJiB0dXJuWzBdLnJvbGUgPT09IE1lc3NhZ2VSb2xlLkFzc2lzdGFudClcbiAgICAgIC5wb3AoKTtcbiAgICBjb25zdCBmb3JtVHlwZSA9IHBheWxvYWQudXNlckV2ZW50cz8uZmluZChcbiAgICAgIGV2ZW50ID0+IGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgICk/LmF0dHJpYnV0ZXMuZm9ybVR5cGU7XG4gICAgY29uc3QgZm9ybVN0YXR1cyA9IGxhc3RBc3Npc3RhbnRUdXJuPy5zb21lKHJlc3BvbnNlID0+IHJlc3BvbnNlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLk9yZGVyKTtcbiAgICBldmVudFByb3BzLmZvcm1fc3VibWl0dGVkX2F0dHJpYnV0ZXMgPSB7XG4gICAgICBmb3JtX3R5cGU6IGZvcm1UeXBlLFxuICAgICAgc3RhdHVzOiBmb3JtU3RhdHVzID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChjaGF0U2VhcmNoU3RhdGUgPT09ICdwcm9kdWN0LXBhZ2UnKSB7XG4gICAgZXZlbnRQcm9wcy5zZWFyY2hfcHJvZHVjdHNfcmV0dXJuZWQgPSBzZWFyY2hQcm9kdWN0cy5sZW5ndGg7XG4gICAgZXZlbnRQcm9wcy5zZWFyY2hfcHJvZHVjdHNfc29ydF90eXBlID0gc2VhcmNoUHJvZHVjdHNTb3J0O1xuICB9XG5cbiAgdHJhY2soU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0QXNzaXN0YW50UmVzcG9uc2UsIHtcbiAgICBldmVudFByb3BzLFxuICB9KTtcbn07XG5cbmludGVyZmFjZSBDaGF0Q29udGV4dFBhcmFtcyB7fVxuXG5jb25zdCBDaGF0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q2hhdENvbnRleHRQYXJhbXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IHVwZGF0ZU1lc3NhZ2VTdGF0ZSA9IChcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgbGFzdE1lc3NhZ2U6IE1lc3NhZ2UsXG4gIHNldE1lc3NhZ2VzOiAodXBkYXRlcjogKHByZXY6IE1lc3NhZ2VbXVtdKSA9PiBNZXNzYWdlW11bXSkgPT4gdm9pZCxcbik6IE1lc3NhZ2UgPT4ge1xuICBpZiAobGFzdE1lc3NhZ2UgPT0gbnVsbCkge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4gWy4uLnByZXYsIFttZXNzYWdlXV0pO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG4gIGlmIChsYXN0TWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0ICYmIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuVGV4dCkge1xuICAgIGNvbnN0IG5ld01lc3NhZ2UgPSB7XG4gICAgICAuLi5sYXN0TWVzc2FnZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIC4uLmxhc3RNZXNzYWdlLm1ldGFkYXRhLFxuICAgICAgICBjb250ZW50OiBsYXN0TWVzc2FnZS5tZXRhZGF0YS5jb250ZW50ICsgbWVzc2FnZS5tZXRhZGF0YS5jb250ZW50LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgbGFzdFR1cm4gPSBwcmV2W3ByZXYubGVuZ3RoIC0gMV07XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5wcmV2LnNsaWNlKDAsIHByZXYubGVuZ3RoIC0gMSksXG4gICAgICAgIFsuLi5sYXN0VHVybi5zbGljZSgwLCBsYXN0VHVybi5sZW5ndGggLSAxKSwgbmV3TWVzc2FnZV0sXG4gICAgICBdO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdNZXNzYWdlO1xuICB9XG4gIHNldE1lc3NhZ2VzKHByZXYgPT4gWy4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSwgWy4uLnByZXZbcHJldi5sZW5ndGggLSAxXSwgbWVzc2FnZV1dKTtcbiAgcmV0dXJuIG1lc3NhZ2U7XG59O1xuXG5jb25zdCBoYW5kbGVTdHJlYW1pbmdFcnJvciA9IChcbiAgX2Vycm9yOiB1bmtub3duLFxuICBzZXRSZXF1ZXN0RmFpbHVyZTogKGZhaWxlZDogYm9vbGVhbikgPT4gdm9pZCxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHNldFJlcXVlc3RGYWlsdXJlKHRydWUpO1xuICBzZXRNZXNzYWdlcyhwcmV2ID0+IFtcbiAgICAuLi5wcmV2LFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgICAgcm9sZTogTWVzc2FnZVJvbGUuQXNzaXN0YW50LFxuICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5UZXh0LFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBjb250ZW50OlxuICAgICAgICAgICAgXCJJJ20gc29ycnkhIEknbSBoYXZpbmcgdHJvdWJsZSByaWdodCBub3cuIFBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHRyeSBhZ2FpbiBpbiBhIG1vbWVudC5cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgXSk7XG59O1xuXG5jb25zdCBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UgPSBhc3luYyAoXG4gIHN0cmVhbTogQXN5bmNJdGVyYWJsZTxSZXNwb25zZT4sXG4gIG1lc3NhZ2VJbnRlcmNlcHRvcjoge1xuICAgIGludGVyY2VwdDogKHJlc3BvbnNlPzogUmVzcG9uc2UpID0+IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIH0sXG4gIGhhbmRsZVNlYXJjaFJlc3VsdHM6IChtZXNzYWdlOiBNZXNzYWdlKSA9PiB2b2lkLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4gIHNldFNlYXJjaElzTG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQsXG4gIGNoYXRJZDogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGhhc1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gfT4gPT4ge1xuICBsZXQgbGFzdE1lc3NhZ2U6IE1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGxldCBoYXNTZWFyY2hSZXN1bHRzID0gZmFsc2U7XG5cbiAgZm9yIGF3YWl0IChjb25zdCByZXNwb25zZSBvZiBzdHJlYW0pIHtcbiAgICB0cnkge1xuICAgICAgaWYgKG1lc3NhZ2VJbnRlcmNlcHRvci5pbnRlcmNlcHQocmVzcG9uc2UpKSB7XG4gICAgICAgIHJldHVybiB7IGhhc1NlYXJjaFJlc3VsdHMgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRyYW5zZm9ybSBBUEkgcmVzcG9uc2UgdG8gY2xpZW50IG1lc3NhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaCkge1xuICAgICAgICBoYW5kbGVTZWFyY2hSZXN1bHRzKG1lc3NhZ2UpO1xuICAgICAgICBoYXNTZWFyY2hSZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nKGZhbHNlKTsgLy8gVXBkYXRlIHNlYXJjaCBsb2FkaW5nIGltbWVkaWF0ZWx5IHdoZW4gcmVzdWx0cyBhcmUgZGV0ZWN0ZWRcbiAgICAgIH1cblxuICAgICAgbGFzdE1lc3NhZ2UgPSB1cGRhdGVNZXNzYWdlU3RhdGUobWVzc2FnZSwgbGFzdE1lc3NhZ2UhLCBzZXRNZXNzYWdlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIExvZ2dlci5sb2dXYXJuKFxuICAgICAgICBgW3NwaWZmeS1haV0gRmFpbGVkIHRvIGdlbmVyYXRlIHJlc3BvbnNlcyBmcm9tIHN0cmVhbSBjaGF0X2lkPSR7Y2hhdElkfWAsXG4gICAgICAgIGVycm9yLFxuICAgICAgICB7XG4gICAgICAgICAgbGFzdFJlc3BvbnNlOiBsYXN0TWVzc2FnZSxcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xufTtcblxuY29uc3QgQ2hhdENvbnRleHRQcm92aWRlciA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSA9PiB7XG4gIGNvbnN0IGxvZ1BlcmZNZXRyaWMgPSB1c2VTZXRBdG9tKGxvZ1BlcmZNZXRyaWNBdG9tKTtcbiAgY29uc3QgW3dpZGdldEluaXRpYWxpemVkLCBzZXRXaWRnZXRJbml0aWFsaXplZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNldFVzZXJIYXNSZXBsaWVkID0gdXNlU2V0QXRvbSh1c2VySGFzUmVwbGllZEF0b20pO1xuICAvLyBUT0RPOiBjcmVhdGUgYXRvbXMgZm9yIHNldHRpbmcvZ2V0dGluZyB0aGUgbGFzdCBtZXNzYWdlIHR1cm5cbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VBdG9tPE1lc3NhZ2VbXVtdPihtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzZXRVc2VyRXZlbnRzID0gdXNlU2V0QXRvbSh1c2VyRXZlbnRzQXRvbSk7XG4gIGNvbnN0IHNldFN1Z2dlc3Rpb25zID0gdXNlU2V0QXRvbShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBbc3VnZ2VzdGlvbnNMb2FkaW5nLCBzZXRTdWdnZXN0aW9uc0xvYWRpbmddID0gdXNlQXRvbTxib29sZWFuPihzdWdnZXN0aW9uc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgW3Jlc3BvbnNlU3RyZWFtaW5nLCBzZXRSZXNwb25zZVN0cmVhbWluZ10gPSB1c2VBdG9tPGJvb2xlYW4+KHJlc3BvbnNlU3RyZWFtaW5nQXRvbSk7XG4gIGNvbnN0IHNldFJlcXVlc3RGYWlsdXJlID0gdXNlU2V0QXRvbShyZXF1ZXN0RmFpbHVyZUF0b20pO1xuICBjb25zdCB1c2VyRXZlbnRzID0gdXNlQXRvbVZhbHVlKHVzZXJFdmVudFF1ZXVlQXRvbSk7XG4gIGNvbnN0IHVzZXJRdWV1ZUV2ZW50Q291bnQgPSB1c2VBdG9tVmFsdWUodXNlclF1ZXVlRXZlbnRDb3VudEF0b20pO1xuICBjb25zdCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCA9IHVzZVNldEF0b20ocHJvY2Vzc1VzZXJFdmVudEF0b20pO1xuICBjb25zdCBjbGVhclVzZXJFdmVudFF1ZXVlID0gdXNlU2V0QXRvbShjbGVhclVzZXJFdmVudEF0b20pO1xuICBjb25zdCB1c2VySWQgPSB1c2VBdG9tVmFsdWUodXNlcklkQXRvbSk7XG4gIGNvbnN0IGNoYXRJZCA9IHVzZUF0b21WYWx1ZShjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc3VwcG9ydGVkRXZlbnQgPSB1c2VBdG9tVmFsdWUoc3VwcG9ydGVkRXZlbnRBdG9tKTtcbiAgLy8gVE9ETzogUmVwbGFjZSB3aXRoIGFjdHVhbCBvcmdJZCBmcm9tIHVzZUVudml2ZUNvbmZpZyBvciBOZXdPcmdDb25maWdDb250ZXh0IHdoZW4gYXZhaWxhYmxlXG4gIGNvbnN0IG9yZ0lkID0gJ21vY2stb3JnLWlkJztcblxuICBjb25zdCB2YXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZSh2YXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcbiAgY29uc3QgbWVzc2FnZUludGVyY2VwdG9yID0gdXNlTWVzc2FnZUludGVyY2VwdG9yKCk7XG4gIGNvbnN0IGhhbmRsZVNlYXJjaFJlc3VsdHMgPSB1c2VTZXRBdG9tKGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tKTtcbiAgY29uc3Qgc2V0U2VhcmNoSXNMb2FkaW5nID0gdXNlU2V0QXRvbShjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSk7XG4gIGNvbnN0IHsgdHJhY2sgfSA9IHVzZUFtcGxpdHVkZVRyYWNraW5nKCk7XG5cbiAgY29uc3QgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8eyBoYXNTZWFyY2hSZXN1bHRzOiBib29sZWFuIH0+ID0+IHtcbiAgICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RSZXNwb25zZVN0YXJ0ZWQpO1xuICAgICAgY29uc3Qgc3RyZWFtID0gQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFJlc3BvbnNlU3RyZWFtaW5nKHBheWxvYWQpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBzZXRSZXF1ZXN0RmFpbHVyZShmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgeyBoYXNTZWFyY2hSZXN1bHRzIH0gPSBhd2FpdCBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UoXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgICAgICBoYW5kbGVTZWFyY2hSZXN1bHRzLFxuICAgICAgICAgIHNldE1lc3NhZ2VzLFxuICAgICAgICAgIHNldFNlYXJjaElzTG9hZGluZyxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVTdHJlYW1pbmdFcnJvcihlLCBzZXRSZXF1ZXN0RmFpbHVyZSwgc2V0TWVzc2FnZXMpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlQ29tcGxldGVkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGxvZ1BlcmZNZXRyaWMsXG4gICAgICBzZXRSZXF1ZXN0RmFpbHVyZSxcbiAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMsXG4gICAgICBzZXRNZXNzYWdlcyxcbiAgICAgIHNldFNlYXJjaElzTG9hZGluZyxcbiAgICAgIGNoYXRJZCxcbiAgICBdLFxuICApO1xuXG4gIGNvbnN0IGdldFN1Z2dlc3Rpb25zID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQpO1xuICAgIHNldFN1Z2dlc3Rpb25zTG9hZGluZyh0cnVlKTtcbiAgICBzZXRTdWdnZXN0aW9ucyhbXSk7XG5cbiAgICBjb25zdCBwYXlsb2FkV2l0aG91dEFwcExvYWRlZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICB1c2VyRXZlbnRzOiBbXSxcbiAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFN1Z2dlc3Rpb25zKHBheWxvYWRXaXRob3V0QXBwTG9hZGVkKTtcblxuICAgIC8vIHNvcnQgdGhlIHN1Z2dlc3Rpb25zIGJ5IHNob3J0ZXN0IGxlbmd0aCBzbyB0aGUgcGlsbHMgY2FuIGJlIHN0YWNrZWQgaG9yaXpvbnRhbGx5XG4gICAgc2V0U3VnZ2VzdGlvbnMocmVzcG9uc2Uuc29ydCgoYSwgYikgPT4gYS5jb250ZW50Lmxlbmd0aCAtIGIuY29udGVudC5sZW5ndGgpKTtcbiAgICBzZXRTdWdnZXN0aW9uc0xvYWRpbmcoZmFsc2UpO1xuICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCk7XG4gIH0sIFtsb2dQZXJmTWV0cmljLCBzZXRTdWdnZXN0aW9uc0xvYWRpbmcsIHNldFN1Z2dlc3Rpb25zLCBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtc10pO1xuXG4gIGNvbnN0IGdldFJlc3BvbnNlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChwYXlsb2FkPzogTmV4dE1lc3NhZ2VSZXF1ZXN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9XG4gICAgICAgICAgcGF5bG9hZCA/P1xuICAgICAgICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgICB1c2VyRXZlbnRzLFxuICAgICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcodHJ1ZSk7XG4gICAgICAgIHNldFN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lTXMgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG5cbiAgICAgICAgcmVjb3JkQXNzaXN0YW50UmVzcG9uc2Uoc3RhcnRUaW1lTXMsIHJlcXVlc3RQYXlsb2FkLCB0cmFjayk7XG4gICAgICAgIGF3YWl0IGdldFN1Z2dlc3Rpb25zKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIGdldFJlc3BvbnNlcyBlcnJvcicsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIFJlbW92ZSBzZWFyY2ggbG9hZGluZyBtYW5hZ2VtZW50IGZyb20gaGVyZSAtIGl0J3Mgbm93IGhhbmRsZWQgaW5kZXBlbmRlbnRseVxuICAgICAgICAvLyBpbiB0aGUgcHJvY2Vzc1N0cmVhbWluZ1Jlc3BvbnNlIGZ1bmN0aW9uIHdoZW4gc2VhcmNoIHJlc3VsdHMgYXJlIGRldGVjdGVkXG4gICAgICAgIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkKHVzZXJFdmVudHMubWFwKCh7IGV2ZW50SWQgfSkgPT4gZXZlbnRJZCkpO1xuICAgICAgICBzZXRVc2VySGFzUmVwbGllZChmYWxzZSk7XG4gICAgICAgIHNldFJlc3BvbnNlU3RyZWFtaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHVzZXJFdmVudHMsXG4gICAgICBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICAgIHNldFJlc3BvbnNlU3RyZWFtaW5nLFxuICAgICAgc2V0U3VnZ2VzdGlvbnMsXG4gICAgICBnZXRTdHJlYW1pbmdSZXNwb25zZXMsXG4gICAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCxcbiAgICAgIGdldFN1Z2dlc3Rpb25zLFxuICAgICAgc2V0VXNlckhhc1JlcGxpZWQsXG4gICAgICB0cmFjayxcbiAgICBdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJvY2Vzc1VzZXJFdmVudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2VTdHJlYW1pbmcgfHwgIXdpZGdldEluaXRpYWxpemVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BkcCcgJiYgIXZhcmlhbnRJbmZvLnByb2R1Y3RJZCkgfHxcbiAgICAgICAgKHZhcmlhbnRJbmZvLnZhcmlhbnQgPT09ICdwbHAnICYmICF2YXJpYW50SW5mby5wbHBJZCkgfHxcbiAgICAgICAgKHZhcmlhbnRJbmZvLnZhcmlhbnQgPT09ICdwYWdlX3Zpc2l0JyAmJiAhdmFyaWFudEluZm8udXJsKVxuICAgICAgKSB7XG4gICAgICAgIExvZ2dlci5sb2dEZWJ1ZygnW3NwaWZmeS1haV0gdmFyaWFudEluZm8gaGFzIGludmFsaWQgdmFsdWVzLCBza2lwcGluZy4uLicsIHtcbiAgICAgICAgICB2YXJpYW50SW5mbyxcbiAgICAgICAgICBzdXBwb3J0ZWRFdmVudCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgQXNzaXN0YW50cyBUdXJuIGlzX2N1cnJlbnRseV9zdHJlYW1pbmc9JHtyZXNwb25zZVN0cmVhbWluZ30gaW5pdGlhbGl6ZWQ9JHt3aWRnZXRJbml0aWFsaXplZH1gLFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFJlc3BvbnNlcygpO1xuICAgICAgICBMb2dnZXIubG9nSW5mbyhgQXNzaXN0YW50cyBUdXJuIFtmaW5pc2hlZF1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gQXNzaXN0YW50cyBUdXJuIGVycm9yJywgZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHVzZXJRdWV1ZUV2ZW50Q291bnQgPiAwKSB7XG4gICAgICBwcm9jZXNzVXNlckV2ZW50cygpO1xuICAgIH1cbiAgfSwgW1xuICAgIGdldFJlc3BvbnNlcyxcbiAgICByZXNwb25zZVN0cmVhbWluZyxcbiAgICB1c2VyUXVldWVFdmVudENvdW50LFxuICAgIHdpZGdldEluaXRpYWxpemVkLFxuICAgIHZhcmlhbnRJbmZvLFxuICAgIHN1cHBvcnRlZEV2ZW50LFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3aWRnZXRJbml0aWFsaXplZCB8fCByZXNwb25zZVN0cmVhbWluZykge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgW3NwaWZmeS1haV0gaW5pdGlhbGl6ZVdpZGdldCBbc2tpcHBlZF0gaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpc19pbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGh5ZHJhdGVDaGF0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICAgIGBbc3BpZmZ5LWFpXSBpbml0aWFsaXplV2lkZ2V0IGlzX2N1cnJlbnRseV9zdHJlYW1pbmc9JHtyZXNwb25zZVN0cmVhbWluZ30gaXNfaW5pdGlhbGl6ZWQ9JHt3aWRnZXRJbml0aWFsaXplZH1gLFxuICAgICAgICApO1xuICAgICAgICAvLyBvbiBtb3VudCwgdHJ5IHRvIGdldCB0aGUgcmVzcG9uc2VzIGZyb20gYW4gYWN0aXZlIHNlc3Npb24gaWYgb25lIGV4aXN0c1xuICAgICAgICBpZiAoIW9yZ0lkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcmdJZCBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBtZXNzYWdlczogZXhpc3RpbmdNZXNzYWdlcywgdXNlckV2ZW50cyB9ID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0UmVzcG9uc2VzKFxuICAgICAgICAgIG9yZ0lkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICk7XG4gICAgICAgIHNldE1lc3NhZ2VzKFsuLi5leGlzdGluZ01lc3NhZ2VzXSk7XG4gICAgICAgIHNldFVzZXJFdmVudHMoWy4uLnVzZXJFdmVudHNdKTtcbiAgICAgICAgZ2V0UmVzcG9uc2VzKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBubyBhY3RpdmUgY2hhdCBzZXNzaW9uIHdhcyBmb3VuZCwgc3RhcnQgYSBuZXcgb25lXG4gICAgICAgIExvZ2dlci5sb2dJbmZvKGBJbml0IGNoYXQgW2V4Y2VwdGlvbl0gY2hhdF9pZD0ke2NoYXRJZH0gZXJyb3I9JHtlcnJvcn1gLCBlcnJvcik7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQpIHtcbiAgICAgICAgICBjb25zdCBhcHBMb2FkZWRFdmVudCA9IGNyZWF0ZUFwcExvYWRlZEV2ZW50KCk7XG4gICAgICAgICAgY29uc3QgdmlzaXRFdmVudCA9IGNyZWF0ZVZpc2l0VXNlckV2ZW50KHsgdmFyaWFudEluZm8gfSk7XG4gICAgICAgICAgc2V0TWVzc2FnZXMoW10pO1xuICAgICAgICAgIGNsZWFyVXNlckV2ZW50UXVldWUoKTtcbiAgICAgICAgICBpZiAodmlzaXRFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgICAgIHVzZXJFdmVudHM6IFthcHBMb2FkZWRFdmVudCwgdmlzaXRFdmVudF0sXG4gICAgICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnZXRSZXNwb25zZXMocGF5bG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRXaWRnZXRJbml0aWFsaXplZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaHlkcmF0ZUNoYXQoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uRm9jdXMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmVzcG9uc2VTdHJlYW1pbmcgJiYgIXN1Z2dlc3Rpb25zTG9hZGluZyAmJiBvcmdJZCkge1xuICAgICAgICBjb25zdCB7IG1lc3NhZ2VzOiBleGlzdGluZ01lc3NhZ2VzIH0gPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRSZXNwb25zZXMoXG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlcy5sZW5ndGggPiBtZXNzYWdlcy5sZW5ndGgpIHtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhbLi4uZXhpc3RpbmdNZXNzYWdlc10pO1xuICAgICAgICAgIC8vIFRPRE86IElzIHRoaXMgYnVnIGhhY2sgc3RpbGwgbmVjZXNzYXJ5P1xuICAgICAgICAgIC8vIElmIGl0IGlzLCBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gZm9yIGl0XG4gICAgICAgICAgLy8gfSBlbHNlIGlmIChleGlzdGluZ01lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIC8vICAgLy8gaWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgc2Vzc2lvbiwgdGhlIHNlc3Npb24gd291bGQgYmVcbiAgICAgICAgICAvLyAgIC8vIGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQgYnV0IHdpdGhvdXQgYW55IG1lc3NhZ2VzLiBSZXRyeSB0aGUgbmV4dF9yZXNwb25zZXMgcmVxdWVzdCB3aXRoXG4gICAgICAgICAgLy8gICAvLyB0aGUgY3VycmVudCBzZXQgb2YgcGFyYW1ldGVycyB0byBcImp1bXBzdGFydFwiIHRoZSBzZXNzaW9uXG4gICAgICAgICAgLy8gICB0cmlnZ2VyR2V0UmVzcG9uc2VDYWxsKCdvbkZvY3VzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBvbkZvY3VzIGVycm9yJywgZXJyb3IpO1xuICAgIH1cbiAgfSwgW3Jlc3BvbnNlU3RyZWFtaW5nLCBzdWdnZXN0aW9uc0xvYWRpbmcsIG9yZ0lkLCBjaGF0SWQsIHVzZXJJZCwgbWVzc2FnZXMubGVuZ3RoLCBzZXRNZXNzYWdlc10pO1xuXG4gIC8vIGxpc3RlbiBmb3IgcGFnZSBmb2N1cyB0byBnZXQgbGF0ZXN0IG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlclxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIG9uRm9jdXMpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIG9uRm9jdXMpO1xuICAgIH07XG4gIH0sIFtvbkZvY3VzXSk7XG5cbiAgY29uc3QgY2hhdENvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7fSksIFtdKTtcblxuICByZXR1cm4gPENoYXRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjaGF0Q29udGV4dH0+e2NoaWxkcmVufTwvQ2hhdENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IHsgQ2hhdENvbnRleHQsIENoYXRDb250ZXh0UHJvdmlkZXIgfTtcbmV4cG9ydCB0eXBlIHsgQ2hhdENvbnRleHRQYXJhbXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0RBLE1BQU0sMkJBQ0osYUFDQSxTQUNBLFVBQ0c7Q0FDSCxNQUFNLFlBQVlBLGdDQUFjO0NBQ2hDLE1BQU0sWUFBWSxVQUFVLElBQUlDLGtDQUFTO0NBQ3pDLE1BQU0sa0JBQWtCLFVBQVUsSUFBSUMsdUNBQW9CO0NBQzFELE1BQU0saUJBQWlCLFVBQVUsSUFBSUMsc0NBQW1CO0NBQ3hELE1BQU0scUJBQXFCLFVBQVUsSUFBSUMsZ0RBQTZCO0NBQ3RFLE1BQU0sMEJBQTBCO0VBQUUsT0FBTztFQUFhLEtBQUssS0FBSyxLQUFLO0VBQUU7Q0FDdkUsSUFBSUM7QUFFSixLQUNFLFVBQVUsdUJBQXVCQyxrREFBa0IscUJBQ25ELFVBQVUsV0FFVixxQkFBb0IsVUFBVSxXQUFXO1VBQ2hDLFVBQVUsYUFBYSxVQUFVLFVBQVUsU0FBUyxFQUM3RCxxQkFBb0IsVUFBVTtDQUdoQyxNQUFNQyxhQUFzQztFQUMxQyxrQkFBa0Isd0JBQXdCLE1BQU0sd0JBQXdCO0VBQ3hFLGlCQUFpQixVQUFVO0VBQzNCLFlBQVk7RUFDYjtBQUVELEtBQUksVUFBVSx1QkFBdUJELGtEQUFrQixlQUFlO0VBQ3BFLE1BQU0sb0JBQW9CLFVBQVUsU0FDakMsUUFBTyxTQUFRLEtBQUssU0FBUyxLQUFLLEtBQUssR0FBRyxTQUFTRSw0QkFBWSxVQUFVLENBQ3pFLEtBQUs7QUFLUixhQUFXLDRCQUE0QjtHQUNyQyxXQUxlLFFBQVEsWUFBWSxNQUNuQyxVQUFTLE1BQU0sYUFBYUYsa0RBQWtCLGNBQy9DLEVBQUUsV0FBVztHQUlaLFFBSGlCLG1CQUFtQixNQUFLLGFBQVksU0FBUyxTQUFTRyw0QkFBWSxNQUFNLEdBR3BFLFlBQVk7R0FDbEM7O0FBR0gsS0FBSSxvQkFBb0IsZ0JBQWdCO0FBQ3RDLGFBQVcsMkJBQTJCLGVBQWU7QUFDckQsYUFBVyw0QkFBNEI7O0FBR3pDLE9BQU1DLGdEQUF1Qix1QkFBdUIsRUFDbEQsWUFDRCxDQUFDOztBQUtKLE1BQU0sdUNBQTJELE9BQVU7QUFFM0UsTUFBTSxzQkFDSixTQUNBLGFBQ0EsZ0JBQ1k7QUFDWixLQUFJLGVBQWUsTUFBTTtBQUN2QixlQUFZLFNBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxTQUFPOztBQUVULEtBQUksWUFBWSxTQUFTRCw0QkFBWSxRQUFRLFFBQVEsU0FBU0EsNEJBQVksTUFBTTtFQUM5RSxNQUFNLGFBQWE7R0FDakIsR0FBRztHQUNILFVBQVU7SUFDUixHQUFHLFlBQVk7SUFDZixTQUFTLFlBQVksU0FBUyxVQUFVLFFBQVEsU0FBUztJQUMxRDtHQUNGO0FBQ0QsZUFBWSxTQUFRO0dBQ2xCLE1BQU0sV0FBVyxLQUFLLEtBQUssU0FBUztBQUNwQyxVQUFPLENBQ0wsR0FBRyxLQUFLLE1BQU0sR0FBRyxLQUFLLFNBQVMsRUFBRSxFQUNqQyxDQUFDLEdBQUcsU0FBUyxNQUFNLEdBQUcsU0FBUyxTQUFTLEVBQUUsRUFBRSxXQUFXLENBQ3hEO0lBQ0Q7QUFDRixTQUFPOztBQUVULGNBQVksU0FBUSxDQUFDLEdBQUcsS0FBSyxNQUFNLEdBQUcsS0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsQ0FBQztBQUM3RixRQUFPOztBQUdULE1BQU0sd0JBQ0osUUFDQSxtQkFDQSxnQkFDRztBQUNILG1CQUFrQixLQUFLO0FBQ3ZCLGNBQVksU0FBUSxDQUNsQixHQUFHLE1BQ0gsQ0FDRTtFQUNFLGtCQUFVO0VBQ1YsTUFBTUQsNEJBQVk7RUFDbEIsTUFBTUMsNEJBQVk7RUFDbEIsNEJBQVcsSUFBSSxNQUFNLEVBQUMsYUFBYTtFQUNuQyxVQUFVLEVBQ1IsU0FDRSw4RkFDSDtFQUNGLENBQ0YsQ0FDRixDQUFDOztBQUdKLE1BQU0sMkJBQTJCLE9BQy9CLFFBQ0Esb0JBR0EscUJBQ0EsYUFDQSxvQkFDQSxXQUMyQztDQUMzQyxJQUFJRTtDQUNKLElBQUksbUJBQW1CO0FBRXZCLFlBQVcsTUFBTSxZQUFZLE9BQzNCLEtBQUk7QUFDRixNQUFJLG1CQUFtQixVQUFVLFNBQVMsQ0FDeEMsUUFBTyxFQUFFLGtCQUFrQjtFQUc3QixNQUFNLFVBQVVDLGdEQUFvQixTQUFTO0FBQzdDLE1BQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLHFEQUFxRDtBQUd2RSxNQUFJLFFBQVEsU0FBU0gsNEJBQVksZUFBZTtBQUM5Qyx1QkFBb0IsUUFBUTtBQUM1QixzQkFBbUI7QUFDbkIsc0JBQW1CLE1BQU07O0FBRzNCLGdCQUFjLG1CQUFtQixTQUFTLGFBQWMsWUFBWTtVQUM3REksT0FBZ0I7QUFDdkIseUJBQU8sUUFDTCxnRUFBZ0UsVUFDaEUsT0FDQTtHQUNFLGNBQWM7R0FDZDtHQUNELENBQ0Y7O0FBSUwsUUFBTyxFQUFFLGtCQUFrQjs7QUFHN0IsTUFBTSx1QkFBdUIsRUFBRSxlQUF3QztDQUNyRSxNQUFNLHNDQUEyQkMsNkNBQWtCO0NBQ25ELE1BQU0sQ0FBQyxtQkFBbUIsNENBQWlDLE1BQU07Q0FDakUsTUFBTSwwQ0FBK0JDLHFDQUFtQjtDQUV4RCxNQUFNLENBQUMsVUFBVSxrQ0FBb0NDLCtCQUFhO0NBQ2xFLE1BQU0sc0NBQTJCQyxpQ0FBZTtDQUNoRCxNQUFNLHVDQUE0QkMsa0NBQWdCO0NBQ2xELE1BQU0sQ0FBQyxvQkFBb0IsNENBQTBDQyx5Q0FBdUI7Q0FDNUYsTUFBTSxDQUFDLG1CQUFtQiwyQ0FBeUNDLHdDQUFzQjtDQUN6RixNQUFNLDBDQUErQkMscUNBQW1CO0NBQ3hELE1BQU0scUNBQTBCQyx3Q0FBbUI7Q0FDbkQsTUFBTSw4Q0FBbUNDLDZDQUF3QjtDQUNqRSxNQUFNLGdEQUFxQ0MsMENBQXFCO0NBQ2hFLE1BQU0sNENBQWlDQyx3Q0FBbUI7Q0FDMUQsTUFBTSxpQ0FBc0JDLG1DQUFXO0NBQ3ZDLE1BQU0saUNBQXNCQyxtQ0FBVztDQUN2QyxNQUFNLHlDQUE4QkMsbUNBQW1CO0NBRXZELE1BQU0sUUFBUTtDQUVkLE1BQU0sc0NBQTJCQyxnQ0FBZ0I7Q0FDakQsTUFBTSxrQkFBa0JDLDJEQUEwQjtDQUNsRCxNQUFNLHFCQUFxQkMscURBQXVCO0NBQ2xELE1BQU0sNENBQWlDQywyQ0FBd0I7Q0FDL0QsTUFBTSwyQ0FBZ0NDLDJDQUF3QjtDQUM5RCxNQUFNLEVBQUUsVUFBVUMscURBQXNCO0NBRXhDLE1BQU0sK0NBQ0osT0FBTyxZQUF3RTtBQUM3RSxnQkFBY0MsNkNBQWtCLHFCQUFxQjtFQUNyRCxNQUFNLFNBQVNDLDZCQUFrQix5QkFBeUIsUUFBUTtBQUVsRSxNQUFJO0FBQ0YscUJBQWtCLE1BQU07R0FFeEIsTUFBTSxFQUFFLHFCQUFxQixNQUFNLHlCQUNqQyxRQUNBLG9CQUNBLHFCQUNBLGFBQ0Esb0JBQ0EsT0FDRDtBQUVELFVBQU8sRUFBRSxrQkFBa0I7V0FDcEIsR0FBRztBQUNWLHdCQUFxQixHQUFHLG1CQUFtQixZQUFZO0FBQ3ZELFNBQU07WUFDRTtBQUNSLGlCQUFjRCw2Q0FBa0IsdUJBQXVCOztJQUczRDtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FDRjtDQUVELE1BQU0sd0NBQTZCLFlBQVk7QUFDN0MsZ0JBQWNBLDZDQUFrQix3QkFBd0I7QUFDeEQsd0JBQXNCLEtBQUs7QUFDM0IsaUJBQWUsRUFBRSxDQUFDO0VBRWxCLE1BQU0sMEJBQTBCRSwyQ0FBc0I7R0FDcEQsWUFBWSxFQUFFO0dBQ2Qsa0JBQWtCLGdCQUFnQjtHQUNuQyxDQUFDO0FBSUYsa0JBSGlCLE1BQU1ELDZCQUFrQixtQkFBbUIsd0JBQXdCLEVBRzVELE1BQU0sR0FBRyxNQUFNLEVBQUUsUUFBUSxTQUFTLEVBQUUsUUFBUSxPQUFPLENBQUM7QUFDNUUsd0JBQXNCLE1BQU07QUFDNUIsZ0JBQWNELDZDQUFrQiwwQkFBMEI7SUFDekQ7RUFBQztFQUFlO0VBQXVCO0VBQWdCLGdCQUFnQjtFQUFpQixDQUFDO0NBRTVGLE1BQU0sc0NBQ0osT0FBTyxZQUFpQztBQUN0QyxNQUFJO0dBQ0YsTUFBTSxpQkFDSixXQUNBRSwyQ0FBc0I7SUFDcEI7SUFDQSxrQkFBa0IsZ0JBQWdCO0lBQ25DLENBQUM7QUFFSix3QkFBcUIsS0FBSztBQUMxQixrQkFBZSxFQUFFLENBQUM7R0FDbEIsTUFBTSxjQUFjLEtBQUssS0FBSztBQUU5QixTQUFNLHNCQUFzQixlQUFlO0FBRTNDLDJCQUF3QixhQUFhLGdCQUFnQixNQUFNO0FBQzNELFNBQU0sZ0JBQWdCO1dBQ2YsT0FBTztBQUNkLDBCQUFPLFNBQVMsa0NBQWtDLE1BQU07WUFDaEQ7QUFHUiwyQkFBd0IsV0FBVyxLQUFLLEVBQUUsY0FBYyxRQUFRLENBQUM7QUFDakUscUJBQWtCLE1BQU07QUFDeEIsd0JBQXFCLE1BQU07O0lBRy9CO0VBQ0U7RUFDQSxnQkFBZ0I7RUFDaEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUNGO0FBRUQsNEJBQWdCO0VBQ2QsTUFBTSxvQkFBb0IsWUFBWTtBQUNwQyxPQUFJLHFCQUFxQixDQUFDLGtCQUN4QjtBQUdGLE9BQ0csWUFBWSxZQUFZLFNBQVMsQ0FBQyxZQUFZLGFBQzlDLFlBQVksWUFBWSxTQUFTLENBQUMsWUFBWSxTQUM5QyxZQUFZLFlBQVksZ0JBQWdCLENBQUMsWUFBWSxLQUN0RDtBQUNBLDJCQUFPLFNBQVMsMkRBQTJEO0tBQ3pFO0tBQ0E7S0FDRCxDQUFDO0FBQ0Y7O0FBR0YsMEJBQU8sU0FDTCwwQ0FBMEMsa0JBQWtCLGVBQWUsb0JBQzVFO0FBQ0QsT0FBSTtBQUNGLFVBQU0sY0FBYztBQUNwQiwyQkFBTyxRQUFRLDZCQUE2QjtZQUNyQ3hCLE9BQWdCO0FBQ3ZCLDJCQUFPLFNBQVMscUNBQXFDLE1BQU07OztBQUcvRCxNQUFJLHNCQUFzQixFQUN4QixvQkFBbUI7SUFFcEI7RUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0FBRUYsNEJBQWdCO0FBQ2QsTUFBSSxxQkFBcUIsbUJBQW1CO0FBQzFDLDBCQUFPLFNBQ0wsaUVBQWlFLGtCQUFrQixrQkFBa0Isb0JBQ3RHO0FBQ0Q7O0VBR0YsTUFBTSxjQUFjLFlBQVk7QUFDOUIsT0FBSTtBQUNGLDJCQUFPLFNBQ0wsdURBQXVELGtCQUFrQixrQkFBa0Isb0JBQzVGO0lBS0QsTUFBTSxFQUFFLFVBQVUsa0JBQWtCLDZCQUFlLE1BQU11Qiw2QkFBa0IsYUFDekUsT0FDQSxRQUNBLE9BQ0Q7QUFDRCxnQkFBWSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7QUFDbEMsa0JBQWMsQ0FBQyxHQUFHRSxhQUFXLENBQUM7QUFDOUIsa0JBQWM7WUFDUCxPQUFPO0FBRWQsMkJBQU8sUUFBUSxpQ0FBaUMsT0FBTyxTQUFTLFNBQVMsTUFBTTtBQUMvRSxRQUFJLGlCQUFpQkMsa0RBQXdCO0tBQzNDLE1BQU0saUJBQWlCQywwQ0FBc0I7S0FDN0MsTUFBTSxhQUFhQyx5Q0FBcUIsRUFBRSxhQUFhLENBQUM7QUFDeEQsaUJBQVksRUFBRSxDQUFDO0FBQ2YsMEJBQXFCO0FBQ3JCLFNBQUksV0FLRixjQUpnQkosMkNBQXNCO01BQ3BDLFlBQVksQ0FBQyxnQkFBZ0IsV0FBVztNQUN4QyxrQkFBa0IsZ0JBQWdCO01BQ25DLENBQUMsQ0FDbUI7O2FBR2pCO0FBQ1IseUJBQXFCLEtBQUs7OztBQUk5QixlQUFhO0lBQ1osRUFBRSxDQUFDO0NBRU4sTUFBTSxpQ0FBc0IsWUFBWTtBQUN0QyxNQUFJO0FBQ0YsT0FBSSxDQUFDLHFCQUFxQixDQUFDLHNCQUFzQixPQUFPO0lBQ3RELE1BQU0sRUFBRSxVQUFVLHFCQUFxQixNQUFNRCw2QkFBa0IsYUFDN0QsT0FDQSxRQUNBLE9BQ0Q7QUFFRCxRQUFJLGlCQUFpQixTQUFTLFNBQVMsT0FDckMsYUFBWSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7O1dBVS9CdkIsT0FBZ0I7QUFDdkIsMEJBQU8sU0FBUyw2QkFBNkIsTUFBTTs7SUFFcEQ7RUFBQztFQUFtQjtFQUFvQjtFQUFPO0VBQVE7RUFBUSxTQUFTO0VBQVE7RUFBWSxDQUFDO0FBR2hHLDRCQUFnQjtBQUNkLFNBQU8saUJBQWlCLFNBQVMsUUFBUTtBQUV6QyxlQUFhO0FBQ1gsVUFBTyxvQkFBb0IsU0FBUyxRQUFROztJQUU3QyxDQUFDLFFBQVEsQ0FBQztDQUViLE1BQU0sd0NBQTZCLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFFM0MsUUFBTywyQ0FBQyxZQUFZO0VBQVMsT0FBTztFQUFjO0dBQWdDIn0=
306
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENvbnRleHQuY2pzIiwibmFtZXMiOlsiZ2V0QXRvbVN0b3JlIiwiY2hhdEF0b20iLCJjaGF0U2VhcmNoU3RhdGVBdG9tIiwiY2hhdFNlYXJjaFByb2R1Y3RzIiwiY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSIsInVzZXJRdWVyeVByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQiLCJVc2VyRXZlbnRDYXRlZ29yeSIsImV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IiwiTWVzc2FnZVJvbGUiLCJNZXNzYWdlVHlwZSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCIsIm1lc3NhZ2VGcm9tUmVzcG9uc2UiLCJlcnJvcjogdW5rbm93biIsImxvZ1BlcmZNZXRyaWNBdG9tIiwidXNlckhhc1JlcGxpZWRBdG9tIiwibWVzc2FnZXNBdG9tIiwidXNlckV2ZW50c0F0b20iLCJzdWdnZXN0aW9uc0F0b20iLCJzdWdnZXN0aW9uc0xvYWRpbmdBdG9tIiwicmVzcG9uc2VTdHJlYW1pbmdBdG9tIiwicmVxdWVzdEZhaWx1cmVBdG9tIiwidXNlckV2ZW50UXVldWVBdG9tIiwidXNlclF1ZXVlRXZlbnRDb3VudEF0b20iLCJwcm9jZXNzVXNlckV2ZW50QXRvbSIsImNsZWFyVXNlckV2ZW50QXRvbSIsInVzZXJJZEF0b20iLCJjaGF0SWRBdG9tIiwic3VwcG9ydGVkRXZlbnRBdG9tIiwidmFyaWFudEluZm9BdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwidXNlTWVzc2FnZUludGVyY2VwdG9yIiwiaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20iLCJjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSIsInVzZUFtcGxpdHVkZVRyYWNraW5nIiwiUGVyZk1ldHJpY3NFdmVudHMiLCJDb21tZXJjZUFwaUNsaWVudCIsImNyZWF0ZVJlc3BvbnNlUGF5bG9hZCIsInVzZXJFdmVudHMiLCJTZXNzaW9uUmVzdGFydFJlcXVpcmVkIiwiY3JlYXRlQXBwTG9hZGVkRXZlbnQiLCJjcmVhdGVWaXNpdFVzZXJFdmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jaGF0Q29udGV4dC9jaGF0Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7XG4gIFBlcmZNZXRyaWNzRXZlbnRzLFxuICBjaGF0QXRvbSxcbiAgbG9nUGVyZk1ldHJpY0F0b20sXG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVxdWVzdEZhaWx1cmVBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgdXNlckV2ZW50c0F0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHtcbiAgY2hhdFNlYXJjaElzTG9hZGluZ0F0b20sXG4gIGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20sXG4gIGNoYXRTZWFyY2hQcm9kdWN0cyxcbiAgY2hhdFNlYXJjaFN0YXRlQXRvbSxcbiAgaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20sXG59IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvY2hhdFNlYXJjaCc7XG5pbXBvcnQgeyBjcmVhdGVBcHBMb2FkZWRFdmVudCwgY3JlYXRlVmlzaXRVc2VyRXZlbnQgfSBmcm9tICdzcmMvaG9va3MvdXRpbHMnO1xuaW1wb3J0IHsgdXNlTWVzc2FnZUludGVyY2VwdG9yIH0gZnJvbSAnc3JjL2ludGVyY2VwdG9ycy91c2VNZXNzYWdlSW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgc3VwcG9ydGVkRXZlbnRBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUnO1xuaW1wb3J0IHtcbiAgY2xlYXJVc2VyRXZlbnRBdG9tLFxuICBjcmVhdGVSZXNwb25zZVBheWxvYWQsXG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlQW1wbGl0dWRlVHJhY2tpbmcgfSBmcm9tICdzcmMvaG9va3MvQW1wbGl0dWRlT3BlcmF0aW9ucy91c2VBbXBsaXR1ZGVPcGVyYXRpb25zJztcbmltcG9ydCB7IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCB9IGZyb20gJ3NyYy9ob29rcy9TeXN0ZW1TZXR0aW5nc0NvbnRleHQnO1xuXG4vKipcbiAqIFJlY29yZCB0aGUgY2hhdCBhc3Npc3RhbnQgcmVzcG9uc2UgaW4gQW1wbGl0dWRlXG4gKlxuICogQHBhcmFtIHN0YXJ0VGltZU1zIFRoZSBzdGFydCB0aW1lIG9mIHRoZSBhc3Npc3RhbnQgcmVzcG9uc2VcbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3BvbnNlXG4gKi9cbmNvbnN0IHJlY29yZEFzc2lzdGFudFJlc3BvbnNlID0gKFxuICBzdGFydFRpbWVNczogbnVtYmVyLFxuICBwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QsXG4gIHRyYWNrOiAoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQsXG4pID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IGNoYXRTdGF0ZSA9IGF0b21TdG9yZS5nZXQoY2hhdEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoU3RhdGUgPSBhdG9tU3RvcmUuZ2V0KGNoYXRTZWFyY2hTdGF0ZUF0b20pO1xuICBjb25zdCBzZWFyY2hQcm9kdWN0cyA9IGF0b21TdG9yZS5nZXQoY2hhdFNlYXJjaFByb2R1Y3RzKTtcbiAgY29uc3Qgc2VhcmNoUHJvZHVjdHNTb3J0ID0gYXRvbVN0b3JlLmdldChjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3QgYXNzaXN0YW50UmVzcG9uc2VUaW1lTXMgPSB7IHN0YXJ0OiBzdGFydFRpbWVNcywgZW5kOiBEYXRlLm5vdygpIH07XG4gIGxldCB1c2VyUXVlcnlQcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChcbiAgICBjaGF0U3RhdGUucmVwbHlFdmVudENhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZCAmJlxuICAgIGNoYXRTdGF0ZS5zdWdnZXN0aW9uXG4gICkge1xuICAgIHVzZXJRdWVyeVByb3BlcnR5ID0gY2hhdFN0YXRlLnN1Z2dlc3Rpb24uY29udGVudDtcbiAgfSBlbHNlIGlmIChjaGF0U3RhdGUudXNlclF1ZXJ5ICYmIGNoYXRTdGF0ZS51c2VyUXVlcnkubGVuZ3RoID4gMCkge1xuICAgIHVzZXJRdWVyeVByb3BlcnR5ID0gY2hhdFN0YXRlLnVzZXJRdWVyeTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHJlc3BvbnNlX3RpbWVfbXM6IGFzc2lzdGFudFJlc3BvbnNlVGltZU1zLmVuZCAtIGFzc2lzdGFudFJlc3BvbnNlVGltZU1zLnN0YXJ0LFxuICAgIHVzZXJfZXZlbnRfdHlwZTogY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSxcbiAgICB1c2VyX3F1ZXJ5OiB1c2VyUXVlcnlQcm9wZXJ0eSxcbiAgfTtcblxuICBpZiAoY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgIGNvbnN0IGxhc3RBc3Npc3RhbnRUdXJuID0gY2hhdFN0YXRlLm1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKHR1cm4gPT4gdHVybi5sZW5ndGggPiAwICYmIHR1cm5bMF0ucm9sZSA9PT0gTWVzc2FnZVJvbGUuQXNzaXN0YW50KVxuICAgICAgLnBvcCgpO1xuICAgIGNvbnN0IGZvcm1UeXBlID0gcGF5bG9hZC51c2VyRXZlbnRzPy5maW5kKFxuICAgICAgZXZlbnQgPT4gZXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQsXG4gICAgKT8uYXR0cmlidXRlcy5mb3JtVHlwZTtcbiAgICBjb25zdCBmb3JtU3RhdHVzID0gbGFzdEFzc2lzdGFudFR1cm4/LnNvbWUocmVzcG9uc2UgPT4gcmVzcG9uc2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuT3JkZXIpO1xuICAgIGV2ZW50UHJvcHMuZm9ybV9zdWJtaXR0ZWRfYXR0cmlidXRlcyA9IHtcbiAgICAgIGZvcm1fdHlwZTogZm9ybVR5cGUsXG4gICAgICBzdGF0dXM6IGZvcm1TdGF0dXMgPyAnc3VjY2VzcycgOiAnZmFpbGVkJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNoYXRTZWFyY2hTdGF0ZSA9PT0gJ3Byb2R1Y3QtcGFnZScpIHtcbiAgICBldmVudFByb3BzLnNlYXJjaF9wcm9kdWN0c19yZXR1cm5lZCA9IHNlYXJjaFByb2R1Y3RzLmxlbmd0aDtcbiAgICBldmVudFByb3BzLnNlYXJjaF9wcm9kdWN0c19zb3J0X3R5cGUgPSBzZWFyY2hQcm9kdWN0c1NvcnQ7XG4gIH1cblxuICB0cmFjayhTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRBc3Npc3RhbnRSZXNwb25zZSwge1xuICAgIGV2ZW50UHJvcHMsXG4gIH0pO1xufTtcblxuaW50ZXJmYWNlIENoYXRDb250ZXh0UGFyYW1zIHt9XG5cbmNvbnN0IENoYXRDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxDaGF0Q29udGV4dFBhcmFtcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgdXBkYXRlTWVzc2FnZVN0YXRlID0gKFxuICBtZXNzYWdlOiBNZXNzYWdlLFxuICBsYXN0TWVzc2FnZTogTWVzc2FnZSxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKTogTWVzc2FnZSA9PiB7XG4gIGlmIChsYXN0TWVzc2FnZSA9PSBudWxsKSB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldiwgW21lc3NhZ2VdXSk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cbiAgaWYgKGxhc3RNZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlRleHQgJiYgbWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0KSB7XG4gICAgY29uc3QgbmV3TWVzc2FnZSA9IHtcbiAgICAgIC4uLmxhc3RNZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgLi4ubGFzdE1lc3NhZ2UubWV0YWRhdGEsXG4gICAgICAgIGNvbnRlbnQ6IGxhc3RNZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQgKyBtZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQsXG4gICAgICB9LFxuICAgIH07XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBsYXN0VHVybiA9IHByZXZbcHJldi5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSxcbiAgICAgICAgWy4uLmxhc3RUdXJuLnNsaWNlKDAsIGxhc3RUdXJuLmxlbmd0aCAtIDEpLCBuZXdNZXNzYWdlXSxcbiAgICAgIF07XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld01lc3NhZ2U7XG4gIH1cbiAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldi5zbGljZSgwLCBwcmV2Lmxlbmd0aCAtIDEpLCBbLi4ucHJldltwcmV2Lmxlbmd0aCAtIDFdLCBtZXNzYWdlXV0pO1xuICByZXR1cm4gbWVzc2FnZTtcbn07XG5cbmNvbnN0IGhhbmRsZVN0cmVhbWluZ0Vycm9yID0gKFxuICBfZXJyb3I6IHVua25vd24sXG4gIHNldFJlcXVlc3RGYWlsdXJlOiAoZmFpbGVkOiBib29sZWFuKSA9PiB2b2lkLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4pID0+IHtcbiAgc2V0UmVxdWVzdEZhaWx1cmUodHJ1ZSk7XG4gIHNldE1lc3NhZ2VzKHByZXYgPT4gW1xuICAgIC4uLnByZXYsXG4gICAgW1xuICAgICAge1xuICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICByb2xlOiBNZXNzYWdlUm9sZS5Bc3Npc3RhbnQsXG4gICAgICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlRleHQsXG4gICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNvbnRlbnQ6XG4gICAgICAgICAgICBcIkknbSBzb3JyeSEgSSdtIGhhdmluZyB0cm91YmxlIHJpZ2h0IG5vdy4gUGxlYXNlIHJlZnJlc2ggdGhlIHBhZ2Ugb3IgdHJ5IGFnYWluIGluIGEgbW9tZW50LlwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn07XG5cbmNvbnN0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZSA9IGFzeW5jIChcbiAgc3RyZWFtOiBBc3luY0l0ZXJhYmxlPFJlc3BvbnNlPixcbiAgbWVzc2FnZUludGVyY2VwdG9yOiB7XG4gICAgaW50ZXJjZXB0OiAocmVzcG9uc2U/OiBSZXNwb25zZSkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfSxcbiAgaGFuZGxlU2VhcmNoUmVzdWx0czogKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHZvaWQsXG4gIHNldE1lc3NhZ2VzOiAodXBkYXRlcjogKHByZXY6IE1lc3NhZ2VbXVtdKSA9PiBNZXNzYWdlW11bXSkgPT4gdm9pZCxcbiAgc2V0U2VhcmNoSXNMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCxcbiAgY2hhdElkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsgaGFzU2VhcmNoUmVzdWx0czogYm9vbGVhbiB9PiA9PiB7XG4gIGxldCBsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgbGV0IGhhc1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IHJlc3BvbnNlIG9mIHN0cmVhbSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAobWVzc2FnZUludGVyY2VwdG9yLmludGVyY2VwdChyZXNwb25zZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlID0gbWVzc2FnZUZyb21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdHJhbnNmb3JtIEFQSSByZXNwb25zZSB0byBjbGllbnQgbWVzc2FnZScpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoKSB7XG4gICAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMobWVzc2FnZSk7XG4gICAgICAgIGhhc1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xuICAgICAgICBzZXRTZWFyY2hJc0xvYWRpbmcoZmFsc2UpOyAvLyBVcGRhdGUgc2VhcmNoIGxvYWRpbmcgaW1tZWRpYXRlbHkgd2hlbiByZXN1bHRzIGFyZSBkZXRlY3RlZFxuICAgICAgfVxuXG4gICAgICBsYXN0TWVzc2FnZSA9IHVwZGF0ZU1lc3NhZ2VTdGF0ZShtZXNzYWdlLCBsYXN0TWVzc2FnZSEsIHNldE1lc3NhZ2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBGYWlsZWQgdG8gZ2VuZXJhdGUgcmVzcG9uc2VzIGZyb20gc3RyZWFtIGNoYXRfaWQ9JHtjaGF0SWR9YCxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHtcbiAgICAgICAgICBsYXN0UmVzcG9uc2U6IGxhc3RNZXNzYWdlLFxuICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBoYXNTZWFyY2hSZXN1bHRzIH07XG59O1xuXG5jb25zdCBDaGF0Q29udGV4dFByb3ZpZGVyID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pID0+IHtcbiAgY29uc3QgbG9nUGVyZk1ldHJpYyA9IHVzZVNldEF0b20obG9nUGVyZk1ldHJpY0F0b20pO1xuICBjb25zdCBbd2lkZ2V0SW5pdGlhbGl6ZWQsIHNldFdpZGdldEluaXRpYWxpemVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2V0VXNlckhhc1JlcGxpZWQgPSB1c2VTZXRBdG9tKHVzZXJIYXNSZXBsaWVkQXRvbSk7XG4gIC8vIFRPRE86IGNyZWF0ZSBhdG9tcyBmb3Igc2V0dGluZy9nZXR0aW5nIHRoZSBsYXN0IG1lc3NhZ2UgdHVyblxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZUF0b208TWVzc2FnZVtdW10+KG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHNldFVzZXJFdmVudHMgPSB1c2VTZXRBdG9tKHVzZXJFdmVudHNBdG9tKTtcbiAgY29uc3Qgc2V0U3VnZ2VzdGlvbnMgPSB1c2VTZXRBdG9tKHN1Z2dlc3Rpb25zQXRvbSk7XG4gIGNvbnN0IFtzdWdnZXN0aW9uc0xvYWRpbmcsIHNldFN1Z2dlc3Rpb25zTG9hZGluZ10gPSB1c2VBdG9tPGJvb2xlYW4+KHN1Z2dlc3Rpb25zTG9hZGluZ0F0b20pO1xuICBjb25zdCBbcmVzcG9uc2VTdHJlYW1pbmcsIHNldFJlc3BvbnNlU3RyZWFtaW5nXSA9IHVzZUF0b208Ym9vbGVhbj4ocmVzcG9uc2VTdHJlYW1pbmdBdG9tKTtcbiAgY29uc3Qgc2V0UmVxdWVzdEZhaWx1cmUgPSB1c2VTZXRBdG9tKHJlcXVlc3RGYWlsdXJlQXRvbSk7XG4gIGNvbnN0IHVzZXJFdmVudHMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudCA9IHVzZUF0b21WYWx1ZSh1c2VyUXVldWVFdmVudENvdW50QXRvbSk7XG4gIGNvbnN0IG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkID0gdXNlU2V0QXRvbShwcm9jZXNzVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IGNsZWFyVXNlckV2ZW50UXVldWUgPSB1c2VTZXRBdG9tKGNsZWFyVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gdXNlQXRvbVZhbHVlKGNoYXRJZEF0b20pO1xuICBjb25zdCBzdXBwb3J0ZWRFdmVudCA9IHVzZUF0b21WYWx1ZShzdXBwb3J0ZWRFdmVudEF0b20pO1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggYWN0dWFsIG9yZ0lkIGZyb20gdXNlRW52aXZlQ29uZmlnIG9yIE5ld09yZ0NvbmZpZ0NvbnRleHQgd2hlbiBhdmFpbGFibGVcbiAgY29uc3Qgb3JnSWQgPSAnbW9jay1vcmctaWQnO1xuXG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHZhcmlhbnRJbmZvQXRvbSk7XG4gIGNvbnN0IHNldHRpbmdzQ29udGV4dCA9IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCgpO1xuICBjb25zdCBtZXNzYWdlSW50ZXJjZXB0b3IgPSB1c2VNZXNzYWdlSW50ZXJjZXB0b3IoKTtcbiAgY29uc3QgaGFuZGxlU2VhcmNoUmVzdWx0cyA9IHVzZVNldEF0b20oaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20pO1xuICBjb25zdCBzZXRTZWFyY2hJc0xvYWRpbmcgPSB1c2VTZXRBdG9tKGNoYXRTZWFyY2hJc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgeyB0cmFjayB9ID0gdXNlQW1wbGl0dWRlVHJhY2tpbmcoKTtcblxuICBjb25zdCBnZXRTdHJlYW1pbmdSZXNwb25zZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTx7IGhhc1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gfT4gPT4ge1xuICAgICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlU3RhcnRlZCk7XG4gICAgICBjb25zdCBzdHJlYW0gPSBDb21tZXJjZUFwaUNsaWVudC5nZXROZXh0UmVzcG9uc2VTdHJlYW1pbmcocGF5bG9hZCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFJlcXVlc3RGYWlsdXJlKGZhbHNlKTtcblxuICAgICAgICBjb25zdCB7IGhhc1NlYXJjaFJlc3VsdHMgfSA9IGF3YWl0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZShcbiAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMsXG4gICAgICAgICAgc2V0TWVzc2FnZXMsXG4gICAgICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4geyBoYXNTZWFyY2hSZXN1bHRzIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZVN0cmVhbWluZ0Vycm9yKGUsIHNldFJlcXVlc3RGYWlsdXJlLCBzZXRNZXNzYWdlcyk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBsb2dQZXJmTWV0cmljKFBlcmZNZXRyaWNzRXZlbnRzLkZpcnN0UmVzcG9uc2VDb21wbGV0ZWQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgbG9nUGVyZk1ldHJpYyxcbiAgICAgIHNldFJlcXVlc3RGYWlsdXJlLFxuICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgaGFuZGxlU2VhcmNoUmVzdWx0cyxcbiAgICAgIHNldE1lc3NhZ2VzLFxuICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nLFxuICAgICAgY2hhdElkLFxuICAgIF0sXG4gICk7XG5cbiAgY29uc3QgZ2V0U3VnZ2VzdGlvbnMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFN1Z2dlc3Rpb25zU3RhcnRlZCk7XG4gICAgc2V0U3VnZ2VzdGlvbnNMb2FkaW5nKHRydWUpO1xuICAgIHNldFN1Z2dlc3Rpb25zKFtdKTtcblxuICAgIGNvbnN0IHBheWxvYWRXaXRob3V0QXBwTG9hZGVkID0gY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgIHVzZXJFdmVudHM6IFtdLFxuICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgfSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXROZXh0U3VnZ2VzdGlvbnMocGF5bG9hZFdpdGhvdXRBcHBMb2FkZWQpO1xuXG4gICAgLy8gc29ydCB0aGUgc3VnZ2VzdGlvbnMgYnkgc2hvcnRlc3QgbGVuZ3RoIHNvIHRoZSBwaWxscyBjYW4gYmUgc3RhY2tlZCBob3Jpem9udGFsbHlcbiAgICBzZXRTdWdnZXN0aW9ucyhyZXNwb25zZS5zb3J0KChhLCBiKSA9PiBhLmNvbnRlbnQubGVuZ3RoIC0gYi5jb250ZW50Lmxlbmd0aCkpO1xuICAgIHNldFN1Z2dlc3Rpb25zTG9hZGluZyhmYWxzZSk7XG4gICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFN1Z2dlc3Rpb25zQ29tcGxldGVkKTtcbiAgfSwgW2xvZ1BlcmZNZXRyaWMsIHNldFN1Z2dlc3Rpb25zTG9hZGluZywgc2V0U3VnZ2VzdGlvbnMsIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zXSk7XG5cbiAgY29uc3QgZ2V0UmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ/OiBOZXh0TWVzc2FnZVJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID1cbiAgICAgICAgICBwYXlsb2FkID8/XG4gICAgICAgICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgIHVzZXJFdmVudHMsXG4gICAgICAgICAgICBnZW5lcmF0aW9uUGFyYW1zOiBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICBzZXRSZXNwb25zZVN0cmVhbWluZyh0cnVlKTtcbiAgICAgICAgc2V0U3VnZ2VzdGlvbnMoW10pO1xuICAgICAgICBjb25zdCBzdGFydFRpbWVNcyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgYXdhaXQgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzKHJlcXVlc3RQYXlsb2FkKTtcblxuICAgICAgICByZWNvcmRBc3Npc3RhbnRSZXNwb25zZShzdGFydFRpbWVNcywgcmVxdWVzdFBheWxvYWQsIHRyYWNrKTtcbiAgICAgICAgYXdhaXQgZ2V0U3VnZ2VzdGlvbnMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gZ2V0UmVzcG9uc2VzIGVycm9yJywgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gUmVtb3ZlIHNlYXJjaCBsb2FkaW5nIG1hbmFnZW1lbnQgZnJvbSBoZXJlIC0gaXQncyBub3cgaGFuZGxlZCBpbmRlcGVuZGVudGx5XG4gICAgICAgIC8vIGluIHRoZSBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UgZnVuY3Rpb24gd2hlbiBzZWFyY2ggcmVzdWx0cyBhcmUgZGV0ZWN0ZWRcbiAgICAgICAgbWFya1VzZXJFdmVudHNQcm9jZXNzZWQodXNlckV2ZW50cy5tYXAoKHsgZXZlbnRJZCB9KSA9PiBldmVudElkKSk7XG4gICAgICAgIHNldFVzZXJIYXNSZXBsaWVkKGZhbHNlKTtcbiAgICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgdXNlckV2ZW50cyxcbiAgICAgIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgICBzZXRTdWdnZXN0aW9ucyxcbiAgICAgIGdldFN0cmVhbWluZ1Jlc3BvbnNlcyxcbiAgICAgIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkLFxuICAgICAgZ2V0U3VnZ2VzdGlvbnMsXG4gICAgICBzZXRVc2VySGFzUmVwbGllZCxcbiAgICAgIHRyYWNrLFxuICAgIF0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcm9jZXNzVXNlckV2ZW50cyA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZVN0cmVhbWluZyB8fCAhd2lkZ2V0SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICh2YXJpYW50SW5mby52YXJpYW50ID09PSAncGRwJyAmJiAhdmFyaWFudEluZm8ucHJvZHVjdElkKSB8fFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BscCcgJiYgIXZhcmlhbnRJbmZvLnBscElkKSB8fFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BhZ2VfdmlzaXQnICYmICF2YXJpYW50SW5mby51cmwpXG4gICAgICApIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdbc3BpZmZ5LWFpXSB2YXJpYW50SW5mbyBoYXMgaW52YWxpZCB2YWx1ZXMsIHNraXBwaW5nLi4uJywge1xuICAgICAgICAgIHZhcmlhbnRJbmZvLFxuICAgICAgICAgIHN1cHBvcnRlZEV2ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBBc3Npc3RhbnRzIFR1cm4gaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ2V0UmVzcG9uc2VzKCk7XG4gICAgICAgIExvZ2dlci5sb2dJbmZvKGBBc3Npc3RhbnRzIFR1cm4gW2ZpbmlzaGVkXWApO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBBc3Npc3RhbnRzIFR1cm4gZXJyb3InLCBlcnJvcik7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAodXNlclF1ZXVlRXZlbnRDb3VudCA+IDApIHtcbiAgICAgIHByb2Nlc3NVc2VyRXZlbnRzKCk7XG4gICAgfVxuICB9LCBbXG4gICAgZ2V0UmVzcG9uc2VzLFxuICAgIHJlc3BvbnNlU3RyZWFtaW5nLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgd2lkZ2V0SW5pdGlhbGl6ZWQsXG4gICAgdmFyaWFudEluZm8sXG4gICAgc3VwcG9ydGVkRXZlbnQsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdpZGdldEluaXRpYWxpemVkIHx8IHJlc3BvbnNlU3RyZWFtaW5nKSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBpbml0aWFsaXplV2lkZ2V0IFtza2lwcGVkXSBpc19jdXJyZW50bHlfc3RyZWFtaW5nPSR7cmVzcG9uc2VTdHJlYW1pbmd9IGlzX2luaXRpYWxpemVkPSR7d2lkZ2V0SW5pdGlhbGl6ZWR9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaHlkcmF0ZUNoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgICAgYFtzcGlmZnktYWldIGluaXRpYWxpemVXaWRnZXQgaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpc19pbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICAgICk7XG4gICAgICAgIC8vIG9uIG1vdW50LCB0cnkgdG8gZ2V0IHRoZSByZXNwb25zZXMgZnJvbSBhbiBhY3RpdmUgc2Vzc2lvbiBpZiBvbmUgZXhpc3RzXG4gICAgICAgIGlmICghb3JnSWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ29yZ0lkIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1lc3NhZ2VzOiBleGlzdGluZ01lc3NhZ2VzLCB1c2VyRXZlbnRzIH0gPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRSZXNwb25zZXMoXG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0TWVzc2FnZXMoWy4uLmV4aXN0aW5nTWVzc2FnZXNdKTtcbiAgICAgICAgc2V0VXNlckV2ZW50cyhbLi4udXNlckV2ZW50c10pO1xuICAgICAgICBnZXRSZXNwb25zZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIG5vIGFjdGl2ZSBjaGF0IHNlc3Npb24gd2FzIGZvdW5kLCBzdGFydCBhIG5ldyBvbmVcbiAgICAgICAgTG9nZ2VyLmxvZ0luZm8oYEluaXQgY2hhdCBbZXhjZXB0aW9uXSBjaGF0X2lkPSR7Y2hhdElkfSBlcnJvcj0ke2Vycm9yfWAsIGVycm9yKTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCkge1xuICAgICAgICAgIGNvbnN0IGFwcExvYWRlZEV2ZW50ID0gY3JlYXRlQXBwTG9hZGVkRXZlbnQoKTtcbiAgICAgICAgICBjb25zdCB2aXNpdEV2ZW50ID0gY3JlYXRlVmlzaXRVc2VyRXZlbnQoeyB2YXJpYW50SW5mbyB9KTtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhbXSk7XG4gICAgICAgICAgY2xlYXJVc2VyRXZlbnRRdWV1ZSgpO1xuICAgICAgICAgIGlmICh2aXNpdEV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgICAgdXNlckV2ZW50czogW2FwcExvYWRlZEV2ZW50LCB2aXNpdEV2ZW50XSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGdldFJlc3BvbnNlcyhwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldFdpZGdldEluaXRpYWxpemVkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBoeWRyYXRlQ2hhdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25Gb2N1cyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFyZXNwb25zZVN0cmVhbWluZyAmJiAhc3VnZ2VzdGlvbnNMb2FkaW5nICYmIG9yZ0lkKSB7XG4gICAgICAgIGNvbnN0IHsgbWVzc2FnZXM6IGV4aXN0aW5nTWVzc2FnZXMgfSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldFJlc3BvbnNlcyhcbiAgICAgICAgICBvcmdJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChleGlzdGluZ01lc3NhZ2VzLmxlbmd0aCA+IG1lc3NhZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIHNldE1lc3NhZ2VzKFsuLi5leGlzdGluZ01lc3NhZ2VzXSk7XG4gICAgICAgICAgLy8gVE9ETzogSXMgdGhpcyBidWcgaGFjayBzdGlsbCBuZWNlc3Nhcnk/XG4gICAgICAgICAgLy8gSWYgaXQgaXMsIGNvbWUgdXAgd2l0aCBhIGJldHRlciBzb2x1dGlvbiBmb3IgaXRcbiAgICAgICAgICAvLyB9IGVsc2UgaWYgKGV4aXN0aW5nTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gICAvLyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBhIG5ldyBzZXNzaW9uLCB0aGUgc2Vzc2lvbiB3b3VsZCBiZVxuICAgICAgICAgIC8vICAgLy8gY3JlYXRlZCBpbiB0aGUgYmFja2VuZCBidXQgd2l0aG91dCBhbnkgbWVzc2FnZXMuIFJldHJ5IHRoZSBuZXh0X3Jlc3BvbnNlcyByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAvLyAgIC8vIHRoZSBjdXJyZW50IHNldCBvZiBwYXJhbWV0ZXJzIHRvIFwianVtcHN0YXJ0XCIgdGhlIHNlc3Npb25cbiAgICAgICAgICAvLyAgIHRyaWdnZXJHZXRSZXNwb25zZUNhbGwoJ29uRm9jdXMnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIG9uRm9jdXMgZXJyb3InLCBlcnJvcik7XG4gICAgfVxuICB9LCBbcmVzcG9uc2VTdHJlYW1pbmcsIHN1Z2dlc3Rpb25zTG9hZGluZywgb3JnSWQsIGNoYXRJZCwgdXNlcklkLCBtZXNzYWdlcy5sZW5ndGgsIHNldE1lc3NhZ2VzXSk7XG5cbiAgLy8gbGlzdGVuIGZvciBwYWdlIGZvY3VzIHRvIGdldCBsYXRlc3QgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cyk7XG4gICAgfTtcbiAgfSwgW29uRm9jdXNdKTtcblxuICBjb25zdCBjaGF0Q29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHt9KSwgW10pO1xuXG4gIHJldHVybiA8Q2hhdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NoYXRDb250ZXh0fT57Y2hpbGRyZW59PC9DaGF0Q29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgeyBDaGF0Q29udGV4dCwgQ2hhdENvbnRleHRQcm92aWRlciB9O1xuZXhwb3J0IHR5cGUgeyBDaGF0Q29udGV4dFBhcmFtcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3REEsTUFBTSwyQkFDSixhQUNBLFNBQ0EsVUFDRztDQUNILE1BQU0sWUFBWUEsZ0NBQWM7Q0FDaEMsTUFBTSxZQUFZLFVBQVUsSUFBSUMsa0NBQVM7Q0FDekMsTUFBTSxrQkFBa0IsVUFBVSxJQUFJQyx1Q0FBb0I7Q0FDMUQsTUFBTSxpQkFBaUIsVUFBVSxJQUFJQyxzQ0FBbUI7Q0FDeEQsTUFBTSxxQkFBcUIsVUFBVSxJQUFJQyxnREFBNkI7Q0FDdEUsTUFBTSwwQkFBMEI7RUFBRSxPQUFPO0VBQWEsS0FBSyxLQUFLLEtBQUs7RUFBRTtDQUN2RSxJQUFJQztBQUVKLEtBQ0UsVUFBVSx1QkFBdUJDLGtEQUFrQixxQkFDbkQsVUFBVSxXQUVWLHFCQUFvQixVQUFVLFdBQVc7VUFDaEMsVUFBVSxhQUFhLFVBQVUsVUFBVSxTQUFTLEVBQzdELHFCQUFvQixVQUFVO0NBR2hDLE1BQU1DLGFBQXNDO0VBQzFDLGtCQUFrQix3QkFBd0IsTUFBTSx3QkFBd0I7RUFDeEUsaUJBQWlCLFVBQVU7RUFDM0IsWUFBWTtFQUNiO0FBRUQsS0FBSSxVQUFVLHVCQUF1QkQsa0RBQWtCLGVBQWU7RUFDcEUsTUFBTSxvQkFBb0IsVUFBVSxTQUNqQyxRQUFPLFNBQVEsS0FBSyxTQUFTLEtBQUssS0FBSyxHQUFHLFNBQVNFLDRCQUFZLFVBQVUsQ0FDekUsS0FBSztBQUtSLGFBQVcsNEJBQTRCO0dBQ3JDLFdBTGUsUUFBUSxZQUFZLE1BQ25DLFVBQVMsTUFBTSxhQUFhRixrREFB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
@@ -1,20 +1,20 @@
1
1
  import { createAppLoadedEvent, createVisitUserEvent } from "../../hooks/utils.js";
2
2
  import { useMessageInterceptor } from "../../interceptors/useMessageInterceptor.js";
3
- import { MessageRole, MessageType } from "../../application/models/message.js";
4
3
  import logger_default from "../../application/logging/logger.js";
4
+ import { MessageRole, MessageType } from "../../application/models/message.js";
5
5
  import "../../application/models/index.js";
6
6
  import { getAtomStore } from "../../atoms/atomStore/atomStore.js";
7
7
  import "../../atoms/atomStore/index.js";
8
8
  import { supportedEventAtom, variantInfoAtom } from "../../atoms/app/variant.js";
9
9
  import { chatIdAtom, userIdAtom } from "../../atoms/app/index.js";
10
10
  import { SpiffyMetricsEventName } from "../amplitudeContext/amplitudeContext.js";
11
- import { messageFromResponse } from "../../application/utils/messageFromResponse.js";
12
- import "../../application/utils/index.js";
13
11
  import { messagesAtom, requestFailureAtom, responseStreamingAtom, suggestionsAtom, suggestionsLoadingAtom, userEventsAtom, userHasRepliedAtom } from "../../atoms/chat/chatState.js";
14
12
  import { clearUserEventAtom, createResponsePayload, processUserEventAtom, userEventQueueAtom, userQueueEventCountAtom } from "../../atoms/chat/messageQueue.js";
15
13
  import { PerfMetricsEvents, logPerfMetricAtom } from "../../atoms/chat/performanceMetrics.js";
16
14
  import { chatAtom } from "../../atoms/chat/index.js";
17
15
  import { chatSearchIsLoadingAtom, chatSearchProductSortingAtom, chatSearchProducts, chatSearchStateAtom, handleSearchResultsAtom } from "../../atoms/search/chatSearch.js";
16
+ import { messageFromResponse } from "../../application/utils/messageFromResponse.js";
17
+ import "../../application/utils/index.js";
18
18
  import { SessionRestartRequired } from "../../types/exceptions/sessionExceptions.js";
19
19
  import commerce_api_default from "../../application/commerce-api.js";
20
20
  import { useAmplitudeTracking } from "../../hooks/AmplitudeOperations/useAmplitudeOperations.js";
@@ -301,4 +301,4 @@ const ChatContextProvider = ({ children }) => {
301
301
 
302
302
  //#endregion
303
303
  export { ChatContext, ChatContextProvider };
304
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENvbnRleHQuanMiLCJuYW1lcyI6WyJ1c2VyUXVlcnlQcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkIiwiZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4iLCJ1dWlkIiwibGFzdE1lc3NhZ2U6IE1lc3NhZ2UgfCB1bmRlZmluZWQiLCJlcnJvcjogdW5rbm93biIsIkNvbW1lcmNlQXBpQ2xpZW50IiwidXNlckV2ZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jaGF0Q29udGV4dC9jaGF0Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVxdWVzdEZhaWx1cmVBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgUGVyZk1ldHJpY3NFdmVudHMsXG4gIGxvZ1BlcmZNZXRyaWNBdG9tLFxuICB1c2VyRXZlbnRzQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5pbXBvcnQge1xuICBjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tLFxuICBjaGF0U2VhcmNoUHJvZHVjdHMsXG4gIGNoYXRTZWFyY2hTdGF0ZUF0b20sXG4gIGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tLFxuICBjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaC9jaGF0U2VhcmNoJztcbmltcG9ydCB7IGNyZWF0ZUFwcExvYWRlZEV2ZW50LCBjcmVhdGVWaXNpdFVzZXJFdmVudCB9IGZyb20gJ3NyYy9ob29rcy91dGlscyc7XG5pbXBvcnQgeyB1c2VNZXNzYWdlSW50ZXJjZXB0b3IgfSBmcm9tICdzcmMvaW50ZXJjZXB0b3JzL3VzZU1lc3NhZ2VJbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBzdXBwb3J0ZWRFdmVudEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgY2hhdEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7XG4gIGNsZWFyVXNlckV2ZW50QXRvbSxcbiAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkLFxuICBwcm9jZXNzVXNlckV2ZW50QXRvbSxcbiAgdXNlckV2ZW50UXVldWVBdG9tLFxuICB1c2VyUXVldWVFdmVudENvdW50QXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQvbWVzc2FnZVF1ZXVlJztcbmltcG9ydCB7IHVzZUFtcGxpdHVkZVRyYWNraW5nIH0gZnJvbSAnc3JjL2hvb2tzL0FtcGxpdHVkZU9wZXJhdGlvbnMvdXNlQW1wbGl0dWRlT3BlcmF0aW9ucyc7XG5pbXBvcnQgeyB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvU3lzdGVtU2V0dGluZ3NDb250ZXh0JztcblxuLyoqXG4gKiBSZWNvcmQgdGhlIGNoYXQgYXNzaXN0YW50IHJlc3BvbnNlIGluIEFtcGxpdHVkZVxuICpcbiAqIEBwYXJhbSBzdGFydFRpbWVNcyBUaGUgc3RhcnQgdGltZSBvZiB0aGUgYXNzaXN0YW50IHJlc3BvbnNlXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB1c2VkIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZVxuICovXG5jb25zdCByZWNvcmRBc3Npc3RhbnRSZXNwb25zZSA9IChcbiAgc3RhcnRUaW1lTXM6IG51bWJlcixcbiAgcGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICB0cmFjazogKGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSwgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkLFxuKSA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBjaGF0U3RhdGUgPSBhdG9tU3RvcmUuZ2V0KGNoYXRBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaFN0YXRlID0gYXRvbVN0b3JlLmdldChjaGF0U2VhcmNoU3RhdGVBdG9tKTtcbiAgY29uc3Qgc2VhcmNoUHJvZHVjdHMgPSBhdG9tU3RvcmUuZ2V0KGNoYXRTZWFyY2hQcm9kdWN0cyk7XG4gIGNvbnN0IHNlYXJjaFByb2R1Y3RzU29ydCA9IGF0b21TdG9yZS5nZXQoY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSk7XG4gIGNvbnN0IGFzc2lzdGFudFJlc3BvbnNlVGltZU1zID0geyBzdGFydDogc3RhcnRUaW1lTXMsIGVuZDogRGF0ZS5ub3coKSB9O1xuICBsZXQgdXNlclF1ZXJ5UHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBpZiAoXG4gICAgY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQgJiZcbiAgICBjaGF0U3RhdGUuc3VnZ2VzdGlvblxuICApIHtcbiAgICB1c2VyUXVlcnlQcm9wZXJ0eSA9IGNoYXRTdGF0ZS5zdWdnZXN0aW9uLmNvbnRlbnQ7XG4gIH0gZWxzZSBpZiAoY2hhdFN0YXRlLnVzZXJRdWVyeSAmJiBjaGF0U3RhdGUudXNlclF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICB1c2VyUXVlcnlQcm9wZXJ0eSA9IGNoYXRTdGF0ZS51c2VyUXVlcnk7XG4gIH1cblxuICBjb25zdCBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICByZXNwb25zZV90aW1lX21zOiBhc3Npc3RhbnRSZXNwb25zZVRpbWVNcy5lbmQgLSBhc3Npc3RhbnRSZXNwb25zZVRpbWVNcy5zdGFydCxcbiAgICB1c2VyX2V2ZW50X3R5cGU6IGNoYXRTdGF0ZS5yZXBseUV2ZW50Q2F0ZWdvcnksXG4gICAgdXNlcl9xdWVyeTogdXNlclF1ZXJ5UHJvcGVydHksXG4gIH07XG5cbiAgaWYgKGNoYXRTdGF0ZS5yZXBseUV2ZW50Q2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpIHtcbiAgICBjb25zdCBsYXN0QXNzaXN0YW50VHVybiA9IGNoYXRTdGF0ZS5tZXNzYWdlc1xuICAgICAgLmZpbHRlcih0dXJuID0+IHR1cm4ubGVuZ3RoID4gMCAmJiB0dXJuWzBdLnJvbGUgPT09IE1lc3NhZ2VSb2xlLkFzc2lzdGFudClcbiAgICAgIC5wb3AoKTtcbiAgICBjb25zdCBmb3JtVHlwZSA9IHBheWxvYWQudXNlckV2ZW50cz8uZmluZChcbiAgICAgIGV2ZW50ID0+IGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgICk/LmF0dHJpYnV0ZXMuZm9ybVR5cGU7XG4gICAgY29uc3QgZm9ybVN0YXR1cyA9IGxhc3RBc3Npc3RhbnRUdXJuPy5zb21lKHJlc3BvbnNlID0+IHJlc3BvbnNlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLk9yZGVyKTtcbiAgICBldmVudFByb3BzLmZvcm1fc3VibWl0dGVkX2F0dHJpYnV0ZXMgPSB7XG4gICAgICBmb3JtX3R5cGU6IGZvcm1UeXBlLFxuICAgICAgc3RhdHVzOiBmb3JtU3RhdHVzID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChjaGF0U2VhcmNoU3RhdGUgPT09ICdwcm9kdWN0LXBhZ2UnKSB7XG4gICAgZXZlbnRQcm9wcy5zZWFyY2hfcHJvZHVjdHNfcmV0dXJuZWQgPSBzZWFyY2hQcm9kdWN0cy5sZW5ndGg7XG4gICAgZXZlbnRQcm9wcy5zZWFyY2hfcHJvZHVjdHNfc29ydF90eXBlID0gc2VhcmNoUHJvZHVjdHNTb3J0O1xuICB9XG5cbiAgdHJhY2soU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0QXNzaXN0YW50UmVzcG9uc2UsIHtcbiAgICBldmVudFByb3BzLFxuICB9KTtcbn07XG5cbmludGVyZmFjZSBDaGF0Q29udGV4dFBhcmFtcyB7fVxuXG5jb25zdCBDaGF0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q2hhdENvbnRleHRQYXJhbXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IHVwZGF0ZU1lc3NhZ2VTdGF0ZSA9IChcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgbGFzdE1lc3NhZ2U6IE1lc3NhZ2UsXG4gIHNldE1lc3NhZ2VzOiAodXBkYXRlcjogKHByZXY6IE1lc3NhZ2VbXVtdKSA9PiBNZXNzYWdlW11bXSkgPT4gdm9pZCxcbik6IE1lc3NhZ2UgPT4ge1xuICBpZiAobGFzdE1lc3NhZ2UgPT0gbnVsbCkge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4gWy4uLnByZXYsIFttZXNzYWdlXV0pO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG4gIGlmIChsYXN0TWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0ICYmIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuVGV4dCkge1xuICAgIGNvbnN0IG5ld01lc3NhZ2UgPSB7XG4gICAgICAuLi5sYXN0TWVzc2FnZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIC4uLmxhc3RNZXNzYWdlLm1ldGFkYXRhLFxuICAgICAgICBjb250ZW50OiBsYXN0TWVzc2FnZS5tZXRhZGF0YS5jb250ZW50ICsgbWVzc2FnZS5tZXRhZGF0YS5jb250ZW50LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgbGFzdFR1cm4gPSBwcmV2W3ByZXYubGVuZ3RoIC0gMV07XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5wcmV2LnNsaWNlKDAsIHByZXYubGVuZ3RoIC0gMSksXG4gICAgICAgIFsuLi5sYXN0VHVybi5zbGljZSgwLCBsYXN0VHVybi5sZW5ndGggLSAxKSwgbmV3TWVzc2FnZV0sXG4gICAgICBdO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdNZXNzYWdlO1xuICB9XG4gIHNldE1lc3NhZ2VzKHByZXYgPT4gWy4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSwgWy4uLnByZXZbcHJldi5sZW5ndGggLSAxXSwgbWVzc2FnZV1dKTtcbiAgcmV0dXJuIG1lc3NhZ2U7XG59O1xuXG5jb25zdCBoYW5kbGVTdHJlYW1pbmdFcnJvciA9IChcbiAgX2Vycm9yOiB1bmtub3duLFxuICBzZXRSZXF1ZXN0RmFpbHVyZTogKGZhaWxlZDogYm9vbGVhbikgPT4gdm9pZCxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHNldFJlcXVlc3RGYWlsdXJlKHRydWUpO1xuICBzZXRNZXNzYWdlcyhwcmV2ID0+IFtcbiAgICAuLi5wcmV2LFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgICAgcm9sZTogTWVzc2FnZVJvbGUuQXNzaXN0YW50LFxuICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5UZXh0LFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBjb250ZW50OlxuICAgICAgICAgICAgXCJJJ20gc29ycnkhIEknbSBoYXZpbmcgdHJvdWJsZSByaWdodCBub3cuIFBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHRyeSBhZ2FpbiBpbiBhIG1vbWVudC5cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgXSk7XG59O1xuXG5jb25zdCBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UgPSBhc3luYyAoXG4gIHN0cmVhbTogQXN5bmNJdGVyYWJsZTxSZXNwb25zZT4sXG4gIG1lc3NhZ2VJbnRlcmNlcHRvcjoge1xuICAgIGludGVyY2VwdDogKHJlc3BvbnNlPzogUmVzcG9uc2UpID0+IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIH0sXG4gIGhhbmRsZVNlYXJjaFJlc3VsdHM6IChtZXNzYWdlOiBNZXNzYWdlKSA9PiB2b2lkLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4gIHNldFNlYXJjaElzTG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQsXG4gIGNoYXRJZDogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGhhc1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gfT4gPT4ge1xuICBsZXQgbGFzdE1lc3NhZ2U6IE1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGxldCBoYXNTZWFyY2hSZXN1bHRzID0gZmFsc2U7XG5cbiAgZm9yIGF3YWl0IChjb25zdCByZXNwb25zZSBvZiBzdHJlYW0pIHtcbiAgICB0cnkge1xuICAgICAgaWYgKG1lc3NhZ2VJbnRlcmNlcHRvci5pbnRlcmNlcHQocmVzcG9uc2UpKSB7XG4gICAgICAgIHJldHVybiB7IGhhc1NlYXJjaFJlc3VsdHMgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRyYW5zZm9ybSBBUEkgcmVzcG9uc2UgdG8gY2xpZW50IG1lc3NhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaCkge1xuICAgICAgICBoYW5kbGVTZWFyY2hSZXN1bHRzKG1lc3NhZ2UpO1xuICAgICAgICBoYXNTZWFyY2hSZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nKGZhbHNlKTsgLy8gVXBkYXRlIHNlYXJjaCBsb2FkaW5nIGltbWVkaWF0ZWx5IHdoZW4gcmVzdWx0cyBhcmUgZGV0ZWN0ZWRcbiAgICAgIH1cblxuICAgICAgbGFzdE1lc3NhZ2UgPSB1cGRhdGVNZXNzYWdlU3RhdGUobWVzc2FnZSwgbGFzdE1lc3NhZ2UhLCBzZXRNZXNzYWdlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIExvZ2dlci5sb2dXYXJuKFxuICAgICAgICBgW3NwaWZmeS1haV0gRmFpbGVkIHRvIGdlbmVyYXRlIHJlc3BvbnNlcyBmcm9tIHN0cmVhbSBjaGF0X2lkPSR7Y2hhdElkfWAsXG4gICAgICAgIGVycm9yLFxuICAgICAgICB7XG4gICAgICAgICAgbGFzdFJlc3BvbnNlOiBsYXN0TWVzc2FnZSxcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xufTtcblxuY29uc3QgQ2hhdENvbnRleHRQcm92aWRlciA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSA9PiB7XG4gIGNvbnN0IGxvZ1BlcmZNZXRyaWMgPSB1c2VTZXRBdG9tKGxvZ1BlcmZNZXRyaWNBdG9tKTtcbiAgY29uc3QgW3dpZGdldEluaXRpYWxpemVkLCBzZXRXaWRnZXRJbml0aWFsaXplZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNldFVzZXJIYXNSZXBsaWVkID0gdXNlU2V0QXRvbSh1c2VySGFzUmVwbGllZEF0b20pO1xuICAvLyBUT0RPOiBjcmVhdGUgYXRvbXMgZm9yIHNldHRpbmcvZ2V0dGluZyB0aGUgbGFzdCBtZXNzYWdlIHR1cm5cbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VBdG9tPE1lc3NhZ2VbXVtdPihtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzZXRVc2VyRXZlbnRzID0gdXNlU2V0QXRvbSh1c2VyRXZlbnRzQXRvbSk7XG4gIGNvbnN0IHNldFN1Z2dlc3Rpb25zID0gdXNlU2V0QXRvbShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBbc3VnZ2VzdGlvbnNMb2FkaW5nLCBzZXRTdWdnZXN0aW9uc0xvYWRpbmddID0gdXNlQXRvbTxib29sZWFuPihzdWdnZXN0aW9uc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgW3Jlc3BvbnNlU3RyZWFtaW5nLCBzZXRSZXNwb25zZVN0cmVhbWluZ10gPSB1c2VBdG9tPGJvb2xlYW4+KHJlc3BvbnNlU3RyZWFtaW5nQXRvbSk7XG4gIGNvbnN0IHNldFJlcXVlc3RGYWlsdXJlID0gdXNlU2V0QXRvbShyZXF1ZXN0RmFpbHVyZUF0b20pO1xuICBjb25zdCB1c2VyRXZlbnRzID0gdXNlQXRvbVZhbHVlKHVzZXJFdmVudFF1ZXVlQXRvbSk7XG4gIGNvbnN0IHVzZXJRdWV1ZUV2ZW50Q291bnQgPSB1c2VBdG9tVmFsdWUodXNlclF1ZXVlRXZlbnRDb3VudEF0b20pO1xuICBjb25zdCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCA9IHVzZVNldEF0b20ocHJvY2Vzc1VzZXJFdmVudEF0b20pO1xuICBjb25zdCBjbGVhclVzZXJFdmVudFF1ZXVlID0gdXNlU2V0QXRvbShjbGVhclVzZXJFdmVudEF0b20pO1xuICBjb25zdCB1c2VySWQgPSB1c2VBdG9tVmFsdWUodXNlcklkQXRvbSk7XG4gIGNvbnN0IGNoYXRJZCA9IHVzZUF0b21WYWx1ZShjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc3VwcG9ydGVkRXZlbnQgPSB1c2VBdG9tVmFsdWUoc3VwcG9ydGVkRXZlbnRBdG9tKTtcbiAgLy8gVE9ETzogUmVwbGFjZSB3aXRoIGFjdHVhbCBvcmdJZCBmcm9tIHVzZUVudml2ZUNvbmZpZyBvciBOZXdPcmdDb25maWdDb250ZXh0IHdoZW4gYXZhaWxhYmxlXG4gIGNvbnN0IG9yZ0lkID0gJ21vY2stb3JnLWlkJztcblxuICBjb25zdCB2YXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZSh2YXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcbiAgY29uc3QgbWVzc2FnZUludGVyY2VwdG9yID0gdXNlTWVzc2FnZUludGVyY2VwdG9yKCk7XG4gIGNvbnN0IGhhbmRsZVNlYXJjaFJlc3VsdHMgPSB1c2VTZXRBdG9tKGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tKTtcbiAgY29uc3Qgc2V0U2VhcmNoSXNMb2FkaW5nID0gdXNlU2V0QXRvbShjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSk7XG4gIGNvbnN0IHsgdHJhY2sgfSA9IHVzZUFtcGxpdHVkZVRyYWNraW5nKCk7XG5cbiAgY29uc3QgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8eyBoYXNTZWFyY2hSZXN1bHRzOiBib29sZWFuIH0+ID0+IHtcbiAgICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RSZXNwb25zZVN0YXJ0ZWQpO1xuICAgICAgY29uc3Qgc3RyZWFtID0gQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFJlc3BvbnNlU3RyZWFtaW5nKHBheWxvYWQpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBzZXRSZXF1ZXN0RmFpbHVyZShmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgeyBoYXNTZWFyY2hSZXN1bHRzIH0gPSBhd2FpdCBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UoXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgICAgICBoYW5kbGVTZWFyY2hSZXN1bHRzLFxuICAgICAgICAgIHNldE1lc3NhZ2VzLFxuICAgICAgICAgIHNldFNlYXJjaElzTG9hZGluZyxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVTdHJlYW1pbmdFcnJvcihlLCBzZXRSZXF1ZXN0RmFpbHVyZSwgc2V0TWVzc2FnZXMpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlQ29tcGxldGVkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGxvZ1BlcmZNZXRyaWMsXG4gICAgICBzZXRSZXF1ZXN0RmFpbHVyZSxcbiAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMsXG4gICAgICBzZXRNZXNzYWdlcyxcbiAgICAgIHNldFNlYXJjaElzTG9hZGluZyxcbiAgICAgIGNoYXRJZCxcbiAgICBdLFxuICApO1xuXG4gIGNvbnN0IGdldFN1Z2dlc3Rpb25zID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQpO1xuICAgIHNldFN1Z2dlc3Rpb25zTG9hZGluZyh0cnVlKTtcbiAgICBzZXRTdWdnZXN0aW9ucyhbXSk7XG5cbiAgICBjb25zdCBwYXlsb2FkV2l0aG91dEFwcExvYWRlZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICB1c2VyRXZlbnRzOiBbXSxcbiAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFN1Z2dlc3Rpb25zKHBheWxvYWRXaXRob3V0QXBwTG9hZGVkKTtcblxuICAgIC8vIHNvcnQgdGhlIHN1Z2dlc3Rpb25zIGJ5IHNob3J0ZXN0IGxlbmd0aCBzbyB0aGUgcGlsbHMgY2FuIGJlIHN0YWNrZWQgaG9yaXpvbnRhbGx5XG4gICAgc2V0U3VnZ2VzdGlvbnMocmVzcG9uc2Uuc29ydCgoYSwgYikgPT4gYS5jb250ZW50Lmxlbmd0aCAtIGIuY29udGVudC5sZW5ndGgpKTtcbiAgICBzZXRTdWdnZXN0aW9uc0xvYWRpbmcoZmFsc2UpO1xuICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCk7XG4gIH0sIFtsb2dQZXJmTWV0cmljLCBzZXRTdWdnZXN0aW9uc0xvYWRpbmcsIHNldFN1Z2dlc3Rpb25zLCBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtc10pO1xuXG4gIGNvbnN0IGdldFJlc3BvbnNlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChwYXlsb2FkPzogTmV4dE1lc3NhZ2VSZXF1ZXN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9XG4gICAgICAgICAgcGF5bG9hZCA/P1xuICAgICAgICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgICB1c2VyRXZlbnRzLFxuICAgICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcodHJ1ZSk7XG4gICAgICAgIHNldFN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lTXMgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG5cbiAgICAgICAgcmVjb3JkQXNzaXN0YW50UmVzcG9uc2Uoc3RhcnRUaW1lTXMsIHJlcXVlc3RQYXlsb2FkLCB0cmFjayk7XG4gICAgICAgIGF3YWl0IGdldFN1Z2dlc3Rpb25zKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIGdldFJlc3BvbnNlcyBlcnJvcicsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIFJlbW92ZSBzZWFyY2ggbG9hZGluZyBtYW5hZ2VtZW50IGZyb20gaGVyZSAtIGl0J3Mgbm93IGhhbmRsZWQgaW5kZXBlbmRlbnRseVxuICAgICAgICAvLyBpbiB0aGUgcHJvY2Vzc1N0cmVhbWluZ1Jlc3BvbnNlIGZ1bmN0aW9uIHdoZW4gc2VhcmNoIHJlc3VsdHMgYXJlIGRldGVjdGVkXG4gICAgICAgIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkKHVzZXJFdmVudHMubWFwKCh7IGV2ZW50SWQgfSkgPT4gZXZlbnRJZCkpO1xuICAgICAgICBzZXRVc2VySGFzUmVwbGllZChmYWxzZSk7XG4gICAgICAgIHNldFJlc3BvbnNlU3RyZWFtaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHVzZXJFdmVudHMsXG4gICAgICBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICAgIHNldFJlc3BvbnNlU3RyZWFtaW5nLFxuICAgICAgc2V0U3VnZ2VzdGlvbnMsXG4gICAgICBnZXRTdHJlYW1pbmdSZXNwb25zZXMsXG4gICAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCxcbiAgICAgIGdldFN1Z2dlc3Rpb25zLFxuICAgICAgc2V0VXNlckhhc1JlcGxpZWQsXG4gICAgICB0cmFjayxcbiAgICBdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJvY2Vzc1VzZXJFdmVudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2VTdHJlYW1pbmcgfHwgIXdpZGdldEluaXRpYWxpemVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BkcCcgJiYgIXZhcmlhbnRJbmZvLnByb2R1Y3RJZCkgfHxcbiAgICAgICAgKHZhcmlhbnRJbmZvLnZhcmlhbnQgPT09ICdwbHAnICYmICF2YXJpYW50SW5mby5wbHBJZCkgfHxcbiAgICAgICAgKHZhcmlhbnRJbmZvLnZhcmlhbnQgPT09ICdwYWdlX3Zpc2l0JyAmJiAhdmFyaWFudEluZm8udXJsKVxuICAgICAgKSB7XG4gICAgICAgIExvZ2dlci5sb2dEZWJ1ZygnW3NwaWZmeS1haV0gdmFyaWFudEluZm8gaGFzIGludmFsaWQgdmFsdWVzLCBza2lwcGluZy4uLicsIHtcbiAgICAgICAgICB2YXJpYW50SW5mbyxcbiAgICAgICAgICBzdXBwb3J0ZWRFdmVudCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgQXNzaXN0YW50cyBUdXJuIGlzX2N1cnJlbnRseV9zdHJlYW1pbmc9JHtyZXNwb25zZVN0cmVhbWluZ30gaW5pdGlhbGl6ZWQ9JHt3aWRnZXRJbml0aWFsaXplZH1gLFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFJlc3BvbnNlcygpO1xuICAgICAgICBMb2dnZXIubG9nSW5mbyhgQXNzaXN0YW50cyBUdXJuIFtmaW5pc2hlZF1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gQXNzaXN0YW50cyBUdXJuIGVycm9yJywgZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHVzZXJRdWV1ZUV2ZW50Q291bnQgPiAwKSB7XG4gICAgICBwcm9jZXNzVXNlckV2ZW50cygpO1xuICAgIH1cbiAgfSwgW1xuICAgIGdldFJlc3BvbnNlcyxcbiAgICByZXNwb25zZVN0cmVhbWluZyxcbiAgICB1c2VyUXVldWVFdmVudENvdW50LFxuICAgIHdpZGdldEluaXRpYWxpemVkLFxuICAgIHZhcmlhbnRJbmZvLFxuICAgIHN1cHBvcnRlZEV2ZW50LFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3aWRnZXRJbml0aWFsaXplZCB8fCByZXNwb25zZVN0cmVhbWluZykge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgW3NwaWZmeS1haV0gaW5pdGlhbGl6ZVdpZGdldCBbc2tpcHBlZF0gaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpc19pbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGh5ZHJhdGVDaGF0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICAgIGBbc3BpZmZ5LWFpXSBpbml0aWFsaXplV2lkZ2V0IGlzX2N1cnJlbnRseV9zdHJlYW1pbmc9JHtyZXNwb25zZVN0cmVhbWluZ30gaXNfaW5pdGlhbGl6ZWQ9JHt3aWRnZXRJbml0aWFsaXplZH1gLFxuICAgICAgICApO1xuICAgICAgICAvLyBvbiBtb3VudCwgdHJ5IHRvIGdldCB0aGUgcmVzcG9uc2VzIGZyb20gYW4gYWN0aXZlIHNlc3Npb24gaWYgb25lIGV4aXN0c1xuICAgICAgICBpZiAoIW9yZ0lkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcmdJZCBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBtZXNzYWdlczogZXhpc3RpbmdNZXNzYWdlcywgdXNlckV2ZW50cyB9ID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0UmVzcG9uc2VzKFxuICAgICAgICAgIG9yZ0lkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICk7XG4gICAgICAgIHNldE1lc3NhZ2VzKFsuLi5leGlzdGluZ01lc3NhZ2VzXSk7XG4gICAgICAgIHNldFVzZXJFdmVudHMoWy4uLnVzZXJFdmVudHNdKTtcbiAgICAgICAgZ2V0UmVzcG9uc2VzKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBubyBhY3RpdmUgY2hhdCBzZXNzaW9uIHdhcyBmb3VuZCwgc3RhcnQgYSBuZXcgb25lXG4gICAgICAgIExvZ2dlci5sb2dJbmZvKGBJbml0IGNoYXQgW2V4Y2VwdGlvbl0gY2hhdF9pZD0ke2NoYXRJZH0gZXJyb3I9JHtlcnJvcn1gLCBlcnJvcik7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQpIHtcbiAgICAgICAgICBjb25zdCBhcHBMb2FkZWRFdmVudCA9IGNyZWF0ZUFwcExvYWRlZEV2ZW50KCk7XG4gICAgICAgICAgY29uc3QgdmlzaXRFdmVudCA9IGNyZWF0ZVZpc2l0VXNlckV2ZW50KHsgdmFyaWFudEluZm8gfSk7XG4gICAgICAgICAgc2V0TWVzc2FnZXMoW10pO1xuICAgICAgICAgIGNsZWFyVXNlckV2ZW50UXVldWUoKTtcbiAgICAgICAgICBpZiAodmlzaXRFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgICAgIHVzZXJFdmVudHM6IFthcHBMb2FkZWRFdmVudCwgdmlzaXRFdmVudF0sXG4gICAgICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnZXRSZXNwb25zZXMocGF5bG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRXaWRnZXRJbml0aWFsaXplZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaHlkcmF0ZUNoYXQoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uRm9jdXMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmVzcG9uc2VTdHJlYW1pbmcgJiYgIXN1Z2dlc3Rpb25zTG9hZGluZyAmJiBvcmdJZCkge1xuICAgICAgICBjb25zdCB7IG1lc3NhZ2VzOiBleGlzdGluZ01lc3NhZ2VzIH0gPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRSZXNwb25zZXMoXG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlcy5sZW5ndGggPiBtZXNzYWdlcy5sZW5ndGgpIHtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhbLi4uZXhpc3RpbmdNZXNzYWdlc10pO1xuICAgICAgICAgIC8vIFRPRE86IElzIHRoaXMgYnVnIGhhY2sgc3RpbGwgbmVjZXNzYXJ5P1xuICAgICAgICAgIC8vIElmIGl0IGlzLCBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gZm9yIGl0XG4gICAgICAgICAgLy8gfSBlbHNlIGlmIChleGlzdGluZ01lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIC8vICAgLy8gaWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgc2Vzc2lvbiwgdGhlIHNlc3Npb24gd291bGQgYmVcbiAgICAgICAgICAvLyAgIC8vIGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQgYnV0IHdpdGhvdXQgYW55IG1lc3NhZ2VzLiBSZXRyeSB0aGUgbmV4dF9yZXNwb25zZXMgcmVxdWVzdCB3aXRoXG4gICAgICAgICAgLy8gICAvLyB0aGUgY3VycmVudCBzZXQgb2YgcGFyYW1ldGVycyB0byBcImp1bXBzdGFydFwiIHRoZSBzZXNzaW9uXG4gICAgICAgICAgLy8gICB0cmlnZ2VyR2V0UmVzcG9uc2VDYWxsKCdvbkZvY3VzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBvbkZvY3VzIGVycm9yJywgZXJyb3IpO1xuICAgIH1cbiAgfSwgW3Jlc3BvbnNlU3RyZWFtaW5nLCBzdWdnZXN0aW9uc0xvYWRpbmcsIG9yZ0lkLCBjaGF0SWQsIHVzZXJJZCwgbWVzc2FnZXMubGVuZ3RoLCBzZXRNZXNzYWdlc10pO1xuXG4gIC8vIGxpc3RlbiBmb3IgcGFnZSBmb2N1cyB0byBnZXQgbGF0ZXN0IG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlclxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIG9uRm9jdXMpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIG9uRm9jdXMpO1xuICAgIH07XG4gIH0sIFtvbkZvY3VzXSk7XG5cbiAgY29uc3QgY2hhdENvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7fSksIFtdKTtcblxuICByZXR1cm4gPENoYXRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjaGF0Q29udGV4dH0+e2NoaWxkcmVufTwvQ2hhdENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IHsgQ2hhdENvbnRleHQsIENoYXRDb250ZXh0UHJvdmlkZXIgfTtcbmV4cG9ydCB0eXBlIHsgQ2hhdENvbnRleHRQYXJhbXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3REEsTUFBTSwyQkFDSixhQUNBLFNBQ0EsVUFDRztDQUNILE1BQU0sWUFBWSxjQUFjO0NBQ2hDLE1BQU0sWUFBWSxVQUFVLElBQUksU0FBUztDQUN6QyxNQUFNLGtCQUFrQixVQUFVLElBQUksb0JBQW9CO0NBQzFELE1BQU0saUJBQWlCLFVBQVUsSUFBSSxtQkFBbUI7Q0FDeEQsTUFBTSxxQkFBcUIsVUFBVSxJQUFJLDZCQUE2QjtDQUN0RSxNQUFNLDBCQUEwQjtFQUFFLE9BQU87RUFBYSxLQUFLLEtBQUssS0FBSztFQUFFO0NBQ3ZFLElBQUlBO0FBRUosS0FDRSxVQUFVLHVCQUF1QixrQkFBa0IscUJBQ25ELFVBQVUsV0FFVixxQkFBb0IsVUFBVSxXQUFXO1VBQ2hDLFVBQVUsYUFBYSxVQUFVLFVBQVUsU0FBUyxFQUM3RCxxQkFBb0IsVUFBVTtDQUdoQyxNQUFNQyxhQUFzQztFQUMxQyxrQkFBa0Isd0JBQXdCLE1BQU0sd0JBQXdCO0VBQ3hFLGlCQUFpQixVQUFVO0VBQzNCLFlBQVk7RUFDYjtBQUVELEtBQUksVUFBVSx1QkFBdUIsa0JBQWtCLGVBQWU7RUFDcEUsTUFBTSxvQkFBb0IsVUFBVSxTQUNqQyxRQUFPLFNBQVEsS0FBSyxTQUFTLEtBQUssS0FBSyxHQUFHLFNBQVMsWUFBWSxVQUFVLENBQ3pFLEtBQUs7QUFLUixhQUFXLDRCQUE0QjtHQUNyQyxXQUxlLFFBQVEsWUFBWSxNQUNuQyxVQUFTLE1BQU0sYUFBYSxrQkFBa0IsY0FDL0MsRUFBRSxXQUFXO0dBSVosUUFIaUIsbUJBQW1CLE1BQUssYUFBWSxTQUFTLFNBQVMsWUFBWSxNQUFNLEdBR3BFLFlBQVk7R0FDbEM7O0FBR0gsS0FBSSxvQkFBb0IsZ0JBQWdCO0FBQ3RDLGFBQVcsMkJBQTJCLGVBQWU7QUFDckQsYUFBVyw0QkFBNEI7O0FBR3pDLE9BQU0sdUJBQXVCLHVCQUF1QixFQUNsRCxZQUNELENBQUM7O0FBS0osTUFBTSxjQUFjLGNBQTZDLE9BQVU7QUFFM0UsTUFBTSxzQkFDSixTQUNBLGFBQ0EsZ0JBQ1k7QUFDWixLQUFJLGVBQWUsTUFBTTtBQUN2QixlQUFZLFNBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxTQUFPOztBQUVULEtBQUksWUFBWSxTQUFTLFlBQVksUUFBUSxRQUFRLFNBQVMsWUFBWSxNQUFNO0VBQzlFLE1BQU0sYUFBYTtHQUNqQixHQUFHO0dBQ0gsVUFBVTtJQUNSLEdBQUcsWUFBWTtJQUNmLFNBQVMsWUFBWSxTQUFTLFVBQVUsUUFBUSxTQUFTO0lBQzFEO0dBQ0Y7QUFDRCxlQUFZLFNBQVE7R0FDbEIsTUFBTSxXQUFXLEtBQUssS0FBSyxTQUFTO0FBQ3BDLFVBQU8sQ0FDTCxHQUFHLEtBQUssTUFBTSxHQUFHLEtBQUssU0FBUyxFQUFFLEVBQ2pDLENBQUMsR0FBRyxTQUFTLE1BQU0sR0FBRyxTQUFTLFNBQVMsRUFBRSxFQUFFLFdBQVcsQ0FDeEQ7SUFDRDtBQUNGLFNBQU87O0FBRVQsY0FBWSxTQUFRLENBQUMsR0FBRyxLQUFLLE1BQU0sR0FBRyxLQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDO0FBQzdGLFFBQU87O0FBR1QsTUFBTSx3QkFDSixRQUNBLG1CQUNBLGdCQUNHO0FBQ0gsbUJBQWtCLEtBQUs7QUFDdkIsY0FBWSxTQUFRLENBQ2xCLEdBQUcsTUFDSCxDQUNFO0VBQ0UsSUFBSUMsSUFBTTtFQUNWLE1BQU0sWUFBWTtFQUNsQixNQUFNLFlBQVk7RUFDbEIsNEJBQVcsSUFBSSxNQUFNLEVBQUMsYUFBYTtFQUNuQyxVQUFVLEVBQ1IsU0FDRSw4RkFDSDtFQUNGLENBQ0YsQ0FDRixDQUFDOztBQUdKLE1BQU0sMkJBQTJCLE9BQy9CLFFBQ0Esb0JBR0EscUJBQ0EsYUFDQSxvQkFDQSxXQUMyQztDQUMzQyxJQUFJQztDQUNKLElBQUksbUJBQW1CO0FBRXZCLFlBQVcsTUFBTSxZQUFZLE9BQzNCLEtBQUk7QUFDRixNQUFJLG1CQUFtQixVQUFVLFNBQVMsQ0FDeEMsUUFBTyxFQUFFLGtCQUFrQjtFQUc3QixNQUFNLFVBQVUsb0JBQW9CLFNBQVM7QUFDN0MsTUFBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQU0scURBQXFEO0FBR3ZFLE1BQUksUUFBUSxTQUFTLFlBQVksZUFBZTtBQUM5Qyx1QkFBb0IsUUFBUTtBQUM1QixzQkFBbUI7QUFDbkIsc0JBQW1CLE1BQU07O0FBRzNCLGdCQUFjLG1CQUFtQixTQUFTLGFBQWMsWUFBWTtVQUM3REMsT0FBZ0I7QUFDdkIsaUJBQU8sUUFDTCxnRUFBZ0UsVUFDaEUsT0FDQTtHQUNFLGNBQWM7R0FDZDtHQUNELENBQ0Y7O0FBSUwsUUFBTyxFQUFFLGtCQUFrQjs7QUFHN0IsTUFBTSx1QkFBdUIsRUFBRSxlQUF3QztDQUNyRSxNQUFNLGdCQUFnQixXQUFXLGtCQUFrQjtDQUNuRCxNQUFNLENBQUMsbUJBQW1CLHdCQUF3QixTQUFTLE1BQU07Q0FDakUsTUFBTSxvQkFBb0IsV0FBVyxtQkFBbUI7Q0FFeEQsTUFBTSxDQUFDLFVBQVUsZUFBZSxRQUFxQixhQUFhO0NBQ2xFLE1BQU0sZ0JBQWdCLFdBQVcsZUFBZTtDQUNoRCxNQUFNLGlCQUFpQixXQUFXLGdCQUFnQjtDQUNsRCxNQUFNLENBQUMsb0JBQW9CLHlCQUF5QixRQUFpQix1QkFBdUI7Q0FDNUYsTUFBTSxDQUFDLG1CQUFtQix3QkFBd0IsUUFBaUIsc0JBQXNCO0NBQ3pGLE1BQU0sb0JBQW9CLFdBQVcsbUJBQW1CO0NBQ3hELE1BQU0sYUFBYSxhQUFhLG1CQUFtQjtDQUNuRCxNQUFNLHNCQUFzQixhQUFhLHdCQUF3QjtDQUNqRSxNQUFNLDBCQUEwQixXQUFXLHFCQUFxQjtDQUNoRSxNQUFNLHNCQUFzQixXQUFXLG1CQUFtQjtDQUMxRCxNQUFNLFNBQVMsYUFBYSxXQUFXO0NBQ3ZDLE1BQU0sU0FBUyxhQUFhLFdBQVc7Q0FDdkMsTUFBTSxpQkFBaUIsYUFBYSxtQkFBbUI7Q0FFdkQsTUFBTSxRQUFRO0NBRWQsTUFBTSxjQUFjLGFBQWEsZ0JBQWdCO0NBQ2pELE1BQU0sa0JBQWtCLDBCQUEwQjtDQUNsRCxNQUFNLHFCQUFxQix1QkFBdUI7Q0FDbEQsTUFBTSxzQkFBc0IsV0FBVyx3QkFBd0I7Q0FDL0QsTUFBTSxxQkFBcUIsV0FBVyx3QkFBd0I7Q0FDOUQsTUFBTSxFQUFFLFVBQVUsc0JBQXNCO0NBRXhDLE1BQU0sd0JBQXdCLFlBQzVCLE9BQU8sWUFBd0U7QUFDN0UsZ0JBQWMsa0JBQWtCLHFCQUFxQjtFQUNyRCxNQUFNLFNBQVNDLHFCQUFrQix5QkFBeUIsUUFBUTtBQUVsRSxNQUFJO0FBQ0YscUJBQWtCLE1BQU07R0FFeEIsTUFBTSxFQUFFLHFCQUFxQixNQUFNLHlCQUNqQyxRQUNBLG9CQUNBLHFCQUNBLGFBQ0Esb0JBQ0EsT0FDRDtBQUVELFVBQU8sRUFBRSxrQkFBa0I7V0FDcEIsR0FBRztBQUNWLHdCQUFxQixHQUFHLG1CQUFtQixZQUFZO0FBQ3ZELFNBQU07WUFDRTtBQUNSLGlCQUFjLGtCQUFrQix1QkFBdUI7O0lBRzNEO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUNGO0NBRUQsTUFBTSxpQkFBaUIsWUFBWSxZQUFZO0FBQzdDLGdCQUFjLGtCQUFrQix3QkFBd0I7QUFDeEQsd0JBQXNCLEtBQUs7QUFDM0IsaUJBQWUsRUFBRSxDQUFDO0VBRWxCLE1BQU0sMEJBQTBCLHNCQUFzQjtHQUNwRCxZQUFZLEVBQUU7R0FDZCxrQkFBa0IsZ0JBQWdCO0dBQ25DLENBQUM7QUFJRixrQkFIaUIsTUFBTUEscUJBQWtCLG1CQUFtQix3QkFBd0IsRUFHNUQsTUFBTSxHQUFHLE1BQU0sRUFBRSxRQUFRLFNBQVMsRUFBRSxRQUFRLE9BQU8sQ0FBQztBQUM1RSx3QkFBc0IsTUFBTTtBQUM1QixnQkFBYyxrQkFBa0IsMEJBQTBCO0lBQ3pEO0VBQUM7RUFBZTtFQUF1QjtFQUFnQixnQkFBZ0I7RUFBaUIsQ0FBQztDQUU1RixNQUFNLGVBQWUsWUFDbkIsT0FBTyxZQUFpQztBQUN0QyxNQUFJO0dBQ0YsTUFBTSxpQkFDSixXQUNBLHNCQUFzQjtJQUNwQjtJQUNBLGtCQUFrQixnQkFBZ0I7SUFDbkMsQ0FBQztBQUVKLHdCQUFxQixLQUFLO0FBQzFCLGtCQUFlLEVBQUUsQ0FBQztHQUNsQixNQUFNLGNBQWMsS0FBSyxLQUFLO0FBRTlCLFNBQU0sc0JBQXNCLGVBQWU7QUFFM0MsMkJBQXdCLGFBQWEsZ0JBQWdCLE1BQU07QUFDM0QsU0FBTSxnQkFBZ0I7V0FDZixPQUFPO0FBQ2Qsa0JBQU8sU0FBUyxrQ0FBa0MsTUFBTTtZQUNoRDtBQUdSLDJCQUF3QixXQUFXLEtBQUssRUFBRSxjQUFjLFFBQVEsQ0FBQztBQUNqRSxxQkFBa0IsTUFBTTtBQUN4Qix3QkFBcUIsTUFBTTs7SUFHL0I7RUFDRTtFQUNBLGdCQUFnQjtFQUNoQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELENBQ0Y7QUFFRCxpQkFBZ0I7RUFDZCxNQUFNLG9CQUFvQixZQUFZO0FBQ3BDLE9BQUkscUJBQXFCLENBQUMsa0JBQ3hCO0FBR0YsT0FDRyxZQUFZLFlBQVksU0FBUyxDQUFDLFlBQVksYUFDOUMsWUFBWSxZQUFZLFNBQVMsQ0FBQyxZQUFZLFNBQzlDLFlBQVksWUFBWSxnQkFBZ0IsQ0FBQyxZQUFZLEtBQ3REO0FBQ0EsbUJBQU8sU0FBUywyREFBMkQ7S0FDekU7S0FDQTtLQUNELENBQUM7QUFDRjs7QUFHRixrQkFBTyxTQUNMLDBDQUEwQyxrQkFBa0IsZUFBZSxvQkFDNUU7QUFDRCxPQUFJO0FBQ0YsVUFBTSxjQUFjO0FBQ3BCLG1CQUFPLFFBQVEsNkJBQTZCO1lBQ3JDRCxPQUFnQjtBQUN2QixtQkFBTyxTQUFTLHFDQUFxQyxNQUFNOzs7QUFHL0QsTUFBSSxzQkFBc0IsRUFDeEIsb0JBQW1CO0lBRXBCO0VBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQztBQUVGLGlCQUFnQjtBQUNkLE1BQUkscUJBQXFCLG1CQUFtQjtBQUMxQyxrQkFBTyxTQUNMLGlFQUFpRSxrQkFBa0Isa0JBQWtCLG9CQUN0RztBQUNEOztFQUdGLE1BQU0sY0FBYyxZQUFZO0FBQzlCLE9BQUk7QUFDRixtQkFBTyxTQUNMLHVEQUF1RCxrQkFBa0Isa0JBQWtCLG9CQUM1RjtJQUtELE1BQU0sRUFBRSxVQUFVLGtCQUFrQiw2QkFBZSxNQUFNQyxxQkFBa0IsYUFDekUsT0FDQSxRQUNBLE9BQ0Q7QUFDRCxnQkFBWSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7QUFDbEMsa0JBQWMsQ0FBQyxHQUFHQyxhQUFXLENBQUM7QUFDOUIsa0JBQWM7WUFDUCxPQUFPO0FBRWQsbUJBQU8sUUFBUSxpQ0FBaUMsT0FBTyxTQUFTLFNBQVMsTUFBTTtBQUMvRSxRQUFJLGlCQUFpQix3QkFBd0I7S0FDM0MsTUFBTSxpQkFBaUIsc0JBQXNCO0tBQzdDLE1BQU0sYUFBYSxxQkFBcUIsRUFBRSxhQUFhLENBQUM7QUFDeEQsaUJBQVksRUFBRSxDQUFDO0FBQ2YsMEJBQXFCO0FBQ3JCLFNBQUksV0FLRixjQUpnQixzQkFBc0I7TUFDcEMsWUFBWSxDQUFDLGdCQUFnQixXQUFXO01BQ3hDLGtCQUFrQixnQkFBZ0I7TUFDbkMsQ0FBQyxDQUNtQjs7YUFHakI7QUFDUix5QkFBcUIsS0FBSzs7O0FBSTlCLGVBQWE7SUFDWixFQUFFLENBQUM7Q0FFTixNQUFNLFVBQVUsWUFBWSxZQUFZO0FBQ3RDLE1BQUk7QUFDRixPQUFJLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLE9BQU87SUFDdEQsTUFBTSxFQUFFLFVBQVUscUJBQXFCLE1BQU1ELHFCQUFrQixhQUM3RCxPQUNBLFFBQ0EsT0FDRDtBQUVELFFBQUksaUJBQWlCLFNBQVMsU0FBUyxPQUNyQyxhQUFZLENBQUMsR0FBRyxpQkFBaUIsQ0FBQzs7V0FVL0JELE9BQWdCO0FBQ3ZCLGtCQUFPLFNBQVMsNkJBQTZCLE1BQU07O0lBRXBEO0VBQUM7RUFBbUI7RUFBb0I7RUFBTztFQUFRO0VBQVEsU0FBUztFQUFRO0VBQVksQ0FBQztBQUdoRyxpQkFBZ0I7QUFDZCxTQUFPLGlCQUFpQixTQUFTLFFBQVE7QUFFekMsZUFBYTtBQUNYLFVBQU8sb0JBQW9CLFNBQVMsUUFBUTs7SUFFN0MsQ0FBQyxRQUFRLENBQUM7Q0FFYixNQUFNLGNBQWMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBRTNDLFFBQU8sb0JBQUMsWUFBWTtFQUFTLE9BQU87RUFBYztHQUFnQyJ9
304
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENvbnRleHQuanMiLCJuYW1lcyI6WyJ1c2VyUXVlcnlQcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkIiwiZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4iLCJ1dWlkIiwibGFzdE1lc3NhZ2U6IE1lc3NhZ2UgfCB1bmRlZmluZWQiLCJlcnJvcjogdW5rbm93biIsIkNvbW1lcmNlQXBpQ2xpZW50IiwidXNlckV2ZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jaGF0Q29udGV4dC9jaGF0Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7XG4gIFBlcmZNZXRyaWNzRXZlbnRzLFxuICBjaGF0QXRvbSxcbiAgbG9nUGVyZk1ldHJpY0F0b20sXG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVxdWVzdEZhaWx1cmVBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgdXNlckV2ZW50c0F0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHtcbiAgY2hhdFNlYXJjaElzTG9hZGluZ0F0b20sXG4gIGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20sXG4gIGNoYXRTZWFyY2hQcm9kdWN0cyxcbiAgY2hhdFNlYXJjaFN0YXRlQXRvbSxcbiAgaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20sXG59IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvY2hhdFNlYXJjaCc7XG5pbXBvcnQgeyBjcmVhdGVBcHBMb2FkZWRFdmVudCwgY3JlYXRlVmlzaXRVc2VyRXZlbnQgfSBmcm9tICdzcmMvaG9va3MvdXRpbHMnO1xuaW1wb3J0IHsgdXNlTWVzc2FnZUludGVyY2VwdG9yIH0gZnJvbSAnc3JjL2ludGVyY2VwdG9ycy91c2VNZXNzYWdlSW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgc3VwcG9ydGVkRXZlbnRBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUnO1xuaW1wb3J0IHtcbiAgY2xlYXJVc2VyRXZlbnRBdG9tLFxuICBjcmVhdGVSZXNwb25zZVBheWxvYWQsXG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlQW1wbGl0dWRlVHJhY2tpbmcgfSBmcm9tICdzcmMvaG9va3MvQW1wbGl0dWRlT3BlcmF0aW9ucy91c2VBbXBsaXR1ZGVPcGVyYXRpb25zJztcbmltcG9ydCB7IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCB9IGZyb20gJ3NyYy9ob29rcy9TeXN0ZW1TZXR0aW5nc0NvbnRleHQnO1xuXG4vKipcbiAqIFJlY29yZCB0aGUgY2hhdCBhc3Npc3RhbnQgcmVzcG9uc2UgaW4gQW1wbGl0dWRlXG4gKlxuICogQHBhcmFtIHN0YXJ0VGltZU1zIFRoZSBzdGFydCB0aW1lIG9mIHRoZSBhc3Npc3RhbnQgcmVzcG9uc2VcbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3BvbnNlXG4gKi9cbmNvbnN0IHJlY29yZEFzc2lzdGFudFJlc3BvbnNlID0gKFxuICBzdGFydFRpbWVNczogbnVtYmVyLFxuICBwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QsXG4gIHRyYWNrOiAoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQsXG4pID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IGNoYXRTdGF0ZSA9IGF0b21TdG9yZS5nZXQoY2hhdEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoU3RhdGUgPSBhdG9tU3RvcmUuZ2V0KGNoYXRTZWFyY2hTdGF0ZUF0b20pO1xuICBjb25zdCBzZWFyY2hQcm9kdWN0cyA9IGF0b21TdG9yZS5nZXQoY2hhdFNlYXJjaFByb2R1Y3RzKTtcbiAgY29uc3Qgc2VhcmNoUHJvZHVjdHNTb3J0ID0gYXRvbVN0b3JlLmdldChjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3QgYXNzaXN0YW50UmVzcG9uc2VUaW1lTXMgPSB7IHN0YXJ0OiBzdGFydFRpbWVNcywgZW5kOiBEYXRlLm5vdygpIH07XG4gIGxldCB1c2VyUXVlcnlQcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChcbiAgICBjaGF0U3RhdGUucmVwbHlFdmVudENhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZCAmJlxuICAgIGNoYXRTdGF0ZS5zdWdnZXN0aW9uXG4gICkge1xuICAgIHVzZXJRdWVyeVByb3BlcnR5ID0gY2hhdFN0YXRlLnN1Z2dlc3Rpb24uY29udGVudDtcbiAgfSBlbHNlIGlmIChjaGF0U3RhdGUudXNlclF1ZXJ5ICYmIGNoYXRTdGF0ZS51c2VyUXVlcnkubGVuZ3RoID4gMCkge1xuICAgIHVzZXJRdWVyeVByb3BlcnR5ID0gY2hhdFN0YXRlLnVzZXJRdWVyeTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHJlc3BvbnNlX3RpbWVfbXM6IGFzc2lzdGFudFJlc3BvbnNlVGltZU1zLmVuZCAtIGFzc2lzdGFudFJlc3BvbnNlVGltZU1zLnN0YXJ0LFxuICAgIHVzZXJfZXZlbnRfdHlwZTogY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSxcbiAgICB1c2VyX3F1ZXJ5OiB1c2VyUXVlcnlQcm9wZXJ0eSxcbiAgfTtcblxuICBpZiAoY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgIGNvbnN0IGxhc3RBc3Npc3RhbnRUdXJuID0gY2hhdFN0YXRlLm1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKHR1cm4gPT4gdHVybi5sZW5ndGggPiAwICYmIHR1cm5bMF0ucm9sZSA9PT0gTWVzc2FnZVJvbGUuQXNzaXN0YW50KVxuICAgICAgLnBvcCgpO1xuICAgIGNvbnN0IGZvcm1UeXBlID0gcGF5bG9hZC51c2VyRXZlbnRzPy5maW5kKFxuICAgICAgZXZlbnQgPT4gZXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQsXG4gICAgKT8uYXR0cmlidXRlcy5mb3JtVHlwZTtcbiAgICBjb25zdCBmb3JtU3RhdHVzID0gbGFzdEFzc2lzdGFudFR1cm4/LnNvbWUocmVzcG9uc2UgPT4gcmVzcG9uc2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuT3JkZXIpO1xuICAgIGV2ZW50UHJvcHMuZm9ybV9zdWJtaXR0ZWRfYXR0cmlidXRlcyA9IHtcbiAgICAgIGZvcm1fdHlwZTogZm9ybVR5cGUsXG4gICAgICBzdGF0dXM6IGZvcm1TdGF0dXMgPyAnc3VjY2VzcycgOiAnZmFpbGVkJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNoYXRTZWFyY2hTdGF0ZSA9PT0gJ3Byb2R1Y3QtcGFnZScpIHtcbiAgICBldmVudFByb3BzLnNlYXJjaF9wcm9kdWN0c19yZXR1cm5lZCA9IHNlYXJjaFByb2R1Y3RzLmxlbmd0aDtcbiAgICBldmVudFByb3BzLnNlYXJjaF9wcm9kdWN0c19zb3J0X3R5cGUgPSBzZWFyY2hQcm9kdWN0c1NvcnQ7XG4gIH1cblxuICB0cmFjayhTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRBc3Npc3RhbnRSZXNwb25zZSwge1xuICAgIGV2ZW50UHJvcHMsXG4gIH0pO1xufTtcblxuaW50ZXJmYWNlIENoYXRDb250ZXh0UGFyYW1zIHt9XG5cbmNvbnN0IENoYXRDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxDaGF0Q29udGV4dFBhcmFtcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgdXBkYXRlTWVzc2FnZVN0YXRlID0gKFxuICBtZXNzYWdlOiBNZXNzYWdlLFxuICBsYXN0TWVzc2FnZTogTWVzc2FnZSxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKTogTWVzc2FnZSA9PiB7XG4gIGlmIChsYXN0TWVzc2FnZSA9PSBudWxsKSB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldiwgW21lc3NhZ2VdXSk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cbiAgaWYgKGxhc3RNZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlRleHQgJiYgbWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0KSB7XG4gICAgY29uc3QgbmV3TWVzc2FnZSA9IHtcbiAgICAgIC4uLmxhc3RNZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgLi4ubGFzdE1lc3NhZ2UubWV0YWRhdGEsXG4gICAgICAgIGNvbnRlbnQ6IGxhc3RNZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQgKyBtZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQsXG4gICAgICB9LFxuICAgIH07XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBsYXN0VHVybiA9IHByZXZbcHJldi5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSxcbiAgICAgICAgWy4uLmxhc3RUdXJuLnNsaWNlKDAsIGxhc3RUdXJuLmxlbmd0aCAtIDEpLCBuZXdNZXNzYWdlXSxcbiAgICAgIF07XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld01lc3NhZ2U7XG4gIH1cbiAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldi5zbGljZSgwLCBwcmV2Lmxlbmd0aCAtIDEpLCBbLi4ucHJldltwcmV2Lmxlbmd0aCAtIDFdLCBtZXNzYWdlXV0pO1xuICByZXR1cm4gbWVzc2FnZTtcbn07XG5cbmNvbnN0IGhhbmRsZVN0cmVhbWluZ0Vycm9yID0gKFxuICBfZXJyb3I6IHVua25vd24sXG4gIHNldFJlcXVlc3RGYWlsdXJlOiAoZmFpbGVkOiBib29sZWFuKSA9PiB2b2lkLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4pID0+IHtcbiAgc2V0UmVxdWVzdEZhaWx1cmUodHJ1ZSk7XG4gIHNldE1lc3NhZ2VzKHByZXYgPT4gW1xuICAgIC4uLnByZXYsXG4gICAgW1xuICAgICAge1xuICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICByb2xlOiBNZXNzYWdlUm9sZS5Bc3Npc3RhbnQsXG4gICAgICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlRleHQsXG4gICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNvbnRlbnQ6XG4gICAgICAgICAgICBcIkknbSBzb3JyeSEgSSdtIGhhdmluZyB0cm91YmxlIHJpZ2h0IG5vdy4gUGxlYXNlIHJlZnJlc2ggdGhlIHBhZ2Ugb3IgdHJ5IGFnYWluIGluIGEgbW9tZW50LlwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn07XG5cbmNvbnN0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZSA9IGFzeW5jIChcbiAgc3RyZWFtOiBBc3luY0l0ZXJhYmxlPFJlc3BvbnNlPixcbiAgbWVzc2FnZUludGVyY2VwdG9yOiB7XG4gICAgaW50ZXJjZXB0OiAocmVzcG9uc2U/OiBSZXNwb25zZSkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfSxcbiAgaGFuZGxlU2VhcmNoUmVzdWx0czogKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHZvaWQsXG4gIHNldE1lc3NhZ2VzOiAodXBkYXRlcjogKHByZXY6IE1lc3NhZ2VbXVtdKSA9PiBNZXNzYWdlW11bXSkgPT4gdm9pZCxcbiAgc2V0U2VhcmNoSXNMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCxcbiAgY2hhdElkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsgaGFzU2VhcmNoUmVzdWx0czogYm9vbGVhbiB9PiA9PiB7XG4gIGxldCBsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgbGV0IGhhc1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IHJlc3BvbnNlIG9mIHN0cmVhbSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAobWVzc2FnZUludGVyY2VwdG9yLmludGVyY2VwdChyZXNwb25zZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlID0gbWVzc2FnZUZyb21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdHJhbnNmb3JtIEFQSSByZXNwb25zZSB0byBjbGllbnQgbWVzc2FnZScpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoKSB7XG4gICAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMobWVzc2FnZSk7XG4gICAgICAgIGhhc1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xuICAgICAgICBzZXRTZWFyY2hJc0xvYWRpbmcoZmFsc2UpOyAvLyBVcGRhdGUgc2VhcmNoIGxvYWRpbmcgaW1tZWRpYXRlbHkgd2hlbiByZXN1bHRzIGFyZSBkZXRlY3RlZFxuICAgICAgfVxuXG4gICAgICBsYXN0TWVzc2FnZSA9IHVwZGF0ZU1lc3NhZ2VTdGF0ZShtZXNzYWdlLCBsYXN0TWVzc2FnZSEsIHNldE1lc3NhZ2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBGYWlsZWQgdG8gZ2VuZXJhdGUgcmVzcG9uc2VzIGZyb20gc3RyZWFtIGNoYXRfaWQ9JHtjaGF0SWR9YCxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHtcbiAgICAgICAgICBsYXN0UmVzcG9uc2U6IGxhc3RNZXNzYWdlLFxuICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBoYXNTZWFyY2hSZXN1bHRzIH07XG59O1xuXG5jb25zdCBDaGF0Q29udGV4dFByb3ZpZGVyID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pID0+IHtcbiAgY29uc3QgbG9nUGVyZk1ldHJpYyA9IHVzZVNldEF0b20obG9nUGVyZk1ldHJpY0F0b20pO1xuICBjb25zdCBbd2lkZ2V0SW5pdGlhbGl6ZWQsIHNldFdpZGdldEluaXRpYWxpemVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2V0VXNlckhhc1JlcGxpZWQgPSB1c2VTZXRBdG9tKHVzZXJIYXNSZXBsaWVkQXRvbSk7XG4gIC8vIFRPRE86IGNyZWF0ZSBhdG9tcyBmb3Igc2V0dGluZy9nZXR0aW5nIHRoZSBsYXN0IG1lc3NhZ2UgdHVyblxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZUF0b208TWVzc2FnZVtdW10+KG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHNldFVzZXJFdmVudHMgPSB1c2VTZXRBdG9tKHVzZXJFdmVudHNBdG9tKTtcbiAgY29uc3Qgc2V0U3VnZ2VzdGlvbnMgPSB1c2VTZXRBdG9tKHN1Z2dlc3Rpb25zQXRvbSk7XG4gIGNvbnN0IFtzdWdnZXN0aW9uc0xvYWRpbmcsIHNldFN1Z2dlc3Rpb25zTG9hZGluZ10gPSB1c2VBdG9tPGJvb2xlYW4+KHN1Z2dlc3Rpb25zTG9hZGluZ0F0b20pO1xuICBjb25zdCBbcmVzcG9uc2VTdHJlYW1pbmcsIHNldFJlc3BvbnNlU3RyZWFtaW5nXSA9IHVzZUF0b208Ym9vbGVhbj4ocmVzcG9uc2VTdHJlYW1pbmdBdG9tKTtcbiAgY29uc3Qgc2V0UmVxdWVzdEZhaWx1cmUgPSB1c2VTZXRBdG9tKHJlcXVlc3RGYWlsdXJlQXRvbSk7XG4gIGNvbnN0IHVzZXJFdmVudHMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudCA9IHVzZUF0b21WYWx1ZSh1c2VyUXVldWVFdmVudENvdW50QXRvbSk7XG4gIGNvbnN0IG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkID0gdXNlU2V0QXRvbShwcm9jZXNzVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IGNsZWFyVXNlckV2ZW50UXVldWUgPSB1c2VTZXRBdG9tKGNsZWFyVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gdXNlQXRvbVZhbHVlKGNoYXRJZEF0b20pO1xuICBjb25zdCBzdXBwb3J0ZWRFdmVudCA9IHVzZUF0b21WYWx1ZShzdXBwb3J0ZWRFdmVudEF0b20pO1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggYWN0dWFsIG9yZ0lkIGZyb20gdXNlRW52aXZlQ29uZmlnIG9yIE5ld09yZ0NvbmZpZ0NvbnRleHQgd2hlbiBhdmFpbGFibGVcbiAgY29uc3Qgb3JnSWQgPSAnbW9jay1vcmctaWQnO1xuXG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHZhcmlhbnRJbmZvQXRvbSk7XG4gIGNvbnN0IHNldHRpbmdzQ29udGV4dCA9IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCgpO1xuICBjb25zdCBtZXNzYWdlSW50ZXJjZXB0b3IgPSB1c2VNZXNzYWdlSW50ZXJjZXB0b3IoKTtcbiAgY29uc3QgaGFuZGxlU2VhcmNoUmVzdWx0cyA9IHVzZVNldEF0b20oaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20pO1xuICBjb25zdCBzZXRTZWFyY2hJc0xvYWRpbmcgPSB1c2VTZXRBdG9tKGNoYXRTZWFyY2hJc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgeyB0cmFjayB9ID0gdXNlQW1wbGl0dWRlVHJhY2tpbmcoKTtcblxuICBjb25zdCBnZXRTdHJlYW1pbmdSZXNwb25zZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTx7IGhhc1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gfT4gPT4ge1xuICAgICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlU3RhcnRlZCk7XG4gICAgICBjb25zdCBzdHJlYW0gPSBDb21tZXJjZUFwaUNsaWVudC5nZXROZXh0UmVzcG9uc2VTdHJlYW1pbmcocGF5bG9hZCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFJlcXVlc3RGYWlsdXJlKGZhbHNlKTtcblxuICAgICAgICBjb25zdCB7IGhhc1NlYXJjaFJlc3VsdHMgfSA9IGF3YWl0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZShcbiAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMsXG4gICAgICAgICAgc2V0TWVzc2FnZXMsXG4gICAgICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4geyBoYXNTZWFyY2hSZXN1bHRzIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZVN0cmVhbWluZ0Vycm9yKGUsIHNldFJlcXVlc3RGYWlsdXJlLCBzZXRNZXNzYWdlcyk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBsb2dQZXJmTWV0cmljKFBlcmZNZXRyaWNzRXZlbnRzLkZpcnN0UmVzcG9uc2VDb21wbGV0ZWQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgbG9nUGVyZk1ldHJpYyxcbiAgICAgIHNldFJlcXVlc3RGYWlsdXJlLFxuICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgaGFuZGxlU2VhcmNoUmVzdWx0cyxcbiAgICAgIHNldE1lc3NhZ2VzLFxuICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nLFxuICAgICAgY2hhdElkLFxuICAgIF0sXG4gICk7XG5cbiAgY29uc3QgZ2V0U3VnZ2VzdGlvbnMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFN1Z2dlc3Rpb25zU3RhcnRlZCk7XG4gICAgc2V0U3VnZ2VzdGlvbnNMb2FkaW5nKHRydWUpO1xuICAgIHNldFN1Z2dlc3Rpb25zKFtdKTtcblxuICAgIGNvbnN0IHBheWxvYWRXaXRob3V0QXBwTG9hZGVkID0gY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgIHVzZXJFdmVudHM6IFtdLFxuICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgfSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXROZXh0U3VnZ2VzdGlvbnMocGF5bG9hZFdpdGhvdXRBcHBMb2FkZWQpO1xuXG4gICAgLy8gc29ydCB0aGUgc3VnZ2VzdGlvbnMgYnkgc2hvcnRlc3QgbGVuZ3RoIHNvIHRoZSBwaWxscyBjYW4gYmUgc3RhY2tlZCBob3Jpem9udGFsbHlcbiAgICBzZXRTdWdnZXN0aW9ucyhyZXNwb25zZS5zb3J0KChhLCBiKSA9PiBhLmNvbnRlbnQubGVuZ3RoIC0gYi5jb250ZW50Lmxlbmd0aCkpO1xuICAgIHNldFN1Z2dlc3Rpb25zTG9hZGluZyhmYWxzZSk7XG4gICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFN1Z2dlc3Rpb25zQ29tcGxldGVkKTtcbiAgfSwgW2xvZ1BlcmZNZXRyaWMsIHNldFN1Z2dlc3Rpb25zTG9hZGluZywgc2V0U3VnZ2VzdGlvbnMsIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zXSk7XG5cbiAgY29uc3QgZ2V0UmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ/OiBOZXh0TWVzc2FnZVJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID1cbiAgICAgICAgICBwYXlsb2FkID8/XG4gICAgICAgICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgIHVzZXJFdmVudHMsXG4gICAgICAgICAgICBnZW5lcmF0aW9uUGFyYW1zOiBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICBzZXRSZXNwb25zZVN0cmVhbWluZyh0cnVlKTtcbiAgICAgICAgc2V0U3VnZ2VzdGlvbnMoW10pO1xuICAgICAgICBjb25zdCBzdGFydFRpbWVNcyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgYXdhaXQgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzKHJlcXVlc3RQYXlsb2FkKTtcblxuICAgICAgICByZWNvcmRBc3Npc3RhbnRSZXNwb25zZShzdGFydFRpbWVNcywgcmVxdWVzdFBheWxvYWQsIHRyYWNrKTtcbiAgICAgICAgYXdhaXQgZ2V0U3VnZ2VzdGlvbnMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gZ2V0UmVzcG9uc2VzIGVycm9yJywgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gUmVtb3ZlIHNlYXJjaCBsb2FkaW5nIG1hbmFnZW1lbnQgZnJvbSBoZXJlIC0gaXQncyBub3cgaGFuZGxlZCBpbmRlcGVuZGVudGx5XG4gICAgICAgIC8vIGluIHRoZSBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UgZnVuY3Rpb24gd2hlbiBzZWFyY2ggcmVzdWx0cyBhcmUgZGV0ZWN0ZWRcbiAgICAgICAgbWFya1VzZXJFdmVudHNQcm9jZXNzZWQodXNlckV2ZW50cy5tYXAoKHsgZXZlbnRJZCB9KSA9PiBldmVudElkKSk7XG4gICAgICAgIHNldFVzZXJIYXNSZXBsaWVkKGZhbHNlKTtcbiAgICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgdXNlckV2ZW50cyxcbiAgICAgIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgICBzZXRTdWdnZXN0aW9ucyxcbiAgICAgIGdldFN0cmVhbWluZ1Jlc3BvbnNlcyxcbiAgICAgIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkLFxuICAgICAgZ2V0U3VnZ2VzdGlvbnMsXG4gICAgICBzZXRVc2VySGFzUmVwbGllZCxcbiAgICAgIHRyYWNrLFxuICAgIF0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcm9jZXNzVXNlckV2ZW50cyA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZVN0cmVhbWluZyB8fCAhd2lkZ2V0SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICh2YXJpYW50SW5mby52YXJpYW50ID09PSAncGRwJyAmJiAhdmFyaWFudEluZm8ucHJvZHVjdElkKSB8fFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BscCcgJiYgIXZhcmlhbnRJbmZvLnBscElkKSB8fFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BhZ2VfdmlzaXQnICYmICF2YXJpYW50SW5mby51cmwpXG4gICAgICApIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdbc3BpZmZ5LWFpXSB2YXJpYW50SW5mbyBoYXMgaW52YWxpZCB2YWx1ZXMsIHNraXBwaW5nLi4uJywge1xuICAgICAgICAgIHZhcmlhbnRJbmZvLFxuICAgICAgICAgIHN1cHBvcnRlZEV2ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBBc3Npc3RhbnRzIFR1cm4gaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ2V0UmVzcG9uc2VzKCk7XG4gICAgICAgIExvZ2dlci5sb2dJbmZvKGBBc3Npc3RhbnRzIFR1cm4gW2ZpbmlzaGVkXWApO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBBc3Npc3RhbnRzIFR1cm4gZXJyb3InLCBlcnJvcik7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAodXNlclF1ZXVlRXZlbnRDb3VudCA+IDApIHtcbiAgICAgIHByb2Nlc3NVc2VyRXZlbnRzKCk7XG4gICAgfVxuICB9LCBbXG4gICAgZ2V0UmVzcG9uc2VzLFxuICAgIHJlc3BvbnNlU3RyZWFtaW5nLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgd2lkZ2V0SW5pdGlhbGl6ZWQsXG4gICAgdmFyaWFudEluZm8sXG4gICAgc3VwcG9ydGVkRXZlbnQsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdpZGdldEluaXRpYWxpemVkIHx8IHJlc3BvbnNlU3RyZWFtaW5nKSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBpbml0aWFsaXplV2lkZ2V0IFtza2lwcGVkXSBpc19jdXJyZW50bHlfc3RyZWFtaW5nPSR7cmVzcG9uc2VTdHJlYW1pbmd9IGlzX2luaXRpYWxpemVkPSR7d2lkZ2V0SW5pdGlhbGl6ZWR9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaHlkcmF0ZUNoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgICAgYFtzcGlmZnktYWldIGluaXRpYWxpemVXaWRnZXQgaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpc19pbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICAgICk7XG4gICAgICAgIC8vIG9uIG1vdW50LCB0cnkgdG8gZ2V0IHRoZSByZXNwb25zZXMgZnJvbSBhbiBhY3RpdmUgc2Vzc2lvbiBpZiBvbmUgZXhpc3RzXG4gICAgICAgIGlmICghb3JnSWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ29yZ0lkIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1lc3NhZ2VzOiBleGlzdGluZ01lc3NhZ2VzLCB1c2VyRXZlbnRzIH0gPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRSZXNwb25zZXMoXG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0TWVzc2FnZXMoWy4uLmV4aXN0aW5nTWVzc2FnZXNdKTtcbiAgICAgICAgc2V0VXNlckV2ZW50cyhbLi4udXNlckV2ZW50c10pO1xuICAgICAgICBnZXRSZXNwb25zZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIG5vIGFjdGl2ZSBjaGF0IHNlc3Npb24gd2FzIGZvdW5kLCBzdGFydCBhIG5ldyBvbmVcbiAgICAgICAgTG9nZ2VyLmxvZ0luZm8oYEluaXQgY2hhdCBbZXhjZXB0aW9uXSBjaGF0X2lkPSR7Y2hhdElkfSBlcnJvcj0ke2Vycm9yfWAsIGVycm9yKTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCkge1xuICAgICAgICAgIGNvbnN0IGFwcExvYWRlZEV2ZW50ID0gY3JlYXRlQXBwTG9hZGVkRXZlbnQoKTtcbiAgICAgICAgICBjb25zdCB2aXNpdEV2ZW50ID0gY3JlYXRlVmlzaXRVc2VyRXZlbnQoeyB2YXJpYW50SW5mbyB9KTtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhbXSk7XG4gICAgICAgICAgY2xlYXJVc2VyRXZlbnRRdWV1ZSgpO1xuICAgICAgICAgIGlmICh2aXNpdEV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgICAgdXNlckV2ZW50czogW2FwcExvYWRlZEV2ZW50LCB2aXNpdEV2ZW50XSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGdldFJlc3BvbnNlcyhwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldFdpZGdldEluaXRpYWxpemVkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBoeWRyYXRlQ2hhdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25Gb2N1cyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFyZXNwb25zZVN0cmVhbWluZyAmJiAhc3VnZ2VzdGlvbnNMb2FkaW5nICYmIG9yZ0lkKSB7XG4gICAgICAgIGNvbnN0IHsgbWVzc2FnZXM6IGV4aXN0aW5nTWVzc2FnZXMgfSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldFJlc3BvbnNlcyhcbiAgICAgICAgICBvcmdJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChleGlzdGluZ01lc3NhZ2VzLmxlbmd0aCA+IG1lc3NhZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIHNldE1lc3NhZ2VzKFsuLi5leGlzdGluZ01lc3NhZ2VzXSk7XG4gICAgICAgICAgLy8gVE9ETzogSXMgdGhpcyBidWcgaGFjayBzdGlsbCBuZWNlc3Nhcnk/XG4gICAgICAgICAgLy8gSWYgaXQgaXMsIGNvbWUgdXAgd2l0aCBhIGJldHRlciBzb2x1dGlvbiBmb3IgaXRcbiAgICAgICAgICAvLyB9IGVsc2UgaWYgKGV4aXN0aW5nTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gICAvLyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBhIG5ldyBzZXNzaW9uLCB0aGUgc2Vzc2lvbiB3b3VsZCBiZVxuICAgICAgICAgIC8vICAgLy8gY3JlYXRlZCBpbiB0aGUgYmFja2VuZCBidXQgd2l0aG91dCBhbnkgbWVzc2FnZXMuIFJldHJ5IHRoZSBuZXh0X3Jlc3BvbnNlcyByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAvLyAgIC8vIHRoZSBjdXJyZW50IHNldCBvZiBwYXJhbWV0ZXJzIHRvIFwianVtcHN0YXJ0XCIgdGhlIHNlc3Npb25cbiAgICAgICAgICAvLyAgIHRyaWdnZXJHZXRSZXNwb25zZUNhbGwoJ29uRm9jdXMnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIG9uRm9jdXMgZXJyb3InLCBlcnJvcik7XG4gICAgfVxuICB9LCBbcmVzcG9uc2VTdHJlYW1pbmcsIHN1Z2dlc3Rpb25zTG9hZGluZywgb3JnSWQsIGNoYXRJZCwgdXNlcklkLCBtZXNzYWdlcy5sZW5ndGgsIHNldE1lc3NhZ2VzXSk7XG5cbiAgLy8gbGlzdGVuIGZvciBwYWdlIGZvY3VzIHRvIGdldCBsYXRlc3QgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cyk7XG4gICAgfTtcbiAgfSwgW29uRm9jdXNdKTtcblxuICBjb25zdCBjaGF0Q29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHt9KSwgW10pO1xuXG4gIHJldHVybiA8Q2hhdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NoYXRDb250ZXh0fT57Y2hpbGRyZW59PC9DaGF0Q29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgeyBDaGF0Q29udGV4dCwgQ2hhdENvbnRleHRQcm92aWRlciB9O1xuZXhwb3J0IHR5cGUgeyBDaGF0Q29udGV4dFBhcmFtcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdEQSxNQUFNLDJCQUNKLGFBQ0EsU0FDQSxVQUNHO0NBQ0gsTUFBTSxZQUFZLGNBQWM7Q0FDaEMsTUFBTSxZQUFZLFVBQVUsSUFBSSxTQUFTO0NBQ3pDLE1BQU0sa0JBQWtCLFVBQVUsSUFBSSxvQkFBb0I7Q0FDMUQsTUFBTSxpQkFBaUIsVUFBVSxJQUFJLG1CQUFtQjtDQUN4RCxNQUFNLHFCQUFxQixVQUFVLElBQUksNkJBQTZCO0NBQ3RFLE1BQU0sMEJBQTBCO0VBQUUsT0FBTztFQUFhLEtBQUssS0FBSyxLQUFLO0VBQUU7Q0FDdkUsSUFBSUE7QUFFSixLQUNFLFVBQVUsdUJBQXVCLGtCQUFrQixxQkFDbkQsVUFBVSxXQUVWLHFCQUFvQixVQUFVLFdBQVc7VUFDaEMsVUFBVSxhQUFhLFVBQVUsVUFBVSxTQUFTLEVBQzdELHFCQUFvQixVQUFVO0NBR2hDLE1BQU1DLGFBQXNDO0VBQzFDLGtCQUFrQix3QkFBd0IsTUFBTSx3QkFBd0I7RUFDeEUsaUJBQWlCLFVBQVU7RUFDM0IsWUFBWTtFQUNiO0FBRUQsS0FBSSxVQUFVLHVCQUF1QixrQkFBa0IsZUFBZTtFQUNwRSxNQUFNLG9C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
@@ -38,11 +38,10 @@ const EnviveConfigProvider = ({ children, amplitudeApiKey, dataResidency, env, b
38
38
  });
39
39
  };
40
40
  const useEnviveConfig = () => {
41
- const config = (0, jotai.useAtomValue)(require_enviveConfig.enviveConfigAtom);
42
- return config ? config : {};
41
+ return (0, jotai.useAtomValue)(require_enviveConfig.enviveConfigAtom) || {};
43
42
  };
44
43
 
45
44
  //#endregion
46
45
  exports.EnviveConfigProvider = EnviveConfigProvider;
47
46
  exports.useEnviveConfig = useEnviveConfig;
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnQ29udGV4dC5janMiLCJuYW1lcyI6WyJFbnZpdmVDb25maWdQcm92aWRlcjogUmVhY3QuRkM8RW52aXZlQ29uZmlnUHJvdmlkZXJQcm9wcz4iLCJlbnZpdmVDb25maWdBdG9tIiwiY29uZmlnOiBFbnZpdmVDb25maWciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZW52aXZlQ29uZmlnQ29udGV4dC9lbnZpdmVDb25maWdDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgUmVhY3ROb2RlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTZXRBdG9tLCB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBlbnZpdmVDb25maWdBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWcnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IEVudml2ZUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgRW52aXZlQ29uZmlnQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8RW52aXZlQ29uZmlnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5pbnRlcmZhY2UgRW52aXZlQ29uZmlnUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGFtcGxpdHVkZUFwaUtleT86IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeT86IHN0cmluZztcbiAgZW52Pzogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICByZWFjdEFwcE5hbWU/OiBzdHJpbmc7XG4gIGNkblVybD86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgb3JnTGV2ZWxBcGlLZXk/OiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZT86IHN0cmluZztcbiAgaWRlbnRpZnlpbmdQcmVmaXg6IHN0cmluZztcbiAgZmVhdHVyZU92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICB2YXJpYW50VXJsT3ZlcnJpZGU/OiBzdHJpbmc7XG4gIHZhcmlhbnRJbmZvT3ZlcnJpZGU/OiBhbnk7XG4gIHNob3c/OiBib29sZWFuO1xuICBwdWJsaWNLZXk/OiBzdHJpbmc7XG4gIGZlYXR1cmVHYXRlcz86IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107IC8vIE5ldyBwcm9wIGZvciBmZWF0dXJlIGdhdGVzXG59XG5cbmV4cG9ydCBjb25zdCBFbnZpdmVDb25maWdQcm92aWRlcjogUmVhY3QuRkM8RW52aXZlQ29uZmlnUHJvdmlkZXJQcm9wcz4gPSAoe1xuICBjaGlsZHJlbixcbiAgYW1wbGl0dWRlQXBpS2V5LFxuICBkYXRhUmVzaWRlbmN5LFxuICBlbnYsXG4gIGJhc2VVcmwsXG4gIHJlYWN0QXBwTmFtZSxcbiAgY2RuVXJsLFxuICBjb250ZXh0U291cmNlLFxuICBvcmdMZXZlbEFwaUtleSxcbiAgb3JnU2hvcnROYW1lLFxuICBpZGVudGlmeWluZ1ByZWZpeCxcbiAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgdmFyaWFudFVybE92ZXJyaWRlLFxuICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICBzaG93LFxuICBwdWJsaWNLZXksXG4gIGZlYXR1cmVHYXRlcywgLy8gRGVzdHJ1Y3R1cmUgbmV3IHByb3Bcbn0pID0+IHtcbiAgY29uc3Qgc2V0RW52aXZlQ29uZmlnID0gdXNlU2V0QXRvbShlbnZpdmVDb25maWdBdG9tKTtcblxuICBjb25zdCBjb25maWc6IEVudml2ZUNvbmZpZyA9IHtcbiAgICBhbXBsaXR1ZGVBcGlLZXksXG4gICAgZGF0YVJlc2lkZW5jeSxcbiAgICBlbnYsXG4gICAgYmFzZVVybCxcbiAgICByZWFjdEFwcE5hbWUsXG4gICAgY2RuVXJsLFxuICAgIGNvbnRleHRTb3VyY2UsXG4gICAgb3JnTGV2ZWxBcGlLZXksXG4gICAgb3JnU2hvcnROYW1lLFxuICAgIGlkZW50aWZ5aW5nUHJlZml4LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZUdhdGVzLCAvLyBBZGQgdG8gY29uZmlnXG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFbnZpdmVDb25maWcoY29uZmlnKTtcbiAgICBMb2dnZXIubG9nRGVidWcoJ0Vudml2ZUNvbmZpZ1Byb3ZpZGVyOiBTZXR0aW5nIEVudml2ZUNvbmZpZycsIGNvbmZpZyk7XG4gIH0sIFtzZXRFbnZpdmVDb25maWcsIGNvbmZpZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPEVudml2ZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbmZpZ30+XG4gICAgICB7Y29uZmlnID8gY2hpbGRyZW4gOiBudWxsfVxuICAgIDwvRW52aXZlQ29uZmlnQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VFbnZpdmVDb25maWcgPSAoKTogRW52aXZlQ29uZmlnID0+IHtcbiAgY29uc3QgY29uZmlnID0gdXNlQXRvbVZhbHVlKGVudml2ZUNvbmZpZ0F0b20pO1xuXG4gIHJldHVybiBjb25maWcgPyBjb25maWcgOiB7fTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU9BLE1BQU0sK0NBQThELE9BQVU7QUFzQjlFLE1BQWFBLHdCQUE2RCxFQUN4RSxVQUNBLGlCQUNBLGVBQ0EsS0FDQSxTQUNBLGNBQ0EsUUFDQSxlQUNBLGdCQUNBLGNBQ0EsbUJBQ0Esa0JBQ0Esb0JBQ0EscUJBQ0EsTUFDQSxXQUNBLG1CQUNJO0NBQ0osTUFBTSx3Q0FBNkJDLHNDQUFpQjtDQUVwRCxNQUFNQyxTQUF1QjtFQUMzQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNEO0FBRUQsNEJBQWdCO0FBQ2Qsa0JBQWdCLE9BQU87QUFDdkIseUJBQU8sU0FBUyw4Q0FBOEMsT0FBTztJQUNwRSxDQUFDLGlCQUFpQixPQUFPLENBQUM7QUFFN0IsUUFDRSwyQ0FBQyxvQkFBb0I7RUFBUyxPQUFPO1lBQ2xDLFNBQVMsV0FBVztHQUNROztBQUluQyxNQUFhLHdCQUFzQztDQUNqRCxNQUFNLGlDQUFzQkQsc0NBQWlCO0FBRTdDLFFBQU8sU0FBUyxTQUFTLEVBQUUifQ==
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnQ29udGV4dC5janMiLCJuYW1lcyI6WyJFbnZpdmVDb25maWdQcm92aWRlcjogUmVhY3QuRkM8RW52aXZlQ29uZmlnUHJvdmlkZXJQcm9wcz4iLCJlbnZpdmVDb25maWdBdG9tIiwiY29uZmlnOiBFbnZpdmVDb25maWciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZW52aXZlQ29uZmlnQ29udGV4dC9lbnZpdmVDb25maWdDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUsIHVzZVNldEF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBlbnZpdmVDb25maWdBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWcnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IEVudml2ZUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgRW52aXZlQ29uZmlnQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8RW52aXZlQ29uZmlnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5pbnRlcmZhY2UgRW52aXZlQ29uZmlnUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGFtcGxpdHVkZUFwaUtleT86IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeT86IHN0cmluZztcbiAgZW52Pzogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICByZWFjdEFwcE5hbWU/OiBzdHJpbmc7XG4gIGNkblVybD86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgb3JnTGV2ZWxBcGlLZXk/OiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZT86IHN0cmluZztcbiAgaWRlbnRpZnlpbmdQcmVmaXg6IHN0cmluZztcbiAgZmVhdHVyZU92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICB2YXJpYW50VXJsT3ZlcnJpZGU/OiBzdHJpbmc7XG4gIHZhcmlhbnRJbmZvT3ZlcnJpZGU/OiBhbnk7XG4gIHNob3c/OiBib29sZWFuO1xuICBwdWJsaWNLZXk/OiBzdHJpbmc7XG4gIGZlYXR1cmVHYXRlcz86IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107IC8vIE5ldyBwcm9wIGZvciBmZWF0dXJlIGdhdGVzXG59XG5cbmV4cG9ydCBjb25zdCBFbnZpdmVDb25maWdQcm92aWRlcjogUmVhY3QuRkM8RW52aXZlQ29uZmlnUHJvdmlkZXJQcm9wcz4gPSAoe1xuICBjaGlsZHJlbixcbiAgYW1wbGl0dWRlQXBpS2V5LFxuICBkYXRhUmVzaWRlbmN5LFxuICBlbnYsXG4gIGJhc2VVcmwsXG4gIHJlYWN0QXBwTmFtZSxcbiAgY2RuVXJsLFxuICBjb250ZXh0U291cmNlLFxuICBvcmdMZXZlbEFwaUtleSxcbiAgb3JnU2hvcnROYW1lLFxuICBpZGVudGlmeWluZ1ByZWZpeCxcbiAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgdmFyaWFudFVybE92ZXJyaWRlLFxuICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICBzaG93LFxuICBwdWJsaWNLZXksXG4gIGZlYXR1cmVHYXRlcywgLy8gRGVzdHJ1Y3R1cmUgbmV3IHByb3Bcbn0pID0+IHtcbiAgY29uc3Qgc2V0RW52aXZlQ29uZmlnID0gdXNlU2V0QXRvbShlbnZpdmVDb25maWdBdG9tKTtcblxuICBjb25zdCBjb25maWc6IEVudml2ZUNvbmZpZyA9IHtcbiAgICBhbXBsaXR1ZGVBcGlLZXksXG4gICAgZGF0YVJlc2lkZW5jeSxcbiAgICBlbnYsXG4gICAgYmFzZVVybCxcbiAgICByZWFjdEFwcE5hbWUsXG4gICAgY2RuVXJsLFxuICAgIGNvbnRleHRTb3VyY2UsXG4gICAgb3JnTGV2ZWxBcGlLZXksXG4gICAgb3JnU2hvcnROYW1lLFxuICAgIGlkZW50aWZ5aW5nUHJlZml4LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZUdhdGVzLCAvLyBBZGQgdG8gY29uZmlnXG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFbnZpdmVDb25maWcoY29uZmlnKTtcbiAgICBMb2dnZXIubG9nRGVidWcoJ0Vudml2ZUNvbmZpZ1Byb3ZpZGVyOiBTZXR0aW5nIEVudml2ZUNvbmZpZycsIGNvbmZpZyk7XG4gIH0sIFtzZXRFbnZpdmVDb25maWcsIGNvbmZpZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPEVudml2ZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbmZpZ30+XG4gICAgICB7Y29uZmlnID8gY2hpbGRyZW4gOiBudWxsfVxuICAgIDwvRW52aXZlQ29uZmlnQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VFbnZpdmVDb25maWcgPSAoKTogRW52aXZlQ29uZmlnID0+IHtcbiAgY29uc3QgY29uZmlnID0gdXNlQXRvbVZhbHVlKGVudml2ZUNvbmZpZ0F0b20pO1xuXG4gIHJldHVybiBjb25maWcgfHwge307XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFPQSxNQUFNLCtDQUE4RCxPQUFVO0FBc0I5RSxNQUFhQSx3QkFBNkQsRUFDeEUsVUFDQSxpQkFDQSxlQUNBLEtBQ0EsU0FDQSxjQUNBLFFBQ0EsZUFDQSxnQkFDQSxjQUNBLG1CQUNBLGtCQUNBLG9CQUNBLHFCQUNBLE1BQ0EsV0FDQSxtQkFDSTtDQUNKLE1BQU0sd0NBQTZCQyxzQ0FBaUI7Q0FFcEQsTUFBTUMsU0FBdUI7RUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRDtBQUVELDRCQUFnQjtBQUNkLGtCQUFnQixPQUFPO0FBQ3ZCLHlCQUFPLFNBQVMsOENBQThDLE9BQU87SUFDcEUsQ0FBQyxpQkFBaUIsT0FBTyxDQUFDO0FBRTdCLFFBQ0UsMkNBQUMsb0JBQW9CO0VBQVMsT0FBTztZQUNsQyxTQUFTLFdBQVc7R0FDUTs7QUFJbkMsTUFBYSx3QkFBc0M7QUFHakQsZ0NBRjRCRCxzQ0FBaUIsSUFFNUIsRUFBRSJ9
@@ -36,10 +36,9 @@ const EnviveConfigProvider = ({ children, amplitudeApiKey, dataResidency, env, b
36
36
  });
37
37
  };
38
38
  const useEnviveConfig = () => {
39
- const config = useAtomValue(enviveConfigAtom);
40
- return config ? config : {};
39
+ return useAtomValue(enviveConfigAtom) || {};
41
40
  };
42
41
 
43
42
  //#endregion
44
43
  export { EnviveConfigProvider, useEnviveConfig };
45
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnQ29udGV4dC5qcyIsIm5hbWVzIjpbIkVudml2ZUNvbmZpZ1Byb3ZpZGVyOiBSZWFjdC5GQzxFbnZpdmVDb25maWdQcm92aWRlclByb3BzPiIsImNvbmZpZzogRW52aXZlQ29uZmlnIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL2Vudml2ZUNvbmZpZ0NvbnRleHQvZW52aXZlQ29uZmlnQ29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIFJlYWN0Tm9kZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU2V0QXRvbSwgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBFbnZpdmVDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IEVudml2ZUNvbmZpZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PEVudml2ZUNvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuaW50ZXJmYWNlIEVudml2ZUNvbmZpZ1Byb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBhbXBsaXR1ZGVBcGlLZXk/OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k/OiBzdHJpbmc7XG4gIGVudj86IHN0cmluZztcbiAgYmFzZVVybD86IHN0cmluZztcbiAgcmVhY3RBcHBOYW1lPzogc3RyaW5nO1xuICBjZG5Vcmw/OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gIG9yZ0xldmVsQXBpS2V5Pzogc3RyaW5nO1xuICBvcmdTaG9ydE5hbWU/OiBzdHJpbmc7XG4gIGlkZW50aWZ5aW5nUHJlZml4OiBzdHJpbmc7XG4gIGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgdmFyaWFudFVybE92ZXJyaWRlPzogc3RyaW5nO1xuICB2YXJpYW50SW5mb092ZXJyaWRlPzogYW55O1xuICBzaG93PzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICBmZWF0dXJlR2F0ZXM/OiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdOyAvLyBOZXcgcHJvcCBmb3IgZmVhdHVyZSBnYXRlc1xufVxuXG5leHBvcnQgY29uc3QgRW52aXZlQ29uZmlnUHJvdmlkZXI6IFJlYWN0LkZDPEVudml2ZUNvbmZpZ1Byb3ZpZGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGFtcGxpdHVkZUFwaUtleSxcbiAgZGF0YVJlc2lkZW5jeSxcbiAgZW52LFxuICBiYXNlVXJsLFxuICByZWFjdEFwcE5hbWUsXG4gIGNkblVybCxcbiAgY29udGV4dFNvdXJjZSxcbiAgb3JnTGV2ZWxBcGlLZXksXG4gIG9yZ1Nob3J0TmFtZSxcbiAgaWRlbnRpZnlpbmdQcmVmaXgsXG4gIGZlYXR1cmVPdmVycmlkZXMsXG4gIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgc2hvdyxcbiAgcHVibGljS2V5LFxuICBmZWF0dXJlR2F0ZXMsIC8vIERlc3RydWN0dXJlIG5ldyBwcm9wXG59KSA9PiB7XG4gIGNvbnN0IHNldEVudml2ZUNvbmZpZyA9IHVzZVNldEF0b20oZW52aXZlQ29uZmlnQXRvbSk7XG5cbiAgY29uc3QgY29uZmlnOiBFbnZpdmVDb25maWcgPSB7XG4gICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgIGRhdGFSZXNpZGVuY3ksXG4gICAgZW52LFxuICAgIGJhc2VVcmwsXG4gICAgcmVhY3RBcHBOYW1lLFxuICAgIGNkblVybCxcbiAgICBjb250ZXh0U291cmNlLFxuICAgIG9yZ0xldmVsQXBpS2V5LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBpZGVudGlmeWluZ1ByZWZpeCxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVHYXRlcywgLy8gQWRkIHRvIGNvbmZpZ1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RW52aXZlQ29uZmlnKGNvbmZpZyk7XG4gICAgTG9nZ2VyLmxvZ0RlYnVnKCdFbnZpdmVDb25maWdQcm92aWRlcjogU2V0dGluZyBFbnZpdmVDb25maWcnLCBjb25maWcpO1xuICB9LCBbc2V0RW52aXZlQ29uZmlnLCBjb25maWddKTtcblxuICByZXR1cm4gKFxuICAgIDxFbnZpdmVDb25maWdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb25maWd9PlxuICAgICAge2NvbmZpZyA/IGNoaWxkcmVuIDogbnVsbH1cbiAgICA8L0Vudml2ZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRW52aXZlQ29uZmlnID0gKCk6IEVudml2ZUNvbmZpZyA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZUF0b21WYWx1ZShlbnZpdmVDb25maWdBdG9tKTtcblxuICByZXR1cm4gY29uZmlnID8gY29uZmlnIDoge307XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBT0EsTUFBTSxzQkFBc0IsY0FBd0MsT0FBVTtBQXNCOUUsTUFBYUEsd0JBQTZELEVBQ3hFLFVBQ0EsaUJBQ0EsZUFDQSxLQUNBLFNBQ0EsY0FDQSxRQUNBLGVBQ0EsZ0JBQ0EsY0FDQSxtQkFDQSxrQkFDQSxvQkFDQSxxQkFDQSxNQUNBLFdBQ0EsbUJBQ0k7Q0FDSixNQUFNLGtCQUFrQixXQUFXLGlCQUFpQjtDQUVwRCxNQUFNQyxTQUF1QjtFQUMzQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNEO0FBRUQsaUJBQWdCO0FBQ2Qsa0JBQWdCLE9BQU87QUFDdkIsaUJBQU8sU0FBUyw4Q0FBOEMsT0FBTztJQUNwRSxDQUFDLGlCQUFpQixPQUFPLENBQUM7QUFFN0IsUUFDRSxvQkFBQyxvQkFBb0I7RUFBUyxPQUFPO1lBQ2xDLFNBQVMsV0FBVztHQUNROztBQUluQyxNQUFhLHdCQUFzQztDQUNqRCxNQUFNLFNBQVMsYUFBYSxpQkFBaUI7QUFFN0MsUUFBTyxTQUFTLFNBQVMsRUFBRSJ9
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnQ29udGV4dC5qcyIsIm5hbWVzIjpbIkVudml2ZUNvbmZpZ1Byb3ZpZGVyOiBSZWFjdC5GQzxFbnZpdmVDb25maWdQcm92aWRlclByb3BzPiIsImNvbmZpZzogRW52aXZlQ29uZmlnIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL2Vudml2ZUNvbmZpZ0NvbnRleHQvZW52aXZlQ29uZmlnQ29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgY3JlYXRlQ29udGV4dCwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBFbnZpdmVDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IEVudml2ZUNvbmZpZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PEVudml2ZUNvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuaW50ZXJmYWNlIEVudml2ZUNvbmZpZ1Byb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBhbXBsaXR1ZGVBcGlLZXk/OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k/OiBzdHJpbmc7XG4gIGVudj86IHN0cmluZztcbiAgYmFzZVVybD86IHN0cmluZztcbiAgcmVhY3RBcHBOYW1lPzogc3RyaW5nO1xuICBjZG5Vcmw/OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gIG9yZ0xldmVsQXBpS2V5Pzogc3RyaW5nO1xuICBvcmdTaG9ydE5hbWU/OiBzdHJpbmc7XG4gIGlkZW50aWZ5aW5nUHJlZml4OiBzdHJpbmc7XG4gIGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgdmFyaWFudFVybE92ZXJyaWRlPzogc3RyaW5nO1xuICB2YXJpYW50SW5mb092ZXJyaWRlPzogYW55O1xuICBzaG93PzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICBmZWF0dXJlR2F0ZXM/OiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdOyAvLyBOZXcgcHJvcCBmb3IgZmVhdHVyZSBnYXRlc1xufVxuXG5leHBvcnQgY29uc3QgRW52aXZlQ29uZmlnUHJvdmlkZXI6IFJlYWN0LkZDPEVudml2ZUNvbmZpZ1Byb3ZpZGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGFtcGxpdHVkZUFwaUtleSxcbiAgZGF0YVJlc2lkZW5jeSxcbiAgZW52LFxuICBiYXNlVXJsLFxuICByZWFjdEFwcE5hbWUsXG4gIGNkblVybCxcbiAgY29udGV4dFNvdXJjZSxcbiAgb3JnTGV2ZWxBcGlLZXksXG4gIG9yZ1Nob3J0TmFtZSxcbiAgaWRlbnRpZnlpbmdQcmVmaXgsXG4gIGZlYXR1cmVPdmVycmlkZXMsXG4gIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgc2hvdyxcbiAgcHVibGljS2V5LFxuICBmZWF0dXJlR2F0ZXMsIC8vIERlc3RydWN0dXJlIG5ldyBwcm9wXG59KSA9PiB7XG4gIGNvbnN0IHNldEVudml2ZUNvbmZpZyA9IHVzZVNldEF0b20oZW52aXZlQ29uZmlnQXRvbSk7XG5cbiAgY29uc3QgY29uZmlnOiBFbnZpdmVDb25maWcgPSB7XG4gICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgIGRhdGFSZXNpZGVuY3ksXG4gICAgZW52LFxuICAgIGJhc2VVcmwsXG4gICAgcmVhY3RBcHBOYW1lLFxuICAgIGNkblVybCxcbiAgICBjb250ZXh0U291cmNlLFxuICAgIG9yZ0xldmVsQXBpS2V5LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBpZGVudGlmeWluZ1ByZWZpeCxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVHYXRlcywgLy8gQWRkIHRvIGNvbmZpZ1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RW52aXZlQ29uZmlnKGNvbmZpZyk7XG4gICAgTG9nZ2VyLmxvZ0RlYnVnKCdFbnZpdmVDb25maWdQcm92aWRlcjogU2V0dGluZyBFbnZpdmVDb25maWcnLCBjb25maWcpO1xuICB9LCBbc2V0RW52aXZlQ29uZmlnLCBjb25maWddKTtcblxuICByZXR1cm4gKFxuICAgIDxFbnZpdmVDb25maWdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb25maWd9PlxuICAgICAge2NvbmZpZyA/IGNoaWxkcmVuIDogbnVsbH1cbiAgICA8L0Vudml2ZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRW52aXZlQ29uZmlnID0gKCk6IEVudml2ZUNvbmZpZyA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZUF0b21WYWx1ZShlbnZpdmVDb25maWdBdG9tKTtcblxuICByZXR1cm4gY29uZmlnIHx8IHt9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU9BLE1BQU0sc0JBQXNCLGNBQXdDLE9BQVU7QUFzQjlFLE1BQWFBLHdCQUE2RCxFQUN4RSxVQUNBLGlCQUNBLGVBQ0EsS0FDQSxTQUNBLGNBQ0EsUUFDQSxlQUNBLGdCQUNBLGNBQ0EsbUJBQ0Esa0JBQ0Esb0JBQ0EscUJBQ0EsTUFDQSxXQUNBLG1CQUNJO0NBQ0osTUFBTSxrQkFBa0IsV0FBVyxpQkFBaUI7Q0FFcEQsTUFBTUMsU0FBdUI7RUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRDtBQUVELGlCQUFnQjtBQUNkLGtCQUFnQixPQUFPO0FBQ3ZCLGlCQUFPLFNBQVMsOENBQThDLE9BQU87SUFDcEUsQ0FBQyxpQkFBaUIsT0FBTyxDQUFDO0FBRTdCLFFBQ0Usb0JBQUMsb0JBQW9CO0VBQVMsT0FBTztZQUNsQyxTQUFTLFdBQVc7R0FDUTs7QUFJbkMsTUFBYSx3QkFBc0M7QUFHakQsUUFGZSxhQUFhLGlCQUFpQixJQUU1QixFQUFFIn0=
@@ -0,0 +1,52 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_localStorageContext = require('../localStorageContext/localStorageContext.cjs');
3
+ require('../localStorageContext/index.cjs');
4
+ const require_enviveConfigContext = require('../enviveConfigContext/enviveConfigContext.cjs');
5
+ const require_featureFlagServiceContext = require('../featureFlagServiceContext/featureFlagServiceContext.cjs');
6
+ const require_amplitudeContext = require('../amplitudeContext/amplitudeContext.cjs');
7
+ require('../amplitudeContext/index.cjs');
8
+ const require_graphqlContext = require('../graphqlContext/graphqlContext.cjs');
9
+ const require_newOrgConfigContext = require('../newOrgConfigContext/newOrgConfigContext.cjs');
10
+ const require_enviveCssContext = require('../enviveCssContext/enviveCssContext.cjs');
11
+ require('../enviveCssContext/index.cjs');
12
+ require('../enviveConfigContext/index.cjs');
13
+ require('../featureFlagServiceContext/index.cjs');
14
+ require('../graphqlContext/index.cjs');
15
+ require('../newOrgConfigContext/index.cjs');
16
+ const require_userIdentityContext = require('../userIdentityContext/userIdentityContext.cjs');
17
+ require('../userIdentityContext/index.cjs');
18
+ const require_contexts_enviveContext_types = require('./types.cjs');
19
+ const require_searchContext = require('../searchContext/searchContext.cjs');
20
+ require('../searchContext/index.cjs');
21
+ let react = require("react");
22
+ let react_jsx_runtime = require("react/jsx-runtime");
23
+
24
+ //#region src/contexts/enviveContext/enviveContext.tsx
25
+ const EnviveContext = (0, react.createContext)(null);
26
+ const SearchAgentWrapper = ({ children, enabledAgents }) => {
27
+ if (!enabledAgents.includes(require_contexts_enviveContext_types.EnviveAgent.SearchAgent)) return children;
28
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_searchContext.SearchProvider, { children });
29
+ };
30
+ const SalesAgentWrapper = ({ children, enabledAgents }) => {
31
+ return children;
32
+ };
33
+ const EnviveProvider = ({ children, enabledAgents, ...config }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EnviveContext.Provider, {
34
+ value: null,
35
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_enviveConfigContext.EnviveConfigProvider, {
36
+ ...config,
37
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_graphqlContext.GraphQLProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_newOrgConfigContext.NewOrgConfigProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_localStorageContext.LocalStorageProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_featureFlagServiceContext.FeatureFlagServiceProvider, {
38
+ featureGates: [],
39
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_userIdentityContext.UserIdentityProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_amplitudeContext.AmplitudeProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_enviveCssContext.EnviveCssProvider, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchAgentWrapper, {
40
+ enabledAgents,
41
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SalesAgentWrapper, {
42
+ enabledAgents,
43
+ children
44
+ })
45
+ }) }) }) })
46
+ }) }) }) })
47
+ })
48
+ });
49
+
50
+ //#endregion
51
+ exports.EnviveProvider = EnviveProvider;
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29udGV4dC5janMiLCJuYW1lcyI6WyJTZWFyY2hBZ2VudFdyYXBwZXI6IFJlYWN0LkZDPEFnZW50V3JhcHBlclByb3BzPiIsIkVudml2ZUFnZW50IiwiU2VhcmNoUHJvdmlkZXIiLCJTYWxlc0FnZW50V3JhcHBlcjogUmVhY3QuRkM8QWdlbnRXcmFwcGVyUHJvcHM+IiwiRW52aXZlUHJvdmlkZXI6IFJlYWN0LkZDPEVudml2ZVByb3ZpZGVyUHJvcHM+IiwiRW52aXZlQ29uZmlnUHJvdmlkZXIiLCJHcmFwaFFMUHJvdmlkZXIiLCJOZXdPcmdDb25maWdQcm92aWRlciIsIkxvY2FsU3RvcmFnZVByb3ZpZGVyIiwiRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXIiLCJVc2VySWRlbnRpdHlQcm92aWRlciIsIkFtcGxpdHVkZVByb3ZpZGVyIiwiRW52aXZlQ3NzUHJvdmlkZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZW52aXZlQ29udGV4dC9lbnZpdmVDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFjdE5vZGUsIGNyZWF0ZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBBbXBsaXR1ZGVQcm92aWRlciB9IGZyb20gJy4uL2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgRW52aXZlQ29uZmlnUHJvdmlkZXIgfSBmcm9tICcuLi9lbnZpdmVDb25maWdDb250ZXh0JztcbmltcG9ydCB7IEVudml2ZUNzc1Byb3ZpZGVyIH0gZnJvbSAnLi4vZW52aXZlQ3NzQ29udGV4dCc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlciB9IGZyb20gJy4uL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnO1xuaW1wb3J0IHsgR3JhcGhRTFByb3ZpZGVyIH0gZnJvbSAnLi4vZ3JhcGhxbENvbnRleHQnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvdmlkZXIgfSBmcm9tICcuLi9sb2NhbFN0b3JhZ2VDb250ZXh0JztcbmltcG9ydCB7IE5ld09yZ0NvbmZpZ1Byb3ZpZGVyIH0gZnJvbSAnLi4vbmV3T3JnQ29uZmlnQ29udGV4dCc7XG5pbXBvcnQgeyBVc2VySWRlbnRpdHlQcm92aWRlciB9IGZyb20gJy4uL3VzZXJJZGVudGl0eUNvbnRleHQnO1xuaW1wb3J0IHsgRW52aXZlQWdlbnQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFByb3ZpZGVyIH0gZnJvbSAnLi4vc2VhcmNoQ29udGV4dCc7XG5cbmNvbnN0IEVudml2ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PG51bGw+KG51bGwpO1xuXG5pbnRlcmZhY2UgQWdlbnRXcmFwcGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBlbmFibGVkQWdlbnRzOiBFbnZpdmVBZ2VudFtdO1xufVxuXG5pbnRlcmZhY2UgRW52aXZlUHJvdmlkZXJQcm9wcyBleHRlbmRzIEFnZW50V3JhcHBlclByb3BzIHtcbiAgYW1wbGl0dWRlQXBpS2V5Pzogc3RyaW5nO1xuICBkYXRhUmVzaWRlbmN5Pzogc3RyaW5nO1xuICBlbnY/OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHJlYWN0QXBwTmFtZT86IHN0cmluZztcbiAgY2RuVXJsPzogc3RyaW5nO1xuICBjb250ZXh0U291cmNlPzogc3RyaW5nO1xuICBvcmdMZXZlbEFwaUtleT86IHN0cmluZztcbiAgb3JnU2hvcnROYW1lPzogc3RyaW5nO1xuICBpZGVudGlmeWluZ1ByZWZpeDogc3RyaW5nO1xuICBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIHZhcmlhbnRVcmxPdmVycmlkZT86IHN0cmluZztcbiAgdmFyaWFudEluZm9PdmVycmlkZT86IGFueTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIHB1YmxpY0tleT86IHN0cmluZztcbiAgZmVhdHVyZUdhdGVzPzogT3JnQ29uZmlnRmVhdHVyZUdhdGVbXTsgLy8gTmV3IHByb3AgZm9yIGZlYXR1cmUgZ2F0ZXNcbn1cblxuY29uc3QgU2VhcmNoQWdlbnRXcmFwcGVyOiBSZWFjdC5GQzxBZ2VudFdyYXBwZXJQcm9wcz4gPSAoeyBjaGlsZHJlbiwgZW5hYmxlZEFnZW50cyB9KSA9PiB7XG4gIGlmICghZW5hYmxlZEFnZW50cy5pbmNsdWRlcyhFbnZpdmVBZ2VudC5TZWFyY2hBZ2VudCkpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgcmV0dXJuIDxTZWFyY2hQcm92aWRlcj57Y2hpbGRyZW59PC9TZWFyY2hQcm92aWRlcj47XG59O1xuXG5jb25zdCBTYWxlc0FnZW50V3JhcHBlcjogUmVhY3QuRkM8QWdlbnRXcmFwcGVyUHJvcHM+ID0gKHsgY2hpbGRyZW4sIGVuYWJsZWRBZ2VudHMgfSkgPT4ge1xuICAvLyBUT0RPOiBJbXBsZW1lbnQgU2FsZXNBZ2VudCBwcm92aWRlcnNcbiAgLy8gaWYgKCFlbmFibGVkQWdlbnRzLmluY2x1ZGVzKEVudml2ZUFnZW50LlNhbGVzQWdlbnQpKSB7XG4gIHJldHVybiBjaGlsZHJlbjtcbiAgLy8gfVxufTtcblxuZXhwb3J0IGNvbnN0IEVudml2ZVByb3ZpZGVyOiBSZWFjdC5GQzxFbnZpdmVQcm92aWRlclByb3BzPiA9ICh7XG4gIGNoaWxkcmVuLFxuICBlbmFibGVkQWdlbnRzLFxuICAuLi5jb25maWdcbn0pID0+IChcbiAgPEVudml2ZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e251bGx9PlxuICAgIDxFbnZpdmVDb25maWdQcm92aWRlciB7Li4uY29uZmlnfT5cbiAgICAgIDxHcmFwaFFMUHJvdmlkZXI+XG4gICAgICAgIDxOZXdPcmdDb25maWdQcm92aWRlcj5cbiAgICAgICAgICA8TG9jYWxTdG9yYWdlUHJvdmlkZXI+XG4gICAgICAgICAgICA8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXIgZmVhdHVyZUdhdGVzPXtbXX0+XG4gICAgICAgICAgICAgIDxVc2VySWRlbnRpdHlQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8QW1wbGl0dWRlUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICA8RW52aXZlQ3NzUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxTZWFyY2hBZ2VudFdyYXBwZXIgZW5hYmxlZEFnZW50cz17ZW5hYmxlZEFnZW50c30+XG4gICAgICAgICAgICAgICAgICAgICAgPFNhbGVzQWdlbnRXcmFwcGVyIGVuYWJsZWRBZ2VudHM9e2VuYWJsZWRBZ2VudHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgIDwvU2FsZXNBZ2VudFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvU2VhcmNoQWdlbnRXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgPC9FbnZpdmVDc3NQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0FtcGxpdHVkZVByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L1VzZXJJZGVudGl0eVByb3ZpZGVyPlxuICAgICAgICAgICAgPC9GZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcj5cbiAgICAgICAgICA8L0xvY2FsU3RvcmFnZVByb3ZpZGVyPlxuICAgICAgICA8L05ld09yZ0NvbmZpZ1Byb3ZpZGVyPlxuICAgICAgPC9HcmFwaFFMUHJvdmlkZXI+XG4gICAgPC9FbnZpdmVDb25maWdQcm92aWRlcj5cbiAgPC9FbnZpdmVDb250ZXh0LlByb3ZpZGVyPlxuKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsTUFBTSx5Q0FBb0MsS0FBSztBQTBCL0MsTUFBTUEsc0JBQW1ELEVBQUUsVUFBVSxvQkFBb0I7QUFDdkYsS0FBSSxDQUFDLGNBQWMsU0FBU0MsaURBQVksWUFBWSxDQUNsRCxRQUFPO0FBRVQsUUFBTywyQ0FBQ0Msd0NBQWdCLFdBQTBCOztBQUdwRCxNQUFNQyxxQkFBa0QsRUFBRSxVQUFVLG9CQUFvQjtBQUd0RixRQUFPOztBQUlULE1BQWFDLGtCQUFpRCxFQUM1RCxVQUNBLGVBQ0EsR0FBRyxhQUVILDJDQUFDLGNBQWM7Q0FBUyxPQUFPO1dBQzdCLDJDQUFDQztFQUFxQixHQUFJO1lBQ3hCLDJDQUFDQyxvREFDQywyQ0FBQ0MsOERBQ0MsMkNBQUNDLDhEQUNDLDJDQUFDQztHQUEyQixjQUFjLEVBQUU7YUFDMUMsMkNBQUNDLDhEQUNDLDJDQUFDQyx3REFDQywyQ0FBQ0Msd0RBQ0MsMkNBQUM7SUFBa0M7Y0FDakMsMkNBQUM7S0FBaUM7S0FDL0I7TUFDaUI7S0FDRCxHQUNILEdBQ0YsR0FDQztJQUNJLEdBQ1IsR0FDRixHQUNQO0dBQ0c7RUFDQSJ9
@@ -0,0 +1,31 @@
1
+ import { OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.cjs";
2
+ import { EnviveAgent } from "./types.cjs";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/contexts/enviveContext/enviveContext.d.ts
6
+ interface AgentWrapperProps {
7
+ children: ReactNode;
8
+ enabledAgents: EnviveAgent[];
9
+ }
10
+ interface EnviveProviderProps extends AgentWrapperProps {
11
+ amplitudeApiKey?: string;
12
+ dataResidency?: string;
13
+ env?: string;
14
+ baseUrl?: string;
15
+ reactAppName?: string;
16
+ cdnUrl?: string;
17
+ contextSource?: string;
18
+ orgLevelApiKey?: string;
19
+ orgShortName?: string;
20
+ identifyingPrefix: string;
21
+ featureOverrides?: Record<string, boolean>;
22
+ variantUrlOverride?: string;
23
+ variantInfoOverride?: any;
24
+ show?: boolean;
25
+ publicKey?: string;
26
+ featureGates?: OrgConfigFeatureGate[];
27
+ }
28
+ declare const EnviveProvider: React.FC<EnviveProviderProps>;
29
+ //#endregion
30
+ export { EnviveProvider };
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29udGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZW52aXZlQ29udGV4dC9lbnZpdmVDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IEVudml2ZUFnZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbnRlcmZhY2UgQWdlbnRXcmFwcGVyUHJvcHMge1xuICAgIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gICAgZW5hYmxlZEFnZW50czogRW52aXZlQWdlbnRbXTtcbn1cbmludGVyZmFjZSBFbnZpdmVQcm92aWRlclByb3BzIGV4dGVuZHMgQWdlbnRXcmFwcGVyUHJvcHMge1xuICAgIGFtcGxpdHVkZUFwaUtleT86IHN0cmluZztcbiAgICBkYXRhUmVzaWRlbmN5Pzogc3RyaW5nO1xuICAgIGVudj86IHN0cmluZztcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIHJlYWN0QXBwTmFtZT86IHN0cmluZztcbiAgICBjZG5Vcmw/OiBzdHJpbmc7XG4gICAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgICBvcmdMZXZlbEFwaUtleT86IHN0cmluZztcbiAgICBvcmdTaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgaWRlbnRpZnlpbmdQcmVmaXg6IHN0cmluZztcbiAgICBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgdmFyaWFudFVybE92ZXJyaWRlPzogc3RyaW5nO1xuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGU/OiBhbnk7XG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgcHVibGljS2V5Pzogc3RyaW5nO1xuICAgIGZlYXR1cmVHYXRlcz86IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBFbnZpdmVQcm92aWRlcjogUmVhY3QuRkM8RW52aXZlUHJvdmlkZXJQcm9wcz47XG5leHBvcnQge307XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsSUFBSSxvQkFBb0I7Q0FBQztPQUFHO09BQUE7Q0FBQTtBQUM1QixJQUFJLHNCQUFtQjtDQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDdkIsSUFBVyxpQkFBaUI7Q0FBQztPQUFHO09BQUEsTUFBQTtDQUFBIn0=
@@ -0,0 +1,31 @@
1
+ import { OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.js";
2
+ import { EnviveAgent } from "./types.js";
3
+ import { ReactNode } from "react";
4
+
5
+ //#region src/contexts/enviveContext/enviveContext.d.ts
6
+ interface AgentWrapperProps {
7
+ children: ReactNode;
8
+ enabledAgents: EnviveAgent[];
9
+ }
10
+ interface EnviveProviderProps extends AgentWrapperProps {
11
+ amplitudeApiKey?: string;
12
+ dataResidency?: string;
13
+ env?: string;
14
+ baseUrl?: string;
15
+ reactAppName?: string;
16
+ cdnUrl?: string;
17
+ contextSource?: string;
18
+ orgLevelApiKey?: string;
19
+ orgShortName?: string;
20
+ identifyingPrefix: string;
21
+ featureOverrides?: Record<string, boolean>;
22
+ variantUrlOverride?: string;
23
+ variantInfoOverride?: any;
24
+ show?: boolean;
25
+ publicKey?: string;
26
+ featureGates?: OrgConfigFeatureGate[];
27
+ }
28
+ declare const EnviveProvider: React.FC<EnviveProviderProps>;
29
+ //#endregion
30
+ export { EnviveProvider };
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29udGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9lbnZpdmVDb250ZXh0L2Vudml2ZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0NvbmZpZ1Jlc3VsdHMnO1xuaW1wb3J0IHsgRW52aXZlQWdlbnQgfSBmcm9tICcuL3R5cGVzJztcbmludGVyZmFjZSBBZ2VudFdyYXBwZXJQcm9wcyB7XG4gICAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgICBlbmFibGVkQWdlbnRzOiBFbnZpdmVBZ2VudFtdO1xufVxuaW50ZXJmYWNlIEVudml2ZVByb3ZpZGVyUHJvcHMgZXh0ZW5kcyBBZ2VudFdyYXBwZXJQcm9wcyB7XG4gICAgYW1wbGl0dWRlQXBpS2V5Pzogc3RyaW5nO1xuICAgIGRhdGFSZXNpZGVuY3k/OiBzdHJpbmc7XG4gICAgZW52Pzogc3RyaW5nO1xuICAgIGJhc2VVcmw/OiBzdHJpbmc7XG4gICAgcmVhY3RBcHBOYW1lPzogc3RyaW5nO1xuICAgIGNkblVybD86IHN0cmluZztcbiAgICBjb250ZXh0U291cmNlPzogc3RyaW5nO1xuICAgIG9yZ0xldmVsQXBpS2V5Pzogc3RyaW5nO1xuICAgIG9yZ1Nob3J0TmFtZT86IHN0cmluZztcbiAgICBpZGVudGlmeWluZ1ByZWZpeDogc3RyaW5nO1xuICAgIGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGU/OiBzdHJpbmc7XG4gICAgdmFyaWFudEluZm9PdmVycmlkZT86IGFueTtcbiAgICBzaG93PzogYm9vbGVhbjtcbiAgICBwdWJsaWNLZXk/OiBzdHJpbmc7XG4gICAgZmVhdHVyZUdhdGVzPzogT3JnQ29uZmlnRmVhdHVyZUdhdGVbXTtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IEVudml2ZVByb3ZpZGVyOiBSZWFjdC5GQzxFbnZpdmVQcm92aWRlclByb3BzPjtcbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxJQUFJLG9CQUFvQjtDQUFDO09BQUc7T0FBQTtDQUFBO0FBQzVCLElBQUksc0JBQW1CO0NBQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUN2QixJQUFXLGlCQUFpQjtDQUFDO09BQUc7T0FBQSxNQUFBO0NBQUEifQ==
@@ -0,0 +1,51 @@
1
+ import { LocalStorageProvider } from "../localStorageContext/localStorageContext.js";
2
+ import "../localStorageContext/index.js";
3
+ import { EnviveConfigProvider } from "../enviveConfigContext/enviveConfigContext.js";
4
+ import { FeatureFlagServiceProvider } from "../featureFlagServiceContext/featureFlagServiceContext.js";
5
+ import { AmplitudeProvider } from "../amplitudeContext/amplitudeContext.js";
6
+ import "../amplitudeContext/index.js";
7
+ import { GraphQLProvider } from "../graphqlContext/graphqlContext.js";
8
+ import { NewOrgConfigProvider } from "../newOrgConfigContext/newOrgConfigContext.js";
9
+ import { EnviveCssProvider } from "../enviveCssContext/enviveCssContext.js";
10
+ import "../enviveCssContext/index.js";
11
+ import "../enviveConfigContext/index.js";
12
+ import "../featureFlagServiceContext/index.js";
13
+ import "../graphqlContext/index.js";
14
+ import "../newOrgConfigContext/index.js";
15
+ import { UserIdentityProvider } from "../userIdentityContext/userIdentityContext.js";
16
+ import "../userIdentityContext/index.js";
17
+ import { EnviveAgent } from "./types.js";
18
+ import { SearchProvider } from "../searchContext/searchContext.js";
19
+ import "../searchContext/index.js";
20
+ import { createContext } from "react";
21
+ import { jsx } from "react/jsx-runtime";
22
+
23
+ //#region src/contexts/enviveContext/enviveContext.tsx
24
+ const EnviveContext = createContext(null);
25
+ const SearchAgentWrapper = ({ children, enabledAgents }) => {
26
+ if (!enabledAgents.includes(EnviveAgent.SearchAgent)) return children;
27
+ return /* @__PURE__ */ jsx(SearchProvider, { children });
28
+ };
29
+ const SalesAgentWrapper = ({ children, enabledAgents }) => {
30
+ return children;
31
+ };
32
+ const EnviveProvider = ({ children, enabledAgents, ...config }) => /* @__PURE__ */ jsx(EnviveContext.Provider, {
33
+ value: null,
34
+ children: /* @__PURE__ */ jsx(EnviveConfigProvider, {
35
+ ...config,
36
+ children: /* @__PURE__ */ jsx(GraphQLProvider, { children: /* @__PURE__ */ jsx(NewOrgConfigProvider, { children: /* @__PURE__ */ jsx(LocalStorageProvider, { children: /* @__PURE__ */ jsx(FeatureFlagServiceProvider, {
37
+ featureGates: [],
38
+ children: /* @__PURE__ */ jsx(UserIdentityProvider, { children: /* @__PURE__ */ jsx(AmplitudeProvider, { children: /* @__PURE__ */ jsx(EnviveCssProvider, { children: /* @__PURE__ */ jsx(SearchAgentWrapper, {
39
+ enabledAgents,
40
+ children: /* @__PURE__ */ jsx(SalesAgentWrapper, {
41
+ enabledAgents,
42
+ children
43
+ })
44
+ }) }) }) })
45
+ }) }) }) })
46
+ })
47
+ });
48
+
49
+ //#endregion
50
+ export { EnviveProvider };
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29udGV4dC5qcyIsIm5hbWVzIjpbIlNlYXJjaEFnZW50V3JhcHBlcjogUmVhY3QuRkM8QWdlbnRXcmFwcGVyUHJvcHM+IiwiU2FsZXNBZ2VudFdyYXBwZXI6IFJlYWN0LkZDPEFnZW50V3JhcHBlclByb3BzPiIsIkVudml2ZVByb3ZpZGVyOiBSZWFjdC5GQzxFbnZpdmVQcm92aWRlclByb3BzPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9lbnZpdmVDb250ZXh0L2Vudml2ZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0Tm9kZSwgY3JlYXRlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IEFtcGxpdHVkZVByb3ZpZGVyIH0gZnJvbSAnLi4vYW1wbGl0dWRlQ29udGV4dCc7XG5pbXBvcnQgeyBFbnZpdmVDb25maWdQcm92aWRlciB9IGZyb20gJy4uL2Vudml2ZUNvbmZpZ0NvbnRleHQnO1xuaW1wb3J0IHsgRW52aXZlQ3NzUHJvdmlkZXIgfSBmcm9tICcuLi9lbnZpdmVDc3NDb250ZXh0JztcbmltcG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5pbXBvcnQgeyBHcmFwaFFMUHJvdmlkZXIgfSBmcm9tICcuLi9ncmFwaHFsQ29udGV4dCc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm92aWRlciB9IGZyb20gJy4uL2xvY2FsU3RvcmFnZUNvbnRleHQnO1xuaW1wb3J0IHsgTmV3T3JnQ29uZmlnUHJvdmlkZXIgfSBmcm9tICcuLi9uZXdPcmdDb25maWdDb250ZXh0JztcbmltcG9ydCB7IFVzZXJJZGVudGl0eVByb3ZpZGVyIH0gZnJvbSAnLi4vdXNlcklkZW50aXR5Q29udGV4dCc7XG5pbXBvcnQgeyBFbnZpdmVBZ2VudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU2VhcmNoUHJvdmlkZXIgfSBmcm9tICcuLi9zZWFyY2hDb250ZXh0JztcblxuY29uc3QgRW52aXZlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8bnVsbD4obnVsbCk7XG5cbmludGVyZmFjZSBBZ2VudFdyYXBwZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGVuYWJsZWRBZ2VudHM6IEVudml2ZUFnZW50W107XG59XG5cbmludGVyZmFjZSBFbnZpdmVQcm92aWRlclByb3BzIGV4dGVuZHMgQWdlbnRXcmFwcGVyUHJvcHMge1xuICBhbXBsaXR1ZGVBcGlLZXk/OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k/OiBzdHJpbmc7XG4gIGVudj86IHN0cmluZztcbiAgYmFzZVVybD86IHN0cmluZztcbiAgcmVhY3RBcHBOYW1lPzogc3RyaW5nO1xuICBjZG5Vcmw/OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gIG9yZ0xldmVsQXBpS2V5Pzogc3RyaW5nO1xuICBvcmdTaG9ydE5hbWU/OiBzdHJpbmc7XG4gIGlkZW50aWZ5aW5nUHJlZml4OiBzdHJpbmc7XG4gIGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgdmFyaWFudFVybE92ZXJyaWRlPzogc3RyaW5nO1xuICB2YXJpYW50SW5mb092ZXJyaWRlPzogYW55O1xuICBzaG93PzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICBmZWF0dXJlR2F0ZXM/OiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdOyAvLyBOZXcgcHJvcCBmb3IgZmVhdHVyZSBnYXRlc1xufVxuXG5jb25zdCBTZWFyY2hBZ2VudFdyYXBwZXI6IFJlYWN0LkZDPEFnZW50V3JhcHBlclByb3BzPiA9ICh7IGNoaWxkcmVuLCBlbmFibGVkQWdlbnRzIH0pID0+IHtcbiAgaWYgKCFlbmFibGVkQWdlbnRzLmluY2x1ZGVzKEVudml2ZUFnZW50LlNlYXJjaEFnZW50KSkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gPFNlYXJjaFByb3ZpZGVyPntjaGlsZHJlbn08L1NlYXJjaFByb3ZpZGVyPjtcbn07XG5cbmNvbnN0IFNhbGVzQWdlbnRXcmFwcGVyOiBSZWFjdC5GQzxBZ2VudFdyYXBwZXJQcm9wcz4gPSAoeyBjaGlsZHJlbiwgZW5hYmxlZEFnZW50cyB9KSA9PiB7XG4gIC8vIFRPRE86IEltcGxlbWVudCBTYWxlc0FnZW50IHByb3ZpZGVyc1xuICAvLyBpZiAoIWVuYWJsZWRBZ2VudHMuaW5jbHVkZXMoRW52aXZlQWdlbnQuU2FsZXNBZ2VudCkpIHtcbiAgcmV0dXJuIGNoaWxkcmVuO1xuICAvLyB9XG59O1xuXG5leHBvcnQgY29uc3QgRW52aXZlUHJvdmlkZXI6IFJlYWN0LkZDPEVudml2ZVByb3ZpZGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGVuYWJsZWRBZ2VudHMsXG4gIC4uLmNvbmZpZ1xufSkgPT4gKFxuICA8RW52aXZlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bnVsbH0+XG4gICAgPEVudml2ZUNvbmZpZ1Byb3ZpZGVyIHsuLi5jb25maWd9PlxuICAgICAgPEdyYXBoUUxQcm92aWRlcj5cbiAgICAgICAgPE5ld09yZ0NvbmZpZ1Byb3ZpZGVyPlxuICAgICAgICAgIDxMb2NhbFN0b3JhZ2VQcm92aWRlcj5cbiAgICAgICAgICAgIDxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlciBmZWF0dXJlR2F0ZXM9e1tdfT5cbiAgICAgICAgICAgICAgPFVzZXJJZGVudGl0eVByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDxBbXBsaXR1ZGVQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgIDxFbnZpdmVDc3NQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFNlYXJjaEFnZW50V3JhcHBlciBlbmFibGVkQWdlbnRzPXtlbmFibGVkQWdlbnRzfT5cbiAgICAgICAgICAgICAgICAgICAgICA8U2FsZXNBZ2VudFdyYXBwZXIgZW5hYmxlZEFnZW50cz17ZW5hYmxlZEFnZW50c30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgICAgPC9TYWxlc0FnZW50V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9TZWFyY2hBZ2VudFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICA8L0Vudml2ZUNzc1Byb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvQW1wbGl0dWRlUHJvdmlkZXI+XG4gICAgICAgICAgICAgIDwvVXNlcklkZW50aXR5UHJvdmlkZXI+XG4gICAgICAgICAgICA8L0ZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyPlxuICAgICAgICAgIDwvTG9jYWxTdG9yYWdlUHJvdmlkZXI+XG4gICAgICAgIDwvTmV3T3JnQ29uZmlnUHJvdmlkZXI+XG4gICAgICA8L0dyYXBoUUxQcm92aWRlcj5cbiAgICA8L0Vudml2ZUNvbmZpZ1Byb3ZpZGVyPlxuICA8L0Vudml2ZUNvbnRleHQuUHJvdmlkZXI+XG4pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE1BQU0sZ0JBQWdCLGNBQW9CLEtBQUs7QUEwQi9DLE1BQU1BLHNCQUFtRCxFQUFFLFVBQVUsb0JBQW9CO0FBQ3ZGLEtBQUksQ0FBQyxjQUFjLFNBQVMsWUFBWSxZQUFZLENBQ2xELFFBQU87QUFFVCxRQUFPLG9CQUFDLGtCQUFnQixXQUEwQjs7QUFHcEQsTUFBTUMscUJBQWtELEVBQUUsVUFBVSxvQkFBb0I7QUFHdEYsUUFBTzs7QUFJVCxNQUFhQyxrQkFBaUQsRUFDNUQsVUFDQSxlQUNBLEdBQUcsYUFFSCxvQkFBQyxjQUFjO0NBQVMsT0FBTztXQUM3QixvQkFBQztFQUFxQixHQUFJO1lBQ3hCLG9CQUFDLDZCQUNDLG9CQUFDLGtDQUNDLG9CQUFDLGtDQUNDLG9CQUFDO0dBQTJCLGNBQWMsRUFBRTthQUMxQyxvQkFBQyxrQ0FDQyxvQkFBQywrQkFDQyxvQkFBQywrQkFDQyxvQkFBQztJQUFrQztjQUNqQyxvQkFBQztLQUFpQztLQUMvQjtNQUNpQjtLQUNELEdBQ0gsR0FDRixHQUNDO0lBQ0ksR0FDUixHQUNGLEdBQ1A7R0FDRztFQUNBIn0=
@@ -0,0 +1,5 @@
1
+ const require_contexts_enviveContext_types = require('./types.cjs');
2
+ const require_enviveContext = require('./enviveContext.cjs');
3
+
4
+ exports.EnviveAgent = require_contexts_enviveContext_types.EnviveAgent;
5
+ exports.EnviveProvider = require_enviveContext.EnviveProvider;
@@ -0,0 +1,3 @@
1
+ import { EnviveAgent } from "./types.cjs";
2
+ import { EnviveProvider } from "./enviveContext.cjs";
3
+ export { EnviveAgent, EnviveProvider };