@researchdatabox/redbox-core 0.0.1-beta.9228 → 0.0.1-beta.9474

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 (347) hide show
  1. package/dist/CoreController.d.ts +4 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +33 -1
  4. package/dist/DatastreamService.d.ts +5 -2
  5. package/dist/DatastreamService.d.ts.map +1 -1
  6. package/dist/QueueService.d.ts +1 -1
  7. package/dist/QueueService.d.ts.map +1 -1
  8. package/dist/RecordsService.d.ts +38 -2
  9. package/dist/RecordsService.d.ts.map +1 -1
  10. package/dist/StorageService.d.ts +2 -1
  11. package/dist/StorageService.d.ts.map +1 -1
  12. package/dist/api-routes/apib.d.ts +7 -0
  13. package/dist/api-routes/apib.d.ts.map +1 -0
  14. package/dist/api-routes/apib.js +43 -0
  15. package/dist/api-routes/define.d.ts +4 -0
  16. package/dist/api-routes/define.d.ts.map +1 -0
  17. package/dist/api-routes/define.js +29 -0
  18. package/dist/api-routes/groups/admin.d.ts +6 -0
  19. package/dist/api-routes/groups/admin.d.ts.map +1 -0
  20. package/dist/api-routes/groups/admin.js +53 -0
  21. package/dist/api-routes/groups/appconfig.d.ts +4 -0
  22. package/dist/api-routes/groups/appconfig.d.ts.map +1 -0
  23. package/dist/api-routes/groups/appconfig.js +33 -0
  24. package/dist/api-routes/groups/branding.d.ts +8 -0
  25. package/dist/api-routes/groups/branding.d.ts.map +1 -0
  26. package/dist/api-routes/groups/branding.js +61 -0
  27. package/dist/api-routes/groups/dashboard-config.d.ts +11 -0
  28. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -0
  29. package/dist/api-routes/groups/dashboard-config.js +90 -0
  30. package/dist/api-routes/groups/export.d.ts +3 -0
  31. package/dist/api-routes/groups/export.d.ts.map +1 -0
  32. package/dist/api-routes/groups/export.js +30 -0
  33. package/dist/api-routes/groups/forms.d.ts +4 -0
  34. package/dist/api-routes/groups/forms.d.ts.map +1 -0
  35. package/dist/api-routes/groups/forms.js +29 -0
  36. package/dist/api-routes/groups/integration-audit.d.ts +3 -0
  37. package/dist/api-routes/groups/integration-audit.d.ts.map +1 -0
  38. package/dist/api-routes/groups/integration-audit.js +35 -0
  39. package/dist/api-routes/groups/notifications.d.ts +3 -0
  40. package/dist/api-routes/groups/notifications.d.ts.map +1 -0
  41. package/dist/api-routes/groups/notifications.js +20 -0
  42. package/dist/api-routes/groups/records.d.ts +28 -0
  43. package/dist/api-routes/groups/records.d.ts.map +1 -0
  44. package/dist/api-routes/groups/records.js +349 -0
  45. package/dist/api-routes/groups/recordtypes.d.ts +4 -0
  46. package/dist/api-routes/groups/recordtypes.d.ts.map +1 -0
  47. package/dist/api-routes/groups/recordtypes.js +27 -0
  48. package/dist/api-routes/groups/reports.d.ts +3 -0
  49. package/dist/api-routes/groups/reports.d.ts.map +1 -0
  50. package/dist/api-routes/groups/reports.js +20 -0
  51. package/dist/api-routes/groups/search-query.d.ts +4 -0
  52. package/dist/api-routes/groups/search-query.d.ts.map +1 -0
  53. package/dist/api-routes/groups/search-query.js +51 -0
  54. package/dist/api-routes/groups/search.d.ts +6 -0
  55. package/dist/api-routes/groups/search.d.ts.map +1 -0
  56. package/dist/api-routes/groups/search.js +31 -0
  57. package/dist/api-routes/groups/translation.d.ts +8 -0
  58. package/dist/api-routes/groups/translation.d.ts.map +1 -0
  59. package/dist/api-routes/groups/translation.js +78 -0
  60. package/dist/api-routes/groups/users.d.ts +17 -0
  61. package/dist/api-routes/groups/users.d.ts.map +1 -0
  62. package/dist/api-routes/groups/users.js +149 -0
  63. package/dist/api-routes/groups/vocabulary.d.ts +10 -0
  64. package/dist/api-routes/groups/vocabulary.d.ts.map +1 -0
  65. package/dist/api-routes/groups/vocabulary.js +97 -0
  66. package/dist/api-routes/helpers.d.ts +29 -0
  67. package/dist/api-routes/helpers.d.ts.map +1 -0
  68. package/dist/api-routes/helpers.js +486 -0
  69. package/dist/api-routes/index.d.ts +25 -0
  70. package/dist/api-routes/index.d.ts.map +1 -0
  71. package/dist/api-routes/index.js +41 -0
  72. package/dist/api-routes/openapi.d.ts +27 -0
  73. package/dist/api-routes/openapi.d.ts.map +1 -0
  74. package/dist/api-routes/openapi.js +273 -0
  75. package/dist/api-routes/request-extraction.d.ts +14 -0
  76. package/dist/api-routes/request-extraction.d.ts.map +1 -0
  77. package/dist/api-routes/request-extraction.js +100 -0
  78. package/dist/api-routes/route-factory.d.ts +3 -0
  79. package/dist/api-routes/route-factory.d.ts.map +1 -0
  80. package/dist/api-routes/route-factory.js +30 -0
  81. package/dist/api-routes/route-registry.d.ts +24 -0
  82. package/dist/api-routes/route-registry.d.ts.map +1 -0
  83. package/dist/api-routes/route-registry.js +113 -0
  84. package/dist/api-routes/route-resolution.d.ts +4 -0
  85. package/dist/api-routes/route-resolution.d.ts.map +1 -0
  86. package/dist/api-routes/route-resolution.js +57 -0
  87. package/dist/api-routes/schemas/common.d.ts +37 -0
  88. package/dist/api-routes/schemas/common.d.ts.map +1 -0
  89. package/dist/api-routes/schemas/common.js +147 -0
  90. package/dist/api-routes/schemas/responses.d.ts +2904 -0
  91. package/dist/api-routes/schemas/responses.d.ts.map +1 -0
  92. package/dist/api-routes/schemas/responses.js +417 -0
  93. package/dist/api-routes/types.d.ts +70 -0
  94. package/dist/api-routes/types.d.ts.map +1 -0
  95. package/dist/api-routes/types.js +3 -0
  96. package/dist/api-routes/validation.d.ts +32 -0
  97. package/dist/api-routes/validation.d.ts.map +1 -0
  98. package/dist/api-routes/validation.js +142 -0
  99. package/dist/bootstrap.d.ts.map +1 -1
  100. package/dist/bootstrap.js +10 -10
  101. package/dist/config/agendaQueue.config.d.ts +25 -1
  102. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  103. package/dist/config/agendaQueue.config.js +19 -2
  104. package/dist/config/auth.config.d.ts.map +1 -1
  105. package/dist/config/auth.config.js +21 -2
  106. package/dist/config/brandingConfigurationDefaults.config.js +3 -3
  107. package/dist/config/dashboardtype.config.d.ts +5 -0
  108. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  109. package/dist/config/dashboardtype.config.js +1 -1
  110. package/dist/config/dashboardview.config.d.ts +24 -0
  111. package/dist/config/dashboardview.config.d.ts.map +1 -0
  112. package/dist/config/dashboardview.config.js +137 -0
  113. package/dist/config/dompurify.config.d.ts.map +1 -1
  114. package/dist/config/dompurify.config.js +2 -2
  115. package/dist/config/http.config.d.ts.map +1 -1
  116. package/dist/config/http.config.js +5 -3
  117. package/dist/config/index.d.ts +6 -0
  118. package/dist/config/index.d.ts.map +1 -1
  119. package/dist/config/index.js +4 -1
  120. package/dist/config/namedQuery.config.d.ts +10 -2
  121. package/dist/config/namedQuery.config.d.ts.map +1 -1
  122. package/dist/config/namedQuery.config.js +17 -17
  123. package/dist/config/policies.config.d.ts +3 -0
  124. package/dist/config/policies.config.d.ts.map +1 -1
  125. package/dist/config/policies.config.js +35 -1
  126. package/dist/config/record.config.d.ts.map +1 -1
  127. package/dist/config/record.config.js +2 -1
  128. package/dist/config/recordtype.config.d.ts +28 -0
  129. package/dist/config/recordtype.config.d.ts.map +1 -1
  130. package/dist/config/recordtype.config.js +85 -9
  131. package/dist/config/routes.config.d.ts +5 -2
  132. package/dist/config/routes.config.d.ts.map +1 -1
  133. package/dist/config/routes.config.js +24 -110
  134. package/dist/config/storage.config.d.ts +20 -2
  135. package/dist/config/storage.config.d.ts.map +1 -1
  136. package/dist/config/storage.config.js +2 -1
  137. package/dist/config/vocab.config.d.ts +30 -0
  138. package/dist/config/vocab.config.d.ts.map +1 -1
  139. package/dist/config/vocab.config.js +21 -1
  140. package/dist/config/webpack.config.d.ts.map +1 -1
  141. package/dist/config/webpack.config.js +13 -7
  142. package/dist/config/workflow.config.d.ts +0 -1
  143. package/dist/config/workflow.config.d.ts.map +1 -1
  144. package/dist/config/workflow.config.js +1 -137
  145. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  146. package/dist/configmodels/AdminSidebarConfig.js +1 -2
  147. package/dist/configmodels/ConfigModels.d.ts +1 -1
  148. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  149. package/dist/configmodels/ConfigModels.js +9 -1
  150. package/dist/configmodels/DashboardTableOverrideConfig.d.ts +1011 -0
  151. package/dist/configmodels/DashboardTableOverrideConfig.d.ts.map +1 -0
  152. package/dist/configmodels/DashboardTableOverrideConfig.js +138 -0
  153. package/dist/controllers/AdminController.d.ts +0 -1
  154. package/dist/controllers/AdminController.d.ts.map +1 -1
  155. package/dist/controllers/AdminController.js +2 -32
  156. package/dist/controllers/BrandingController.d.ts +3 -5
  157. package/dist/controllers/BrandingController.d.ts.map +1 -1
  158. package/dist/controllers/BrandingController.js +29 -21
  159. package/dist/controllers/DashboardConfigController.d.ts +8 -0
  160. package/dist/controllers/DashboardConfigController.d.ts.map +1 -0
  161. package/dist/controllers/DashboardConfigController.js +17 -0
  162. package/dist/controllers/DynamicAssetController.d.ts +1 -0
  163. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  164. package/dist/controllers/DynamicAssetController.js +20 -1
  165. package/dist/controllers/EmailController.d.ts.map +1 -1
  166. package/dist/controllers/EmailController.js +16 -12
  167. package/dist/controllers/FormVocabularyController.d.ts +1 -0
  168. package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
  169. package/dist/controllers/FormVocabularyController.js +94 -4
  170. package/dist/controllers/RecordController.d.ts +18 -1
  171. package/dist/controllers/RecordController.d.ts.map +1 -1
  172. package/dist/controllers/RecordController.js +274 -124
  173. package/dist/controllers/RenderViewController.d.ts.map +1 -1
  174. package/dist/controllers/RenderViewController.js +4 -2
  175. package/dist/controllers/TranslationController.d.ts.map +1 -1
  176. package/dist/controllers/TranslationController.js +3 -2
  177. package/dist/controllers/WorkspaceTypesController.d.ts +3 -2
  178. package/dist/controllers/WorkspaceTypesController.d.ts.map +1 -1
  179. package/dist/controllers/WorkspaceTypesController.js +120 -31
  180. package/dist/controllers/index.d.ts.map +1 -1
  181. package/dist/controllers/index.js +7 -4
  182. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  183. package/dist/controllers/webservice/AdminController.js +15 -16
  184. package/dist/controllers/webservice/AppConfigController.d.ts.map +1 -1
  185. package/dist/controllers/webservice/AppConfigController.js +19 -20
  186. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  187. package/dist/controllers/webservice/BrandingController.js +101 -48
  188. package/dist/controllers/webservice/DashboardConfigController.d.ts +26 -0
  189. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -0
  190. package/dist/controllers/webservice/DashboardConfigController.js +241 -0
  191. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  192. package/dist/controllers/webservice/ExportController.js +11 -11
  193. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  194. package/dist/controllers/webservice/FormManagementController.js +11 -13
  195. package/dist/controllers/webservice/RecordController.d.ts +4 -0
  196. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  197. package/dist/controllers/webservice/RecordController.js +428 -257
  198. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  199. package/dist/controllers/webservice/RecordTypeController.js +9 -10
  200. package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
  201. package/dist/controllers/webservice/ReportController.js +18 -20
  202. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  203. package/dist/controllers/webservice/SearchController.js +28 -35
  204. package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
  205. package/dist/controllers/webservice/TranslationController.js +61 -39
  206. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  207. package/dist/controllers/webservice/UserManagementController.js +112 -99
  208. package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
  209. package/dist/controllers/webservice/VocabularyController.js +76 -28
  210. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  211. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  212. package/dist/hooks/defineRedboxHook.js +4 -1
  213. package/dist/index.d.ts +2 -0
  214. package/dist/index.d.ts.map +1 -1
  215. package/dist/index.js +2 -1
  216. package/dist/loader/index.d.ts +6 -0
  217. package/dist/loader/index.d.ts.map +1 -1
  218. package/dist/loader/index.js +57 -10
  219. package/dist/middleware/redboxSession.js +1 -1
  220. package/dist/model/DashboardTypeResponseModel.d.ts +13 -1
  221. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  222. package/dist/model/DashboardTypeResponseModel.js +12 -4
  223. package/dist/model/DashboardViewResponseModel.d.ts +20 -0
  224. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -0
  225. package/dist/model/DashboardViewResponseModel.js +38 -0
  226. package/dist/model/RecordTypeResponseModel.d.ts +3 -1
  227. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  228. package/dist/model/RecordTypeResponseModel.js +4 -2
  229. package/dist/model/index.d.ts +1 -0
  230. package/dist/model/index.d.ts.map +1 -1
  231. package/dist/model/index.js +5 -2
  232. package/dist/model/storage/BrandingModel.d.ts +0 -16
  233. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  234. package/dist/model/storage/BrandingModel.js +2 -51
  235. package/dist/model/storage/DashboardTypeModel.d.ts +4 -0
  236. package/dist/model/storage/DashboardTypeModel.d.ts.map +1 -1
  237. package/dist/model/storage/RecordTypeModel.d.ts +16 -0
  238. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  239. package/dist/model/storage/RecordTypeModel.js +9 -1
  240. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  241. package/dist/policies/contentSecurityPolicy.js +23 -2
  242. package/dist/policies/index.d.ts +3 -0
  243. package/dist/policies/index.d.ts.map +1 -1
  244. package/dist/policies/index.js +6 -2
  245. package/dist/policies/validateApiContractRequest.d.ts +3 -0
  246. package/dist/policies/validateApiContractRequest.d.ts.map +1 -0
  247. package/dist/policies/validateApiContractRequest.js +74 -0
  248. package/dist/responses/badRequest.d.ts.map +1 -1
  249. package/dist/responses/badRequest.js +5 -3
  250. package/dist/responses/created.d.ts.map +1 -1
  251. package/dist/responses/created.js +5 -3
  252. package/dist/responses/forbidden.d.ts.map +1 -1
  253. package/dist/responses/forbidden.js +5 -3
  254. package/dist/responses/ok.d.ts.map +1 -1
  255. package/dist/responses/ok.js +5 -3
  256. package/dist/responses/serverError.d.ts.map +1 -1
  257. package/dist/responses/serverError.js +5 -3
  258. package/dist/responses/siteTitle.d.ts +6 -0
  259. package/dist/responses/siteTitle.d.ts.map +1 -0
  260. package/dist/responses/siteTitle.js +28 -0
  261. package/dist/sails.d.ts +7 -0
  262. package/dist/sails.d.ts.map +1 -1
  263. package/dist/services/AgendaQueueService.d.ts +38 -17
  264. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  265. package/dist/services/AgendaQueueService.js +311 -81
  266. package/dist/services/AttachmentMetadataService.d.ts +34 -0
  267. package/dist/services/AttachmentMetadataService.d.ts.map +1 -0
  268. package/dist/services/AttachmentMetadataService.js +133 -0
  269. package/dist/services/BrandingLogoService.d.ts +6 -8
  270. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  271. package/dist/services/BrandingLogoService.js +66 -72
  272. package/dist/services/DashboardConfigService.d.ts +71 -0
  273. package/dist/services/DashboardConfigService.d.ts.map +1 -0
  274. package/dist/services/DashboardConfigService.js +309 -0
  275. package/dist/services/DashboardTypesService.d.ts +61 -63
  276. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  277. package/dist/services/DashboardTypesService.js +361 -198
  278. package/dist/services/DoiService.d.ts +11 -0
  279. package/dist/services/DoiService.d.ts.map +1 -1
  280. package/dist/services/DoiService.js +206 -1
  281. package/dist/services/FigshareService.d.ts.map +1 -1
  282. package/dist/services/FigshareService.js +5 -1
  283. package/dist/services/FormVocabularyService.d.ts +45 -0
  284. package/dist/services/FormVocabularyService.d.ts.map +1 -0
  285. package/dist/services/FormVocabularyService.js +326 -0
  286. package/dist/services/I18nEntriesService.d.ts +3 -0
  287. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  288. package/dist/services/I18nEntriesService.js +14 -2
  289. package/dist/services/NamedQueryService.d.ts +27 -9
  290. package/dist/services/NamedQueryService.d.ts.map +1 -1
  291. package/dist/services/NamedQueryService.js +223 -55
  292. package/dist/services/RDMPService.d.ts.map +1 -1
  293. package/dist/services/RDMPService.js +3 -2
  294. package/dist/services/RecordsService.d.ts +8 -2
  295. package/dist/services/RecordsService.d.ts.map +1 -1
  296. package/dist/services/RecordsService.js +64 -16
  297. package/dist/services/ReportsService.d.ts.map +1 -1
  298. package/dist/services/ReportsService.js +7 -1
  299. package/dist/services/StandardDatastreamService.d.ts +32 -5
  300. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  301. package/dist/services/StandardDatastreamService.js +490 -38
  302. package/dist/services/StorageManagerService.d.ts +12 -1
  303. package/dist/services/StorageManagerService.d.ts.map +1 -1
  304. package/dist/services/StorageManagerService.js +72 -7
  305. package/dist/services/index.d.ts +9 -3
  306. package/dist/services/index.d.ts.map +1 -1
  307. package/dist/services/index.js +17 -7
  308. package/dist/storage/GridFSDriver.d.ts +101 -0
  309. package/dist/storage/GridFSDriver.d.ts.map +1 -0
  310. package/dist/storage/GridFSDriver.js +291 -0
  311. package/dist/storage/TusStorageManagerDataStore.d.ts +49 -0
  312. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -0
  313. package/dist/storage/TusStorageManagerDataStore.js +300 -0
  314. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  315. package/dist/visitor/construct.visitor.js +6 -3
  316. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  317. package/dist/visitor/migrate-config-v4-v5.visitor.js +19 -1
  318. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  319. package/dist/visitor/validator.visitor.js +11 -3
  320. package/dist/waterline-models/AttachmentAccessAudit.d.ts +26 -0
  321. package/dist/waterline-models/AttachmentAccessAudit.d.ts.map +1 -0
  322. package/dist/waterline-models/AttachmentAccessAudit.js +63 -0
  323. package/dist/waterline-models/AttachmentMetadata.d.ts +40 -0
  324. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -0
  325. package/dist/waterline-models/AttachmentMetadata.js +147 -0
  326. package/dist/waterline-models/BrandingConfig.d.ts +0 -2
  327. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  328. package/dist/waterline-models/BrandingConfig.js +1 -6
  329. package/dist/waterline-models/DashboardType.d.ts +7 -0
  330. package/dist/waterline-models/DashboardType.d.ts.map +1 -1
  331. package/dist/waterline-models/DashboardType.js +16 -1
  332. package/dist/waterline-models/I18nTranslation.d.ts +2 -0
  333. package/dist/waterline-models/I18nTranslation.d.ts.map +1 -1
  334. package/dist/waterline-models/I18nTranslation.js +6 -1
  335. package/dist/waterline-models/NamedQuery.d.ts +6 -0
  336. package/dist/waterline-models/NamedQuery.d.ts.map +1 -1
  337. package/dist/waterline-models/NamedQuery.js +16 -1
  338. package/dist/waterline-models/index.d.ts +4 -0
  339. package/dist/waterline-models/index.d.ts.map +1 -1
  340. package/dist/waterline-models/index.js +7 -1
  341. package/package.json +31 -21
  342. package/dist/controllers/VocabController.d.ts +0 -43
  343. package/dist/controllers/VocabController.d.ts.map +0 -1
  344. package/dist/controllers/VocabController.js +0 -190
  345. package/dist/services/VocabService.d.ts +0 -81
  346. package/dist/services/VocabService.d.ts.map +0 -1
  347. package/dist/services/VocabService.js +0 -424
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ // Copyright (c) 2017 Queensland Cyber Infrastructure Foundation (http://www.qcif.edu.au/)
3
+ //
4
+ // GNU GENERAL PUBLIC LICENSE
5
+ // Version 2, June 1991
6
+ //
7
+ // This program is free software; you can redistribute it and/or modify
8
+ // it under the terms of the GNU General Public License as published by
9
+ // the Free Software Foundation; either version 2 of the License, or
10
+ // (at your option) any later version.
11
+ //
12
+ // This program is distributed in the hope that it will be useful,
13
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ // GNU General Public License for more details.
16
+ //
17
+ // You should have received a copy of the GNU General Public License along
18
+ // with this program; if not, write to the Free Software Foundation, Inc.,
19
+ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.Services = void 0;
25
+ const CoreService_1 = require("../CoreService");
26
+ const axios_1 = __importDefault(require("axios"));
27
+ var Services;
28
+ (function (Services) {
29
+ class FormVocabulary extends CoreService_1.Services.Core.Service {
30
+ _exportedMethods = [
31
+ 'findInExternalService',
32
+ 'findInServiceLookup',
33
+ 'findRecords',
34
+ 'buildNamedQueryParamMap',
35
+ 'getResultObjectMappings'
36
+ ];
37
+ async findRecords(sourceType, brand, searchString, start, rows, user) {
38
+ const normalizedSourceType = String(sourceType ?? '').trim();
39
+ const queryConfig = sails.config.vocab.queries?.[normalizedSourceType];
40
+ if (!this.isPlainObject(queryConfig)) {
41
+ throw this.createFormVocabularyError('query-vocab-not-configured', `No query vocabulary configured for '${normalizedSourceType}'.`);
42
+ }
43
+ if (queryConfig.querySource == 'database') {
44
+ const queryName = String(queryConfig.databaseQuery?.queryName ?? '').trim();
45
+ if (!queryName) {
46
+ throw this.createFormVocabularyError('query-vocab-invalid-config', `Query vocabulary '${normalizedSourceType}' is missing a database query name.`);
47
+ }
48
+ const namedQueryConfig = await NamedQueryService.getNamedQueryConfig(brand, queryName);
49
+ if (!namedQueryConfig) {
50
+ throw this.createFormVocabularyError('query-vocab-invalid-config', `Query vocabulary '${normalizedSourceType}' references unknown named query '${queryName}'.`);
51
+ }
52
+ const paramMap = this.buildNamedQueryParamMap(queryConfig, searchString, user);
53
+ const dbResults = await NamedQueryService.performNamedQueryFromConfig(namedQueryConfig, paramMap, brand, start, rows);
54
+ if (queryConfig.resultObjectMapping) {
55
+ return this.getResultObjectMappings(dbResults, queryConfig);
56
+ }
57
+ else {
58
+ return dbResults;
59
+ }
60
+ }
61
+ else if (queryConfig.querySource == 'solr') {
62
+ const searchCore = String(queryConfig.searchQuery?.searchCore ?? '').trim();
63
+ if (!searchCore) {
64
+ throw this.createFormVocabularyError('query-vocab-invalid-config', `Query vocabulary '${normalizedSourceType}' is missing a search core.`);
65
+ }
66
+ const solrQuery = this.buildSolrParams(brand, searchString, queryConfig, start, rows, 'json', user);
67
+ const solrResults = await this.getSearchService().searchAdvanced(searchCore, '', solrQuery);
68
+ if (queryConfig.resultObjectMapping) {
69
+ return this.getResultObjectMappings(solrResults, queryConfig);
70
+ }
71
+ else {
72
+ return solrResults;
73
+ }
74
+ }
75
+ throw this.createFormVocabularyError('query-vocab-invalid-config', `Query vocabulary '${normalizedSourceType}' has unsupported querySource '${String(queryConfig.querySource ?? '')}'.`);
76
+ }
77
+ async findInExternalService(providerName, params) {
78
+ const normalizedProviderName = String(providerName ?? '').trim();
79
+ const providerConfig = sails.config.vocab.external?.[normalizedProviderName];
80
+ if (!this.isPlainObject(providerConfig)) {
81
+ throw this.createFormVocabularyError('external-vocab-not-configured', `No external vocabulary provider configured for '${normalizedProviderName}'.`);
82
+ }
83
+ const method = providerConfig.method;
84
+ let url = String(providerConfig.url ?? '').trim();
85
+ if (!url || (method !== 'get' && method !== 'post')) {
86
+ throw this.createFormVocabularyError('external-vocab-invalid-config', `External vocabulary provider '${normalizedProviderName}' has an invalid method or URL.`);
87
+ }
88
+ const templateFunction = this.getTemplateStringFunction(url, normalizedProviderName);
89
+ const optionMap = this.isPlainObject(params?.options) ? params.options : {};
90
+ url = templateFunction(optionMap);
91
+ sails.log.info(url);
92
+ const options = this.isPlainObject(providerConfig.options) ? providerConfig.options : {};
93
+ if (method == 'post') {
94
+ const post = {
95
+ method: method,
96
+ url: url,
97
+ data: params?.postBody,
98
+ params: options
99
+ };
100
+ sails.log.verbose(post);
101
+ const response = await (0, axios_1.default)(post);
102
+ return response.data;
103
+ }
104
+ else {
105
+ const getSearch = {
106
+ method: method,
107
+ url: url,
108
+ params: options
109
+ };
110
+ sails.log.verbose(getSearch);
111
+ const response = await (0, axios_1.default)(getSearch);
112
+ return response.data;
113
+ }
114
+ }
115
+ async findInServiceLookup(serviceId, requestParams) {
116
+ const normalizedServiceId = String(serviceId ?? '').trim();
117
+ const serviceConfig = sails.config.vocab.services?.[normalizedServiceId];
118
+ if (!serviceConfig) {
119
+ throw this.createServiceLookupError('service-lookup-not-configured', `No service lookup configured for '${normalizedServiceId}'.`);
120
+ }
121
+ const serviceName = String(serviceConfig.serviceName ?? '').trim();
122
+ const methodName = String(serviceConfig.methodName ?? '').trim();
123
+ if (!serviceName || !methodName) {
124
+ throw this.createServiceLookupError('service-lookup-invalid-target', `Service lookup '${normalizedServiceId}' has an invalid target configuration.`);
125
+ }
126
+ const servicesRegistry = sails.services;
127
+ const targetService = servicesRegistry?.[serviceName]
128
+ ?? servicesRegistry?.[serviceName.toLowerCase()]
129
+ ?? Object.entries(servicesRegistry ?? {}).find(([registeredServiceName]) => registeredServiceName.toLowerCase() === serviceName.toLowerCase())?.[1];
130
+ const targetMethod = targetService?.[methodName];
131
+ if (!targetService || typeof targetMethod !== 'function') {
132
+ throw this.createServiceLookupError('service-lookup-invalid-target', `Service lookup '${normalizedServiceId}' could not resolve ${serviceName}.${methodName}().`);
133
+ }
134
+ const lookupRequest = {
135
+ serviceId: normalizedServiceId,
136
+ search: String(requestParams.search ?? ''),
137
+ start: requestParams.start,
138
+ rows: requestParams.rows,
139
+ branding: String(requestParams.branding ?? ''),
140
+ portal: String(requestParams.portal ?? ''),
141
+ brand: requestParams.brand,
142
+ user: this.isPlainObject(requestParams.user) ? requestParams.user : {},
143
+ options: serviceConfig.options ?? {},
144
+ };
145
+ const response = await targetMethod.call(targetService, lookupRequest);
146
+ return this.normalizeServiceLookupResponse(normalizedServiceId, response);
147
+ }
148
+ buildNamedQueryParamMap(queryConfig, searchString, user) {
149
+ const paramMap = {};
150
+ if (queryConfig.queryField.type == 'text') {
151
+ paramMap[queryConfig.queryField.property] = searchString;
152
+ }
153
+ if (queryConfig.userQueryFields != null) {
154
+ for (const userQueryField of queryConfig.userQueryFields) {
155
+ paramMap[userQueryField.property] = _.get(user, userQueryField.userValueProperty, null);
156
+ }
157
+ }
158
+ return paramMap;
159
+ }
160
+ getResultObjectMappings(results, queryConfig) {
161
+ let responseRecords = _.get(results, 'response.docs', '');
162
+ if (responseRecords == '') {
163
+ responseRecords = results.records ?? [];
164
+ }
165
+ const response = [];
166
+ const that = this;
167
+ const resultObjectMapping = queryConfig.resultObjectMapping;
168
+ for (const record of responseRecords) {
169
+ try {
170
+ const variables = {
171
+ record: record,
172
+ _: _
173
+ };
174
+ let defaultMetadata = {};
175
+ if (!_.isEmpty(resultObjectMapping)) {
176
+ const resultMetadata = _.cloneDeep(resultObjectMapping);
177
+ _.forOwn(resultObjectMapping, function (value, key) {
178
+ _.set(resultMetadata, key, that.runTemplate(value, variables));
179
+ });
180
+ defaultMetadata = resultMetadata;
181
+ response.push(defaultMetadata);
182
+ }
183
+ }
184
+ catch (_error) {
185
+ continue;
186
+ }
187
+ }
188
+ return response;
189
+ }
190
+ buildSolrParams(brand, searchString, queryConfig, start, rows, format = 'json', user) {
191
+ let query = `${queryConfig.searchQuery.baseQuery}&sort=date_object_modified desc&version=2.2&start=${start}&rows=${rows}`;
192
+ query = query + `&fq=metaMetadata_brandId:${brand.id}&wt=${format}`;
193
+ if (queryConfig.queryField.type == 'text') {
194
+ const value = searchString;
195
+ if (!_.isEmpty(value)) {
196
+ const searchProperty = queryConfig.queryField.property;
197
+ query = query + '&fq=' + searchProperty + ':';
198
+ if (value.indexOf('*') != -1) {
199
+ query = query + value.replaceAll('*', '') + '*';
200
+ }
201
+ else {
202
+ query = query + value + '*';
203
+ }
204
+ }
205
+ }
206
+ if (queryConfig.userQueryFields != null) {
207
+ for (const userQueryField of queryConfig.userQueryFields) {
208
+ const searchProperty = userQueryField.property;
209
+ query = query + '&fq=' + searchProperty + ':' + _.get(user, userQueryField.userValueProperty, null);
210
+ }
211
+ }
212
+ return query;
213
+ }
214
+ getSearchService() {
215
+ return sails.services[sails.config.search.serviceName];
216
+ }
217
+ runTemplate(templateOrPath, variables) {
218
+ if (templateOrPath && templateOrPath.indexOf('<%') != -1) {
219
+ return _.template(templateOrPath)(variables);
220
+ }
221
+ return _.get(variables, templateOrPath);
222
+ }
223
+ getTemplateStringFunction(template, providerName) {
224
+ return (map) => template.replace(/\$\{([^}]+)\}/g, (_match, rawPath) => {
225
+ const propertyPath = String(rawPath ?? '').trim();
226
+ if (!this.isSafeTemplatePath(propertyPath)) {
227
+ throw this.createFormVocabularyError('external-vocab-invalid-config', `External vocabulary provider '${providerName}' contains unsupported template path '${propertyPath}'.`);
228
+ }
229
+ const value = _.get(map, propertyPath);
230
+ return this.normalizeTemplateValue(value);
231
+ });
232
+ }
233
+ normalizeServiceLookupResponse(serviceId, response) {
234
+ if (!this.isPlainObject(response)) {
235
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' returned a non-object response.`);
236
+ }
237
+ const data = response['data'];
238
+ if (!Array.isArray(data)) {
239
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' response is missing a data array.`);
240
+ }
241
+ const normalized = {
242
+ data: data.map((item, index) => this.normalizeServiceLookupOption(serviceId, item, index)),
243
+ };
244
+ if (response['meta'] !== undefined) {
245
+ if (!this.isPlainObject(response['meta'])) {
246
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' response meta must be an object.`);
247
+ }
248
+ normalized.meta = response['meta'];
249
+ }
250
+ return normalized;
251
+ }
252
+ normalizeServiceLookupOption(serviceId, item, index) {
253
+ if (!this.isPlainObject(item)) {
254
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' returned a non-object option at index ${index}.`);
255
+ }
256
+ const label = this.normalizeServiceLookupString(item['label']);
257
+ const value = this.normalizeServiceLookupString(item['value']);
258
+ if (!label || !value) {
259
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' returned an option without a valid label/value at index ${index}.`);
260
+ }
261
+ if (item['historical'] !== undefined && typeof item['historical'] !== 'boolean') {
262
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' returned a non-boolean historical flag at index ${index}.`);
263
+ }
264
+ if (item['disabled'] !== undefined && typeof item['disabled'] !== 'boolean') {
265
+ throw this.createServiceLookupError('service-lookup-invalid-response', `Service lookup '${serviceId}' returned a non-boolean disabled flag at index ${index}.`);
266
+ }
267
+ const normalized = {
268
+ label,
269
+ value,
270
+ sourceType: 'service',
271
+ };
272
+ if (item['historical'] === true) {
273
+ normalized.historical = true;
274
+ }
275
+ if (item['disabled'] === true) {
276
+ normalized.disabled = true;
277
+ }
278
+ if (Object.prototype.hasOwnProperty.call(item, 'raw')) {
279
+ normalized.raw = item['raw'];
280
+ }
281
+ return normalized;
282
+ }
283
+ normalizeServiceLookupString(value) {
284
+ if (typeof value === 'string') {
285
+ const trimmed = value.trim();
286
+ return trimmed ? trimmed : null;
287
+ }
288
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
289
+ return String(value);
290
+ }
291
+ return null;
292
+ }
293
+ isPlainObject(value) {
294
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
295
+ }
296
+ isSafeTemplatePath(propertyPath) {
297
+ if (!/^[A-Za-z_$][A-Za-z0-9_$]*(?:\.(?:[A-Za-z_$][A-Za-z0-9_$]*|\d+))*$/.test(propertyPath)) {
298
+ return false;
299
+ }
300
+ return propertyPath
301
+ .split('.')
302
+ .every(segment => !['__proto__', 'constructor', 'prototype'].includes(segment));
303
+ }
304
+ normalizeTemplateValue(value) {
305
+ if (typeof value === 'string') {
306
+ return value;
307
+ }
308
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
309
+ return String(value);
310
+ }
311
+ return '';
312
+ }
313
+ createFormVocabularyError(code, message) {
314
+ const error = new Error(message);
315
+ error.code = code;
316
+ return error;
317
+ }
318
+ createServiceLookupError(code, message) {
319
+ const error = new Error(message);
320
+ error.code = code;
321
+ return error;
322
+ }
323
+ }
324
+ Services.FormVocabulary = FormVocabulary;
325
+ })(Services || (exports.Services = Services = {}));
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVZvY2FidWxhcnlTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0Zvcm1Wb2NhYnVsYXJ5U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7OztBQVk5RCxnREFBc0Q7QUFDdEQsa0RBQTBCO0FBRTFCLElBQWlCLFFBQVEsQ0ErWnhCO0FBL1pELFdBQWlCLFFBQVE7SUFzQnZCLE1BQWEsY0FBZSxTQUFRLHNCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87UUFFcEMsZ0JBQWdCLEdBQWE7WUFDOUMsdUJBQXVCO1lBQ3ZCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IseUJBQXlCO1lBQ3pCLHlCQUF5QjtTQUMxQixDQUFDO1FBRUssS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFrQixFQUFFLEtBQW9CLEVBQUUsWUFBb0IsRUFBRSxLQUFhLEVBQUUsSUFBWSxFQUFFLElBQStCO1lBQ25KLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBaUMsQ0FBQztZQUN2RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksQ0FBQyx5QkFB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
@@ -8,6 +8,7 @@ export declare namespace Services {
8
8
  type MetaEntry = {
9
9
  category?: string;
10
10
  description?: string;
11
+ contentFormat?: unknown;
11
12
  };
12
13
  type MetaMap = Record<string, MetaEntry>;
13
14
  export function isBundle(obj: unknown): obj is Bundle;
@@ -33,6 +34,7 @@ export declare namespace Services {
33
34
  setEntry(branding: BrandingModel, locale: string, namespace: string, key: string, value: unknown, options?: {
34
35
  bundleId?: string;
35
36
  category?: string;
37
+ contentFormat?: unknown;
36
38
  description?: string;
37
39
  noReload?: boolean;
38
40
  }): Promise<I18nTranslationAttributes | null>;
@@ -50,6 +52,7 @@ export declare namespace Services {
50
52
  value?: unknown;
51
53
  }>): I18nData;
52
54
  syncEntriesFromBundle(bundleOrId: I18nBundleAttributes | string | number, overwrite?: boolean): Promise<void>;
55
+ private normalizeContentFormat;
53
56
  /**
54
57
  * Load centralized metadata from language-defaults/meta.json.
55
58
  * This metadata provides additional context and information about
@@ -1 +1 @@
1
- {"version":3,"file":"I18nEntriesService.d.ts","sourceRoot":"","sources":["../../src/services/I18nEntriesService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"I18nEntriesService.d.ts","sourceRoot":"","sources":["../../src/services/I18nEntriesService.ts"],"names":[],"mappings":"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"}
@@ -216,6 +216,9 @@ var Services;
216
216
  updates.category = options.category;
217
217
  if (options?.description !== undefined)
218
218
  updates.description = options.description;
219
+ const contentFormat = this.normalizeContentFormat(options?.contentFormat);
220
+ if (contentFormat !== undefined)
221
+ updates.contentFormat = contentFormat;
219
222
  const saved = (existing
220
223
  ? await I18nTranslation.updateOne({ id: existing.id }).set(updates)
221
224
  : await I18nTranslation.create(updates));
@@ -388,7 +391,13 @@ var Services;
388
391
  if (val === null || val === undefined) {
389
392
  val = key; // preserve intentional empty strings, but avoid nullish bundle values
390
393
  }
391
- await this.setEntry(brandingModel, safeLocale, safeNamespace, key, val, { bundleId: bundleId != null ? String(bundleId) : undefined, category: meta?.[key]?.category, description: meta?.[key]?.description, noReload: true });
394
+ await this.setEntry(brandingModel, safeLocale, safeNamespace, key, val, {
395
+ bundleId: bundleId != null ? String(bundleId) : undefined,
396
+ category: meta?.[key]?.category,
397
+ contentFormat: meta?.[key]?.contentFormat,
398
+ description: meta?.[key]?.description,
399
+ noReload: true
400
+ });
392
401
  }
393
402
  for (const obsoleteKey of existingKeysSet) {
394
403
  try {
@@ -406,6 +415,9 @@ var Services;
406
415
  // ignore reload failures after the write has completed
407
416
  }
408
417
  }
418
+ normalizeContentFormat(value) {
419
+ return value === 'html' || value === 'plain' ? value : undefined;
420
+ }
409
421
  /**
410
422
  * Load centralized metadata from language-defaults/meta.json.
411
423
  * This metadata provides additional context and information about
@@ -466,4 +478,4 @@ var Services;
466
478
  ], I18nEntries);
467
479
  Services.I18nEntries = I18nEntries;
468
480
  })(Services || (exports.Services = Services = {}));
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSTE4bkVudHJpZXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0kxOG5FbnRyaWVzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7Ozs7OztBQUU5RCxnREFBc0Q7QUFFdEQsc0dBQXlGO0FBS3pGLElBQWlCLFFBQVEsQ0E0ZHhCO0FBNWRELFdBQWlCLFFBQVE7SUFPekIsU0FBZ0IsUUFBUSxDQUFDLEdBQVk7UUFDbkMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLENBQUM7SUFDOUUsQ0FBQztJQUZlLGlCQUFRLFdBRXZCLENBQUE7SUFFQzs7OztPQUlHO0lBRUgsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBWSxTQUFRLHNCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87UUFHdEQ7Ozs7V0FJRztRQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBb0I7WUFDdkMsSUFBSSxDQUFDO2dCQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFdkMsdUVBQXVFO2dCQUN2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFN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
481
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSTE4bkVudHJpZXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0kxOG5FbnRyaWVzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7Ozs7OztBQUU5RCxnREFBc0Q7QUFFdEQsc0dBQXlGO0FBS3pGLElBQWlCLFFBQVEsQ0F5ZXhCO0FBemVELFdBQWlCLFFBQVE7SUFRekIsU0FBZ0IsUUFBUSxDQUFDLEdBQVk7UUFDbkMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLENBQUM7SUFDOUUsQ0FBQztJQUZlLGlCQUFRLFdBRXZCLENBQUE7SUFFQzs7OztPQUlHO0lBRUgsSUFBYSxXQUFXLEdBQXhCLE1BQWEsV0FBWSxTQUFRLHNCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87UUFHdEQ7Ozs7V0FJRztRQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBb0I7WUFDdkMsSUFBSSxDQUFDO2dCQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFdkMsdUVBQXVFO2dCQUN2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztnQkFFL0IsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7d0JBQzlCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQ3BFLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzNFLENBQUM7b0JBRUQsNkNBQTZDO29CQUM3QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBMEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUYsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE1BQU0sVUFBVSxHQUFjLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBZSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRWxHLGdCQUFnQjtnQkFDaEIsTUFBTSxZQUFZLEdBQXlCLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztvQkFDOUQsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzVCLEtBQUssTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7d0JBQzVCLElBQUksQ0FBQzs0QkFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDOzRCQUMxRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dDQUM3QixTQUFTLENBQUMscUNBQXFDOzRCQUNqRCxDQUFDOzRCQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDM0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQzdELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQ0FDZCxxRUFBcUU7Z0NBQ3JFLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dDQUNoSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsWUFBWSxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDckUsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLHdEQUF3RDtnQ0FDeEQsOEVBQThFO2dDQUM5RSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7Z0NBRWhELCtEQUErRDtnQ0FDL0QsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0NBRTdCLHFDQUFxQztnQ0FDckMsTUFBTSxhQUFhLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dDQUU1RiwyQ0FBMkM7Z0NBQzNDLHlFQUF5RTtnQ0FDekUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUM7cUNBQzlFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixZQUFZLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dDQUVyRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDM0YsQ0FBQzt3QkFDSCxDQUFDO3dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7NEJBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUcsQ0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEcsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRyxHQUFhLEVBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQzNGLENBQUM7UUFDSCxDQUFDO1FBRUQsaUdBQWlHO1FBQ3pGLE9BQU8sQ0FBQyxHQUFnQyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBZ0IsRUFBRTtZQUMvRSxNQUFNLE9BQU8sR0FBYSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3BDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDakQsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQWlCLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxvRUFBb0U7UUFDNUQsU0FBUyxDQUFDLE9BQWlCO1lBQ2pDLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztZQUM1QixLQUFLLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksTUFBTSxHQUFhLE1BQU0sQ0FBQztnQkFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMvQixDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7NEJBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDdkUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQWEsQ0FBQztvQkFDakMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCx3REFBd0Q7UUFDaEQsU0FBUyxDQUFDLEdBQWEsRUFBRSxTQUFpQixFQUFFLEtBQWM7WUFDaEUsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLElBQUksTUFBTSxHQUFhLEdBQUcsQ0FBQztZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7d0JBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDdkUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQWEsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsK0ZBQStGO1FBQ3ZGLFlBQVksQ0FBQyxHQUFhLEVBQUUsU0FBaUI7WUFDbkQsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLElBQUksTUFBTSxHQUFhLEdBQUcsQ0FBQztZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtvQkFBRSxPQUFPLENBQUMsb0JBQW9CO2dCQUNwRixNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBYSxDQUFDO1lBQ2pDLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRyxpQkFBaUIsQ0FBQyxRQUFxRztZQUM3SCxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPLFFBQVEsQ0FBQztZQUMvQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxRQUFRLENBQUM7WUFDbEQsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN0RCxJQUFJLElBQUksSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxJQUFJO29CQUFFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxLQUFLLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksSUFBSTtvQkFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0UsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFVyxRQUFRLENBQUMsUUFBdUIsRUFBRSxNQUFjLEVBQUUsU0FBaUIsRUFBRSxHQUFXO1lBQ3RGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RCxNQUFNLEVBQUUsR0FBRyxTQUFTLElBQUksYUFBYSxDQUFDO1lBQ3RDLE9BQU8sR0FBRyxZQUFZLElBQUksTUFBTSxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUF1QixFQUFFLE1BQWMsRUFBRSxTQUFpQixFQUFFLEdBQVc7WUFDM0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1RCxPQUFPLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVNLEtBQUssQ0FBQyxRQUFRLENBQ25CLFFBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxTQUFpQixFQUNqQixHQUFXLEVBQ1gsS0FBYyxFQUNkLE9BQXFIO1lBRXJILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkUsTUFBTSxPQUFPLEdBQXVDO2dCQUNsRCxLQUFLO2dCQUNMLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixNQUFNO2dCQUNOLFNBQVM7Z0JBQ1QsR0FBRzthQUNKLENBQUM7WUFDRixJQUFJLE9BQU8sRUFBRSxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUN6RCxJQUFJLE9BQU8sRUFBRSxRQUFRLEtBQUssU0FBUztnQkFBRSxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDekUsSUFBSSxPQUFPLEVBQUUsV0FBVyxLQUFLLFNBQVM7Z0JBQUUsT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ2xGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDMUUsSUFBSSxhQUFhLEtBQUssU0FBUztnQkFBRSxPQUFPLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUV2RSxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVE7Z0JBQ3JCLENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFDbkUsQ0FBQyxDQUFDLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBcUMsQ0FBQztZQUUvRSxrRUFBa0U7WUFDbEUsSUFBSSxDQUFDO2dCQUNILElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ1osOENBQThDO29CQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFvQyxDQUFDO29CQUN2SCw4REFBOEQ7b0JBQzlELElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQzt3QkFDcEMsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0UsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDakMsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUcsQ0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM3RyxDQUFDO1lBRUQseUZBQXlGO1lBQ3pGLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQztvQkFBRSxNQUE4RSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUFDLENBQUM7Z0JBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hLLENBQUM7WUFDRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBdUIsRUFBRSxNQUFjLEVBQUUsU0FBaUIsRUFBRSxHQUFXO1lBQzlGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVELE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUQsNERBQTREO1lBQzVELElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUNqRSxJQUFJLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNwQyxNQUFNLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUMzRSxDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUcsQ0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDdEgsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBdUIsRUFBRSxNQUFjLEVBQUUsU0FBaUIsRUFBRSxTQUFrQjtZQUNyRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQTRCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDbkYsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCx3Q0FBd0M7Z0JBQ3hDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELE9BQU8sTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUEyQyxDQUFDO1FBQ3pHLENBQUM7UUFFRSxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQXVCLEVBQUUsTUFBYyxFQUFFLFNBQWlCO1lBQzNFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxNQUFNLEdBQUcsR0FBRyxHQUFHLFVBQVUsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3BFLE9BQU8sTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUF1QjtZQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsT0FBTyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQXNDLENBQUM7UUFDOUYsQ0FBQztRQUVJLEtBQUssQ0FBQyxTQUFTLENBQ3BCLFFBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxTQUFpQixFQUNqQixJQUFjLEVBQ2QsV0FBb0IsRUFDcEIsUUFBbUU7WUFFakUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXBELDREQUE0RDtZQUM1RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsSUFBSSxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVsRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxJQUFJLE1BQW1DLENBQUM7WUFDeEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFDM0QsSUFBSTtvQkFDSixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsTUFBTTtvQkFDTixTQUFTO29CQUNULFdBQVcsRUFBRSxnQkFBZ0I7aUJBQzlCLENBQWdDLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUM7b0JBQy9CLElBQUk7b0JBQ0osUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLE1BQU07b0JBQ04sU0FBUztvQkFDVCxXQUFXLEVBQUUsZ0JBQWdCO2lCQUM5QixDQUFvQyxDQUFDO1lBQ3hDLENBQUM7WUFDRCw4RkFBOEY7WUFDOUYsSUFBSSxDQUFDO2dCQUNILElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDakUsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFHLENBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkcsQ0FBQztZQUNELHdEQUF3RDtZQUN4RCxJQUFJLENBQUM7Z0JBQUUsTUFBOEUsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUFDLENBQUM7WUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEssT0FBTyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3hCLENBQUM7UUFFRSxLQUFLLENBQUMsbUJBQW1CLENBQzlCLFFBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxTQUFpQixFQUNqQixPQUFnQjtZQUVaLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hDLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixNQUFNO2dCQUNOLFNBQVM7YUFDVixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQWdDLENBQUM7WUFFbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLFVBQVUsYUFBYSxNQUFNLGdCQUFnQixTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzlHLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRU0sZ0JBQWdCLENBQUMsT0FBZ0Q7WUFDdEUsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO1lBQzFCLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRSxLQUFLLENBQUMscUJBQXFCLENBQUMsVUFBa0QsRUFBRSxTQUFTLEdBQUcsS0FBSztZQUNsRyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNqQyxDQUFDLENBQUMsVUFBVTtnQkFDWixDQUFDLENBQUMsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU07Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRWpELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQzdELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUM7WUFDbEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxJQUFJLGFBQWEsQ0FBQztZQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBb0YsQ0FBQyxDQUFDO1lBQ2hJLE1BQU0sSUFBSSxHQUFhLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBRXpDLDRCQUE0QjtZQUM1QixNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBRXpELDBGQUEwRjtZQUMxRixpREFBaUQ7WUFDakQsTUFBTSxRQUFRLEdBQVksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRWxHLGtGQUFrRjtZQUNsRixNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFFakQsZ0RBQWdEO1lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO29CQUFFLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQ3RFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRS9CLHNEQUFzRDtZQUN0RCxNQUFNLGFBQWEsR0FBa0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzttQkFDekUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7bUJBQ25DLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBb0IsQ0FBQyxDQUFDO1lBRTVDLHlDQUF5QztZQUN6QyxNQUFNLGVBQWUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxDQUEyQyxDQUFDO1lBQ3JLLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBYSxDQUFDLENBQUMsQ0FBQztZQUV4RyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixJQUFJLEdBQUcsR0FBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFcEYsSUFBSSxRQUFRLElBQUksQ0FBQyxTQUFTO29CQUFFLFNBQVM7Z0JBRXJDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3RDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxzRUFBc0U7Z0JBQ25GLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQ3RFLFFBQVEsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ3pELFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRO29CQUMvQixhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYTtvQkFDekMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVc7b0JBQ3JDLFFBQVEsRUFBRSxJQUFJO2lCQUNmLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLE1BQU0sV0FBVyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN4RixDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsV0FBVyxFQUFHLENBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLENBQUM7WUFDSCxDQUFDO1lBQ0QsdUNBQXVDO1lBQ3ZDLElBQUksQ0FBQztnQkFDRixNQUE4RSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BJLENBQUM7WUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNaLHVEQUF1RDtZQUN6RCxDQUFDO1FBQ0gsQ0FBQztRQUVPLHNCQUFzQixDQUFDLEtBQWM7WUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ25FLENBQUM7UUFHRDs7Ozs7Ozs7Ozs7VUFXRTtRQUNLLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUIsSUFBSSxDQUFDO2dCQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDbkYsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUN0RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFZLENBQUM7Z0JBQzVDLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRyxDQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxLQUFLLENBQUMsaUJBQWlCO1lBQzVCLElBQUksQ0FBQztnQkFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQzdCLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUN4RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUEyQixDQUFDO2dCQUM1RCxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUcsQ0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQztRQUVEOztXQUVHO1FBQ0ksS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQWM7WUFDaEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyRCxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyw0Q0FBNEM7UUFDdEYsQ0FBQztLQUNGLENBQUE7SUF0ZFksV0FBVztRQUR2QiwyREFBdUI7T0FDWCxXQUFXLENBc2R2QjtJQXRkWSxvQkFBVyxjQXNkdkIsQ0FBQTtBQUNILENBQUMsRUF6ZWdCLFFBQVEsd0JBQVIsUUFBUSxRQXlleEIifQ==
@@ -14,8 +14,8 @@ export declare namespace Services {
14
14
  bootstrap(defBrand: BrandingModel): Promise<void>;
15
15
  private createNamedQueriesForBrand;
16
16
  create(brand: BrandingModel, name: string, config: NamedQueryConfig): import("rxjs").Observable<unknown>;
17
- getNamedQueryConfig(brand: BrandingModel, namedQuery: string): Promise<NamedQueryConfig>;
18
- performNamedQuery(brandIdFieldPath: string, resultObjectMapping: Record<string, unknown>, collectionName: string, mongoQuery: Record<string, unknown>, queryParams: Record<string, QueryParameterDefinition>, paramMap: Record<string, unknown>, brand: BrandingModel, start: number, rows: number, _user?: unknown, sort?: NamedQuerySortConfig | undefined): Promise<ListAPIResponse<NamedQueryResponseRecord>>;
17
+ getNamedQueryConfig(brand: BrandingModel, namedQuery: string): Promise<NamedQueryConfig | null>;
18
+ performNamedQuery(brandIdFieldPath: string, resultObjectMapping: Record<string, unknown>, collectionName: string, mongoQuery: Record<string, unknown>, queryParams: Record<string, QueryParameterDefinition>, paramMap: Record<string, unknown>, brand: BrandingModel, start: number, rows: number, _user?: unknown, sort?: NamedQuerySortConfig | undefined, expandRelations?: boolean, relatedRecordFilters?: RelatedRecordFilter[]): Promise<ListAPIResponse<NamedQueryResponseRecord>>;
19
19
  setParamsInQuery(mongoQuery: Record<string, unknown>, queryParams: Record<string, QueryParameterDefinition>, paramMap: Record<string, unknown>): Record<string, unknown>;
20
20
  runTemplate(templateOrPath: string, variables: Record<string, unknown>): unknown;
21
21
  performNamedQueryFromConfig(config: NamedQueryDefinition | NamedQueryConfig, paramMap: Record<string, unknown>, brand: BrandingModel, start: number, rows: number, user?: unknown): Promise<ListAPIResponse<NamedQueryResponseRecord>>;
@@ -25,7 +25,10 @@ export declare namespace Services {
25
25
  declare enum DataType {
26
26
  Date = "date",
27
27
  Number = "number",
28
- String = "string"
28
+ String = "string",
29
+ Boolean = "boolean",
30
+ Array = "array",
31
+ Object = "object"
29
32
  }
30
33
  declare enum NamedQueryWhenUndefinedOptions {
31
34
  defaultValue = "defaultValue",
@@ -46,6 +49,24 @@ declare class QueryParameterDefinition {
46
49
  path: string;
47
50
  template: string;
48
51
  }
52
+ export declare class RelatedRecordFilter {
53
+ collectionName: string;
54
+ mongoQuery: Record<string, unknown>;
55
+ localField: string;
56
+ foreignField: string;
57
+ }
58
+ type NamedQueryConfigInput = Omit<Partial<NamedQueryAttributes>, 'branding' | 'queryParams' | 'mongoQuery' | 'resultObjectMapping' | 'sort' | 'expandRelations' | 'relatedRecordFilters'> & {
59
+ branding?: unknown;
60
+ metadata?: unknown;
61
+ createdAt?: string;
62
+ updatedAt?: string;
63
+ sort?: unknown;
64
+ expandRelations?: boolean | string;
65
+ relatedRecordFilters?: unknown;
66
+ queryParams?: unknown;
67
+ mongoQuery?: unknown;
68
+ resultObjectMapping?: unknown;
69
+ };
49
70
  export declare class NamedQueryConfig {
50
71
  name: string;
51
72
  branding: string;
@@ -59,12 +80,9 @@ export declare class NamedQueryConfig {
59
80
  resultObjectMapping: Record<string, unknown>;
60
81
  brandIdFieldPath: string;
61
82
  sort: NamedQuerySortConfig | undefined;
62
- constructor(values: Partial<NamedQueryAttributes> & {
63
- metadata?: unknown;
64
- createdAt?: string;
65
- updatedAt?: string;
66
- sort?: string;
67
- } | null | undefined);
83
+ expandRelations: boolean;
84
+ relatedRecordFilters: RelatedRecordFilter[];
85
+ constructor(values: NamedQueryConfigInput | null | undefined);
68
86
  }
69
87
  export declare class NamedQueryResponseRecord {
70
88
  oid: string;
@@ -1 +1 @@
1
- {"version":3,"file":"NamedQueryService.d.ts","sourceRoot":"","sources":["../../src/services/NamedQueryService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NamedQueryService.d.ts","sourceRoot":"","sources":["../../src/services/NamedQueryService.ts"],"names":[],"mappings":"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"}