@nlabs/metropolisjs 1.0.0 → 1.0.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 (221) hide show
  1. package/lib/actions/appActions/appActions.d.ts +0 -1
  2. package/lib/actions/awsRumActions/awsRumActions.d.ts +4 -4
  3. package/lib/actions/awsRumActions/awsRumActions.js +81 -29
  4. package/lib/actions/connectionActions/connectionActions.d.ts +0 -1
  5. package/lib/actions/contentActions/contentActions.d.ts +0 -1
  6. package/lib/actions/conversationActions/conversationActions.d.ts +0 -1
  7. package/lib/actions/crmActions/crmActions.d.ts +32 -33
  8. package/lib/actions/eventActions/eventActions.d.ts +0 -1
  9. package/lib/actions/groupActions/groupActions.d.ts +0 -1
  10. package/lib/actions/imageActions/imageActions.d.ts +0 -1
  11. package/lib/actions/imageActions/imageActions.js +5 -4
  12. package/lib/actions/index.d.ts +0 -1
  13. package/lib/actions/locationActions/locationActions.d.ts +0 -1
  14. package/lib/actions/messageActions/messageActions.d.ts +0 -1
  15. package/lib/actions/permissionActions/permissionActions.d.ts +0 -1
  16. package/lib/actions/personaActions/personaActions.d.ts +0 -1
  17. package/lib/actions/postActions/postActions.d.ts +0 -1
  18. package/lib/actions/reactionActions/reactionActions.d.ts +0 -1
  19. package/lib/actions/restActions/restActions.d.ts +2 -3
  20. package/lib/actions/sseActions/sseActions.d.ts +0 -1
  21. package/lib/actions/sseActions/sseActions.js +1 -1
  22. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +0 -1
  23. package/lib/actions/tagActions/tagActions.d.ts +0 -1
  24. package/lib/actions/tagActions/tagActions.js +1 -1
  25. package/lib/actions/translationActions/translationActions.d.ts +0 -1
  26. package/lib/actions/userActions/userActions.d.ts +0 -1
  27. package/lib/actions/videoActions/videoActions.d.ts +0 -1
  28. package/lib/actions/websocketActions/websocketActions.d.ts +0 -1
  29. package/lib/adapters/appAdapter/appAdapter.d.ts +2 -3
  30. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +2 -3
  31. package/lib/adapters/contentAdapter/contentAdapter.d.ts +2 -3
  32. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +2 -3
  33. package/lib/adapters/eventAdapter/eventAdapter.d.ts +2 -3
  34. package/lib/adapters/fileAdapter/fileAdapter.d.ts +2 -3
  35. package/lib/adapters/groupAdapter/groupAdapter.d.ts +2 -3
  36. package/lib/adapters/imageAdapter/imageAdapter.d.ts +2 -3
  37. package/lib/adapters/index.d.ts +0 -1
  38. package/lib/adapters/locationAdapter/locationAdapter.d.ts +2 -3
  39. package/lib/adapters/messageAdapter/messageAdapter.d.ts +2 -3
  40. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +2 -3
  41. package/lib/adapters/permissionAdapter/permissionAdapter.js +1 -1
  42. package/lib/adapters/personaAdapter/personaAdapter.d.ts +2 -3
  43. package/lib/adapters/postAdapter/postAdapter.d.ts +2 -3
  44. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +2 -3
  45. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +2 -3
  46. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +2 -3
  47. package/lib/adapters/tagAdapter/tagAdapter.d.ts +2 -3
  48. package/lib/adapters/translationAdapter/translationAdapter.d.ts +2 -3
  49. package/lib/adapters/userAdapter/userAdapter.d.ts +2 -3
  50. package/lib/adapters/videoAdapter/videoAdapter.d.ts +2 -3
  51. package/lib/config/index.d.ts +2 -1
  52. package/lib/config/index.js +7 -3
  53. package/lib/constants/Collections.d.ts +43 -44
  54. package/lib/constants/MetropolisConstants.d.ts +0 -1
  55. package/lib/graphql/message.d.ts +0 -1
  56. package/lib/graphql/notification.d.ts +0 -1
  57. package/lib/graphql/session.d.ts +0 -1
  58. package/lib/index.d.ts +1 -1
  59. package/lib/index.js +31 -1
  60. package/lib/stores/appStore.d.ts +13 -14
  61. package/lib/stores/contentStore.d.ts +11 -12
  62. package/lib/stores/conversationStore.d.ts +11 -12
  63. package/lib/stores/eventStore.d.ts +13 -17
  64. package/lib/stores/groupStore.d.ts +11 -15
  65. package/lib/stores/imageStore.d.ts +16 -20
  66. package/lib/stores/index.d.ts +0 -1
  67. package/lib/stores/locationStore.d.ts +12 -15
  68. package/lib/stores/messageStore.d.ts +14 -20
  69. package/lib/stores/notificationStore.d.ts +3 -6
  70. package/lib/stores/permissionStore.d.ts +13 -14
  71. package/lib/stores/personaStore.d.ts +1 -2
  72. package/lib/stores/postStore.d.ts +11 -14
  73. package/lib/stores/reactionStore.d.ts +9 -10
  74. package/lib/stores/subscriptionStore.d.ts +13 -14
  75. package/lib/stores/tagStore.d.ts +16 -19
  76. package/lib/stores/translationStore.d.ts +8 -9
  77. package/lib/stores/userStore.d.ts +41 -42
  78. package/lib/stores/userStore.js +7 -1
  79. package/lib/stores/videoStore.d.ts +12 -13
  80. package/lib/stores/websocketStore.d.ts +5 -6
  81. package/lib/types/apps.types.d.ts +0 -1
  82. package/lib/types/common.types.d.ts +0 -1
  83. package/lib/types/conversations.types.d.ts +0 -1
  84. package/lib/types/crm.types.d.ts +0 -1
  85. package/lib/types/edges.types.d.ts +0 -1
  86. package/lib/types/groups.types.d.ts +0 -1
  87. package/lib/types/index.d.ts +0 -1
  88. package/lib/types/subscriptions.types.d.ts +0 -1
  89. package/lib/types/videos.types.d.ts +0 -1
  90. package/lib/utils/MetropolisProvider.d.ts +0 -1
  91. package/lib/utils/actionFactory.d.ts +2 -3
  92. package/lib/utils/actionFactory.js +27 -2
  93. package/lib/utils/api.d.ts +1 -2
  94. package/lib/utils/api.js +34 -18
  95. package/lib/utils/app.d.ts +0 -1
  96. package/lib/utils/baseActionFactory.d.ts +2 -3
  97. package/lib/utils/configUtils.d.ts +0 -1
  98. package/lib/utils/dateUtils.d.ts +0 -1
  99. package/lib/utils/file.d.ts +0 -1
  100. package/lib/utils/i18n.d.ts +0 -1
  101. package/lib/utils/index.d.ts +0 -1
  102. package/lib/utils/location.d.ts +1 -2
  103. package/lib/utils/permissionUtils.d.ts +0 -1
  104. package/lib/utils/requestCache.d.ts +1 -2
  105. package/lib/utils/session.d.ts +0 -1
  106. package/lib/utils/useConversationTyping.d.ts +0 -1
  107. package/lib/utils/useMetropolis.d.ts +0 -1
  108. package/lib/utils/useMetropolis.js +9 -5
  109. package/lib/utils/useTranslations.d.ts +0 -1
  110. package/lib/utils/useTranslations.js +1 -1
  111. package/lib/utils/validatorFactory.d.ts +1 -2
  112. package/package.json +3 -3
  113. package/tsconfig.test.json +4 -0
  114. package/lib/actions/appActions/appActions.d.ts.map +0 -1
  115. package/lib/actions/awsRumActions/awsRumActions.d.ts.map +0 -1
  116. package/lib/actions/connectionActions/connectionActions.d.ts.map +0 -1
  117. package/lib/actions/contentActions/contentActions.d.ts.map +0 -1
  118. package/lib/actions/conversationActions/conversationActions.d.ts.map +0 -1
  119. package/lib/actions/crmActions/crmActions.d.ts.map +0 -1
  120. package/lib/actions/eventActions/eventActions.d.ts.map +0 -1
  121. package/lib/actions/groupActions/groupActions.d.ts.map +0 -1
  122. package/lib/actions/imageActions/imageActions.d.ts.map +0 -1
  123. package/lib/actions/index.d.ts.map +0 -1
  124. package/lib/actions/locationActions/locationActions.d.ts.map +0 -1
  125. package/lib/actions/messageActions/messageActions.d.ts.map +0 -1
  126. package/lib/actions/permissionActions/permissionActions.d.ts.map +0 -1
  127. package/lib/actions/personaActions/personaActions.d.ts.map +0 -1
  128. package/lib/actions/postActions/postActions.d.ts.map +0 -1
  129. package/lib/actions/reactionActions/reactionActions.d.ts.map +0 -1
  130. package/lib/actions/restActions/restActions.d.ts.map +0 -1
  131. package/lib/actions/sseActions/sseActions.d.ts.map +0 -1
  132. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +0 -1
  133. package/lib/actions/tagActions/tagActions.d.ts.map +0 -1
  134. package/lib/actions/translationActions/translationActions.d.ts.map +0 -1
  135. package/lib/actions/userActions/userActions.d.ts.map +0 -1
  136. package/lib/actions/videoActions/videoActions.d.ts.map +0 -1
  137. package/lib/actions/websocketActions/websocketActions.d.ts.map +0 -1
  138. package/lib/adapters/appAdapter/appAdapter.d.ts.map +0 -1
  139. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +0 -1
  140. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +0 -1
  141. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +0 -1
  142. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +0 -1
  143. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +0 -1
  144. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +0 -1
  145. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +0 -1
  146. package/lib/adapters/index.d.ts.map +0 -1
  147. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +0 -1
  148. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +0 -1
  149. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +0 -1
  150. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +0 -1
  151. package/lib/adapters/postAdapter/postAdapter.d.ts.map +0 -1
  152. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +0 -1
  153. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +0 -1
  154. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +0 -1
  155. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +0 -1
  156. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +0 -1
  157. package/lib/adapters/userAdapter/userAdapter.d.ts.map +0 -1
  158. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +0 -1
  159. package/lib/config/index.d.ts.map +0 -1
  160. package/lib/constants/Collections.d.ts.map +0 -1
  161. package/lib/constants/MetropolisConstants.d.ts.map +0 -1
  162. package/lib/graphql/message.d.ts.map +0 -1
  163. package/lib/graphql/notification.d.ts.map +0 -1
  164. package/lib/graphql/session.d.ts.map +0 -1
  165. package/lib/index.d.ts.map +0 -1
  166. package/lib/stores/appStore.d.ts.map +0 -1
  167. package/lib/stores/contentStore.d.ts.map +0 -1
  168. package/lib/stores/conversationStore.d.ts.map +0 -1
  169. package/lib/stores/eventStore.d.ts.map +0 -1
  170. package/lib/stores/groupStore.d.ts.map +0 -1
  171. package/lib/stores/imageStore.d.ts.map +0 -1
  172. package/lib/stores/index.d.ts.map +0 -1
  173. package/lib/stores/locationStore.d.ts.map +0 -1
  174. package/lib/stores/messageStore.d.ts.map +0 -1
  175. package/lib/stores/notificationStore.d.ts.map +0 -1
  176. package/lib/stores/permissionStore.d.ts.map +0 -1
  177. package/lib/stores/personaStore.d.ts.map +0 -1
  178. package/lib/stores/postStore.d.ts.map +0 -1
  179. package/lib/stores/reactionStore.d.ts.map +0 -1
  180. package/lib/stores/subscriptionStore.d.ts.map +0 -1
  181. package/lib/stores/tagStore.d.ts.map +0 -1
  182. package/lib/stores/translationStore.d.ts.map +0 -1
  183. package/lib/stores/userStore.d.ts.map +0 -1
  184. package/lib/stores/videoStore.d.ts.map +0 -1
  185. package/lib/stores/websocketStore.d.ts.map +0 -1
  186. package/lib/tests/actionTestScenarios.d.ts +0 -20
  187. package/lib/tests/actionTestScenarios.d.ts.map +0 -1
  188. package/lib/tests/actionTestScenarios.js +0 -851
  189. package/lib/tests/testGraphQLServer.d.ts +0 -22
  190. package/lib/tests/testGraphQLServer.d.ts.map +0 -1
  191. package/lib/tests/testGraphQLServer.js +0 -197
  192. package/lib/tests/testGraphQLServerSimple.d.ts +0 -3
  193. package/lib/tests/testGraphQLServerSimple.d.ts.map +0 -1
  194. package/lib/tests/testGraphQLServerSimple.js +0 -52
  195. package/lib/types/apps.types.d.ts.map +0 -1
  196. package/lib/types/common.types.d.ts.map +0 -1
  197. package/lib/types/conversations.types.d.ts.map +0 -1
  198. package/lib/types/crm.types.d.ts.map +0 -1
  199. package/lib/types/edges.types.d.ts.map +0 -1
  200. package/lib/types/groups.types.d.ts.map +0 -1
  201. package/lib/types/index.d.ts.map +0 -1
  202. package/lib/types/subscriptions.types.d.ts.map +0 -1
  203. package/lib/types/videos.types.d.ts.map +0 -1
  204. package/lib/utils/MetropolisProvider.d.ts.map +0 -1
  205. package/lib/utils/actionFactory.d.ts.map +0 -1
  206. package/lib/utils/api.d.ts.map +0 -1
  207. package/lib/utils/app.d.ts.map +0 -1
  208. package/lib/utils/baseActionFactory.d.ts.map +0 -1
  209. package/lib/utils/configUtils.d.ts.map +0 -1
  210. package/lib/utils/dateUtils.d.ts.map +0 -1
  211. package/lib/utils/file.d.ts.map +0 -1
  212. package/lib/utils/i18n.d.ts.map +0 -1
  213. package/lib/utils/index.d.ts.map +0 -1
  214. package/lib/utils/location.d.ts.map +0 -1
  215. package/lib/utils/permissionUtils.d.ts.map +0 -1
  216. package/lib/utils/requestCache.d.ts.map +0 -1
  217. package/lib/utils/session.d.ts.map +0 -1
  218. package/lib/utils/useConversationTyping.d.ts.map +0 -1
  219. package/lib/utils/useMetropolis.d.ts.map +0 -1
  220. package/lib/utils/useTranslations.d.ts.map +0 -1
  221. package/lib/utils/validatorFactory.d.ts.map +0 -1
@@ -3,9 +3,9 @@
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ import { parseString } from '@nlabs/utils';
5
5
  import { validateImageInput } from '../../adapters/imageAdapter/imageAdapter.js';
6
- import { getConfigFromFlux } from '../../utils/configUtils.js';
7
6
  import { IMAGE_CONSTANTS } from '../../stores/imageStore.js';
8
7
  import { appMutation, appQuery, uploadImage } from '../../utils/api.js';
8
+ import { getConfigFromFlux } from '../../utils/configUtils.js';
9
9
  import { convertFileToUploadFile } from '../../utils/file.js';
10
10
  import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
11
11
  const DATA_TYPE = 'images';
@@ -97,8 +97,9 @@ const createImageValidator = (customAdapter, options)=>(input, validatorOptions)
97
97
  if (parsedItemId) {
98
98
  uploadPayload.set('itemId', parsedItemId);
99
99
  }
100
- if (uploadFile.type || fileType) {
101
- uploadPayload.set('fileType', uploadFile.type || fileType);
100
+ const uploadFileType = uploadFile.type || fileType;
101
+ if (uploadFileType) {
102
+ uploadPayload.set('fileType', uploadFileType);
102
103
  }
103
104
  if (name) {
104
105
  uploadPayload.set('name', name);
@@ -590,4 +591,4 @@ const createImageValidator = (customAdapter, options)=>(input, validatorOptions)
590
591
  };
591
592
  };
592
593
 
593
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9pbWFnZUFjdGlvbnMvaW1hZ2VBY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyBwYXJzZVN0cmluZyB9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7IHZhbGlkYXRlSW1hZ2VJbnB1dCB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2ltYWdlQWRhcHRlci9pbWFnZUFkYXB0ZXIuanMnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnRnJvbUZsdXggfSBmcm9tICcuLi8uLi91dGlscy9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQgeyBJTUFHRV9DT05TVEFOVFMgfSBmcm9tICcuLi8uLi9zdG9yZXMvaW1hZ2VTdG9yZS5qcyc7XG5pbXBvcnQgeyBhcHBNdXRhdGlvbiwgYXBwUXVlcnksIHVwbG9hZEltYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB7IGNvbnZlcnRGaWxlVG9VcGxvYWRGaWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQgeyBjbGVhckNhY2hlZFJlcXVlc3QsIGdldENhY2hlZFJlcXVlc3QsIHNldENhY2hlZFJlcXVlc3QgfSBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0Q2FjaGUuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmsgfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUgeyBJbWFnZVR5cGUgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9pbWFnZUFkYXB0ZXIvaW1hZ2VBZGFwdGVyLmpzJztcbmltcG9ydCB0eXBlIHsgQXBpUmVzdWx0c1R5cGUgfSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25SZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmNvbnN0IERBVEFfVFlQRSA9ICdpbWFnZXMnO1xuXG5jb25zdCBnZXRJbWFnZVVwbG9hZENvbmZpZyA9IChmbHV4OiBGbHV4RnJhbWV3b3JrKToge21heEltYWdlU2l6ZTogbnVtYmVyOyBtYXhJbWFnZVVwbG9hZEJ5dGVzOiBudW1iZXJ9ID0+IHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IGNvbmZpZ3VyZWRNYXhJbWFnZVNpemUgPSBOdW1iZXIoXG4gICAgKGNvbmZpZyBhcyBhbnkpPy5hcHA/LmltYWdlcz8ubWF4SW1hZ2VTaXplXG4gICAgfHwgKGNvbmZpZyBhcyBhbnkpPy5tYXhJbWFnZVNpemVcbiAgICB8fCAxMjAwXG4gICk7XG4gIGNvbnN0IGNvbmZpZ3VyZWRNYXhJbWFnZVVwbG9hZEJ5dGVzID0gTnVtYmVyKFxuICAgIChjb25maWcgYXMgYW55KT8uYXBwPy5pbWFnZXM/Lm1heEltYWdlVXBsb2FkQnl0ZXNcbiAgICB8fCAoY29uZmlnIGFzIGFueSk/Lm1heEltYWdlVXBsb2FkQnl0ZXNcbiAgICB8fCA5MDAgKiAxMDI0XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXhJbWFnZVNpemU6IE51bWJlci5pc0Zpbml0ZShjb25maWd1cmVkTWF4SW1hZ2VTaXplKSAmJiBjb25maWd1cmVkTWF4SW1hZ2VTaXplID4gMFxuICAgICAgPyBjb25maWd1cmVkTWF4SW1hZ2VTaXplXG4gICAgICA6IDEyMDAsXG4gICAgbWF4SW1hZ2VVcGxvYWRCeXRlczogTnVtYmVyLmlzRmluaXRlKGNvbmZpZ3VyZWRNYXhJbWFnZVVwbG9hZEJ5dGVzKSAmJiBjb25maWd1cmVkTWF4SW1hZ2VVcGxvYWRCeXRlcyA+IDBcbiAgICAgID8gY29uZmlndXJlZE1heEltYWdlVXBsb2FkQnl0ZXNcbiAgICAgIDogOTAwICogMTAyNFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUFkYXB0ZXJPcHRpb25zIHtcbiAgc3RyaWN0PzogYm9vbGVhbjtcbiAgYWxsb3dQYXJ0aWFsPzogYm9vbGVhbjtcbiAgZW52aXJvbm1lbnQ/OiAnZGV2ZWxvcG1lbnQnIHwgJ3Byb2R1Y3Rpb24nIHwgJ3Rlc3QnO1xuICBjdXN0b21WYWxpZGF0aW9uPzogKGlucHV0OiB1bmtub3duKSA9PiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQWN0aW9uc09wdGlvbnMge1xuICBpbWFnZUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBJbWFnZUFkYXB0ZXJPcHRpb25zKSA9PiBhbnk7XG4gIGltYWdlQWRhcHRlck9wdGlvbnM/OiBJbWFnZUFkYXB0ZXJPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBJbWFnZUFwaVJlc3VsdHNUeXBlID0ge1xuICBhZGRJbWFnZTogSW1hZ2VUeXBlO1xuICBkZWxldGVJbWFnZTogSW1hZ2VUeXBlO1xuICBpbWFnZTogSW1hZ2VUeXBlO1xuICBnZXRJbWFnZUJ5SWQ6IEltYWdlVHlwZTtcbiAgZ2V0SW1hZ2VMaXN0QnlJdGVtOiBJbWFnZVR5cGVbXTtcbiAgaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zOiBJbWFnZVR5cGVbXTtcbiAgZ2V0SW1hZ2VMaXN0QnlSZWFjdGlvbnM6IEltYWdlVHlwZVtdO1xuICB1cGRhdGVJbWFnZTogSW1hZ2VUeXBlO1xuICB1cGxvYWRGaWxlSW1hZ2VzOiBJbWFnZVR5cGVbXTtcbiAgZ2V0SW1hZ2VDb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUFjdGlvbnMge1xuICBhZGQ6IChpbWFnZTogUGFydGlhbDxJbWFnZVR5cGU+LCB0eXBlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPEltYWdlVHlwZT47XG4gIGRlbGV0ZTogKGltYWdlSWQ6IHN0cmluZywgaW1hZ2VQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPEltYWdlVHlwZT47XG4gIGdldEltYWdlQnlJZDogKGltYWdlSWQ6IHN0cmluZywgaW1hZ2VQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPEltYWdlVHlwZT47XG4gIHVwZGF0ZTogKGltYWdlOiBQYXJ0aWFsPEltYWdlVHlwZT4sIHR5cGU/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlPjtcbiAgdXBsb2FkOiAoaW1hZ2VGaWxlczogRmlsZVtdLCBpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlW10+O1xuICBjb3VudEJ5SXRlbTogKGl0ZW1JZDogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPG51bWJlcj47XG4gIGxpc3RCeUl0ZW06IChpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU/OiBzdHJpbmcsIGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBpbWFnZVByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlW10+O1xuICBsaXN0QnlQZXJzb25hUmVhY3Rpb25zOiAocGVyc29uYUlkOiBzdHJpbmcsIHJlYWN0aW9uczogc3RyaW5nW10sIGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBpbWFnZVByb3BzPzogc3RyaW5nW10sIGxpc3RLZXk/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlW10+O1xuICBsaXN0QnlSZWFjdGlvbnM6IChyZWFjdGlvbnM6IHN0cmluZ1tdLCBmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlciwgaW1hZ2VQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPEltYWdlVHlwZVtdPjtcbiAgdXBkYXRlSW1hZ2VBZGFwdGVyOiAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSW1hZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVJbWFnZUFkYXB0ZXJPcHRpb25zOiAob3B0aW9uczogSW1hZ2VBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuLy8gRGVmYXVsdCB2YWxpZGF0aW9uIGZ1bmN0aW9uXG5jb25zdCBkZWZhdWx0SW1hZ2VWYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBJbWFnZUFkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZUltYWdlSW5wdXQoaW5wdXQpO1xuXG4vLyBFbmhhbmNlZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIHRoYXQgbWVyZ2VzIGN1c3RvbSBsb2dpYyB3aXRoIGRlZmF1bHRzXG5jb25zdCBjcmVhdGVJbWFnZVZhbGlkYXRvciA9IChcbiAgY3VzdG9tQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IEltYWdlQWRhcHRlck9wdGlvbnMpID0+IGFueSxcbiAgb3B0aW9ucz86IEltYWdlQWRhcHRlck9wdGlvbnNcbikgPT4gKGlucHV0OiB1bmtub3duLCB2YWxpZGF0b3JPcHRpb25zPzogSW1hZ2VBZGFwdGVyT3B0aW9ucykgPT4ge1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0gey4uLm9wdGlvbnMsIC4uLnZhbGlkYXRvck9wdGlvbnN9O1xuXG4gIC8vIFN0YXJ0IHdpdGggZGVmYXVsdCB2YWxpZGF0aW9uXG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0SW1hZ2VWYWxpZGF0b3IoaW5wdXQsIG1lcmdlZE9wdGlvbnMpO1xuXG4gIC8vIEFwcGx5IGN1c3RvbSB2YWxpZGF0aW9uIGlmIHByb3ZpZGVkXG4gIGlmKGN1c3RvbUFkYXB0ZXIpIHtcbiAgICB2YWxpZGF0ZWQgPSBjdXN0b21BZGFwdGVyKHZhbGlkYXRlZCwgbWVyZ2VkT3B0aW9ucyk7XG4gIH1cblxuICAvLyBBcHBseSBjdXN0b20gdmFsaWRhdGlvbiBmcm9tIG9wdGlvbnMgaWYgcHJvdmlkZWRcbiAgaWYobWVyZ2VkT3B0aW9ucz8uY3VzdG9tVmFsaWRhdGlvbikge1xuICAgIHZhbGlkYXRlZCA9IG1lcmdlZE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbih2YWxpZGF0ZWQpIGFzIEltYWdlVHlwZTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZWQ7XG59O1xuXG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIEltYWdlQWN0aW9ucyB3aXRoIGVuaGFuY2VkIGFkYXB0ZXIgaW5qZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIEN1c3RvbSBhZGFwdGVycyBhcmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBiZWhhdmlvciwgYWxsb3dpbmcgcGFydGlhbCBvdmVycmlkZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZGFwdGVyc1xuICogY29uc3QgaW1hZ2VBY3Rpb25zID0gY3JlYXRlSW1hZ2VBY3Rpb25zKGZsdXgpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b20gYWRhcHRlciB0aGF0IGV4dGVuZHMgZGVmYXVsdCBiZWhhdmlvclxuICogY29uc3QgY3VzdG9tSW1hZ2VBZGFwdGVyID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSW1hZ2VBZGFwdGVyT3B0aW9ucykgPT4ge1xuICogICAvLyBpbnB1dCBpcyBhbHJlYWR5IHZhbGlkYXRlZCBieSBkZWZhdWx0IGFkYXB0ZXJcbiAqICAgaWYgKGlucHV0LmZpbGVTaXplICYmIGlucHV0LmZpbGVTaXplID4gNTAwMDAwMCkge1xuICogICAgIHRocm93IG5ldyBFcnJvcignSW1hZ2UgZmlsZSB0b28gbGFyZ2UnKTtcbiAqICAgfVxuICogICByZXR1cm4gaW5wdXQ7XG4gKiB9O1xuICpcbiAqIGNvbnN0IGltYWdlQWN0aW9ucyA9IGNyZWF0ZUltYWdlQWN0aW9ucyhmbHV4LCB7XG4gKiAgIGltYWdlQWRhcHRlcjogY3VzdG9tSW1hZ2VBZGFwdGVyXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUltYWdlQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IEltYWdlQWN0aW9uc09wdGlvbnNcbik6IEltYWdlQWN0aW9ucyA9PiB7XG4gIC8vIEluaXRpYWxpemUgYWRhcHRlciBzdGF0ZVxuICBsZXQgaW1hZ2VBZGFwdGVyT3B0aW9ucyA9IG9wdGlvbnM/LmltYWdlQWRhcHRlck9wdGlvbnMgfHwge307XG4gIGxldCBjdXN0b21JbWFnZUFkYXB0ZXIgPSBvcHRpb25zPy5pbWFnZUFkYXB0ZXI7XG5cbiAgLy8gQ3JlYXRlIHZhbGlkYXRvcnMgdGhhdCBtZXJnZSBjdXN0b20gYWRhcHRlcnMgd2l0aCBkZWZhdWx0c1xuICBsZXQgdmFsaWRhdGVJbWFnZSA9IGNyZWF0ZUltYWdlVmFsaWRhdG9yKGN1c3RvbUltYWdlQWRhcHRlciwgaW1hZ2VBZGFwdGVyT3B0aW9ucyk7XG5cbiAgLy8gVXBkYXRlIGZ1bmN0aW9ucyB0aGF0IHJlY3JlYXRlIHZhbGlkYXRvcnNcbiAgY29uc3QgdXBkYXRlSW1hZ2VBZGFwdGVyID0gKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IEltYWdlQWRhcHRlck9wdGlvbnMpID0+IGFueSk6IHZvaWQgPT4ge1xuICAgIGN1c3RvbUltYWdlQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdmFsaWRhdGVJbWFnZSA9IGNyZWF0ZUltYWdlVmFsaWRhdG9yKGN1c3RvbUltYWdlQWRhcHRlciwgaW1hZ2VBZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlSW1hZ2VBZGFwdGVyT3B0aW9ucyA9IChvcHRpb25zOiBJbWFnZUFkYXB0ZXJPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgaW1hZ2VBZGFwdGVyT3B0aW9ucyA9IHsuLi5pbWFnZUFkYXB0ZXJPcHRpb25zLCAuLi5vcHRpb25zfTtcbiAgICB2YWxpZGF0ZUltYWdlID0gY3JlYXRlSW1hZ2VWYWxpZGF0b3IoY3VzdG9tSW1hZ2VBZGFwdGVyLCBpbWFnZUFkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICAvLyBBY3Rpb24gaW1wbGVtZW50YXRpb25zXG4gIGNvbnN0IGFkZCA9IGFzeW5jIChcbiAgICBpbWFnZTogUGFydGlhbDxJbWFnZVR5cGU+LFxuICAgIHR5cGU6IHN0cmluZyA9ICdpbWFnZScsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsaWRhdGVkSW1hZ2UgPSB2YWxpZGF0ZUltYWdlKGltYWdlLCBpbWFnZUFkYXB0ZXJPcHRpb25zKTtcbiAgICAgIGNvbnN0IHtiYXNlNjQsIGRlc2NyaXB0aW9uLCBmaWxlLCBmaWxlVHlwZSwgaXRlbUlkLCBuYW1lLCBwcml2YWN5fSA9IHZhbGlkYXRlZEltYWdlO1xuICAgICAgY29uc3QgcGFyc2VkRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiA/IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgcGFyc2VkSXRlbUlkID0gU3RyaW5nKGl0ZW1JZCB8fCAnJyk7XG4gICAgICBsZXQgdXBsb2FkUGF5bG9hZDogRm9ybURhdGEgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAgICAgaWYodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyAmJiBmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICBjb25zdCB7bWF4SW1hZ2VTaXplLCBtYXhJbWFnZVVwbG9hZEJ5dGVzfSA9IGdldEltYWdlVXBsb2FkQ29uZmlnKGZsdXgpO1xuICAgICAgICBjb25zdCB1cGxvYWRGaWxlID0gYXdhaXQgY29udmVydEZpbGVUb1VwbG9hZEZpbGUoZmlsZSwgbWF4SW1hZ2VTaXplLCBtYXhJbWFnZVVwbG9hZEJ5dGVzKTtcbiAgICAgICAgdXBsb2FkUGF5bG9hZCA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICB1cGxvYWRQYXlsb2FkLnNldCgnZmlsZScsIHVwbG9hZEZpbGUpO1xuICAgICAgICB1cGxvYWRQYXlsb2FkLnNldCgnaXRlbVR5cGUnLCB0eXBlKTtcblxuICAgICAgICBpZihwYXJzZWREZXNjcmlwdGlvbikge1xuICAgICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdkZXNjcmlwdGlvbicsIHBhcnNlZERlc2NyaXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHBhcnNlZEl0ZW1JZCkge1xuICAgICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdpdGVtSWQnLCBwYXJzZWRJdGVtSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYodXBsb2FkRmlsZS50eXBlIHx8IGZpbGVUeXBlKSB7XG4gICAgICAgICAgdXBsb2FkUGF5bG9hZC5zZXQoJ2ZpbGVUeXBlJywgdXBsb2FkRmlsZS50eXBlIHx8IGZpbGVUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG5hbWUpIHtcbiAgICAgICAgICB1cGxvYWRQYXlsb2FkLnNldCgnbmFtZScsIG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYocHJpdmFjeSkge1xuICAgICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdwcml2YWN5JywgcHJpdmFjeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwbG9hZFBheWxvYWQgPSB7XG4gICAgICAgICAgYmFzZTY0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwYXJzZWREZXNjcmlwdGlvbixcbiAgICAgICAgICBmaWxlVHlwZTogZmlsZVR5cGUgfHwgJ2ltYWdlL2pwZWcnLFxuICAgICAgICAgIGl0ZW1JZCxcbiAgICAgICAgICBpdGVtVHlwZTogdHlwZSxcbiAgICAgICAgICAuLi4obmFtZSA/IHtuYW1lfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJpdmFjeSA/IHtwcml2YWN5fSA6IHt9KVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7aW1hZ2U6IG5ld0ltYWdlfSA9IGF3YWl0IHVwbG9hZEltYWdlKGZsdXgsIHVwbG9hZFBheWxvYWQpO1xuICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7aW1hZ2U6IG5ld0ltYWdlLCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU30pO1xuICAgICAgcmV0dXJuIG5ld0ltYWdlIGFzIEltYWdlVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkFERF9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGBpbWFnZS5jb3VudEJ5SXRlbToke1N0cmluZyhpbWFnZT8uaXRlbUlkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UubGlzdEJ5SXRlbToke1N0cmluZyhpbWFnZT8uaXRlbUlkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UGVyc29uYVJlYWN0aW9ucycpO1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICdpbWFnZS5saXN0QnlSZWFjdGlvbnMnKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSW1hZ2UgPSBhc3luYyAoXG4gICAgaW1hZ2VJZDogc3RyaW5nLFxuICAgIGltYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGltYWdlSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogaW1hZ2VJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBkZWxldGVJbWFnZSA9IChkYXRhIGFzIHtpbWFnZXM/OiB7ZGVsZXRlSW1hZ2U/OiBJbWFnZVR5cGV9fSk/LmltYWdlcz8uZGVsZXRlSW1hZ2UgfHwge307XG4gICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlOiBkZWxldGVJbWFnZSwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZUltYWdlIGFzIHVua25vd24gYXMgRmx1eEFjdGlvbjtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxJbWFnZVR5cGU+KGZsdXgsICdkZWxldGVJbWFnZScsIERBVEFfVFlQRSwgcXVlcnlWYXJpYWJsZXMsIFsnaWQnLCAuLi5pbWFnZVByb3BzXSwge29uU3VjY2Vzc30pO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuUkVNT1ZFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmdldEltYWdlQnlJZDoke2ltYWdlSWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZSA9IGFzeW5jIChcbiAgICBpbWFnZTogUGFydGlhbDxJbWFnZVR5cGU+LFxuICAgIHR5cGU6IHN0cmluZyA9ICdpbWFnZScsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsaWRhdGVkSW1hZ2UgPSB2YWxpZGF0ZUltYWdlKGltYWdlLCBpbWFnZUFkYXB0ZXJPcHRpb25zKTtcbiAgICAgIGNvbnN0IHtiYXNlNjQsIGRlc2NyaXB0aW9uLCBpbWFnZUlkLCBpdGVtSWQsIHByaXZhY3ksIHVybH0gPSB2YWxpZGF0ZWRJbWFnZTtcblxuICAgICAgaWYoaW1hZ2VJZCAmJiAhYmFzZTY0ICYmICF1cmwpIHtcbiAgICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6ICdJbWFnZXNJbnB1dCEnLFxuICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uID8ge2Rlc2NyaXB0aW9uOiBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKX0gOiB7fSksXG4gICAgICAgICAgICAgIC4uLihwcml2YWN5ID8ge3ByaXZhY3l9IDoge30pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlSW1hZ2UgPSAoZGF0YSBhcyB7aW1hZ2VzPzoge3VwZGF0ZUltYWdlPzogSW1hZ2VUeXBlfX0pPy5pbWFnZXM/LnVwZGF0ZUltYWdlIHx8IHt9O1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlOiB1cGRhdGVJbWFnZSwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlSW1hZ2UgYXMgdW5rbm93biBhcyBGbHV4QWN0aW9uO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxJbWFnZVR5cGU+KFxuICAgICAgICAgIGZsdXgsXG4gICAgICAgICAgJ3VwZGF0ZUltYWdlJyxcbiAgICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgICAgWydpbWFnZUlkJywgJ3ByaXZhY3knLCAnZGVzY3JpcHRpb24nLCAndGh1bWJVcmwnLCAnaW1hZ2VVcmwnXSxcbiAgICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRJbWFnZSA9IHtcbiAgICAgICAgYmFzZTY0LFxuICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZmlsZVR5cGU6ICdpbWFnZS9qcGVnJyxcbiAgICAgICAgaXRlbUlkLFxuICAgICAgICBpdGVtVHlwZTogdHlwZSxcbiAgICAgICAgLi4uKGltYWdlSWQgPyB7aW1hZ2VJZH0gOiB7fSksXG4gICAgICAgIC4uLihwcml2YWN5ID8ge3ByaXZhY3l9IDoge30pXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7aW1hZ2U6IG5ld0ltYWdlfSA9IGF3YWl0IHVwbG9hZEltYWdlKGZsdXgsIGZvcm1hdEltYWdlKTtcbiAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlOiBuZXdJbWFnZSwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkFERF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIHJldHVybiBuZXdJbWFnZSBhcyBJbWFnZVR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5BRERfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UuZ2V0SW1hZ2VCeUlkOiR7U3RyaW5nKGltYWdlPy5pbWFnZUlkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UuY291bnRCeUl0ZW06JHtTdHJpbmcoaW1hZ2U/Lml0ZW1JZCB8fCAnJyl9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmxpc3RCeUl0ZW06JHtTdHJpbmcoaW1hZ2U/Lml0ZW1JZCB8fCAnJyl9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwbG9hZCA9IGFzeW5jIChcbiAgICBpbWFnZUZpbGVzOiBGaWxlW10sXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IHN0cmluZyA9ICd1c2VycycsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzYXZlZEltYWdlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBpbWFnZUZpbGVzLm1hcChhc3luYyAoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHt0eXBlOiBmaWxlVHlwZX0gPSBmaWxlO1xuICAgICAgICAgIHJldHVybiBhZGQoe1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIGZpbGVUeXBlLFxuICAgICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lXG4gICAgICAgICAgfSwgaXRlbVR5cGUsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlczogc2F2ZWRJbWFnZXMsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5VUExPQURfSVRFTV9TVUNDRVNTfSk7XG4gICAgICByZXR1cm4gc2F2ZWRJbWFnZXM7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5VUExPQURfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UuY291bnRCeUl0ZW06JHtpdGVtSWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmxpc3RCeUl0ZW06JHtpdGVtSWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvdW50QnlJdGVtID0gYXN5bmMgKGl0ZW1JZDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8bnVtYmVyPihmbHV4LCBgaW1hZ2UuY291bnRCeUl0ZW06JHtpdGVtSWR9YCwge2l0ZW1JZH0sIHJlcXVlc3RPcHRpb25zKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGl0ZW1JZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBpdGVtSWRcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgY291bnQgPSBkYXRhPy5pbWFnZUNvdW50ID8/IDA7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtpdGVtSWQsIGNvdW50LCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuR0VUX0NPVU5UX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PG51bWJlcj4oZmx1eCwgJ2ltYWdlQ291bnQnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ2NvdW50J10sIHtvblN1Y2Nlc3N9KTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGBpbWFnZS5jb3VudEJ5SXRlbToke2l0ZW1JZH1gLCB7aXRlbUlkfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfQ09VTlRfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRJbWFnZUJ5SWQgPSBhc3luYyAoXG4gICAgaW1hZ2VJZDogc3RyaW5nLFxuICAgIGltYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxJbWFnZVR5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICBgaW1hZ2UuZ2V0SW1hZ2VCeUlkOiR7aW1hZ2VJZH1gLFxuICAgICAgICB7aW1hZ2VJZCwgaW1hZ2VQcm9wc30sXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaW1hZ2VJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBpbWFnZUlkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGltYWdlc0RhdGEgPSAoZGF0YSBhcyB7aW1hZ2VzPzoge2dldEltYWdlQnlJZD86IEltYWdlVHlwZX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZSA9IGltYWdlc0RhdGE/LmdldEltYWdlQnlJZCB8fCB7fTtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbWFnZSBhcyB1bmtub3duIGFzIEZsdXhBY3Rpb247XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxJbWFnZVR5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0SW1hZ2VCeUlkJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAnaW1hZ2VJZCcsXG4gICAgICAgICAgJ2ltYWdlVXJsJyxcbiAgICAgICAgICAnaXRlbUlkJyxcbiAgICAgICAgICAnbGlrZUNvdW50JyxcbiAgICAgICAgICAncHJpdmFjeScsXG4gICAgICAgICAgJ3RodW1iVXJsJyxcbiAgICAgICAgICAnd2lkdGgnLFxuICAgICAgICAgIC4uLmltYWdlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGBpbWFnZS5nZXRJbWFnZUJ5SWQ6JHtpbWFnZUlkfWAsIHtpbWFnZUlkLCBpbWFnZVByb3BzfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IHN0cmluZyA9ICd1c2VycycsXG4gICAgZnJvbTogbnVtYmVyID0gMCxcbiAgICB0bzogbnVtYmVyID0gMTAsXG4gICAgaW1hZ2VQcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8SW1hZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICBgaW1hZ2UubGlzdEJ5SXRlbToke2l0ZW1JZH1gLFxuICAgICAgICB7ZnJvbSwgaW1hZ2VQcm9wcywgaXRlbUlkLCBpdGVtVHlwZSwgdG99LFxuICAgICAgICByZXF1ZXN0T3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6IGZyb21cbiAgICAgICAgfSxcbiAgICAgICAgaXRlbUlkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1JZFxuICAgICAgICB9LFxuICAgICAgICBpdGVtVHlwZToge1xuICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIHZhbHVlOiBpdGVtVHlwZVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiB0b1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBpbWFnZXNEYXRhID0gKGRhdGEgYXMge2ltYWdlcz86IHtnZXRJbWFnZUxpc3RCeUl0ZW0/OiBJbWFnZVR5cGVbXX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZXNCeUl0ZW0gPSBBcnJheS5pc0FycmF5KGltYWdlc0RhdGE/LmdldEltYWdlTGlzdEJ5SXRlbSlcbiAgICAgICAgICA/IGltYWdlc0RhdGEuZ2V0SW1hZ2VMaXN0QnlJdGVtIHx8IFtdXG4gICAgICAgICAgOiBbXTtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgIGxpc3Q6IGltYWdlc0J5SXRlbSxcbiAgICAgICAgICB0eXBlOiBJTUFHRV9DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGltYWdlc0J5SXRlbSBhcyB1bmtub3duIGFzIEZsdXhBY3Rpb247XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxJbWFnZVR5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRJbWFnZUxpc3RCeUl0ZW0nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICdpbWFnZUlkJyxcbiAgICAgICAgICAnaW1hZ2VVcmwnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICdwcml2YWN5JyxcbiAgICAgICAgICAndGh1bWJVcmwnLFxuICAgICAgICAgICd3aWR0aCcsXG4gICAgICAgICAgLi4uaW1hZ2VQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmxpc3RCeUl0ZW06JHtpdGVtSWR9YCwge2Zyb20sIGltYWdlUHJvcHMsIGl0ZW1JZCwgaXRlbVR5cGUsIHRvfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeVJlYWN0aW9ucyA9IGFzeW5jIChcbiAgICByZWFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDEwLFxuICAgIGltYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PEltYWdlVHlwZVtdPihmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJywge2Zyb20sIGltYWdlUHJvcHMsIHJlYWN0aW9ucywgdG99LCByZXF1ZXN0T3B0aW9ucyk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiBmcm9tXG4gICAgICAgIH0sXG4gICAgICAgIHJlYWN0aW9uczoge1xuICAgICAgICAgIHR5cGU6ICdbU3RyaW5nIV0nLFxuICAgICAgICAgIHZhbHVlOiByZWFjdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogdG9cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgaW1hZ2VzRGF0YSA9IChkYXRhIGFzIHtpbWFnZXM/OiB7aW1hZ2VzQnlSZWFjdGlvbnM/OiBJbWFnZVR5cGVbXX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZXNCeVJlYWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoaW1hZ2VzRGF0YT8uaW1hZ2VzQnlSZWFjdGlvbnMpXG4gICAgICAgICAgPyBpbWFnZXNEYXRhLmltYWdlc0J5UmVhY3Rpb25zIHx8IFtdXG4gICAgICAgICAgOiBbXTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGxpc3Q6IGltYWdlc0J5UmVhY3Rpb25zLFxuICAgICAgICAgIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8SW1hZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnaW1hZ2VzQnlSZWFjdGlvbnMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICdpbWFnZUlkJyxcbiAgICAgICAgICAnaW1hZ2VVcmwnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICdwcml2YWN5JyxcbiAgICAgICAgICAndGh1bWJVcmwnLFxuICAgICAgICAgICd3aWR0aCcsXG4gICAgICAgICAgLi4uaW1hZ2VQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVJlYWN0aW9ucycsIHtmcm9tLCBpbWFnZVByb3BzLCByZWFjdGlvbnMsIHRvfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeVBlcnNvbmFSZWFjdGlvbnMgPSBhc3luYyAoXG4gICAgcGVyc29uYUlkOiBzdHJpbmcsXG4gICAgcmVhY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBmcm9tOiBudW1iZXIgPSAwLFxuICAgIHRvOiBudW1iZXIgPSAzMCxcbiAgICBpbWFnZVByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIGxpc3RLZXk6IHN0cmluZyA9IGBwZXJzb25hOiR7cGVyc29uYUlkfTpzYXZlZFBob3Rvc2AsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PEltYWdlVHlwZVtdPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnLFxuICAgICAgICB7ZnJvbSwgaW1hZ2VQcm9wcywgbGlzdEtleSwgcGVyc29uYUlkLCByZWFjdGlvbnMsIHRvfSxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2l0ZW1JZDogbGlzdEtleSwgbGlzdDogY2FjaGVkUmVzdWx0LCBwZXJzb25hSWQsIHJlYWN0aW9ucywgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1N9KTtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGZyb206IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogZnJvbVxuICAgICAgICB9LFxuICAgICAgICBwZXJzb25hSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQnLFxuICAgICAgICAgIHZhbHVlOiBwZXJzb25hSWRcbiAgICAgICAgfSxcbiAgICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgICAgdHlwZTogJ1tTdHJpbmchXScsXG4gICAgICAgICAgdmFsdWU6IHJlYWN0aW9uc1xuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiB0b1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBpbWFnZXNEYXRhID0gKGRhdGEgYXMge2ltYWdlcz86IHtpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnM/OiBJbWFnZVR5cGVbXX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnMgPSBBcnJheS5pc0FycmF5KGltYWdlc0RhdGE/LmltYWdlc0J5UGVyc29uYVJlYWN0aW9ucylcbiAgICAgICAgICA/IGltYWdlc0RhdGEuaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zIHx8IFtdXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICBpdGVtSWQ6IGxpc3RLZXksXG4gICAgICAgICAgbGlzdDogaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zLFxuICAgICAgICAgIHBlcnNvbmFJZCxcbiAgICAgICAgICByZWFjdGlvbnMsXG4gICAgICAgICAgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnMgYXMgdW5rbm93biBhcyBGbHV4QWN0aW9uO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8SW1hZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAnaW1hZ2VJZCcsXG4gICAgICAgICAgJ2ltYWdlVXJsJyxcbiAgICAgICAgICAnbGlrZUNvdW50JyxcbiAgICAgICAgICAncHJpdmFjeScsXG4gICAgICAgICAgJ3RodW1iVXJsJyxcbiAgICAgICAgICAnd2lkdGgnLFxuICAgICAgICAgIC4uLmltYWdlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnaW1hZ2UubGlzdEJ5UGVyc29uYVJlYWN0aW9ucycsXG4gICAgICAgIHtmcm9tLCBpbWFnZVByb3BzLCBsaXN0S2V5LCBwZXJzb25hSWQsIHJlYWN0aW9ucywgdG99LFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCBpdGVtSWQ6IGxpc3RLZXksIHBlcnNvbmFJZCwgcmVhY3Rpb25zLCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFkZCxcbiAgICBkZWxldGU6IGRlbGV0ZUltYWdlLFxuICAgIGdldEltYWdlQnlJZCxcbiAgICB1cGRhdGUsXG4gICAgdXBsb2FkLFxuICAgIGNvdW50QnlJdGVtLFxuICAgIGxpc3RCeUl0ZW0sXG4gICAgbGlzdEJ5UGVyc29uYVJlYWN0aW9ucyxcbiAgICBsaXN0QnlSZWFjdGlvbnMsXG4gICAgdXBkYXRlSW1hZ2VBZGFwdGVyLFxuICAgIHVwZGF0ZUltYWdlQWRhcHRlck9wdGlvbnNcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsicGFyc2VTdHJpbmciLCJ2YWxpZGF0ZUltYWdlSW5wdXQiLCJnZXRDb25maWdGcm9tRmx1eCIsIklNQUdFX0NPTlNUQU5UUyIsImFwcE11dGF0aW9uIiwiYXBwUXVlcnkiLCJ1cGxvYWRJbWFnZSIsImNvbnZlcnRGaWxlVG9VcGxvYWRGaWxlIiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJnZXRJbWFnZVVwbG9hZENvbmZpZyIsImZsdXgiLCJjb25maWciLCJjb25maWd1cmVkTWF4SW1hZ2VTaXplIiwiTnVtYmVyIiwiYXBwIiwiaW1hZ2VzIiwibWF4SW1hZ2VTaXplIiwiY29uZmlndXJlZE1heEltYWdlVXBsb2FkQnl0ZXMiLCJtYXhJbWFnZVVwbG9hZEJ5dGVzIiwiaXNGaW5pdGUiLCJkZWZhdWx0SW1hZ2VWYWxpZGF0b3IiLCJpbnB1dCIsIm9wdGlvbnMiLCJjcmVhdGVJbWFnZVZhbGlkYXRvciIsImN1c3RvbUFkYXB0ZXIiLCJ2YWxpZGF0b3JPcHRpb25zIiwibWVyZ2VkT3B0aW9ucyIsInZhbGlkYXRlZCIsImN1c3RvbVZhbGlkYXRpb24iLCJjcmVhdGVJbWFnZUFjdGlvbnMiLCJpbWFnZUFkYXB0ZXJPcHRpb25zIiwiY3VzdG9tSW1hZ2VBZGFwdGVyIiwiaW1hZ2VBZGFwdGVyIiwidmFsaWRhdGVJbWFnZSIsInVwZGF0ZUltYWdlQWRhcHRlciIsImFkYXB0ZXIiLCJ1cGRhdGVJbWFnZUFkYXB0ZXJPcHRpb25zIiwiYWRkIiwiaW1hZ2UiLCJ0eXBlIiwicmVxdWVzdE9wdGlvbnMiLCJ2YWxpZGF0ZWRJbWFnZSIsImJhc2U2NCIsImRlc2NyaXB0aW9uIiwiZmlsZSIsImZpbGVUeXBlIiwiaXRlbUlkIiwibmFtZSIsInByaXZhY3kiLCJwYXJzZWREZXNjcmlwdGlvbiIsInVuZGVmaW5lZCIsInBhcnNlZEl0ZW1JZCIsIlN0cmluZyIsInVwbG9hZFBheWxvYWQiLCJGb3JtRGF0YSIsIkZpbGUiLCJ1cGxvYWRGaWxlIiwic2V0IiwiaXRlbVR5cGUiLCJuZXdJbWFnZSIsImRpc3BhdGNoIiwiQUREX0lURU1fU1VDQ0VTUyIsImVycm9yIiwiQUREX0lURU1fRVJST1IiLCJkZWxldGVJbWFnZSIsImltYWdlSWQiLCJpbWFnZVByb3BzIiwicXVlcnlWYXJpYWJsZXMiLCJ2YWx1ZSIsIm9uU3VjY2VzcyIsImRhdGEiLCJSRU1PVkVfSVRFTV9TVUNDRVNTIiwiUkVNT1ZFX0lURU1fRVJST1IiLCJ1cGRhdGUiLCJ1cmwiLCJ1cGRhdGVJbWFnZSIsIlVQREFURV9JVEVNX1NVQ0NFU1MiLCJmb3JtYXRJbWFnZSIsInVwbG9hZCIsImltYWdlRmlsZXMiLCJzYXZlZEltYWdlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJVUExPQURfSVRFTV9TVUNDRVNTIiwiVVBMT0FEX0lURU1fRVJST1IiLCJjb3VudEJ5SXRlbSIsImNhY2hlZFJlc3VsdCIsImNvdW50IiwiaW1hZ2VDb3VudCIsIkdFVF9DT1VOVF9TVUNDRVNTIiwicmVzdWx0IiwiR0VUX0NPVU5UX0VSUk9SIiwiZ2V0SW1hZ2VCeUlkIiwiaW1hZ2VzRGF0YSIsIkdFVF9JVEVNX1NVQ0NFU1MiLCJHRVRfSVRFTV9FUlJPUiIsImxpc3RCeUl0ZW0iLCJmcm9tIiwidG8iLCJpbWFnZXNCeUl0ZW0iLCJBcnJheSIsImlzQXJyYXkiLCJnZXRJbWFnZUxpc3RCeUl0ZW0iLCJsaXN0IiwiR0VUX0xJU1RfU1VDQ0VTUyIsIkdFVF9MSVNUX0VSUk9SIiwibGlzdEJ5UmVhY3Rpb25zIiwicmVhY3Rpb25zIiwiaW1hZ2VzQnlSZWFjdGlvbnMiLCJsaXN0QnlQZXJzb25hUmVhY3Rpb25zIiwicGVyc29uYUlkIiwibGlzdEtleSIsImltYWdlc0J5UGVyc29uYVJlYWN0aW9ucyIsImRlbGV0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBU0EsV0FBVyxRQUFRLGVBQWU7QUFFM0MsU0FBU0Msa0JBQWtCLFFBQVEsOENBQThDO0FBQ2pGLFNBQVNDLGlCQUFpQixRQUFRLDZCQUE2QjtBQUMvRCxTQUFTQyxlQUFlLFFBQVEsNkJBQTZCO0FBQzdELFNBQVNDLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxXQUFXLFFBQVEscUJBQXFCO0FBQ3hFLFNBQVNDLHVCQUF1QixRQUFRLHNCQUFzQjtBQUM5RCxTQUFTQyxrQkFBa0IsRUFBRUMsZ0JBQWdCLEVBQUVDLGdCQUFnQixRQUFRLDhCQUE4QjtBQU9yRyxNQUFNQyxZQUFZO0FBRWxCLE1BQU1DLHVCQUF1QixDQUFDQztJQUM1QixNQUFNQyxTQUFTWixrQkFBa0JXO0lBQ2pDLE1BQU1FLHlCQUF5QkMsT0FDN0IsQUFBQ0YsUUFBZ0JHLEtBQUtDLFFBQVFDLGdCQUMxQkwsUUFBZ0JLLGdCQUNqQjtJQUVMLE1BQU1DLGdDQUFnQ0osT0FDcEMsQUFBQ0YsUUFBZ0JHLEtBQUtDLFFBQVFHLHVCQUMxQlAsUUFBZ0JPLHVCQUNqQixNQUFNO0lBR1gsT0FBTztRQUNMRixjQUFjSCxPQUFPTSxRQUFRLENBQUNQLDJCQUEyQkEseUJBQXlCLElBQzlFQSx5QkFDQTtRQUNKTSxxQkFBcUJMLE9BQU9NLFFBQVEsQ0FBQ0Ysa0NBQWtDQSxnQ0FBZ0MsSUFDbkdBLGdDQUNBLE1BQU07SUFDWjtBQUNGO0FBeUNB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
594
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9pbWFnZUFjdGlvbnMvaW1hZ2VBY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3BhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlSW1hZ2VJbnB1dH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvaW1hZ2VBZGFwdGVyL2ltYWdlQWRhcHRlci5qcyc7XG5pbXBvcnQge0lNQUdFX0NPTlNUQU5UU30gZnJvbSAnLi4vLi4vc3RvcmVzL2ltYWdlU3RvcmUuanMnO1xuaW1wb3J0IHthcHBNdXRhdGlvbiwgYXBwUXVlcnksIHVwbG9hZEltYWdlfSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnVXRpbHMuanMnO1xuaW1wb3J0IHtjb252ZXJ0RmlsZVRvVXBsb2FkRmlsZX0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2NsZWFyQ2FjaGVkUmVxdWVzdCwgZ2V0Q2FjaGVkUmVxdWVzdCwgc2V0Q2FjaGVkUmVxdWVzdH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SW1hZ2VUeXBlfSBmcm9tICcuLi8uLi9hZGFwdGVycy9pbWFnZUFkYXB0ZXIvaW1hZ2VBZGFwdGVyLmpzJztcbmltcG9ydCB0eXBlIHtBcGlSZXN1bHRzVHlwZX0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB0eXBlIHtBY3Rpb25SZXF1ZXN0T3B0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuY29uc3QgREFUQV9UWVBFID0gJ2ltYWdlcyc7XG5cbmNvbnN0IGdldEltYWdlVXBsb2FkQ29uZmlnID0gKGZsdXg6IEZsdXhGcmFtZXdvcmspOiB7bWF4SW1hZ2VTaXplOiBudW1iZXI7IG1heEltYWdlVXBsb2FkQnl0ZXM6IG51bWJlcn0gPT4ge1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgY29uZmlndXJlZE1heEltYWdlU2l6ZSA9IE51bWJlcihcbiAgICAoY29uZmlnIGFzIGFueSk/LmFwcD8uaW1hZ2VzPy5tYXhJbWFnZVNpemVcbiAgICB8fCAoY29uZmlnIGFzIGFueSk/Lm1heEltYWdlU2l6ZVxuICAgIHx8IDEyMDBcbiAgKTtcbiAgY29uc3QgY29uZmlndXJlZE1heEltYWdlVXBsb2FkQnl0ZXMgPSBOdW1iZXIoXG4gICAgKGNvbmZpZyBhcyBhbnkpPy5hcHA/LmltYWdlcz8ubWF4SW1hZ2VVcGxvYWRCeXRlc1xuICAgIHx8IChjb25maWcgYXMgYW55KT8ubWF4SW1hZ2VVcGxvYWRCeXRlc1xuICAgIHx8IDkwMCAqIDEwMjRcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG1heEltYWdlU2l6ZTogTnVtYmVyLmlzRmluaXRlKGNvbmZpZ3VyZWRNYXhJbWFnZVNpemUpICYmIGNvbmZpZ3VyZWRNYXhJbWFnZVNpemUgPiAwXG4gICAgICA/IGNvbmZpZ3VyZWRNYXhJbWFnZVNpemVcbiAgICAgIDogMTIwMCxcbiAgICBtYXhJbWFnZVVwbG9hZEJ5dGVzOiBOdW1iZXIuaXNGaW5pdGUoY29uZmlndXJlZE1heEltYWdlVXBsb2FkQnl0ZXMpICYmIGNvbmZpZ3VyZWRNYXhJbWFnZVVwbG9hZEJ5dGVzID4gMFxuICAgICAgPyBjb25maWd1cmVkTWF4SW1hZ2VVcGxvYWRCeXRlc1xuICAgICAgOiA5MDAgKiAxMDI0XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VBY3Rpb25zT3B0aW9ucyB7XG4gIGltYWdlQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IEltYWdlQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgaW1hZ2VBZGFwdGVyT3B0aW9ucz86IEltYWdlQWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIEltYWdlQXBpUmVzdWx0c1R5cGUgPSB7XG4gIGFkZEltYWdlOiBJbWFnZVR5cGU7XG4gIGRlbGV0ZUltYWdlOiBJbWFnZVR5cGU7XG4gIGltYWdlOiBJbWFnZVR5cGU7XG4gIGdldEltYWdlQnlJZDogSW1hZ2VUeXBlO1xuICBnZXRJbWFnZUxpc3RCeUl0ZW06IEltYWdlVHlwZVtdO1xuICBpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnM6IEltYWdlVHlwZVtdO1xuICBnZXRJbWFnZUxpc3RCeVJlYWN0aW9uczogSW1hZ2VUeXBlW107XG4gIHVwZGF0ZUltYWdlOiBJbWFnZVR5cGU7XG4gIHVwbG9hZEZpbGVJbWFnZXM6IEltYWdlVHlwZVtdO1xuICBnZXRJbWFnZUNvdW50OiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQWN0aW9ucyB7XG4gIGFkZDogKGltYWdlOiBQYXJ0aWFsPEltYWdlVHlwZT4sIHR5cGU/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlPjtcbiAgZGVsZXRlOiAoaW1hZ2VJZDogc3RyaW5nLCBpbWFnZVByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlPjtcbiAgZ2V0SW1hZ2VCeUlkOiAoaW1hZ2VJZDogc3RyaW5nLCBpbWFnZVByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlPjtcbiAgdXBkYXRlOiAoaW1hZ2U6IFBhcnRpYWw8SW1hZ2VUeXBlPiwgdHlwZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxJbWFnZVR5cGU+O1xuICB1cGxvYWQ6IChpbWFnZUZpbGVzOiBGaWxlW10sIGl0ZW1JZDogc3RyaW5nLCBpdGVtVHlwZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxJbWFnZVR5cGVbXT47XG4gIGNvdW50QnlJdGVtOiAoaXRlbUlkOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8bnVtYmVyPjtcbiAgbGlzdEJ5SXRlbTogKGl0ZW1JZDogc3RyaW5nLCBpdGVtVHlwZT86IHN0cmluZywgZnJvbT86IG51bWJlciwgdG8/OiBudW1iZXIsIGltYWdlUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxJbWFnZVR5cGVbXT47XG4gIGxpc3RCeVBlcnNvbmFSZWFjdGlvbnM6IChwZXJzb25hSWQ6IHN0cmluZywgcmVhY3Rpb25zOiBzdHJpbmdbXSwgZnJvbT86IG51bWJlciwgdG8/OiBudW1iZXIsIGltYWdlUHJvcHM/OiBzdHJpbmdbXSwgbGlzdEtleT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxJbWFnZVR5cGVbXT47XG4gIGxpc3RCeVJlYWN0aW9uczogKHJlYWN0aW9uczogc3RyaW5nW10sIGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBpbWFnZVByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8SW1hZ2VUeXBlW10+O1xuICB1cGRhdGVJbWFnZUFkYXB0ZXI6IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBJbWFnZUFkYXB0ZXJPcHRpb25zKSA9PiBhbnkpID0+IHZvaWQ7XG4gIHVwZGF0ZUltYWdlQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBJbWFnZUFkYXB0ZXJPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBEZWZhdWx0IHZhbGlkYXRpb24gZnVuY3Rpb25cbmNvbnN0IGRlZmF1bHRJbWFnZVZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IEltYWdlQWRhcHRlck9wdGlvbnMpID0+IHZhbGlkYXRlSW1hZ2VJbnB1dChpbnB1dCk7XG5cbi8vIEVuaGFuY2VkIHZhbGlkYXRpb24gZnVuY3Rpb24gdGhhdCBtZXJnZXMgY3VzdG9tIGxvZ2ljIHdpdGggZGVmYXVsdHNcbmNvbnN0IGNyZWF0ZUltYWdlVmFsaWRhdG9yID0gKFxuICBjdXN0b21BZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSW1hZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55LFxuICBvcHRpb25zPzogSW1hZ2VBZGFwdGVyT3B0aW9uc1xuKSA9PiAoaW5wdXQ6IHVua25vd24sIHZhbGlkYXRvck9wdGlvbnM/OiBJbWFnZUFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7Li4ub3B0aW9ucywgLi4udmFsaWRhdG9yT3B0aW9uc307XG5cbiAgLy8gU3RhcnQgd2l0aCBkZWZhdWx0IHZhbGlkYXRpb25cbiAgbGV0IHZhbGlkYXRlZCA9IGRlZmF1bHRJbWFnZVZhbGlkYXRvcihpbnB1dCwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgLy8gQXBwbHkgY3VzdG9tIHZhbGlkYXRpb24gaWYgcHJvdmlkZWRcbiAgaWYoY3VzdG9tQWRhcHRlcikge1xuICAgIHZhbGlkYXRlZCA9IGN1c3RvbUFkYXB0ZXIodmFsaWRhdGVkLCBtZXJnZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vIEFwcGx5IGN1c3RvbSB2YWxpZGF0aW9uIGZyb20gb3B0aW9ucyBpZiBwcm92aWRlZFxuICBpZihtZXJnZWRPcHRpb25zPy5jdXN0b21WYWxpZGF0aW9uKSB7XG4gICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCkgYXMgSW1hZ2VUeXBlO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlZDtcbn07XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgSW1hZ2VBY3Rpb25zIHdpdGggZW5oYW5jZWQgYWRhcHRlciBpbmplY3Rpb24gY2FwYWJpbGl0aWVzLlxuICogQ3VzdG9tIGFkYXB0ZXJzIGFyZSBtZXJnZWQgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLCBhbGxvd2luZyBwYXJ0aWFsIG92ZXJyaWRlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2Ugd2l0aCBkZWZhdWx0IGFkYXB0ZXJzXG4gKiBjb25zdCBpbWFnZUFjdGlvbnMgPSBjcmVhdGVJbWFnZUFjdGlvbnMoZmx1eCk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBhZGFwdGVyIHRoYXQgZXh0ZW5kcyBkZWZhdWx0IGJlaGF2aW9yXG4gKiBjb25zdCBjdXN0b21JbWFnZUFkYXB0ZXIgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBJbWFnZUFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gKiAgIC8vIGlucHV0IGlzIGFscmVhZHkgdmFsaWRhdGVkIGJ5IGRlZmF1bHQgYWRhcHRlclxuICogICBpZiAoaW5wdXQuZmlsZVNpemUgJiYgaW5wdXQuZmlsZVNpemUgPiA1MDAwMDAwKSB7XG4gKiAgICAgdGhyb3cgbmV3IEVycm9yKCdJbWFnZSBmaWxlIHRvbyBsYXJnZScpO1xuICogICB9XG4gKiAgIHJldHVybiBpbnB1dDtcbiAqIH07XG4gKlxuICogY29uc3QgaW1hZ2VBY3Rpb25zID0gY3JlYXRlSW1hZ2VBY3Rpb25zKGZsdXgsIHtcbiAqICAgaW1hZ2VBZGFwdGVyOiBjdXN0b21JbWFnZUFkYXB0ZXJcbiAqIH0pO1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlSW1hZ2VBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogSW1hZ2VBY3Rpb25zT3B0aW9uc1xuKTogSW1hZ2VBY3Rpb25zID0+IHtcbiAgLy8gSW5pdGlhbGl6ZSBhZGFwdGVyIHN0YXRlXG4gIGxldCBpbWFnZUFkYXB0ZXJPcHRpb25zID0gb3B0aW9ucz8uaW1hZ2VBZGFwdGVyT3B0aW9ucyB8fCB7fTtcbiAgbGV0IGN1c3RvbUltYWdlQWRhcHRlciA9IG9wdGlvbnM/LmltYWdlQWRhcHRlcjtcblxuICAvLyBDcmVhdGUgdmFsaWRhdG9ycyB0aGF0IG1lcmdlIGN1c3RvbSBhZGFwdGVycyB3aXRoIGRlZmF1bHRzXG4gIGxldCB2YWxpZGF0ZUltYWdlID0gY3JlYXRlSW1hZ2VWYWxpZGF0b3IoY3VzdG9tSW1hZ2VBZGFwdGVyLCBpbWFnZUFkYXB0ZXJPcHRpb25zKTtcblxuICAvLyBVcGRhdGUgZnVuY3Rpb25zIHRoYXQgcmVjcmVhdGUgdmFsaWRhdG9yc1xuICBjb25zdCB1cGRhdGVJbWFnZUFkYXB0ZXIgPSAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSW1hZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tSW1hZ2VBZGFwdGVyID0gYWRhcHRlcjtcbiAgICB2YWxpZGF0ZUltYWdlID0gY3JlYXRlSW1hZ2VWYWxpZGF0b3IoY3VzdG9tSW1hZ2VBZGFwdGVyLCBpbWFnZUFkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVJbWFnZUFkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IEltYWdlQWRhcHRlck9wdGlvbnMpOiB2b2lkID0+IHtcbiAgICBpbWFnZUFkYXB0ZXJPcHRpb25zID0gey4uLmltYWdlQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlSW1hZ2UgPSBjcmVhdGVJbWFnZVZhbGlkYXRvcihjdXN0b21JbWFnZUFkYXB0ZXIsIGltYWdlQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIEFjdGlvbiBpbXBsZW1lbnRhdGlvbnNcbiAgY29uc3QgYWRkID0gYXN5bmMgKFxuICAgIGltYWdlOiBQYXJ0aWFsPEltYWdlVHlwZT4sXG4gICAgdHlwZTogc3RyaW5nID0gJ2ltYWdlJyxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPEltYWdlVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRJbWFnZSA9IHZhbGlkYXRlSW1hZ2UoaW1hZ2UsIGltYWdlQWRhcHRlck9wdGlvbnMpO1xuICAgICAgY29uc3Qge2Jhc2U2NCwgZGVzY3JpcHRpb24sIGZpbGUsIGZpbGVUeXBlLCBpdGVtSWQsIG5hbWUsIHByaXZhY3l9ID0gdmFsaWRhdGVkSW1hZ2U7XG4gICAgICBjb25zdCBwYXJzZWREZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uID8gcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCkgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBwYXJzZWRJdGVtSWQgPSBTdHJpbmcoaXRlbUlkIHx8ICcnKTtcbiAgICAgIGxldCB1cGxvYWRQYXlsb2FkOiBGb3JtRGF0YSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgICBpZih0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnICYmIGZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGNvbnN0IHttYXhJbWFnZVNpemUsIG1heEltYWdlVXBsb2FkQnl0ZXN9ID0gZ2V0SW1hZ2VVcGxvYWRDb25maWcoZmx1eCk7XG4gICAgICAgIGNvbnN0IHVwbG9hZEZpbGUgPSBhd2FpdCBjb252ZXJ0RmlsZVRvVXBsb2FkRmlsZShmaWxlLCBtYXhJbWFnZVNpemUsIG1heEltYWdlVXBsb2FkQnl0ZXMpO1xuICAgICAgICB1cGxvYWRQYXlsb2FkID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdmaWxlJywgdXBsb2FkRmlsZSk7XG4gICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdpdGVtVHlwZScsIHR5cGUpO1xuXG4gICAgICAgIGlmKHBhcnNlZERlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgdXBsb2FkUGF5bG9hZC5zZXQoJ2Rlc2NyaXB0aW9uJywgcGFyc2VkRGVzY3JpcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYocGFyc2VkSXRlbUlkKSB7XG4gICAgICAgICAgdXBsb2FkUGF5bG9hZC5zZXQoJ2l0ZW1JZCcsIHBhcnNlZEl0ZW1JZCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGxvYWRGaWxlVHlwZSA9IHVwbG9hZEZpbGUudHlwZSB8fCBmaWxlVHlwZTtcblxuICAgICAgICBpZih1cGxvYWRGaWxlVHlwZSkge1xuICAgICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdmaWxlVHlwZScsIHVwbG9hZEZpbGVUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG5hbWUpIHtcbiAgICAgICAgICB1cGxvYWRQYXlsb2FkLnNldCgnbmFtZScsIG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYocHJpdmFjeSkge1xuICAgICAgICAgIHVwbG9hZFBheWxvYWQuc2V0KCdwcml2YWN5JywgcHJpdmFjeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwbG9hZFBheWxvYWQgPSB7XG4gICAgICAgICAgYmFzZTY0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwYXJzZWREZXNjcmlwdGlvbixcbiAgICAgICAgICBmaWxlVHlwZTogZmlsZVR5cGUgfHwgJ2ltYWdlL2pwZWcnLFxuICAgICAgICAgIGl0ZW1JZCxcbiAgICAgICAgICBpdGVtVHlwZTogdHlwZSxcbiAgICAgICAgICAuLi4obmFtZSA/IHtuYW1lfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJpdmFjeSA/IHtwcml2YWN5fSA6IHt9KVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7aW1hZ2U6IG5ld0ltYWdlfSA9IGF3YWl0IHVwbG9hZEltYWdlKGZsdXgsIHVwbG9hZFBheWxvYWQpO1xuICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7aW1hZ2U6IG5ld0ltYWdlLCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU30pO1xuICAgICAgcmV0dXJuIG5ld0ltYWdlIGFzIEltYWdlVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkFERF9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGBpbWFnZS5jb3VudEJ5SXRlbToke1N0cmluZyhpbWFnZT8uaXRlbUlkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UubGlzdEJ5SXRlbToke1N0cmluZyhpbWFnZT8uaXRlbUlkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UGVyc29uYVJlYWN0aW9ucycpO1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICdpbWFnZS5saXN0QnlSZWFjdGlvbnMnKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSW1hZ2UgPSBhc3luYyAoXG4gICAgaW1hZ2VJZDogc3RyaW5nLFxuICAgIGltYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGltYWdlSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogaW1hZ2VJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBkZWxldGVJbWFnZSA9IChkYXRhIGFzIHtpbWFnZXM/OiB7ZGVsZXRlSW1hZ2U/OiBJbWFnZVR5cGV9fSk/LmltYWdlcz8uZGVsZXRlSW1hZ2UgfHwge307XG4gICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlOiBkZWxldGVJbWFnZSwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZUltYWdlIGFzIHVua25vd24gYXMgRmx1eEFjdGlvbjtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxJbWFnZVR5cGU+KGZsdXgsICdkZWxldGVJbWFnZScsIERBVEFfVFlQRSwgcXVlcnlWYXJpYWJsZXMsIFsnaWQnLCAuLi5pbWFnZVByb3BzXSwge29uU3VjY2Vzc30pO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuUkVNT1ZFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmdldEltYWdlQnlJZDoke2ltYWdlSWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZSA9IGFzeW5jIChcbiAgICBpbWFnZTogUGFydGlhbDxJbWFnZVR5cGU+LFxuICAgIHR5cGU6IHN0cmluZyA9ICdpbWFnZScsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsaWRhdGVkSW1hZ2UgPSB2YWxpZGF0ZUltYWdlKGltYWdlLCBpbWFnZUFkYXB0ZXJPcHRpb25zKTtcbiAgICAgIGNvbnN0IHtiYXNlNjQsIGRlc2NyaXB0aW9uLCBpbWFnZUlkLCBpdGVtSWQsIHByaXZhY3ksIHVybH0gPSB2YWxpZGF0ZWRJbWFnZTtcblxuICAgICAgaWYoaW1hZ2VJZCAmJiAhYmFzZTY0ICYmICF1cmwpIHtcbiAgICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6ICdJbWFnZXNJbnB1dCEnLFxuICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uID8ge2Rlc2NyaXB0aW9uOiBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKX0gOiB7fSksXG4gICAgICAgICAgICAgIC4uLihwcml2YWN5ID8ge3ByaXZhY3l9IDoge30pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlSW1hZ2UgPSAoZGF0YSBhcyB7aW1hZ2VzPzoge3VwZGF0ZUltYWdlPzogSW1hZ2VUeXBlfX0pPy5pbWFnZXM/LnVwZGF0ZUltYWdlIHx8IHt9O1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlOiB1cGRhdGVJbWFnZSwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlSW1hZ2UgYXMgdW5rbm93biBhcyBGbHV4QWN0aW9uO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxJbWFnZVR5cGU+KFxuICAgICAgICAgIGZsdXgsXG4gICAgICAgICAgJ3VwZGF0ZUltYWdlJyxcbiAgICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgICAgWydpbWFnZUlkJywgJ3ByaXZhY3knLCAnZGVzY3JpcHRpb24nLCAndGh1bWJVcmwnLCAnaW1hZ2VVcmwnXSxcbiAgICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRJbWFnZSA9IHtcbiAgICAgICAgYmFzZTY0LFxuICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZmlsZVR5cGU6ICdpbWFnZS9qcGVnJyxcbiAgICAgICAgaXRlbUlkLFxuICAgICAgICBpdGVtVHlwZTogdHlwZSxcbiAgICAgICAgLi4uKGltYWdlSWQgPyB7aW1hZ2VJZH0gOiB7fSksXG4gICAgICAgIC4uLihwcml2YWN5ID8ge3ByaXZhY3l9IDoge30pXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7aW1hZ2U6IG5ld0ltYWdlfSA9IGF3YWl0IHVwbG9hZEltYWdlKGZsdXgsIGZvcm1hdEltYWdlKTtcbiAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlOiBuZXdJbWFnZSwgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkFERF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIHJldHVybiBuZXdJbWFnZSBhcyBJbWFnZVR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5BRERfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UuZ2V0SW1hZ2VCeUlkOiR7U3RyaW5nKGltYWdlPy5pbWFnZUlkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UuY291bnRCeUl0ZW06JHtTdHJpbmcoaW1hZ2U/Lml0ZW1JZCB8fCAnJyl9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmxpc3RCeUl0ZW06JHtTdHJpbmcoaW1hZ2U/Lml0ZW1JZCB8fCAnJyl9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwbG9hZCA9IGFzeW5jIChcbiAgICBpbWFnZUZpbGVzOiBGaWxlW10sXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IHN0cmluZyA9ICd1c2VycycsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzYXZlZEltYWdlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBpbWFnZUZpbGVzLm1hcChhc3luYyAoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHt0eXBlOiBmaWxlVHlwZX0gPSBmaWxlO1xuICAgICAgICAgIHJldHVybiBhZGQoe1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIGZpbGVUeXBlLFxuICAgICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lXG4gICAgICAgICAgfSwgaXRlbVR5cGUsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2ltYWdlczogc2F2ZWRJbWFnZXMsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5VUExPQURfSVRFTV9TVUNDRVNTfSk7XG4gICAgICByZXR1cm4gc2F2ZWRJbWFnZXM7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5VUExPQURfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgaW1hZ2UuY291bnRCeUl0ZW06JHtpdGVtSWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmxpc3RCeUl0ZW06JHtpdGVtSWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvdW50QnlJdGVtID0gYXN5bmMgKGl0ZW1JZDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8bnVtYmVyPihmbHV4LCBgaW1hZ2UuY291bnRCeUl0ZW06JHtpdGVtSWR9YCwge2l0ZW1JZH0sIHJlcXVlc3RPcHRpb25zKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGl0ZW1JZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBpdGVtSWRcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgY291bnQgPSBkYXRhPy5pbWFnZUNvdW50ID8/IDA7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtpdGVtSWQsIGNvdW50LCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuR0VUX0NPVU5UX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PG51bWJlcj4oZmx1eCwgJ2ltYWdlQ291bnQnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ2NvdW50J10sIHtvblN1Y2Nlc3N9KTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGBpbWFnZS5jb3VudEJ5SXRlbToke2l0ZW1JZH1gLCB7aXRlbUlkfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfQ09VTlRfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRJbWFnZUJ5SWQgPSBhc3luYyAoXG4gICAgaW1hZ2VJZDogc3RyaW5nLFxuICAgIGltYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxJbWFnZVR5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICBgaW1hZ2UuZ2V0SW1hZ2VCeUlkOiR7aW1hZ2VJZH1gLFxuICAgICAgICB7aW1hZ2VJZCwgaW1hZ2VQcm9wc30sXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaW1hZ2VJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBpbWFnZUlkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGltYWdlc0RhdGEgPSAoZGF0YSBhcyB7aW1hZ2VzPzoge2dldEltYWdlQnlJZD86IEltYWdlVHlwZX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZSA9IGltYWdlc0RhdGE/LmdldEltYWdlQnlJZCB8fCB7fTtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbWFnZSBhcyB1bmtub3duIGFzIEZsdXhBY3Rpb247XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxJbWFnZVR5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0SW1hZ2VCeUlkJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAnaW1hZ2VJZCcsXG4gICAgICAgICAgJ2ltYWdlVXJsJyxcbiAgICAgICAgICAnaXRlbUlkJyxcbiAgICAgICAgICAnbGlrZUNvdW50JyxcbiAgICAgICAgICAncHJpdmFjeScsXG4gICAgICAgICAgJ3RodW1iVXJsJyxcbiAgICAgICAgICAnd2lkdGgnLFxuICAgICAgICAgIC4uLmltYWdlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGBpbWFnZS5nZXRJbWFnZUJ5SWQ6JHtpbWFnZUlkfWAsIHtpbWFnZUlkLCBpbWFnZVByb3BzfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IHN0cmluZyA9ICd1c2VycycsXG4gICAgZnJvbTogbnVtYmVyID0gMCxcbiAgICB0bzogbnVtYmVyID0gMTAsXG4gICAgaW1hZ2VQcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8SW1hZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICBgaW1hZ2UubGlzdEJ5SXRlbToke2l0ZW1JZH1gLFxuICAgICAgICB7ZnJvbSwgaW1hZ2VQcm9wcywgaXRlbUlkLCBpdGVtVHlwZSwgdG99LFxuICAgICAgICByZXF1ZXN0T3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6IGZyb21cbiAgICAgICAgfSxcbiAgICAgICAgaXRlbUlkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1JZFxuICAgICAgICB9LFxuICAgICAgICBpdGVtVHlwZToge1xuICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIHZhbHVlOiBpdGVtVHlwZVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiB0b1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBpbWFnZXNEYXRhID0gKGRhdGEgYXMge2ltYWdlcz86IHtnZXRJbWFnZUxpc3RCeUl0ZW0/OiBJbWFnZVR5cGVbXX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZXNCeUl0ZW0gPSBBcnJheS5pc0FycmF5KGltYWdlc0RhdGE/LmdldEltYWdlTGlzdEJ5SXRlbSlcbiAgICAgICAgICA/IGltYWdlc0RhdGEuZ2V0SW1hZ2VMaXN0QnlJdGVtIHx8IFtdXG4gICAgICAgICAgOiBbXTtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgIGxpc3Q6IGltYWdlc0J5SXRlbSxcbiAgICAgICAgICB0eXBlOiBJTUFHRV9DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGltYWdlc0J5SXRlbSBhcyB1bmtub3duIGFzIEZsdXhBY3Rpb247XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxJbWFnZVR5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRJbWFnZUxpc3RCeUl0ZW0nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICdpbWFnZUlkJyxcbiAgICAgICAgICAnaW1hZ2VVcmwnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICdwcml2YWN5JyxcbiAgICAgICAgICAndGh1bWJVcmwnLFxuICAgICAgICAgICd3aWR0aCcsXG4gICAgICAgICAgLi4uaW1hZ2VQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYGltYWdlLmxpc3RCeUl0ZW06JHtpdGVtSWR9YCwge2Zyb20sIGltYWdlUHJvcHMsIGl0ZW1JZCwgaXRlbVR5cGUsIHRvfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeVJlYWN0aW9ucyA9IGFzeW5jIChcbiAgICByZWFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDEwLFxuICAgIGltYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PEltYWdlVHlwZVtdPihmbHV4LCAnaW1hZ2UubGlzdEJ5UmVhY3Rpb25zJywge2Zyb20sIGltYWdlUHJvcHMsIHJlYWN0aW9ucywgdG99LCByZXF1ZXN0T3B0aW9ucyk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiBmcm9tXG4gICAgICAgIH0sXG4gICAgICAgIHJlYWN0aW9uczoge1xuICAgICAgICAgIHR5cGU6ICdbU3RyaW5nIV0nLFxuICAgICAgICAgIHZhbHVlOiByZWFjdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogdG9cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgaW1hZ2VzRGF0YSA9IChkYXRhIGFzIHtpbWFnZXM/OiB7aW1hZ2VzQnlSZWFjdGlvbnM/OiBJbWFnZVR5cGVbXX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZXNCeVJlYWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoaW1hZ2VzRGF0YT8uaW1hZ2VzQnlSZWFjdGlvbnMpXG4gICAgICAgICAgPyBpbWFnZXNEYXRhLmltYWdlc0J5UmVhY3Rpb25zIHx8IFtdXG4gICAgICAgICAgOiBbXTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGxpc3Q6IGltYWdlc0J5UmVhY3Rpb25zLFxuICAgICAgICAgIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8SW1hZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnaW1hZ2VzQnlSZWFjdGlvbnMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICdpbWFnZUlkJyxcbiAgICAgICAgICAnaW1hZ2VVcmwnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICdwcml2YWN5JyxcbiAgICAgICAgICAndGh1bWJVcmwnLFxuICAgICAgICAgICd3aWR0aCcsXG4gICAgICAgICAgLi4uaW1hZ2VQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ2ltYWdlLmxpc3RCeVJlYWN0aW9ucycsIHtmcm9tLCBpbWFnZVByb3BzLCByZWFjdGlvbnMsIHRvfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IElNQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeVBlcnNvbmFSZWFjdGlvbnMgPSBhc3luYyAoXG4gICAgcGVyc29uYUlkOiBzdHJpbmcsXG4gICAgcmVhY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBmcm9tOiBudW1iZXIgPSAwLFxuICAgIHRvOiBudW1iZXIgPSAzMCxcbiAgICBpbWFnZVByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIGxpc3RLZXk6IHN0cmluZyA9IGBwZXJzb25hOiR7cGVyc29uYUlkfTpzYXZlZFBob3Rvc2AsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PEltYWdlVHlwZVtdPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2ltYWdlLmxpc3RCeVBlcnNvbmFSZWFjdGlvbnMnLFxuICAgICAgICB7ZnJvbSwgaW1hZ2VQcm9wcywgbGlzdEtleSwgcGVyc29uYUlkLCByZWFjdGlvbnMsIHRvfSxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2l0ZW1JZDogbGlzdEtleSwgbGlzdDogY2FjaGVkUmVzdWx0LCBwZXJzb25hSWQsIHJlYWN0aW9ucywgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1N9KTtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGZyb206IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogZnJvbVxuICAgICAgICB9LFxuICAgICAgICBwZXJzb25hSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQnLFxuICAgICAgICAgIHZhbHVlOiBwZXJzb25hSWRcbiAgICAgICAgfSxcbiAgICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgICAgdHlwZTogJ1tTdHJpbmchXScsXG4gICAgICAgICAgdmFsdWU6IHJlYWN0aW9uc1xuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiB0b1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBpbWFnZXNEYXRhID0gKGRhdGEgYXMge2ltYWdlcz86IHtpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnM/OiBJbWFnZVR5cGVbXX19KT8uaW1hZ2VzIHx8IHt9O1xuICAgICAgICBjb25zdCBpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnMgPSBBcnJheS5pc0FycmF5KGltYWdlc0RhdGE/LmltYWdlc0J5UGVyc29uYVJlYWN0aW9ucylcbiAgICAgICAgICA/IGltYWdlc0RhdGEuaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zIHx8IFtdXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICBpdGVtSWQ6IGxpc3RLZXksXG4gICAgICAgICAgbGlzdDogaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zLFxuICAgICAgICAgIHBlcnNvbmFJZCxcbiAgICAgICAgICByZWFjdGlvbnMsXG4gICAgICAgICAgdHlwZTogSU1BR0VfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbWFnZXNCeVBlcnNvbmFSZWFjdGlvbnMgYXMgdW5rbm93biBhcyBGbHV4QWN0aW9uO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8SW1hZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAnaW1hZ2VJZCcsXG4gICAgICAgICAgJ2ltYWdlVXJsJyxcbiAgICAgICAgICAnbGlrZUNvdW50JyxcbiAgICAgICAgICAncHJpdmFjeScsXG4gICAgICAgICAgJ3RodW1iVXJsJyxcbiAgICAgICAgICAnd2lkdGgnLFxuICAgICAgICAgIC4uLmltYWdlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnaW1hZ2UubGlzdEJ5UGVyc29uYVJlYWN0aW9ucycsXG4gICAgICAgIHtmcm9tLCBpbWFnZVByb3BzLCBsaXN0S2V5LCBwZXJzb25hSWQsIHJlYWN0aW9ucywgdG99LFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCBpdGVtSWQ6IGxpc3RLZXksIHBlcnNvbmFJZCwgcmVhY3Rpb25zLCB0eXBlOiBJTUFHRV9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFkZCxcbiAgICBkZWxldGU6IGRlbGV0ZUltYWdlLFxuICAgIGdldEltYWdlQnlJZCxcbiAgICB1cGRhdGUsXG4gICAgdXBsb2FkLFxuICAgIGNvdW50QnlJdGVtLFxuICAgIGxpc3RCeUl0ZW0sXG4gICAgbGlzdEJ5UGVyc29uYVJlYWN0aW9ucyxcbiAgICBsaXN0QnlSZWFjdGlvbnMsXG4gICAgdXBkYXRlSW1hZ2VBZGFwdGVyLFxuICAgIHVwZGF0ZUltYWdlQWRhcHRlck9wdGlvbnNcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsicGFyc2VTdHJpbmciLCJ2YWxpZGF0ZUltYWdlSW5wdXQiLCJJTUFHRV9DT05TVEFOVFMiLCJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwidXBsb2FkSW1hZ2UiLCJnZXRDb25maWdGcm9tRmx1eCIsImNvbnZlcnRGaWxlVG9VcGxvYWRGaWxlIiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJnZXRJbWFnZVVwbG9hZENvbmZpZyIsImZsdXgiLCJjb25maWciLCJjb25maWd1cmVkTWF4SW1hZ2VTaXplIiwiTnVtYmVyIiwiYXBwIiwiaW1hZ2VzIiwibWF4SW1hZ2VTaXplIiwiY29uZmlndXJlZE1heEltYWdlVXBsb2FkQnl0ZXMiLCJtYXhJbWFnZVVwbG9hZEJ5dGVzIiwiaXNGaW5pdGUiLCJkZWZhdWx0SW1hZ2VWYWxpZGF0b3IiLCJpbnB1dCIsIm9wdGlvbnMiLCJjcmVhdGVJbWFnZVZhbGlkYXRvciIsImN1c3RvbUFkYXB0ZXIiLCJ2YWxpZGF0b3JPcHRpb25zIiwibWVyZ2VkT3B0aW9ucyIsInZhbGlkYXRlZCIsImN1c3RvbVZhbGlkYXRpb24iLCJjcmVhdGVJbWFnZUFjdGlvbnMiLCJpbWFnZUFkYXB0ZXJPcHRpb25zIiwiY3VzdG9tSW1hZ2VBZGFwdGVyIiwiaW1hZ2VBZGFwdGVyIiwidmFsaWRhdGVJbWFnZSIsInVwZGF0ZUltYWdlQWRhcHRlciIsImFkYXB0ZXIiLCJ1cGRhdGVJbWFnZUFkYXB0ZXJPcHRpb25zIiwiYWRkIiwiaW1hZ2UiLCJ0eXBlIiwicmVxdWVzdE9wdGlvbnMiLCJ2YWxpZGF0ZWRJbWFnZSIsImJhc2U2NCIsImRlc2NyaXB0aW9uIiwiZmlsZSIsImZpbGVUeXBlIiwiaXRlbUlkIiwibmFtZSIsInByaXZhY3kiLCJwYXJzZWREZXNjcmlwdGlvbiIsInVuZGVmaW5lZCIsInBhcnNlZEl0ZW1JZCIsIlN0cmluZyIsInVwbG9hZFBheWxvYWQiLCJGb3JtRGF0YSIsIkZpbGUiLCJ1cGxvYWRGaWxlIiwic2V0IiwidXBsb2FkRmlsZVR5cGUiLCJpdGVtVHlwZSIsIm5ld0ltYWdlIiwiZGlzcGF0Y2giLCJBRERfSVRFTV9TVUNDRVNTIiwiZXJyb3IiLCJBRERfSVRFTV9FUlJPUiIsImRlbGV0ZUltYWdlIiwiaW1hZ2VJZCIsImltYWdlUHJvcHMiLCJxdWVyeVZhcmlhYmxlcyIsInZhbHVlIiwib25TdWNjZXNzIiwiZGF0YSIsIlJFTU9WRV9JVEVNX1NVQ0NFU1MiLCJSRU1PVkVfSVRFTV9FUlJPUiIsInVwZGF0ZSIsInVybCIsInVwZGF0ZUltYWdlIiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsImZvcm1hdEltYWdlIiwidXBsb2FkIiwiaW1hZ2VGaWxlcyIsInNhdmVkSW1hZ2VzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsIlVQTE9BRF9JVEVNX1NVQ0NFU1MiLCJVUExPQURfSVRFTV9FUlJPUiIsImNvdW50QnlJdGVtIiwiY2FjaGVkUmVzdWx0IiwiY291bnQiLCJpbWFnZUNvdW50IiwiR0VUX0NPVU5UX1NVQ0NFU1MiLCJyZXN1bHQiLCJHRVRfQ09VTlRfRVJST1IiLCJnZXRJbWFnZUJ5SWQiLCJpbWFnZXNEYXRhIiwiR0VUX0lURU1fU1VDQ0VTUyIsIkdFVF9JVEVNX0VSUk9SIiwibGlzdEJ5SXRlbSIsImZyb20iLCJ0byIsImltYWdlc0J5SXRlbSIsIkFycmF5IiwiaXNBcnJheSIsImdldEltYWdlTGlzdEJ5SXRlbSIsImxpc3QiLCJHRVRfTElTVF9TVUNDRVNTIiwiR0VUX0xJU1RfRVJST1IiLCJsaXN0QnlSZWFjdGlvbnMiLCJyZWFjdGlvbnMiLCJpbWFnZXNCeVJlYWN0aW9ucyIsImxpc3RCeVBlcnNvbmFSZWFjdGlvbnMiLCJwZXJzb25hSWQiLCJsaXN0S2V5IiwiaW1hZ2VzQnlQZXJzb25hUmVhY3Rpb25zIiwiZGVsZXRlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxXQUFXLFFBQU8sZUFBZTtBQUV6QyxTQUFRQyxrQkFBa0IsUUFBTyw4Q0FBOEM7QUFDL0UsU0FBUUMsZUFBZSxRQUFPLDZCQUE2QjtBQUMzRCxTQUFRQyxXQUFXLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxRQUFPLHFCQUFxQjtBQUN0RSxTQUFRQyxpQkFBaUIsUUFBTyw2QkFBNkI7QUFDN0QsU0FBUUMsdUJBQXVCLFFBQU8sc0JBQXNCO0FBQzVELFNBQVFDLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCLFFBQU8sOEJBQThCO0FBT25HLE1BQU1DLFlBQVk7QUFFbEIsTUFBTUMsdUJBQXVCLENBQUNDO0lBQzVCLE1BQU1DLFNBQVNSLGtCQUFrQk87SUFDakMsTUFBTUUseUJBQXlCQyxPQUM3QixBQUFDRixRQUFnQkcsS0FBS0MsUUFBUUMsZ0JBQzFCTCxRQUFnQkssZ0JBQ2pCO0lBRUwsTUFBTUMsZ0NBQWdDSixPQUNwQyxBQUFDRixRQUFnQkcsS0FBS0MsUUFBUUcsdUJBQzFCUCxRQUFnQk8sdUJBQ2pCLE1BQU07SUFHWCxPQUFPO1FBQ0xGLGNBQWNILE9BQU9NLFFBQVEsQ0FBQ1AsMkJBQTJCQSx5QkFBeUIsSUFDOUVBLHlCQUNBO1FBQ0pNLHFCQUFxQkwsT0FBT00sUUFBUSxDQUFDRixrQ0FBa0NBLGdDQUFnQyxJQUNuR0EsZ0NBQ0EsTUFBTTtJQUNaO0FBQ0Y7QUF5Q0EsOEJBQThCO0FBQzlCLE1BQU1HLHdCQUF3QixDQUFDQyxPQUFnQkMsVUFBa0N4QixtQkFBbUJ1QjtBQUVwRyxzRUFBc0U7QUFDdEUsTUFBTUUsdUJBQXVCLENBQzNCQyxlQUNBRixVQUNHLENBQUNELE9BQWdCSTtRQUNwQixNQUFNQyxnQkFBZ0I7WUFBQyxHQUFHSixPQUFPO1lBQUUsR0FBR0csZ0JBQWdCO1FBQUE7UUFFdEQsZ0NBQWdDO1FBQ2hDLElBQUlFLFlBQVlQLHNCQUFzQkMsT0FBT0s7UUFFN0Msc0NBQXNDO1FBQ3RDLElBQUdGLGVBQWU7WUFDaEJHLFlBQVlILGNBQWNHLFdBQVdEO1FBQ3ZDO1FBRUEsbURBQW1EO1FBQ25ELElBQUdBLGVBQWVFLGtCQUFrQjtZQUNsQ0QsWUFBWUQsY0FBY0UsZ0JBQWdCLENBQUNEO1FBQzdDO1FBRUEsT0FBT0E7SUFDVDtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxQkMsR0FDRCxPQUFPLE1BQU1FLHFCQUFxQixDQUNoQ25CLE1BQ0FZO0lBRUEsMkJBQTJCO0lBQzNCLElBQUlRLHNCQUFzQlIsU0FBU1EsdUJBQXVCLENBQUM7SUFDM0QsSUFBSUMscUJBQXFCVCxTQUFTVTtJQUVsQyw2REFBNkQ7SUFDN0QsSUFBSUMsZ0JBQWdCVixxQkFBcUJRLG9CQUFvQkQ7SUFFN0QsNENBQTRDO0lBQzVDLE1BQU1JLHFCQUFxQixDQUFDQztRQUMxQkoscUJBQXFCSTtRQUNyQkYsZ0JBQWdCVixxQkFBcUJRLG9CQUFvQkQ7SUFDM0Q7SUFFQSxNQUFNTSw0QkFBNEIsQ0FBQ2Q7UUFDakNRLHNCQUFzQjtZQUFDLEdBQUdBLG1CQUFtQjtZQUFFLEdBQUdSLE9BQU87UUFBQTtRQUN6RFcsZ0JBQWdCVixxQkFBcUJRLG9CQUFvQkQ7SUFDM0Q7SUFFQSx5QkFBeUI7SUFDekIsTUFBTU8sTUFBTSxPQUNWQyxPQUNBQyxPQUFlLE9BQU8sRUFDdEJDLGlCQUF1QyxDQUFDLENBQUM7UUFFekMsSUFBSTtZQUNGLE1BQU1DLGlCQUFpQlIsY0FBY0ssT0FBT1I7WUFDNUMsTUFBTSxFQUFDWSxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUMsR0FBR1A7WUFDckUsTUFBTVEsb0JBQW9CTixjQUFjOUMsWUFBWThDLGFBQWEsT0FBT087WUFDeEUsTUFBTUMsZUFBZUMsT0FBT04sVUFBVTtZQUN0QyxJQUFJTztZQUVKLElBQUcsT0FBT0MsYUFBYSxlQUFlVixnQkFBZ0JXLE1BQU07Z0JBQzFELE1BQU0sRUFBQ3ZDLFlBQVksRUFBRUUsbUJBQW1CLEVBQUMsR0FBR1QscUJBQXFCQztnQkFDakUsTUFBTThDLGFBQWEsTUFBTXBELHdCQUF3QndDLE1BQU01QixjQUFjRTtnQkFDckVtQyxnQkFBZ0IsSUFBSUM7Z0JBQ3BCRCxjQUFjSSxHQUFHLENBQUMsUUFBUUQ7Z0JBQzFCSCxjQUFjSSxHQUFHLENBQUMsWUFBWWxCO2dCQUU5QixJQUFHVSxtQkFBbUI7b0JBQ3BCSSxjQUFjSSxHQUFHLENBQUMsZUFBZVI7Z0JBQ25DO2dCQUVBLElBQUdFLGNBQWM7b0JBQ2ZFLGNBQWNJLEdBQUcsQ0FBQyxVQUFVTjtnQkFDOUI7Z0JBRUEsTUFBTU8saUJBQWlCRixXQUFXakIsSUFBSSxJQUFJTTtnQkFFMUMsSUFBR2EsZ0JBQWdCO29CQUNqQkwsY0FBY0ksR0FBRyxDQUFDLFlBQVlDO2dCQUNoQztnQkFFQSxJQUFHWCxNQUFNO29CQUNQTSxjQUFjSSxHQUFHLENBQUMsUUFBUVY7Z0JBQzVCO2dCQUVBLElBQUdDLFNBQVM7b0JBQ1ZLLGNBQWNJLEdBQUcsQ0FBQyxXQUFXVDtnQkFDL0I7WUFDRixPQUFPO2dCQUNMSyxnQkFBZ0I7b0JBQ2RYO29CQUNBQyxhQUFhTTtvQkFDYkosVUFBVUEsWUFBWTtvQkFDdEJDO29CQUNBYSxVQUFVcEI7b0JBQ1YsR0FBSVEsT0FBTzt3QkFBQ0E7b0JBQUksSUFBSSxDQUFDLENBQUM7b0JBQ3RCLEdBQUlDLFVBQVU7d0JBQUNBO29CQUFPLElBQUksQ0FBQyxDQUFDO2dCQUM5QjtZQUNGO1lBRUEsTUFBTSxFQUFDVixPQUFPc0IsUUFBUSxFQUFDLEdBQUcsTUFBTTFELFlBQVlRLE1BQU0yQztZQUNsRCxNQUFNM0MsS0FBS21ELFFBQVEsQ0FBQztnQkFBQ3ZCLE9BQU9zQjtnQkFBVXJCLE1BQU14QyxnQkFBZ0IrRCxnQkFBZ0I7WUFBQTtZQUM1RSxPQUFPRjtRQUNULEVBQUUsT0FBTUcsT0FBTztZQUNickQsS0FBS21ELFFBQVEsQ0FBQztnQkFBQ0U7Z0JBQU94QixNQUFNeEMsZ0JBQWdCaUUsY0FBYztZQUFBO1lBQzFELE1BQU1EO1FBQ1IsU0FBVTtZQUNSLE1BQU0xRCxtQkFBbUJLLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTBDLE9BQU9kLE9BQU9RLFVBQVUsS0FBSztZQUNqRixNQUFNekMsbUJBQW1CSyxNQUFNLENBQUMsaUJBQWlCLEVBQUUwQyxPQUFPZCxPQUFPUSxVQUFVLEtBQUs7WUFDaEYsTUFBTXpDLG1CQUFtQkssTUFBTTtZQUMvQixNQUFNTCxtQkFBbUJLLE1BQU07UUFDakM7SUFDRjtJQUVBLE1BQU11RCxjQUFjLE9BQ2xCQyxTQUNBQyxhQUF1QixFQUFFLEVBQ3pCM0IsaUJBQXVDLENBQUMsQ0FBQztRQUV6QyxJQUFJO1lBQ0YsTUFBTTRCLGlCQUFpQjtnQkFDckJGLFNBQVM7b0JBQ1AzQixNQUFNO29CQUNOOEIsT0FBT0g7Z0JBQ1Q7WUFDRjtZQUVBLE1BQU1JLFlBQVksT0FBT0MsT0FBdUIsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNTixjQUFjLEFBQUNNLE1BQStDeEQsUUFBUWtELGVBQWUsQ0FBQztnQkFDNUYsTUFBTXZELEtBQUttRCxRQUFRLENBQUM7b0JBQUN2QixPQUFPMkI7b0JBQWExQixNQUFNeEMsZ0JBQWdCeUUsbUJBQW1CO2dCQUFBO2dCQUNsRixPQUFPUDtZQUNUO1lBRUEsT0FBTyxNQUFNakUsWUFBdUJVLE1BQU0sZUFBZUYsV0FBVzRELGdCQUFnQjtnQkFBQzttQkFBU0Q7YUFBVyxFQUFFO2dCQUFDRztZQUFTO1FBQ3ZILEVBQUUsT0FBTVAsT0FBTztZQUNickQsS0FBS21ELFFBQVEsQ0FBQztnQkFBQ0U7Z0JBQU94QixNQUFNeEMsZ0JBQWdCMEUsaUJBQWlCO1lBQUE7WUFDN0QsTUFBTVY7UUFDUixTQUFVO1lBQ1IsTUFBTTFELG1CQUFtQkssTUFBTSxDQUFDLG1CQUFtQixFQUFFd0QsU0FBUztZQUM5RCxNQUFNN0QsbUJBQW1CSyxNQUFNO1lBQy9CLE1BQU1MLG1CQUFtQkssTUFBTTtRQUNqQztJQUNGO0lBRUEsTUFBTWdFLFNBQVMsT0FDYnBDLE9BQ0FDLE9BQWUsT0FBTyxFQUN0QkMsaUJBQXVDLENBQUMsQ0FBQztRQUV6QyxJQUFJO1lBQ0YsTUFBTUMsaUJBQWlCUixjQUFjSyxPQUFPUjtZQUM1QyxNQUFNLEVBQUNZLE1BQU0sRUFBRUMsV0FBVyxFQUFFdUIsT0FBTyxFQUFFcEIsTUFBTSxFQUFFRSxPQUFPLEVBQUUyQixHQUFHLEVBQUMsR0FBR2xDO1lBRTdELElBQUd5QixXQUFXLENBQUN4QixVQUFVLENBQUNpQyxLQUFLO2dCQUM3QixNQUFNUCxpQkFBaUI7b0JBQ3JCOUIsT0FBTzt3QkFDTEMsTUFBTTt3QkFDTjhCLE9BQU87NEJBQ0xIOzRCQUNBLEdBQUl2QixjQUFjO2dDQUFDQSxhQUFhOUMsWUFBWThDLGFBQWE7NEJBQUksSUFBSSxDQUFDLENBQUM7NEJBQ25FLEdBQUlLLFVBQVU7Z0NBQUNBOzRCQUFPLElBQUksQ0FBQyxDQUFDO3dCQUM5QjtvQkFDRjtnQkFDRjtnQkFFQSxNQUFNc0IsWUFBWSxPQUFPQyxPQUF1QixDQUFDLENBQUM7b0JBQ2hELE1BQU1LLGNBQWMsQUFBQ0wsTUFBK0N4RCxRQUFRNkQsZUFBZSxDQUFDO29CQUM1RixNQUFNbEUsS0FBS21ELFFBQVEsQ0FBQzt3QkFBQ3ZCLE9BQU9zQzt3QkFBYXJDLE1BQU14QyxnQkFBZ0I4RSxtQkFBbUI7b0JBQUE7b0JBQ2xGLE9BQU9EO2dCQUNUO2dCQUVBLE9BQU8sTUFBTTVFLFlBQ1hVLE1BQ0EsZUFDQUYsV0FDQTRELGdCQUNBO29CQUFDO29CQUFXO29CQUFXO29CQUFlO29CQUFZO2lCQUFXLEVBQzdEO29CQUFDRTtnQkFBUztZQUVkO1lBRUEsTUFBTVEsY0FBYztnQkFDbEJwQztnQkFDQUMsYUFBYUEsY0FBYzlDLFlBQVk4QyxhQUFhLE9BQU9PO2dCQUMzREwsVUFBVTtnQkFDVkM7Z0JBQ0FhLFVBQVVwQjtnQkFDVixHQUFJMkIsVUFBVTtvQkFBQ0E7Z0JBQU8sSUFBSSxDQUFDLENBQUM7Z0JBQzVCLEdBQUlsQixVQUFVO29CQUFDQTtnQkFBTyxJQUFJLENBQUMsQ0FBQztZQUM5QjtZQUVBLE1BQU0sRUFBQ1YsT0FBT3NCLFFBQVEsRUFBQyxHQUFHLE1BQU0xRCxZQUFZUSxNQUFNb0U7WUFDbEQsTUFBTXBFLEtBQUttRCxRQUFRLENBQUM7Z0JBQUN2QixPQUFPc0I7Z0JBQVVyQixNQUFNeEMsZ0JBQWdCK0QsZ0JBQWdCO1lBQUE7WUFDNUUsT0FBT0Y7UUFDVCxFQUFFLE9BQU1HLE9BQU87WUFDYnJELEtBQUttRCxRQUFRLENBQUM7Z0JBQUNFO2dCQUFPeEIsTUFBTXhDLGdCQUFnQmlFLGNBQWM7WUFBQTtZQUMxRCxNQUFNRDtRQUNSLFNBQVU7WUFDUixNQUFNMUQsbUJBQW1CSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUwQyxPQUFPZCxPQUFPNEIsV0FBVyxLQUFLO1lBQ25GLE1BQU03RCxtQkFBbUJLLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTBDLE9BQU9kLE9BQU9RLFVBQVUsS0FBSztZQUNqRixNQUFNekMsbUJBQW1CSyxNQUFNLENBQUMsaUJBQWlCLEVBQUUwQyxPQUFPZCxPQUFPUSxVQUFVLEtBQUs7WUFDaEYsTUFBTXpDLG1CQUFtQkssTUFBTTtZQUMvQixNQUFNTCxtQkFBbUJLLE1BQU07UUFDakM7SUFDRjtJQUVBLE1BQU1xRSxTQUFTLE9BQ2JDLFlBQ0FsQyxRQUNBYSxXQUFtQixPQUFPLEVBQzFCbkIsaUJBQXVDLENBQUMsQ0FBQztRQUV6QyxJQUFJO1lBQ0YsTUFBTXlDLGNBQWMsTUFBTUMsUUFBUUMsR0FBRyxDQUNuQ0gsV0FBV0ksR0FBRyxDQUFDLE9BQU94QztnQkFDcEIsTUFBTSxFQUFDTCxNQUFNTSxRQUFRLEVBQUMsR0FBR0Q7Z0JBQ3pCLE9BQU9QLElBQUk7b0JBQ1RPO29CQUNBQztvQkFDQUM7b0JBQ0FDLE1BQU1ILEtBQUtHLElBQUk7Z0JBQ2pCLEdBQUdZLFVBQVVuQjtZQUNmO1lBR0YsTUFBTTlCLEtBQUttRCxRQUFRLENBQUM7Z0JBQUM5QyxRQUFRa0U7Z0JBQWExQyxNQUFNeEMsZ0JBQWdCc0YsbUJBQW1CO1lBQUE7WUFDbkYsT0FBT0o7UUFDVCxFQUFFLE9BQU1sQixPQUFPO1lBQ2JyRCxLQUFLbUQsUUFBUSxDQUFDO2dCQUFDRTtnQkFBT3hCLE1BQU14QyxnQkFBZ0J1RixpQkFBaUI7WUFBQTtZQUM3RCxNQUFNdkI7UUFDUixTQUFVO1lBQ1IsTUFBTTFELG1CQUFtQkssTUFBTSxDQUFDLGtCQUFrQixFQUFFb0MsUUFBUTtZQUM1RCxNQUFNekMsbUJBQW1CSyxNQUFNLENBQUMsaUJBQWlCLEVBQUVvQyxRQUFRO1lBQzNELE1BQU16QyxtQkFBbUJLLE1BQU07WUFDL0IsTUFBTUwsbUJBQW1CSyxNQUFNO1FBQ2pDO0lBQ0Y7SUFFQSxNQUFNNkUsY0FBYyxPQUFPekMsUUFBZ0JOLGlCQUF1QyxDQUFDLENBQUM7UUFDbEYsSUFBSTtZQUNGLE1BQU1nRCxlQUFlbEYsaUJBQXlCSSxNQUFNLENBQUMsa0JBQWtCLEVBQUVvQyxRQUFRLEVBQUU7Z0JBQUNBO1lBQU0sR0FBR047WUFFN0YsSUFBR2dELGlCQUFpQnRDLFdBQVc7Z0JBQzdCLE9BQU9zQztZQUNUO1lBRUEsTUFBTXBCLGlCQUFpQjtnQkFDckJ0QixRQUFRO29CQUNOUCxNQUFNO29CQUNOOEIsT0FBT3ZCO2dCQUNUO1lBQ0Y7WUFFQSxNQUFNd0IsWUFBWSxDQUFDQyxPQUF1QixDQUFDLENBQUM7Z0JBQzFDLE1BQU1rQixRQUFRbEIsTUFBTW1CLGNBQWM7Z0JBQ2xDLE9BQU9oRixLQUFLbUQsUUFBUSxDQUFDO29CQUFDZjtvQkFBUTJDO29CQUFPbEQsTUFBTXhDLGdCQUFnQjRGLGlCQUFpQjtnQkFBQTtZQUM5RTtZQUVBLE1BQU1DLFNBQVMsTUFBTTNGLFNBQWlCUyxNQUFNLGNBQWNGLFdBQVc0RCxnQkFBZ0I7Z0JBQUM7YUFBUSxFQUFFO2dCQUFDRTtZQUFTO1lBQzFHLE9BQU8sTUFBTS9ELGlCQUFpQkcsTUFBTSxDQUFDLGtCQUFrQixFQUFFb0MsUUFBUSxFQUFFO2dCQUFDQTtZQUFNLEdBQUc4QyxRQUFRcEQ7UUFDdkYsRUFBRSxPQUFNdUIsT0FBTztZQUNickQsS0FBS21ELFFBQVEsQ0FBQztnQkFBQ0U7Z0JBQU94QixNQUFNeEMsZ0JBQWdCOEYsZUFBZTtZQUFBO1lBQzNELE1BQU05QjtRQUNSO0lBQ0Y7SUFFQSxNQUFNK0IsZUFBZSxPQUNuQjVCLFNBQ0FDLGFBQXVCLEVBQUUsRUFDekIzQixpQkFBdUMsQ0FBQyxDQUFDO1FBRXpDLElBQUk7WUFDRixNQUFNZ0QsZUFBZWxGLGlCQUNuQkksTUFDQSxDQUFDLG1CQUFtQixFQUFFd0QsU0FBUyxFQUMvQjtnQkFBQ0E7Z0JBQVNDO1lBQVUsR0FDcEIzQjtZQUdGLElBQUdnRCxpQkFBaUJ0QyxXQUFXO2dCQUM3QixPQUFPc0M7WUFDVDtZQUVBLE1BQU1wQixpQkFBaUI7Z0JBQ3JCRixTQUFTO29CQUNQM0IsTUFBTTtvQkFDTjhCLE9BQU9IO2dCQUNUO1lBQ0Y7WUFFQSxNQUFNSSxZQUFZLE9BQU9DLE9BQXVCLENBQUMsQ0FBQztnQkFDaEQsTUFBTXdCLGFBQWEsQUFBQ3hCLE1BQWdEeEQsVUFBVSxDQUFDO2dCQUMvRSxNQUFNdUIsUUFBUXlELFlBQVlELGdCQUFnQixDQUFDO2dCQUMzQyxNQUFNcEYsS0FBS21ELFFBQVEsQ0FBQztvQkFDbEJ2QjtvQkFDQUMsTUFBTXhDLGdCQUFnQmlHLGdCQUFnQjtnQkFDeEM7Z0JBQ0EsT0FBTzFEO1lBQ1Q7WUFFQSxNQUFNc0QsU0FBUyxNQUFNM0YsU0FDbkJTLE1BQ0EsZ0JBQ0FGLFdBQ0E0RCxnQkFDQTtnQkFDRTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTttQkFDR0Q7YUFDSixFQUNEO2dCQUFDRztZQUFTO1lBR1osT0FBTyxNQUFNL0QsaUJBQWlCRyxNQUFNLENBQUMsbUJBQW1CLEVBQUV3RCxTQUFTLEVBQUU7Z0JBQUNBO2dCQUFTQztZQUFVLEdBQUd5QixRQUFRcEQ7UUFDdEcsRUFBRSxPQUFNdUIsT0FBTztZQUNickQsS0FBS21ELFFBQVEsQ0FBQztnQkFBQ0U7Z0JBQU94QixNQUFNeEMsZ0JBQWdCa0csY0FBYztZQUFBO1lBQzFELE1BQU1sQztRQUNSO0lBQ0Y7SUFFQSxNQUFNbUMsYUFBYSxPQUNqQnBELFFBQ0FhLFdBQW1CLE9BQU8sRUFDMUJ3QyxPQUFlLENBQUMsRUFDaEJDLEtBQWEsRUFBRSxFQUNmakMsYUFBdUIsRUFBRSxFQUN6QjNCLGlCQUF1QyxDQUFDLENBQUM7UUFFekMsSUFBSTtZQUNGLE1BQU1nRCxlQUFlbEYsaUJBQ25CSSxNQUNBLENBQUMsaUJBQWlCLEVBQUVvQyxRQUFRLEVBQzVCO2dCQUFDcUQ7Z0JBQU1oQztnQkFBWXJCO2dCQUFRYTtnQkFBVXlDO1lBQUUsR0FDdkM1RDtZQUdGLElBQUdnRCxjQUFjO2dCQUNmLE9BQU9BO1lBQ1Q7WUFFQSxNQUFNcEIsaUJBQWlCO2dCQUNyQitCLE1BQU07b0JBQ0o1RCxNQUFNO29CQUNOOEIsT0FBTzhCO2dCQUNUO2dCQUNBckQsUUFBUTtvQkFDTlAsTUFBTTtvQkFDTjhCLE9BQU92QjtnQkFDVDtnQkFDQWEsVUFBVTtvQkFDUnBCLE1BQU07b0JBQ044QixPQUFPVjtnQkFDVDtnQkFDQXlDLElBQUk7b0JBQ0Y3RCxNQUFNO29CQUNOOEIsT0FBTytCO2dCQUNUO1lBQ0Y7WUFFQSxNQUFNOUIsWUFBWSxPQUFPQyxPQUF1QixDQUFDLENBQUM7Z0JBQ2hELE1BQU13QixhQUFhLEFBQUN4QixNQUF3RHhELFVBQVUsQ0FBQztnQkFDdkYsTUFBTXNGLGVBQWVDLE1BQU1DLE9BQU8sQ0FBQ1IsWUFBWVMsc0JBQzNDVCxXQUFXUyxrQkFBa0IsSUFBSSxFQUFFLEdBQ25DLEVBQUU7Z0JBQ04sTUFBTTlGLEtBQUttRCxRQUFRLENBQUM7b0JBQ2xCZjtvQkFDQTJELE1BQU1KO29CQUNOOUQsTUFBTXhDLGdCQUFnQjJHLGdCQUFnQjtnQkFDeEM7Z0JBQ0EsT0FBT0w7WUFDVDtZQUVBLE1BQU1ULFNBQVMsTUFBTTNGLFNBQ25CUyxNQUNBLHNCQUNBRixXQUNBNEQsZ0JBQ0E7Z0JBQ0U7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7bUJBQ0dEO2FBQ0osRUFDRDtnQkFBQ0c7WUFBUztZQUdaLE9BQU8sTUFBTS9ELGlCQUFpQkcsTUFBTSxDQUFDLGlCQUFpQixFQUFFb0MsUUFBUSxFQUFFO2dCQUFDcUQ7Z0JBQU1oQztnQkFBWXJCO2dCQUFRYTtnQkFBVXlDO1lBQUUsR0FBR1IsUUFBUXBEO1FBQ3RILEVBQUUsT0FBTXVCLE9BQU87WUFDYnJELEtBQUttRCxRQUFRLENBQUM7Z0JBQUNFO2dCQUFPeEIsTUFBTXhDLGdCQUFnQjRHLGNBQWM7WUFBQTtZQUMxRCxNQUFNNUM7UUFDUjtJQUNGO0lBRUEsTUFBTTZDLGtCQUFrQixPQUN0QkMsV0FDQVYsT0FBZSxDQUFDLEVBQ2hCQyxLQUFhLEVBQUUsRUFDZmpDLGFBQXVCLEVBQUUsRUFDekIzQixpQkFBdUMsQ0FBQyxDQUFDO1FBRXpDLElBQUk7WUFDRixNQUFNZ0QsZUFBZWxGLGlCQUE4QkksTUFBTSx5QkFBeUI7Z0JBQUN5RjtnQkFBTWhDO2dCQUFZMEM7Z0JBQVdUO1lBQUUsR0FBRzVEO1lBRXJILElBQUdnRCxjQUFjO2dCQUNmLE9BQU9BO1lBQ1Q7WUFFQSxNQUFNcEIsaUJBQWlCO2dCQUNyQitCLE1BQU07b0JBQ0o1RCxNQUFNO29CQUNOOEIsT0FBTzhCO2dCQUNUO2dCQUNBVSxXQUFXO29CQUNUdEUsTUFBTTtvQkFDTjhCLE9BQU93QztnQkFDVDtnQkFDQVQsSUFBSTtvQkFDRjdELE1BQU07b0JBQ044QixPQUFPK0I7Z0JBQ1Q7WUFDRjtZQUVBLE1BQU05QixZQUFZLENBQUNDLE9BQXVCLENBQUMsQ0FBQztnQkFDMUMsTUFBTXdCLGFBQWEsQUFBQ3hCLE1BQXVEeEQsVUFBVSxDQUFDO2dCQUN0RixNQUFNK0Ysb0JBQW9CUixNQUFNQyxPQUFPLENBQUNSLFlBQVllLHFCQUNoRGYsV0FBV2UsaUJBQWlCLElBQUksRUFBRSxHQUNsQyxFQUFFO2dCQUNOLE9BQU9wRyxLQUFLbUQsUUFBUSxDQUFDO29CQUNuQjRDLE1BQU1LO29CQUNOdkUsTUFBTXhDLGdCQUFnQjJHLGdCQUFnQjtnQkFDeEM7WUFDRjtZQUVBLE1BQU1kLFNBQVMsTUFBTTNGLFNBQ25CUyxNQUNBLHFCQUNBRixXQUNBNEQsZ0JBQ0E7Z0JBQ0U7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7bUJBQ0dEO2FBQ0osRUFDRDtnQkFBQ0c7WUFBUztZQUdaLE9BQU8sTUFBTS9ELGlCQUFpQkcsTUFBTSx5QkFBeUI7Z0JBQUN5RjtnQkFBTWhDO2dCQUFZMEM7Z0JBQVdUO1lBQUUsR0FBR1IsUUFBUXBEO1FBQzFHLEVBQUUsT0FBTXVCLE9BQU87WUFDYnJELEtBQUttRCxRQUFRLENBQUM7Z0JBQUNFO2dCQUFPeEIsTUFBTXhDLGdCQUFnQjRHLGNBQWM7WUFBQTtZQUMxRCxNQUFNNUM7UUFDUjtJQUNGO0lBRUEsTUFBTWdELHlCQUF5QixPQUM3QkMsV0FDQUgsV0FDQVYsT0FBZSxDQUFDLEVBQ2hCQyxLQUFhLEVBQUUsRUFDZmpDLGFBQXVCLEVBQUUsRUFDekI4QyxVQUFrQixDQUFDLFFBQVEsRUFBRUQsVUFBVSxZQUFZLENBQUMsRUFDcER4RSxpQkFBdUMsQ0FBQyxDQUFDO1FBRXpDLElBQUk7WUFDRixNQUFNZ0QsZUFBZWxGLGlCQUNuQkksTUFDQSxnQ0FDQTtnQkFBQ3lGO2dCQUFNaEM7Z0JBQVk4QztnQkFBU0Q7Z0JBQVdIO2dCQUFXVDtZQUFFLEdBQ3BENUQ7WUFHRixJQUFHZ0QsaUJBQWlCdEMsV0FBVztnQkFDN0IsTUFBTXhDLEtBQUttRCxRQUFRLENBQUM7b0JBQUNmLFFBQVFtRTtvQkFBU1IsTUFBTWpCO29CQUFjd0I7b0JBQVdIO29CQUFXdEUsTUFBTXhDLGdCQUFnQjJHLGdCQUFnQjtnQkFBQTtnQkFDdEgsT0FBT2xCO1lBQ1Q7WUFFQSxNQUFNcEIsaUJBQWlCO2dCQUNyQitCLE1BQU07b0JBQ0o1RCxNQUFNO29CQUNOOEIsT0FBTzhCO2dCQUNUO2dCQUNBYSxXQUFXO29CQUNUekUsTUFBTTtvQkFDTjhCLE9BQU8yQztnQkFDVDtnQkFDQUgsV0FBVztvQkFDVHRFLE1BQU07b0JBQ044QixPQUFPd0M7Z0JBQ1Q7Z0JBQ0FULElBQUk7b0JBQ0Y3RCxNQUFNO29CQUNOOEIsT0FBTytCO2dCQUNUO1lBQ0Y7WUFFQSxNQUFNOUIsWUFBWSxPQUFPQyxPQUF1QixDQUFDLENBQUM7Z0JBQ2hELE1BQU13QixhQUFhLEFBQUN4QixNQUE4RHhELFVBQVUsQ0FBQztnQkFDN0YsTUFBTW1HLDJCQUEyQlosTUFBTUMsT0FBTyxDQUFDUixZQUFZbUIsNEJBQ3ZEbkIsV0FBV21CLHdCQUF3QixJQUFJLEVBQUUsR0FDekMsRUFBRTtnQkFFTixNQUFNeEcsS0FBS21ELFFBQVEsQ0FBQztvQkFDbEJmLFFBQVFtRTtvQkFDUlIsTUFBTVM7b0JBQ05GO29CQUNBSDtvQkFDQXRFLE1BQU14QyxnQkFBZ0IyRyxnQkFBZ0I7Z0JBQ3hDO2dCQUNBLE9BQU9RO1lBQ1Q7WUFFQSxNQUFNdEIsU0FBUyxNQUFNM0YsU0FDbkJTLE1BQ0EsNEJBQ0FGLFdBQ0E0RCxnQkFDQTtnQkFDRTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTttQkFDR0Q7YUFDSixFQUNEO2dCQUFDRztZQUFTO1lBR1osT0FBTyxNQUFNL0QsaUJBQ1hHLE1BQ0EsZ0NBQ0E7Z0JBQUN5RjtnQkFBTWhDO2dCQUFZOEM7Z0JBQVNEO2dCQUFXSDtnQkFBV1Q7WUFBRSxHQUNwRFIsUUFDQXBEO1FBRUosRUFBRSxPQUFNdUIsT0FBTztZQUNickQsS0FBS21ELFFBQVEsQ0FBQztnQkFBQ0U7Z0JBQU9qQixRQUFRbUU7Z0JBQVNEO2dCQUFXSDtnQkFBV3RFLE1BQU14QyxnQkFBZ0I0RyxjQUFjO1lBQUE7WUFDakcsTUFBTTVDO1FBQ1I7SUFDRjtJQUVBLE9BQU87UUFDTDFCO1FBQ0E4RSxRQUFRbEQ7UUFDUjZCO1FBQ0FwQjtRQUNBSztRQUNBUTtRQUNBVztRQUNBYTtRQUNBSDtRQUNBMUU7UUFDQUU7SUFDRjtBQUNGLEVBQUUifQ==
@@ -21,4 +21,3 @@ export * from './translationActions/translationActions.js';
21
21
  export * from './userActions/userActions.js';
22
22
  export * from './videoActions/videoActions.js';
23
23
  export * from './websocketActions/websocketActions.js';
24
- //# sourceMappingURL=index.d.ts.map
@@ -57,4 +57,3 @@ export interface LocationActions {
57
57
  * });
58
58
  */
59
59
  export declare const createLocationActions: (flux: FluxFramework, options?: LocationActionsOptions) => LocationActions;
60
- //# sourceMappingURL=locationActions.d.ts.map
@@ -35,4 +35,3 @@ export interface MessageActions {
35
35
  updateMessageAdapterOptions: (options: MessageAdapterOptions) => void;
36
36
  }
37
37
  export declare const createMessageActions: (flux: FluxFramework, options?: MessageActionsOptions) => MessageActions;
38
- //# sourceMappingURL=messageActions.d.ts.map
@@ -31,4 +31,3 @@ export interface PermissionActions {
31
31
  updatePermissionAdapterOptions: (options: PermissionAdapterOptions) => void;
32
32
  }
33
33
  export declare const createPermissionActions: (flux: FluxFramework, options?: PermissionActionsOptions) => PermissionActions;
34
- //# sourceMappingURL=permissionActions.d.ts.map
@@ -62,4 +62,3 @@ export declare const syncPersonaTagsToSession: (flux: FluxFramework, personaId?:
62
62
  * });
63
63
  */
64
64
  export declare const createPersonaActions: (flux: FluxFramework, options?: PersonaActionsOptions) => PersonaActions;
65
- //# sourceMappingURL=personaActions.d.ts.map
@@ -33,4 +33,3 @@ export interface PostActions {
33
33
  updatePostAdapterOptions: (options: PostAdapterOptions) => void;
34
34
  }
35
35
  export declare const createPostActions: (flux: FluxFramework, options?: PostActionsOptions) => PostActions;
36
- //# sourceMappingURL=postActions.d.ts.map
@@ -35,4 +35,3 @@ export interface ReactionActions {
35
35
  updateReactionAdapterOptions: (options: ReactionAdapterOptions) => void;
36
36
  }
37
37
  export declare const createReactionActions: (flux: FluxFramework, options?: ReactionActionsOptions) => ReactionActions;
38
- //# sourceMappingURL=reactionActions.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import type { FluxFramework } from '@nlabs/arkhamjs';
2
2
  import type { RestApiOptions, RestMethod } from '../../utils/api.js';
3
3
  export declare const REST_CONSTANTS: {
4
- readonly REQUEST_ERROR: "REST_REQUEST_ERROR";
5
- readonly REQUEST_SUCCESS: "REST_REQUEST_SUCCESS";
4
+ readonly REQUEST_ERROR: 'REST_REQUEST_ERROR';
5
+ readonly REQUEST_SUCCESS: 'REST_REQUEST_SUCCESS';
6
6
  };
7
7
  export interface RestActionsOptions {
8
8
  readonly authenticate?: boolean;
@@ -16,4 +16,3 @@ export interface RestActions {
16
16
  request: <T = unknown>(endpoint: string, method?: RestMethod, params?: unknown, requestOptions?: RestApiOptions) => Promise<T>;
17
17
  }
18
18
  export declare const createRestActions: (flux: FluxFramework, options?: RestActionsOptions) => RestActions;
19
- //# sourceMappingURL=restActions.d.ts.map
@@ -35,4 +35,3 @@ export interface SSEActions {
35
35
  readonly updateSSEOptions: (options: SSEActionsOptions) => void;
36
36
  }
37
37
  export declare const createSSEActions: (flux: FluxFramework, options?: SSEActionsOptions) => SSEActions;
38
- //# sourceMappingURL=sseActions.d.ts.map
@@ -145,4 +145,4 @@
145
145
  };
146
146
  };
147
147
 
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9zc2VBY3Rpb25zL3NzZUFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFRXZlbnQge1xuICByZWFkb25seSBkYXRhOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV2ZW50Pzogc3RyaW5nO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0cnk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQ29ubmVjdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgbWF4UmV0cmllcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmV0cnlJbnRlcnZhbD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQWN0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBvbkNsb3NlPzogKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbkVycm9yPzogKGVycm9yOiBFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25NZXNzYWdlPzogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25PcGVuPzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgc3NlT3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTRUFjdGlvbnMge1xuICByZWFkb25seSBjb25uZWN0OiAob3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBkaXNjb25uZWN0OiAoKSA9PiB2b2lkO1xuICByZWFkb25seSByZWNvbm5lY3Q6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IGlzQ29ubmVjdGVkOiAoKSA9PiBib29sZWFuO1xuICByZWFkb25seSBzZW5kTWVzc2FnZTogKGRhdGE6IHN0cmluZywgZXZlbnRUeXBlPzogc3RyaW5nKSA9PiB2b2lkO1xuICByZWFkb25seSBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnRUeXBlOiBzdHJpbmcsIGhhbmRsZXI6IChldmVudDogU1NFRXZlbnQpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgdXBkYXRlU1NFT3B0aW9uczogKG9wdGlvbnM6IFNTRUFjdGlvbnNPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU1NFQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFNTRUFjdGlvbnNPcHRpb25zXG4pOiBTU0VBY3Rpb25zID0+IHtcbiAgbGV0IGV2ZW50U291cmNlOiBFdmVudFNvdXJjZSB8IG51bGwgPSBudWxsO1xuICBsZXQgcmV0cnlDb3VudCA9IDA7XG4gIGxldCByZXRyeVRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG4gIGxldCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIFNldDwoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkPj4oKTtcblxuICBjb25zdCBkZWZhdWx0T3B0aW9uczogU1NFQ29ubmVjdGlvbk9wdGlvbnMgPSB7XG4gICAgdXJsOiAnJyxcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIHJldHJ5SW50ZXJ2YWw6IDUwMDAsXG4gICAgbWF4UmV0cmllczogNSxcbiAgICB0aW1lb3V0OiAzMDAwMCxcbiAgICAuLi5vcHRpb25zPy5zc2VPcHRpb25zXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgY29uc3Qgc3NlRXZlbnQ6IFNTRUV2ZW50ID0ge1xuICAgICAgaWQ6IGV2ZW50Lmxhc3RFdmVudElkLFxuICAgICAgZXZlbnQ6IGV2ZW50LnR5cGUsXG4gICAgICBkYXRhOiBldmVudC5kYXRhXG4gICAgfTtcblxuICAgIC8vIENhbGwgZ2xvYmFsIG1lc3NhZ2UgaGFuZGxlclxuICAgIG9wdGlvbnM/Lm9uTWVzc2FnZT8uKHNzZUV2ZW50KTtcblxuICAgIC8vIENhbGwgc3BlY2lmaWMgZXZlbnQgaGFuZGxlcnNcbiAgICBjb25zdCBoYW5kbGVycyA9IGV2ZW50SGFuZGxlcnMuZ2V0KGV2ZW50LnR5cGUpO1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IGhhbmRsZXIoc3NlRXZlbnQpKTtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBmbHV4IHN0b3JlXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX01FU1NBR0VfUkVDRUlWRUQnLFxuICAgICAgZXZlbnQ6IHNzZUV2ZW50XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXJyb3IgPSAoZXJyb3I6IEV2ZW50KSA9PiB7XG4gICAgb3B0aW9ucz8ub25FcnJvcj8uKGVycm9yKTtcblxuICAgIGZsdXguZGlzcGF0Y2goe1xuICAgICAgdHlwZTogJ1NTRV9DT05ORUNUSU9OX0VSUk9SJyxcbiAgICAgIGVycm9yXG4gICAgfSk7XG5cbiAgICAvLyBBdXRvLXJlY29ubmVjdCBpZiBub3QgbWFudWFsbHkgZGlzY29ubmVjdGVkXG4gICAgaWYgKGV2ZW50U291cmNlICYmIHJldHJ5Q291bnQgPCAoZGVmYXVsdE9wdGlvbnMubWF4UmV0cmllcyB8fCA1KSkge1xuICAgICAgcmV0cnlDb3VudCsrO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiByZWNvbm5lY3QoKSwgZGVmYXVsdE9wdGlvbnMucmV0cnlJbnRlcnZhbCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW4gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgcmV0cnlDb3VudCA9IDA7XG4gICAgb3B0aW9ucz8ub25PcGVuPy4oZXZlbnQpO1xuXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fT1BFTicsXG4gICAgICBldmVudFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIGNvbnN0IGhhbmRsZUNsb3NlID0gKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB7XG4gIC8vICAgb3B0aW9ucz8ub25DbG9zZT8uKGV2ZW50KTtcblxuICAvLyAgIGZsdXguZGlzcGF0Y2goe1xuICAvLyAgICAgdHlwZTogJ1NTRV9DT05ORUNUSU9OX0NMT1NFRCcsXG4gIC8vICAgICBldmVudFxuICAvLyAgIH0pO1xuICAvLyB9O1xuXG4gIGNvbnN0IGNvbm5lY3QgPSBhc3luYyAoY29ubmVjdGlvbk9wdGlvbnM/OiBTU0VDb25uZWN0aW9uT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5jb25uZWN0aW9uT3B0aW9ucyB9O1xuXG4gICAgaWYgKCFvcHRzLnVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTU0UgVVJMIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgZGlzY29ubmVjdCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGV2ZW50U291cmNlID0gbmV3IEV2ZW50U291cmNlKG9wdHMudXJsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0cy53aXRoQ3JlZGVudGlhbHNcbiAgICAgIH0pO1xuXG4gICAgICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlO1xuICAgICAgZXZlbnRTb3VyY2Uub25lcnJvciA9IGhhbmRsZUVycm9yO1xuICAgICAgZXZlbnRTb3VyY2Uub25vcGVuID0gaGFuZGxlT3BlbjtcblxuICAgICAgLy8gU2V0IHRpbWVvdXRcbiAgICAgIGlmIChvcHRzLnRpbWVvdXQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50U291cmNlICYmIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgPT09IEV2ZW50U291cmNlLkNPTk5FQ1RJTkcpIHtcbiAgICAgICAgICAgIGV2ZW50U291cmNlLmNsb3NlKCk7XG4gICAgICAgICAgICBoYW5kbGVFcnJvcihuZXcgRXZlbnQoJ3RpbWVvdXQnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBvcHRzLnRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yIGFzIEV2ZW50KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkaXNjb25uZWN0ID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChldmVudFNvdXJjZSkge1xuICAgICAgZXZlbnRTb3VyY2UuY2xvc2UoKTtcbiAgICAgIGV2ZW50U291cmNlID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmV0cnlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQocmV0cnlUaW1lb3V0KTtcbiAgICAgIHJldHJ5VGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlY29ubmVjdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBkaXNjb25uZWN0KCk7XG4gICAgYXdhaXQgY29ubmVjdCgpO1xuICB9O1xuXG4gIGNvbnN0IGlzQ29ubmVjdGVkID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBldmVudFNvdXJjZT8ucmVhZHlTdGF0ZSA9PT0gRXZlbnRTb3VyY2UuT1BFTjtcbiAgfTtcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IChkYXRhOiBzdHJpbmcsIGV2ZW50VHlwZT86IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGlmICghaXNDb25uZWN0ZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTU0UgY29ubmVjdGlvbiBub3QgZXN0YWJsaXNoZWQnKTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBTU0UgaXMgb25lLXdheSwgYnV0IHdlIGNhbiBkaXNwYXRjaCB0byBmbHV4IGZvciBsb2dnaW5nXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX01FU1NBR0VfU0VOVCcsXG4gICAgICBkYXRhLFxuICAgICAgZXZlbnRUeXBlXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYWRkRXZlbnRMaXN0ZW5lciA9IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIGlmICghZXZlbnRIYW5kbGVycy5oYXMoZXZlbnRUeXBlKSkge1xuICAgICAgZXZlbnRIYW5kbGVycy5zZXQoZXZlbnRUeXBlLCBuZXcgU2V0KCkpO1xuICAgIH1cbiAgICBldmVudEhhbmRsZXJzLmdldChldmVudFR5cGUpIS5hZGQoaGFuZGxlcik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVycy5nZXQoZXZlbnRUeXBlKTtcbiAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgIGhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlU1NFT3B0aW9ucyA9IChuZXdPcHRpb25zOiBTU0VBY3Rpb25zT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIG5ld09wdGlvbnMuc3NlT3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0LFxuICAgIGRpc2Nvbm5lY3QsXG4gICAgcmVjb25uZWN0LFxuICAgIGlzQ29ubmVjdGVkLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGFkZEV2ZW50TGlzdGVuZXIsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcixcbiAgICB1cGRhdGVTU0VPcHRpb25zXG4gIH07XG59OyJdLCJuYW1lcyI6WyJjcmVhdGVTU0VBY3Rpb25zIiwiZmx1eCIsIm9wdGlvbnMiLCJldmVudFNvdXJjZSIsInJldHJ5Q291bnQiLCJyZXRyeVRpbWVvdXQiLCJldmVudEhhbmRsZXJzIiwiTWFwIiwiZGVmYXVsdE9wdGlvbnMiLCJ1cmwiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXRyeUludGVydmFsIiwibWF4UmV0cmllcyIsInRpbWVvdXQiLCJzc2VPcHRpb25zIiwiaGFuZGxlTWVzc2FnZSIsImV2ZW50Iiwic3NlRXZlbnQiLCJpZCIsImxhc3RFdmVudElkIiwidHlwZSIsImRhdGEiLCJvbk1lc3NhZ2UiLCJoYW5kbGVycyIsImdldCIsImZvckVhY2giLCJoYW5kbGVyIiwiZGlzcGF0Y2giLCJoYW5kbGVFcnJvciIsImVycm9yIiwib25FcnJvciIsInNldFRpbWVvdXQiLCJyZWNvbm5lY3QiLCJoYW5kbGVPcGVuIiwib25PcGVuIiwiY29ubmVjdCIsImNvbm5lY3Rpb25PcHRpb25zIiwib3B0cyIsIkVycm9yIiwiZGlzY29ubmVjdCIsIkV2ZW50U291cmNlIiwib25tZXNzYWdlIiwib25lcnJvciIsIm9ub3BlbiIsInJlYWR5U3RhdGUiLCJDT05ORUNUSU5HIiwiY2xvc2UiLCJFdmVudCIsImNsZWFyVGltZW91dCIsImlzQ29ubmVjdGVkIiwiT1BFTiIsInNlbmRNZXNzYWdlIiwiZXZlbnRUeXBlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhcyIsInNldCIsIlNldCIsImFkZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZWxldGUiLCJ1cGRhdGVTU0VPcHRpb25zIiwibmV3T3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBdUNELE9BQU8sTUFBTUEsbUJBQW1CLENBQzlCQyxNQUNBQztJQUVBLElBQUlDLGNBQWtDO0lBQ3RDLElBQUlDLGFBQWE7SUFDakIsSUFBSUMsZUFBc0M7SUFDMUMsSUFBSUMsZ0JBQWdCLElBQUlDO0lBRXhCLE1BQU1DLGlCQUF1QztRQUMzQ0MsS0FBSztRQUNMQyxpQkFBaUI7UUFDakJDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxTQUFTO1FBQ1QsR0FBR1gsU0FBU1ksVUFBVTtJQUN4QjtJQUVBLE1BQU1DLGdCQUFnQixDQUFDQztRQUNyQixNQUFNQyxXQUFxQjtZQUN6QkMsSUFBSUYsTUFBTUcsV0FBVztZQUNyQkgsT0FBT0EsTUFBTUksSUFBSTtZQUNqQkMsTUFBTUwsTUFBTUssSUFBSTtRQUNsQjtRQUVBLDhCQUE4QjtRQUM5Qm5CLFNBQVNvQixZQUFZTDtRQUVyQiwrQkFBK0I7UUFDL0IsTUFBTU0sV0FBV2pCLGNBQWNrQixHQUFHLENBQUNSLE1BQU1JLElBQUk7UUFDN0MsSUFBSUcsVUFBVTtZQUNaQSxTQUFTRSxPQUFPLENBQUNDLENBQUFBLFVBQVdBLFFBQVFUO1FBQ3RDO1FBRUEseUJBQXlCO1FBQ3pCaEIsS0FBSzBCLFFBQVEsQ0FBQztZQUNaUCxNQUFNO1lBQ05KLE9BQU9DO1FBQ1Q7SUFDRjtJQUVBLE1BQU1XLGNBQWMsQ0FBQ0M7UUFDbkIzQixTQUFTNEIs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
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9zc2VBY3Rpb25zL3NzZUFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFRXZlbnQge1xuICByZWFkb25seSBkYXRhOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV2ZW50Pzogc3RyaW5nO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0cnk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQ29ubmVjdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgbWF4UmV0cmllcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmV0cnlJbnRlcnZhbD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQWN0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBvbkNsb3NlPzogKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbkVycm9yPzogKGVycm9yOiBFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25NZXNzYWdlPzogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25PcGVuPzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgc3NlT3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTRUFjdGlvbnMge1xuICByZWFkb25seSBjb25uZWN0OiAob3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBkaXNjb25uZWN0OiAoKSA9PiB2b2lkO1xuICByZWFkb25seSByZWNvbm5lY3Q6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IGlzQ29ubmVjdGVkOiAoKSA9PiBib29sZWFuO1xuICByZWFkb25seSBzZW5kTWVzc2FnZTogKGRhdGE6IHN0cmluZywgZXZlbnRUeXBlPzogc3RyaW5nKSA9PiB2b2lkO1xuICByZWFkb25seSBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnRUeXBlOiBzdHJpbmcsIGhhbmRsZXI6IChldmVudDogU1NFRXZlbnQpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgdXBkYXRlU1NFT3B0aW9uczogKG9wdGlvbnM6IFNTRUFjdGlvbnNPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU1NFQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFNTRUFjdGlvbnNPcHRpb25zXG4pOiBTU0VBY3Rpb25zID0+IHtcbiAgbGV0IGV2ZW50U291cmNlOiBFdmVudFNvdXJjZSB8IG51bGwgPSBudWxsO1xuICBsZXQgcmV0cnlDb3VudCA9IDA7XG4gIGxldCByZXRyeVRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIGxldCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIFNldDwoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkPj4oKTtcblxuICBjb25zdCBkZWZhdWx0T3B0aW9uczogU1NFQ29ubmVjdGlvbk9wdGlvbnMgPSB7XG4gICAgdXJsOiAnJyxcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIHJldHJ5SW50ZXJ2YWw6IDUwMDAsXG4gICAgbWF4UmV0cmllczogNSxcbiAgICB0aW1lb3V0OiAzMDAwMCxcbiAgICAuLi5vcHRpb25zPy5zc2VPcHRpb25zXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgY29uc3Qgc3NlRXZlbnQ6IFNTRUV2ZW50ID0ge1xuICAgICAgaWQ6IGV2ZW50Lmxhc3RFdmVudElkLFxuICAgICAgZXZlbnQ6IGV2ZW50LnR5cGUsXG4gICAgICBkYXRhOiBldmVudC5kYXRhXG4gICAgfTtcblxuICAgIC8vIENhbGwgZ2xvYmFsIG1lc3NhZ2UgaGFuZGxlclxuICAgIG9wdGlvbnM/Lm9uTWVzc2FnZT8uKHNzZUV2ZW50KTtcblxuICAgIC8vIENhbGwgc3BlY2lmaWMgZXZlbnQgaGFuZGxlcnNcbiAgICBjb25zdCBoYW5kbGVycyA9IGV2ZW50SGFuZGxlcnMuZ2V0KGV2ZW50LnR5cGUpO1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IGhhbmRsZXIoc3NlRXZlbnQpKTtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBmbHV4IHN0b3JlXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX01FU1NBR0VfUkVDRUlWRUQnLFxuICAgICAgZXZlbnQ6IHNzZUV2ZW50XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXJyb3IgPSAoZXJyb3I6IEV2ZW50KSA9PiB7XG4gICAgb3B0aW9ucz8ub25FcnJvcj8uKGVycm9yKTtcblxuICAgIGZsdXguZGlzcGF0Y2goe1xuICAgICAgdHlwZTogJ1NTRV9DT05ORUNUSU9OX0VSUk9SJyxcbiAgICAgIGVycm9yXG4gICAgfSk7XG5cbiAgICAvLyBBdXRvLXJlY29ubmVjdCBpZiBub3QgbWFudWFsbHkgZGlzY29ubmVjdGVkXG4gICAgaWYgKGV2ZW50U291cmNlICYmIHJldHJ5Q291bnQgPCAoZGVmYXVsdE9wdGlvbnMubWF4UmV0cmllcyB8fCA1KSkge1xuICAgICAgcmV0cnlDb3VudCsrO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiByZWNvbm5lY3QoKSwgZGVmYXVsdE9wdGlvbnMucmV0cnlJbnRlcnZhbCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW4gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgcmV0cnlDb3VudCA9IDA7XG4gICAgb3B0aW9ucz8ub25PcGVuPy4oZXZlbnQpO1xuXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fT1BFTicsXG4gICAgICBldmVudFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIGNvbnN0IGhhbmRsZUNsb3NlID0gKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB7XG4gIC8vICAgb3B0aW9ucz8ub25DbG9zZT8uKGV2ZW50KTtcblxuICAvLyAgIGZsdXguZGlzcGF0Y2goe1xuICAvLyAgICAgdHlwZTogJ1NTRV9DT05ORUNUSU9OX0NMT1NFRCcsXG4gIC8vICAgICBldmVudFxuICAvLyAgIH0pO1xuICAvLyB9O1xuXG4gIGNvbnN0IGNvbm5lY3QgPSBhc3luYyAoY29ubmVjdGlvbk9wdGlvbnM/OiBTU0VDb25uZWN0aW9uT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5jb25uZWN0aW9uT3B0aW9ucyB9O1xuXG4gICAgaWYgKCFvcHRzLnVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTU0UgVVJMIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgZGlzY29ubmVjdCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGV2ZW50U291cmNlID0gbmV3IEV2ZW50U291cmNlKG9wdHMudXJsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0cy53aXRoQ3JlZGVudGlhbHNcbiAgICAgIH0pO1xuXG4gICAgICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlO1xuICAgICAgZXZlbnRTb3VyY2Uub25lcnJvciA9IGhhbmRsZUVycm9yO1xuICAgICAgZXZlbnRTb3VyY2Uub25vcGVuID0gaGFuZGxlT3BlbjtcblxuICAgICAgLy8gU2V0IHRpbWVvdXRcbiAgICAgIGlmIChvcHRzLnRpbWVvdXQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50U291cmNlICYmIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgPT09IEV2ZW50U291cmNlLkNPTk5FQ1RJTkcpIHtcbiAgICAgICAgICAgIGV2ZW50U291cmNlLmNsb3NlKCk7XG4gICAgICAgICAgICBoYW5kbGVFcnJvcihuZXcgRXZlbnQoJ3RpbWVvdXQnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBvcHRzLnRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yIGFzIEV2ZW50KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkaXNjb25uZWN0ID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChldmVudFNvdXJjZSkge1xuICAgICAgZXZlbnRTb3VyY2UuY2xvc2UoKTtcbiAgICAgIGV2ZW50U291cmNlID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmV0cnlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQocmV0cnlUaW1lb3V0KTtcbiAgICAgIHJldHJ5VGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlY29ubmVjdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBkaXNjb25uZWN0KCk7XG4gICAgYXdhaXQgY29ubmVjdCgpO1xuICB9O1xuXG4gIGNvbnN0IGlzQ29ubmVjdGVkID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBldmVudFNvdXJjZT8ucmVhZHlTdGF0ZSA9PT0gRXZlbnRTb3VyY2UuT1BFTjtcbiAgfTtcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IChkYXRhOiBzdHJpbmcsIGV2ZW50VHlwZT86IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGlmICghaXNDb25uZWN0ZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTU0UgY29ubmVjdGlvbiBub3QgZXN0YWJsaXNoZWQnKTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBTU0UgaXMgb25lLXdheSwgYnV0IHdlIGNhbiBkaXNwYXRjaCB0byBmbHV4IGZvciBsb2dnaW5nXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX01FU1NBR0VfU0VOVCcsXG4gICAgICBkYXRhLFxuICAgICAgZXZlbnRUeXBlXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYWRkRXZlbnRMaXN0ZW5lciA9IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIGlmICghZXZlbnRIYW5kbGVycy5oYXMoZXZlbnRUeXBlKSkge1xuICAgICAgZXZlbnRIYW5kbGVycy5zZXQoZXZlbnRUeXBlLCBuZXcgU2V0KCkpO1xuICAgIH1cbiAgICBldmVudEhhbmRsZXJzLmdldChldmVudFR5cGUpIS5hZGQoaGFuZGxlcik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVycy5nZXQoZXZlbnRUeXBlKTtcbiAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgIGhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlU1NFT3B0aW9ucyA9IChuZXdPcHRpb25zOiBTU0VBY3Rpb25zT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIG5ld09wdGlvbnMuc3NlT3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0LFxuICAgIGRpc2Nvbm5lY3QsXG4gICAgcmVjb25uZWN0LFxuICAgIGlzQ29ubmVjdGVkLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGFkZEV2ZW50TGlzdGVuZXIsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcixcbiAgICB1cGRhdGVTU0VPcHRpb25zXG4gIH07XG59O1xuIl0sIm5hbWVzIjpbImNyZWF0ZVNTRUFjdGlvbnMiLCJmbHV4Iiwib3B0aW9ucyIsImV2ZW50U291cmNlIiwicmV0cnlDb3VudCIsInJldHJ5VGltZW91dCIsImV2ZW50SGFuZGxlcnMiLCJNYXAiLCJkZWZhdWx0T3B0aW9ucyIsInVybCIsIndpdGhDcmVkZW50aWFscyIsInJldHJ5SW50ZXJ2YWwiLCJtYXhSZXRyaWVzIiwidGltZW91dCIsInNzZU9wdGlvbnMiLCJoYW5kbGVNZXNzYWdlIiwiZXZlbnQiLCJzc2VFdmVudCIsImlkIiwibGFzdEV2ZW50SWQiLCJ0eXBlIiwiZGF0YSIsIm9uTWVzc2FnZSIsImhhbmRsZXJzIiwiZ2V0IiwiZm9yRWFjaCIsImhhbmRsZXIiLCJkaXNwYXRjaCIsImhhbmRsZUVycm9yIiwiZXJyb3IiLCJvbkVycm9yIiwic2V0VGltZW91dCIsInJlY29ubmVjdCIsImhhbmRsZU9wZW4iLCJvbk9wZW4iLCJjb25uZWN0IiwiY29ubmVjdGlvbk9wdGlvbnMiLCJvcHRzIiwiRXJyb3IiLCJkaXNjb25uZWN0IiwiRXZlbnRTb3VyY2UiLCJvbm1lc3NhZ2UiLCJvbmVycm9yIiwib25vcGVuIiwicmVhZHlTdGF0ZSIsIkNPTk5FQ1RJTkciLCJjbG9zZSIsIkV2ZW50IiwiY2xlYXJUaW1lb3V0IiwiaXNDb25uZWN0ZWQiLCJPUEVOIiwic2VuZE1lc3NhZ2UiLCJldmVudFR5cGUiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFzIiwic2V0IiwiU2V0IiwiYWRkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRlbGV0ZSIsInVwZGF0ZVNTRU9wdGlvbnMiLCJuZXdPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0F1Q0QsT0FBTyxNQUFNQSxtQkFBbUIsQ0FDOUJDLE1BQ0FDO0lBRUEsSUFBSUMsY0FBa0M7SUFDdEMsSUFBSUMsYUFBYTtJQUNqQixJQUFJQyxlQUFxRDtJQUN6RCxJQUFJQyxnQkFBZ0IsSUFBSUM7SUFFeEIsTUFBTUMsaUJBQXVDO1FBQzNDQyxLQUFLO1FBQ0xDLGlCQUFpQjtRQUNqQkMsZUFBZTtRQUNmQyxZQUFZO1FBQ1pDLFNBQVM7UUFDVCxHQUFHWCxTQUFTWSxVQUFVO0lBQ3hCO0lBRUEsTUFBTUMsZ0JBQWdCLENBQUNDO1FBQ3JCLE1BQU1DLFdBQXFCO1lBQ3pCQyxJQUFJRixNQUFNRyxXQUFXO1lBQ3JCSCxPQUFPQSxNQUFNSSxJQUFJO1lBQ2pCQyxNQUFNTCxNQUFNSyxJQUFJO1FBQ2xCO1FBRUEsOEJBQThCO1FBQzlCbkIsU0FBU29CLFlBQVlMO1FBRXJCLCtCQUErQjtRQUMvQixNQUFNTSxXQUFXakIsY0FBY2tCLEdBQUcsQ0FBQ1IsTUFBTUksSUFBSTtRQUM3QyxJQUFJRyxVQUFVO1lBQ1pBLFNBQVNFLE9BQU8sQ0FBQ0MsQ0FBQUEsVUFBV0EsUUFBUVQ7UUFDdEM7UUFFQSx5QkFBeUI7UUFDekJoQixLQUFLMEIsUUFBUSxDQUFDO1lBQ1pQLE1BQU07WUFDTkosT0FBT0M7UUFDVDtJQUNGO0lBRUEsTUFBTVcsY0FBYyxDQUFD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
@@ -21,4 +21,3 @@ export interface SubscriptionActions {
21
21
  getSubscriptionByItem: (itemId: string, itemType?: string, subscriptionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<PaymentSubscriptionType>;
22
22
  }
23
23
  export declare const createSubscriptionActions: (flux: FluxFramework) => SubscriptionActions;
24
- //# sourceMappingURL=subscriptionActions.d.ts.map
@@ -34,4 +34,3 @@ export interface TagActions {
34
34
  updateTagAdapterOptions: (options: TagAdapterOptions) => void;
35
35
  }
36
36
  export declare const createTagActions: (flux: FluxFramework, options?: TagActionsOptions) => TagActions;
37
- //# sourceMappingURL=tagActions.d.ts.map
@@ -344,4 +344,4 @@ export const createTagActions = (flux, options)=>{
344
344
  };
345
345
  };
346
346
 
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy90YWdBY3Rpb25zL3RhZ0FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dmFsaWRhdGVUYWdJbnB1dH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGFnQWRhcHRlci90YWdBZGFwdGVyLmpzJztcbmltcG9ydCB7VEFHX0NPTlNUQU5UU30gZnJvbSAnLi4vLi4vc3RvcmVzL3RhZ1N0b3JlLmpzJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHtjbGVhckNhY2hlZFJlcXVlc3QsIGdldENhY2hlZFJlcXVlc3QsIHNldENhY2hlZFJlcXVlc3R9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4QWN0aW9uLCBGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge1RhZ1R5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uUmVxdWVzdE9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmNvbnN0IERBVEFfVFlQRSA9ICd0YWdzJztcbmNvbnN0IERFRkFVTFRfVEFHX1BST1BTID0gWydhZGRlZCcsICdjYXRlZ29yeScsICdkZXNjcmlwdGlvbicsICdtb2RpZmllZCcsICduYW1lJywgJ3RhZ0lkJ107XG5jb25zdCBERUxFVEVfVEFHX1BST1BTID0gREVGQVVMVF9UQUdfUFJPUFMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQgIT09ICd0YWdJZCcpO1xuXG5jb25zdCBzYW5pdGl6ZVRhZ1Byb3BzID0gKHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLCBiYXNlUHJvcHM6IHN0cmluZ1tdID0gREVGQVVMVF9UQUdfUFJPUFMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGZpZWxkcyA9IFsuLi5iYXNlUHJvcHMsIC4uLnRhZ1Byb3BzXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChyZXN1bHQ6IHN0cmluZ1tdLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dEZpZWxkID0gU3RyaW5nKGZpZWxkIHx8ICcnKS50cmltKCk7XG5cbiAgICBpZighbmV4dEZpZWxkIHx8IHNlZW4uaGFzKG5leHRGaWVsZCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgc2Vlbi5hZGQobmV4dEZpZWxkKTtcbiAgICByZXN1bHQucHVzaChuZXh0RmllbGQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtdKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9uc09wdGlvbnMge1xuICB0YWdBZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgdGFnQWRhcHRlck9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgVGFnQXBpUmVzdWx0c1R5cGUgPSB7XG4gIHRhZ3M6IHtcbiAgICBhZGRUYWc6IFRhZ1R5cGU7XG4gICAgYWRkVGFnVG9JdGVtOiBUYWdUeXBlO1xuICAgIGRlbGV0ZVRhZzogVGFnVHlwZTtcbiAgICBkZWxldGVUYWdGcm9tSXRlbTogYm9vbGVhbjtcbiAgICBnZXRUYWdzQnlJdGVtOiBUYWdUeXBlW107XG4gICAgZ2V0VGFnczogVGFnVHlwZVtdO1xuICAgIHVwZGF0ZVRhZzogVGFnVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9ucyB7XG4gIGFkZFRhZzogKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgYWRkVGFnVG9JdGVtOiAodGFnSWQ6IHN0cmluZywgaXRlbURvY0lkPzogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWc6ICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWdGcm9tSXRlbTogKHRhZ0lkOiBzdHJpbmcsIGl0ZW1Eb2NJZD86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZ2V0VGFnc0J5SXRlbTogKGl0ZW1Eb2NJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGVbXT47XG4gIGdldFRhZ3M6IChcbiAgICBzZWFyY2hRdWVyeT86IHN0cmluZyxcbiAgICB0YWdQcm9wcz86IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9uc1xuICApID0+IFByb21pc2U8VGFnVHlwZVtdPjtcbiAgdXBkYXRlVGFnOiAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICB1cGRhdGVUYWdBZGFwdGVyOiAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuY29uc3QgZGVmYXVsdFRhZ1ZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZVRhZ0lucHV0KGlucHV0KTtcblxuY29uc3QgY3JlYXRlVGFnVmFsaWRhdG9yID0gKFxuICBjdXN0b21BZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSxcbiAgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7Li4ub3B0aW9ucywgLi4udmFsaWRhdG9yT3B0aW9uc307XG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0VGFnVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgaWYobWVyZ2VkT3B0aW9ucz8uY3VzdG9tVmFsaWRhdGlvbikge1xuICAgIHZhbGlkYXRlZCA9IG1lcmdlZE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbih2YWxpZGF0ZWQpIGFzIFRhZ1R5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRhZ0FjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBUYWdBY3Rpb25zT3B0aW9uc1xuKTogVGFnQWN0aW9ucyA9PiB7XG4gIGxldCB0YWdBZGFwdGVyT3B0aW9ucyA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tVGFnQWRhcHRlciA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXI7XG4gIGxldCB2YWxpZGF0ZVRhZyA9IGNyZWF0ZVRhZ1ZhbGlkYXRvcihjdXN0b21UYWdBZGFwdGVyLCB0YWdBZGFwdGVyT3B0aW9ucyk7XG5cbiAgY29uc3QgdXBkYXRlVGFnQWRhcHRlciA9IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tVGFnQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdmFsaWRhdGVUYWcgPSBjcmVhdGVUYWdWYWxpZGF0b3IoY3VzdG9tVGFnQWRhcHRlciwgdGFnQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVRhZ0FkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IFRhZ0FkYXB0ZXJPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgdGFnQWRhcHRlck9wdGlvbnMgPSB7Li4udGFnQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlVGFnID0gY3JlYXRlVGFnVmFsaWRhdG9yKGN1c3RvbVRhZ0FkYXB0ZXIsIHRhZ0FkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICBjb25zdCBhZGRUYWcgPSBhc3luYyAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWc6IHtcbiAgICAgICAgICB0eXBlOiAnVGFnSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVUYWcodGFnLCB0YWdBZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IHRhZyA9IGRhdGE/LnRhZ3M/LmFkZFRhZyB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe3RhZywgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXdhaXQgYXBwTXV0YXRpb248VGFnVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRUYWcnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICByZXF1ZXN0ZWRUYWdQcm9wcyxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ3RhZy5nZXRUYWdzJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZFRhZ1RvSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMge3BlcnNvbmFJZD86IHN0cmluZzsgdGFncz86IFRhZ1R5cGVbXX07XG4gICAgICBjb25zdCBzZXNzaW9uUGVyc29uYURvY0lkID0gc2Vzc2lvbj8ucGVyc29uYUlkID8gYHBlcnNvbmFzLyR7c2Vzc2lvbi5wZXJzb25hSWR9YCA6ICcnO1xuICAgICAgY29uc3QgZXhpc3RpbmdQZXJzb25hVGFnID0gaXRlbURvY0lkID09PSBzZXNzaW9uUGVyc29uYURvY0lkXG4gICAgICAgID8gKHNlc3Npb24/LnRhZ3MgfHwgW10pLmZpbmQoKHRhZykgPT4gU3RyaW5nKHRhZz8udGFnSWQgfHwgJycpLnRyaW0oKSA9PT0gU3RyaW5nKHRhZ0lkIHx8ICcnKS50cmltKCkpXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgaWYoZXhpc3RpbmdQZXJzb25hVGFnKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1BlcnNvbmFUYWc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uYWRkVGFnVG9JdGVtIHx8IHt9O1xuXG4gICAgICAgIGlmKGl0ZW1Eb2NJZC5zdGFydHNXaXRoKCdwZXJzb25hcy8nKSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX1BFUlNPTkFfU1VDQ0VTU30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe2l0ZW1Eb2NJZCwgdGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkFERF9MSU5LX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxUYWdUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZFRhZ1RvSXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfUEVSU09OQV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAndGFnLmdldFRhZ3MnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgdGFnLmdldFRhZ3NCeUl0ZW06JHtpdGVtRG9jSWR9YCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVRhZyA9IGFzeW5jICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzLCBERUxFVEVfVEFHX1BST1BTKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uZGVsZXRlVGFnIHx8IHt9O1xuICAgICAgICBjb25zdCBkZWxldGVkVGFnID0ge1xuICAgICAgICAgIC4uLnRhZyxcbiAgICAgICAgICAuLi4odGFnSWQgPyB7dGFnSWR9IDoge30pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWc6IGRlbGV0ZWRUYWcsIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRhZ1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZGVsZXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVUYWdGcm9tSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IGRhdGE/LnRhZ3M/LmRlbGV0ZVRhZ0Zyb21JdGVtID8/IGZhbHNlO1xuXG4gICAgICAgIGlmKHJlbW92ZWQgJiYgaXRlbURvY0lkLnN0YXJ0c1dpdGgoJ3BlcnNvbmFzLycpKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgICAgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfUEVSU09OQV9TVUNDRVNTXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbURvY0lkLFxuICAgICAgICAgIHJlbW92ZWQsXG4gICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0xJTktfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxib29sZWFuPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RlbGV0ZVRhZ0Zyb21JdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9QRVJTT05BX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VGFncyA9IGFzeW5jIChcbiAgICBzZWFyY2hRdWVyeSA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIG9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUYWdUeXBlW10+ID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGFncyA9IGZsdXguZ2V0U3RhdGUoJ3RhZy5saXN0JywgW10pIGFzIFRhZ1R5cGVbXTtcbiAgICBjb25zdCBjYWNoZUV4cGlyZXMgPSBmbHV4LmdldFN0YXRlKCd0YWcuZXhwaXJlcycsIDApIGFzIG51bWJlcjtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxUYWdUeXBlW10gfCBGbHV4QWN0aW9uPihcbiAgICAgIGZsdXgsXG4gICAgICAndGFnLmdldFRhZ3MnLFxuICAgICAge3NlYXJjaFF1ZXJ5LCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdCBhcyBUYWdUeXBlW107XG4gICAgfVxuXG4gICAgaWYoaW5pdGlhbFRhZ3MubGVuZ3RoICYmIG5vdyA8IGNhY2hlRXhwaXJlcyAmJiAhc2VhcmNoUXVlcnkgJiYgIW9wdGlvbnM/LmNhY2hlVGltZW91dCkge1xuICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dGFnczogaW5pdGlhbFRhZ3MsIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgcmV0dXJuIGluaXRpYWxUYWdzO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHNlYXJjaFF1ZXJ5XG4gICAgICAgID8ge1xuICAgICAgICAgIHNlYXJjaFF1ZXJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgIHZhbHVlOiBzZWFyY2hRdWVyeVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA6IHt9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgZ2V0VGFncyA9IGRhdGE/LnRhZ3M/LmdldFRhZ3MgfHwgW107XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0YWdzOiBnZXRUYWdzLFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PFRhZ1R5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRUYWdzJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ3RhZy5nZXRUYWdzJywge3NlYXJjaFF1ZXJ5LCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LCByZXN1bHQsIG9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VGFnc0J5SXRlbSA9IGFzeW5jIChcbiAgICBpdGVtRG9jSWQ6IHN0cmluZyxcbiAgICB0YWdQcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFRhZ1R5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ZWRUYWdQcm9wcyA9IHNhbml0aXplVGFnUHJvcHModGFnUHJvcHMpO1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxUYWdUeXBlW10gfCBGbHV4QWN0aW9uPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgYHRhZy5nZXRUYWdzQnlJdGVtOiR7aXRlbURvY0lkfWAsXG4gICAgICAgIHtpdGVtRG9jSWQsIHRhZ1Byb3BzOiByZXF1ZXN0ZWRUYWdQcm9wc30sXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0IGFzIFRhZ1R5cGVbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGl0ZW1Eb2NJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBpdGVtRG9jSWRcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBkYXRhPy50YWdzPy5nZXRUYWdzQnlJdGVtIHx8IFtdO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PFRhZ1R5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRUYWdzQnlJdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYHRhZy5nZXRUYWdzQnlJdGVtOiR7aXRlbURvY0lkfWAsIHtpdGVtRG9jSWQsIHRhZ1Byb3BzOiByZXF1ZXN0ZWRUYWdQcm9wc30sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVGFnID0gYXN5bmMgKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM6IHN0cmluZ1tdID0gW10sIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUYWdUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgdGFnOiB7XG4gICAgICAgICAgdHlwZTogJ1RhZ0lucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHZhbGlkYXRlVGFnKHRhZywgdGFnQWRhcHRlck9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgICBjb25zdCB0YWcgPSBkYXRhPy50YWdzPy51cGRhdGVUYWcgfHwge307XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuVVBEQVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRhZ1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAndXBkYXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlVQREFURV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFkZFRhZyxcbiAgICBhZGRUYWdUb0l0ZW0sXG4gICAgZGVsZXRlVGFnLFxuICAgIGRlbGV0ZVRhZ0Zyb21JdGVtLFxuICAgIGdldFRhZ3NCeUl0ZW0sXG4gICAgZ2V0VGFncyxcbiAgICB1cGRhdGVUYWcsXG4gICAgdXBkYXRlVGFnQWRhcHRlcixcbiAgICB1cGRhdGVUYWdBZGFwdGVyT3B0aW9uc1xuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZVRhZ0lucHV0IiwiVEFHX0NPTlNUQU5UUyIsImFwcE11dGF0aW9uIiwiYXBwUXVlcnkiLCJjbGVhckNhY2hlZFJlcXVlc3QiLCJnZXRDYWNoZWRSZXF1ZXN0Iiwic2V0Q2FjaGVkUmVxdWVzdCIsIkRBVEFfVFlQRSIsIkRFRkFVTFRfVEFHX1BST1BTIiwiREVMRVRFX1RBR19QUk9QUyIsImZpbHRlciIsImZpZWxkIiwic2FuaXRpemVUYWdQcm9wcyIsInRhZ1Byb3BzIiwiYmFzZVByb3BzIiwiZmllbGRzIiwic2VlbiIsIlNldCIsInJlZHVjZSIsInJlc3VsdCIsIm5leHRGaWVsZCIsIlN0cmluZyIsInRyaW0iLCJoYXMiLCJhZGQiLCJwdXNoIiwiZGVmYXVsdFRhZ1ZhbGlkYXRvciIsImlucHV0Iiwib3B0aW9ucyIsImNyZWF0ZVRhZ1ZhbGlkYXRvciIsImN1c3RvbUFkYXB0ZXIiLCJ2YWxpZGF0b3JPcHRpb25zIiwibWVyZ2VkT3B0aW9ucyIsInZhbGlkYXRlZCIsImN1c3RvbVZhbGlkYXRpb24iLCJjcmVhdGVUYWdBY3Rpb25zIiwiZmx1eCIsInRhZ0FkYXB0ZXJPcHRpb25zIiwiY3VzdG9tVGFnQWRhcHRlciIsInRhZ0FkYXB0ZXIiLCJ2YWxpZGF0ZVRhZyIsInVwZGF0ZVRhZ0FkYXB0ZXIiLCJhZGFwdGVyIiwidXBkYXRlVGFnQWRhcHRlck9wdGlvbnMiLCJhZGRUYWciLCJ0YWciLCJyZXF1ZXN0T3B0aW9ucyIsInJlcXVlc3RlZFRhZ1Byb3BzIiwicXVlcnlWYXJpYWJsZXMiLCJ0eXBlIiwidmFsdWUiLCJvblN1Y2Nlc3MiLCJkYXRhIiwidGFncyIsImRpc3BhdGNoIiwiQUREX0lURU1fU1VDQ0VTUyIsImVycm9yIiwiQUREX0lURU1fRVJST1IiLCJhZGRUYWdUb0l0ZW0iLCJ0YWdJZCIsIml0ZW1Eb2NJZCIsInNlc3Npb24iLCJnZXRTdGF0ZSIsInNlc3Npb25QZXJzb25hRG9jSWQiLCJwZXJzb25hSWQiLCJleGlzdGluZ1BlcnNvbmFUYWciLCJmaW5kIiwic3RhcnRzV2l0aCIsIkFERF9QRVJTT05BX1NVQ0NFU1MiLCJBRERfTElOS19TVUNDRVNTIiwiQUREX1BFUlNPTkFfRVJST1IiLCJkZWxldGVUYWciLCJkZWxldGVkVGFnIiwiUkVNT1ZFX0lURU1fU1VDQ0VTUyIsIlJFTU9WRV9JVEVNX0VSUk9SIiwiZGVsZXRlVGFnRnJvbUl0ZW0iLCJyZW1vdmVkIiwiUkVNT1ZFX1BFUlNPTkFfU1VDQ0VTUyIsIlJFTU9WRV9MSU5LX1NVQ0NFU1MiLCJSRU1PVkVfUEVSU09OQV9FUlJPUiIsImdldFRhZ3MiLCJzZWFyY2hRdWVyeSIsImluaXRpYWxUYWdzIiwiY2FjaGVFeHBpcmVzIiwibm93IiwiRGF0ZSIsImNhY2hlZFJlc3VsdCIsInVuZGVmaW5lZCIsImxlbmd0aCIsImNhY2hlVGltZW91dCIsIkdFVF9MSVNUX1NVQ0NFU1MiLCJHRVRfTElTVF9FUlJPUiIsImdldFRhZ3NCeUl0ZW0iLCJ1cGRhdGVUYWciLCJVUERB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
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy90YWdBY3Rpb25zL3RhZ0FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dmFsaWRhdGVUYWdJbnB1dH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGFnQWRhcHRlci90YWdBZGFwdGVyLmpzJztcbmltcG9ydCB7VEFHX0NPTlNUQU5UU30gZnJvbSAnLi4vLi4vc3RvcmVzL3RhZ1N0b3JlLmpzJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHtjbGVhckNhY2hlZFJlcXVlc3QsIGdldENhY2hlZFJlcXVlc3QsIHNldENhY2hlZFJlcXVlc3R9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4QWN0aW9uLCBGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge1RhZ1R5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpUXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uUmVxdWVzdE9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmNvbnN0IERBVEFfVFlQRSA9ICd0YWdzJztcbmNvbnN0IERFRkFVTFRfVEFHX1BST1BTID0gWydhZGRlZCcsICdjYXRlZ29yeScsICdkZXNjcmlwdGlvbicsICdtb2RpZmllZCcsICduYW1lJywgJ3RhZ0lkJ107XG5jb25zdCBERUxFVEVfVEFHX1BST1BTID0gREVGQVVMVF9UQUdfUFJPUFMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQgIT09ICd0YWdJZCcpO1xuXG5jb25zdCBzYW5pdGl6ZVRhZ1Byb3BzID0gKHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLCBiYXNlUHJvcHM6IHN0cmluZ1tdID0gREVGQVVMVF9UQUdfUFJPUFMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGZpZWxkcyA9IFsuLi5iYXNlUHJvcHMsIC4uLnRhZ1Byb3BzXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChyZXN1bHQ6IHN0cmluZ1tdLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dEZpZWxkID0gU3RyaW5nKGZpZWxkIHx8ICcnKS50cmltKCk7XG5cbiAgICBpZighbmV4dEZpZWxkIHx8IHNlZW4uaGFzKG5leHRGaWVsZCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgc2Vlbi5hZGQobmV4dEZpZWxkKTtcbiAgICByZXN1bHQucHVzaChuZXh0RmllbGQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtdKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9uc09wdGlvbnMge1xuICB0YWdBZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgdGFnQWRhcHRlck9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgVGFnQXBpUmVzdWx0c1R5cGUgPSB7XG4gIHRhZ3M6IHtcbiAgICBhZGRUYWc6IFRhZ1R5cGU7XG4gICAgYWRkVGFnVG9JdGVtOiBUYWdUeXBlO1xuICAgIGRlbGV0ZVRhZzogVGFnVHlwZTtcbiAgICBkZWxldGVUYWdGcm9tSXRlbTogYm9vbGVhbjtcbiAgICBnZXRUYWdzQnlJdGVtOiBUYWdUeXBlW107XG4gICAgZ2V0VGFnczogVGFnVHlwZVtdO1xuICAgIHVwZGF0ZVRhZzogVGFnVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9ucyB7XG4gIGFkZFRhZzogKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgYWRkVGFnVG9JdGVtOiAodGFnSWQ6IHN0cmluZywgaXRlbURvY0lkPzogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWc6ICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWdGcm9tSXRlbTogKHRhZ0lkOiBzdHJpbmcsIGl0ZW1Eb2NJZD86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZ2V0VGFnc0J5SXRlbTogKGl0ZW1Eb2NJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGVbXT47XG4gIGdldFRhZ3M6IChcbiAgICBzZWFyY2hRdWVyeT86IHN0cmluZyxcbiAgICB0YWdQcm9wcz86IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9uc1xuICApID0+IFByb21pc2U8VGFnVHlwZVtdPjtcbiAgdXBkYXRlVGFnOiAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICB1cGRhdGVUYWdBZGFwdGVyOiAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuY29uc3QgZGVmYXVsdFRhZ1ZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZVRhZ0lucHV0KGlucHV0KTtcblxuY29uc3QgY3JlYXRlVGFnVmFsaWRhdG9yID0gKFxuICBjdXN0b21BZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSxcbiAgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7Li4ub3B0aW9ucywgLi4udmFsaWRhdG9yT3B0aW9uc307XG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0VGFnVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgaWYobWVyZ2VkT3B0aW9ucz8uY3VzdG9tVmFsaWRhdGlvbikge1xuICAgIHZhbGlkYXRlZCA9IG1lcmdlZE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbih2YWxpZGF0ZWQpIGFzIFRhZ1R5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRhZ0FjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBUYWdBY3Rpb25zT3B0aW9uc1xuKTogVGFnQWN0aW9ucyA9PiB7XG4gIGxldCB0YWdBZGFwdGVyT3B0aW9ucyA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tVGFnQWRhcHRlciA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXI7XG4gIGxldCB2YWxpZGF0ZVRhZyA9IGNyZWF0ZVRhZ1ZhbGlkYXRvcihjdXN0b21UYWdBZGFwdGVyLCB0YWdBZGFwdGVyT3B0aW9ucyk7XG5cbiAgY29uc3QgdXBkYXRlVGFnQWRhcHRlciA9IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tVGFnQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdmFsaWRhdGVUYWcgPSBjcmVhdGVUYWdWYWxpZGF0b3IoY3VzdG9tVGFnQWRhcHRlciwgdGFnQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVRhZ0FkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IFRhZ0FkYXB0ZXJPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgdGFnQWRhcHRlck9wdGlvbnMgPSB7Li4udGFnQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlVGFnID0gY3JlYXRlVGFnVmFsaWRhdG9yKGN1c3RvbVRhZ0FkYXB0ZXIsIHRhZ0FkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICBjb25zdCBhZGRUYWcgPSBhc3luYyAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWc6IHtcbiAgICAgICAgICB0eXBlOiAnVGFnSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVUYWcodGFnLCB0YWdBZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IHRhZyA9IGRhdGE/LnRhZ3M/LmFkZFRhZyB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe3RhZywgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXdhaXQgYXBwTXV0YXRpb248VGFnVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRUYWcnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICByZXF1ZXN0ZWRUYWdQcm9wcyxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ3RhZy5nZXRUYWdzJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZFRhZ1RvSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMge3BlcnNvbmFJZD86IHN0cmluZzsgdGFncz86IFRhZ1R5cGVbXX07XG4gICAgICBjb25zdCBzZXNzaW9uUGVyc29uYURvY0lkID0gc2Vzc2lvbj8ucGVyc29uYUlkID8gYHBlcnNvbmFzLyR7c2Vzc2lvbi5wZXJzb25hSWR9YCA6ICcnO1xuICAgICAgY29uc3QgZXhpc3RpbmdQZXJzb25hVGFnID0gaXRlbURvY0lkID09PSBzZXNzaW9uUGVyc29uYURvY0lkXG4gICAgICAgID8gKHNlc3Npb24/LnRhZ3MgfHwgW10pLmZpbmQoKHRhZykgPT4gU3RyaW5nKHRhZz8udGFnSWQgfHwgJycpLnRyaW0oKSA9PT0gU3RyaW5nKHRhZ0lkIHx8ICcnKS50cmltKCkpXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgaWYoZXhpc3RpbmdQZXJzb25hVGFnKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1BlcnNvbmFUYWc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uYWRkVGFnVG9JdGVtIHx8IHt9O1xuXG4gICAgICAgIGlmKGl0ZW1Eb2NJZC5zdGFydHNXaXRoKCdwZXJzb25hcy8nKSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX1BFUlNPTkFfU1VDQ0VTU30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe2l0ZW1Eb2NJZCwgdGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkFERF9MSU5LX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxUYWdUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZFRhZ1RvSXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfUEVSU09OQV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAndGFnLmdldFRhZ3MnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgdGFnLmdldFRhZ3NCeUl0ZW06JHtpdGVtRG9jSWR9YCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVRhZyA9IGFzeW5jICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzLCBERUxFVEVfVEFHX1BST1BTKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uZGVsZXRlVGFnIHx8IHt9O1xuICAgICAgICBjb25zdCBkZWxldGVkVGFnID0ge1xuICAgICAgICAgIC4uLnRhZyxcbiAgICAgICAgICAuLi4odGFnSWQgPyB7dGFnSWR9IDoge30pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWc6IGRlbGV0ZWRUYWcsIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRhZ1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZGVsZXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVUYWdGcm9tSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IGRhdGE/LnRhZ3M/LmRlbGV0ZVRhZ0Zyb21JdGVtID8/IGZhbHNlO1xuXG4gICAgICAgIGlmKHJlbW92ZWQgJiYgaXRlbURvY0lkLnN0YXJ0c1dpdGgoJ3BlcnNvbmFzLycpKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgICAgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfUEVSU09OQV9TVUNDRVNTXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbURvY0lkLFxuICAgICAgICAgIHJlbW92ZWQsXG4gICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0xJTktfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxib29sZWFuPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RlbGV0ZVRhZ0Zyb21JdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9QRVJTT05BX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VGFncyA9IGFzeW5jIChcbiAgICBzZWFyY2hRdWVyeSA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIG9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUYWdUeXBlW10+ID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGFncyA9IGZsdXguZ2V0U3RhdGUoJ3RhZy5saXN0JywgW10pIGFzIFRhZ1R5cGVbXTtcbiAgICBjb25zdCBjYWNoZUV4cGlyZXMgPSBmbHV4LmdldFN0YXRlKCd0YWcuZXhwaXJlcycsIDApIGFzIG51bWJlcjtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxUYWdUeXBlW10gfCBGbHV4QWN0aW9uPihcbiAgICAgIGZsdXgsXG4gICAgICAndGFnLmdldFRhZ3MnLFxuICAgICAge3NlYXJjaFF1ZXJ5LCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdCBhcyBUYWdUeXBlW107XG4gICAgfVxuXG4gICAgaWYoaW5pdGlhbFRhZ3MubGVuZ3RoICYmIG5vdyA8IGNhY2hlRXhwaXJlcyAmJiAhc2VhcmNoUXVlcnkgJiYgIW9wdGlvbnM/LmNhY2hlVGltZW91dCkge1xuICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dGFnczogaW5pdGlhbFRhZ3MsIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgcmV0dXJuIGluaXRpYWxUYWdzO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSBzZWFyY2hRdWVyeVxuICAgICAgICA/IHtcbiAgICAgICAgICBzZWFyY2hRdWVyeToge1xuICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICB2YWx1ZTogc2VhcmNoUXVlcnlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgOiB7fTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IGdldFRhZ3MgPSBkYXRhPy50YWdzPy5nZXRUYWdzIHx8IFtdO1xuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgdGFnczogZ2V0VGFncyxcbiAgICAgICAgICB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxUYWdUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0VGFncycsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycsIHtzZWFyY2hRdWVyeSwgdGFnUHJvcHM6IHJlcXVlc3RlZFRhZ1Byb3BzfSwgcmVzdWx0LCBvcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFRhZ3NCeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbURvY0lkOiBzdHJpbmcsXG4gICAgdGFnUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUYWdUeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzKTtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8VGFnVHlwZVtdIHwgRmx1eEFjdGlvbj4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gLFxuICAgICAgICB7aXRlbURvY0lkLCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LFxuICAgICAgICByZXF1ZXN0T3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdCBhcyBUYWdUeXBlW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBpdGVtRG9jSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogaXRlbURvY0lkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgICBjb25zdCB0YWdzID0gZGF0YT8udGFncz8uZ2V0VGFnc0J5SXRlbSB8fCBbXTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgdGFncyxcbiAgICAgICAgICB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxUYWdUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0VGFnc0J5SXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gLCB7aXRlbURvY0lkLCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LCByZXN1bHQsIHJlcXVlc3RPcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVRhZyA9IGFzeW5jICh0YWc6IFBhcnRpYWw8VGFnVHlwZT4sIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLCByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ZWRUYWdQcm9wcyA9IHNhbml0aXplVGFnUHJvcHModGFnUHJvcHMpO1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHRhZzoge1xuICAgICAgICAgIHR5cGU6ICdUYWdJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB2YWxpZGF0ZVRhZyh0YWcsIHRhZ0FkYXB0ZXJPcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8udXBkYXRlVGFnIHx8IHt9O1xuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7dGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxUYWdUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3VwZGF0ZVRhZycsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5VUERBVEVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAndGFnLmdldFRhZ3MnKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRUYWcsXG4gICAgYWRkVGFnVG9JdGVtLFxuICAgIGRlbGV0ZVRhZyxcbiAgICBkZWxldGVUYWdGcm9tSXRlbSxcbiAgICBnZXRUYWdzQnlJdGVtLFxuICAgIGdldFRhZ3MsXG4gICAgdXBkYXRlVGFnLFxuICAgIHVwZGF0ZVRhZ0FkYXB0ZXIsXG4gICAgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnNcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsidmFsaWRhdGVUYWdJbnB1dCIsIlRBR19DT05TVEFOVFMiLCJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJERUZBVUxUX1RBR19QUk9QUyIsIkRFTEVURV9UQUdfUFJPUFMiLCJmaWx0ZXIiLCJmaWVsZCIsInNhbml0aXplVGFnUHJvcHMiLCJ0YWdQcm9wcyIsImJhc2VQcm9wcyIsImZpZWxkcyIsInNlZW4iLCJTZXQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJuZXh0RmllbGQiLCJTdHJpbmciLCJ0cmltIiwiaGFzIiwiYWRkIiwicHVzaCIsImRlZmF1bHRUYWdWYWxpZGF0b3IiLCJpbnB1dCIsIm9wdGlvbnMiLCJjcmVhdGVUYWdWYWxpZGF0b3IiLCJjdXN0b21BZGFwdGVyIiwidmFsaWRhdG9yT3B0aW9ucyIsIm1lcmdlZE9wdGlvbnMiLCJ2YWxpZGF0ZWQiLCJjdXN0b21WYWxpZGF0aW9uIiwiY3JlYXRlVGFnQWN0aW9ucyIsImZsdXgiLCJ0YWdBZGFwdGVyT3B0aW9ucyIsImN1c3RvbVRhZ0FkYXB0ZXIiLCJ0YWdBZGFwdGVyIiwidmFsaWRhdGVUYWciLCJ1cGRhdGVUYWdBZGFwdGVyIiwiYWRhcHRlciIsInVwZGF0ZVRhZ0FkYXB0ZXJPcHRpb25zIiwiYWRkVGFnIiwidGFnIiwicmVxdWVzdE9wdGlvbnMiLCJyZXF1ZXN0ZWRUYWdQcm9wcyIsInF1ZXJ5VmFyaWFibGVzIiwidHlwZSIsInZhbHVlIiwib25TdWNjZXNzIiwiZGF0YSIsInRhZ3MiLCJkaXNwYXRjaCIsIkFERF9JVEVNX1NVQ0NFU1MiLCJlcnJvciIsIkFERF9JVEVNX0VSUk9SIiwiYWRkVGFnVG9JdGVtIiwidGFnSWQiLCJpdGVtRG9jSWQiLCJzZXNzaW9uIiwiZ2V0U3RhdGUiLCJzZXNzaW9uUGVyc29uYURvY0lkIiwicGVyc29uYUlkIiwiZXhpc3RpbmdQZXJzb25hVGFnIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJBRERfUEVSU09OQV9TVUNDRVNTIiwiQUREX0xJTktfU1VDQ0VTUyIsIkFERF9QRVJTT05BX0VSUk9SIiwiZGVsZXRlVGFnIiwiZGVsZXRlZFRhZyIsIlJFTU9WRV9JVEVNX1NVQ0NFU1MiLCJSRU1PVkVfSVRFTV9FUlJPUiIsImRlbGV0ZVRhZ0Zyb21JdGVtIiwicmVtb3ZlZCIsIlJFTU9WRV9QRVJTT05BX1NVQ0NFU1MiLCJSRU1PVkVfTElOS19TVUNDRVNTIiwiUkVNT1ZFX1BFUlNPTkFfRVJST1IiLCJnZXRUYWdzIiwic2VhcmNoUXVlcnkiLCJpbml0aWFsVGFncyIsImNhY2hlRXhwaXJlcyIsIm5vdyIsIkRhdGUiLCJjYWNoZWRSZXN1bHQiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJjYWNoZVRpbWVvdXQiLCJHRVRfTElTVF9TVUNDRVNTIiwiR0VUX0xJU1RfRVJST1IiLCJnZXRUYWdzQnlJdGVtIiwidXBkYXRlVGFnIiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsIlVQREFURV9JVEVNX0VSUk9SIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxnQkFBZ0IsUUFBTywwQ0FBMEM7QUFDekUsU0FBUUMsYUFBYSxRQUFPLDJCQUEyQjtBQUN2RCxTQUFRQyxXQUFXLEVBQUVDLFFBQVEsUUFBTyxxQkFBcUI7QUFDekQsU0FBUUMsa0JBQWtCLEVBQUVDLGdCQUFnQixFQUFFQyxnQkFBZ0IsUUFBTyw4QkFBOEI7QUFPbkcsTUFBTUMsWUFBWTtBQUNsQixNQUFNQyxvQkFBb0I7SUFBQztJQUFTO0lBQVk7SUFBZTtJQUFZO0lBQVE7Q0FBUTtBQUMzRixNQUFNQyxtQkFBbUJELGtCQUFrQkUsTUFBTSxDQUFDLENBQUNDLFFBQVVBLFVBQVU7QUFFdkUsTUFBTUMsbUJBQW1CLENBQUNDLFdBQXFCLEVBQUUsRUFBRUMsWUFBc0JOLGlCQUFpQjtJQUN4RixNQUFNTyxTQUFTO1dBQUlEO1dBQWNEO0tBQVM7SUFDMUMsTUFBTUcsT0FBTyxJQUFJQztJQUVqQixPQUFPRixPQUFPRyxNQUFNLENBQUMsQ0FBQ0MsUUFBa0JSO1FBQ3RDLE1BQU1TLFlBQVlDLE9BQU9WLFNBQVMsSUFBSVcsSUFBSTtRQUUxQyxJQUFHLENBQUNGLGFBQWFKLEtBQUtPLEdBQUcsQ0FBQ0gsWUFBWTtZQUNwQyxPQUFPRDtRQUNUO1FBRUFILEtBQUtRLEdBQUcsQ0FBQ0o7UUFDVEQsT0FBT00sSUFBSSxDQUFDTDtRQUNaLE9BQU9EO0lBQ1QsR0FBRyxFQUFFO0FBQ1A7QUEwQ0EsTUFBTU8sc0JBQXNCLENBQUNDLE9BQWdCQyxVQUFnQzVCLGlCQUFpQjJCO0FBRTlGLE1BQU1FLHFCQUFxQixDQUN6QkMsZUFDQUYsVUFDRyxDQUFDRCxPQUFnQkk7UUFDcEIsTUFBTUMsZ0JBQWdCO1lBQUMsR0FBR0osT0FBTztZQUFFLEdBQUdH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
@@ -35,4 +35,3 @@ export interface TranslationActions {
35
35
  updateTranslationAdapterOptions: (options: BaseAdapterOptions) => void;
36
36
  }
37
37
  export declare const createTranslationActions: (flux: FluxFramework, options?: TranslationActionsOptions) => TranslationActions;
38
- //# sourceMappingURL=translationActions.d.ts.map
@@ -96,4 +96,3 @@ export interface userActions {
96
96
  updateUserAdapterOptions: (options: UserAdapterOptions) => void;
97
97
  }
98
98
  export declare const createUserActions: (flux: FluxFramework, options?: UserActionsOptions) => userActions;
99
- //# sourceMappingURL=userActions.d.ts.map
@@ -38,4 +38,3 @@ export interface VideoActions {
38
38
  readonly updateVideoAdapterOptions: (options: VideoAdapterOptions) => void;
39
39
  }
40
40
  export declare const createVideoActions: (flux: FluxFramework, options?: VideoActionsOptions) => VideoActions;
41
- //# sourceMappingURL=videoActions.d.ts.map
@@ -27,4 +27,3 @@ export interface WebsocketActions {
27
27
  readonly wsInit: (token?: string, personaId?: string) => Sockette | null;
28
28
  }
29
29
  export declare const createWebsocketActions: (flux: FluxFramework) => WebsocketActions;
30
- //# sourceMappingURL=websocketActions.d.ts.map
@@ -1,8 +1,7 @@
1
1
  import type { AppType } from '../../types/apps.types.js';
2
2
  export declare class AppValidationError extends Error {
3
- field?: string | undefined;
4
- constructor(message: string, field?: string | undefined);
3
+ field?: string;
4
+ constructor(message: string, field?: string);
5
5
  }
6
6
  export declare const validateAppInput: (app: unknown) => AppType;
7
7
  export declare const parseApp: (app: AppType) => AppType;
8
- //# sourceMappingURL=appAdapter.d.ts.map
@@ -11,11 +11,10 @@ export interface DocumentType {
11
11
  [key: string]: any;
12
12
  }
13
13
  export declare class ArangoValidationError extends Error {
14
- field?: string | undefined;
15
- constructor(message: string, field?: string | undefined);
14
+ field?: string;
15
+ constructor(message: string, field?: string);
16
16
  }
17
17
  export declare const validateDocumentInput: (doc: unknown) => DocumentType;
18
18
  export declare const formatDocumentOutput: (doc: DocumentType) => DocumentType;
19
19
  export declare const parseDocument: (doc: DocumentType) => DocumentType;
20
20
  export declare const removeEmptyKeys: <T extends Record<string, any>>(obj: T) => T;
21
- //# sourceMappingURL=arangoAdapter.d.ts.map
@@ -23,10 +23,9 @@ export interface ContentInputType {
23
23
  [key: string]: any;
24
24
  }
25
25
  export declare class ContentValidationError extends Error {
26
- field?: string | undefined;
27
- constructor(message: string, field?: string | undefined);
26
+ field?: string;
27
+ constructor(message: string, field?: string);
28
28
  }
29
29
  export declare const parseContent: (content: ContentType) => ContentType;
30
30
  export declare const parseContentInput: (content: ContentInputType) => ContentInputType;
31
31
  export declare const parseContentFromDb: (content: ContentType) => ContentType;
32
- //# sourceMappingURL=contentAdapter.d.ts.map