@futdevpro/nts-dynamo 1.15.136 → 1.15.139

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 (1341) hide show
  1. package/.c8rc.json +26 -26
  2. package/.copilot/patterns.json +7 -7
  3. package/.cursor/rules/__assistant_guide.mdc +30 -30
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  7. package/.cursor/rules/_ag_frontend.mdc +39 -39
  8. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  9. package/.cursor/rules/_ag_naming.mdc +115 -115
  10. package/.cursor/rules/_ag_should-be.mdc +6 -6
  11. package/.cursor/rules/ai_development_guide.md +60 -60
  12. package/.cursor/rules/cursor-rules.md +160 -160
  13. package/.cursor/rules/default-command.mdc +464 -464
  14. package/.cursor/rules/error_code_pattern.md +39 -39
  15. package/.cursor/rules/saved rule mcp server use.md +15 -15
  16. package/.vscode/settings.json +10 -10
  17. package/HOWTO.md +15 -15
  18. package/LICENSE +21 -21
  19. package/_specifications/BACKLOG.md +92 -92
  20. package/_specifications/TODO.md +15 -15
  21. package/_specifications/agent.md +138 -138
  22. package/build/_collections/app-version-header.util.spec.d.ts +2 -0
  23. package/build/_collections/app-version-header.util.spec.d.ts.map +1 -0
  24. package/build/_collections/app-version-header.util.spec.js +82 -0
  25. package/build/_collections/app-version-header.util.spec.js.map +1 -0
  26. package/build/_collections/archive.util.spec.d.ts +2 -0
  27. package/build/_collections/archive.util.spec.d.ts.map +1 -0
  28. package/build/_collections/archive.util.spec.js +51 -0
  29. package/build/_collections/archive.util.spec.js.map +1 -0
  30. package/build/_collections/client-safe-error.util.spec.d.ts +2 -0
  31. package/build/_collections/client-safe-error.util.spec.d.ts.map +1 -0
  32. package/build/_collections/client-safe-error.util.spec.js +124 -0
  33. package/build/_collections/client-safe-error.util.spec.js.map +1 -0
  34. package/build/_collections/default-fallback-cache-max-age.const.spec.d.ts +2 -0
  35. package/build/_collections/default-fallback-cache-max-age.const.spec.d.ts.map +1 -0
  36. package/build/_collections/default-fallback-cache-max-age.const.spec.js +12 -0
  37. package/build/_collections/default-fallback-cache-max-age.const.spec.js.map +1 -0
  38. package/build/_collections/default-not-found-page.const.spec.d.ts +2 -0
  39. package/build/_collections/default-not-found-page.const.spec.d.ts.map +1 -0
  40. package/build/_collections/default-not-found-page.const.spec.js +19 -0
  41. package/build/_collections/default-not-found-page.const.spec.js.map +1 -0
  42. package/build/_collections/default-socket-path.const.spec.d.ts +2 -0
  43. package/build/_collections/default-socket-path.const.spec.d.ts.map +1 -0
  44. package/build/_collections/default-socket-path.const.spec.js +13 -0
  45. package/build/_collections/default-socket-path.const.spec.js.map +1 -0
  46. package/build/_collections/field-encryption.util.spec.d.ts +2 -0
  47. package/build/_collections/field-encryption.util.spec.d.ts.map +1 -0
  48. package/build/_collections/field-encryption.util.spec.js +156 -0
  49. package/build/_collections/field-encryption.util.spec.js.map +1 -0
  50. package/build/_collections/get-environment-settings.util.spec.d.ts +2 -0
  51. package/build/_collections/get-environment-settings.util.spec.d.ts.map +1 -0
  52. package/build/_collections/get-environment-settings.util.spec.js +165 -0
  53. package/build/_collections/get-environment-settings.util.spec.js.map +1 -0
  54. package/build/_collections/load-shed.util.spec.d.ts +2 -0
  55. package/build/_collections/load-shed.util.spec.d.ts.map +1 -0
  56. package/build/_collections/load-shed.util.spec.js +48 -0
  57. package/build/_collections/load-shed.util.spec.js.map +1 -0
  58. package/build/_collections/mongo-reconnect-guard.util.spec.d.ts +2 -0
  59. package/build/_collections/mongo-reconnect-guard.util.spec.d.ts.map +1 -0
  60. package/build/_collections/mongo-reconnect-guard.util.spec.js +46 -0
  61. package/build/_collections/mongo-reconnect-guard.util.spec.js.map +1 -0
  62. package/build/_collections/security-headers.util.spec.d.ts +2 -0
  63. package/build/_collections/security-headers.util.spec.d.ts.map +1 -0
  64. package/build/_collections/security-headers.util.spec.js +66 -0
  65. package/build/_collections/security-headers.util.spec.js.map +1 -0
  66. package/build/_collections/signed-url.util.spec.d.ts +2 -0
  67. package/build/_collections/signed-url.util.spec.d.ts.map +1 -0
  68. package/build/_collections/signed-url.util.spec.js +161 -0
  69. package/build/_collections/signed-url.util.spec.js.map +1 -0
  70. package/build/_collections/star.controller.spec.d.ts +2 -0
  71. package/build/_collections/star.controller.spec.d.ts.map +1 -0
  72. package/build/_collections/star.controller.spec.js +194 -0
  73. package/build/_collections/star.controller.spec.js.map +1 -0
  74. package/build/_collections/static-cache-control.util.spec.d.ts +2 -0
  75. package/build/_collections/static-cache-control.util.spec.d.ts.map +1 -0
  76. package/build/_collections/static-cache-control.util.spec.js +41 -0
  77. package/build/_collections/static-cache-control.util.spec.js.map +1 -0
  78. package/build/_models/control-models/api-call-params.control-model.spec.d.ts +2 -0
  79. package/build/_models/control-models/api-call-params.control-model.spec.d.ts.map +1 -0
  80. package/build/_models/control-models/api-call-params.control-model.spec.js +128 -0
  81. package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -0
  82. package/build/_models/control-models/app-ext-system-controls.control-model.spec.d.ts +2 -0
  83. package/build/_models/control-models/app-ext-system-controls.control-model.spec.d.ts.map +1 -0
  84. package/build/_models/control-models/app-ext-system-controls.control-model.spec.js +43 -0
  85. package/build/_models/control-models/app-ext-system-controls.control-model.spec.js.map +1 -0
  86. package/build/_models/control-models/app-params.control-model.spec.d.ts +2 -0
  87. package/build/_models/control-models/app-params.control-model.spec.d.ts.map +1 -0
  88. package/build/_models/control-models/app-params.control-model.spec.js +180 -0
  89. package/build/_models/control-models/app-params.control-model.spec.js.map +1 -0
  90. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts +2 -0
  91. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts.map +1 -0
  92. package/build/_models/control-models/app-system-controls.control-model.spec.js +26 -0
  93. package/build/_models/control-models/app-system-controls.control-model.spec.js.map +1 -0
  94. package/build/_models/control-models/endpoint-params.control-model.spec.d.ts +2 -0
  95. package/build/_models/control-models/endpoint-params.control-model.spec.d.ts.map +1 -0
  96. package/build/_models/control-models/endpoint-params.control-model.spec.js +569 -0
  97. package/build/_models/control-models/endpoint-params.control-model.spec.js.map +1 -0
  98. package/build/_models/control-models/http-settings.control-model.spec.d.ts +2 -0
  99. package/build/_models/control-models/http-settings.control-model.spec.d.ts.map +1 -0
  100. package/build/_models/control-models/http-settings.control-model.spec.js +71 -0
  101. package/build/_models/control-models/http-settings.control-model.spec.js.map +1 -0
  102. package/build/_models/control-models/system-control.control-model.spec.d.ts +2 -0
  103. package/build/_models/control-models/system-control.control-model.spec.d.ts.map +1 -0
  104. package/build/_models/control-models/system-control.control-model.spec.js +24 -0
  105. package/build/_models/control-models/system-control.control-model.spec.js.map +1 -0
  106. package/build/_models/interfaces/cors-settings.interface.spec.d.ts +2 -0
  107. package/build/_models/interfaces/cors-settings.interface.spec.d.ts.map +1 -0
  108. package/build/_models/interfaces/cors-settings.interface.spec.js +48 -0
  109. package/build/_models/interfaces/cors-settings.interface.spec.js.map +1 -0
  110. package/build/_models/interfaces/static-client-settings.interface.spec.d.ts +2 -0
  111. package/build/_models/interfaces/static-client-settings.interface.spec.d.ts.map +1 -0
  112. package/build/_models/interfaces/static-client-settings.interface.spec.js +28 -0
  113. package/build/_models/interfaces/static-client-settings.interface.spec.js.map +1 -0
  114. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.d.ts +2 -0
  115. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.d.ts.map +1 -0
  116. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.js +185 -0
  117. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.js.map +1 -0
  118. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.d.ts +2 -0
  119. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.d.ts.map +1 -0
  120. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.js +132 -0
  121. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.js.map +1 -0
  122. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.d.ts +2 -0
  123. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.d.ts.map +1 -0
  124. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.js +56 -0
  125. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.js.map +1 -0
  126. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.d.ts +2 -0
  127. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.d.ts.map +1 -0
  128. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.js +43 -0
  129. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.js.map +1 -0
  130. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.d.ts +2 -0
  131. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.d.ts.map +1 -0
  132. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.js +47 -0
  133. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.js.map +1 -0
  134. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.d.ts +2 -0
  135. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.d.ts.map +1 -0
  136. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.js +98 -0
  137. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.js.map +1 -0
  138. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.d.ts +2 -0
  139. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.d.ts.map +1 -0
  140. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.js +117 -0
  141. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.js.map +1 -0
  142. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.d.ts +2 -0
  143. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.d.ts.map +1 -0
  144. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.js +87 -0
  145. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.js.map +1 -0
  146. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.d.ts +2 -0
  147. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.d.ts.map +1 -0
  148. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.js +42 -0
  149. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.js.map +1 -0
  150. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.d.ts +2 -0
  151. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.d.ts.map +1 -0
  152. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.js +74 -0
  153. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.js.map +1 -0
  154. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.d.ts +2 -0
  155. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.d.ts.map +1 -0
  156. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.js +95 -0
  157. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.js.map +1 -0
  158. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.d.ts +2 -0
  159. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.d.ts.map +1 -0
  160. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.js +207 -0
  161. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.js.map +1 -0
  162. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.d.ts +2 -0
  163. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.d.ts.map +1 -0
  164. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.js +244 -0
  165. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.js.map +1 -0
  166. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.d.ts +2 -0
  167. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.d.ts.map +1 -0
  168. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.js +162 -0
  169. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.js.map +1 -0
  170. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.d.ts +2 -0
  171. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.d.ts.map +1 -0
  172. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.js +279 -0
  173. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.js.map +1 -0
  174. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.d.ts +2 -0
  175. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.d.ts.map +1 -0
  176. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.js +452 -0
  177. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.js.map +1 -0
  178. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.d.ts +2 -0
  179. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.d.ts.map +1 -0
  180. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.js +293 -0
  181. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.js.map +1 -0
  182. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.d.ts +2 -0
  183. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.d.ts.map +1 -0
  184. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.js +395 -0
  185. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.js.map +1 -0
  186. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.d.ts +2 -0
  187. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.d.ts.map +1 -0
  188. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.js +411 -0
  189. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.js.map +1 -0
  190. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.d.ts +2 -0
  191. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.d.ts.map +1 -0
  192. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.js +143 -0
  193. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.js.map +1 -0
  194. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.d.ts +2 -0
  195. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.d.ts.map +1 -0
  196. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.js +98 -0
  197. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.js.map +1 -0
  198. package/build/_modules/ai/_services/ai-embedding.service-base.spec.d.ts +2 -0
  199. package/build/_modules/ai/_services/ai-embedding.service-base.spec.d.ts.map +1 -0
  200. package/build/_modules/ai/_services/ai-embedding.service-base.spec.js +80 -0
  201. package/build/_modules/ai/_services/ai-embedding.service-base.spec.js.map +1 -0
  202. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.d.ts +2 -0
  203. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.d.ts.map +1 -0
  204. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.js +186 -0
  205. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.js.map +1 -0
  206. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.d.ts +2 -0
  207. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.d.ts.map +1 -0
  208. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.js +108 -0
  209. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.js.map +1 -0
  210. package/build/_modules/ai/_services/ai-llm.service-base.spec.d.ts +2 -0
  211. package/build/_modules/ai/_services/ai-llm.service-base.spec.d.ts.map +1 -0
  212. package/build/_modules/ai/_services/ai-llm.service-base.spec.js +185 -0
  213. package/build/_modules/ai/_services/ai-llm.service-base.spec.js.map +1 -0
  214. package/build/_modules/ai/_services/ai-provider.service-base.spec.d.ts +2 -0
  215. package/build/_modules/ai/_services/ai-provider.service-base.spec.d.ts.map +1 -0
  216. package/build/_modules/ai/_services/ai-provider.service-base.spec.js +128 -0
  217. package/build/_modules/ai/_services/ai-provider.service-base.spec.js.map +1 -0
  218. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.d.ts +2 -0
  219. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.d.ts.map +1 -0
  220. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.js +159 -0
  221. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.js.map +1 -0
  222. package/build/_modules/assistant/_collections/ass.util.spec.d.ts +2 -0
  223. package/build/_modules/assistant/_collections/ass.util.spec.d.ts.map +1 -0
  224. package/build/_modules/assistant/_collections/ass.util.spec.js +153 -0
  225. package/build/_modules/assistant/_collections/ass.util.spec.js.map +1 -0
  226. package/build/_modules/assistant/_services/ass-io.control-service.spec.d.ts +2 -0
  227. package/build/_modules/assistant/_services/ass-io.control-service.spec.d.ts.map +1 -0
  228. package/build/_modules/assistant/_services/ass-io.control-service.spec.js +99 -0
  229. package/build/_modules/assistant/_services/ass-io.control-service.spec.js.map +1 -0
  230. package/build/_modules/assistant/_services/ass-main.control-service.spec.d.ts +2 -0
  231. package/build/_modules/assistant/_services/ass-main.control-service.spec.d.ts.map +1 -0
  232. package/build/_modules/assistant/_services/ass-main.control-service.spec.js +146 -0
  233. package/build/_modules/assistant/_services/ass-main.control-service.spec.js.map +1 -0
  234. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.d.ts +2 -0
  235. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.d.ts.map +1 -0
  236. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.js +356 -0
  237. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.js.map +1 -0
  238. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.d.ts +2 -0
  239. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.d.ts.map +1 -0
  240. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.js +93 -0
  241. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.js.map +1 -0
  242. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.d.ts +2 -0
  243. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.d.ts.map +1 -0
  244. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.js +304 -0
  245. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.js.map +1 -0
  246. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.d.ts +2 -0
  247. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.d.ts.map +1 -0
  248. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.js +336 -0
  249. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.js.map +1 -0
  250. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.d.ts +2 -0
  251. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.d.ts.map +1 -0
  252. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.js +337 -0
  253. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.js.map +1 -0
  254. package/build/_modules/bot/_services/bot-commands.control-service.spec.d.ts +2 -0
  255. package/build/_modules/bot/_services/bot-commands.control-service.spec.d.ts.map +1 -0
  256. package/build/_modules/bot/_services/bot-commands.control-service.spec.js +84 -0
  257. package/build/_modules/bot/_services/bot-commands.control-service.spec.js.map +1 -0
  258. package/build/_modules/bot/_services/bot-io.control-service.spec.d.ts +2 -0
  259. package/build/_modules/bot/_services/bot-io.control-service.spec.d.ts.map +1 -0
  260. package/build/_modules/bot/_services/bot-io.control-service.spec.js +228 -0
  261. package/build/_modules/bot/_services/bot-io.control-service.spec.js.map +1 -0
  262. package/build/_modules/bot/_services/bot-main.control-service.spec.d.ts +2 -0
  263. package/build/_modules/bot/_services/bot-main.control-service.spec.d.ts.map +1 -0
  264. package/build/_modules/bot/_services/bot-main.control-service.spec.js +164 -0
  265. package/build/_modules/bot/_services/bot-main.control-service.spec.js.map +1 -0
  266. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.d.ts +2 -0
  267. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.d.ts.map +1 -0
  268. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.js +267 -0
  269. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.js.map +1 -0
  270. package/build/_modules/bot/_services/bot-routines.control-service.spec.d.ts +2 -0
  271. package/build/_modules/bot/_services/bot-routines.control-service.spec.d.ts.map +1 -0
  272. package/build/_modules/bot/_services/bot-routines.control-service.spec.js +82 -0
  273. package/build/_modules/bot/_services/bot-routines.control-service.spec.js.map +1 -0
  274. package/build/_modules/custom-data/custom-data.controller.spec.d.ts +2 -0
  275. package/build/_modules/custom-data/custom-data.controller.spec.d.ts.map +1 -0
  276. package/build/_modules/custom-data/custom-data.controller.spec.js +38 -0
  277. package/build/_modules/custom-data/custom-data.controller.spec.js.map +1 -0
  278. package/build/_modules/custom-data/custom-data.data-service.spec.d.ts +2 -0
  279. package/build/_modules/custom-data/custom-data.data-service.spec.d.ts.map +1 -0
  280. package/build/_modules/custom-data/custom-data.data-service.spec.js +45 -0
  281. package/build/_modules/custom-data/custom-data.data-service.spec.js.map +1 -0
  282. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.d.ts +2 -0
  283. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.d.ts.map +1 -0
  284. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.js +23 -0
  285. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.js.map +1 -0
  286. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.d.ts +2 -0
  287. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.d.ts.map +1 -0
  288. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.js +124 -0
  289. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.js.map +1 -0
  290. package/build/_modules/defaults/_services/default-auth.service.spec.d.ts +2 -0
  291. package/build/_modules/defaults/_services/default-auth.service.spec.d.ts.map +1 -0
  292. package/build/_modules/defaults/_services/default-auth.service.spec.js +210 -0
  293. package/build/_modules/defaults/_services/default-auth.service.spec.js.map +1 -0
  294. package/build/_modules/defaults/_services/default-socket-events.service.spec.d.ts +2 -0
  295. package/build/_modules/defaults/_services/default-socket-events.service.spec.d.ts.map +1 -0
  296. package/build/_modules/defaults/_services/default-socket-events.service.spec.js +34 -0
  297. package/build/_modules/defaults/_services/default-socket-events.service.spec.js.map +1 -0
  298. package/build/_modules/defaults/_services/default-user.data-service.spec.d.ts +2 -0
  299. package/build/_modules/defaults/_services/default-user.data-service.spec.d.ts.map +1 -0
  300. package/build/_modules/defaults/_services/default-user.data-service.spec.js +133 -0
  301. package/build/_modules/defaults/_services/default-user.data-service.spec.js.map +1 -0
  302. package/build/_modules/discord-assistant/_collections/dias.util.spec.d.ts +2 -0
  303. package/build/_modules/discord-assistant/_collections/dias.util.spec.d.ts.map +1 -0
  304. package/build/_modules/discord-assistant/_collections/dias.util.spec.js +307 -0
  305. package/build/_modules/discord-assistant/_collections/dias.util.spec.js.map +1 -0
  306. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.d.ts +2 -0
  307. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.d.ts.map +1 -0
  308. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.js +76 -0
  309. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.js.map +1 -0
  310. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.d.ts +2 -0
  311. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.d.ts.map +1 -0
  312. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.js +17 -0
  313. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.js.map +1 -0
  314. package/build/_modules/discord-assistant/_services/dias.service-base.spec.d.ts +2 -0
  315. package/build/_modules/discord-assistant/_services/dias.service-base.spec.d.ts.map +1 -0
  316. package/build/_modules/discord-assistant/_services/dias.service-base.spec.js +151 -0
  317. package/build/_modules/discord-assistant/_services/dias.service-base.spec.js.map +1 -0
  318. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.d.ts +2 -0
  319. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.d.ts.map +1 -0
  320. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.js +29 -0
  321. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.js.map +1 -0
  322. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.d.ts +2 -0
  323. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.d.ts.map +1 -0
  324. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.js +172 -0
  325. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.js.map +1 -0
  326. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.d.ts +2 -0
  327. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.d.ts.map +1 -0
  328. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.js +133 -0
  329. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.js.map +1 -0
  330. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.d.ts +2 -0
  331. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.d.ts.map +1 -0
  332. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.js +215 -0
  333. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.js.map +1 -0
  334. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.d.ts +2 -0
  335. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.d.ts.map +1 -0
  336. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.js +342 -0
  337. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.js.map +1 -0
  338. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.d.ts +2 -0
  339. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.d.ts.map +1 -0
  340. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.js +87 -0
  341. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.js.map +1 -0
  342. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.d.ts +2 -0
  343. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.d.ts.map +1 -0
  344. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.js +137 -0
  345. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.js.map +1 -0
  346. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.d.ts +2 -0
  347. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.d.ts.map +1 -0
  348. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.js +345 -0
  349. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.js.map +1 -0
  350. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.d.ts +2 -0
  351. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.d.ts.map +1 -0
  352. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.js +407 -0
  353. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.js.map +1 -0
  354. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.d.ts +2 -0
  355. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.d.ts.map +1 -0
  356. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.js +160 -0
  357. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.js.map +1 -0
  358. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.d.ts +2 -0
  359. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.d.ts.map +1 -0
  360. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.js +122 -0
  361. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.js.map +1 -0
  362. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts +2 -0
  363. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts.map +1 -0
  364. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js +388 -0
  365. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js.map +1 -0
  366. package/build/_modules/logs/file-log.service.spec.d.ts +2 -0
  367. package/build/_modules/logs/file-log.service.spec.d.ts.map +1 -0
  368. package/build/_modules/logs/file-log.service.spec.js +300 -0
  369. package/build/_modules/logs/file-log.service.spec.js.map +1 -0
  370. package/build/_modules/logs/file-logs.controller.spec.d.ts +2 -0
  371. package/build/_modules/logs/file-logs.controller.spec.d.ts.map +1 -0
  372. package/build/_modules/logs/file-logs.controller.spec.js +203 -0
  373. package/build/_modules/logs/file-logs.controller.spec.js.map +1 -0
  374. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.d.ts +2 -0
  375. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.d.ts.map +1 -0
  376. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.js +125 -0
  377. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.js.map +1 -0
  378. package/build/_modules/messaging/_collections/msg.util.spec.d.ts +2 -0
  379. package/build/_modules/messaging/_collections/msg.util.spec.d.ts.map +1 -0
  380. package/build/_modules/messaging/_collections/msg.util.spec.js +157 -0
  381. package/build/_modules/messaging/_collections/msg.util.spec.js.map +1 -0
  382. package/build/_modules/messaging/_services/msg-events.service.spec.d.ts +2 -0
  383. package/build/_modules/messaging/_services/msg-events.service.spec.d.ts.map +1 -0
  384. package/build/_modules/messaging/_services/msg-events.service.spec.js +122 -0
  385. package/build/_modules/messaging/_services/msg-events.service.spec.js.map +1 -0
  386. package/build/_modules/messaging/_services/msg-main.control-service.spec.d.ts +2 -0
  387. package/build/_modules/messaging/_services/msg-main.control-service.spec.d.ts.map +1 -0
  388. package/build/_modules/messaging/_services/msg-main.control-service.spec.js +121 -0
  389. package/build/_modules/messaging/_services/msg-main.control-service.spec.js.map +1 -0
  390. package/build/_modules/messaging/_services/msg.controller.spec.d.ts +2 -0
  391. package/build/_modules/messaging/_services/msg.controller.spec.d.ts.map +1 -0
  392. package/build/_modules/messaging/_services/msg.controller.spec.js +165 -0
  393. package/build/_modules/messaging/_services/msg.controller.spec.js.map +1 -0
  394. package/build/_modules/mock/app-params.mock.spec.d.ts +2 -0
  395. package/build/_modules/mock/app-params.mock.spec.d.ts.map +1 -0
  396. package/build/_modules/mock/app-params.mock.spec.js +19 -0
  397. package/build/_modules/mock/app-params.mock.spec.js.map +1 -0
  398. package/build/_modules/mock/auth-service.mock.spec.d.ts +2 -0
  399. package/build/_modules/mock/auth-service.mock.spec.d.ts.map +1 -0
  400. package/build/_modules/mock/auth-service.mock.spec.js +40 -0
  401. package/build/_modules/mock/auth-service.mock.spec.js.map +1 -0
  402. package/build/_modules/mock/controller.mock.spec.d.ts +2 -0
  403. package/build/_modules/mock/controller.mock.spec.d.ts.map +1 -0
  404. package/build/_modules/mock/controller.mock.spec.js +23 -0
  405. package/build/_modules/mock/controller.mock.spec.js.map +1 -0
  406. package/build/_modules/mock/data-model.mock.spec.d.ts +2 -0
  407. package/build/_modules/mock/data-model.mock.spec.d.ts.map +1 -0
  408. package/build/_modules/mock/data-model.mock.spec.js +101 -0
  409. package/build/_modules/mock/data-model.mock.spec.js.map +1 -0
  410. package/build/_modules/mock/email-service-collection.mock.spec.d.ts +2 -0
  411. package/build/_modules/mock/email-service-collection.mock.spec.d.ts.map +1 -0
  412. package/build/_modules/mock/email-service-collection.mock.spec.js +21 -0
  413. package/build/_modules/mock/email-service-collection.mock.spec.js.map +1 -0
  414. package/build/_modules/mock/email-service.mock.spec.d.ts +2 -0
  415. package/build/_modules/mock/email-service.mock.spec.d.ts.map +1 -0
  416. package/build/_modules/mock/email-service.mock.spec.js +14 -0
  417. package/build/_modules/mock/email-service.mock.spec.js.map +1 -0
  418. package/build/_modules/mock/socket-client.mock.spec.d.ts +2 -0
  419. package/build/_modules/mock/socket-client.mock.spec.d.ts.map +1 -0
  420. package/build/_modules/mock/socket-client.mock.spec.js +32 -0
  421. package/build/_modules/mock/socket-client.mock.spec.js.map +1 -0
  422. package/build/_modules/mock/socket-server.mock.spec.d.ts +2 -0
  423. package/build/_modules/mock/socket-server.mock.spec.d.ts.map +1 -0
  424. package/build/_modules/mock/socket-server.mock.spec.js +36 -0
  425. package/build/_modules/mock/socket-server.mock.spec.js.map +1 -0
  426. package/build/_modules/oauth2/_routes/oauth2.controller.spec.d.ts +2 -0
  427. package/build/_modules/oauth2/_routes/oauth2.controller.spec.d.ts.map +1 -0
  428. package/build/_modules/oauth2/_routes/oauth2.controller.spec.js +89 -0
  429. package/build/_modules/oauth2/_routes/oauth2.controller.spec.js.map +1 -0
  430. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.d.ts +2 -0
  431. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.d.ts.map +1 -0
  432. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.js +195 -0
  433. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.js.map +1 -0
  434. package/build/_modules/oauth2/_services/oauth2.control-service.spec.d.ts +2 -0
  435. package/build/_modules/oauth2/_services/oauth2.control-service.spec.d.ts.map +1 -0
  436. package/build/_modules/oauth2/_services/oauth2.control-service.spec.js +432 -0
  437. package/build/_modules/oauth2/_services/oauth2.control-service.spec.js.map +1 -0
  438. package/build/_modules/rate-limit/rate-limit.middleware.spec.d.ts +2 -0
  439. package/build/_modules/rate-limit/rate-limit.middleware.spec.d.ts.map +1 -0
  440. package/build/_modules/rate-limit/rate-limit.middleware.spec.js +277 -0
  441. package/build/_modules/rate-limit/rate-limit.middleware.spec.js.map +1 -0
  442. package/build/_modules/scheduler/scheduler.controller.spec.d.ts +2 -0
  443. package/build/_modules/scheduler/scheduler.controller.spec.d.ts.map +1 -0
  444. package/build/_modules/scheduler/scheduler.controller.spec.js +35 -0
  445. package/build/_modules/scheduler/scheduler.controller.spec.js.map +1 -0
  446. package/build/_modules/scheduler/scheduler.service.spec.d.ts +2 -0
  447. package/build/_modules/scheduler/scheduler.service.spec.d.ts.map +1 -0
  448. package/build/_modules/scheduler/scheduler.service.spec.js +123 -0
  449. package/build/_modules/scheduler/scheduler.service.spec.js.map +1 -0
  450. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.d.ts +2 -0
  451. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.d.ts.map +1 -0
  452. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.js +229 -0
  453. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.js.map +1 -0
  454. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.d.ts +2 -0
  455. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.d.ts.map +1 -0
  456. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.js +88 -0
  457. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.js.map +1 -0
  458. package/build/_modules/server/errors/errors.control-service.spec.d.ts +2 -0
  459. package/build/_modules/server/errors/errors.control-service.spec.d.ts.map +1 -0
  460. package/build/_modules/server/errors/errors.control-service.spec.js +198 -0
  461. package/build/_modules/server/errors/errors.control-service.spec.js.map +1 -0
  462. package/build/_modules/server/errors/errors.controller.spec.d.ts +2 -0
  463. package/build/_modules/server/errors/errors.controller.spec.d.ts.map +1 -0
  464. package/build/_modules/server/errors/errors.controller.spec.js +287 -0
  465. package/build/_modules/server/errors/errors.controller.spec.js.map +1 -0
  466. package/build/_modules/server/errors/errors.data-service.spec.d.ts +2 -0
  467. package/build/_modules/server/errors/errors.data-service.spec.d.ts.map +1 -0
  468. package/build/_modules/server/errors/errors.data-service.spec.js +390 -0
  469. package/build/_modules/server/errors/errors.data-service.spec.js.map +1 -0
  470. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.d.ts +2 -0
  471. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.d.ts.map +1 -0
  472. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.js +59 -0
  473. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.js.map +1 -0
  474. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.d.ts +2 -0
  475. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.d.ts.map +1 -0
  476. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.js +58 -0
  477. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.js.map +1 -0
  478. package/build/_modules/server/server-status/server-status.control-service.spec.d.ts +2 -0
  479. package/build/_modules/server/server-status/server-status.control-service.spec.d.ts.map +1 -0
  480. package/build/_modules/server/server-status/server-status.control-service.spec.js +537 -0
  481. package/build/_modules/server/server-status/server-status.control-service.spec.js.map +1 -0
  482. package/build/_modules/server/server-status/server-status.controller.spec.d.ts +2 -0
  483. package/build/_modules/server/server-status/server-status.controller.spec.d.ts.map +1 -0
  484. package/build/_modules/server/server-status/server-status.controller.spec.js +223 -0
  485. package/build/_modules/server/server-status/server-status.controller.spec.js.map +1 -0
  486. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts +2 -0
  487. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts.map +1 -0
  488. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +25 -0
  489. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -0
  490. package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
  491. package/build/_modules/socket/_models/socket-presence.control-model.js +1 -0
  492. package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
  493. package/build/_modules/socket/_models/socket-presence.control-model.spec.d.ts +2 -0
  494. package/build/_modules/socket/_models/socket-presence.control-model.spec.d.ts.map +1 -0
  495. package/build/_modules/socket/_models/socket-presence.control-model.spec.js +137 -0
  496. package/build/_modules/socket/_models/socket-presence.control-model.spec.js.map +1 -0
  497. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts +2 -0
  498. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts.map +1 -0
  499. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js +58 -0
  500. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js.map +1 -0
  501. package/build/_modules/socket/_services/socket-client.service.spec.d.ts +2 -0
  502. package/build/_modules/socket/_services/socket-client.service.spec.d.ts.map +1 -0
  503. package/build/_modules/socket/_services/socket-client.service.spec.js +12 -0
  504. package/build/_modules/socket/_services/socket-client.service.spec.js.map +1 -0
  505. package/build/_modules/socket/_services/socket-server.service.d.ts +3 -1
  506. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  507. package/build/_modules/socket/_services/socket-server.service.js +32 -50
  508. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  509. package/build/_modules/socket/_services/socket-server.service.spec.d.ts +2 -0
  510. package/build/_modules/socket/_services/socket-server.service.spec.d.ts.map +1 -0
  511. package/build/_modules/socket/_services/socket-server.service.spec.js +149 -0
  512. package/build/_modules/socket/_services/socket-server.service.spec.js.map +1 -0
  513. package/build/_modules/socket/app-extended.integration.spec.d.ts +2 -0
  514. package/build/_modules/socket/app-extended.integration.spec.d.ts.map +1 -0
  515. package/build/_modules/socket/app-extended.integration.spec.js +76 -0
  516. package/build/_modules/socket/app-extended.integration.spec.js.map +1 -0
  517. package/build/_modules/test/get-test-routing-module.util.spec.d.ts +2 -0
  518. package/build/_modules/test/get-test-routing-module.util.spec.d.ts.map +1 -0
  519. package/build/_modules/test/get-test-routing-module.util.spec.js +23 -0
  520. package/build/_modules/test/get-test-routing-module.util.spec.js.map +1 -0
  521. package/build/_modules/test/test.controller.spec.d.ts +2 -0
  522. package/build/_modules/test/test.controller.spec.d.ts.map +1 -0
  523. package/build/_modules/test/test.controller.spec.js +54 -0
  524. package/build/_modules/test/test.controller.spec.js.map +1 -0
  525. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.d.ts +2 -0
  526. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.d.ts.map +1 -0
  527. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.js +91 -0
  528. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.js.map +1 -0
  529. package/build/_modules/usage/usage.controller.spec.d.ts +2 -0
  530. package/build/_modules/usage/usage.controller.spec.d.ts.map +1 -0
  531. package/build/_modules/usage/usage.controller.spec.js +82 -0
  532. package/build/_modules/usage/usage.controller.spec.js.map +1 -0
  533. package/build/_modules/usage/usage.data-service.spec.d.ts +2 -0
  534. package/build/_modules/usage/usage.data-service.spec.d.ts.map +1 -0
  535. package/build/_modules/usage/usage.data-service.spec.js +284 -0
  536. package/build/_modules/usage/usage.data-service.spec.js.map +1 -0
  537. package/build/_services/base/api.service-base.spec.d.ts +2 -0
  538. package/build/_services/base/api.service-base.spec.d.ts.map +1 -0
  539. package/build/_services/base/api.service-base.spec.js +91 -0
  540. package/build/_services/base/api.service-base.spec.js.map +1 -0
  541. package/build/_services/base/archive-data.service.spec.d.ts +2 -0
  542. package/build/_services/base/archive-data.service.spec.d.ts.map +1 -0
  543. package/build/_services/base/archive-data.service.spec.js +149 -0
  544. package/build/_services/base/archive-data.service.spec.js.map +1 -0
  545. package/build/_services/base/data.service.spec.d.ts +2 -0
  546. package/build/_services/base/data.service.spec.d.ts.map +1 -0
  547. package/build/_services/base/data.service.spec.js +614 -0
  548. package/build/_services/base/data.service.spec.js.map +1 -0
  549. package/build/_services/base/db.service.encryption.spec.d.ts +2 -0
  550. package/build/_services/base/db.service.encryption.spec.d.ts.map +1 -0
  551. package/build/_services/base/db.service.encryption.spec.js +66 -0
  552. package/build/_services/base/db.service.encryption.spec.js.map +1 -0
  553. package/build/_services/base/db.service.spec.d.ts +2 -0
  554. package/build/_services/base/db.service.spec.d.ts.map +1 -0
  555. package/build/_services/base/db.service.spec.js +127 -0
  556. package/build/_services/base/db.service.spec.js.map +1 -0
  557. package/build/_services/base/singleton.service-base.spec.d.ts +2 -0
  558. package/build/_services/base/singleton.service-base.spec.d.ts.map +1 -0
  559. package/build/_services/base/singleton.service-base.spec.js +24 -0
  560. package/build/_services/base/singleton.service-base.spec.js.map +1 -0
  561. package/build/_services/base/singleton.service.spec.d.ts +2 -0
  562. package/build/_services/base/singleton.service.spec.d.ts.map +1 -0
  563. package/build/_services/base/singleton.service.spec.js +88 -0
  564. package/build/_services/base/singleton.service.spec.js.map +1 -0
  565. package/build/_services/core/api.service.spec.d.ts +2 -0
  566. package/build/_services/core/api.service.spec.d.ts.map +1 -0
  567. package/build/_services/core/api.service.spec.js +150 -0
  568. package/build/_services/core/api.service.spec.js.map +1 -0
  569. package/build/_services/core/auth.service.spec.d.ts +2 -0
  570. package/build/_services/core/auth.service.spec.d.ts.map +1 -0
  571. package/build/_services/core/auth.service.spec.js +129 -0
  572. package/build/_services/core/auth.service.spec.js.map +1 -0
  573. package/build/_services/core/collection-growth-monitor.service.spec.d.ts +2 -0
  574. package/build/_services/core/collection-growth-monitor.service.spec.d.ts.map +1 -0
  575. package/build/_services/core/collection-growth-monitor.service.spec.js +51 -0
  576. package/build/_services/core/collection-growth-monitor.service.spec.js.map +1 -0
  577. package/build/_services/core/diagnostics.service.spec.d.ts +2 -0
  578. package/build/_services/core/diagnostics.service.spec.d.ts.map +1 -0
  579. package/build/_services/core/diagnostics.service.spec.js +40 -0
  580. package/build/_services/core/diagnostics.service.spec.js.map +1 -0
  581. package/build/_services/core/email.service.spec.d.ts +2 -0
  582. package/build/_services/core/email.service.spec.d.ts.map +1 -0
  583. package/build/_services/core/email.service.spec.js +77 -0
  584. package/build/_services/core/email.service.spec.js.map +1 -0
  585. package/build/_services/core/event-loop-diag.service.spec.d.ts +2 -0
  586. package/build/_services/core/event-loop-diag.service.spec.d.ts.map +1 -0
  587. package/build/_services/core/event-loop-diag.service.spec.js +18 -0
  588. package/build/_services/core/event-loop-diag.service.spec.js.map +1 -0
  589. package/build/_services/core/global.service.spec.d.ts +2 -0
  590. package/build/_services/core/global.service.spec.d.ts.map +1 -0
  591. package/build/_services/core/global.service.spec.js +235 -0
  592. package/build/_services/core/global.service.spec.js.map +1 -0
  593. package/build/_services/core/memory-guard.service.spec.d.ts +2 -0
  594. package/build/_services/core/memory-guard.service.spec.d.ts.map +1 -0
  595. package/build/_services/core/memory-guard.service.spec.js +219 -0
  596. package/build/_services/core/memory-guard.service.spec.js.map +1 -0
  597. package/build/_services/core/migration-runner.service.spec.d.ts +2 -0
  598. package/build/_services/core/migration-runner.service.spec.d.ts.map +1 -0
  599. package/build/_services/core/migration-runner.service.spec.js +77 -0
  600. package/build/_services/core/migration-runner.service.spec.js.map +1 -0
  601. package/build/_services/core/request-hunter.service.spec.d.ts +2 -0
  602. package/build/_services/core/request-hunter.service.spec.d.ts.map +1 -0
  603. package/build/_services/core/request-hunter.service.spec.js +101 -0
  604. package/build/_services/core/request-hunter.service.spec.js.map +1 -0
  605. package/build/_services/core/service-collection.service.spec.d.ts +2 -0
  606. package/build/_services/core/service-collection.service.spec.d.ts.map +1 -0
  607. package/build/_services/core/service-collection.service.spec.js +39 -0
  608. package/build/_services/core/service-collection.service.spec.js.map +1 -0
  609. package/build/_services/route/controller.service.spec.d.ts +2 -0
  610. package/build/_services/route/controller.service.spec.d.ts.map +1 -0
  611. package/build/_services/route/controller.service.spec.js +48 -0
  612. package/build/_services/route/controller.service.spec.js.map +1 -0
  613. package/build/_services/route/routing-module.service.spec.d.ts +2 -0
  614. package/build/_services/route/routing-module.service.spec.d.ts.map +1 -0
  615. package/build/_services/route/routing-module.service.spec.js +81 -0
  616. package/build/_services/route/routing-module.service.spec.js.map +1 -0
  617. package/build/_services/server/app.server-retention.spec.d.ts +2 -0
  618. package/build/_services/server/app.server-retention.spec.d.ts.map +1 -0
  619. package/build/_services/server/app.server-retention.spec.js +93 -0
  620. package/build/_services/server/app.server-retention.spec.js.map +1 -0
  621. package/build/_services/shared.static-service.spec.d.ts +2 -0
  622. package/build/_services/shared.static-service.spec.d.ts.map +1 -0
  623. package/build/_services/shared.static-service.spec.js +82 -0
  624. package/build/_services/shared.static-service.spec.js.map +1 -0
  625. package/coverage/_collections/archive.util.ts.html +139 -0
  626. package/coverage/_collections/get-environment-settings.util.ts.html +229 -0
  627. package/coverage/_collections/index.html +146 -0
  628. package/coverage/_collections/star.controller.ts.html +472 -0
  629. package/coverage/_models/control-models/api-call-params.control-model.ts.html +511 -0
  630. package/coverage/_models/control-models/app-ext-system-controls.control-model.ts.html +112 -0
  631. package/coverage/_models/control-models/app-params.control-model.ts.html +475 -0
  632. package/coverage/_models/control-models/app-system-controls.control-model.ts.html +112 -0
  633. package/coverage/_models/control-models/endpoint-params.control-model.ts.html +1618 -0
  634. package/coverage/_models/control-models/http-settings.control-model.ts.html +172 -0
  635. package/coverage/_models/control-models/index.html +206 -0
  636. package/coverage/_models/control-models/system-control.control-model.ts.html +121 -0
  637. package/coverage/_modules/ai/_models/ai-input-interfaces.ts.html +436 -0
  638. package/coverage/_modules/ai/_models/index.html +116 -0
  639. package/coverage/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts.html +1993 -0
  640. package/coverage/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts.html +340 -0
  641. package/coverage/_modules/ai/_modules/document-ai/_collections/index.html +131 -0
  642. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts.html +523 -0
  643. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts.html +571 -0
  644. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts.html +382 -0
  645. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/index.html +146 -0
  646. package/coverage/_modules/ai/_modules/open-ai/_collections/index.html +131 -0
  647. package/coverage/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts.html +331 -0
  648. package/coverage/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts.html +310 -0
  649. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/index.html +161 -0
  650. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts.html +958 -0
  651. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts.html +1801 -0
  652. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts.html +1390 -0
  653. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts.html +1915 -0
  654. package/coverage/_modules/ai/_modules/open-ai/_services/index.html +146 -0
  655. package/coverage/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts.html +334 -0
  656. package/coverage/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts.html +1822 -0
  657. package/coverage/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts.html +2584 -0
  658. package/coverage/_modules/ai/_services/ai-embedding.service-base.ts.html +208 -0
  659. package/coverage/_modules/ai/_services/ai-llm-chat.service-base.ts.html +289 -0
  660. package/coverage/_modules/ai/_services/ai-llm.service-base.ts.html +1060 -0
  661. package/coverage/_modules/ai/_services/ai-provider.service-base.ts.html +172 -0
  662. package/coverage/_modules/ai/_services/index.html +161 -0
  663. package/coverage/_modules/assistant/_collections/ass.util.ts.html +235 -0
  664. package/coverage/_modules/assistant/_collections/index.html +116 -0
  665. package/coverage/_modules/assistant/_services/ass-io.control-service.ts.html +307 -0
  666. package/coverage/_modules/assistant/_services/ass-main.control-service.ts.html +406 -0
  667. package/coverage/_modules/assistant/_services/index.html +131 -0
  668. package/coverage/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts.html +112 -0
  669. package/coverage/_modules/bot/_modules/discord-bot/_models/index.html +116 -0
  670. package/coverage/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts.html +1978 -0
  671. package/coverage/_modules/bot/_modules/discord-bot/_services/index.html +116 -0
  672. package/coverage/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts.html +250 -0
  673. package/coverage/_modules/bot/_modules/dynamo-bot/_collections/index.html +116 -0
  674. package/coverage/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts.html +130 -0
  675. package/coverage/_modules/bot/_modules/dynamo-bot/_models/index.html +116 -0
  676. package/coverage/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts.html +1414 -0
  677. package/coverage/_modules/bot/_modules/dynamo-bot/_services/index.html +116 -0
  678. package/coverage/_modules/bot/_modules/slack-bot/_models/index.html +116 -0
  679. package/coverage/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts.html +112 -0
  680. package/coverage/_modules/bot/_modules/slack-bot/_services/index.html +116 -0
  681. package/coverage/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts.html +664 -0
  682. package/coverage/_modules/bot/_modules/teams-bot/_models/index.html +116 -0
  683. package/coverage/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts.html +112 -0
  684. package/coverage/_modules/bot/_modules/teams-bot/_services/index.html +116 -0
  685. package/coverage/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts.html +664 -0
  686. package/coverage/_modules/bot/_services/bot-commands.control-service.ts.html +559 -0
  687. package/coverage/_modules/bot/_services/bot-io.control-service.ts.html +1072 -0
  688. package/coverage/_modules/bot/_services/bot-main.control-service.ts.html +1552 -0
  689. package/coverage/_modules/bot/_services/bot-messaging-provider.service-base.ts.html +556 -0
  690. package/coverage/_modules/bot/_services/bot-routines.control-service.ts.html +319 -0
  691. package/coverage/_modules/bot/_services/index.html +176 -0
  692. package/coverage/_modules/custom-data/custom-data.controller.ts.html +292 -0
  693. package/coverage/_modules/custom-data/custom-data.data-service.ts.html +148 -0
  694. package/coverage/_modules/custom-data/get-custom-data-routing-module.util.ts.html +157 -0
  695. package/coverage/_modules/custom-data/index.html +146 -0
  696. package/coverage/_modules/defaults/_models/default-user.data-model.ts.html +301 -0
  697. package/coverage/_modules/defaults/_models/index.html +116 -0
  698. package/coverage/_modules/defaults/_services/default-auth.service.ts.html +616 -0
  699. package/coverage/_modules/defaults/_services/default-socket-events.service.ts.html +268 -0
  700. package/coverage/_modules/defaults/_services/default-user.data-service.ts.html +379 -0
  701. package/coverage/_modules/defaults/_services/index.html +146 -0
  702. package/coverage/_modules/discord-assistant/_collections/dias.util.ts.html +481 -0
  703. package/coverage/_modules/discord-assistant/_collections/index.html +116 -0
  704. package/coverage/_modules/discord-assistant/_models/dias-knowledge.data-model.ts.html +241 -0
  705. package/coverage/_modules/discord-assistant/_models/index.html +116 -0
  706. package/coverage/_modules/discord-assistant/_services/dias-chunk.data-service.ts.html +616 -0
  707. package/coverage/_modules/discord-assistant/_services/dias-io.control-service.ts.html +292 -0
  708. package/coverage/_modules/discord-assistant/_services/dias-main.control-service.ts.html +166 -0
  709. package/coverage/_modules/discord-assistant/_services/dias.service-base.ts.html +313 -0
  710. package/coverage/_modules/discord-assistant/_services/index.html +161 -0
  711. package/coverage/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts.html +118 -0
  712. package/coverage/_modules/discord-assistant-voiced/_services/index.html +116 -0
  713. package/coverage/_modules/discord-bot/_collections/dibo-global-settings.conts.ts.html +250 -0
  714. package/coverage/_modules/discord-bot/_collections/dibo-operations.util.ts.html +1246 -0
  715. package/coverage/_modules/discord-bot/_collections/index.html +131 -0
  716. package/coverage/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts.html +106 -0
  717. package/coverage/_modules/discord-bot/_models/index.html +116 -0
  718. package/coverage/_modules/discord-bot/_services/dibo-commands.control-service.ts.html +544 -0
  719. package/coverage/_modules/discord-bot/_services/dibo-io.control-service.ts.html +1003 -0
  720. package/coverage/_modules/discord-bot/_services/dibo-main.control-service.ts.html +1546 -0
  721. package/coverage/_modules/discord-bot/_services/dibo-routines.control-service.ts.html +376 -0
  722. package/coverage/_modules/discord-bot/_services/index.html +161 -0
  723. package/coverage/_modules/messaging/_collections/get-messaging-routing-module.util.ts.html +163 -0
  724. package/coverage/_modules/messaging/_collections/index.html +131 -0
  725. package/coverage/_modules/messaging/_collections/msg.util.ts.html +334 -0
  726. package/coverage/_modules/messaging/_services/index.html +191 -0
  727. package/coverage/_modules/messaging/_services/msg-conversation.data-service.ts.html +523 -0
  728. package/coverage/_modules/messaging/_services/msg-events.service.ts.html +886 -0
  729. package/coverage/_modules/messaging/_services/msg-integration.control-service.ts.html +622 -0
  730. package/coverage/_modules/messaging/_services/msg-main.control-service.ts.html +1738 -0
  731. package/coverage/_modules/messaging/_services/msg-message.data-service.ts.html +472 -0
  732. package/coverage/_modules/messaging/_services/msg.controller.ts.html +1195 -0
  733. package/coverage/_modules/mock/app-extended-server.mock.ts.html +688 -0
  734. package/coverage/_modules/mock/app-params.mock.ts.html +112 -0
  735. package/coverage/_modules/mock/app-server.mock.ts.html +649 -0
  736. package/coverage/_modules/mock/auth-service.mock.ts.html +169 -0
  737. package/coverage/_modules/mock/controller.mock.ts.html +133 -0
  738. package/coverage/_modules/mock/data-model.mock.ts.html +331 -0
  739. package/coverage/_modules/mock/email-service-collection.mock.ts.html +130 -0
  740. package/coverage/_modules/mock/email-service.mock.ts.html +145 -0
  741. package/coverage/_modules/mock/endpoint.mock.ts.html +358 -0
  742. package/coverage/_modules/mock/index.html +266 -0
  743. package/coverage/_modules/mock/socket-client.mock.ts.html +220 -0
  744. package/coverage/_modules/mock/socket-server.mock.ts.html +247 -0
  745. package/coverage/_modules/oauth2/_routes/index.html +116 -0
  746. package/coverage/_modules/oauth2/_routes/oauth2.controller.ts.html +379 -0
  747. package/coverage/_modules/oauth2/_services/index.html +131 -0
  748. package/coverage/_modules/oauth2/_services/oauth2.auth-service.ts.html +781 -0
  749. package/coverage/_modules/oauth2/_services/oauth2.control-service.ts.html +2044 -0
  750. package/coverage/_modules/server/errors/errors.control-service.ts.html +292 -0
  751. package/coverage/_modules/server/errors/errors.controller.ts.html +895 -0
  752. package/coverage/_modules/server/errors/errors.data-service.ts.html +1666 -0
  753. package/coverage/_modules/server/errors/index.html +146 -0
  754. package/coverage/_modules/server/server-status/index.html +161 -0
  755. package/coverage/_modules/server/server-status/server-status-snapshot.control-service.ts.html +136 -0
  756. package/coverage/_modules/server/server-status/server-status-snapshot.data-service.ts.html +196 -0
  757. package/coverage/_modules/server/server-status/server-status.control-service.ts.html +1093 -0
  758. package/coverage/_modules/server/server-status/server-status.controller.ts.html +478 -0
  759. package/coverage/_modules/socket/_models/index.html +146 -0
  760. package/coverage/_modules/socket/_models/socket-client-service-params.control-model.ts.html +151 -0
  761. package/coverage/_modules/socket/_models/socket-presence.control-model.ts.html +715 -0
  762. package/coverage/_modules/socket/_models/socket-server-service-params.control-model.ts.html +145 -0
  763. package/coverage/_modules/socket/_services/index.html +131 -0
  764. package/coverage/_modules/socket/_services/socket-client.service.ts.html +862 -0
  765. package/coverage/_modules/socket/_services/socket-server.service.ts.html +3196 -0
  766. package/coverage/_modules/socket/app-extended.server.ts.html +1954 -0
  767. package/coverage/_modules/socket/index.html +116 -0
  768. package/coverage/_modules/test/get-test-routing-module.util.ts.html +154 -0
  769. package/coverage/_modules/test/index.html +131 -0
  770. package/coverage/_modules/test/test.controller.ts.html +430 -0
  771. package/coverage/_modules/usage/get-usage-routing-module.util.ts.html +151 -0
  772. package/coverage/_modules/usage/index.html +146 -0
  773. package/coverage/_modules/usage/usage.controller.ts.html +463 -0
  774. package/coverage/_modules/usage/usage.data-service.ts.html +640 -0
  775. package/coverage/_services/base/api.service-base.ts.html +307 -0
  776. package/coverage/_services/base/archive-data.service.ts.html +727 -0
  777. package/coverage/_services/base/data.service.ts.html +7033 -0
  778. package/coverage/_services/base/db.service.ts.html +4786 -0
  779. package/coverage/_services/base/index.html +191 -0
  780. package/coverage/_services/base/singleton.service-base.ts.html +157 -0
  781. package/coverage/_services/base/singleton.service.ts.html +190 -0
  782. package/coverage/_services/core/api.service.ts.html +1900 -0
  783. package/coverage/_services/core/auth.service.ts.html +607 -0
  784. package/coverage/_services/core/email.service.ts.html +2302 -0
  785. package/coverage/_services/core/global.service.ts.html +1363 -0
  786. package/coverage/_services/core/index.html +176 -0
  787. package/coverage/_services/core/service-collection.service.ts.html +103 -0
  788. package/coverage/_services/index.html +116 -0
  789. package/coverage/_services/route/controller.service.ts.html +475 -0
  790. package/coverage/_services/route/index.html +131 -0
  791. package/coverage/_services/route/routing-module.service.ts.html +1075 -0
  792. package/coverage/_services/server/app.server.ts.html +4408 -0
  793. package/coverage/_services/server/index.html +116 -0
  794. package/coverage/_services/shared.static-service.ts.html +319 -0
  795. package/coverage/base.css +224 -0
  796. package/coverage/block-navigation.js +87 -0
  797. package/coverage/favicon.png +0 -0
  798. package/coverage/index.html +821 -0
  799. package/coverage/lcov-report/_collections/archive.util.ts.html +139 -0
  800. package/coverage/lcov-report/_collections/get-environment-settings.util.ts.html +229 -0
  801. package/coverage/lcov-report/_collections/index.html +146 -0
  802. package/coverage/lcov-report/_collections/star.controller.ts.html +472 -0
  803. package/coverage/lcov-report/_models/control-models/api-call-params.control-model.ts.html +511 -0
  804. package/coverage/lcov-report/_models/control-models/app-ext-system-controls.control-model.ts.html +112 -0
  805. package/coverage/lcov-report/_models/control-models/app-params.control-model.ts.html +475 -0
  806. package/coverage/lcov-report/_models/control-models/app-system-controls.control-model.ts.html +112 -0
  807. package/coverage/lcov-report/_models/control-models/endpoint-params.control-model.ts.html +1618 -0
  808. package/coverage/lcov-report/_models/control-models/http-settings.control-model.ts.html +172 -0
  809. package/coverage/lcov-report/_models/control-models/index.html +206 -0
  810. package/coverage/lcov-report/_models/control-models/system-control.control-model.ts.html +121 -0
  811. package/coverage/lcov-report/_modules/ai/_models/ai-input-interfaces.ts.html +436 -0
  812. package/coverage/lcov-report/_modules/ai/_models/index.html +116 -0
  813. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts.html +1993 -0
  814. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts.html +340 -0
  815. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/index.html +131 -0
  816. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts.html +523 -0
  817. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts.html +571 -0
  818. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts.html +382 -0
  819. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/index.html +146 -0
  820. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/index.html +131 -0
  821. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts.html +331 -0
  822. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts.html +310 -0
  823. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/index.html +161 -0
  824. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts.html +958 -0
  825. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts.html +1801 -0
  826. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts.html +1390 -0
  827. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts.html +1915 -0
  828. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/index.html +146 -0
  829. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts.html +334 -0
  830. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts.html +1822 -0
  831. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts.html +2584 -0
  832. package/coverage/lcov-report/_modules/ai/_services/ai-embedding.service-base.ts.html +208 -0
  833. package/coverage/lcov-report/_modules/ai/_services/ai-llm-chat.service-base.ts.html +289 -0
  834. package/coverage/lcov-report/_modules/ai/_services/ai-llm.service-base.ts.html +1060 -0
  835. package/coverage/lcov-report/_modules/ai/_services/ai-provider.service-base.ts.html +172 -0
  836. package/coverage/lcov-report/_modules/ai/_services/index.html +161 -0
  837. package/coverage/lcov-report/_modules/assistant/_collections/ass.util.ts.html +235 -0
  838. package/coverage/lcov-report/_modules/assistant/_collections/index.html +116 -0
  839. package/coverage/lcov-report/_modules/assistant/_services/ass-io.control-service.ts.html +307 -0
  840. package/coverage/lcov-report/_modules/assistant/_services/ass-main.control-service.ts.html +406 -0
  841. package/coverage/lcov-report/_modules/assistant/_services/index.html +131 -0
  842. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts.html +112 -0
  843. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_models/index.html +116 -0
  844. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts.html +1978 -0
  845. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_services/index.html +116 -0
  846. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts.html +250 -0
  847. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_collections/index.html +116 -0
  848. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts.html +130 -0
  849. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_models/index.html +116 -0
  850. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts.html +1414 -0
  851. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_services/index.html +116 -0
  852. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_models/index.html +116 -0
  853. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts.html +112 -0
  854. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_services/index.html +116 -0
  855. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts.html +664 -0
  856. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_models/index.html +116 -0
  857. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts.html +112 -0
  858. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_services/index.html +116 -0
  859. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts.html +664 -0
  860. package/coverage/lcov-report/_modules/bot/_services/bot-commands.control-service.ts.html +559 -0
  861. package/coverage/lcov-report/_modules/bot/_services/bot-io.control-service.ts.html +1072 -0
  862. package/coverage/lcov-report/_modules/bot/_services/bot-main.control-service.ts.html +1552 -0
  863. package/coverage/lcov-report/_modules/bot/_services/bot-messaging-provider.service-base.ts.html +556 -0
  864. package/coverage/lcov-report/_modules/bot/_services/bot-routines.control-service.ts.html +319 -0
  865. package/coverage/lcov-report/_modules/bot/_services/index.html +176 -0
  866. package/coverage/lcov-report/_modules/custom-data/custom-data.controller.ts.html +292 -0
  867. package/coverage/lcov-report/_modules/custom-data/custom-data.data-service.ts.html +148 -0
  868. package/coverage/lcov-report/_modules/custom-data/get-custom-data-routing-module.util.ts.html +157 -0
  869. package/coverage/lcov-report/_modules/custom-data/index.html +146 -0
  870. package/coverage/lcov-report/_modules/defaults/_models/default-user.data-model.ts.html +301 -0
  871. package/coverage/lcov-report/_modules/defaults/_models/index.html +116 -0
  872. package/coverage/lcov-report/_modules/defaults/_services/default-auth.service.ts.html +616 -0
  873. package/coverage/lcov-report/_modules/defaults/_services/default-socket-events.service.ts.html +268 -0
  874. package/coverage/lcov-report/_modules/defaults/_services/default-user.data-service.ts.html +379 -0
  875. package/coverage/lcov-report/_modules/defaults/_services/index.html +146 -0
  876. package/coverage/lcov-report/_modules/discord-assistant/_collections/dias.util.ts.html +481 -0
  877. package/coverage/lcov-report/_modules/discord-assistant/_collections/index.html +116 -0
  878. package/coverage/lcov-report/_modules/discord-assistant/_models/dias-knowledge.data-model.ts.html +241 -0
  879. package/coverage/lcov-report/_modules/discord-assistant/_models/index.html +116 -0
  880. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-chunk.data-service.ts.html +616 -0
  881. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-io.control-service.ts.html +292 -0
  882. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-main.control-service.ts.html +166 -0
  883. package/coverage/lcov-report/_modules/discord-assistant/_services/dias.service-base.ts.html +313 -0
  884. package/coverage/lcov-report/_modules/discord-assistant/_services/index.html +161 -0
  885. package/coverage/lcov-report/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts.html +118 -0
  886. package/coverage/lcov-report/_modules/discord-assistant-voiced/_services/index.html +116 -0
  887. package/coverage/lcov-report/_modules/discord-bot/_collections/dibo-global-settings.conts.ts.html +250 -0
  888. package/coverage/lcov-report/_modules/discord-bot/_collections/dibo-operations.util.ts.html +1246 -0
  889. package/coverage/lcov-report/_modules/discord-bot/_collections/index.html +131 -0
  890. package/coverage/lcov-report/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts.html +106 -0
  891. package/coverage/lcov-report/_modules/discord-bot/_models/index.html +116 -0
  892. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-commands.control-service.ts.html +544 -0
  893. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-io.control-service.ts.html +1003 -0
  894. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-main.control-service.ts.html +1546 -0
  895. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-routines.control-service.ts.html +376 -0
  896. package/coverage/lcov-report/_modules/discord-bot/_services/index.html +161 -0
  897. package/coverage/lcov-report/_modules/messaging/_collections/get-messaging-routing-module.util.ts.html +163 -0
  898. package/coverage/lcov-report/_modules/messaging/_collections/index.html +131 -0
  899. package/coverage/lcov-report/_modules/messaging/_collections/msg.util.ts.html +334 -0
  900. package/coverage/lcov-report/_modules/messaging/_services/index.html +191 -0
  901. package/coverage/lcov-report/_modules/messaging/_services/msg-conversation.data-service.ts.html +523 -0
  902. package/coverage/lcov-report/_modules/messaging/_services/msg-events.service.ts.html +886 -0
  903. package/coverage/lcov-report/_modules/messaging/_services/msg-integration.control-service.ts.html +622 -0
  904. package/coverage/lcov-report/_modules/messaging/_services/msg-main.control-service.ts.html +1738 -0
  905. package/coverage/lcov-report/_modules/messaging/_services/msg-message.data-service.ts.html +472 -0
  906. package/coverage/lcov-report/_modules/messaging/_services/msg.controller.ts.html +1195 -0
  907. package/coverage/lcov-report/_modules/mock/app-extended-server.mock.ts.html +688 -0
  908. package/coverage/lcov-report/_modules/mock/app-params.mock.ts.html +112 -0
  909. package/coverage/lcov-report/_modules/mock/app-server.mock.ts.html +649 -0
  910. package/coverage/lcov-report/_modules/mock/auth-service.mock.ts.html +169 -0
  911. package/coverage/lcov-report/_modules/mock/controller.mock.ts.html +133 -0
  912. package/coverage/lcov-report/_modules/mock/data-model.mock.ts.html +331 -0
  913. package/coverage/lcov-report/_modules/mock/email-service-collection.mock.ts.html +130 -0
  914. package/coverage/lcov-report/_modules/mock/email-service.mock.ts.html +145 -0
  915. package/coverage/lcov-report/_modules/mock/endpoint.mock.ts.html +358 -0
  916. package/coverage/lcov-report/_modules/mock/index.html +266 -0
  917. package/coverage/lcov-report/_modules/mock/socket-client.mock.ts.html +220 -0
  918. package/coverage/lcov-report/_modules/mock/socket-server.mock.ts.html +247 -0
  919. package/coverage/lcov-report/_modules/oauth2/_routes/index.html +116 -0
  920. package/coverage/lcov-report/_modules/oauth2/_routes/oauth2.controller.ts.html +379 -0
  921. package/coverage/lcov-report/_modules/oauth2/_services/index.html +131 -0
  922. package/coverage/lcov-report/_modules/oauth2/_services/oauth2.auth-service.ts.html +781 -0
  923. package/coverage/lcov-report/_modules/oauth2/_services/oauth2.control-service.ts.html +2044 -0
  924. package/coverage/lcov-report/_modules/server/errors/errors.control-service.ts.html +292 -0
  925. package/coverage/lcov-report/_modules/server/errors/errors.controller.ts.html +895 -0
  926. package/coverage/lcov-report/_modules/server/errors/errors.data-service.ts.html +1666 -0
  927. package/coverage/lcov-report/_modules/server/errors/index.html +146 -0
  928. package/coverage/lcov-report/_modules/server/server-status/index.html +161 -0
  929. package/coverage/lcov-report/_modules/server/server-status/server-status-snapshot.control-service.ts.html +136 -0
  930. package/coverage/lcov-report/_modules/server/server-status/server-status-snapshot.data-service.ts.html +196 -0
  931. package/coverage/lcov-report/_modules/server/server-status/server-status.control-service.ts.html +1093 -0
  932. package/coverage/lcov-report/_modules/server/server-status/server-status.controller.ts.html +478 -0
  933. package/coverage/lcov-report/_modules/socket/_models/index.html +146 -0
  934. package/coverage/lcov-report/_modules/socket/_models/socket-client-service-params.control-model.ts.html +151 -0
  935. package/coverage/lcov-report/_modules/socket/_models/socket-presence.control-model.ts.html +715 -0
  936. package/coverage/lcov-report/_modules/socket/_models/socket-server-service-params.control-model.ts.html +145 -0
  937. package/coverage/lcov-report/_modules/socket/_services/index.html +131 -0
  938. package/coverage/lcov-report/_modules/socket/_services/socket-client.service.ts.html +862 -0
  939. package/coverage/lcov-report/_modules/socket/_services/socket-server.service.ts.html +3196 -0
  940. package/coverage/lcov-report/_modules/socket/app-extended.server.ts.html +1954 -0
  941. package/coverage/lcov-report/_modules/socket/index.html +116 -0
  942. package/coverage/lcov-report/_modules/test/get-test-routing-module.util.ts.html +154 -0
  943. package/coverage/lcov-report/_modules/test/index.html +131 -0
  944. package/coverage/lcov-report/_modules/test/test.controller.ts.html +430 -0
  945. package/coverage/lcov-report/_modules/usage/get-usage-routing-module.util.ts.html +151 -0
  946. package/coverage/lcov-report/_modules/usage/index.html +146 -0
  947. package/coverage/lcov-report/_modules/usage/usage.controller.ts.html +463 -0
  948. package/coverage/lcov-report/_modules/usage/usage.data-service.ts.html +640 -0
  949. package/coverage/lcov-report/_services/base/api.service-base.ts.html +307 -0
  950. package/coverage/lcov-report/_services/base/archive-data.service.ts.html +727 -0
  951. package/coverage/lcov-report/_services/base/data.service.ts.html +7033 -0
  952. package/coverage/lcov-report/_services/base/db.service.ts.html +4786 -0
  953. package/coverage/lcov-report/_services/base/index.html +191 -0
  954. package/coverage/lcov-report/_services/base/singleton.service-base.ts.html +157 -0
  955. package/coverage/lcov-report/_services/base/singleton.service.ts.html +190 -0
  956. package/coverage/lcov-report/_services/core/api.service.ts.html +1900 -0
  957. package/coverage/lcov-report/_services/core/auth.service.ts.html +607 -0
  958. package/coverage/lcov-report/_services/core/email.service.ts.html +2302 -0
  959. package/coverage/lcov-report/_services/core/global.service.ts.html +1363 -0
  960. package/coverage/lcov-report/_services/core/index.html +176 -0
  961. package/coverage/lcov-report/_services/core/service-collection.service.ts.html +103 -0
  962. package/coverage/lcov-report/_services/index.html +116 -0
  963. package/coverage/lcov-report/_services/route/controller.service.ts.html +475 -0
  964. package/coverage/lcov-report/_services/route/index.html +131 -0
  965. package/coverage/lcov-report/_services/route/routing-module.service.ts.html +1075 -0
  966. package/coverage/lcov-report/_services/server/app.server.ts.html +4408 -0
  967. package/coverage/lcov-report/_services/server/index.html +116 -0
  968. package/coverage/lcov-report/_services/shared.static-service.ts.html +319 -0
  969. package/coverage/lcov-report/base.css +224 -0
  970. package/coverage/lcov-report/block-navigation.js +87 -0
  971. package/coverage/lcov-report/favicon.png +0 -0
  972. package/coverage/lcov-report/index.html +821 -0
  973. package/coverage/lcov-report/prettify.css +1 -0
  974. package/coverage/lcov-report/prettify.js +2 -0
  975. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  976. package/coverage/lcov-report/sorter.js +210 -0
  977. package/coverage/lcov.info +29957 -0
  978. package/coverage/prettify.css +1 -0
  979. package/coverage/prettify.js +2 -0
  980. package/coverage/sort-arrow-sprite.png +0 -0
  981. package/coverage/sorter.js +210 -0
  982. package/coverage/tmp/coverage-111712-1762988673351-0.json +1 -0
  983. package/coverage/tmp/coverage-112308-1762988673527-0.json +1 -0
  984. package/coverage/tmp/coverage-112324-1762988615026-0.json +1 -0
  985. package/coverage/tmp/coverage-112436-1762988615438-0.json +1 -0
  986. package/coverage/tmp/coverage-112512-1762988673477-0.json +1 -0
  987. package/eslint.config.js +3 -3
  988. package/logs/cicd-job.json +3 -0
  989. package/logs/cicd-output.log +31 -0
  990. package/logs/cicd-report.json +148 -0
  991. package/logs/cicd-status.json +70 -0
  992. package/nodemon.json +24 -24
  993. package/package.json +2 -2
  994. package/pnpm-workspace.yaml +5 -5
  995. package/scripts/run-coverage-tests.js +28 -28
  996. package/spec/support/helpers/spec-reporter-loader.js +359 -359
  997. package/spec/support/helpers/ts-node-helper.js +93 -93
  998. package/spec/support/jasmine.coverage.json +24 -24
  999. package/spec/support/jasmine.json +24 -24
  1000. package/src/_collections/archive.util.spec.ts +57 -57
  1001. package/src/_collections/archive.util.ts +18 -18
  1002. package/src/_collections/atlas-default-db-options.const.ts +9 -9
  1003. package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
  1004. package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
  1005. package/src/_collections/default-not-found-page.const.spec.ts +19 -19
  1006. package/src/_collections/default-not-found-page.const.ts +22 -22
  1007. package/src/_collections/default-socket-path.const.spec.ts +12 -12
  1008. package/src/_collections/default-socket-path.const.ts +2 -2
  1009. package/src/_collections/get-environment-settings.util.spec.ts +210 -210
  1010. package/src/_collections/get-environment-settings.util.ts +48 -48
  1011. package/src/_collections/global-settings.const.ts +126 -126
  1012. package/src/_collections/sample.env +21 -21
  1013. package/src/_collections/signed-url.util.spec.ts +198 -198
  1014. package/src/_collections/signed-url.util.ts +170 -170
  1015. package/src/_collections/star.controller.spec.ts +224 -224
  1016. package/src/_collections/star.controller.ts +129 -129
  1017. package/src/_enums/data-model-type.enum.ts +14 -14
  1018. package/src/_enums/data-service-function.enum.ts +24 -24
  1019. package/src/_enums/predefined-data-types.enum.ts +16 -16
  1020. package/src/_enums/route-security.enum.ts +12 -12
  1021. package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
  1022. package/src/_models/control-models/api-call-params.control-model.ts +142 -142
  1023. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
  1024. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  1025. package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
  1026. package/src/_models/control-models/app-params.control-model.ts +136 -136
  1027. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
  1028. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  1029. package/src/_models/control-models/endpoint-params.control-model.spec.ts +669 -669
  1030. package/src/_models/control-models/endpoint-params.control-model.ts +664 -664
  1031. package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
  1032. package/src/_models/control-models/http-settings.control-model.ts +37 -37
  1033. package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
  1034. package/src/_models/control-models/system-control.control-model.ts +12 -12
  1035. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  1036. package/src/_models/interfaces/environment-settings.interface.ts +59 -59
  1037. package/src/_models/interfaces/global-log-settings.interface.ts +171 -171
  1038. package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
  1039. package/src/_models/interfaces/global-settings.interface.ts +294 -294
  1040. package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
  1041. package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
  1042. package/src/_models/interfaces/static-client-settings.interface.ts +36 -36
  1043. package/src/_models/types/db-update.type.ts +100 -100
  1044. package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
  1045. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
  1046. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.ts +115 -115
  1047. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.ts +233 -233
  1048. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
  1049. package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
  1050. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
  1051. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
  1052. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.ts +295 -295
  1053. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +518 -518
  1054. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
  1055. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
  1056. package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
  1057. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
  1058. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
  1059. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
  1060. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.ts +68 -68
  1061. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
  1062. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
  1063. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
  1064. package/src/_modules/ai/_modules/document-ai/index.ts +30 -30
  1065. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
  1066. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
  1067. package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
  1068. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
  1069. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
  1070. package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
  1071. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
  1072. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
  1073. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
  1074. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
  1075. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
  1076. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
  1077. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
  1078. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +332 -332
  1079. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
  1080. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +634 -634
  1081. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
  1082. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
  1083. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1085 -1085
  1084. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
  1085. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
  1086. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +114 -114
  1087. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
  1088. package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
  1089. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
  1090. package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
  1091. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
  1092. package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -599
  1093. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
  1094. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
  1095. package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -197
  1096. package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +371 -371
  1097. package/src/_modules/ai/index.ts +33 -33
  1098. package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
  1099. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
  1100. package/src/_modules/assistant/_collections/ass.util.ts +50 -50
  1101. package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
  1102. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
  1103. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
  1104. package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
  1105. package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
  1106. package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
  1107. package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
  1108. package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
  1109. package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
  1110. package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
  1111. package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
  1112. package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
  1113. package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
  1114. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
  1115. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
  1116. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
  1117. package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
  1118. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
  1119. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
  1120. package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
  1121. package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
  1122. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
  1123. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
  1124. package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
  1125. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
  1126. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
  1127. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
  1128. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
  1129. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
  1130. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
  1131. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
  1132. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
  1133. package/src/_modules/custom-data/custom-data.controller.ts +67 -67
  1134. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
  1135. package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
  1136. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
  1137. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
  1138. package/src/_modules/custom-data/index.ts +9 -9
  1139. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -161
  1140. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +203 -203
  1141. package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -33
  1142. package/src/_modules/data-readers/index.ts +11 -11
  1143. package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
  1144. package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
  1145. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
  1146. package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
  1147. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
  1148. package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
  1149. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
  1150. package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
  1151. package/src/_modules/defaults/index.ts +17 -17
  1152. package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
  1153. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
  1154. package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
  1155. package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
  1156. package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
  1157. package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
  1158. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
  1159. package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
  1160. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
  1161. package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
  1162. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
  1163. package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
  1164. package/src/_modules/discord-assistant/index.ts +38 -38
  1165. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
  1166. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
  1167. package/src/_modules/discord-assistant-voiced/index.ts +36 -36
  1168. package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
  1169. package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
  1170. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
  1171. package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
  1172. package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
  1173. package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
  1174. package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
  1175. package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
  1176. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
  1177. package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
  1178. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
  1179. package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
  1180. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
  1181. package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
  1182. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
  1183. package/src/_modules/discord-bot/index.ts +36 -36
  1184. package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +35 -35
  1185. package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -59
  1186. package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
  1187. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
  1188. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
  1189. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +480 -480
  1190. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
  1191. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +214 -214
  1192. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +186 -186
  1193. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -167
  1194. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +130 -130
  1195. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +509 -509
  1196. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +323 -323
  1197. package/src/_modules/local-vector-search/index.ts +16 -16
  1198. package/src/_modules/logs/index.ts +11 -11
  1199. package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
  1200. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -142
  1201. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -120
  1202. package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +168 -168
  1203. package/src/_modules/mcp/index.ts +13 -13
  1204. package/src/_modules/messaging/README.md +354 -354
  1205. package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
  1206. package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
  1207. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
  1208. package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
  1209. package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
  1210. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
  1211. package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
  1212. package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
  1213. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
  1214. package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
  1215. package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
  1216. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
  1217. package/src/_modules/messaging/index.ts +30 -30
  1218. package/src/_modules/mock/app-extended-server.mock.ts +201 -201
  1219. package/src/_modules/mock/app-integration-test.mock.ts +51 -51
  1220. package/src/_modules/mock/app-params.mock.spec.ts +21 -21
  1221. package/src/_modules/mock/app-params.mock.ts +9 -9
  1222. package/src/_modules/mock/app-server.mock.ts +188 -188
  1223. package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
  1224. package/src/_modules/mock/auth-service.mock.ts +28 -28
  1225. package/src/_modules/mock/controller.mock.spec.ts +26 -26
  1226. package/src/_modules/mock/controller.mock.ts +16 -16
  1227. package/src/_modules/mock/data-model.mock.spec.ts +111 -111
  1228. package/src/_modules/mock/data-model.mock.ts +82 -82
  1229. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
  1230. package/src/_modules/mock/email-service-collection.mock.ts +15 -15
  1231. package/src/_modules/mock/email-service.mock.spec.ts +17 -17
  1232. package/src/_modules/mock/email-service.mock.ts +20 -20
  1233. package/src/_modules/mock/email-template.mock.html +14 -14
  1234. package/src/_modules/mock/endpoint.mock.ts +91 -91
  1235. package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
  1236. package/src/_modules/mock/socket-client.mock.ts +45 -45
  1237. package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
  1238. package/src/_modules/mock/socket-server.mock.ts +46 -46
  1239. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
  1240. package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
  1241. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
  1242. package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
  1243. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
  1244. package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
  1245. package/src/_modules/oauth2/index.ts +17 -17
  1246. package/src/_modules/scheduler/_models/scheduler-job.interface.ts +35 -35
  1247. package/src/_modules/scheduler/get-scheduler-routing-module.util.ts +33 -33
  1248. package/src/_modules/scheduler/index.ts +8 -8
  1249. package/src/_modules/scheduler/scheduler.controller.spec.ts +42 -42
  1250. package/src/_modules/scheduler/scheduler.controller.ts +69 -69
  1251. package/src/_modules/scheduler/scheduler.service.spec.ts +141 -141
  1252. package/src/_modules/scheduler/scheduler.service.ts +176 -176
  1253. package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -22
  1254. package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -81
  1255. package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +107 -107
  1256. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -306
  1257. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -295
  1258. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -118
  1259. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -105
  1260. package/src/_modules/scoped-config/index.ts +17 -17
  1261. package/src/_modules/server/errors/errors.control-service.spec.ts +238 -238
  1262. package/src/_modules/server/errors/errors.control-service.ts +100 -100
  1263. package/src/_modules/server/errors/errors.controller.ts +559 -559
  1264. package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
  1265. package/src/_modules/server/index.ts +30 -30
  1266. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
  1267. package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
  1268. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
  1269. package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
  1270. package/src/_modules/server/server-status/server-status.control-service.spec.ts +672 -672
  1271. package/src/_modules/server/server-status/server-status.control-service.ts +490 -490
  1272. package/src/_modules/server/server-status/server-status.controller.spec.ts +276 -276
  1273. package/src/_modules/server/server-status/server-status.controller.ts +336 -336
  1274. package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
  1275. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
  1276. package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
  1277. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +159 -158
  1278. package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -209
  1279. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +69 -69
  1280. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
  1281. package/src/_modules/socket/_services/socket-client.service.ts +260 -260
  1282. package/src/_modules/socket/_services/socket-server.service.spec.ts +264 -3
  1283. package/src/_modules/socket/_services/socket-server.service.ts +41 -74
  1284. package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
  1285. package/src/_modules/socket/app-extended.server.ts +648 -648
  1286. package/src/_modules/socket/index.ts +42 -42
  1287. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
  1288. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  1289. package/src/_modules/test/index.ts +11 -11
  1290. package/src/_modules/test/test.controller.spec.ts +72 -72
  1291. package/src/_modules/test/test.controller.ts +115 -115
  1292. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  1293. package/src/_modules/usage/index.ts +15 -15
  1294. package/src/_modules/usage/usage.controller.spec.ts +106 -106
  1295. package/src/_modules/usage/usage.controller.ts +140 -140
  1296. package/src/_modules/usage/usage.data-service.spec.ts +332 -332
  1297. package/src/_modules/usage/usage.data-service.ts +185 -185
  1298. package/src/_services/base/api.service-base.spec.ts +125 -125
  1299. package/src/_services/base/api.service-base.ts +74 -74
  1300. package/src/_services/base/archive-data.service.spec.ts +209 -209
  1301. package/src/_services/base/archive-data.service.ts +223 -223
  1302. package/src/_services/base/data.service.spec.ts +784 -784
  1303. package/src/_services/base/data.service.ts +2792 -2792
  1304. package/src/_services/base/db.service.spec.ts +160 -160
  1305. package/src/_services/base/db.service.ts +1698 -1698
  1306. package/src/_services/base/singleton.service-base.spec.ts +28 -28
  1307. package/src/_services/base/singleton.service-base.ts +24 -24
  1308. package/src/_services/base/singleton.service.spec.ts +114 -114
  1309. package/src/_services/base/singleton.service.ts +38 -38
  1310. package/src/_services/core/api.service.spec.ts +140 -140
  1311. package/src/_services/core/auth.service.spec.ts +159 -159
  1312. package/src/_services/core/auth.service.ts +174 -174
  1313. package/src/_services/core/email.service.spec.ts +85 -85
  1314. package/src/_services/core/email.service.ts +757 -757
  1315. package/src/_services/core/global.service.spec.ts +292 -292
  1316. package/src/_services/core/global.service.ts +487 -487
  1317. package/src/_services/core/memory-guard.service.spec.ts +245 -245
  1318. package/src/_services/core/memory-guard.service.ts +481 -481
  1319. package/src/_services/core/service-collection.service.spec.ts +46 -46
  1320. package/src/_services/core/service-collection.service.ts +6 -6
  1321. package/src/_services/route/controller.service.spec.ts +53 -53
  1322. package/src/_services/route/controller.service.ts +148 -148
  1323. package/src/_services/route/routing-module.service.spec.ts +98 -98
  1324. package/src/_services/route/routing-module.service.ts +330 -330
  1325. package/src/_services/server/app.server.ts +2012 -2012
  1326. package/src/_services/shared.static-service.spec.ts +99 -99
  1327. package/src/_services/shared.static-service.ts +78 -78
  1328. package/tsconfig.app.json +12 -12
  1329. package/tsconfig.json +42 -42
  1330. package/.dynamo/logs/cicd-pipeline/output.log +0 -2862
  1331. package/.dynamo/logs/cicd-pipeline/status.json +0 -74
  1332. package/__documentations/2026-04-28-logs-module.md +0 -49
  1333. package/__documentations/2026-05-17-oai-compatible-providers.md +0 -229
  1334. package/__documentations/2026-05-17-static-client-serving-howto.md +0 -144
  1335. package/__documentations/2026-06-01-fr041-cors-middleware.md +0 -96
  1336. package/__documentations/2026-06-01-fr047-p2p3-function-calling.md +0 -81
  1337. package/__documentations/2026-06-15-fr193-memory-guard.md +0 -73
  1338. package/__documentations/2026-08-08-fr292-app-version-header.md +0 -38
  1339. package/__documentations/2026-08-14-field-encryption-mongoose-document-spread.md +0 -124
  1340. package/__documentations/nts-integration-tests-2026-03-17.md +0 -26
  1341. package/__documentations/plans/BEDROCK-HYPERPLAN.md +0 -95
@@ -0,0 +1,2044 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for _modules/oauth2/_services/oauth2.control-service.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">_modules/oauth2/_services</a> oauth2.control-service.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/654</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/654</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a>
587
+ <a name='L522'></a><a href='#L522'>522</a>
588
+ <a name='L523'></a><a href='#L523'>523</a>
589
+ <a name='L524'></a><a href='#L524'>524</a>
590
+ <a name='L525'></a><a href='#L525'>525</a>
591
+ <a name='L526'></a><a href='#L526'>526</a>
592
+ <a name='L527'></a><a href='#L527'>527</a>
593
+ <a name='L528'></a><a href='#L528'>528</a>
594
+ <a name='L529'></a><a href='#L529'>529</a>
595
+ <a name='L530'></a><a href='#L530'>530</a>
596
+ <a name='L531'></a><a href='#L531'>531</a>
597
+ <a name='L532'></a><a href='#L532'>532</a>
598
+ <a name='L533'></a><a href='#L533'>533</a>
599
+ <a name='L534'></a><a href='#L534'>534</a>
600
+ <a name='L535'></a><a href='#L535'>535</a>
601
+ <a name='L536'></a><a href='#L536'>536</a>
602
+ <a name='L537'></a><a href='#L537'>537</a>
603
+ <a name='L538'></a><a href='#L538'>538</a>
604
+ <a name='L539'></a><a href='#L539'>539</a>
605
+ <a name='L540'></a><a href='#L540'>540</a>
606
+ <a name='L541'></a><a href='#L541'>541</a>
607
+ <a name='L542'></a><a href='#L542'>542</a>
608
+ <a name='L543'></a><a href='#L543'>543</a>
609
+ <a name='L544'></a><a href='#L544'>544</a>
610
+ <a name='L545'></a><a href='#L545'>545</a>
611
+ <a name='L546'></a><a href='#L546'>546</a>
612
+ <a name='L547'></a><a href='#L547'>547</a>
613
+ <a name='L548'></a><a href='#L548'>548</a>
614
+ <a name='L549'></a><a href='#L549'>549</a>
615
+ <a name='L550'></a><a href='#L550'>550</a>
616
+ <a name='L551'></a><a href='#L551'>551</a>
617
+ <a name='L552'></a><a href='#L552'>552</a>
618
+ <a name='L553'></a><a href='#L553'>553</a>
619
+ <a name='L554'></a><a href='#L554'>554</a>
620
+ <a name='L555'></a><a href='#L555'>555</a>
621
+ <a name='L556'></a><a href='#L556'>556</a>
622
+ <a name='L557'></a><a href='#L557'>557</a>
623
+ <a name='L558'></a><a href='#L558'>558</a>
624
+ <a name='L559'></a><a href='#L559'>559</a>
625
+ <a name='L560'></a><a href='#L560'>560</a>
626
+ <a name='L561'></a><a href='#L561'>561</a>
627
+ <a name='L562'></a><a href='#L562'>562</a>
628
+ <a name='L563'></a><a href='#L563'>563</a>
629
+ <a name='L564'></a><a href='#L564'>564</a>
630
+ <a name='L565'></a><a href='#L565'>565</a>
631
+ <a name='L566'></a><a href='#L566'>566</a>
632
+ <a name='L567'></a><a href='#L567'>567</a>
633
+ <a name='L568'></a><a href='#L568'>568</a>
634
+ <a name='L569'></a><a href='#L569'>569</a>
635
+ <a name='L570'></a><a href='#L570'>570</a>
636
+ <a name='L571'></a><a href='#L571'>571</a>
637
+ <a name='L572'></a><a href='#L572'>572</a>
638
+ <a name='L573'></a><a href='#L573'>573</a>
639
+ <a name='L574'></a><a href='#L574'>574</a>
640
+ <a name='L575'></a><a href='#L575'>575</a>
641
+ <a name='L576'></a><a href='#L576'>576</a>
642
+ <a name='L577'></a><a href='#L577'>577</a>
643
+ <a name='L578'></a><a href='#L578'>578</a>
644
+ <a name='L579'></a><a href='#L579'>579</a>
645
+ <a name='L580'></a><a href='#L580'>580</a>
646
+ <a name='L581'></a><a href='#L581'>581</a>
647
+ <a name='L582'></a><a href='#L582'>582</a>
648
+ <a name='L583'></a><a href='#L583'>583</a>
649
+ <a name='L584'></a><a href='#L584'>584</a>
650
+ <a name='L585'></a><a href='#L585'>585</a>
651
+ <a name='L586'></a><a href='#L586'>586</a>
652
+ <a name='L587'></a><a href='#L587'>587</a>
653
+ <a name='L588'></a><a href='#L588'>588</a>
654
+ <a name='L589'></a><a href='#L589'>589</a>
655
+ <a name='L590'></a><a href='#L590'>590</a>
656
+ <a name='L591'></a><a href='#L591'>591</a>
657
+ <a name='L592'></a><a href='#L592'>592</a>
658
+ <a name='L593'></a><a href='#L593'>593</a>
659
+ <a name='L594'></a><a href='#L594'>594</a>
660
+ <a name='L595'></a><a href='#L595'>595</a>
661
+ <a name='L596'></a><a href='#L596'>596</a>
662
+ <a name='L597'></a><a href='#L597'>597</a>
663
+ <a name='L598'></a><a href='#L598'>598</a>
664
+ <a name='L599'></a><a href='#L599'>599</a>
665
+ <a name='L600'></a><a href='#L600'>600</a>
666
+ <a name='L601'></a><a href='#L601'>601</a>
667
+ <a name='L602'></a><a href='#L602'>602</a>
668
+ <a name='L603'></a><a href='#L603'>603</a>
669
+ <a name='L604'></a><a href='#L604'>604</a>
670
+ <a name='L605'></a><a href='#L605'>605</a>
671
+ <a name='L606'></a><a href='#L606'>606</a>
672
+ <a name='L607'></a><a href='#L607'>607</a>
673
+ <a name='L608'></a><a href='#L608'>608</a>
674
+ <a name='L609'></a><a href='#L609'>609</a>
675
+ <a name='L610'></a><a href='#L610'>610</a>
676
+ <a name='L611'></a><a href='#L611'>611</a>
677
+ <a name='L612'></a><a href='#L612'>612</a>
678
+ <a name='L613'></a><a href='#L613'>613</a>
679
+ <a name='L614'></a><a href='#L614'>614</a>
680
+ <a name='L615'></a><a href='#L615'>615</a>
681
+ <a name='L616'></a><a href='#L616'>616</a>
682
+ <a name='L617'></a><a href='#L617'>617</a>
683
+ <a name='L618'></a><a href='#L618'>618</a>
684
+ <a name='L619'></a><a href='#L619'>619</a>
685
+ <a name='L620'></a><a href='#L620'>620</a>
686
+ <a name='L621'></a><a href='#L621'>621</a>
687
+ <a name='L622'></a><a href='#L622'>622</a>
688
+ <a name='L623'></a><a href='#L623'>623</a>
689
+ <a name='L624'></a><a href='#L624'>624</a>
690
+ <a name='L625'></a><a href='#L625'>625</a>
691
+ <a name='L626'></a><a href='#L626'>626</a>
692
+ <a name='L627'></a><a href='#L627'>627</a>
693
+ <a name='L628'></a><a href='#L628'>628</a>
694
+ <a name='L629'></a><a href='#L629'>629</a>
695
+ <a name='L630'></a><a href='#L630'>630</a>
696
+ <a name='L631'></a><a href='#L631'>631</a>
697
+ <a name='L632'></a><a href='#L632'>632</a>
698
+ <a name='L633'></a><a href='#L633'>633</a>
699
+ <a name='L634'></a><a href='#L634'>634</a>
700
+ <a name='L635'></a><a href='#L635'>635</a>
701
+ <a name='L636'></a><a href='#L636'>636</a>
702
+ <a name='L637'></a><a href='#L637'>637</a>
703
+ <a name='L638'></a><a href='#L638'>638</a>
704
+ <a name='L639'></a><a href='#L639'>639</a>
705
+ <a name='L640'></a><a href='#L640'>640</a>
706
+ <a name='L641'></a><a href='#L641'>641</a>
707
+ <a name='L642'></a><a href='#L642'>642</a>
708
+ <a name='L643'></a><a href='#L643'>643</a>
709
+ <a name='L644'></a><a href='#L644'>644</a>
710
+ <a name='L645'></a><a href='#L645'>645</a>
711
+ <a name='L646'></a><a href='#L646'>646</a>
712
+ <a name='L647'></a><a href='#L647'>647</a>
713
+ <a name='L648'></a><a href='#L648'>648</a>
714
+ <a name='L649'></a><a href='#L649'>649</a>
715
+ <a name='L650'></a><a href='#L650'>650</a>
716
+ <a name='L651'></a><a href='#L651'>651</a>
717
+ <a name='L652'></a><a href='#L652'>652</a>
718
+ <a name='L653'></a><a href='#L653'>653</a>
719
+ <a name='L654'></a><a href='#L654'>654</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
720
+ <span class="cline-any cline-no">&nbsp;</span>
721
+ <span class="cline-any cline-no">&nbsp;</span>
722
+ <span class="cline-any cline-no">&nbsp;</span>
723
+ <span class="cline-any cline-no">&nbsp;</span>
724
+ <span class="cline-any cline-no">&nbsp;</span>
725
+ <span class="cline-any cline-no">&nbsp;</span>
726
+ <span class="cline-any cline-no">&nbsp;</span>
727
+ <span class="cline-any cline-no">&nbsp;</span>
728
+ <span class="cline-any cline-no">&nbsp;</span>
729
+ <span class="cline-any cline-no">&nbsp;</span>
730
+ <span class="cline-any cline-no">&nbsp;</span>
731
+ <span class="cline-any cline-no">&nbsp;</span>
732
+ <span class="cline-any cline-no">&nbsp;</span>
733
+ <span class="cline-any cline-no">&nbsp;</span>
734
+ <span class="cline-any cline-no">&nbsp;</span>
735
+ <span class="cline-any cline-no">&nbsp;</span>
736
+ <span class="cline-any cline-no">&nbsp;</span>
737
+ <span class="cline-any cline-no">&nbsp;</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
739
+ <span class="cline-any cline-no">&nbsp;</span>
740
+ <span class="cline-any cline-no">&nbsp;</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-no">&nbsp;</span>
743
+ <span class="cline-any cline-no">&nbsp;</span>
744
+ <span class="cline-any cline-no">&nbsp;</span>
745
+ <span class="cline-any cline-no">&nbsp;</span>
746
+ <span class="cline-any cline-no">&nbsp;</span>
747
+ <span class="cline-any cline-no">&nbsp;</span>
748
+ <span class="cline-any cline-no">&nbsp;</span>
749
+ <span class="cline-any cline-no">&nbsp;</span>
750
+ <span class="cline-any cline-no">&nbsp;</span>
751
+ <span class="cline-any cline-no">&nbsp;</span>
752
+ <span class="cline-any cline-no">&nbsp;</span>
753
+ <span class="cline-any cline-no">&nbsp;</span>
754
+ <span class="cline-any cline-no">&nbsp;</span>
755
+ <span class="cline-any cline-no">&nbsp;</span>
756
+ <span class="cline-any cline-no">&nbsp;</span>
757
+ <span class="cline-any cline-no">&nbsp;</span>
758
+ <span class="cline-any cline-no">&nbsp;</span>
759
+ <span class="cline-any cline-no">&nbsp;</span>
760
+ <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-no">&nbsp;</span>
762
+ <span class="cline-any cline-no">&nbsp;</span>
763
+ <span class="cline-any cline-no">&nbsp;</span>
764
+ <span class="cline-any cline-no">&nbsp;</span>
765
+ <span class="cline-any cline-no">&nbsp;</span>
766
+ <span class="cline-any cline-no">&nbsp;</span>
767
+ <span class="cline-any cline-no">&nbsp;</span>
768
+ <span class="cline-any cline-no">&nbsp;</span>
769
+ <span class="cline-any cline-no">&nbsp;</span>
770
+ <span class="cline-any cline-no">&nbsp;</span>
771
+ <span class="cline-any cline-no">&nbsp;</span>
772
+ <span class="cline-any cline-no">&nbsp;</span>
773
+ <span class="cline-any cline-no">&nbsp;</span>
774
+ <span class="cline-any cline-no">&nbsp;</span>
775
+ <span class="cline-any cline-no">&nbsp;</span>
776
+ <span class="cline-any cline-no">&nbsp;</span>
777
+ <span class="cline-any cline-no">&nbsp;</span>
778
+ <span class="cline-any cline-no">&nbsp;</span>
779
+ <span class="cline-any cline-no">&nbsp;</span>
780
+ <span class="cline-any cline-no">&nbsp;</span>
781
+ <span class="cline-any cline-no">&nbsp;</span>
782
+ <span class="cline-any cline-no">&nbsp;</span>
783
+ <span class="cline-any cline-no">&nbsp;</span>
784
+ <span class="cline-any cline-no">&nbsp;</span>
785
+ <span class="cline-any cline-no">&nbsp;</span>
786
+ <span class="cline-any cline-no">&nbsp;</span>
787
+ <span class="cline-any cline-no">&nbsp;</span>
788
+ <span class="cline-any cline-no">&nbsp;</span>
789
+ <span class="cline-any cline-no">&nbsp;</span>
790
+ <span class="cline-any cline-no">&nbsp;</span>
791
+ <span class="cline-any cline-no">&nbsp;</span>
792
+ <span class="cline-any cline-no">&nbsp;</span>
793
+ <span class="cline-any cline-no">&nbsp;</span>
794
+ <span class="cline-any cline-no">&nbsp;</span>
795
+ <span class="cline-any cline-no">&nbsp;</span>
796
+ <span class="cline-any cline-no">&nbsp;</span>
797
+ <span class="cline-any cline-no">&nbsp;</span>
798
+ <span class="cline-any cline-no">&nbsp;</span>
799
+ <span class="cline-any cline-no">&nbsp;</span>
800
+ <span class="cline-any cline-no">&nbsp;</span>
801
+ <span class="cline-any cline-no">&nbsp;</span>
802
+ <span class="cline-any cline-no">&nbsp;</span>
803
+ <span class="cline-any cline-no">&nbsp;</span>
804
+ <span class="cline-any cline-no">&nbsp;</span>
805
+ <span class="cline-any cline-no">&nbsp;</span>
806
+ <span class="cline-any cline-no">&nbsp;</span>
807
+ <span class="cline-any cline-no">&nbsp;</span>
808
+ <span class="cline-any cline-no">&nbsp;</span>
809
+ <span class="cline-any cline-no">&nbsp;</span>
810
+ <span class="cline-any cline-no">&nbsp;</span>
811
+ <span class="cline-any cline-no">&nbsp;</span>
812
+ <span class="cline-any cline-no">&nbsp;</span>
813
+ <span class="cline-any cline-no">&nbsp;</span>
814
+ <span class="cline-any cline-no">&nbsp;</span>
815
+ <span class="cline-any cline-no">&nbsp;</span>
816
+ <span class="cline-any cline-no">&nbsp;</span>
817
+ <span class="cline-any cline-no">&nbsp;</span>
818
+ <span class="cline-any cline-no">&nbsp;</span>
819
+ <span class="cline-any cline-no">&nbsp;</span>
820
+ <span class="cline-any cline-no">&nbsp;</span>
821
+ <span class="cline-any cline-no">&nbsp;</span>
822
+ <span class="cline-any cline-no">&nbsp;</span>
823
+ <span class="cline-any cline-no">&nbsp;</span>
824
+ <span class="cline-any cline-no">&nbsp;</span>
825
+ <span class="cline-any cline-no">&nbsp;</span>
826
+ <span class="cline-any cline-no">&nbsp;</span>
827
+ <span class="cline-any cline-no">&nbsp;</span>
828
+ <span class="cline-any cline-no">&nbsp;</span>
829
+ <span class="cline-any cline-no">&nbsp;</span>
830
+ <span class="cline-any cline-no">&nbsp;</span>
831
+ <span class="cline-any cline-no">&nbsp;</span>
832
+ <span class="cline-any cline-no">&nbsp;</span>
833
+ <span class="cline-any cline-no">&nbsp;</span>
834
+ <span class="cline-any cline-no">&nbsp;</span>
835
+ <span class="cline-any cline-no">&nbsp;</span>
836
+ <span class="cline-any cline-no">&nbsp;</span>
837
+ <span class="cline-any cline-no">&nbsp;</span>
838
+ <span class="cline-any cline-no">&nbsp;</span>
839
+ <span class="cline-any cline-no">&nbsp;</span>
840
+ <span class="cline-any cline-no">&nbsp;</span>
841
+ <span class="cline-any cline-no">&nbsp;</span>
842
+ <span class="cline-any cline-no">&nbsp;</span>
843
+ <span class="cline-any cline-no">&nbsp;</span>
844
+ <span class="cline-any cline-no">&nbsp;</span>
845
+ <span class="cline-any cline-no">&nbsp;</span>
846
+ <span class="cline-any cline-no">&nbsp;</span>
847
+ <span class="cline-any cline-no">&nbsp;</span>
848
+ <span class="cline-any cline-no">&nbsp;</span>
849
+ <span class="cline-any cline-no">&nbsp;</span>
850
+ <span class="cline-any cline-no">&nbsp;</span>
851
+ <span class="cline-any cline-no">&nbsp;</span>
852
+ <span class="cline-any cline-no">&nbsp;</span>
853
+ <span class="cline-any cline-no">&nbsp;</span>
854
+ <span class="cline-any cline-no">&nbsp;</span>
855
+ <span class="cline-any cline-no">&nbsp;</span>
856
+ <span class="cline-any cline-no">&nbsp;</span>
857
+ <span class="cline-any cline-no">&nbsp;</span>
858
+ <span class="cline-any cline-no">&nbsp;</span>
859
+ <span class="cline-any cline-no">&nbsp;</span>
860
+ <span class="cline-any cline-no">&nbsp;</span>
861
+ <span class="cline-any cline-no">&nbsp;</span>
862
+ <span class="cline-any cline-no">&nbsp;</span>
863
+ <span class="cline-any cline-no">&nbsp;</span>
864
+ <span class="cline-any cline-no">&nbsp;</span>
865
+ <span class="cline-any cline-no">&nbsp;</span>
866
+ <span class="cline-any cline-no">&nbsp;</span>
867
+ <span class="cline-any cline-no">&nbsp;</span>
868
+ <span class="cline-any cline-no">&nbsp;</span>
869
+ <span class="cline-any cline-no">&nbsp;</span>
870
+ <span class="cline-any cline-no">&nbsp;</span>
871
+ <span class="cline-any cline-no">&nbsp;</span>
872
+ <span class="cline-any cline-no">&nbsp;</span>
873
+ <span class="cline-any cline-no">&nbsp;</span>
874
+ <span class="cline-any cline-no">&nbsp;</span>
875
+ <span class="cline-any cline-no">&nbsp;</span>
876
+ <span class="cline-any cline-no">&nbsp;</span>
877
+ <span class="cline-any cline-no">&nbsp;</span>
878
+ <span class="cline-any cline-no">&nbsp;</span>
879
+ <span class="cline-any cline-no">&nbsp;</span>
880
+ <span class="cline-any cline-no">&nbsp;</span>
881
+ <span class="cline-any cline-no">&nbsp;</span>
882
+ <span class="cline-any cline-no">&nbsp;</span>
883
+ <span class="cline-any cline-no">&nbsp;</span>
884
+ <span class="cline-any cline-no">&nbsp;</span>
885
+ <span class="cline-any cline-no">&nbsp;</span>
886
+ <span class="cline-any cline-no">&nbsp;</span>
887
+ <span class="cline-any cline-no">&nbsp;</span>
888
+ <span class="cline-any cline-no">&nbsp;</span>
889
+ <span class="cline-any cline-no">&nbsp;</span>
890
+ <span class="cline-any cline-no">&nbsp;</span>
891
+ <span class="cline-any cline-no">&nbsp;</span>
892
+ <span class="cline-any cline-no">&nbsp;</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
894
+ <span class="cline-any cline-no">&nbsp;</span>
895
+ <span class="cline-any cline-no">&nbsp;</span>
896
+ <span class="cline-any cline-no">&nbsp;</span>
897
+ <span class="cline-any cline-no">&nbsp;</span>
898
+ <span class="cline-any cline-no">&nbsp;</span>
899
+ <span class="cline-any cline-no">&nbsp;</span>
900
+ <span class="cline-any cline-no">&nbsp;</span>
901
+ <span class="cline-any cline-no">&nbsp;</span>
902
+ <span class="cline-any cline-no">&nbsp;</span>
903
+ <span class="cline-any cline-no">&nbsp;</span>
904
+ <span class="cline-any cline-no">&nbsp;</span>
905
+ <span class="cline-any cline-no">&nbsp;</span>
906
+ <span class="cline-any cline-no">&nbsp;</span>
907
+ <span class="cline-any cline-no">&nbsp;</span>
908
+ <span class="cline-any cline-no">&nbsp;</span>
909
+ <span class="cline-any cline-no">&nbsp;</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
911
+ <span class="cline-any cline-no">&nbsp;</span>
912
+ <span class="cline-any cline-no">&nbsp;</span>
913
+ <span class="cline-any cline-no">&nbsp;</span>
914
+ <span class="cline-any cline-no">&nbsp;</span>
915
+ <span class="cline-any cline-no">&nbsp;</span>
916
+ <span class="cline-any cline-no">&nbsp;</span>
917
+ <span class="cline-any cline-no">&nbsp;</span>
918
+ <span class="cline-any cline-no">&nbsp;</span>
919
+ <span class="cline-any cline-no">&nbsp;</span>
920
+ <span class="cline-any cline-no">&nbsp;</span>
921
+ <span class="cline-any cline-no">&nbsp;</span>
922
+ <span class="cline-any cline-no">&nbsp;</span>
923
+ <span class="cline-any cline-no">&nbsp;</span>
924
+ <span class="cline-any cline-no">&nbsp;</span>
925
+ <span class="cline-any cline-no">&nbsp;</span>
926
+ <span class="cline-any cline-no">&nbsp;</span>
927
+ <span class="cline-any cline-no">&nbsp;</span>
928
+ <span class="cline-any cline-no">&nbsp;</span>
929
+ <span class="cline-any cline-no">&nbsp;</span>
930
+ <span class="cline-any cline-no">&nbsp;</span>
931
+ <span class="cline-any cline-no">&nbsp;</span>
932
+ <span class="cline-any cline-no">&nbsp;</span>
933
+ <span class="cline-any cline-no">&nbsp;</span>
934
+ <span class="cline-any cline-no">&nbsp;</span>
935
+ <span class="cline-any cline-no">&nbsp;</span>
936
+ <span class="cline-any cline-no">&nbsp;</span>
937
+ <span class="cline-any cline-no">&nbsp;</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
939
+ <span class="cline-any cline-no">&nbsp;</span>
940
+ <span class="cline-any cline-no">&nbsp;</span>
941
+ <span class="cline-any cline-no">&nbsp;</span>
942
+ <span class="cline-any cline-no">&nbsp;</span>
943
+ <span class="cline-any cline-no">&nbsp;</span>
944
+ <span class="cline-any cline-no">&nbsp;</span>
945
+ <span class="cline-any cline-no">&nbsp;</span>
946
+ <span class="cline-any cline-no">&nbsp;</span>
947
+ <span class="cline-any cline-no">&nbsp;</span>
948
+ <span class="cline-any cline-no">&nbsp;</span>
949
+ <span class="cline-any cline-no">&nbsp;</span>
950
+ <span class="cline-any cline-no">&nbsp;</span>
951
+ <span class="cline-any cline-no">&nbsp;</span>
952
+ <span class="cline-any cline-no">&nbsp;</span>
953
+ <span class="cline-any cline-no">&nbsp;</span>
954
+ <span class="cline-any cline-no">&nbsp;</span>
955
+ <span class="cline-any cline-no">&nbsp;</span>
956
+ <span class="cline-any cline-no">&nbsp;</span>
957
+ <span class="cline-any cline-no">&nbsp;</span>
958
+ <span class="cline-any cline-no">&nbsp;</span>
959
+ <span class="cline-any cline-no">&nbsp;</span>
960
+ <span class="cline-any cline-no">&nbsp;</span>
961
+ <span class="cline-any cline-no">&nbsp;</span>
962
+ <span class="cline-any cline-no">&nbsp;</span>
963
+ <span class="cline-any cline-no">&nbsp;</span>
964
+ <span class="cline-any cline-no">&nbsp;</span>
965
+ <span class="cline-any cline-no">&nbsp;</span>
966
+ <span class="cline-any cline-no">&nbsp;</span>
967
+ <span class="cline-any cline-no">&nbsp;</span>
968
+ <span class="cline-any cline-no">&nbsp;</span>
969
+ <span class="cline-any cline-no">&nbsp;</span>
970
+ <span class="cline-any cline-no">&nbsp;</span>
971
+ <span class="cline-any cline-no">&nbsp;</span>
972
+ <span class="cline-any cline-no">&nbsp;</span>
973
+ <span class="cline-any cline-no">&nbsp;</span>
974
+ <span class="cline-any cline-no">&nbsp;</span>
975
+ <span class="cline-any cline-no">&nbsp;</span>
976
+ <span class="cline-any cline-no">&nbsp;</span>
977
+ <span class="cline-any cline-no">&nbsp;</span>
978
+ <span class="cline-any cline-no">&nbsp;</span>
979
+ <span class="cline-any cline-no">&nbsp;</span>
980
+ <span class="cline-any cline-no">&nbsp;</span>
981
+ <span class="cline-any cline-no">&nbsp;</span>
982
+ <span class="cline-any cline-no">&nbsp;</span>
983
+ <span class="cline-any cline-no">&nbsp;</span>
984
+ <span class="cline-any cline-no">&nbsp;</span>
985
+ <span class="cline-any cline-no">&nbsp;</span>
986
+ <span class="cline-any cline-no">&nbsp;</span>
987
+ <span class="cline-any cline-no">&nbsp;</span>
988
+ <span class="cline-any cline-no">&nbsp;</span>
989
+ <span class="cline-any cline-no">&nbsp;</span>
990
+ <span class="cline-any cline-no">&nbsp;</span>
991
+ <span class="cline-any cline-no">&nbsp;</span>
992
+ <span class="cline-any cline-no">&nbsp;</span>
993
+ <span class="cline-any cline-no">&nbsp;</span>
994
+ <span class="cline-any cline-no">&nbsp;</span>
995
+ <span class="cline-any cline-no">&nbsp;</span>
996
+ <span class="cline-any cline-no">&nbsp;</span>
997
+ <span class="cline-any cline-no">&nbsp;</span>
998
+ <span class="cline-any cline-no">&nbsp;</span>
999
+ <span class="cline-any cline-no">&nbsp;</span>
1000
+ <span class="cline-any cline-no">&nbsp;</span>
1001
+ <span class="cline-any cline-no">&nbsp;</span>
1002
+ <span class="cline-any cline-no">&nbsp;</span>
1003
+ <span class="cline-any cline-no">&nbsp;</span>
1004
+ <span class="cline-any cline-no">&nbsp;</span>
1005
+ <span class="cline-any cline-no">&nbsp;</span>
1006
+ <span class="cline-any cline-no">&nbsp;</span>
1007
+ <span class="cline-any cline-no">&nbsp;</span>
1008
+ <span class="cline-any cline-no">&nbsp;</span>
1009
+ <span class="cline-any cline-no">&nbsp;</span>
1010
+ <span class="cline-any cline-no">&nbsp;</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1012
+ <span class="cline-any cline-no">&nbsp;</span>
1013
+ <span class="cline-any cline-no">&nbsp;</span>
1014
+ <span class="cline-any cline-no">&nbsp;</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
1016
+ <span class="cline-any cline-no">&nbsp;</span>
1017
+ <span class="cline-any cline-no">&nbsp;</span>
1018
+ <span class="cline-any cline-no">&nbsp;</span>
1019
+ <span class="cline-any cline-no">&nbsp;</span>
1020
+ <span class="cline-any cline-no">&nbsp;</span>
1021
+ <span class="cline-any cline-no">&nbsp;</span>
1022
+ <span class="cline-any cline-no">&nbsp;</span>
1023
+ <span class="cline-any cline-no">&nbsp;</span>
1024
+ <span class="cline-any cline-no">&nbsp;</span>
1025
+ <span class="cline-any cline-no">&nbsp;</span>
1026
+ <span class="cline-any cline-no">&nbsp;</span>
1027
+ <span class="cline-any cline-no">&nbsp;</span>
1028
+ <span class="cline-any cline-no">&nbsp;</span>
1029
+ <span class="cline-any cline-no">&nbsp;</span>
1030
+ <span class="cline-any cline-no">&nbsp;</span>
1031
+ <span class="cline-any cline-no">&nbsp;</span>
1032
+ <span class="cline-any cline-no">&nbsp;</span>
1033
+ <span class="cline-any cline-no">&nbsp;</span>
1034
+ <span class="cline-any cline-no">&nbsp;</span>
1035
+ <span class="cline-any cline-no">&nbsp;</span>
1036
+ <span class="cline-any cline-no">&nbsp;</span>
1037
+ <span class="cline-any cline-no">&nbsp;</span>
1038
+ <span class="cline-any cline-no">&nbsp;</span>
1039
+ <span class="cline-any cline-no">&nbsp;</span>
1040
+ <span class="cline-any cline-no">&nbsp;</span>
1041
+ <span class="cline-any cline-no">&nbsp;</span>
1042
+ <span class="cline-any cline-no">&nbsp;</span>
1043
+ <span class="cline-any cline-no">&nbsp;</span>
1044
+ <span class="cline-any cline-no">&nbsp;</span>
1045
+ <span class="cline-any cline-no">&nbsp;</span>
1046
+ <span class="cline-any cline-no">&nbsp;</span>
1047
+ <span class="cline-any cline-no">&nbsp;</span>
1048
+ <span class="cline-any cline-no">&nbsp;</span>
1049
+ <span class="cline-any cline-no">&nbsp;</span>
1050
+ <span class="cline-any cline-no">&nbsp;</span>
1051
+ <span class="cline-any cline-no">&nbsp;</span>
1052
+ <span class="cline-any cline-no">&nbsp;</span>
1053
+ <span class="cline-any cline-no">&nbsp;</span>
1054
+ <span class="cline-any cline-no">&nbsp;</span>
1055
+ <span class="cline-any cline-no">&nbsp;</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
1057
+ <span class="cline-any cline-no">&nbsp;</span>
1058
+ <span class="cline-any cline-no">&nbsp;</span>
1059
+ <span class="cline-any cline-no">&nbsp;</span>
1060
+ <span class="cline-any cline-no">&nbsp;</span>
1061
+ <span class="cline-any cline-no">&nbsp;</span>
1062
+ <span class="cline-any cline-no">&nbsp;</span>
1063
+ <span class="cline-any cline-no">&nbsp;</span>
1064
+ <span class="cline-any cline-no">&nbsp;</span>
1065
+ <span class="cline-any cline-no">&nbsp;</span>
1066
+ <span class="cline-any cline-no">&nbsp;</span>
1067
+ <span class="cline-any cline-no">&nbsp;</span>
1068
+ <span class="cline-any cline-no">&nbsp;</span>
1069
+ <span class="cline-any cline-no">&nbsp;</span>
1070
+ <span class="cline-any cline-no">&nbsp;</span>
1071
+ <span class="cline-any cline-no">&nbsp;</span>
1072
+ <span class="cline-any cline-no">&nbsp;</span>
1073
+ <span class="cline-any cline-no">&nbsp;</span>
1074
+ <span class="cline-any cline-no">&nbsp;</span>
1075
+ <span class="cline-any cline-no">&nbsp;</span>
1076
+ <span class="cline-any cline-no">&nbsp;</span>
1077
+ <span class="cline-any cline-no">&nbsp;</span>
1078
+ <span class="cline-any cline-no">&nbsp;</span>
1079
+ <span class="cline-any cline-no">&nbsp;</span>
1080
+ <span class="cline-any cline-no">&nbsp;</span>
1081
+ <span class="cline-any cline-no">&nbsp;</span>
1082
+ <span class="cline-any cline-no">&nbsp;</span>
1083
+ <span class="cline-any cline-no">&nbsp;</span>
1084
+ <span class="cline-any cline-no">&nbsp;</span>
1085
+ <span class="cline-any cline-no">&nbsp;</span>
1086
+ <span class="cline-any cline-no">&nbsp;</span>
1087
+ <span class="cline-any cline-no">&nbsp;</span>
1088
+ <span class="cline-any cline-no">&nbsp;</span>
1089
+ <span class="cline-any cline-no">&nbsp;</span>
1090
+ <span class="cline-any cline-no">&nbsp;</span>
1091
+ <span class="cline-any cline-no">&nbsp;</span>
1092
+ <span class="cline-any cline-no">&nbsp;</span>
1093
+ <span class="cline-any cline-no">&nbsp;</span>
1094
+ <span class="cline-any cline-no">&nbsp;</span>
1095
+ <span class="cline-any cline-no">&nbsp;</span>
1096
+ <span class="cline-any cline-no">&nbsp;</span>
1097
+ <span class="cline-any cline-no">&nbsp;</span>
1098
+ <span class="cline-any cline-no">&nbsp;</span>
1099
+ <span class="cline-any cline-no">&nbsp;</span>
1100
+ <span class="cline-any cline-no">&nbsp;</span>
1101
+ <span class="cline-any cline-no">&nbsp;</span>
1102
+ <span class="cline-any cline-no">&nbsp;</span>
1103
+ <span class="cline-any cline-no">&nbsp;</span>
1104
+ <span class="cline-any cline-no">&nbsp;</span>
1105
+ <span class="cline-any cline-no">&nbsp;</span>
1106
+ <span class="cline-any cline-no">&nbsp;</span>
1107
+ <span class="cline-any cline-no">&nbsp;</span>
1108
+ <span class="cline-any cline-no">&nbsp;</span>
1109
+ <span class="cline-any cline-no">&nbsp;</span>
1110
+ <span class="cline-any cline-no">&nbsp;</span>
1111
+ <span class="cline-any cline-no">&nbsp;</span>
1112
+ <span class="cline-any cline-no">&nbsp;</span>
1113
+ <span class="cline-any cline-no">&nbsp;</span>
1114
+ <span class="cline-any cline-no">&nbsp;</span>
1115
+ <span class="cline-any cline-no">&nbsp;</span>
1116
+ <span class="cline-any cline-no">&nbsp;</span>
1117
+ <span class="cline-any cline-no">&nbsp;</span>
1118
+ <span class="cline-any cline-no">&nbsp;</span>
1119
+ <span class="cline-any cline-no">&nbsp;</span>
1120
+ <span class="cline-any cline-no">&nbsp;</span>
1121
+ <span class="cline-any cline-no">&nbsp;</span>
1122
+ <span class="cline-any cline-no">&nbsp;</span>
1123
+ <span class="cline-any cline-no">&nbsp;</span>
1124
+ <span class="cline-any cline-no">&nbsp;</span>
1125
+ <span class="cline-any cline-no">&nbsp;</span>
1126
+ <span class="cline-any cline-no">&nbsp;</span>
1127
+ <span class="cline-any cline-no">&nbsp;</span>
1128
+ <span class="cline-any cline-no">&nbsp;</span>
1129
+ <span class="cline-any cline-no">&nbsp;</span>
1130
+ <span class="cline-any cline-no">&nbsp;</span>
1131
+ <span class="cline-any cline-no">&nbsp;</span>
1132
+ <span class="cline-any cline-no">&nbsp;</span>
1133
+ <span class="cline-any cline-no">&nbsp;</span>
1134
+ <span class="cline-any cline-no">&nbsp;</span>
1135
+ <span class="cline-any cline-no">&nbsp;</span>
1136
+ <span class="cline-any cline-no">&nbsp;</span>
1137
+ <span class="cline-any cline-no">&nbsp;</span>
1138
+ <span class="cline-any cline-no">&nbsp;</span>
1139
+ <span class="cline-any cline-no">&nbsp;</span>
1140
+ <span class="cline-any cline-no">&nbsp;</span>
1141
+ <span class="cline-any cline-no">&nbsp;</span>
1142
+ <span class="cline-any cline-no">&nbsp;</span>
1143
+ <span class="cline-any cline-no">&nbsp;</span>
1144
+ <span class="cline-any cline-no">&nbsp;</span>
1145
+ <span class="cline-any cline-no">&nbsp;</span>
1146
+ <span class="cline-any cline-no">&nbsp;</span>
1147
+ <span class="cline-any cline-no">&nbsp;</span>
1148
+ <span class="cline-any cline-no">&nbsp;</span>
1149
+ <span class="cline-any cline-no">&nbsp;</span>
1150
+ <span class="cline-any cline-no">&nbsp;</span>
1151
+ <span class="cline-any cline-no">&nbsp;</span>
1152
+ <span class="cline-any cline-no">&nbsp;</span>
1153
+ <span class="cline-any cline-no">&nbsp;</span>
1154
+ <span class="cline-any cline-no">&nbsp;</span>
1155
+ <span class="cline-any cline-no">&nbsp;</span>
1156
+ <span class="cline-any cline-no">&nbsp;</span>
1157
+ <span class="cline-any cline-no">&nbsp;</span>
1158
+ <span class="cline-any cline-no">&nbsp;</span>
1159
+ <span class="cline-any cline-no">&nbsp;</span>
1160
+ <span class="cline-any cline-no">&nbsp;</span>
1161
+ <span class="cline-any cline-no">&nbsp;</span>
1162
+ <span class="cline-any cline-no">&nbsp;</span>
1163
+ <span class="cline-any cline-no">&nbsp;</span>
1164
+ <span class="cline-any cline-no">&nbsp;</span>
1165
+ <span class="cline-any cline-no">&nbsp;</span>
1166
+ <span class="cline-any cline-no">&nbsp;</span>
1167
+ <span class="cline-any cline-no">&nbsp;</span>
1168
+ <span class="cline-any cline-no">&nbsp;</span>
1169
+ <span class="cline-any cline-no">&nbsp;</span>
1170
+ <span class="cline-any cline-no">&nbsp;</span>
1171
+ <span class="cline-any cline-no">&nbsp;</span>
1172
+ <span class="cline-any cline-no">&nbsp;</span>
1173
+ <span class="cline-any cline-no">&nbsp;</span>
1174
+ <span class="cline-any cline-no">&nbsp;</span>
1175
+ <span class="cline-any cline-no">&nbsp;</span>
1176
+ <span class="cline-any cline-no">&nbsp;</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-no">&nbsp;</span>
1180
+ <span class="cline-any cline-no">&nbsp;</span>
1181
+ <span class="cline-any cline-no">&nbsp;</span>
1182
+ <span class="cline-any cline-no">&nbsp;</span>
1183
+ <span class="cline-any cline-no">&nbsp;</span>
1184
+ <span class="cline-any cline-no">&nbsp;</span>
1185
+ <span class="cline-any cline-no">&nbsp;</span>
1186
+ <span class="cline-any cline-no">&nbsp;</span>
1187
+ <span class="cline-any cline-no">&nbsp;</span>
1188
+ <span class="cline-any cline-no">&nbsp;</span>
1189
+ <span class="cline-any cline-no">&nbsp;</span>
1190
+ <span class="cline-any cline-no">&nbsp;</span>
1191
+ <span class="cline-any cline-no">&nbsp;</span>
1192
+ <span class="cline-any cline-no">&nbsp;</span>
1193
+ <span class="cline-any cline-no">&nbsp;</span>
1194
+ <span class="cline-any cline-no">&nbsp;</span>
1195
+ <span class="cline-any cline-no">&nbsp;</span>
1196
+ <span class="cline-any cline-no">&nbsp;</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1198
+ <span class="cline-any cline-no">&nbsp;</span>
1199
+ <span class="cline-any cline-no">&nbsp;</span>
1200
+ <span class="cline-any cline-no">&nbsp;</span>
1201
+ <span class="cline-any cline-no">&nbsp;</span>
1202
+ <span class="cline-any cline-no">&nbsp;</span>
1203
+ <span class="cline-any cline-no">&nbsp;</span>
1204
+ <span class="cline-any cline-no">&nbsp;</span>
1205
+ <span class="cline-any cline-no">&nbsp;</span>
1206
+ <span class="cline-any cline-no">&nbsp;</span>
1207
+ <span class="cline-any cline-no">&nbsp;</span>
1208
+ <span class="cline-any cline-no">&nbsp;</span>
1209
+ <span class="cline-any cline-no">&nbsp;</span>
1210
+ <span class="cline-any cline-no">&nbsp;</span>
1211
+ <span class="cline-any cline-no">&nbsp;</span>
1212
+ <span class="cline-any cline-no">&nbsp;</span>
1213
+ <span class="cline-any cline-no">&nbsp;</span>
1214
+ <span class="cline-any cline-no">&nbsp;</span>
1215
+ <span class="cline-any cline-no">&nbsp;</span>
1216
+ <span class="cline-any cline-no">&nbsp;</span>
1217
+ <span class="cline-any cline-no">&nbsp;</span>
1218
+ <span class="cline-any cline-no">&nbsp;</span>
1219
+ <span class="cline-any cline-no">&nbsp;</span>
1220
+ <span class="cline-any cline-no">&nbsp;</span>
1221
+ <span class="cline-any cline-no">&nbsp;</span>
1222
+ <span class="cline-any cline-no">&nbsp;</span>
1223
+ <span class="cline-any cline-no">&nbsp;</span>
1224
+ <span class="cline-any cline-no">&nbsp;</span>
1225
+ <span class="cline-any cline-no">&nbsp;</span>
1226
+ <span class="cline-any cline-no">&nbsp;</span>
1227
+ <span class="cline-any cline-no">&nbsp;</span>
1228
+ <span class="cline-any cline-no">&nbsp;</span>
1229
+ <span class="cline-any cline-no">&nbsp;</span>
1230
+ <span class="cline-any cline-no">&nbsp;</span>
1231
+ <span class="cline-any cline-no">&nbsp;</span>
1232
+ <span class="cline-any cline-no">&nbsp;</span>
1233
+ <span class="cline-any cline-no">&nbsp;</span>
1234
+ <span class="cline-any cline-no">&nbsp;</span>
1235
+ <span class="cline-any cline-no">&nbsp;</span>
1236
+ <span class="cline-any cline-no">&nbsp;</span>
1237
+ <span class="cline-any cline-no">&nbsp;</span>
1238
+ <span class="cline-any cline-no">&nbsp;</span>
1239
+ <span class="cline-any cline-no">&nbsp;</span>
1240
+ <span class="cline-any cline-no">&nbsp;</span>
1241
+ <span class="cline-any cline-no">&nbsp;</span>
1242
+ <span class="cline-any cline-no">&nbsp;</span>
1243
+ <span class="cline-any cline-no">&nbsp;</span>
1244
+ <span class="cline-any cline-no">&nbsp;</span>
1245
+ <span class="cline-any cline-no">&nbsp;</span>
1246
+ <span class="cline-any cline-no">&nbsp;</span>
1247
+ <span class="cline-any cline-no">&nbsp;</span>
1248
+ <span class="cline-any cline-no">&nbsp;</span>
1249
+ <span class="cline-any cline-no">&nbsp;</span>
1250
+ <span class="cline-any cline-no">&nbsp;</span>
1251
+ <span class="cline-any cline-no">&nbsp;</span>
1252
+ <span class="cline-any cline-no">&nbsp;</span>
1253
+ <span class="cline-any cline-no">&nbsp;</span>
1254
+ <span class="cline-any cline-no">&nbsp;</span>
1255
+ <span class="cline-any cline-no">&nbsp;</span>
1256
+ <span class="cline-any cline-no">&nbsp;</span>
1257
+ <span class="cline-any cline-no">&nbsp;</span>
1258
+ <span class="cline-any cline-no">&nbsp;</span>
1259
+ <span class="cline-any cline-no">&nbsp;</span>
1260
+ <span class="cline-any cline-no">&nbsp;</span>
1261
+ <span class="cline-any cline-no">&nbsp;</span>
1262
+ <span class="cline-any cline-no">&nbsp;</span>
1263
+ <span class="cline-any cline-no">&nbsp;</span>
1264
+ <span class="cline-any cline-no">&nbsp;</span>
1265
+ <span class="cline-any cline-no">&nbsp;</span>
1266
+ <span class="cline-any cline-no">&nbsp;</span>
1267
+ <span class="cline-any cline-no">&nbsp;</span>
1268
+ <span class="cline-any cline-no">&nbsp;</span>
1269
+ <span class="cline-any cline-no">&nbsp;</span>
1270
+ <span class="cline-any cline-no">&nbsp;</span>
1271
+ <span class="cline-any cline-no">&nbsp;</span>
1272
+ <span class="cline-any cline-no">&nbsp;</span>
1273
+ <span class="cline-any cline-no">&nbsp;</span>
1274
+ <span class="cline-any cline-no">&nbsp;</span>
1275
+ <span class="cline-any cline-no">&nbsp;</span>
1276
+ <span class="cline-any cline-no">&nbsp;</span>
1277
+ <span class="cline-any cline-no">&nbsp;</span>
1278
+ <span class="cline-any cline-no">&nbsp;</span>
1279
+ <span class="cline-any cline-no">&nbsp;</span>
1280
+ <span class="cline-any cline-no">&nbsp;</span>
1281
+ <span class="cline-any cline-no">&nbsp;</span>
1282
+ <span class="cline-any cline-no">&nbsp;</span>
1283
+ <span class="cline-any cline-no">&nbsp;</span>
1284
+ <span class="cline-any cline-no">&nbsp;</span>
1285
+ <span class="cline-any cline-no">&nbsp;</span>
1286
+ <span class="cline-any cline-no">&nbsp;</span>
1287
+ <span class="cline-any cline-no">&nbsp;</span>
1288
+ <span class="cline-any cline-no">&nbsp;</span>
1289
+ <span class="cline-any cline-no">&nbsp;</span>
1290
+ <span class="cline-any cline-no">&nbsp;</span>
1291
+ <span class="cline-any cline-no">&nbsp;</span>
1292
+ <span class="cline-any cline-no">&nbsp;</span>
1293
+ <span class="cline-any cline-no">&nbsp;</span>
1294
+ <span class="cline-any cline-no">&nbsp;</span>
1295
+ <span class="cline-any cline-no">&nbsp;</span>
1296
+ <span class="cline-any cline-no">&nbsp;</span>
1297
+ <span class="cline-any cline-no">&nbsp;</span>
1298
+ <span class="cline-any cline-no">&nbsp;</span>
1299
+ <span class="cline-any cline-no">&nbsp;</span>
1300
+ <span class="cline-any cline-no">&nbsp;</span>
1301
+ <span class="cline-any cline-no">&nbsp;</span>
1302
+ <span class="cline-any cline-no">&nbsp;</span>
1303
+ <span class="cline-any cline-no">&nbsp;</span>
1304
+ <span class="cline-any cline-no">&nbsp;</span>
1305
+ <span class="cline-any cline-no">&nbsp;</span>
1306
+ <span class="cline-any cline-no">&nbsp;</span>
1307
+ <span class="cline-any cline-no">&nbsp;</span>
1308
+ <span class="cline-any cline-no">&nbsp;</span>
1309
+ <span class="cline-any cline-no">&nbsp;</span>
1310
+ <span class="cline-any cline-no">&nbsp;</span>
1311
+ <span class="cline-any cline-no">&nbsp;</span>
1312
+ <span class="cline-any cline-no">&nbsp;</span>
1313
+ <span class="cline-any cline-no">&nbsp;</span>
1314
+ <span class="cline-any cline-no">&nbsp;</span>
1315
+ <span class="cline-any cline-no">&nbsp;</span>
1316
+ <span class="cline-any cline-no">&nbsp;</span>
1317
+ <span class="cline-any cline-no">&nbsp;</span>
1318
+ <span class="cline-any cline-no">&nbsp;</span>
1319
+ <span class="cline-any cline-no">&nbsp;</span>
1320
+ <span class="cline-any cline-no">&nbsp;</span>
1321
+ <span class="cline-any cline-no">&nbsp;</span>
1322
+ <span class="cline-any cline-no">&nbsp;</span>
1323
+ <span class="cline-any cline-no">&nbsp;</span>
1324
+ <span class="cline-any cline-no">&nbsp;</span>
1325
+ <span class="cline-any cline-no">&nbsp;</span>
1326
+ <span class="cline-any cline-no">&nbsp;</span>
1327
+ <span class="cline-any cline-no">&nbsp;</span>
1328
+ <span class="cline-any cline-no">&nbsp;</span>
1329
+ <span class="cline-any cline-no">&nbsp;</span>
1330
+ <span class="cline-any cline-no">&nbsp;</span>
1331
+ <span class="cline-any cline-no">&nbsp;</span>
1332
+ <span class="cline-any cline-no">&nbsp;</span>
1333
+ <span class="cline-any cline-no">&nbsp;</span>
1334
+ <span class="cline-any cline-no">&nbsp;</span>
1335
+ <span class="cline-any cline-no">&nbsp;</span>
1336
+ <span class="cline-any cline-no">&nbsp;</span>
1337
+ <span class="cline-any cline-no">&nbsp;</span>
1338
+ <span class="cline-any cline-no">&nbsp;</span>
1339
+ <span class="cline-any cline-no">&nbsp;</span>
1340
+ <span class="cline-any cline-no">&nbsp;</span>
1341
+ <span class="cline-any cline-no">&nbsp;</span>
1342
+ <span class="cline-any cline-no">&nbsp;</span>
1343
+ <span class="cline-any cline-no">&nbsp;</span>
1344
+ <span class="cline-any cline-no">&nbsp;</span>
1345
+ <span class="cline-any cline-no">&nbsp;</span>
1346
+ <span class="cline-any cline-no">&nbsp;</span>
1347
+ <span class="cline-any cline-no">&nbsp;</span>
1348
+ <span class="cline-any cline-no">&nbsp;</span>
1349
+ <span class="cline-any cline-no">&nbsp;</span>
1350
+ <span class="cline-any cline-no">&nbsp;</span>
1351
+ <span class="cline-any cline-no">&nbsp;</span>
1352
+ <span class="cline-any cline-no">&nbsp;</span>
1353
+ <span class="cline-any cline-no">&nbsp;</span>
1354
+ <span class="cline-any cline-no">&nbsp;</span>
1355
+ <span class="cline-any cline-no">&nbsp;</span>
1356
+ <span class="cline-any cline-no">&nbsp;</span>
1357
+ <span class="cline-any cline-no">&nbsp;</span>
1358
+ <span class="cline-any cline-no">&nbsp;</span>
1359
+ <span class="cline-any cline-no">&nbsp;</span>
1360
+ <span class="cline-any cline-no">&nbsp;</span>
1361
+ <span class="cline-any cline-no">&nbsp;</span>
1362
+ <span class="cline-any cline-no">&nbsp;</span>
1363
+ <span class="cline-any cline-no">&nbsp;</span>
1364
+ <span class="cline-any cline-no">&nbsp;</span>
1365
+ <span class="cline-any cline-no">&nbsp;</span>
1366
+ <span class="cline-any cline-no">&nbsp;</span>
1367
+ <span class="cline-any cline-no">&nbsp;</span>
1368
+ <span class="cline-any cline-no">&nbsp;</span>
1369
+ <span class="cline-any cline-no">&nbsp;</span>
1370
+ <span class="cline-any cline-no">&nbsp;</span>
1371
+ <span class="cline-any cline-no">&nbsp;</span>
1372
+ <span class="cline-any cline-no">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import { Request, Response } from 'express';</span></span></span>
1373
+ <span class="cstat-no" title="statement not covered" >import { cryptoJs } from 'crypto-js';</span>
1374
+ <span class="cstat-no" title="statement not covered" >import { DyFM_Error, DyFM_Log } from '@futdevpro/fsm-dynamo';</span>
1375
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';</span>
1376
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_global_settings } from '../../../_collections/global-settings.const';</span>
1377
+ <span class="cstat-no" title="statement not covered" >import { DyNTS_OAuth2_AuthService } from './oauth2.auth-service';</span>
1378
+ <span class="cstat-no" title="statement not covered" ></span>
1379
+ <span class="cstat-no" title="statement not covered" >/**</span>
1380
+ <span class="cstat-no" title="statement not covered" > * OAuth2 Control Service implementation</span>
1381
+ <span class="cstat-no" title="statement not covered" > * </span>
1382
+ <span class="cstat-no" title="statement not covered" > * This service handles OAuth2 specific business logic and token management</span>
1383
+ <span class="cstat-no" title="statement not covered" > * </span>
1384
+ <span class="cstat-no" title="statement not covered" > * @example</span>
1385
+ <span class="cstat-no" title="statement not covered" > * const oauth2Service = DyNTS_OAuth2_ControlService.getInstance();</span>
1386
+ <span class="cstat-no" title="statement not covered" > * await oauth2Service.handleAuthorizationRequest(req, res);</span>
1387
+ <span class="cstat-no" title="statement not covered" > */</span>
1388
+ <span class="cstat-no" title="statement not covered" >export class DyNTS_OAuth2_ControlService extends DyNTS_SingletonService {</span>
1389
+ <span class="cstat-no" title="statement not covered" > static getInstance(): DyNTS_OAuth2_ControlService {</span>
1390
+ <span class="cstat-no" title="statement not covered" > return DyNTS_OAuth2_ControlService.getSingletonInstance();</span>
1391
+ <span class="cstat-no" title="statement not covered" > }</span>
1392
+ <span class="cstat-no" title="statement not covered" ></span>
1393
+ <span class="cstat-no" title="statement not covered" > readonly serviceName: string = 'OAuth2ControlService';</span>
1394
+ <span class="cstat-no" title="statement not covered" ></span>
1395
+ <span class="cstat-no" title="statement not covered" > private readonly authService: DyNTS_OAuth2_AuthService = DyNTS_OAuth2_AuthService.getInstance();</span>
1396
+ <span class="cstat-no" title="statement not covered" > private readonly authorizationCodes: Map&lt;string, { clientId: string; scope: string; expiresAt: number }&gt; = new Map();</span>
1397
+ <span class="cstat-no" title="statement not covered" > private readonly accessTokens: Map&lt;string, { clientId: string; scope: string; expiresAt: number }&gt; = new Map();</span>
1398
+ <span class="cstat-no" title="statement not covered" > private readonly refreshTokens: Map&lt;string, { clientId: string; scope: string; accessToken: string }&gt; = new Map();</span>
1399
+ <span class="cstat-no" title="statement not covered" > private readonly clients: Map&lt;string, { </span>
1400
+ <span class="cstat-no" title="statement not covered" > clientId: string; </span>
1401
+ <span class="cstat-no" title="statement not covered" > clientSecret: string; </span>
1402
+ <span class="cstat-no" title="statement not covered" > redirectUris: string[]; </span>
1403
+ <span class="cstat-no" title="statement not covered" > allowedScopes: string[]; </span>
1404
+ <span class="cstat-no" title="statement not covered" > isActive: boolean; </span>
1405
+ <span class="cstat-no" title="statement not covered" > }&gt; = new Map();</span>
1406
+ <span class="cstat-no" title="statement not covered" > private readonly users: Map&lt;string, {</span>
1407
+ <span class="cstat-no" title="statement not covered" > username: string;</span>
1408
+ <span class="cstat-no" title="statement not covered" > password: string; // In a real implementation, this would be a hashed password</span>
1409
+ <span class="cstat-no" title="statement not covered" > scopes: string[];</span>
1410
+ <span class="cstat-no" title="statement not covered" > }&gt; = new Map();</span>
1411
+ <span class="cstat-no" title="statement not covered" ></span>
1412
+ <span class="cstat-no" title="statement not covered" > /**</span>
1413
+ <span class="cstat-no" title="statement not covered" > * Handles the OAuth2 authorization request</span>
1414
+ <span class="cstat-no" title="statement not covered" > * @param req Express Request object</span>
1415
+ <span class="cstat-no" title="statement not covered" > * @param res Express Response object</span>
1416
+ <span class="cstat-no" title="statement not covered" > */</span>
1417
+ <span class="cstat-no" title="statement not covered" > async handleAuthorizationRequest(req: Request, res: Response): Promise&lt;void&gt; {</span>
1418
+ <span class="cstat-no" title="statement not covered" > try {</span>
1419
+ <span class="cstat-no" title="statement not covered" > const { response_type, client_id, redirect_uri, scope, state } = req.query;</span>
1420
+ <span class="cstat-no" title="statement not covered" ></span>
1421
+ <span class="cstat-no" title="statement not covered" > // Validate required parameters</span>
1422
+ <span class="cstat-no" title="statement not covered" > if (!response_type || !client_id || !redirect_uri) {</span>
1423
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1424
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1425
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA0`,</span>
1426
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1427
+ <span class="cstat-no" title="statement not covered" > message: 'Missing required OAuth2 parameters',</span>
1428
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid authorization request',</span>
1429
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1430
+ <span class="cstat-no" title="statement not covered" > });</span>
1431
+ <span class="cstat-no" title="statement not covered" > }</span>
1432
+ <span class="cstat-no" title="statement not covered" ></span>
1433
+ <span class="cstat-no" title="statement not covered" > // Validate client_id against registered clients</span>
1434
+ <span class="cstat-no" title="statement not covered" > if (!this.isValidClient(client_id as string)) {</span>
1435
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1436
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1437
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA2`,</span>
1438
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1439
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid client_id',</span>
1440
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid authorization request',</span>
1441
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1442
+ <span class="cstat-no" title="statement not covered" > });</span>
1443
+ <span class="cstat-no" title="statement not covered" > }</span>
1444
+ <span class="cstat-no" title="statement not covered" ></span>
1445
+ <span class="cstat-no" title="statement not covered" > // Validate redirect_uri against registered redirect URIs</span>
1446
+ <span class="cstat-no" title="statement not covered" > if (!this.isValidRedirectUri(client_id as string, redirect_uri as string)) {</span>
1447
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1448
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1449
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA3`,</span>
1450
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1451
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid redirect_uri',</span>
1452
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid authorization request',</span>
1453
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1454
+ <span class="cstat-no" title="statement not covered" > });</span>
1455
+ <span class="cstat-no" title="statement not covered" > }</span>
1456
+ <span class="cstat-no" title="statement not covered" ></span>
1457
+ <span class="cstat-no" title="statement not covered" > // Validate scope against allowed scopes</span>
1458
+ <span class="cstat-no" title="statement not covered" > if (!this.isValidScope(client_id as string, scope as string)) {</span>
1459
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1460
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1461
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA4`,</span>
1462
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1463
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid scope',</span>
1464
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid authorization request',</span>
1465
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1466
+ <span class="cstat-no" title="statement not covered" > });</span>
1467
+ <span class="cstat-no" title="statement not covered" > }</span>
1468
+ <span class="cstat-no" title="statement not covered" ></span>
1469
+ <span class="cstat-no" title="statement not covered" > // For authorization code flow</span>
1470
+ <span class="cstat-no" title="statement not covered" > if (response_type === 'code') {</span>
1471
+ <span class="cstat-no" title="statement not covered" > const authorizationCode = await this.generateAuthorizationCode(client_id as string, scope as string);</span>
1472
+ <span class="cstat-no" title="statement not covered" > </span>
1473
+ <span class="cstat-no" title="statement not covered" > // Redirect with authorization code</span>
1474
+ <span class="cstat-no" title="statement not covered" > const redirectUrl = new URL(redirect_uri as string);</span>
1475
+ <span class="cstat-no" title="statement not covered" > redirectUrl.searchParams.append('code', authorizationCode);</span>
1476
+ <span class="cstat-no" title="statement not covered" > if (state) redirectUrl.searchParams.append('state', state as string);</span>
1477
+ <span class="cstat-no" title="statement not covered" > </span>
1478
+ <span class="cstat-no" title="statement not covered" > res.redirect(redirectUrl.toString());</span>
1479
+ <span class="cstat-no" title="statement not covered" > return;</span>
1480
+ <span class="cstat-no" title="statement not covered" > }</span>
1481
+ <span class="cstat-no" title="statement not covered" ></span>
1482
+ <span class="cstat-no" title="statement not covered" > // For implicit flow</span>
1483
+ <span class="cstat-no" title="statement not covered" > if (response_type === 'token') {</span>
1484
+ <span class="cstat-no" title="statement not covered" > const accessToken = await this.generateAccessToken(client_id as string, scope as string);</span>
1485
+ <span class="cstat-no" title="statement not covered" > </span>
1486
+ <span class="cstat-no" title="statement not covered" > // Redirect with access token</span>
1487
+ <span class="cstat-no" title="statement not covered" > const redirectUrl = new URL(redirect_uri as string);</span>
1488
+ <span class="cstat-no" title="statement not covered" > redirectUrl.hash = `access_token=${accessToken}`;</span>
1489
+ <span class="cstat-no" title="statement not covered" > if (state) redirectUrl.hash += `&amp;state=${state}`;</span>
1490
+ <span class="cstat-no" title="statement not covered" > </span>
1491
+ <span class="cstat-no" title="statement not covered" > res.redirect(redirectUrl.toString());</span>
1492
+ <span class="cstat-no" title="statement not covered" > return;</span>
1493
+ <span class="cstat-no" title="statement not covered" > }</span>
1494
+ <span class="cstat-no" title="statement not covered" ></span>
1495
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1496
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1497
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA1`,</span>
1498
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1499
+ <span class="cstat-no" title="statement not covered" > message: 'Unsupported response_type',</span>
1500
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid authorization request',</span>
1501
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1502
+ <span class="cstat-no" title="statement not covered" > });</span>
1503
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
1504
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error('Authorization request failed', error);</span>
1505
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
1506
+ <span class="cstat-no" title="statement not covered" > }</span>
1507
+ <span class="cstat-no" title="statement not covered" > }</span>
1508
+ <span class="cstat-no" title="statement not covered" ></span>
1509
+ <span class="cstat-no" title="statement not covered" > /**</span>
1510
+ <span class="cstat-no" title="statement not covered" > * Validates if the client is registered and active</span>
1511
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID to validate</span>
1512
+ <span class="cstat-no" title="statement not covered" > * @returns true if the client is valid</span>
1513
+ <span class="cstat-no" title="statement not covered" > */</span>
1514
+ <span class="cstat-no" title="statement not covered" > private isValidClient(clientId: string): boolean {</span>
1515
+ <span class="cstat-no" title="statement not covered" > const client = this.clients.get(clientId);</span>
1516
+ <span class="cstat-no" title="statement not covered" > return client?.isActive ?? false;</span>
1517
+ <span class="cstat-no" title="statement not covered" > }</span>
1518
+ <span class="cstat-no" title="statement not covered" ></span>
1519
+ <span class="cstat-no" title="statement not covered" > /**</span>
1520
+ <span class="cstat-no" title="statement not covered" > * Validates if the redirect URI is registered for the client</span>
1521
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1522
+ <span class="cstat-no" title="statement not covered" > * @param redirectUri The redirect URI to validate</span>
1523
+ <span class="cstat-no" title="statement not covered" > * @returns true if the redirect URI is valid</span>
1524
+ <span class="cstat-no" title="statement not covered" > */</span>
1525
+ <span class="cstat-no" title="statement not covered" > private isValidRedirectUri(clientId: string, redirectUri: string): boolean {</span>
1526
+ <span class="cstat-no" title="statement not covered" > const client = this.clients.get(clientId);</span>
1527
+ <span class="cstat-no" title="statement not covered" > if (!client) return false;</span>
1528
+ <span class="cstat-no" title="statement not covered" ></span>
1529
+ <span class="cstat-no" title="statement not covered" > // Check if the redirect URI matches any of the registered URIs</span>
1530
+ <span class="cstat-no" title="statement not covered" > return client.redirectUris.some(uri =&gt; {</span>
1531
+ <span class="cstat-no" title="statement not covered" > // Simple exact match for now</span>
1532
+ <span class="cstat-no" title="statement not covered" > // TODO: Implement more sophisticated URI matching (e.g., wildcards, regex)</span>
1533
+ <span class="cstat-no" title="statement not covered" > return uri === redirectUri;</span>
1534
+ <span class="cstat-no" title="statement not covered" > });</span>
1535
+ <span class="cstat-no" title="statement not covered" > }</span>
1536
+ <span class="cstat-no" title="statement not covered" ></span>
1537
+ <span class="cstat-no" title="statement not covered" > /**</span>
1538
+ <span class="cstat-no" title="statement not covered" > * Validates if the scope is allowed for the client</span>
1539
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1540
+ <span class="cstat-no" title="statement not covered" > * @param scope The scope to validate</span>
1541
+ <span class="cstat-no" title="statement not covered" > * @returns true if the scope is valid</span>
1542
+ <span class="cstat-no" title="statement not covered" > */</span>
1543
+ <span class="cstat-no" title="statement not covered" > private isValidScope(clientId: string, scope: string): boolean {</span>
1544
+ <span class="cstat-no" title="statement not covered" > const client = this.clients.get(clientId);</span>
1545
+ <span class="cstat-no" title="statement not covered" > if (!client) return false;</span>
1546
+ <span class="cstat-no" title="statement not covered" ></span>
1547
+ <span class="cstat-no" title="statement not covered" > // If no scope is requested, it's valid</span>
1548
+ <span class="cstat-no" title="statement not covered" > if (!scope) return true;</span>
1549
+ <span class="cstat-no" title="statement not covered" ></span>
1550
+ <span class="cstat-no" title="statement not covered" > // Split scope string into individual scopes</span>
1551
+ <span class="cstat-no" title="statement not covered" > const requestedScopes = scope.split(' ');</span>
1552
+ <span class="cstat-no" title="statement not covered" ></span>
1553
+ <span class="cstat-no" title="statement not covered" > // Check if all requested scopes are allowed</span>
1554
+ <span class="cstat-no" title="statement not covered" > return requestedScopes.every(s =&gt; client.allowedScopes.includes(s));</span>
1555
+ <span class="cstat-no" title="statement not covered" > }</span>
1556
+ <span class="cstat-no" title="statement not covered" ></span>
1557
+ <span class="cstat-no" title="statement not covered" > /**</span>
1558
+ <span class="cstat-no" title="statement not covered" > * Handles the OAuth2 token request</span>
1559
+ <span class="cstat-no" title="statement not covered" > * @param req Express Request object</span>
1560
+ <span class="cstat-no" title="statement not covered" > * @param res Express Response object</span>
1561
+ <span class="cstat-no" title="statement not covered" > */</span>
1562
+ <span class="cstat-no" title="statement not covered" > async handleTokenRequest(req: Request, res: Response): Promise&lt;void&gt; {</span>
1563
+ <span class="cstat-no" title="statement not covered" > try {</span>
1564
+ <span class="cstat-no" title="statement not covered" > const { grant_type, code, refresh_token, client_id, client_secret, username, password } = req.body;</span>
1565
+ <span class="cstat-no" title="statement not covered" ></span>
1566
+ <span class="cstat-no" title="statement not covered" > // Validate required parameters</span>
1567
+ <span class="cstat-no" title="statement not covered" > if (!grant_type || !client_id || !client_secret) {</span>
1568
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1569
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1570
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT0`,</span>
1571
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1572
+ <span class="cstat-no" title="statement not covered" > message: 'Missing required OAuth2 parameters',</span>
1573
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1574
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1575
+ <span class="cstat-no" title="statement not covered" > });</span>
1576
+ <span class="cstat-no" title="statement not covered" > }</span>
1577
+ <span class="cstat-no" title="statement not covered" ></span>
1578
+ <span class="cstat-no" title="statement not covered" > // Validate client credentials</span>
1579
+ <span class="cstat-no" title="statement not covered" > if (!this.validateClientCredentials(client_id, client_secret)) {</span>
1580
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1581
+ <span class="cstat-no" title="statement not covered" > status: 401,</span>
1582
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT4`,</span>
1583
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1584
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid client credentials',</span>
1585
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1586
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1587
+ <span class="cstat-no" title="statement not covered" > });</span>
1588
+ <span class="cstat-no" title="statement not covered" > }</span>
1589
+ <span class="cstat-no" title="statement not covered" ></span>
1590
+ <span class="cstat-no" title="statement not covered" > switch (grant_type) {</span>
1591
+ <span class="cstat-no" title="statement not covered" > case 'authorization_code':</span>
1592
+ <span class="cstat-no" title="statement not covered" > if (!code) {</span>
1593
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1594
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1595
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT1`,</span>
1596
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1597
+ <span class="cstat-no" title="statement not covered" > message: 'Missing authorization code',</span>
1598
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1599
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1600
+ <span class="cstat-no" title="statement not covered" > });</span>
1601
+ <span class="cstat-no" title="statement not covered" > }</span>
1602
+ <span class="cstat-no" title="statement not covered" ></span>
1603
+ <span class="cstat-no" title="statement not covered" > // Validate authorization code</span>
1604
+ <span class="cstat-no" title="statement not covered" > const authCodeData = this.authorizationCodes.get(code);</span>
1605
+ <span class="cstat-no" title="statement not covered" > if (!authCodeData || authCodeData.expiresAt &lt; Date.now()) {</span>
1606
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1607
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1608
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT5`,</span>
1609
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1610
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid or expired authorization code',</span>
1611
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1612
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1613
+ <span class="cstat-no" title="statement not covered" > });</span>
1614
+ <span class="cstat-no" title="statement not covered" > }</span>
1615
+ <span class="cstat-no" title="statement not covered" ></span>
1616
+ <span class="cstat-no" title="statement not covered" > // Remove used authorization code</span>
1617
+ <span class="cstat-no" title="statement not covered" > this.authorizationCodes.delete(code);</span>
1618
+ <span class="cstat-no" title="statement not covered" ></span>
1619
+ <span class="cstat-no" title="statement not covered" > const accessToken = await this.generateAccessToken(client_id, authCodeData.scope);</span>
1620
+ <span class="cstat-no" title="statement not covered" > const refreshToken = await this.generateRefreshToken(client_id);</span>
1621
+ <span class="cstat-no" title="statement not covered" > </span>
1622
+ <span class="cstat-no" title="statement not covered" > // Store refresh token with access token reference</span>
1623
+ <span class="cstat-no" title="statement not covered" > this.refreshTokens.set(refreshToken, {</span>
1624
+ <span class="cstat-no" title="statement not covered" > clientId: client_id,</span>
1625
+ <span class="cstat-no" title="statement not covered" > scope: authCodeData.scope,</span>
1626
+ <span class="cstat-no" title="statement not covered" > accessToken</span>
1627
+ <span class="cstat-no" title="statement not covered" > });</span>
1628
+ <span class="cstat-no" title="statement not covered" > </span>
1629
+ <span class="cstat-no" title="statement not covered" > res.json({</span>
1630
+ <span class="cstat-no" title="statement not covered" > access_token: accessToken,</span>
1631
+ <span class="cstat-no" title="statement not covered" > token_type: 'Bearer',</span>
1632
+ <span class="cstat-no" title="statement not covered" > expires_in: 3600,</span>
1633
+ <span class="cstat-no" title="statement not covered" > refresh_token: refreshToken,</span>
1634
+ <span class="cstat-no" title="statement not covered" > scope: authCodeData.scope</span>
1635
+ <span class="cstat-no" title="statement not covered" > });</span>
1636
+ <span class="cstat-no" title="statement not covered" > break;</span>
1637
+ <span class="cstat-no" title="statement not covered" ></span>
1638
+ <span class="cstat-no" title="statement not covered" > case 'refresh_token':</span>
1639
+ <span class="cstat-no" title="statement not covered" > if (!refresh_token) {</span>
1640
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1641
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1642
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT2`,</span>
1643
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1644
+ <span class="cstat-no" title="statement not covered" > message: 'Missing refresh token',</span>
1645
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1646
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1647
+ <span class="cstat-no" title="statement not covered" > });</span>
1648
+ <span class="cstat-no" title="statement not covered" > }</span>
1649
+ <span class="cstat-no" title="statement not covered" ></span>
1650
+ <span class="cstat-no" title="statement not covered" > // Validate refresh token</span>
1651
+ <span class="cstat-no" title="statement not covered" > const refreshTokenData = this.refreshTokens.get(refresh_token);</span>
1652
+ <span class="cstat-no" title="statement not covered" > if (!refreshTokenData) {</span>
1653
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1654
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1655
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT6`,</span>
1656
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1657
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid refresh token',</span>
1658
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1659
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1660
+ <span class="cstat-no" title="statement not covered" > });</span>
1661
+ <span class="cstat-no" title="statement not covered" > }</span>
1662
+ <span class="cstat-no" title="statement not covered" ></span>
1663
+ <span class="cstat-no" title="statement not covered" > // Revoke old access token</span>
1664
+ <span class="cstat-no" title="statement not covered" > this.accessTokens.delete(refreshTokenData.accessToken);</span>
1665
+ <span class="cstat-no" title="statement not covered" ></span>
1666
+ <span class="cstat-no" title="statement not covered" > // Generate new access token</span>
1667
+ <span class="cstat-no" title="statement not covered" > const newAccessToken = await this.generateAccessToken(client_id, refreshTokenData.scope);</span>
1668
+ <span class="cstat-no" title="statement not covered" > const newRefreshToken = await this.generateRefreshToken(client_id);</span>
1669
+ <span class="cstat-no" title="statement not covered" > </span>
1670
+ <span class="cstat-no" title="statement not covered" > // Store new refresh token</span>
1671
+ <span class="cstat-no" title="statement not covered" > this.refreshTokens.set(newRefreshToken, {</span>
1672
+ <span class="cstat-no" title="statement not covered" > clientId: client_id,</span>
1673
+ <span class="cstat-no" title="statement not covered" > scope: refreshTokenData.scope,</span>
1674
+ <span class="cstat-no" title="statement not covered" > accessToken: newAccessToken</span>
1675
+ <span class="cstat-no" title="statement not covered" > });</span>
1676
+ <span class="cstat-no" title="statement not covered" > </span>
1677
+ <span class="cstat-no" title="statement not covered" > res.json({</span>
1678
+ <span class="cstat-no" title="statement not covered" > access_token: newAccessToken,</span>
1679
+ <span class="cstat-no" title="statement not covered" > token_type: 'Bearer',</span>
1680
+ <span class="cstat-no" title="statement not covered" > expires_in: 3600,</span>
1681
+ <span class="cstat-no" title="statement not covered" > refresh_token: newRefreshToken,</span>
1682
+ <span class="cstat-no" title="statement not covered" > scope: refreshTokenData.scope</span>
1683
+ <span class="cstat-no" title="statement not covered" > });</span>
1684
+ <span class="cstat-no" title="statement not covered" > break;</span>
1685
+ <span class="cstat-no" title="statement not covered" ></span>
1686
+ <span class="cstat-no" title="statement not covered" > case 'client_credentials':</span>
1687
+ <span class="cstat-no" title="statement not covered" > const clientAccessToken = await this.generateAccessToken(client_id, '');</span>
1688
+ <span class="cstat-no" title="statement not covered" > res.json({</span>
1689
+ <span class="cstat-no" title="statement not covered" > access_token: clientAccessToken,</span>
1690
+ <span class="cstat-no" title="statement not covered" > token_type: 'Bearer',</span>
1691
+ <span class="cstat-no" title="statement not covered" > expires_in: 3600</span>
1692
+ <span class="cstat-no" title="statement not covered" > });</span>
1693
+ <span class="cstat-no" title="statement not covered" > break;</span>
1694
+ <span class="cstat-no" title="statement not covered" ></span>
1695
+ <span class="cstat-no" title="statement not covered" > case 'password':</span>
1696
+ <span class="cstat-no" title="statement not covered" > if (!username || !password) {</span>
1697
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1698
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1699
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT7`,</span>
1700
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1701
+ <span class="cstat-no" title="statement not covered" > message: 'Missing username or password',</span>
1702
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1703
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1704
+ <span class="cstat-no" title="statement not covered" > });</span>
1705
+ <span class="cstat-no" title="statement not covered" > }</span>
1706
+ <span class="cstat-no" title="statement not covered" ></span>
1707
+ <span class="cstat-no" title="statement not covered" > // Authenticate user</span>
1708
+ <span class="cstat-no" title="statement not covered" > const userScopes = this.authenticateUser(username, password);</span>
1709
+ <span class="cstat-no" title="statement not covered" > if (!userScopes) {</span>
1710
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1711
+ <span class="cstat-no" title="statement not covered" > status: 401,</span>
1712
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT8`,</span>
1713
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1714
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid username or password',</span>
1715
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1716
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1717
+ <span class="cstat-no" title="statement not covered" > });</span>
1718
+ <span class="cstat-no" title="statement not covered" > }</span>
1719
+ <span class="cstat-no" title="statement not covered" ></span>
1720
+ <span class="cstat-no" title="statement not covered" > // Generate access token</span>
1721
+ <span class="cstat-no" title="statement not covered" > const userAccessToken = await this.generateAccessToken(client_id, userScopes.join(' '));</span>
1722
+ <span class="cstat-no" title="statement not covered" > const userRefreshToken = await this.generateRefreshToken(client_id);</span>
1723
+ <span class="cstat-no" title="statement not covered" > </span>
1724
+ <span class="cstat-no" title="statement not covered" > // Store refresh token with access token reference</span>
1725
+ <span class="cstat-no" title="statement not covered" > this.refreshTokens.set(userRefreshToken, {</span>
1726
+ <span class="cstat-no" title="statement not covered" > clientId: client_id,</span>
1727
+ <span class="cstat-no" title="statement not covered" > scope: userScopes.join(' '),</span>
1728
+ <span class="cstat-no" title="statement not covered" > accessToken: userAccessToken</span>
1729
+ <span class="cstat-no" title="statement not covered" > });</span>
1730
+ <span class="cstat-no" title="statement not covered" > </span>
1731
+ <span class="cstat-no" title="statement not covered" > res.json({</span>
1732
+ <span class="cstat-no" title="statement not covered" > access_token: userAccessToken,</span>
1733
+ <span class="cstat-no" title="statement not covered" > token_type: 'Bearer',</span>
1734
+ <span class="cstat-no" title="statement not covered" > expires_in: 3600,</span>
1735
+ <span class="cstat-no" title="statement not covered" > refresh_token: userRefreshToken,</span>
1736
+ <span class="cstat-no" title="statement not covered" > scope: userScopes.join(' ')</span>
1737
+ <span class="cstat-no" title="statement not covered" > });</span>
1738
+ <span class="cstat-no" title="statement not covered" > break;</span>
1739
+ <span class="cstat-no" title="statement not covered" ></span>
1740
+ <span class="cstat-no" title="statement not covered" > default:</span>
1741
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1742
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1743
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT3`,</span>
1744
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1745
+ <span class="cstat-no" title="statement not covered" > message: 'Unsupported grant_type',</span>
1746
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token request',</span>
1747
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1748
+ <span class="cstat-no" title="statement not covered" > });</span>
1749
+ <span class="cstat-no" title="statement not covered" > }</span>
1750
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
1751
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error('Token request failed', error);</span>
1752
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
1753
+ <span class="cstat-no" title="statement not covered" > }</span>
1754
+ <span class="cstat-no" title="statement not covered" > }</span>
1755
+ <span class="cstat-no" title="statement not covered" ></span>
1756
+ <span class="cstat-no" title="statement not covered" > /**</span>
1757
+ <span class="cstat-no" title="statement not covered" > * Validates client credentials</span>
1758
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1759
+ <span class="cstat-no" title="statement not covered" > * @param clientSecret The client secret</span>
1760
+ <span class="cstat-no" title="statement not covered" > * @returns true if the credentials are valid</span>
1761
+ <span class="cstat-no" title="statement not covered" > */</span>
1762
+ <span class="cstat-no" title="statement not covered" > private validateClientCredentials(clientId: string, clientSecret: string): boolean {</span>
1763
+ <span class="cstat-no" title="statement not covered" > const client = this.clients.get(clientId);</span>
1764
+ <span class="cstat-no" title="statement not covered" > return (client?.clientSecret === clientSecret) &amp;&amp; (client?.isActive ?? false);</span>
1765
+ <span class="cstat-no" title="statement not covered" > }</span>
1766
+ <span class="cstat-no" title="statement not covered" ></span>
1767
+ <span class="cstat-no" title="statement not covered" > /**</span>
1768
+ <span class="cstat-no" title="statement not covered" > * Handles the OAuth2 userinfo request</span>
1769
+ <span class="cstat-no" title="statement not covered" > * @param req Express Request object</span>
1770
+ <span class="cstat-no" title="statement not covered" > * @param res Express Response object</span>
1771
+ <span class="cstat-no" title="statement not covered" > */</span>
1772
+ <span class="cstat-no" title="statement not covered" > async handleUserInfoRequest(req: Request, res: Response): Promise&lt;void&gt; {</span>
1773
+ <span class="cstat-no" title="statement not covered" > try {</span>
1774
+ <span class="cstat-no" title="statement not covered" > const token = this.authService.getTokenFromRequest(req);</span>
1775
+ <span class="cstat-no" title="statement not covered" > </span>
1776
+ <span class="cstat-no" title="statement not covered" > // Validate token</span>
1777
+ <span class="cstat-no" title="statement not covered" > const tokenData = this.accessTokens.get(token);</span>
1778
+ <span class="cstat-no" title="statement not covered" > if (!tokenData || tokenData.expiresAt &lt; Date.now()) {</span>
1779
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1780
+ <span class="cstat-no" title="statement not covered" > status: 401,</span>
1781
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HU0`,</span>
1782
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1783
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid or expired access token',</span>
1784
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token',</span>
1785
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1786
+ <span class="cstat-no" title="statement not covered" > });</span>
1787
+ <span class="cstat-no" title="statement not covered" > }</span>
1788
+ <span class="cstat-no" title="statement not covered" ></span>
1789
+ <span class="cstat-no" title="statement not covered" > // Extract user information based on token scope</span>
1790
+ <span class="cstat-no" title="statement not covered" > const userInfo = await this.getUserInfoFromToken(token);</span>
1791
+ <span class="cstat-no" title="statement not covered" > </span>
1792
+ <span class="cstat-no" title="statement not covered" > res.json(userInfo);</span>
1793
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
1794
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error('Userinfo request failed', error);</span>
1795
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
1796
+ <span class="cstat-no" title="statement not covered" > }</span>
1797
+ <span class="cstat-no" title="statement not covered" > }</span>
1798
+ <span class="cstat-no" title="statement not covered" ></span>
1799
+ <span class="cstat-no" title="statement not covered" > /**</span>
1800
+ <span class="cstat-no" title="statement not covered" > * Gets user information from the token</span>
1801
+ <span class="cstat-no" title="statement not covered" > * @param token The access token</span>
1802
+ <span class="cstat-no" title="statement not covered" > * @returns The user information object</span>
1803
+ <span class="cstat-no" title="statement not covered" > */</span>
1804
+ <span class="cstat-no" title="statement not covered" > private async getUserInfoFromToken(token: string): Promise&lt;any&gt; {</span>
1805
+ <span class="cstat-no" title="statement not covered" > const tokenData = this.accessTokens.get(token);</span>
1806
+ <span class="cstat-no" title="statement not covered" > if (!tokenData) {</span>
1807
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1808
+ <span class="cstat-no" title="statement not covered" > status: 401,</span>
1809
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HU1`,</span>
1810
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1811
+ <span class="cstat-no" title="statement not covered" > message: 'Invalid access token',</span>
1812
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid token',</span>
1813
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1814
+ <span class="cstat-no" title="statement not covered" > });</span>
1815
+ <span class="cstat-no" title="statement not covered" > }</span>
1816
+ <span class="cstat-no" title="statement not covered" ></span>
1817
+ <span class="cstat-no" title="statement not covered" > // TODO: Implement user information retrieval from database/storage</span>
1818
+ <span class="cstat-no" title="statement not covered" > // For now, return mock user information</span>
1819
+ <span class="cstat-no" title="statement not covered" > return {</span>
1820
+ <span class="cstat-no" title="statement not covered" > sub: 'user123',</span>
1821
+ <span class="cstat-no" title="statement not covered" > name: 'John Doe',</span>
1822
+ <span class="cstat-no" title="statement not covered" > email: 'john.doe@example.com',</span>
1823
+ <span class="cstat-no" title="statement not covered" > // Add other user information based on scope</span>
1824
+ <span class="cstat-no" title="statement not covered" > ...(tokenData.scope.includes('profile') &amp;&amp; {</span>
1825
+ <span class="cstat-no" title="statement not covered" > given_name: 'John',</span>
1826
+ <span class="cstat-no" title="statement not covered" > family_name: 'Doe',</span>
1827
+ <span class="cstat-no" title="statement not covered" > picture: 'https://example.com/john.jpg'</span>
1828
+ <span class="cstat-no" title="statement not covered" > }),</span>
1829
+ <span class="cstat-no" title="statement not covered" > ...(tokenData.scope.includes('email') &amp;&amp; {</span>
1830
+ <span class="cstat-no" title="statement not covered" > email_verified: true</span>
1831
+ <span class="cstat-no" title="statement not covered" > })</span>
1832
+ <span class="cstat-no" title="statement not covered" > };</span>
1833
+ <span class="cstat-no" title="statement not covered" > }</span>
1834
+ <span class="cstat-no" title="statement not covered" ></span>
1835
+ <span class="cstat-no" title="statement not covered" > /**</span>
1836
+ <span class="cstat-no" title="statement not covered" > * Handles the OAuth2 token revocation request</span>
1837
+ <span class="cstat-no" title="statement not covered" > * @param req Express Request object</span>
1838
+ <span class="cstat-no" title="statement not covered" > * @param res Express Response object</span>
1839
+ <span class="cstat-no" title="statement not covered" > */</span>
1840
+ <span class="cstat-no" title="statement not covered" > async handleTokenRevocation(req: Request, res: Response): Promise&lt;void&gt; {</span>
1841
+ <span class="cstat-no" title="statement not covered" > try {</span>
1842
+ <span class="cstat-no" title="statement not covered" > const { token, token_type_hint } = req.body;</span>
1843
+ <span class="cstat-no" title="statement not covered" ></span>
1844
+ <span class="cstat-no" title="statement not covered" > if (!token) {</span>
1845
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1846
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1847
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HR0`,</span>
1848
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1849
+ <span class="cstat-no" title="statement not covered" > message: 'Missing token',</span>
1850
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid revocation request',</span>
1851
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1852
+ <span class="cstat-no" title="statement not covered" > });</span>
1853
+ <span class="cstat-no" title="statement not covered" > }</span>
1854
+ <span class="cstat-no" title="statement not covered" ></span>
1855
+ <span class="cstat-no" title="statement not covered" > // Try to revoke the token based on token_type_hint</span>
1856
+ <span class="cstat-no" title="statement not covered" > let revoked = false;</span>
1857
+ <span class="cstat-no" title="statement not covered" ></span>
1858
+ <span class="cstat-no" title="statement not covered" > if (!token_type_hint || token_type_hint === 'access_token') {</span>
1859
+ <span class="cstat-no" title="statement not covered" > // Try to revoke as access token</span>
1860
+ <span class="cstat-no" title="statement not covered" > if (this.accessTokens.delete(token)) {</span>
1861
+ <span class="cstat-no" title="statement not covered" > revoked = true;</span>
1862
+ <span class="cstat-no" title="statement not covered" > }</span>
1863
+ <span class="cstat-no" title="statement not covered" > }</span>
1864
+ <span class="cstat-no" title="statement not covered" ></span>
1865
+ <span class="cstat-no" title="statement not covered" > if (!revoked &amp;&amp; (!token_type_hint || token_type_hint === 'refresh_token')) {</span>
1866
+ <span class="cstat-no" title="statement not covered" > // Try to revoke as refresh token</span>
1867
+ <span class="cstat-no" title="statement not covered" > const refreshTokenData = this.refreshTokens.get(token);</span>
1868
+ <span class="cstat-no" title="statement not covered" > if (refreshTokenData) {</span>
1869
+ <span class="cstat-no" title="statement not covered" > // Also revoke the associated access token</span>
1870
+ <span class="cstat-no" title="statement not covered" > this.accessTokens.delete(refreshTokenData.accessToken);</span>
1871
+ <span class="cstat-no" title="statement not covered" > this.refreshTokens.delete(token);</span>
1872
+ <span class="cstat-no" title="statement not covered" > revoked = true;</span>
1873
+ <span class="cstat-no" title="statement not covered" > }</span>
1874
+ <span class="cstat-no" title="statement not covered" > }</span>
1875
+ <span class="cstat-no" title="statement not covered" ></span>
1876
+ <span class="cstat-no" title="statement not covered" > if (!revoked) {</span>
1877
+ <span class="cstat-no" title="statement not covered" > // Token not found or already revoked</span>
1878
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
1879
+ <span class="cstat-no" title="statement not covered" > status: 400,</span>
1880
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HR1`,</span>
1881
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: true,</span>
1882
+ <span class="cstat-no" title="statement not covered" > message: 'Token not found or already revoked',</span>
1883
+ <span class="cstat-no" title="statement not covered" > userMessage: 'Invalid revocation request',</span>
1884
+ <span class="cstat-no" title="statement not covered" > issuerService: this.serviceName,</span>
1885
+ <span class="cstat-no" title="statement not covered" > });</span>
1886
+ <span class="cstat-no" title="statement not covered" > }</span>
1887
+ <span class="cstat-no" title="statement not covered" ></span>
1888
+ <span class="cstat-no" title="statement not covered" > res.status(200).send();</span>
1889
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
1890
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error('Token revocation failed', error);</span>
1891
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
1892
+ <span class="cstat-no" title="statement not covered" > }</span>
1893
+ <span class="cstat-no" title="statement not covered" > }</span>
1894
+ <span class="cstat-no" title="statement not covered" ></span>
1895
+ <span class="cstat-no" title="statement not covered" > /**</span>
1896
+ <span class="cstat-no" title="statement not covered" > * Generates an authorization code</span>
1897
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1898
+ <span class="cstat-no" title="statement not covered" > * @param scope The requested scope</span>
1899
+ <span class="cstat-no" title="statement not covered" > * @returns The generated authorization code</span>
1900
+ <span class="cstat-no" title="statement not covered" > */</span>
1901
+ <span class="cstat-no" title="statement not covered" > private async generateAuthorizationCode(clientId: string, scope: string): Promise&lt;string&gt; {</span>
1902
+ <span class="cstat-no" title="statement not covered" > //const code = randomBytes(32).toString('hex');</span>
1903
+ <span class="cstat-no" title="statement not covered" > const code = cryptoJs.lib.WordArray.random(32).toString();</span>
1904
+ <span class="cstat-no" title="statement not covered" > const expiresAt = Date.now() + 600000; // 10 minutes expiration</span>
1905
+ <span class="cstat-no" title="statement not covered" > </span>
1906
+ <span class="cstat-no" title="statement not covered" > this.authorizationCodes.set(code, {</span>
1907
+ <span class="cstat-no" title="statement not covered" > clientId,</span>
1908
+ <span class="cstat-no" title="statement not covered" > scope,</span>
1909
+ <span class="cstat-no" title="statement not covered" > expiresAt</span>
1910
+ <span class="cstat-no" title="statement not covered" > });</span>
1911
+ <span class="cstat-no" title="statement not covered" ></span>
1912
+ <span class="cstat-no" title="statement not covered" > return code;</span>
1913
+ <span class="cstat-no" title="statement not covered" > }</span>
1914
+ <span class="cstat-no" title="statement not covered" ></span>
1915
+ <span class="cstat-no" title="statement not covered" > /**</span>
1916
+ <span class="cstat-no" title="statement not covered" > * Generates an access token</span>
1917
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1918
+ <span class="cstat-no" title="statement not covered" > * @param scope The requested scope</span>
1919
+ <span class="cstat-no" title="statement not covered" > * @returns The generated access token</span>
1920
+ <span class="cstat-no" title="statement not covered" > */</span>
1921
+ <span class="cstat-no" title="statement not covered" > private async generateAccessToken(clientId: string, scope: string): Promise&lt;string&gt; {</span>
1922
+ <span class="cstat-no" title="statement not covered" > //const token = randomBytes(32).toString('hex');</span>
1923
+ <span class="cstat-no" title="statement not covered" > const token = cryptoJs.lib.WordArray.random(32).toString();</span>
1924
+ <span class="cstat-no" title="statement not covered" > const expiresAt = Date.now() + 3600000; // 1 hour expiration</span>
1925
+ <span class="cstat-no" title="statement not covered" > </span>
1926
+ <span class="cstat-no" title="statement not covered" > this.accessTokens.set(token, {</span>
1927
+ <span class="cstat-no" title="statement not covered" > clientId,</span>
1928
+ <span class="cstat-no" title="statement not covered" > scope,</span>
1929
+ <span class="cstat-no" title="statement not covered" > expiresAt</span>
1930
+ <span class="cstat-no" title="statement not covered" > });</span>
1931
+ <span class="cstat-no" title="statement not covered" ></span>
1932
+ <span class="cstat-no" title="statement not covered" > return token;</span>
1933
+ <span class="cstat-no" title="statement not covered" > }</span>
1934
+ <span class="cstat-no" title="statement not covered" ></span>
1935
+ <span class="cstat-no" title="statement not covered" > /**</span>
1936
+ <span class="cstat-no" title="statement not covered" > * Generates a refresh token</span>
1937
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1938
+ <span class="cstat-no" title="statement not covered" > * @returns The generated refresh token</span>
1939
+ <span class="cstat-no" title="statement not covered" > */</span>
1940
+ <span class="cstat-no" title="statement not covered" > private async generateRefreshToken(clientId: string): Promise&lt;string&gt; {</span>
1941
+ <span class="cstat-no" title="statement not covered" > //const token = randomBytes(32).toString('hex');</span>
1942
+ <span class="cstat-no" title="statement not covered" > const token = cryptoJs.lib.WordArray.random(32).toString();</span>
1943
+ <span class="cstat-no" title="statement not covered" > </span>
1944
+ <span class="cstat-no" title="statement not covered" > this.refreshTokens.set(token, {</span>
1945
+ <span class="cstat-no" title="statement not covered" > clientId,</span>
1946
+ <span class="cstat-no" title="statement not covered" > scope: '',</span>
1947
+ <span class="cstat-no" title="statement not covered" > accessToken: ''</span>
1948
+ <span class="cstat-no" title="statement not covered" > });</span>
1949
+ <span class="cstat-no" title="statement not covered" ></span>
1950
+ <span class="cstat-no" title="statement not covered" > return token;</span>
1951
+ <span class="cstat-no" title="statement not covered" > }</span>
1952
+ <span class="cstat-no" title="statement not covered" ></span>
1953
+ <span class="cstat-no" title="statement not covered" > /**</span>
1954
+ <span class="cstat-no" title="statement not covered" > * Gets the access token data</span>
1955
+ <span class="cstat-no" title="statement not covered" > * @param token The access token</span>
1956
+ <span class="cstat-no" title="statement not covered" > * @returns The access token data or undefined if not found</span>
1957
+ <span class="cstat-no" title="statement not covered" > */</span>
1958
+ <span class="cstat-no" title="statement not covered" > getAccessTokenData(token: string): { clientId: string; scope: string; expiresAt: number } | undefined {</span>
1959
+ <span class="cstat-no" title="statement not covered" > return this.accessTokens.get(token);</span>
1960
+ <span class="cstat-no" title="statement not covered" > }</span>
1961
+ <span class="cstat-no" title="statement not covered" ></span>
1962
+ <span class="cstat-no" title="statement not covered" > /**</span>
1963
+ <span class="cstat-no" title="statement not covered" > * Registers a new OAuth2 client</span>
1964
+ <span class="cstat-no" title="statement not covered" > * @param clientId The client ID</span>
1965
+ <span class="cstat-no" title="statement not covered" > * @param clientSecret The client secret</span>
1966
+ <span class="cstat-no" title="statement not covered" > * @param redirectUris The allowed redirect URIs</span>
1967
+ <span class="cstat-no" title="statement not covered" > * @param allowedScopes The allowed scopes</span>
1968
+ <span class="cstat-no" title="statement not covered" > * @returns true if the client was registered successfully</span>
1969
+ <span class="cstat-no" title="statement not covered" > */</span>
1970
+ <span class="cstat-no" title="statement not covered" > registerClient(</span>
1971
+ <span class="cstat-no" title="statement not covered" > clientId: string,</span>
1972
+ <span class="cstat-no" title="statement not covered" > clientSecret: string,</span>
1973
+ <span class="cstat-no" title="statement not covered" > redirectUris: string[],</span>
1974
+ <span class="cstat-no" title="statement not covered" > allowedScopes: string[]</span>
1975
+ <span class="cstat-no" title="statement not covered" > ): boolean {</span>
1976
+ <span class="cstat-no" title="statement not covered" > if (this.clients.has(clientId)) {</span>
1977
+ <span class="cstat-no" title="statement not covered" > return false;</span>
1978
+ <span class="cstat-no" title="statement not covered" > }</span>
1979
+ <span class="cstat-no" title="statement not covered" ></span>
1980
+ <span class="cstat-no" title="statement not covered" > this.clients.set(clientId, {</span>
1981
+ <span class="cstat-no" title="statement not covered" > clientId,</span>
1982
+ <span class="cstat-no" title="statement not covered" > clientSecret,</span>
1983
+ <span class="cstat-no" title="statement not covered" > redirectUris,</span>
1984
+ <span class="cstat-no" title="statement not covered" > allowedScopes,</span>
1985
+ <span class="cstat-no" title="statement not covered" > isActive: true</span>
1986
+ <span class="cstat-no" title="statement not covered" > });</span>
1987
+ <span class="cstat-no" title="statement not covered" ></span>
1988
+ <span class="cstat-no" title="statement not covered" > return true;</span>
1989
+ <span class="cstat-no" title="statement not covered" > }</span>
1990
+ <span class="cstat-no" title="statement not covered" ></span>
1991
+ <span class="cstat-no" title="statement not covered" > /**</span>
1992
+ <span class="cstat-no" title="statement not covered" > * Authenticates a user with username and password</span>
1993
+ <span class="cstat-no" title="statement not covered" > * @param username The username</span>
1994
+ <span class="cstat-no" title="statement not covered" > * @param password The password</span>
1995
+ <span class="cstat-no" title="statement not covered" > * @returns The user's scopes if authentication is successful, undefined otherwise</span>
1996
+ <span class="cstat-no" title="statement not covered" > */</span>
1997
+ <span class="cstat-no" title="statement not covered" > private authenticateUser(username: string, password: string): string[] | undefined {</span>
1998
+ <span class="cstat-no" title="statement not covered" > const user = this.users.get(username);</span>
1999
+ <span class="cstat-no" title="statement not covered" > if (!user || user.password !== password) { // In a real implementation, compare hashed passwords</span>
2000
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
2001
+ <span class="cstat-no" title="statement not covered" > }</span>
2002
+ <span class="cstat-no" title="statement not covered" > return user.scopes;</span>
2003
+ <span class="cstat-no" title="statement not covered" > }</span>
2004
+ <span class="cstat-no" title="statement not covered" ></span>
2005
+ <span class="cstat-no" title="statement not covered" > /**</span>
2006
+ <span class="cstat-no" title="statement not covered" > * Registers a new user</span>
2007
+ <span class="cstat-no" title="statement not covered" > * @param username The username</span>
2008
+ <span class="cstat-no" title="statement not covered" > * @param password The password</span>
2009
+ <span class="cstat-no" title="statement not covered" > * @param scopes The user's scopes</span>
2010
+ <span class="cstat-no" title="statement not covered" > * @returns true if the user was registered successfully</span>
2011
+ <span class="cstat-no" title="statement not covered" > */</span>
2012
+ <span class="cstat-no" title="statement not covered" > registerUser(username: string, password: string, scopes: string[]): boolean {</span>
2013
+ <span class="cstat-no" title="statement not covered" > if (this.users.has(username)) {</span>
2014
+ <span class="cstat-no" title="statement not covered" > return false;</span>
2015
+ <span class="cstat-no" title="statement not covered" > }</span>
2016
+ <span class="cstat-no" title="statement not covered" ></span>
2017
+ <span class="cstat-no" title="statement not covered" > this.users.set(username, {</span>
2018
+ <span class="cstat-no" title="statement not covered" > username,</span>
2019
+ <span class="cstat-no" title="statement not covered" > password, // In a real implementation, hash the password</span>
2020
+ <span class="cstat-no" title="statement not covered" > scopes</span>
2021
+ <span class="cstat-no" title="statement not covered" > });</span>
2022
+ <span class="cstat-no" title="statement not covered" ></span>
2023
+ <span class="cstat-no" title="statement not covered" > return true;</span>
2024
+ <span class="cstat-no" title="statement not covered" > }</span>
2025
+ <span class="cstat-no" title="statement not covered" >} </span></pre></td></tr></table></pre>
2026
+
2027
+ <div class='push'></div><!-- for sticky footer -->
2028
+ </div><!-- /wrapper -->
2029
+ <div class='footer quiet pad2 space-top1 center small'>
2030
+ Code coverage generated by
2031
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2032
+ at 2025-11-12T23:04:35.006Z
2033
+ </div>
2034
+ <script src="../../../prettify.js"></script>
2035
+ <script>
2036
+ window.onload = function () {
2037
+ prettyPrint();
2038
+ };
2039
+ </script>
2040
+ <script src="../../../sorter.js"></script>
2041
+ <script src="../../../block-navigation.js"></script>
2042
+ </body>
2043
+ </html>
2044
+