studiokit-scaffolding-js 7.0.14-alpha.1 → 7.1.1

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 (374) hide show
  1. package/lib/components/ActionList.d.ts +2 -2
  2. package/lib/components/ActionList.js +166 -87
  3. package/lib/components/AlertDialog.d.ts +3 -3
  4. package/lib/components/AlertDialog.js +133 -18
  5. package/lib/components/AlertWithIcon.js +93 -52
  6. package/lib/components/ConnectedModal.d.ts +1 -2
  7. package/lib/components/ConnectedModal.js +41 -35
  8. package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
  9. package/lib/components/Dropdowns/GroupsDropdown.js +69 -82
  10. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
  11. package/lib/components/Dropdowns/ManagedNavDropdown.js +96 -108
  12. package/lib/components/Dropdowns/UserDropdown.js +109 -70
  13. package/lib/components/Dropdowns/index.js +27 -11
  14. package/lib/components/EntityOwnerList.d.ts +3 -3
  15. package/lib/components/EntityOwnerList.js +52 -60
  16. package/lib/components/Error.js +107 -27
  17. package/lib/components/ErrorBoundary.js +133 -94
  18. package/lib/components/ErrorMessage.d.ts +2 -2
  19. package/lib/components/ErrorMessage.js +44 -14
  20. package/lib/components/Forms/DateField.d.ts +2 -2
  21. package/lib/components/Forms/DateField.js +63 -95
  22. package/lib/components/Forms/TimeField.d.ts +2 -2
  23. package/lib/components/Forms/TimeField.js +84 -108
  24. package/lib/components/Forms/index.js +27 -13
  25. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
  26. package/lib/components/Groups/CreateEditCopySaveButtons.js +102 -14
  27. package/lib/components/Groups/ExternalGroups/Attach.d.ts +6 -7
  28. package/lib/components/Groups/ExternalGroups/Attach.js +213 -188
  29. package/lib/components/Groups/ExternalGroups/Table.js +183 -76
  30. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  31. package/lib/components/Groups/RosterSyncInfo.js +140 -49
  32. package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
  33. package/lib/components/HOC/AccessibleAppComponent.js +96 -119
  34. package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
  35. package/lib/components/HOC/ActivityRequiredComponent.js +72 -86
  36. package/lib/components/HOC/AsyncComponent.d.ts +9 -9
  37. package/lib/components/HOC/AsyncComponent.js +53 -129
  38. package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
  39. package/lib/components/HOC/AuthenticatedComponent.js +59 -96
  40. package/lib/components/HOC/CollectionComponent.d.ts +12 -12
  41. package/lib/components/HOC/CollectionComponent.js +161 -161
  42. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
  43. package/lib/components/HOC/CollectionFirstItemComponent.js +49 -91
  44. package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
  45. package/lib/components/HOC/CollectionItemComponent.js +159 -158
  46. package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
  47. package/lib/components/HOC/ConnectedModalComponent.js +96 -126
  48. package/lib/components/HOC/DataDependentComponent.d.ts +3 -55
  49. package/lib/components/HOC/DataDependentComponent.js +30 -79
  50. package/lib/components/HOC/EntityComponent.d.ts +13 -13
  51. package/lib/components/HOC/EntityComponent.js +63 -101
  52. package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
  53. package/lib/components/HOC/FullscreenModalComponent.js +145 -165
  54. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
  55. package/lib/components/HOC/GroupActivityRequiredComponent.js +32 -31
  56. package/lib/components/HOC/GuidComponent.d.ts +1 -1
  57. package/lib/components/HOC/GuidComponent.js +25 -64
  58. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +28 -29
  59. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +36 -59
  60. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
  61. package/lib/components/HOC/ModelErrorRedirectComponent.js +40 -83
  62. package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
  63. package/lib/components/HOC/SearchPersistorComponent.js +243 -216
  64. package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
  65. package/lib/components/HOC/UnauthenticatedComponent.js +37 -82
  66. package/lib/components/HOC/UserComponent.d.ts +1 -1
  67. package/lib/components/HOC/UserComponent.js +12 -11
  68. package/lib/components/Icons/IconAlphaList.js +34 -20
  69. package/lib/components/Icons/IconExternalUser.js +34 -20
  70. package/lib/components/Icons/IconImpersonation.js +34 -20
  71. package/lib/components/Icons/IconStopImpersonating.js +34 -20
  72. package/lib/components/Icons/IconTable.js +35 -21
  73. package/lib/components/Icons/IconTableDeleteCol.js +34 -20
  74. package/lib/components/Icons/IconTableDeleteRow.js +34 -20
  75. package/lib/components/Icons/IconTableInsertCol.js +34 -20
  76. package/lib/components/Icons/IconTableInsertRow.js +34 -20
  77. package/lib/components/Impersonation/Button.d.ts +2 -2
  78. package/lib/components/Impersonation/Button.js +76 -56
  79. package/lib/components/Impersonation/Link.d.ts +2 -2
  80. package/lib/components/Impersonation/Link.js +76 -53
  81. package/lib/components/Impersonation/UserDetail.d.ts +2 -2
  82. package/lib/components/Impersonation/UserDetail.js +64 -15
  83. package/lib/components/Loading.js +27 -21
  84. package/lib/components/LockDownBrowser/Check.js +194 -107
  85. package/lib/components/LockDownBrowser/ExitButton.js +27 -14
  86. package/lib/components/LockDownBrowser/Launch.js +70 -85
  87. package/lib/components/Lti/Confirm.js +152 -33
  88. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +4 -2
  89. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -78
  90. package/lib/components/Lti/Launch.js +105 -49
  91. package/lib/components/Lti/LaunchGroup.js +85 -39
  92. package/lib/components/ManageTable.d.ts +1 -2
  93. package/lib/components/ManageTable.js +309 -104
  94. package/lib/components/ManageTableNoDataComponent.js +42 -22
  95. package/lib/components/NewVersionAlert.d.ts +2 -2
  96. package/lib/components/NewVersionAlert.js +82 -91
  97. package/lib/components/NotFound.js +87 -28
  98. package/lib/components/Notifications.d.ts +4 -4
  99. package/lib/components/Notifications.js +187 -169
  100. package/lib/components/PaginationNextButton.js +33 -21
  101. package/lib/components/PaginationPreviousButton.js +33 -21
  102. package/lib/components/Quill/CustomToolbar.d.ts +2 -2
  103. package/lib/components/Quill/CustomToolbar.js +432 -257
  104. package/lib/components/Quill/Formats/Image.d.ts +10 -25
  105. package/lib/components/Quill/Formats/Image.js +76 -82
  106. package/lib/components/Quill/Formats/List.d.ts +6 -3
  107. package/lib/components/Quill/Formats/List.js +50 -72
  108. package/lib/components/Quill/Formats/Video.d.ts +2 -1
  109. package/lib/components/Quill/Formats/Video.js +29 -43
  110. package/lib/components/Quill/ImageDropModule.d.ts +1 -1
  111. package/lib/components/Quill/ImageDropModule.js +142 -115
  112. package/lib/components/Quill/ImageWarning.d.ts +2 -2
  113. package/lib/components/Quill/ImageWarning.js +45 -32
  114. package/lib/components/Quill/ImageWithAltTextModal.d.ts +0 -1
  115. package/lib/components/Quill/ImageWithAltTextModal.js +425 -141
  116. package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
  117. package/lib/components/Quill/Specs/CustomImageSpec.js +37 -45
  118. package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
  119. package/lib/components/Quill/Specs/CustomVideoSpec.js +27 -36
  120. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +2 -1
  121. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +100 -116
  122. package/lib/components/Quill/TableModule/Blots/TableBlot.js +53 -66
  123. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +54 -67
  124. package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
  125. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +225 -241
  126. package/lib/components/Quill/TableModule/Blots/TableContainer.js +82 -99
  127. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +76 -87
  128. package/lib/components/Quill/TableModule/constants.js +45 -41
  129. package/lib/components/Quill/TableModule/index.css +25 -25
  130. package/lib/components/Quill/TableModule/index.d.ts +14 -5
  131. package/lib/components/Quill/TableModule/index.js +373 -313
  132. package/lib/components/Quill/TableModule/utils.js +45 -45
  133. package/lib/components/Quill/accessibilityFix.d.ts +0 -1
  134. package/lib/components/Quill/accessibilityFix.js +222 -238
  135. package/lib/components/Quill/index.js +36 -32
  136. package/lib/components/RefreshIndicator/Bordered.js +48 -32
  137. package/lib/components/RefreshIndicator/Inline.js +48 -33
  138. package/lib/components/RefreshIndicator/index.d.ts +2 -2
  139. package/lib/components/RefreshIndicator/index.js +263 -113
  140. package/lib/components/SearchControls.js +216 -31
  141. package/lib/components/SentryRoute.js +10 -23
  142. package/lib/components/Tables/RoleFilter.d.ts +3 -4
  143. package/lib/components/Tables/RoleFilter.js +71 -46
  144. package/lib/components/Tables/TextFilter.d.ts +2 -3
  145. package/lib/components/Tables/TextFilter.js +62 -20
  146. package/lib/components/UserRoles/Add.d.ts +3 -3
  147. package/lib/components/UserRoles/Add.js +199 -161
  148. package/lib/components/UserRoles/Context.js +8 -6
  149. package/lib/components/UserRoles/RoleCell.js +181 -100
  150. package/lib/components/UserRoles/Select.js +168 -54
  151. package/lib/components/UserRoles/Table.js +221 -102
  152. package/lib/components/UserRoles/index.d.ts +6 -6
  153. package/lib/components/UserRoles/index.js +535 -464
  154. package/lib/config/eslint/index.d.ts +2 -0
  155. package/lib/config/eslint/index.js +36 -0
  156. package/lib/config/eslint/lib/order.d.ts +3 -0
  157. package/lib/config/eslint/lib/order.js +30 -0
  158. package/lib/config/eslint/lib/prettier.d.ts +3 -0
  159. package/lib/config/eslint/lib/prettier.js +23 -0
  160. package/lib/config/eslint/lib/typescript.d.ts +2 -0
  161. package/lib/config/eslint/lib/typescript.js +98 -0
  162. package/lib/config/eslint/react.d.ts +2 -0
  163. package/lib/config/eslint/react.js +30 -0
  164. package/lib/constants/baseActivity.js +30 -26
  165. package/lib/constants/baseRole.js +14 -10
  166. package/lib/constants/configuration.d.ts +1 -1
  167. package/lib/constants/configuration.js +43 -39
  168. package/lib/constants/externalProviderType.js +10 -6
  169. package/lib/constants/fetchErrorData.js +15 -11
  170. package/lib/constants/index.js +137 -23
  171. package/lib/constants/lockDownBrowser.js +28 -24
  172. package/lib/constants/mockData.d.ts +4 -6
  173. package/lib/constants/mockData.js +383 -324
  174. package/lib/constants/modelStatus.js +15 -11
  175. package/lib/constants/notificationType.js +12 -8
  176. package/lib/constants/operatingSystem.js +12 -8
  177. package/lib/constants/shard.js +11 -7
  178. package/lib/constants/table.js +21 -21
  179. package/lib/constants/tier.js +12 -8
  180. package/lib/constants/userRole.d.ts +1 -2
  181. package/lib/constants/userRole.js +15 -17
  182. package/lib/css/components/_buttons.css +11 -3
  183. package/lib/css/components/_quill.css +3 -3
  184. package/lib/css/components/_tables.css +6 -5
  185. package/lib/css/utils/_display.css +12 -19
  186. package/lib/css/utils/_general.css +1 -1
  187. package/lib/css/utils/_text.css +2 -1
  188. package/lib/css/variables.css +0 -4
  189. package/lib/endpointMappings.js +197 -193
  190. package/lib/hooks/useCollection.js +83 -65
  191. package/lib/hooks/useCollectionConfiguration.d.ts +0 -1
  192. package/lib/hooks/useCollectionConfiguration.js +179 -82
  193. package/lib/hooks/useCollectionItem.js +155 -58
  194. package/lib/hooks/useEventCalback.d.ts +14 -0
  195. package/lib/hooks/useEventCalback.js +51 -0
  196. package/lib/hooks/useGuid.js +19 -8
  197. package/lib/hooks/usePrevious.d.ts +24 -1
  198. package/lib/hooks/usePrevious.js +82 -12
  199. package/lib/index.js +156 -36
  200. package/lib/redux/actionCreator.d.ts +6 -6
  201. package/lib/redux/actionCreator.js +51 -40
  202. package/lib/redux/actions/AuthAction.js +44 -31
  203. package/lib/redux/actions/ModalAction.d.ts +1 -1
  204. package/lib/redux/actions/ModalAction.js +10 -6
  205. package/lib/redux/actions/ModelAction.d.ts +1 -1
  206. package/lib/redux/actions/ModelAction.js +77 -49
  207. package/lib/redux/actions/NotificationAction.js +10 -6
  208. package/lib/redux/actions/SearchAction.js +9 -5
  209. package/lib/redux/actions/index.js +60 -16
  210. package/lib/redux/configureReducers.d.ts +2 -5
  211. package/lib/redux/configureReducers.js +61 -72
  212. package/lib/redux/configureStore.d.ts +2 -2
  213. package/lib/redux/configureStore.js +83 -115
  214. package/lib/redux/helpers.js +7 -2
  215. package/lib/redux/reducers/authReducer.js +50 -44
  216. package/lib/redux/reducers/index.js +41 -15
  217. package/lib/redux/reducers/modalsReducer.js +49 -52
  218. package/lib/redux/reducers/modelsReducer.d.ts +2 -2
  219. package/lib/redux/reducers/modelsReducer.js +136 -135
  220. package/lib/redux/reducers/notificationsReducer.js +26 -21
  221. package/lib/redux/reducers/searchReducer.js +18 -12
  222. package/lib/redux/sagas/appInsightsSaga.js +24 -62
  223. package/lib/redux/sagas/authSaga.js +287 -414
  224. package/lib/redux/sagas/caliperSaga.js +154 -248
  225. package/lib/redux/sagas/clockOffsetSaga.js +35 -76
  226. package/lib/redux/sagas/configurationSaga.js +13 -46
  227. package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +0 -1
  228. package/lib/redux/sagas/downtimeApiErrorSaga.js +23 -64
  229. package/lib/redux/sagas/errorSaga.d.ts +0 -1
  230. package/lib/redux/sagas/errorSaga.js +29 -63
  231. package/lib/redux/sagas/googleAnalyticsSaga.js +29 -69
  232. package/lib/redux/sagas/identityProviderSaga.js +24 -69
  233. package/lib/redux/sagas/initialDataLoadSaga.js +38 -29
  234. package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +0 -1
  235. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +32 -81
  236. package/lib/redux/sagas/modelFetchSaga.js +331 -411
  237. package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
  238. package/lib/redux/sagas/noStoreSaga.js +68 -101
  239. package/lib/redux/sagas/postLoginDataSaga.js +42 -74
  240. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -68
  241. package/lib/redux/sagas/rootSaga.js +85 -137
  242. package/lib/redux/sagas/sentrySaga.js +29 -85
  243. package/lib/redux/sagas/userIdSaga.js +18 -54
  244. package/lib/services/codeProviderService.js +25 -29
  245. package/lib/services/dateService.js +12 -10
  246. package/lib/services/documentService.js +15 -10
  247. package/lib/services/fetchService.js +110 -144
  248. package/lib/services/persistenceService.d.ts +4 -4
  249. package/lib/services/persistenceService.js +45 -43
  250. package/lib/services/ticketProviderService.js +29 -33
  251. package/lib/services/tokenPersistenceService.js +13 -9
  252. package/lib/services/windowService.js +21 -17
  253. package/lib/startup.d.ts +1 -1
  254. package/lib/startup.js +115 -118
  255. package/lib/types/AppConfiguration.js +5 -1
  256. package/lib/types/Artifact.js +11 -7
  257. package/lib/types/BaseReduxState.js +5 -1
  258. package/lib/types/Client.js +5 -1
  259. package/lib/types/Collection.d.ts +3 -3
  260. package/lib/types/Collection.js +5 -1
  261. package/lib/types/Configuration.js +5 -1
  262. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  263. package/lib/types/DeletableModel.js +5 -1
  264. package/lib/types/Event.js +5 -1
  265. package/lib/types/ExternalGroup.js +5 -1
  266. package/lib/types/ExternalProvider.js +5 -1
  267. package/lib/types/ExternalTerm.js +5 -1
  268. package/lib/types/Group.js +5 -1
  269. package/lib/types/IdentityProvider.js +5 -1
  270. package/lib/types/LtiLaunch.js +5 -1
  271. package/lib/types/NameOnlyEntity.js +5 -1
  272. package/lib/types/Notification.d.ts +2 -2
  273. package/lib/types/Notification.js +5 -1
  274. package/lib/types/OptionalRecord.d.ts +1 -1
  275. package/lib/types/OptionalRecord.js +5 -1
  276. package/lib/types/OwnerSchedule.d.ts +3 -1
  277. package/lib/types/OwnerSchedule.js +5 -1
  278. package/lib/types/PropertyOfType.d.ts +3 -3
  279. package/lib/types/PropertyOfType.js +5 -1
  280. package/lib/types/Quill.js +5 -1
  281. package/lib/types/RoleDescription.d.ts +0 -1
  282. package/lib/types/RoleDescription.js +5 -1
  283. package/lib/types/Search.js +5 -1
  284. package/lib/types/SimpleLocation.js +5 -1
  285. package/lib/types/UniTime.js +5 -1
  286. package/lib/types/User.js +5 -1
  287. package/lib/types/UserRole.js +5 -1
  288. package/lib/types/auth/AuthState.js +5 -1
  289. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  290. package/lib/types/auth/ClientCredentials.js +5 -1
  291. package/lib/types/auth/CodeProviderService.js +5 -1
  292. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  293. package/lib/types/auth/TicketProviderService.js +5 -1
  294. package/lib/types/auth/TokenPersistenceService.js +5 -1
  295. package/lib/types/auth/index.js +82 -18
  296. package/lib/types/externals.d.js +2 -0
  297. package/lib/types/index.js +313 -39
  298. package/lib/types/net/EndpointConfig.js +5 -1
  299. package/lib/types/net/EndpointMapping.js +5 -1
  300. package/lib/types/net/EndpointMappings.js +5 -1
  301. package/lib/types/net/ErrorHandler.d.ts +1 -1
  302. package/lib/types/net/ErrorHandler.js +5 -1
  303. package/lib/types/net/FetchConfig.d.ts +1 -1
  304. package/lib/types/net/FetchConfig.js +5 -1
  305. package/lib/types/net/FetchErrorData.js +10 -6
  306. package/lib/types/net/FetchResult.d.ts +2 -2
  307. package/lib/types/net/FetchResult.js +5 -1
  308. package/lib/types/net/HTTPMethod.d.ts +1 -1
  309. package/lib/types/net/HTTPMethod.js +5 -1
  310. package/lib/types/net/HTTPStatusCode.js +16 -12
  311. package/lib/types/net/Metadata.js +5 -1
  312. package/lib/types/net/Model.js +5 -1
  313. package/lib/types/net/ModelCollection.js +5 -1
  314. package/lib/types/net/ModelsState.js +5 -1
  315. package/lib/types/net/OAuthToken.js +5 -1
  316. package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
  317. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  318. package/lib/types/net/TokenAccessFunction.d.ts +1 -1
  319. package/lib/types/net/TokenAccessFunction.js +5 -1
  320. package/lib/types/net/index.js +181 -27
  321. package/lib/utils/baseActivity.d.ts +2 -2
  322. package/lib/utils/baseActivity.js +93 -91
  323. package/lib/utils/baseRole.js +37 -33
  324. package/lib/utils/collection.js +413 -291
  325. package/lib/utils/cookies.js +22 -37
  326. package/lib/utils/date.js +210 -210
  327. package/lib/utils/dom.js +145 -133
  328. package/lib/utils/domainIdentifier.js +9 -9
  329. package/lib/utils/entityUserRole.js +6 -2
  330. package/lib/utils/error.d.ts +1 -1
  331. package/lib/utils/error.js +18 -16
  332. package/lib/utils/events.js +37 -30
  333. package/lib/utils/externalGroup.js +25 -21
  334. package/lib/utils/externalProviders.js +8 -4
  335. package/lib/utils/externalTerms.js +9 -6
  336. package/lib/utils/fetch.d.ts +1 -1
  337. package/lib/utils/fetch.js +179 -176
  338. package/lib/utils/group.js +17 -9
  339. package/lib/utils/groupDates.d.ts +1 -1
  340. package/lib/utils/groupDates.js +43 -39
  341. package/lib/utils/groupRoles.js +28 -28
  342. package/lib/utils/lockDownBrowser.js +16 -12
  343. package/lib/utils/logger.js +30 -25
  344. package/lib/utils/lti.js +10 -5
  345. package/lib/utils/model.d.ts +2 -2
  346. package/lib/utils/model.js +35 -44
  347. package/lib/utils/number.js +13 -16
  348. package/lib/utils/promise.d.ts +6 -1
  349. package/lib/utils/promise.js +34 -15
  350. package/lib/utils/quill.js +60 -71
  351. package/lib/utils/route.d.ts +2 -2
  352. package/lib/utils/route.js +61 -60
  353. package/lib/utils/search.d.ts +1 -1
  354. package/lib/utils/search.js +78 -85
  355. package/lib/utils/shard.js +38 -41
  356. package/lib/utils/sort.d.ts +3 -3
  357. package/lib/utils/sort.js +62 -58
  358. package/lib/utils/string.js +14 -10
  359. package/lib/utils/table.d.ts +3 -3
  360. package/lib/utils/table.js +36 -33
  361. package/lib/utils/timezone.js +12 -26
  362. package/lib/utils/url.d.ts +2 -1
  363. package/lib/utils/url.js +139 -193
  364. package/lib/utils/user.js +59 -61
  365. package/lib/utils/userAgent.js +11 -11
  366. package/lib/utils/userRole.d.ts +3 -3
  367. package/lib/utils/userRole.js +46 -44
  368. package/package.json +90 -73
  369. package/lib/config/eslint/index.cjs +0 -21
  370. package/lib/config/eslint/lib/order.cjs +0 -22
  371. package/lib/config/eslint/lib/prettier.cjs +0 -18
  372. package/lib/config/eslint/lib/typescript.cjs +0 -86
  373. package/lib/config/eslint/react.cjs +0 -9
  374. package/lib/css/utils/_focus.css +0 -4
@@ -1,195 +1,220 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- var __importDefault = (this && this.__importDefault) || function (mod) {
16
- return (mod && mod.__esModule) ? mod : { "default": mod };
17
- };
18
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
19
7
  exports.ExternalGroupsAttach = void 0;
20
- var lodash_1 = require("lodash");
21
- var react_1 = __importDefault(require("react"));
22
- var react_2 = require("react");
23
- var react_bootstrap_1 = require("react-bootstrap");
24
- var uuid_1 = require("uuid");
25
- var constants_1 = require("../../../constants");
26
- var actionCreator_1 = require("../../../redux/actionCreator");
27
- var noStoreSaga_1 = require("../../../redux/sagas/noStoreSaga");
28
- var fetch_1 = require("../../../utils/fetch");
29
- var model_1 = require("../../../utils/model");
30
- var shard_1 = require("../../../utils/shard");
31
- var user_1 = require("../../../utils/user");
32
- var AlertWithIcon_1 = require("../../AlertWithIcon");
33
- var Loading_1 = require("../../Loading");
34
- var ExternalGroupsAttach = /** @class */ (function (_super) {
35
- __extends(ExternalGroupsAttach, _super);
36
- function ExternalGroupsAttach(props) {
37
- var _this = _super.call(this, props) || this;
38
- _this.setOwnerSchedules = function (groupUserRoles, externalTermId, selectedExternalGroups) {
39
- var _a = _this.props, canConnectAnyExternalGroups = _a.canConnectAnyExternalGroups, canConnectOwnExternalGroups = _a.canConnectOwnExternalGroups, userInfo = _a.userInfo;
40
- var owners = groupUserRoles.filter(function (groupUserRole) {
41
- return groupUserRole.role === constants_1.BASE_ROLE.GROUP_OWNER;
42
- });
43
- var ownersInitialScheduleData = {};
44
- owners.forEach(function (owner) {
45
- lodash_1.set(ownersInitialScheduleData, [owner.userId], {
46
- hookId: uuid_1.v4(),
47
- status: canConnectAnyExternalGroups || (userInfo.id === owner.id && canConnectOwnExternalGroups)
48
- ? constants_1.MODEL_STATUS.UNINITIALIZED
49
- : constants_1.MODEL_STATUS.READY,
50
- owner: owner,
51
- externalGroups: !(canConnectAnyExternalGroups ||
52
- (userInfo.id === owner.id && canConnectOwnExternalGroups))
53
- ? selectedExternalGroups.filter(function (seg) { return seg.userId === owner.id; })
54
- : undefined
55
- });
56
- });
57
- _this.setState({
58
- ownerSchedules: ownersInitialScheduleData,
59
- isUniTimeScheduleLoadingDone: false
60
- }, function () {
61
- return lodash_1.forEach(ownersInitialScheduleData, function (ownerSchedule, userId) {
62
- return _this.getOwnerUniTimeGroups(ownerSchedule, userId, externalTermId);
63
- });
64
- });
65
- };
66
- _this.handleSelectExternalGroups = function (event) {
67
- var externalId = event.target.value;
68
- var checked = event.target.checked;
69
- var _a = _this.props, originalConnectedExternalGroups = _a.originalConnectedExternalGroups, selectedExternalGroups = _a.selectedExternalGroups;
70
- var allOwnerExternalGroups = lodash_1.map(_this.state.ownerSchedules, function (os) { return os.externalGroups; }).reduce(function (a, b) {
71
- return a.concat(b);
72
- });
73
- var selectedExternalGroupsCopy = selectedExternalGroups.slice();
74
- if (checked) {
75
- var originalConnectedExternalGroup = originalConnectedExternalGroups.find(function (oeg) { return oeg.externalId === externalId; });
76
- var selectedExternalGroup = originalConnectedExternalGroup
77
- ? originalConnectedExternalGroup
78
- : allOwnerExternalGroups === null || allOwnerExternalGroups === void 0 ? void 0 : allOwnerExternalGroups.find(function (ao) { return ao.externalId === externalId; });
79
- if (selectedExternalGroup) {
80
- selectedExternalGroupsCopy.push(selectedExternalGroup);
81
- }
82
- }
83
- else {
84
- lodash_1.remove(selectedExternalGroupsCopy, function (seg) { return seg.externalId === externalId; });
85
- }
86
- _this.props.handleSelectedExternalGroups(selectedExternalGroupsCopy);
87
- };
88
- _this.getOwnerUniTimeGroups = function (ownerSchedule, userId, externalTermId) {
89
- if (shard_1.isPurdueShard() && ownerSchedule.status === constants_1.MODEL_STATUS.UNINITIALIZED && !ownerSchedule.externalGroups) {
90
- noStoreSaga_1.registerNoStoreActionHook(ownerSchedule.hookId, function (data) {
91
- noStoreSaga_1.unregisterNoStoreActionHook(ownerSchedule.hookId);
92
- if (!data || fetch_1.isFetchErrorData(data)) {
93
- _this.setState({ isShowingErrorAlert: true, isUniTimeScheduleLoadingDone: true });
94
- }
95
- else {
96
- _this.setUserUniTimeGroups(userId, data.externalGroups);
97
- }
98
- });
99
- actionCreator_1.dispatchModelFetchRequest({
100
- modelName: 'uniTimeInstructorSchedule',
101
- queryParams: {
102
- externalTermId: externalTermId,
103
- userId: userId
104
- },
105
- noStore: true,
106
- guid: ownerSchedule.hookId
107
- });
108
- }
109
- };
110
- _this.setUserUniTimeGroups = function (userId, externalGroups) {
111
- // Setting the user's course sections load status to be ready
112
- var ownerSchedules = _this.state.ownerSchedules || {};
113
- ownerSchedules[userId].status = constants_1.MODEL_STATUS.READY;
114
- ownerSchedules[userId].externalGroups = externalGroups;
115
- var isUniTimeScheduleLoadingDone = lodash_1.every(ownerSchedules, function (os) { return os.status === constants_1.MODEL_STATUS.READY; });
116
- _this.setState({
117
- ownerSchedules: ownerSchedules,
118
- isUniTimeScheduleLoadingDone: isUniTimeScheduleLoadingDone
119
- });
120
- };
121
- _this.displayOwnerSchedules = function (ownerSchedules) {
122
- return lodash_1.map(ownerSchedules, function (os) {
123
- if (!!os.externalGroups && os.externalGroups.length > 0) {
124
- return (react_1.default.createElement("div", { key: os.hookId },
125
- react_1.default.createElement("h4", null, user_1.displayName(os.owner)),
126
- _this.displayUniTimeGroups(os.externalGroups)));
127
- }
128
- });
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _lodash = require("lodash");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactBootstrap = require("react-bootstrap");
12
+ var _uuid = require("uuid");
13
+ var _constants = require("../../../constants");
14
+ var _actionCreator = require("../../../redux/actionCreator");
15
+ var _noStoreSaga = require("../../../redux/sagas/noStoreSaga");
16
+ var _fetch = require("../../../utils/fetch");
17
+ var _model = require("../../../utils/model");
18
+ var _shard = require("../../../utils/shard");
19
+ var _user = require("../../../utils/user");
20
+ var _AlertWithIcon = require("../../AlertWithIcon");
21
+ var _Loading = require("../../Loading");
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
+ class ExternalGroupsAttach extends _react.Component {
25
+ constructor(props) {
26
+ super(props);
27
+ (0, _defineProperty2.default)(this, "setOwnerSchedules", (groupUserRoles, externalTermId, selectedExternalGroups) => {
28
+ const {
29
+ canConnectAnyExternalGroups,
30
+ canConnectOwnExternalGroups,
31
+ userInfo
32
+ } = this.props;
33
+ const owners = groupUserRoles.filter(groupUserRole => {
34
+ return groupUserRole.role === _constants.BASE_ROLE.GROUP_OWNER;
35
+ });
36
+ const ownersInitialScheduleData = {};
37
+ owners.forEach(owner => {
38
+ const ownerData = {
39
+ hookId: (0, _uuid.v4)(),
40
+ status: canConnectAnyExternalGroups || userInfo.id === owner.id && canConnectOwnExternalGroups ? _constants.MODEL_STATUS.UNINITIALIZED : _constants.MODEL_STATUS.READY,
41
+ owner,
42
+ externalGroups: !(canConnectAnyExternalGroups || userInfo.id === owner.id && canConnectOwnExternalGroups) ? selectedExternalGroups.filter(seg => seg.userId === owner.id) : undefined
129
43
  };
130
- _this.displayUniTimeGroups = function (externalGroups) {
131
- var _a = _this.props, selectedExternalGroups = _a.selectedExternalGroups, canConnectAnyExternalGroups = _a.canConnectAnyExternalGroups, canConnectOwnExternalGroups = _a.canConnectOwnExternalGroups, userInfo = _a.userInfo, disabled = _a.disabled;
132
- return lodash_1.orderBy(externalGroups, ['description']).map(function (eg, index) {
133
- var isConnected = selectedExternalGroups.some(function (seg) {
134
- return seg.externalId === eg.externalId &&
135
- seg.externalProviderId === eg.externalProviderId &&
136
- seg.userId === eg.userId;
137
- });
138
- if (canConnectAnyExternalGroups ||
139
- (userInfo.id === eg.userId && canConnectOwnExternalGroups) ||
140
- isConnected) {
141
- return (react_1.default.createElement(react_bootstrap_1.FormCheck, { id: "external-group-" + eg.id, type: "checkbox", key: index, onChange: _this.handleSelectExternalGroups, value: eg.externalId, checked: isConnected, disabled: (userInfo.id !== eg.userId && !canConnectAnyExternalGroups) || disabled, label: eg.name + " " + (eg.description ? "(" + eg.description + ")" : '') }));
142
- }
143
- return null;
44
+ (0, _lodash.set)(ownersInitialScheduleData, [owner.userId], ownerData);
45
+ });
46
+ this.setState({
47
+ ownerSchedules: ownersInitialScheduleData,
48
+ isUniTimeScheduleLoadingDone: false
49
+ }, () => (0, _lodash.forEach)(ownersInitialScheduleData, (ownerSchedule, userId) => {
50
+ this.getOwnerUniTimeGroups(ownerSchedule, userId, externalTermId);
51
+ }));
52
+ });
53
+ (0, _defineProperty2.default)(this, "handleSelectExternalGroups", event => {
54
+ const externalId = event.target.value;
55
+ const checked = event.target.checked;
56
+ const {
57
+ originalConnectedExternalGroups,
58
+ selectedExternalGroups
59
+ } = this.props;
60
+ const allOwnerExternalGroups = (0, _lodash.map)(this.state.ownerSchedules, os => os.externalGroups).reduce((a, b) => (a || []).concat(b || []));
61
+ const selectedExternalGroupsCopy = selectedExternalGroups.slice();
62
+ if (checked) {
63
+ const originalConnectedExternalGroup = originalConnectedExternalGroups.find(oeg => oeg.externalId === externalId);
64
+ const selectedExternalGroup = originalConnectedExternalGroup ? originalConnectedExternalGroup : allOwnerExternalGroups?.find(ao => ao.externalId === externalId);
65
+ if (selectedExternalGroup) {
66
+ selectedExternalGroupsCopy.push(selectedExternalGroup);
67
+ }
68
+ } else {
69
+ (0, _lodash.remove)(selectedExternalGroupsCopy, seg => seg.externalId === externalId);
70
+ }
71
+ this.props.handleSelectedExternalGroups(selectedExternalGroupsCopy);
72
+ });
73
+ (0, _defineProperty2.default)(this, "getOwnerUniTimeGroups", (ownerSchedule, userId, externalTermId) => {
74
+ if ((0, _shard.isPurdueShard)() && ownerSchedule.status === _constants.MODEL_STATUS.UNINITIALIZED && !ownerSchedule.externalGroups) {
75
+ (0, _noStoreSaga.registerNoStoreActionHook)(ownerSchedule.hookId, data => {
76
+ (0, _noStoreSaga.unregisterNoStoreActionHook)(ownerSchedule.hookId);
77
+ if (!data || (0, _fetch.isFetchErrorData)(data)) {
78
+ this.setState({
79
+ isShowingErrorAlert: true,
80
+ isUniTimeScheduleLoadingDone: true
144
81
  });
145
- };
146
- _this.state = {
147
- ownerSchedules: undefined,
148
- isUniTimeScheduleLoadingDone: false,
149
- isShowingErrorAlert: false
150
- };
151
- return _this;
152
- }
153
- ExternalGroupsAttach.prototype.componentDidMount = function () {
154
- var _a = this.props, groupUserRoles = _a.groupUserRoles, externalTermId = _a.externalTermId, selectedExternalGroups = _a.selectedExternalGroups;
155
- this.setOwnerSchedules(model_1.getModelArray(groupUserRoles), externalTermId, selectedExternalGroups);
156
- };
157
- ExternalGroupsAttach.prototype.componentWillUnmount = function () {
158
- var ownerSchedules = this.state.ownerSchedules;
159
- lodash_1.forEach(ownerSchedules, function (os) { return noStoreSaga_1.unregisterNoStoreActionHook(os.hookId); });
160
- };
161
- ExternalGroupsAttach.prototype.componentDidUpdate = function (prevProps) {
162
- var prevExternalTermId = prevProps.externalTermId, prevGroupUserRoles = prevProps.groupUserRoles;
163
- var _a = this.props, externalTermId = _a.externalTermId, groupUserRoles = _a.groupUserRoles, selectedExternalGroups = _a.selectedExternalGroups;
164
- // Assumes group user roles are changing one at a time. Can be made fancier if the need arises
165
- if (!!prevGroupUserRoles &&
166
- !!groupUserRoles &&
167
- (prevExternalTermId !== externalTermId ||
168
- Object.keys(prevGroupUserRoles).length !== Object.keys(groupUserRoles).length)) {
169
- this.setOwnerSchedules(model_1.getModelArray(groupUserRoles), externalTermId, selectedExternalGroups);
82
+ } else {
83
+ this.setUserUniTimeGroups(userId, data.externalGroups);
84
+ }
85
+ });
86
+ (0, _actionCreator.dispatchModelFetchRequest)({
87
+ modelName: 'uniTimeInstructorSchedule',
88
+ queryParams: {
89
+ externalTermId,
90
+ userId
91
+ },
92
+ noStore: true,
93
+ guid: ownerSchedule.hookId
94
+ });
95
+ }
96
+ });
97
+ (0, _defineProperty2.default)(this, "setUserUniTimeGroups", (userId, externalGroups) => {
98
+ // Setting the user's course sections load status to be ready
99
+ const ownerSchedules = this.state.ownerSchedules || {};
100
+ ownerSchedules[userId].status = _constants.MODEL_STATUS.READY;
101
+ ownerSchedules[userId].externalGroups = externalGroups;
102
+ const isUniTimeScheduleLoadingDone = (0, _lodash.every)(ownerSchedules, os => os.status === _constants.MODEL_STATUS.READY);
103
+ this.setState({
104
+ ownerSchedules,
105
+ isUniTimeScheduleLoadingDone
106
+ });
107
+ });
108
+ (0, _defineProperty2.default)(this, "displayOwnerSchedules", ownerSchedules => {
109
+ return (0, _lodash.map)(ownerSchedules, os => {
110
+ if (!!os.externalGroups && os.externalGroups.length > 0) {
111
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
112
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h4", {
113
+ children: (0, _user.displayName)(os.owner)
114
+ }), this.displayUniTimeGroups(os.externalGroups)]
115
+ }, os.hookId);
170
116
  }
117
+ });
118
+ });
119
+ (0, _defineProperty2.default)(this, "displayUniTimeGroups", externalGroups => {
120
+ const {
121
+ selectedExternalGroups,
122
+ canConnectAnyExternalGroups,
123
+ canConnectOwnExternalGroups,
124
+ userInfo,
125
+ disabled
126
+ } = this.props;
127
+ return (0, _lodash.orderBy)(externalGroups, ['description']).map((eg, index) => {
128
+ const isConnected = selectedExternalGroups.some(seg => seg.externalId === eg.externalId && seg.externalProviderId === eg.externalProviderId && seg.userId === eg.userId);
129
+ if (canConnectAnyExternalGroups || userInfo.id === eg.userId && canConnectOwnExternalGroups || isConnected) {
130
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormCheck, {
131
+ id: `external-group-${eg.id}`,
132
+ type: "checkbox",
133
+ onChange: this.handleSelectExternalGroups,
134
+ value: eg.externalId,
135
+ checked: isConnected,
136
+ disabled: userInfo.id !== eg.userId && !canConnectAnyExternalGroups || disabled,
137
+ label: `${eg.name} ${eg.description ? `(${eg.description})` : ''}`
138
+ }, index);
139
+ }
140
+ return null;
141
+ });
142
+ });
143
+ this.state = {
144
+ ownerSchedules: undefined,
145
+ isUniTimeScheduleLoadingDone: false,
146
+ isShowingErrorAlert: false
171
147
  };
172
- ExternalGroupsAttach.prototype.render = function () {
173
- var _this = this;
174
- var disabledInfoMessage = this.props.disabledInfoMessage;
175
- var _a = this.state, ownerSchedules = _a.ownerSchedules, isUniTimeScheduleLoadingDone = _a.isUniTimeScheduleLoadingDone, isShowingErrorAlert = _a.isShowingErrorAlert;
176
- var hasAnyExternalGroups = lodash_1.some(ownerSchedules, function (os) { return !!os.externalGroups && os.externalGroups.length > 0; });
177
- return (react_1.default.createElement("div", null,
178
- !isUniTimeScheduleLoadingDone && react_1.default.createElement(Loading_1.Loading, null),
179
- isUniTimeScheduleLoadingDone && (react_1.default.createElement("div", null,
180
- !hasAnyExternalGroups && (react_1.default.createElement(AlertWithIcon_1.AlertWithIcon, { variant: "info" },
181
- react_1.default.createElement("p", null, "No course sections eligible for roster sync."))),
182
- !!disabledInfoMessage && hasAnyExternalGroups && (react_1.default.createElement(AlertWithIcon_1.AlertWithIcon, { variant: "info" },
183
- react_1.default.createElement("p", null, disabledInfoMessage))),
184
- isShowingErrorAlert && (react_1.default.createElement(AlertWithIcon_1.AlertWithIcon, { variant: "warning", onClose: function () {
185
- return _this.setState({
186
- isShowingErrorAlert: false
187
- });
188
- } },
189
- react_1.default.createElement("p", { className: "ma0" }, "Oops! Something went wrong while loading. Please try again."))),
190
- ' ',
191
- hasAnyExternalGroups && !!ownerSchedules && (react_1.default.createElement(react_bootstrap_1.FormGroup, { className: "ml4 f6" }, this.displayOwnerSchedules(ownerSchedules)))))));
192
- };
193
- return ExternalGroupsAttach;
194
- }(react_2.Component));
148
+ }
149
+ componentDidMount() {
150
+ const {
151
+ groupUserRoles,
152
+ externalTermId,
153
+ selectedExternalGroups
154
+ } = this.props;
155
+ this.setOwnerSchedules((0, _model.getModelArray)(groupUserRoles), externalTermId, selectedExternalGroups);
156
+ }
157
+ componentWillUnmount() {
158
+ const {
159
+ ownerSchedules
160
+ } = this.state;
161
+ (0, _lodash.forEach)(ownerSchedules, os => (0, _noStoreSaga.unregisterNoStoreActionHook)(os.hookId));
162
+ }
163
+ componentDidUpdate(prevProps) {
164
+ const {
165
+ externalTermId: prevExternalTermId,
166
+ groupUserRoles: prevGroupUserRoles
167
+ } = prevProps;
168
+ const {
169
+ externalTermId,
170
+ groupUserRoles,
171
+ selectedExternalGroups
172
+ } = this.props;
173
+ // Assumes group user roles are changing one at a time. Can be made fancier if the need arises
174
+ if (prevExternalTermId !== externalTermId || Object.keys(prevGroupUserRoles).length !== Object.keys(groupUserRoles).length) {
175
+ this.setOwnerSchedules((0, _model.getModelArray)(groupUserRoles), externalTermId, selectedExternalGroups);
176
+ }
177
+ }
178
+ render() {
179
+ const {
180
+ disabledInfoMessage
181
+ } = this.props;
182
+ const {
183
+ ownerSchedules,
184
+ isUniTimeScheduleLoadingDone,
185
+ isShowingErrorAlert
186
+ } = this.state;
187
+ const hasAnyExternalGroups = (0, _lodash.some)(ownerSchedules, os => !!os.externalGroups && os.externalGroups.length > 0);
188
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
189
+ children: [!isUniTimeScheduleLoadingDone && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Loading.Loading, {}), isUniTimeScheduleLoadingDone && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
190
+ children: [!hasAnyExternalGroups && /*#__PURE__*/(0, _jsxRuntime.jsx)(_AlertWithIcon.AlertWithIcon, {
191
+ variant: "info",
192
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
193
+ children: "No course sections eligible for roster sync."
194
+ })
195
+ }), !!disabledInfoMessage && hasAnyExternalGroups && /*#__PURE__*/(0, _jsxRuntime.jsx)(_AlertWithIcon.AlertWithIcon, {
196
+ variant: "info",
197
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
198
+ children: disabledInfoMessage
199
+ })
200
+ }), isShowingErrorAlert && /*#__PURE__*/(0, _jsxRuntime.jsx)(_AlertWithIcon.AlertWithIcon, {
201
+ variant: "warning",
202
+ onClose: () => {
203
+ this.setState({
204
+ isShowingErrorAlert: false
205
+ });
206
+ },
207
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
208
+ className: "ma0",
209
+ children: "Oops! Something went wrong while loading. Please try again."
210
+ })
211
+ }), ' ', hasAnyExternalGroups && !!ownerSchedules && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormGroup, {
212
+ className: "ml4 f6",
213
+ children: this.displayOwnerSchedules(ownerSchedules)
214
+ })]
215
+ })]
216
+ });
217
+ }
218
+ }
195
219
  exports.ExternalGroupsAttach = ExternalGroupsAttach;
220
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX3V1aWQiLCJfY29uc3RhbnRzIiwiX2FjdGlvbkNyZWF0b3IiLCJfbm9TdG9yZVNhZ2EiLCJfZmV0Y2giLCJfbW9kZWwiLCJfc2hhcmQiLCJfdXNlciIsIl9BbGVydFdpdGhJY29uIiwiX0xvYWRpbmciLCJfanN4UnVudGltZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkV4dGVybmFsR3JvdXBzQXR0YWNoIiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJncm91cFVzZXJSb2xlcyIsImV4dGVybmFsVGVybUlkIiwic2VsZWN0ZWRFeHRlcm5hbEdyb3VwcyIsImNhbkNvbm5lY3RBbnlFeHRlcm5hbEdyb3VwcyIsImNhbkNvbm5lY3RPd25FeHRlcm5hbEdyb3VwcyIsInVzZXJJbmZvIiwib3duZXJzIiwiZmlsdGVyIiwiZ3JvdXBVc2VyUm9sZSIsInJvbGUiLCJCQVNFX1JPTEUiLCJHUk9VUF9PV05FUiIsIm93bmVyc0luaXRpYWxTY2hlZHVsZURhdGEiLCJmb3JFYWNoIiwib3duZXIiLCJvd25lckRhdGEiLCJob29rSWQiLCJ1dWlkdjQiLCJzdGF0dXMiLCJpZCIsIk1PREVMX1NUQVRVUyIsIlVOSU5JVElBTElaRUQiLCJSRUFEWSIsImV4dGVybmFsR3JvdXBzIiwic2VnIiwidXNlcklkIiwidW5kZWZpbmVkIiwic2V0U3RhdGUiLCJvd25lclNjaGVkdWxlcyIsImlzVW5pVGltZVNjaGVkdWxlTG9hZGluZ0RvbmUiLCJvd25lclNjaGVkdWxlIiwiZ2V0T3duZXJVbmlUaW1lR3JvdXBzIiwiZXZlbnQiLCJleHRlcm5hbElkIiwidGFyZ2V0IiwidmFsdWUiLCJjaGVja2VkIiwib3JpZ2luYWxDb25uZWN0ZWRFeHRlcm5hbEdyb3VwcyIsImFsbE93bmVyRXh0ZXJuYWxHcm91cHMiLCJtYXAiLCJzdGF0ZSIsIm9zIiwicmVkdWNlIiwiYSIsImIiLCJjb25jYXQiLCJzZWxlY3RlZEV4dGVybmFsR3JvdXBzQ29weSIsInNsaWNlIiwib3JpZ2luYWxDb25uZWN0ZWRFeHRlcm5hbEdyb3VwIiwiZmluZCIsIm9lZyIsInNlbGVjdGVkRXh0ZXJuYWxHcm91cCIsImFvIiwicHVzaCIsInJlbW92ZSIsImhhbmRsZVNlbGVjdGVkRXh0ZXJuYWxHcm91cHMiLCJpc1B1cmR1ZVNoYXJkIiwicmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vayIsImRhdGEiLCJ1bnJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2siLCJpc0ZldGNoRXJyb3JEYXRhIiwiaXNTaG93aW5nRXJyb3JBbGVydCIsInNldFVzZXJVbmlUaW1lR3JvdXBzIiwiZGlzcGF0Y2hNb2RlbEZldGNoUmVxdWVzdCIsIm1vZGVsTmFtZSIsInF1ZXJ5UGFyYW1zIiwibm9TdG9yZSIsImd1aWQiLCJldmVyeSIsImxlbmd0aCIsImpzeHMiLCJjaGlsZHJlbiIsImpzeCIsImRpc3BsYXlOYW1lIiwiZGlzcGxheVVuaVRpbWVHcm91cHMiLCJkaXNhYmxlZCIsIm9yZGVyQnkiLCJlZyIsImluZGV4IiwiaXNDb25uZWN0ZWQiLCJzb21lIiwiZXh0ZXJuYWxQcm92aWRlcklkIiwiRm9ybUNoZWNrIiwidHlwZSIsIm9uQ2hhbmdlIiwiaGFuZGxlU2VsZWN0RXh0ZXJuYWxHcm91cHMiLCJsYWJlbCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImNvbXBvbmVudERpZE1vdW50Iiwic2V0T3duZXJTY2hlZHVsZXMiLCJnZXRNb2RlbEFycmF5IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2RXh0ZXJuYWxUZXJtSWQiLCJwcmV2R3JvdXBVc2VyUm9sZXMiLCJrZXlzIiwicmVuZGVyIiwiZGlzYWJsZWRJbmZvTWVzc2FnZSIsImhhc0FueUV4dGVybmFsR3JvdXBzIiwiTG9hZGluZyIsIkFsZXJ0V2l0aEljb24iLCJ2YXJpYW50Iiwib25DbG9zZSIsImNsYXNzTmFtZSIsIkZvcm1Hcm91cCIsImRpc3BsYXlPd25lclNjaGVkdWxlcyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Hcm91cHMvRXh0ZXJuYWxHcm91cHMvQXR0YWNoLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0aW9uYXJ5LCBldmVyeSwgZm9yRWFjaCwgbWFwLCBvcmRlckJ5LCByZW1vdmUsIHNldCwgc29tZSB9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBSZWFjdCwgeyBDaGFuZ2VFdmVudCwgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBGb3JtQ2hlY2ssIEZvcm1Hcm91cCB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyBCQVNFX1JPTEUsIE1PREVMX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGRpc3BhdGNoTW9kZWxGZXRjaFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9yZWR1eC9hY3Rpb25DcmVhdG9yJ1xuaW1wb3J0IHsgcmVnaXN0ZXJOb1N0b3JlQWN0aW9uSG9vaywgdW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rIH0gZnJvbSAnLi4vLi4vLi4vcmVkdXgvc2FnYXMvbm9TdG9yZVNhZ2EnXG5pbXBvcnQge1xuXHRFeHRlcm5hbEdyb3VwLFxuXHRGZXRjaEVycm9yRGF0YSxcblx0R3JvdXBVc2VyUm9sZSxcblx0SW5zdHJ1Y3RvclNjaGVkdWxlLFxuXHRMdGlMYXVuY2gsXG5cdE1vZGVsQ29sbGVjdGlvbixcblx0T3duZXJTY2hlZHVsZSxcblx0VW5pVGltZUdyb3VwLFxuXHRVc2VySW5mb1xufSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGlzRmV0Y2hFcnJvckRhdGEgfSBmcm9tICcuLi8uLi8uLi91dGlscy9mZXRjaCdcbmltcG9ydCB7IGdldE1vZGVsQXJyYXkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tb2RlbCdcbmltcG9ydCB7IGlzUHVyZHVlU2hhcmQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zaGFyZCdcbmltcG9ydCB7IGRpc3BsYXlOYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXNlcidcbmltcG9ydCB7IEFsZXJ0V2l0aEljb24gfSBmcm9tICcuLi8uLi9BbGVydFdpdGhJY29uJ1xuaW1wb3J0IHsgTG9hZGluZyB9IGZyb20gJy4uLy4uL0xvYWRpbmcnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxHcm91cHNBdHRhY2hQcm9wcyB7XG5cdHVzZXJJbmZvOiBVc2VySW5mb1xuXHRjYW5SZWFkRXh0ZXJuYWxHcm91cHM6IGJvb2xlYW5cblx0Y2FuQ29ubmVjdEFueUV4dGVybmFsR3JvdXBzOiBib29sZWFuXG5cdGNhbkNvbm5lY3RPd25FeHRlcm5hbEdyb3VwczogYm9vbGVhblxuXHRvcmlnaW5hbENvbm5lY3RlZEV4dGVybmFsR3JvdXBzOiBBcnJheTxFeHRlcm5hbEdyb3VwIHwgTHRpTGF1bmNoPlxuXHRzZWxlY3RlZEV4dGVybmFsR3JvdXBzOiBBcnJheTxFeHRlcm5hbEdyb3VwIHwgTHRpTGF1bmNoIHwgVW5pVGltZUdyb3VwPlxuXHRleHRlcm5hbFRlcm1JZDogbnVtYmVyXG5cdGhhbmRsZVNlbGVjdGVkRXh0ZXJuYWxHcm91cHM6IChleHRlcm5hbEdyb3VwczogQXJyYXk8RXh0ZXJuYWxHcm91cCB8IEx0aUxhdW5jaCB8IFVuaVRpbWVHcm91cD4pID0+IHZvaWRcblx0Z3JvdXBVc2VyUm9sZXM6IE1vZGVsQ29sbGVjdGlvbjxHcm91cFVzZXJSb2xlPlxuXHRkaXNhYmxlZD86IGJvb2xlYW5cblx0ZGlzYWJsZWRJbmZvTWVzc2FnZT86IHN0cmluZyB8IFJlYWN0LkpTWC5FbGVtZW50XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEdyb3Vwc0F0dGFjaFN0YXRlIHtcblx0b3duZXJTY2hlZHVsZXM/OiBEaWN0aW9uYXJ5PE93bmVyU2NoZWR1bGU+XG5cdGlzVW5pVGltZVNjaGVkdWxlTG9hZGluZ0RvbmU6IGJvb2xlYW5cblx0aXNTaG93aW5nRXJyb3JBbGVydDogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxHcm91cHNBdHRhY2ggZXh0ZW5kcyBDb21wb25lbnQ8RXh0ZXJuYWxHcm91cHNBdHRhY2hQcm9wcywgRXh0ZXJuYWxHcm91cHNBdHRhY2hTdGF0ZT4ge1xuXHRjb25zdHJ1Y3Rvcihwcm9wczogRXh0ZXJuYWxHcm91cHNBdHRhY2hQcm9wcykge1xuXHRcdHN1cGVyKHByb3BzKVxuXHRcdHRoaXMuc3RhdGUgPSB7XG5cdFx0XHRvd25lclNjaGVkdWxlczogdW5kZWZpbmVkLFxuXHRcdFx0aXNVbmlUaW1lU2NoZWR1bGVMb2FkaW5nRG9uZTogZmFsc2UsXG5cdFx0XHRpc1Nob3dpbmdFcnJvckFsZXJ0OiBmYWxzZVxuXHRcdH1cblx0fVxuXG5cdGNvbXBvbmVudERpZE1vdW50KCkge1xuXHRcdGNvbnN0IHsgZ3JvdXBVc2VyUm9sZXMsIGV4dGVybmFsVGVybUlkLCBzZWxlY3RlZEV4dGVybmFsR3JvdXBzIH0gPSB0aGlzLnByb3BzXG5cdFx0dGhpcy5zZXRPd25lclNjaGVkdWxlcyhnZXRNb2RlbEFycmF5KGdyb3VwVXNlclJvbGVzKSwgZXh0ZXJuYWxUZXJtSWQsIHNlbGVjdGVkRXh0ZXJuYWxHcm91cHMpXG5cdH1cblxuXHRjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcblx0XHRjb25zdCB7IG93bmVyU2NoZWR1bGVzIH0gPSB0aGlzLnN0YXRlXG5cdFx0Zm9yRWFjaChvd25lclNjaGVkdWxlcywgb3MgPT4gdW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKG9zLmhvb2tJZCkpXG5cdH1cblxuXHRjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBSZWFkb25seTxFeHRlcm5hbEdyb3Vwc0F0dGFjaFByb3BzPikge1xuXHRcdGNvbnN0IHsgZXh0ZXJuYWxUZXJtSWQ6IHByZXZFeHRlcm5hbFRlcm1JZCwgZ3JvdXBVc2VyUm9sZXM6IHByZXZHcm91cFVzZXJSb2xlcyB9ID0gcHJldlByb3BzXG5cdFx0Y29uc3QgeyBleHRlcm5hbFRlcm1JZCwgZ3JvdXBVc2VyUm9sZXMsIHNlbGVjdGVkRXh0ZXJuYWxHcm91cHMgfSA9IHRoaXMucHJvcHNcblx0XHQvLyBBc3N1bWVzIGdyb3VwIHVzZXIgcm9sZXMgYXJlIGNoYW5naW5nIG9uZSBhdCBhIHRpbWUuIENhbiBiZSBtYWRlIGZhbmNpZXIgaWYgdGhlIG5lZWQgYXJpc2VzXG5cdFx0aWYgKFxuXHRcdFx0cHJldkV4dGVybmFsVGVybUlkICE9PSBleHRlcm5hbFRlcm1JZCB8fFxuXHRcdFx0T2JqZWN0LmtleXMocHJldkdyb3VwVXNlclJvbGVzKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGdyb3VwVXNlclJvbGVzKS5sZW5ndGhcblx0XHQpIHtcblx0XHRcdHRoaXMuc2V0T3duZXJTY2hlZHVsZXMoZ2V0TW9kZWxBcnJheShncm91cFVzZXJSb2xlcyksIGV4dGVybmFsVGVybUlkLCBzZWxlY3RlZEV4dGVybmFsR3JvdXBzKVxuXHRcdH1cblx0fVxuXG5cdHNldE93bmVyU2NoZWR1bGVzID0gKFxuXHRcdGdyb3VwVXNlclJvbGVzOiBHcm91cFVzZXJSb2xlW10sXG5cdFx0ZXh0ZXJuYWxUZXJtSWQ6IG51bWJlcixcblx0XHRzZWxlY3RlZEV4dGVybmFsR3JvdXBzOiBBcnJheTxFeHRlcm5hbEdyb3VwIHwgTHRpTGF1bmNoIHwgVW5pVGltZUdyb3VwPlxuXHQpID0+IHtcblx0XHRjb25zdCB7IGNhbkNvbm5lY3RBbnlFeHRlcm5hbEdyb3VwcywgY2FuQ29ubmVjdE93bkV4dGVybmFsR3JvdXBzLCB1c2VySW5mbyB9ID0gdGhpcy5wcm9wc1xuXHRcdGNvbnN0IG93bmVycyA9IGdyb3VwVXNlclJvbGVzLmZpbHRlcihncm91cFVzZXJSb2xlID0+IHtcblx0XHRcdHJldHVybiBncm91cFVzZXJSb2xlLnJvbGUgPT09IEJBU0VfUk9MRS5HUk9VUF9PV05FUlxuXHRcdH0pXG5cblx0XHRjb25zdCBvd25lcnNJbml0aWFsU2NoZWR1bGVEYXRhOiBEaWN0aW9uYXJ5PE93bmVyU2NoZWR1bGU+ID0ge31cblx0XHRvd25lcnMuZm9yRWFjaChvd25lciA9PiB7XG5cdFx0XHRjb25zdCBvd25lckRhdGE6IE93bmVyU2NoZWR1bGUgPSB7XG5cdFx0XHRcdGhvb2tJZDogdXVpZHY0KCksXG5cdFx0XHRcdHN0YXR1czpcblx0XHRcdFx0XHRjYW5Db25uZWN0QW55RXh0ZXJuYWxHcm91cHMgfHwgKHVzZXJJbmZvLmlkID09PSBvd25lci5pZCAmJiBjYW5Db25uZWN0T3duRXh0ZXJuYWxHcm91cHMpXG5cdFx0XHRcdFx0XHQ/IE1PREVMX1NUQVRVUy5VTklOSVRJQUxJWkVEXG5cdFx0XHRcdFx0XHQ6IE1PREVMX1NUQVRVUy5SRUFEWSxcblx0XHRcdFx0b3duZXIsXG5cdFx0XHRcdGV4dGVybmFsR3JvdXBzOiAhKFxuXHRcdFx0XHRcdGNhbkNvbm5lY3RBbnlFeHRlcm5hbEdyb3VwcyB8fFxuXHRcdFx0XHRcdCh1c2VySW5mby5pZCA9PT0gb3duZXIuaWQgJiYgY2FuQ29ubmVjdE93bkV4dGVybmFsR3JvdXBzKVxuXHRcdFx0XHQpXG5cdFx0XHRcdFx0PyBzZWxlY3RlZEV4dGVybmFsR3JvdXBzLmZpbHRlcihzZWcgPT4gc2VnLnVzZXJJZCA9PT0gb3duZXIuaWQpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWRcblx0XHRcdH1cblx0XHRcdHNldChvd25lcnNJbml0aWFsU2NoZWR1bGVEYXRhLCBbb3duZXIudXNlcklkXSwgb3duZXJEYXRhKVxuXHRcdH0pXG5cdFx0dGhpcy5zZXRTdGF0ZShcblx0XHRcdHtcblx0XHRcdFx0b3duZXJTY2hlZHVsZXM6IG93bmVyc0luaXRpYWxTY2hlZHVsZURhdGEsXG5cdFx0XHRcdGlzVW5pVGltZVNjaGVkdWxlTG9hZGluZ0RvbmU6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0KCkgPT5cblx0XHRcdFx0Zm9yRWFjaChvd25lcnNJbml0aWFsU2NoZWR1bGVEYXRhLCAob3duZXJTY2hlZHVsZSwgdXNlcklkKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5nZXRPd25lclVuaVRpbWVHcm91cHMob3duZXJTY2hlZHVsZSwgdXNlcklkLCBleHRlcm5hbFRlcm1JZClcblx0XHRcdFx0fSlcblx0XHQpXG5cdH1cblxuXHRoYW5kbGVTZWxlY3RFeHRlcm5hbEdyb3VwcyA9IChldmVudDogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcblx0XHRjb25zdCBleHRlcm5hbElkID0gZXZlbnQudGFyZ2V0LnZhbHVlXG5cdFx0Y29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkXG5cdFx0Y29uc3QgeyBvcmlnaW5hbENvbm5lY3RlZEV4dGVybmFsR3JvdXBzLCBzZWxlY3RlZEV4dGVybmFsR3JvdXBzIH0gPSB0aGlzLnByb3BzXG5cblx0XHRjb25zdCBhbGxPd25lckV4dGVybmFsR3JvdXBzID0gbWFwKHRoaXMuc3RhdGUub3duZXJTY2hlZHVsZXMsIG9zID0+IG9zLmV4dGVybmFsR3JvdXBzKS5yZWR1Y2UoKGEsIGIpID0+XG5cdFx0XHQoYSB8fCBbXSkuY29uY2F0KGIgfHwgW10pXG5cdFx0KVxuXHRcdGNvbnN0IHNlbGVjdGVkRXh0ZXJuYWxHcm91cHNDb3B5ID0gc2VsZWN0ZWRFeHRlcm5hbEdyb3Vwcy5zbGljZSgpXG5cblx0XHRpZiAoY2hlY2tlZCkge1xuXHRcdFx0Y29uc3Qgb3JpZ2luYWxDb25uZWN0ZWRFeHRlcm5hbEdyb3VwID0gb3JpZ2luYWxDb25uZWN0ZWRFeHRlcm5hbEdyb3Vwcy5maW5kKFxuXHRcdFx0XHRvZWcgPT4gb2VnLmV4dGVybmFsSWQgPT09IGV4dGVybmFsSWRcblx0XHRcdClcblx0XHRcdGNvbnN0IHNlbGVjdGVkRXh0ZXJuYWxHcm91cCA9IG9yaWdpbmFsQ29ubmVjdGVkRXh0ZXJuYWxHcm91cFxuXHRcdFx0XHQ/IG9yaWdpbmFsQ29ubmVjdGVkRXh0ZXJuYWxHcm91cFxuXHRcdFx0XHQ6IGFsbE93bmVyRXh0ZXJuYWxHcm91cHM/LmZpbmQoYW8gPT4gYW8uZXh0ZXJuYWxJZCA9PT0gZXh0ZXJuYWxJZClcblxuXHRcdFx0aWYgKHNlbGVjdGVkRXh0ZXJuYWxHcm91cCkge1xuXHRcdFx0XHRzZWxlY3RlZEV4dGVybmFsR3JvdXBzQ29weS5wdXNoKHNlbGVjdGVkRXh0ZXJuYWxHcm91cClcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVtb3ZlKHNlbGVjdGVkRXh0ZXJuYWxHcm91cHNDb3B5LCBzZWcgPT4gc2VnLmV4dGVybmFsSWQgPT09IGV4dGVybmFsSWQpXG5cdFx0fVxuXG5cdFx0dGhpcy5wcm9wcy5oYW5kbGVTZWxlY3RlZEV4dGVybmFsR3JvdXBzKHNlbGVjdGVkRXh0ZXJuYWxHcm91cHNDb3B5KVxuXHR9XG5cblx0Z2V0T3duZXJVbmlUaW1lR3JvdXBzID0gKG93bmVyU2NoZWR1bGU6IE93bmVyU2NoZWR1bGUsIHVzZXJJZDogc3RyaW5nLCBleHRlcm5hbFRlcm1JZDogbnVtYmVyKSA9PiB7XG5cdFx0aWYgKGlzUHVyZHVlU2hhcmQoKSAmJiBvd25lclNjaGVkdWxlLnN0YXR1cyA9PT0gTU9ERUxfU1RBVFVTLlVOSU5JVElBTElaRUQgJiYgIW93bmVyU2NoZWR1bGUuZXh0ZXJuYWxHcm91cHMpIHtcblx0XHRcdHJlZ2lzdGVyTm9TdG9yZUFjdGlvbkhvb2sob3duZXJTY2hlZHVsZS5ob29rSWQsIChkYXRhOiBJbnN0cnVjdG9yU2NoZWR1bGUgfCBGZXRjaEVycm9yRGF0YSB8IG51bGwpID0+IHtcblx0XHRcdFx0dW5yZWdpc3Rlck5vU3RvcmVBY3Rpb25Ib29rKG93bmVyU2NoZWR1bGUuaG9va0lkKVxuXHRcdFx0XHRpZiAoIWRhdGEgfHwgaXNGZXRjaEVycm9yRGF0YShkYXRhKSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoeyBpc1Nob3dpbmdFcnJvckFsZXJ0OiB0cnVlLCBpc1VuaVRpbWVTY2hlZHVsZUxvYWRpbmdEb25lOiB0cnVlIH0pXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRVc2VyVW5pVGltZUdyb3Vwcyh1c2VySWQsIGRhdGEuZXh0ZXJuYWxHcm91cHMpXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHRkaXNwYXRjaE1vZGVsRmV0Y2hSZXF1ZXN0KHtcblx0XHRcdFx0bW9kZWxOYW1lOiAndW5pVGltZUluc3RydWN0b3JTY2hlZHVsZScsXG5cdFx0XHRcdHF1ZXJ5UGFyYW1zOiB7XG5cdFx0XHRcdFx0ZXh0ZXJuYWxUZXJtSWQsXG5cdFx0XHRcdFx0dXNlcklkXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG5vU3RvcmU6IHRydWUsXG5cdFx0XHRcdGd1aWQ6IG93bmVyU2NoZWR1bGUuaG9va0lkXG5cdFx0XHR9KVxuXHRcdH1cblx0fVxuXG5cdHNldFVzZXJVbmlUaW1lR3JvdXBzID0gKHVzZXJJZDogc3RyaW5nLCBleHRlcm5hbEdyb3VwczogVW5pVGltZUdyb3VwW10pID0+IHtcblx0XHQvLyBTZXR0aW5nIHRoZSB1c2VyJ3MgY291cnNlIHNlY3Rpb25zIGxvYWQgc3RhdHVzIHRvIGJlIHJlYWR5XG5cdFx0Y29uc3Qgb3duZXJTY2hlZHVsZXMgPSB0aGlzLnN0YXRlLm93bmVyU2NoZWR1bGVzIHx8IHt9XG5cdFx0b3duZXJTY2hlZHVsZXNbdXNlcklkXS5zdGF0dXMgPSBNT0RFTF9TVEFUVVMuUkVBRFlcblx0XHRvd25lclNjaGVkdWxlc1t1c2VySWRdLmV4dGVybmFsR3JvdXBzID0gZXh0ZXJuYWxHcm91cHNcblxuXHRcdGNvbnN0IGlzVW5pVGltZVNjaGVkdWxlTG9hZGluZ0RvbmUgPSBldmVyeShvd25lclNjaGVkdWxlcywgb3MgPT4gb3Muc3RhdHVzID09PSBNT0RFTF9TVEFUVVMuUkVBRFkpXG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdG93bmVyU2NoZWR1bGVzLFxuXHRcdFx0aXNVbmlUaW1lU2NoZWR1bGVMb2FkaW5nRG9uZVxuXHRcdH0pXG5cdH1cblxuXHRkaXNwbGF5T3duZXJTY2hlZHVsZXMgPSAob3duZXJTY2hlZHVsZXM6IERpY3Rpb25hcnk8T3duZXJTY2hlZHVsZT4pID0+IHtcblx0XHRyZXR1cm4gbWFwKG93bmVyU2NoZWR1bGVzLCBvcyA9PiB7XG5cdFx0XHRpZiAoISFvcy5leHRlcm5hbEdyb3VwcyAmJiBvcy5leHRlcm5hbEdyb3Vwcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PGRpdiBrZXk9e29zLmhvb2tJZH0+XG5cdFx0XHRcdFx0XHQ8aDQ+e2Rpc3BsYXlOYW1lKG9zLm93bmVyKX08L2g0PlxuXHRcdFx0XHRcdFx0e3RoaXMuZGlzcGxheVVuaVRpbWVHcm91cHMob3MuZXh0ZXJuYWxHcm91cHMpfVxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQpXG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXG5cdGRpc3BsYXlVbmlUaW1lR3JvdXBzID0gKGV4dGVybmFsR3JvdXBzOiBBcnJheTxFeHRlcm5hbEdyb3VwIHwgTHRpTGF1bmNoIHwgVW5pVGltZUdyb3VwPikgPT4ge1xuXHRcdGNvbnN0IHsgc2VsZWN0ZWRFeHRlcm5hbEdyb3VwcywgY2FuQ29ubmVjdEFueUV4dGVybmFsR3JvdXBzLCBjYW5Db25uZWN0T3duRXh0ZXJuYWxHcm91cHMsIHVzZXJJbmZvLCBkaXNhYmxlZCB9ID1cblx0XHRcdHRoaXMucHJvcHNcblxuXHRcdHJldHVybiBvcmRlckJ5KGV4dGVybmFsR3JvdXBzLCBbJ2Rlc2NyaXB0aW9uJ10pLm1hcCgoZWcsIGluZGV4KSA9PiB7XG5cdFx0XHRjb25zdCBpc0Nvbm5lY3RlZCA9IHNlbGVjdGVkRXh0ZXJuYWxHcm91cHMuc29tZShcblx0XHRcdFx0c2VnID0+XG5cdFx0XHRcdFx0c2VnLmV4dGVybmFsSWQgPT09IGVnLmV4dGVybmFsSWQgJiZcblx0XHRcdFx0XHRzZWcuZXh0ZXJuYWxQcm92aWRlcklkID09PSBlZy5leHRlcm5hbFByb3ZpZGVySWQgJiZcblx0XHRcdFx0XHRzZWcudXNlcklkID09PSBlZy51c2VySWRcblx0XHRcdClcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRjYW5Db25uZWN0QW55RXh0ZXJuYWxHcm91cHMgfHxcblx0XHRcdFx0KHVzZXJJbmZvLmlkID09PSBlZy51c2VySWQgJiYgY2FuQ29ubmVjdE93bkV4dGVybmFsR3JvdXBzKSB8fFxuXHRcdFx0XHRpc0Nvbm5lY3RlZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PEZvcm1DaGVja1xuXHRcdFx0XHRcdFx0aWQ9e2BleHRlcm5hbC1ncm91cC0ke2VnLmlkfWB9XG5cdFx0XHRcdFx0XHR0eXBlPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0a2V5PXtpbmRleH1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXt0aGlzLmhhbmRsZVNlbGVjdEV4dGVybmFsR3JvdXBzfVxuXHRcdFx0XHRcdFx0dmFsdWU9e2VnLmV4dGVybmFsSWR9XG5cdFx0XHRcdFx0XHRjaGVja2VkPXtpc0Nvbm5lY3RlZH1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXsodXNlckluZm8uaWQgIT09IGVnLnVzZXJJZCAmJiAhY2FuQ29ubmVjdEFueUV4dGVybmFsR3JvdXBzKSB8fCBkaXNhYmxlZH1cblx0XHRcdFx0XHRcdGxhYmVsPXtgJHtlZy5uYW1lfSAke2VnLmRlc2NyaXB0aW9uID8gYCgke2VnLmRlc2NyaXB0aW9ufSlgIDogJyd9YH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbFxuXHRcdH0pXG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cdFx0Y29uc3QgeyBkaXNhYmxlZEluZm9NZXNzYWdlIH0gPSB0aGlzLnByb3BzXG5cdFx0Y29uc3QgeyBvd25lclNjaGVkdWxlcywgaXNVbmlUaW1lU2NoZWR1bGVMb2FkaW5nRG9uZSwgaXNTaG93aW5nRXJyb3JBbGVydCB9ID0gdGhpcy5zdGF0ZVxuXHRcdGNvbnN0IGhhc0FueUV4dGVybmFsR3JvdXBzID0gc29tZShvd25lclNjaGVkdWxlcywgb3MgPT4gISFvcy5leHRlcm5hbEdyb3VwcyAmJiBvcy5leHRlcm5hbEdyb3Vwcy5sZW5ndGggPiAwKVxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdHshaXNVbmlUaW1lU2NoZWR1bGVMb2FkaW5nRG9uZSAmJiA8TG9hZGluZyAvPn1cblx0XHRcdFx0e2lzVW5pVGltZVNjaGVkdWxlTG9hZGluZ0RvbmUgJiYgKFxuXHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHR7IWhhc0FueUV4dGVybmFsR3JvdXBzICYmIChcblx0XHRcdFx0XHRcdFx0PEFsZXJ0V2l0aEljb24gdmFyaWFudD1cImluZm9cIj5cblx0XHRcdFx0XHRcdFx0XHQ8cD5ObyBjb3Vyc2Ugc2VjdGlvbnMgZWxpZ2libGUgZm9yIHJvc3RlciBzeW5jLjwvcD5cblx0XHRcdFx0XHRcdFx0PC9BbGVydFdpdGhJY29uPlxuXHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdHshIWRpc2FibGVkSW5mb01lc3NhZ2UgJiYgaGFzQW55RXh0ZXJuYWxHcm91cHMgJiYgKFxuXHRcdFx0XHRcdFx0XHQ8QWxlcnRXaXRoSWNvbiB2YXJpYW50PVwiaW5mb1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxwPntkaXNhYmxlZEluZm9NZXNzYWdlfTwvcD5cblx0XHRcdFx0XHRcdFx0PC9BbGVydFdpdGhJY29uPlxuXHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdHtpc1Nob3dpbmdFcnJvckFsZXJ0ICYmIChcblx0XHRcdFx0XHRcdFx0PEFsZXJ0V2l0aEljb25cblx0XHRcdFx0XHRcdFx0XHR2YXJpYW50PVwid2FybmluZ1wiXG5cdFx0XHRcdFx0XHRcdFx0b25DbG9zZT17KCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlzU2hvd2luZ0Vycm9yQWxlcnQ6IGZhbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdH19PlxuXHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cIm1hMFwiPk9vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIGxvYWRpbmcuIFBsZWFzZSB0cnkgYWdhaW4uPC9wPlxuXHRcdFx0XHRcdFx0XHQ8L0FsZXJ0V2l0aEljb24+XG5cdFx0XHRcdFx0XHQpfXsnICd9XG5cdFx0XHRcdFx0XHR7aGFzQW55RXh0ZXJuYWxHcm91cHMgJiYgISFvd25lclNjaGVkdWxlcyAmJiAoXG5cdFx0XHRcdFx0XHRcdDxGb3JtR3JvdXAgY2xhc3NOYW1lPVwibWw0IGY2XCI+e3RoaXMuZGlzcGxheU93bmVyU2NoZWR1bGVzKG93bmVyU2NoZWR1bGVzKX08L0Zvcm1Hcm91cD5cblx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdCl9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpXG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFZQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxLQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxjQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxRQUFBLEdBQUFiLE9BQUE7QUFBdUMsSUFBQWMsV0FBQSxHQUFBZCxPQUFBO0FBQUEsU0FBQUUsd0JBQUFhLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFmLHVCQUFBLFlBQUFBLENBQUFhLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFBQyxPQUFBLEVBQUFWLENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsZ0JBQUFQLENBQUEsSUFBQUQsQ0FBQSxnQkFBQUMsQ0FBQSxPQUFBYSxjQUFBLENBQUFDLElBQUEsQ0FBQWYsQ0FBQSxFQUFBQyxDQUFBLE9BQUFNLENBQUEsSUFBQUQsQ0FBQSxHQUFBVSxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBQyxDQUFBLE9BQUFNLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFQLENBQUEsRUFBQU0sQ0FBQSxJQUFBQyxDQUFBLENBQUFQLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFdBQUFPLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBc0JoQyxNQUFNa0Isb0JBQW9CLFNBQVNDLGdCQUFTLENBQXVEO0VBQ3pHQyxXQUFXQSxDQUFDQyxLQUFnQyxFQUFFO0lBQzdDLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQWIsT0FBQSw2QkE4Qk8sQ0FDbkJjLGNBQStCLEVBQy9CQyxjQUFzQixFQUN0QkMsc0JBQXVFLEtBQ25FO01BQ0osTUFBTTtRQUFFQywyQkFBMkI7UUFBRUMsMkJBQTJCO1FBQUVDO01BQVMsQ0FBQyxHQUFHLElBQUksQ0FBQ1AsS0FBSztNQUN6RixNQUFNUSxNQUFNLEdBQUdOLGNBQWMsQ0FBQ08sTUFBTSxDQUFDQyxhQUFhLElBQUk7UUFDckQsT0FBT0EsYUFBYSxDQUFDQyxJQUFJLEtBQUtDLG9CQUFTLENBQUNDLFdBQVc7TUFDcEQsQ0FBQyxDQUFDO01BRUYsTUFBTUMseUJBQW9ELEdBQUcsQ0FBQyxDQUFDO01BQy9ETixNQUFNLENBQUNPLE9BQU8sQ0FBQ0MsS0FBSyxJQUFJO1FBQ3ZCLE1BQU1DLFNBQXdCLEdBQUc7VUFDaENDLE1BQU0sRUFBRSxJQUFBQyxRQUFNLEVBQUMsQ0FBQztVQUNoQkMsTUFBTSxFQUNMZiwyQkFBMkIsSUFBS0UsUUFBUSxDQUFDYyxFQUFFLEtBQUtMLEtBQUssQ0FBQ0ssRUFBRSxJQUFJZiwyQkFBNEIsR0FDckZnQix1QkFBWSxDQUFDQyxhQUFhLEdBQzFCRCx1QkFBWSxDQUFDRSxLQUFLO1VBQ3RCUixLQUFLO1VBQ0xTLGNBQWMsRUFBRSxFQUNmcEIsMkJBQTJCLElBQzFCRSxRQUFRLENBQUNjLEVBQUUsS0FBS0wsS0FBSyxDQUFDSyxFQUFFLElBQUlmLDJCQUE0QixDQUN6RCxHQUNFRixzQkFBc0IsQ0FBQ0ssTUFBTSxDQUFDaUIsR0FBRyxJQUFJQSxHQUFHLENBQUNDLE1BQU0sS0FBS1gsS0FBSyxDQUFDSyxFQUFFLENBQUMsR0FDN0RPO1FBQ0osQ0FBQztRQUNELElBQUFyQyxXQUFHLEVBQUN1Qix5QkFBeUIsRUFBRSxDQUFDRSxLQUFLLENBQUNXLE1BQU0sQ0FBQyxFQUFFVixTQUFTLENBQUM7TUFDMUQsQ0FBQyxDQUFDO01BQ0YsSUFBSSxDQUFDWSxRQUFRLENBQ1o7UUFDQ0MsY0FBYyxFQUFFaEIseUJBQXlCO1FBQ3pDaUIsNEJBQTRCLEVBQUU7TUFDL0IsQ0FBQyxFQUNELE1BQ0MsSUFBQWhCLGVBQU8sRUFBQ0QseUJBQXlCLEVBQUUsQ0FBQ2tCLGFBQWEsRUFBRUwsTUFBTSxLQUFLO1FBQzdELElBQUksQ0FBQ00scUJBQXFCLENBQUNELGFBQWEsRUFBRUwsTUFBTSxFQUFFeEIsY0FBYyxDQUFDO01BQ2xFLENBQUMsQ0FDSCxDQUFDO0lBQ0YsQ0FBQztJQUFBLElBQUFGLGdCQUFBLENBQUFiLE9BQUEsc0NBRTZCOEMsS0FBb0MsSUFBSztNQUN0RSxNQUFNQyxVQUFVLEdBQUdELEtBQUssQ0FBQ0UsTUFBTSxDQUFDQyxLQUFLO01BQ3JDLE1BQU1DLE9BQU8sR0FBR0osS0FBSyxDQUFDRSxNQUFNLENBQUNFLE9BQU87TUFDcEMsTUFBTTtRQUFFQywrQkFBK0I7UUFBRW5DO01BQXVCLENBQUMsR0FBRyxJQUFJLENBQUNKLEtBQUs7TUFFOUUsTUFBTXdDLHNCQUFzQixHQUFHLElBQUFDLFdBQUcsRUFBQyxJQUFJLENBQUNDLEtBQUssQ0FBQ1osY0FBYyxFQUFFYSxFQUFFLElBQUlBLEVBQUUsQ0FBQ2xCLGNBQWMsQ0FBQyxDQUFDbUIsTUFBTSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUNsRyxDQUFDRCxDQUFDLElBQUksRUFBRSxFQUFFRSxNQUFNLENBQUNELENBQUMsSUFBSSxFQUFFLENBQ3pCLENBQUM7TUFDRCxNQUFNRSwwQkFBMEIsR0FBRzVDLHNCQUFzQixDQUFDNkMsS0FBSyxDQUFDLENBQUM7TUFFakUsSUFBSVgsT0FBTyxFQUFFO1FBQ1osTUFBTVksOEJBQThCLEdBQUdYLCtCQUErQixDQUFDWSxJQUFJLENBQzFFQyxHQUFHLElBQUlBLEdBQUcsQ0FBQ2pCLFVBQVUsS0FBS0EsVUFDM0IsQ0FBQztRQUNELE1BQU1rQixxQkFBcUIsR0FBR0gsOEJBQThCLEdBQ3pEQSw4QkFBOEIsR0FDOUJWLHNCQUFzQixFQUFFVyxJQUFJLENBQUNHLEVBQUUsSUFBSUEsRUFBRSxDQUFDbkIsVUFBVSxLQUFLQSxVQUFVLENBQUM7UUFFbkUsSUFBSWtCLHFCQUFxQixFQUFFO1VBQzFCTCwwQkFBMEIsQ0FBQ08sSUFBSSxDQUFDRixxQkFBcUIsQ0FBQztRQUN2RDtNQUNELENBQUMsTUFBTTtRQUNOLElBQUFHLGNBQU0sRUFBQ1IsMEJBQTBCLEVBQUV0QixHQUFHLElBQUlBLEdBQUcsQ0FBQ1MsVUFBVSxLQUFLQSxVQUFVLENBQUM7TUFDekU7TUFFQSxJQUFJLENBQUNuQyxLQUFLLENBQUN5RCw0QkFBNEIsQ0FBQ1QsMEJBQTBCLENBQUM7SUFDcEUsQ0FBQztJQUFBLElBQUEvQyxnQkFBQSxDQUFBYixPQUFBLGlDQUV1QixDQUFDNEMsYUFBNEIsRUFBRUwsTUFBYyxFQUFFeEIsY0FBc0IsS0FBSztNQUNqRyxJQUFJLElBQUF1RCxvQkFBYSxFQUFDLENBQUMsSUFBSTFCLGFBQWEsQ0FBQ1osTUFBTSxLQUFLRSx1QkFBWSxDQUFDQyxhQUFhLElBQUksQ0FBQ1MsYUFBYSxDQUFDUCxjQUFjLEVBQUU7UUFDNUcsSUFBQWtDLHNDQUF5QixFQUFDM0IsYUFBYSxDQUFDZCxNQUFNLEVBQUcwQyxJQUFnRCxJQUFLO1VBQ3JHLElBQUFDLHdDQUEyQixFQUFDN0IsYUFBYSxDQUFDZCxNQUFNLENBQUM7VUFDakQsSUFBSSxDQUFDMEMsSUFBSSxJQUFJLElBQUFFLHVCQUFnQixFQUFDRixJQUFJLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMvQixRQUFRLENBQUM7Y0FBRWtDLG1CQUFtQixFQUFFLElBQUk7Y0FBRWhDLDRCQUE0QixFQUFFO1lBQUssQ0FBQyxDQUFDO1VBQ2pGLENBQUMsTUFBTTtZQUNOLElBQUksQ0FBQ2lDLG9CQUFvQixDQUFDckMsTUFBTSxFQUFFaUMsSUFBSSxDQUFDbkMsY0FBYyxDQUFDO1VBQ3ZEO1FBQ0QsQ0FBQyxDQUFDO1FBQ0YsSUFBQXdDLHdDQUF5QixFQUFDO1VBQ3pCQyxTQUFTLEVBQUUsMkJBQTJCO1VBQ3RDQyxXQUFXLEVBQUU7WUFDWmhFLGNBQWM7WUFDZHdCO1VBQ0QsQ0FBQztVQUNEeUMsT0FBTyxFQUFFLElBQUk7VUFDYkMsSUFBSSxFQUFFckMsYUFBYSxDQUFDZDtRQUNyQixDQUFDLENBQUM7TUFDSDtJQUNELENBQUM7SUFBQSxJQUFBakIsZ0JBQUEsQ0FBQWIsT0FBQSxnQ0FFc0IsQ0FBQ3VDLE1BQWMsRUFBRUYsY0FBOEIsS0FBSztNQUMxRTtNQUNBLE1BQU1LLGNBQWMsR0FBRyxJQUFJLENBQUNZLEtBQUssQ0FBQ1osY0FBYyxJQUFJLENBQUMsQ0FBQztNQUN0REEsY0FBYyxDQUFDSCxNQUFNLENBQUMsQ0FBQ1AsTUFBTSxHQUFHRSx1QkFBWSxDQUFDRSxLQUFLO01BQ2xETSxjQUFjLENBQUNILE1BQU0sQ0FBQyxDQUFDRixjQUFjLEdBQUdBLGNBQWM7TUFFdEQsTUFBTU0sNEJBQTRCLEdBQUcsSUFBQXVDLGFBQUssRUFBQ3hDLGNBQWMsRUFBRWEsRUFBRSxJQUFJQSxFQUFFLENBQUN2QixNQUFNLEtBQUtFLHVCQUFZLENBQUNFLEtBQUssQ0FBQztNQUVsRyxJQUFJLENBQUNLLFFBQVEsQ0FBQztRQUNiQyxjQUFjO1FBQ2RDO01BQ0QsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUFBLElBQUE5QixnQkFBQSxDQUFBYixPQUFBLGlDQUV3QjBDLGNBQXlDLElBQUs7TUFDdEUsT0FBTyxJQUFBVyxXQUFHLEVBQUNYLGNBQWMsRUFBRWEsRUFBRSxJQUFJO1FBQ2hDLElBQUksQ0FBQyxDQUFDQSxFQUFFLENBQUNsQixjQUFjLElBQUlrQixFQUFFLENBQUNsQixjQUFjLENBQUM4QyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ3hELG9CQUNDLElBQUE5RixXQUFBLENBQUErRixJQUFBO1lBQUFDLFFBQUEsZ0JBQ0MsSUFBQWhHLFdBQUEsQ0FBQWlHLEdBQUE7Y0FBQUQsUUFBQSxFQUFLLElBQUFFLGlCQUFXLEVBQUNoQyxFQUFFLENBQUMzQixLQUFLO1lBQUMsQ0FBSyxDQUFDLEVBQy9CLElBQUksQ0FBQzRELG9CQUFvQixDQUFDakMsRUFBRSxDQUFDbEIsY0FBYyxDQUFDO1VBQUEsR0FGcENrQixFQUFFLENBQUN6QixNQUdSLENBQUM7UUFFUjtNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFBQSxJQUFBakIsZ0JBQUEsQ0FBQWIsT0FBQSxnQ0FFdUJxQyxjQUErRCxJQUFLO01BQzNGLE1BQU07UUFBRXJCLHNCQUFzQjtRQUFFQywyQkFBMkI7UUFBRUMsMkJBQTJCO1FBQUVDLFFBQVE7UUFBRXNFO01BQVMsQ0FBQyxHQUM3RyxJQUFJLENBQUM3RSxLQUFLO01BRVgsT0FBTyxJQUFBOEUsZUFBTyxFQUFDckQsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQ2dCLEdBQUcsQ0FBQyxDQUFDc0MsRUFBRSxFQUFFQyxLQUFLLEtBQUs7UUFDbEUsTUFBTUMsV0FBVyxHQUFHN0Usc0JBQXNCLENBQUM4RSxJQUFJLENBQzlDeEQsR0FBRyxJQUNGQSxHQUFHLENBQUNTLFVBQVUsS0FBSzRDLEVBQUUsQ0FBQzVDLFVBQVUsSUFDaENULEdBQUcsQ0FBQ3lELGtCQUFrQixLQUFLSixFQUFFLENBQUNJLGtCQUFrQixJQUNoRHpELEdBQUcsQ0FBQ0MsTUFBTSxLQUFLb0QsRUFBRSxDQUFDcEQsTUFDcEIsQ0FBQztRQUVELElBQ0N0QiwyQkFBMkIsSUFDMUJFLFFBQVEsQ0FBQ2MsRUFBRSxLQUFLMEQsRUFBRSxDQUFDcEQsTUFBTSxJQUFJckIsMkJBQTRCLElBQzFEMkUsV0FBVyxFQUNWO1VBQ0Qsb0JBQ0MsSUFBQXhHLFdBQUEsQ0FBQWlHLEdBQUEsRUFBQzVHLGVBQUEsQ0FBQXNILFNBQVM7WUFDVC9ELEVBQUUsRUFBRSxrQkFBa0IwRCxFQUFFLENBQUMxRCxFQUFFLEVBQUc7WUFDOUJnRSxJQUFJLEVBQUMsVUFBVTtZQUVmQyxRQUFRLEVBQUUsSUFBSSxDQUFDQywwQkFBMkI7WUFDMUNsRCxLQUFLLEVBQUUwQyxFQUFFLENBQUM1QyxVQUFXO1lBQ3JCRyxPQUFPLEVBQUUyQyxXQUFZO1lBQ3JCSixRQUFRLEVBQUd0RSxRQUFRLENBQUNjLEVBQUUsS0FBSzBELEVBQUUsQ0FBQ3BELE1BQU0sSUFBSSxDQUFDdEIsMkJBQTJCLElBQUt3RSxRQUFTO1lBQ2xGVyxLQUFLLEVBQUUsR0FBR1QsRUFBRSxDQUFDVSxJQUFJLElBQUlWLEVBQUUsQ0FBQ1csV0FBVyxHQUFHLElBQUlYLEVBQUUsQ0FBQ1csV0FBVyxHQUFHLEdBQUcsRUFBRTtVQUFHLEdBTDlEVixLQU1MLENBQUM7UUFFSjtRQUNBLE9BQU8sSUFBSTtNQUNaLENBQUMsQ0FBQztJQUNILENBQUM7SUFsTEEsSUFBSSxDQUFDdEMsS0FBSyxHQUFHO01BQ1paLGNBQWMsRUFBRUYsU0FBUztNQUN6QkcsNEJBQTRCLEVBQUUsS0FBSztNQUNuQ2dDLG1CQUFtQixFQUFFO0lBQ3RCLENBQUM7RUFDRjtFQUVBNEIsaUJBQWlCQSxDQUFBLEVBQUc7SUFDbkIsTUFBTTtNQUFFekYsY0FBYztNQUFFQyxjQUFjO01BQUVDO0lBQXVCLENBQUMsR0FBRyxJQUFJLENBQUNKLEtBQUs7SUFDN0UsSUFBSSxDQUFDNEYsaUJBQWlCLENBQUMsSUFBQUMsb0JBQWEsRUFBQzNGLGNBQWMsQ0FBQyxFQUFFQyxjQUFjLEVBQUVDLHNCQUFzQixDQUFDO0VBQzlGO0VBRUEwRixvQkFBb0JBLENBQUEsRUFBRztJQUN0QixNQUFNO01BQUVoRTtJQUFlLENBQUMsR0FBRyxJQUFJLENBQUNZLEtBQUs7SUFDckMsSUFBQTNCLGVBQU8sRUFBQ2UsY0FBYyxFQUFFYSxFQUFFLElBQUksSUFBQWtCLHdDQUEyQixFQUFDbEIsRUFBRSxDQUFDekIsTUFBTSxDQUFDLENBQUM7RUFDdEU7RUFFQTZFLGtCQUFrQkEsQ0FBQ0MsU0FBOEMsRUFBRTtJQUNsRSxNQUFNO01BQUU3RixjQUFjLEVBQUU4RixrQkFBa0I7TUFBRS9GLGNBQWMsRUFBRWdHO0lBQW1CLENBQUMsR0FBR0YsU0FBUztJQUM1RixNQUFNO01BQUU3RixjQUFjO01BQUVELGNBQWM7TUFBRUU7SUFBdUIsQ0FBQyxHQUFHLElBQUksQ0FBQ0osS0FBSztJQUM3RTtJQUNBLElBQ0NpRyxrQkFBa0IsS0FBSzlGLGNBQWMsSUFDckNULE1BQU0sQ0FBQ3lHLElBQUksQ0FBQ0Qsa0JBQWtCLENBQUMsQ0FBQzNCLE1BQU0sS0FBSzdFLE1BQU0sQ0FBQ3lHLElBQUksQ0FBQ2pHLGNBQWMsQ0FBQyxDQUFDcUUsTUFBTSxFQUM1RTtNQUNELElBQUksQ0FBQ3FCLGlCQUFpQixDQUFDLElBQUFDLG9CQUFhLEVBQUMzRixjQUFjLENBQUMsRUFBRUMsY0FBYyxFQUFFQyxzQkFBc0IsQ0FBQztJQUM5RjtFQUNEO0VBeUpBZ0csTUFBTUEsQ0FBQSxFQUFHO0lBQ1IsTUFBTTtNQUFFQztJQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDckcsS0FBSztJQUMxQyxNQUFNO01BQUU4QixjQUFjO01BQUVDLDRCQUE0QjtNQUFFZ0M7SUFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQ3JCLEtBQUs7SUFDeEYsTUFBTTRELG9CQUFvQixHQUFHLElBQUFwQixZQUFJLEVBQUNwRCxjQUFjLEVBQUVhLEVBQUUsSUFBSSxDQUFDLENBQUNBLEVBQUUsQ0FBQ2xCLGNBQWMsSUFBSWtCLEVBQUUsQ0FBQ2xCLGNBQWMsQ0FBQzhDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFNUcsb0JBQ0MsSUFBQTlGLFdBQUEsQ0FBQStGLElBQUE7TUFBQUMsUUFBQSxHQUNFLENBQUMxQyw0QkFBNEIsaUJBQUksSUFBQXRELFdBQUEsQ0FBQWlHLEdBQUEsRUFBQ2xHLFFBQUEsQ0FBQStILE9BQU8sSUFBRSxDQUFDLEVBQzVDeEUsNEJBQTRCLGlCQUM1QixJQUFBdEQsV0FBQSxDQUFBK0YsSUFBQTtRQUFBQyxRQUFBLEdBQ0UsQ0FBQzZCLG9CQUFvQixpQkFDckIsSUFBQTdILFdBQUEsQ0FBQWlHLEdBQUEsRUFBQ25HLGNBQUEsQ0FBQWlJLGFBQWE7VUFBQ0MsT0FBTyxFQUFDLE1BQU07VUFBQWhDLFFBQUEsZUFDNUIsSUFBQWhHLFdBQUEsQ0FBQWlHLEdBQUE7WUFBQUQsUUFBQSxFQUFHO1VBQTRDLENBQUc7UUFBQyxDQUNyQyxDQUNmLEVBQ0EsQ0FBQyxDQUFDNEIsbUJBQW1CLElBQUlDLG9CQUFvQixpQkFDN0MsSUFBQTdILFdBQUEsQ0FBQWlHLEdBQUEsRUFBQ25HLGNBQUEsQ0FBQWlJLGFBQWE7VUFBQ0MsT0FBTyxFQUFDLE1BQU07VUFBQWhDLFFBQUEsZUFDNUIsSUFBQWhHLFdBQUEsQ0FBQWlHLEdBQUE7WUFBQUQsUUFBQSxFQUFJNEI7VUFBbUIsQ0FBSTtRQUFDLENBQ2QsQ0FDZixFQUNBdEMsbUJBQW1CLGlCQUNuQixJQUFBdEYsV0FBQSxDQUFBaUcsR0FBQSxFQUFDbkcsY0FBQSxDQUFBaUksYUFBYTtVQUNiQyxPQUFPLEVBQUMsU0FBUztVQUNqQkMsT0FBTyxFQUFFQSxDQUFBLEtBQU07WUFDZCxJQUFJLENBQUM3RSxRQUFRLENBQUM7Y0FDYmtDLG1CQUFtQixFQUFFO1lBQ3RCLENBQUMsQ0FBQztVQUNILENBQUU7VUFBQVUsUUFBQSxlQUNGLElBQUFoRyxXQUFBLENBQUFpRyxHQUFBO1lBQUdpQyxTQUFTLEVBQUMsS0FBSztZQUFBbEMsUUFBQSxFQUFDO1VBQTJELENBQUc7UUFBQyxDQUNwRSxDQUNmLEVBQUUsR0FBRyxFQUNMNkIsb0JBQW9CLElBQUksQ0FBQyxDQUFDeEUsY0FBYyxpQkFDeEMsSUFBQXJELFdBQUEsQ0FBQWlHLEdBQUEsRUFBQzVHLGVBQUEsQ0FBQThJLFNBQVM7VUFBQ0QsU0FBUyxFQUFDLFFBQVE7VUFBQWxDLFFBQUEsRUFBRSxJQUFJLENBQUNvQyxxQkFBcUIsQ0FBQy9FLGNBQWM7UUFBQyxDQUFZLENBQ3JGO01BQUEsQ0FDRyxDQUNMO0lBQUEsQ0FDRyxDQUFDO0VBRVI7QUFDRDtBQUFDZ0YsT0FBQSxDQUFBakgsb0JBQUEsR0FBQUEsb0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=