onbuzz 5.4.1 → 5.4.3

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 (1911) hide show
  1. package/package.json +4 -2
  2. package/src/core/__tests__/agentScheduler.rateLimitEscalation.test.js +243 -0
  3. package/src/core/__tests__/stateManager.atomicWrite.test.js +150 -0
  4. package/src/core/__tests__/stateManager.snippetCache.test.js +26 -3
  5. package/src/core/__tests__/stateManager.test.js +15 -7
  6. package/src/core/agentScheduler.js +173 -15
  7. package/src/core/stateManager.js +86 -5
  8. package/src/index.js +5 -0
  9. package/src/interfaces/webServer.js +26 -5
  10. package/src/services/__tests__/credentialVault.crypto.test.js +214 -0
  11. package/src/services/__tests__/credentialVault.test.js +27 -1
  12. package/src/services/__tests__/eventLoopMonitor.test.js +90 -0
  13. package/src/services/__tests__/scheduleService.flow.test.js +123 -50
  14. package/src/services/__tests__/scheduleService.missedRuns.test.js +7 -1
  15. package/src/services/__tests__/scheduleService.test.js +5 -1
  16. package/src/services/aiService.js +35 -0
  17. package/src/services/credentialVault.js +794 -685
  18. package/src/services/eventLoopMonitor.js +102 -0
  19. package/src/services/scheduleService.js +109 -45
  20. package/src/tools/__tests__/webTool.e2e.test.js +9 -2
  21. package/src/tools/webTool.js +4 -1
  22. package/src/utilities/__tests__/siteIdCanonical.test.js +92 -0
  23. package/src/utilities/constants.js +18 -1
  24. package/src/utilities/siteIdCanonical.js +79 -0
  25. package/web-ui/build/index.html +2 -2
  26. package/web-ui/build/static/1c-Chd__H0X.js +2 -0
  27. package/web-ui/build/static/1c-Chd__H0X.js.map +1 -0
  28. package/web-ui/build/static/abap-z3xpIMD6.js +2 -0
  29. package/web-ui/build/static/abap-z3xpIMD6.js.map +1 -0
  30. package/web-ui/build/static/abnf-Cxa5i-Ka.js +2 -0
  31. package/web-ui/build/static/abnf-Cxa5i-Ka.js.map +1 -0
  32. package/web-ui/build/static/abnf-DfTJvpMA.js +2 -0
  33. package/web-ui/build/static/abnf-DfTJvpMA.js.map +1 -0
  34. package/web-ui/build/static/accesslog-H0NR0TsC.js +2 -0
  35. package/web-ui/build/static/accesslog-H0NR0TsC.js.map +1 -0
  36. package/web-ui/build/static/actionscript-CfplIEUr.js +2 -0
  37. package/web-ui/build/static/actionscript-CfplIEUr.js.map +1 -0
  38. package/web-ui/build/static/actionscript-DN0N7J9y.js +2 -0
  39. package/web-ui/build/static/actionscript-DN0N7J9y.js.map +1 -0
  40. package/web-ui/build/static/ada-Bws4zQ7P.js +2 -0
  41. package/web-ui/build/static/ada-Bws4zQ7P.js.map +1 -0
  42. package/web-ui/build/static/ada-DjGrLK0i.js +2 -0
  43. package/web-ui/build/static/ada-DjGrLK0i.js.map +1 -0
  44. package/web-ui/build/static/agda-A7nPgZEA.js +2 -0
  45. package/web-ui/build/static/agda-A7nPgZEA.js.map +1 -0
  46. package/web-ui/build/static/al-DH_rgCbz.js +2 -0
  47. package/web-ui/build/static/al-DH_rgCbz.js.map +1 -0
  48. package/web-ui/build/static/angelscript-Ch1Lv8Ld.js +2 -0
  49. package/web-ui/build/static/angelscript-Ch1Lv8Ld.js.map +1 -0
  50. package/web-ui/build/static/antlr4-C3Nmv6yC.js +2 -0
  51. package/web-ui/build/static/antlr4-C3Nmv6yC.js.map +1 -0
  52. package/web-ui/build/static/apache-CzUFUkMs.js +2 -0
  53. package/web-ui/build/static/apache-CzUFUkMs.js.map +1 -0
  54. package/web-ui/build/static/apacheconf-BxyS9jfz.js +2 -0
  55. package/web-ui/build/static/apacheconf-BxyS9jfz.js.map +1 -0
  56. package/web-ui/build/static/apex-D106fRua.js +2 -0
  57. package/web-ui/build/static/apex-D106fRua.js.map +1 -0
  58. package/web-ui/build/static/apl-9I8kzYlV.js +2 -0
  59. package/web-ui/build/static/apl-9I8kzYlV.js.map +1 -0
  60. package/web-ui/build/static/applescript-C03aYI_B.js +2 -0
  61. package/web-ui/build/static/applescript-C03aYI_B.js.map +1 -0
  62. package/web-ui/build/static/applescript-C67UjOh3.js +2 -0
  63. package/web-ui/build/static/applescript-C67UjOh3.js.map +1 -0
  64. package/web-ui/build/static/aql-BqEz11Em.js +2 -0
  65. package/web-ui/build/static/aql-BqEz11Em.js.map +1 -0
  66. package/web-ui/build/static/arcade-C2dtkZjh.js +2 -0
  67. package/web-ui/build/static/arcade-C2dtkZjh.js.map +1 -0
  68. package/web-ui/build/static/arduino-B_hR053Z.js +2 -0
  69. package/web-ui/build/static/arduino-B_hR053Z.js.map +1 -0
  70. package/web-ui/build/static/arduino-CvVS0tc-.js +2 -0
  71. package/web-ui/build/static/arduino-CvVS0tc-.js.map +1 -0
  72. package/web-ui/build/static/arff-1aju-_Sx.js +2 -0
  73. package/web-ui/build/static/arff-1aju-_Sx.js.map +1 -0
  74. package/web-ui/build/static/armasm-BhepJ3kb.js +2 -0
  75. package/web-ui/build/static/armasm-BhepJ3kb.js.map +1 -0
  76. package/web-ui/build/static/asciidoc-5eF8Ya2k.js +2 -0
  77. package/web-ui/build/static/asciidoc-5eF8Ya2k.js.map +1 -0
  78. package/web-ui/build/static/asciidoc-BmGma7YP.js +2 -0
  79. package/web-ui/build/static/asciidoc-BmGma7YP.js.map +1 -0
  80. package/web-ui/build/static/asm6502-mqyYhstw.js +2 -0
  81. package/web-ui/build/static/asm6502-mqyYhstw.js.map +1 -0
  82. package/web-ui/build/static/asmatmel-DR45IYBY.js +2 -0
  83. package/web-ui/build/static/asmatmel-DR45IYBY.js.map +1 -0
  84. package/web-ui/build/static/aspectj-BRQN1KeW.js +2 -0
  85. package/web-ui/build/static/aspectj-BRQN1KeW.js.map +1 -0
  86. package/web-ui/build/static/aspnet-CihwFqii.js +2 -0
  87. package/web-ui/build/static/aspnet-CihwFqii.js.map +1 -0
  88. package/web-ui/build/static/autohotkey-BEqhWECo.js +2 -0
  89. package/web-ui/build/static/autohotkey-BEqhWECo.js.map +1 -0
  90. package/web-ui/build/static/autohotkey-Ddi96XoW.js +2 -0
  91. package/web-ui/build/static/autohotkey-Ddi96XoW.js.map +1 -0
  92. package/web-ui/build/static/autoit-BUW_YKsd.js +2 -0
  93. package/web-ui/build/static/autoit-BUW_YKsd.js.map +1 -0
  94. package/web-ui/build/static/autoit-DH4X6QWA.js +2 -0
  95. package/web-ui/build/static/autoit-DH4X6QWA.js.map +1 -0
  96. package/web-ui/build/static/avisynth-GlWRlpzw.js +2 -0
  97. package/web-ui/build/static/avisynth-GlWRlpzw.js.map +1 -0
  98. package/web-ui/build/static/avrasm-CZ_8Cg4w.js +2 -0
  99. package/web-ui/build/static/avrasm-CZ_8Cg4w.js.map +1 -0
  100. package/web-ui/build/static/avro-idl-CC2pl-Nb.js +2 -0
  101. package/web-ui/build/static/avro-idl-CC2pl-Nb.js.map +1 -0
  102. package/web-ui/build/static/awk-vriGvXh9.js +2 -0
  103. package/web-ui/build/static/awk-vriGvXh9.js.map +1 -0
  104. package/web-ui/build/static/axapta-CFWdNYAJ.js +2 -0
  105. package/web-ui/build/static/axapta-CFWdNYAJ.js.map +1 -0
  106. package/web-ui/build/static/bash-Cl9n4q7H.js +2 -0
  107. package/web-ui/build/static/bash-Cl9n4q7H.js.map +1 -0
  108. package/web-ui/build/static/bash-ELzfQpVW.js +2 -0
  109. package/web-ui/build/static/bash-ELzfQpVW.js.map +1 -0
  110. package/web-ui/build/static/basic-B7ljwRR7.js +2 -0
  111. package/web-ui/build/static/basic-B7ljwRR7.js.map +1 -0
  112. package/web-ui/build/static/basic-BpC2WXsI.js +2 -0
  113. package/web-ui/build/static/basic-BpC2WXsI.js.map +1 -0
  114. package/web-ui/build/static/batch-MaR-yZ1y.js +2 -0
  115. package/web-ui/build/static/batch-MaR-yZ1y.js.map +1 -0
  116. package/web-ui/build/static/bbcode-BvqQvZNN.js +2 -0
  117. package/web-ui/build/static/bbcode-BvqQvZNN.js.map +1 -0
  118. package/web-ui/build/static/bicep-DSs-Chn6.js +2 -0
  119. package/web-ui/build/static/bicep-DSs-Chn6.js.map +1 -0
  120. package/web-ui/build/static/birb-Cu2uquiD.js +2 -0
  121. package/web-ui/build/static/birb-Cu2uquiD.js.map +1 -0
  122. package/web-ui/build/static/bison-Giq89_Fg.js +2 -0
  123. package/web-ui/build/static/bison-Giq89_Fg.js.map +1 -0
  124. package/web-ui/build/static/bnf-D3AJjSSS.js +2 -0
  125. package/web-ui/build/static/bnf-D3AJjSSS.js.map +1 -0
  126. package/web-ui/build/static/bnf-W664ik7G.js +2 -0
  127. package/web-ui/build/static/bnf-W664ik7G.js.map +1 -0
  128. package/web-ui/build/static/brainfuck-4s9Qbirj.js +2 -0
  129. package/web-ui/build/static/brainfuck-4s9Qbirj.js.map +1 -0
  130. package/web-ui/build/static/brainfuck-DJxPK3Iy.js +2 -0
  131. package/web-ui/build/static/brainfuck-DJxPK3Iy.js.map +1 -0
  132. package/web-ui/build/static/brightscript-D8fYvxsu.js +2 -0
  133. package/web-ui/build/static/brightscript-D8fYvxsu.js.map +1 -0
  134. package/web-ui/build/static/bro-DKb5gIKj.js +2 -0
  135. package/web-ui/build/static/bro-DKb5gIKj.js.map +1 -0
  136. package/web-ui/build/static/bsl-C5zIU-S5.js +2 -0
  137. package/web-ui/build/static/bsl-C5zIU-S5.js.map +1 -0
  138. package/web-ui/build/static/c-1AWks2fB.js +2 -0
  139. package/web-ui/build/static/c-1AWks2fB.js.map +1 -0
  140. package/web-ui/build/static/c-BqJ3Kydw.js +2 -0
  141. package/web-ui/build/static/c-BqJ3Kydw.js.map +1 -0
  142. package/web-ui/build/static/c-like-B-vpA1BJ.js +2 -0
  143. package/web-ui/build/static/c-like-B-vpA1BJ.js.map +1 -0
  144. package/web-ui/build/static/cal-BcTUb6oh.js +2 -0
  145. package/web-ui/build/static/cal-BcTUb6oh.js.map +1 -0
  146. package/web-ui/build/static/capnproto-BcsK089h.js +2 -0
  147. package/web-ui/build/static/capnproto-BcsK089h.js.map +1 -0
  148. package/web-ui/build/static/ceylon-D-BsvRWc.js +2 -0
  149. package/web-ui/build/static/ceylon-D-BsvRWc.js.map +1 -0
  150. package/web-ui/build/static/cfscript-nNKUQVft.js +2 -0
  151. package/web-ui/build/static/cfscript-nNKUQVft.js.map +1 -0
  152. package/web-ui/build/static/chaiscript-JPZ1LpA8.js +2 -0
  153. package/web-ui/build/static/chaiscript-JPZ1LpA8.js.map +1 -0
  154. package/web-ui/build/static/cil-DrApzX2b.js +2 -0
  155. package/web-ui/build/static/cil-DrApzX2b.js.map +1 -0
  156. package/web-ui/build/static/clean-B1JwrnG3.js +2 -0
  157. package/web-ui/build/static/clean-B1JwrnG3.js.map +1 -0
  158. package/web-ui/build/static/clike-BUhQVqkY.js +2 -0
  159. package/web-ui/build/static/clike-BUhQVqkY.js.map +1 -0
  160. package/web-ui/build/static/clojure-Cu3cCjx_.js +2 -0
  161. package/web-ui/build/static/clojure-Cu3cCjx_.js.map +1 -0
  162. package/web-ui/build/static/clojure-DSnGYz8v.js +2 -0
  163. package/web-ui/build/static/clojure-DSnGYz8v.js.map +1 -0
  164. package/web-ui/build/static/clojure-repl--SXQZYst.js +2 -0
  165. package/web-ui/build/static/clojure-repl--SXQZYst.js.map +1 -0
  166. package/web-ui/build/static/cmake-CT2jlT-3.js +2 -0
  167. package/web-ui/build/static/cmake-CT2jlT-3.js.map +1 -0
  168. package/web-ui/build/static/cmake-DE_zXUtM.js +2 -0
  169. package/web-ui/build/static/cmake-DE_zXUtM.js.map +1 -0
  170. package/web-ui/build/static/cobol-Dz5XJU6W.js +2 -0
  171. package/web-ui/build/static/cobol-Dz5XJU6W.js.map +1 -0
  172. package/web-ui/build/static/coffeescript-D6O6aXuW.js +2 -0
  173. package/web-ui/build/static/coffeescript-D6O6aXuW.js.map +1 -0
  174. package/web-ui/build/static/coffeescript-DpPYvXf1.js +2 -0
  175. package/web-ui/build/static/coffeescript-DpPYvXf1.js.map +1 -0
  176. package/web-ui/build/static/concurnas-CjmT-V81.js +2 -0
  177. package/web-ui/build/static/concurnas-CjmT-V81.js.map +1 -0
  178. package/web-ui/build/static/coq-BlHlRq6T.js +2 -0
  179. package/web-ui/build/static/coq-BlHlRq6T.js.map +1 -0
  180. package/web-ui/build/static/coq-CJt17l8m.js +2 -0
  181. package/web-ui/build/static/coq-CJt17l8m.js.map +1 -0
  182. package/web-ui/build/static/cos-DBXjxXvV.js +2 -0
  183. package/web-ui/build/static/cos-DBXjxXvV.js.map +1 -0
  184. package/web-ui/build/static/cpp-CcOSQvT8.js +2 -0
  185. package/web-ui/build/static/cpp-CcOSQvT8.js.map +1 -0
  186. package/web-ui/build/static/cpp-DwQBUjEB.js +2 -0
  187. package/web-ui/build/static/cpp-DwQBUjEB.js.map +1 -0
  188. package/web-ui/build/static/crmsh--3Ou655A.js +2 -0
  189. package/web-ui/build/static/crmsh--3Ou655A.js.map +1 -0
  190. package/web-ui/build/static/crystal-CEUyqkdd.js +2 -0
  191. package/web-ui/build/static/crystal-CEUyqkdd.js.map +1 -0
  192. package/web-ui/build/static/crystal-DVCTnWbo.js +2 -0
  193. package/web-ui/build/static/crystal-DVCTnWbo.js.map +1 -0
  194. package/web-ui/build/static/csharp-BmPprn32.js +2 -0
  195. package/web-ui/build/static/csharp-BmPprn32.js.map +1 -0
  196. package/web-ui/build/static/csharp-w-4KwPQX.js +2 -0
  197. package/web-ui/build/static/csharp-w-4KwPQX.js.map +1 -0
  198. package/web-ui/build/static/cshtml-D6Qt4yXZ.js +2 -0
  199. package/web-ui/build/static/cshtml-D6Qt4yXZ.js.map +1 -0
  200. package/web-ui/build/static/csp-7MqT768g.js +2 -0
  201. package/web-ui/build/static/csp-7MqT768g.js.map +1 -0
  202. package/web-ui/build/static/csp-Bh108JBS.js +2 -0
  203. package/web-ui/build/static/csp-Bh108JBS.js.map +1 -0
  204. package/web-ui/build/static/css-CGiiEb94.js +2 -0
  205. package/web-ui/build/static/css-CGiiEb94.js.map +1 -0
  206. package/web-ui/build/static/css-DFk67WOB.js +2 -0
  207. package/web-ui/build/static/css-DFk67WOB.js.map +1 -0
  208. package/web-ui/build/static/css-extras-DBLZt6-a.js +2 -0
  209. package/web-ui/build/static/css-extras-DBLZt6-a.js.map +1 -0
  210. package/web-ui/build/static/csv-mCpYhKk0.js +2 -0
  211. package/web-ui/build/static/csv-mCpYhKk0.js.map +1 -0
  212. package/web-ui/build/static/cypher-D5SuODOh.js +2 -0
  213. package/web-ui/build/static/cypher-D5SuODOh.js.map +1 -0
  214. package/web-ui/build/static/d-C-7nfgj0.js +2 -0
  215. package/web-ui/build/static/d-C-7nfgj0.js.map +1 -0
  216. package/web-ui/build/static/d-LETxAPhV.js +2 -0
  217. package/web-ui/build/static/d-LETxAPhV.js.map +1 -0
  218. package/web-ui/build/static/dart-BKsjoTdB.js +2 -0
  219. package/web-ui/build/static/dart-BKsjoTdB.js.map +1 -0
  220. package/web-ui/build/static/dart-DTzbTGyz.js +2 -0
  221. package/web-ui/build/static/dart-DTzbTGyz.js.map +1 -0
  222. package/web-ui/build/static/dataweave-KoJ4z3vu.js +2 -0
  223. package/web-ui/build/static/dataweave-KoJ4z3vu.js.map +1 -0
  224. package/web-ui/build/static/dax-9dq_bPwU.js +2 -0
  225. package/web-ui/build/static/dax-9dq_bPwU.js.map +1 -0
  226. package/web-ui/build/static/delphi-mu1jiooe.js +2 -0
  227. package/web-ui/build/static/delphi-mu1jiooe.js.map +1 -0
  228. package/web-ui/build/static/dhall-Ci7YkKCK.js +2 -0
  229. package/web-ui/build/static/dhall-Ci7YkKCK.js.map +1 -0
  230. package/web-ui/build/static/diff-081il1Q2.js +2 -0
  231. package/web-ui/build/static/diff-081il1Q2.js.map +1 -0
  232. package/web-ui/build/static/diff-ofoj_soT.js +2 -0
  233. package/web-ui/build/static/diff-ofoj_soT.js.map +1 -0
  234. package/web-ui/build/static/django-C_SroHeQ.js +2 -0
  235. package/web-ui/build/static/django-C_SroHeQ.js.map +1 -0
  236. package/web-ui/build/static/django-DfRfqzt7.js +2 -0
  237. package/web-ui/build/static/django-DfRfqzt7.js.map +1 -0
  238. package/web-ui/build/static/dns-BgUHixbk.js +2 -0
  239. package/web-ui/build/static/dns-BgUHixbk.js.map +1 -0
  240. package/web-ui/build/static/dns-zone-file-7057Z_J0.js +2 -0
  241. package/web-ui/build/static/dns-zone-file-7057Z_J0.js.map +1 -0
  242. package/web-ui/build/static/docker-DDOBWDJC.js +2 -0
  243. package/web-ui/build/static/docker-DDOBWDJC.js.map +1 -0
  244. package/web-ui/build/static/dockerfile-RR9NgHl6.js +2 -0
  245. package/web-ui/build/static/dockerfile-RR9NgHl6.js.map +1 -0
  246. package/web-ui/build/static/dos-CjqrNOMu.js +2 -0
  247. package/web-ui/build/static/dos-CjqrNOMu.js.map +1 -0
  248. package/web-ui/build/static/dot-BXNVwXxi.js +2 -0
  249. package/web-ui/build/static/dot-BXNVwXxi.js.map +1 -0
  250. package/web-ui/build/static/dsconfig-DDrY59sd.js +2 -0
  251. package/web-ui/build/static/dsconfig-DDrY59sd.js.map +1 -0
  252. package/web-ui/build/static/dts-BRS81ZtL.js +2 -0
  253. package/web-ui/build/static/dts-BRS81ZtL.js.map +1 -0
  254. package/web-ui/build/static/dust-C5gPxGIC.js +2 -0
  255. package/web-ui/build/static/dust-C5gPxGIC.js.map +1 -0
  256. package/web-ui/build/static/ebnf-CBvftKeV.js +2 -0
  257. package/web-ui/build/static/ebnf-CBvftKeV.js.map +1 -0
  258. package/web-ui/build/static/ebnf-Dc0sVrPd.js +2 -0
  259. package/web-ui/build/static/ebnf-Dc0sVrPd.js.map +1 -0
  260. package/web-ui/build/static/editorconfig-C0RG-PUu.js +2 -0
  261. package/web-ui/build/static/editorconfig-C0RG-PUu.js.map +1 -0
  262. package/web-ui/build/static/eiffel-Cc3PwD5l.js +2 -0
  263. package/web-ui/build/static/eiffel-Cc3PwD5l.js.map +1 -0
  264. package/web-ui/build/static/ejs-SWlIGQI1.js +2 -0
  265. package/web-ui/build/static/ejs-SWlIGQI1.js.map +1 -0
  266. package/web-ui/build/static/elixir-CC073QS0.js +2 -0
  267. package/web-ui/build/static/elixir-CC073QS0.js.map +1 -0
  268. package/web-ui/build/static/elixir-CNTUOI_T.js +2 -0
  269. package/web-ui/build/static/elixir-CNTUOI_T.js.map +1 -0
  270. package/web-ui/build/static/elm--S3wwrkj.js +2 -0
  271. package/web-ui/build/static/elm--S3wwrkj.js.map +1 -0
  272. package/web-ui/build/static/elm-2VNQB1yS.js +2 -0
  273. package/web-ui/build/static/elm-2VNQB1yS.js.map +1 -0
  274. package/web-ui/build/static/erb-Bqaz2zCf.js +2 -0
  275. package/web-ui/build/static/erb-Bqaz2zCf.js.map +1 -0
  276. package/web-ui/build/static/erb-C49ui9JC.js +2 -0
  277. package/web-ui/build/static/erb-C49ui9JC.js.map +1 -0
  278. package/web-ui/build/static/erlang-8Oc_posq.js +2 -0
  279. package/web-ui/build/static/erlang-8Oc_posq.js.map +1 -0
  280. package/web-ui/build/static/erlang-BTxZnrYA.js +2 -0
  281. package/web-ui/build/static/erlang-BTxZnrYA.js.map +1 -0
  282. package/web-ui/build/static/erlang-repl-FGNp3d0b.js +2 -0
  283. package/web-ui/build/static/erlang-repl-FGNp3d0b.js.map +1 -0
  284. package/web-ui/build/static/etlua-CFV2Gt01.js +2 -0
  285. package/web-ui/build/static/etlua-CFV2Gt01.js.map +1 -0
  286. package/web-ui/build/static/excel-C5T0sWtc.js +2 -0
  287. package/web-ui/build/static/excel-C5T0sWtc.js.map +1 -0
  288. package/web-ui/build/static/excel-formula-swXK2BPf.js +2 -0
  289. package/web-ui/build/static/excel-formula-swXK2BPf.js.map +1 -0
  290. package/web-ui/build/static/factor-XG86-gN-.js +2 -0
  291. package/web-ui/build/static/factor-XG86-gN-.js.map +1 -0
  292. package/web-ui/build/static/false-DSdfWnu7.js +2 -0
  293. package/web-ui/build/static/false-DSdfWnu7.js.map +1 -0
  294. package/web-ui/build/static/firestore-security-rules-rVZ3h3VF.js +2 -0
  295. package/web-ui/build/static/firestore-security-rules-rVZ3h3VF.js.map +1 -0
  296. package/web-ui/build/static/fix-BKz0MMlw.js +2 -0
  297. package/web-ui/build/static/fix-BKz0MMlw.js.map +1 -0
  298. package/web-ui/build/static/flix-DU8tLvyP.js +2 -0
  299. package/web-ui/build/static/flix-DU8tLvyP.js.map +1 -0
  300. package/web-ui/build/static/flow-9WL_2haw.js +2 -0
  301. package/web-ui/build/static/flow-9WL_2haw.js.map +1 -0
  302. package/web-ui/build/static/fortran-CmIHCT2i.js +2 -0
  303. package/web-ui/build/static/fortran-CmIHCT2i.js.map +1 -0
  304. package/web-ui/build/static/fortran-DBSN6piG.js +2 -0
  305. package/web-ui/build/static/fortran-DBSN6piG.js.map +1 -0
  306. package/web-ui/build/static/fsharp-B6mAmH_v.js +2 -0
  307. package/web-ui/build/static/fsharp-B6mAmH_v.js.map +1 -0
  308. package/web-ui/build/static/fsharp-CLYqH-xB.js +2 -0
  309. package/web-ui/build/static/fsharp-CLYqH-xB.js.map +1 -0
  310. package/web-ui/build/static/ftl-Kith5OeU.js +2 -0
  311. package/web-ui/build/static/ftl-Kith5OeU.js.map +1 -0
  312. package/web-ui/build/static/gams-D14nNgA5.js +2 -0
  313. package/web-ui/build/static/gams-D14nNgA5.js.map +1 -0
  314. package/web-ui/build/static/gap-DqYCeaWC.js +2 -0
  315. package/web-ui/build/static/gap-DqYCeaWC.js.map +1 -0
  316. package/web-ui/build/static/gauss-eFMJSHE1.js +2 -0
  317. package/web-ui/build/static/gauss-eFMJSHE1.js.map +1 -0
  318. package/web-ui/build/static/gcode-B2wKChum.js +2 -0
  319. package/web-ui/build/static/gcode-B2wKChum.js.map +1 -0
  320. package/web-ui/build/static/gcode-CULHtzfp.js +2 -0
  321. package/web-ui/build/static/gcode-CULHtzfp.js.map +1 -0
  322. package/web-ui/build/static/gdscript-wjxRQVNL.js +2 -0
  323. package/web-ui/build/static/gdscript-wjxRQVNL.js.map +1 -0
  324. package/web-ui/build/static/gedcom-DHfj2Yhh.js +2 -0
  325. package/web-ui/build/static/gedcom-DHfj2Yhh.js.map +1 -0
  326. package/web-ui/build/static/gherkin-C5xa-07-.js +2 -0
  327. package/web-ui/build/static/gherkin-C5xa-07-.js.map +1 -0
  328. package/web-ui/build/static/gherkin-rOAeXEmD.js +2 -0
  329. package/web-ui/build/static/gherkin-rOAeXEmD.js.map +1 -0
  330. package/web-ui/build/static/git-CX0ue6vT.js +2 -0
  331. package/web-ui/build/static/git-CX0ue6vT.js.map +1 -0
  332. package/web-ui/build/static/glsl-BAQDFW3x.js +2 -0
  333. package/web-ui/build/static/glsl-BAQDFW3x.js.map +1 -0
  334. package/web-ui/build/static/glsl-JWB69kQ6.js +2 -0
  335. package/web-ui/build/static/glsl-JWB69kQ6.js.map +1 -0
  336. package/web-ui/build/static/gml-BIEE2AXy.js +2 -0
  337. package/web-ui/build/static/gml-BIEE2AXy.js.map +1 -0
  338. package/web-ui/build/static/gml-R-TyKkum.js +2 -0
  339. package/web-ui/build/static/gml-R-TyKkum.js.map +1 -0
  340. package/web-ui/build/static/gn-DvCeNq6O.js +2 -0
  341. package/web-ui/build/static/gn-DvCeNq6O.js.map +1 -0
  342. package/web-ui/build/static/go-BcwyZq_Z.js +2 -0
  343. package/web-ui/build/static/go-BcwyZq_Z.js.map +1 -0
  344. package/web-ui/build/static/go-Bqrl6_Nr.js +2 -0
  345. package/web-ui/build/static/go-Bqrl6_Nr.js.map +1 -0
  346. package/web-ui/build/static/go-module-DTJOy6SH.js +2 -0
  347. package/web-ui/build/static/go-module-DTJOy6SH.js.map +1 -0
  348. package/web-ui/build/static/golo-B3YIGSET.js +2 -0
  349. package/web-ui/build/static/golo-B3YIGSET.js.map +1 -0
  350. package/web-ui/build/static/gradle-DALIG7Ol.js +2 -0
  351. package/web-ui/build/static/gradle-DALIG7Ol.js.map +1 -0
  352. package/web-ui/build/static/graphql-L-x3rfO5.js +2 -0
  353. package/web-ui/build/static/graphql-L-x3rfO5.js.map +1 -0
  354. package/web-ui/build/static/groovy-Biuvy1Vz.js +2 -0
  355. package/web-ui/build/static/groovy-Biuvy1Vz.js.map +1 -0
  356. package/web-ui/build/static/groovy-CVYDFesd.js +2 -0
  357. package/web-ui/build/static/groovy-CVYDFesd.js.map +1 -0
  358. package/web-ui/build/static/haml-CF_I0x1i.js +2 -0
  359. package/web-ui/build/static/haml-CF_I0x1i.js.map +1 -0
  360. package/web-ui/build/static/haml-Co0andAF.js +2 -0
  361. package/web-ui/build/static/haml-Co0andAF.js.map +1 -0
  362. package/web-ui/build/static/handlebars-DIooiMTV.js +2 -0
  363. package/web-ui/build/static/handlebars-DIooiMTV.js.map +1 -0
  364. package/web-ui/build/static/handlebars-DusMr4Cj.js +2 -0
  365. package/web-ui/build/static/handlebars-DusMr4Cj.js.map +1 -0
  366. package/web-ui/build/static/haskell-BjesY4S8.js +2 -0
  367. package/web-ui/build/static/haskell-BjesY4S8.js.map +1 -0
  368. package/web-ui/build/static/haskell-Y9tE4HTL.js +2 -0
  369. package/web-ui/build/static/haskell-Y9tE4HTL.js.map +1 -0
  370. package/web-ui/build/static/haxe-B5lPh10V.js +2 -0
  371. package/web-ui/build/static/haxe-B5lPh10V.js.map +1 -0
  372. package/web-ui/build/static/haxe-BSNEgyTd.js +2 -0
  373. package/web-ui/build/static/haxe-BSNEgyTd.js.map +1 -0
  374. package/web-ui/build/static/hcl-DWmyS_4-.js +2 -0
  375. package/web-ui/build/static/hcl-DWmyS_4-.js.map +1 -0
  376. package/web-ui/build/static/hlsl-BDytwTH4.js +2 -0
  377. package/web-ui/build/static/hlsl-BDytwTH4.js.map +1 -0
  378. package/web-ui/build/static/hoon-DAUdgLIM.js +2 -0
  379. package/web-ui/build/static/hoon-DAUdgLIM.js.map +1 -0
  380. package/web-ui/build/static/hpkp-CKN-f5OJ.js +2 -0
  381. package/web-ui/build/static/hpkp-CKN-f5OJ.js.map +1 -0
  382. package/web-ui/build/static/hsp-CkMmRtfy.js +2 -0
  383. package/web-ui/build/static/hsp-CkMmRtfy.js.map +1 -0
  384. package/web-ui/build/static/hsts-6GhJtshn.js +2 -0
  385. package/web-ui/build/static/hsts-6GhJtshn.js.map +1 -0
  386. package/web-ui/build/static/htmlbars--_cU4sA5.js +2 -0
  387. package/web-ui/build/static/htmlbars--_cU4sA5.js.map +1 -0
  388. package/web-ui/build/static/http-Cd06ypNZ.js +2 -0
  389. package/web-ui/build/static/http-Cd06ypNZ.js.map +1 -0
  390. package/web-ui/build/static/http-DbS7a7Zl.js +2 -0
  391. package/web-ui/build/static/http-DbS7a7Zl.js.map +1 -0
  392. package/web-ui/build/static/hy-BGROogn1.js +2 -0
  393. package/web-ui/build/static/hy-BGROogn1.js.map +1 -0
  394. package/web-ui/build/static/ichigojam-2OYjFQiS.js +2 -0
  395. package/web-ui/build/static/ichigojam-2OYjFQiS.js.map +1 -0
  396. package/web-ui/build/static/icon-DjpbUq3m.js +2 -0
  397. package/web-ui/build/static/icon-DjpbUq3m.js.map +1 -0
  398. package/web-ui/build/static/icu-message-format-DIIdUGGF.js +2 -0
  399. package/web-ui/build/static/icu-message-format-DIIdUGGF.js.map +1 -0
  400. package/web-ui/build/static/idris-CufxOi6T.js +2 -0
  401. package/web-ui/build/static/idris-CufxOi6T.js.map +1 -0
  402. package/web-ui/build/static/iecst-Bzz0-xKo.js +2 -0
  403. package/web-ui/build/static/iecst-Bzz0-xKo.js.map +1 -0
  404. package/web-ui/build/static/ignore-CiksfOpf.js +2 -0
  405. package/web-ui/build/static/ignore-CiksfOpf.js.map +1 -0
  406. package/web-ui/build/static/index-BQAntXJF.js +2 -0
  407. package/web-ui/build/static/index-BQAntXJF.js.map +1 -0
  408. package/web-ui/build/static/index-BgQv5-Hn.js +14 -0
  409. package/web-ui/build/static/index-BgQv5-Hn.js.map +1 -0
  410. package/web-ui/build/static/index-CCCr_d0f.css +1 -0
  411. package/web-ui/build/static/index-D5ugcmb5.js +1248 -0
  412. package/web-ui/build/static/index-D5ugcmb5.js.map +1 -0
  413. package/web-ui/build/static/inform7-D6LpZ7lE.js +2 -0
  414. package/web-ui/build/static/inform7-D6LpZ7lE.js.map +1 -0
  415. package/web-ui/build/static/inform7-Do-8lYVu.js +2 -0
  416. package/web-ui/build/static/inform7-Do-8lYVu.js.map +1 -0
  417. package/web-ui/build/static/ini-CCNorX-E.js +2 -0
  418. package/web-ui/build/static/ini-CCNorX-E.js.map +1 -0
  419. package/web-ui/build/static/ini-DvrgsC8N.js +2 -0
  420. package/web-ui/build/static/ini-DvrgsC8N.js.map +1 -0
  421. package/web-ui/build/static/io-Ddnt_qNW.js +2 -0
  422. package/web-ui/build/static/io-Ddnt_qNW.js.map +1 -0
  423. package/web-ui/build/static/irpf90-Csv4v2bA.js +2 -0
  424. package/web-ui/build/static/irpf90-Csv4v2bA.js.map +1 -0
  425. package/web-ui/build/static/isbl-Byx0p48u.js +2 -0
  426. package/web-ui/build/static/isbl-Byx0p48u.js.map +1 -0
  427. package/web-ui/build/static/j-CRiCwZUs.js +2 -0
  428. package/web-ui/build/static/j-CRiCwZUs.js.map +1 -0
  429. package/web-ui/build/static/java-BmXK68iv.js +2 -0
  430. package/web-ui/build/static/java-BmXK68iv.js.map +1 -0
  431. package/web-ui/build/static/java-DTxQhvye.js +2 -0
  432. package/web-ui/build/static/java-DTxQhvye.js.map +1 -0
  433. package/web-ui/build/static/javadoc-B6n6kO5g.js +2 -0
  434. package/web-ui/build/static/javadoc-B6n6kO5g.js.map +1 -0
  435. package/web-ui/build/static/javadoclike-DYgq7Od-.js +2 -0
  436. package/web-ui/build/static/javadoclike-DYgq7Od-.js.map +1 -0
  437. package/web-ui/build/static/javascript-BISdfdMz.js +2 -0
  438. package/web-ui/build/static/javascript-BISdfdMz.js.map +1 -0
  439. package/web-ui/build/static/javascript-BNesm4q_.js +2 -0
  440. package/web-ui/build/static/javascript-BNesm4q_.js.map +1 -0
  441. package/web-ui/build/static/javastacktrace-Jmss7-Jp.js +2 -0
  442. package/web-ui/build/static/javastacktrace-Jmss7-Jp.js.map +1 -0
  443. package/web-ui/build/static/jboss-cli-DIgR_j87.js +2 -0
  444. package/web-ui/build/static/jboss-cli-DIgR_j87.js.map +1 -0
  445. package/web-ui/build/static/jexl-BGpIlSDC.js +2 -0
  446. package/web-ui/build/static/jexl-BGpIlSDC.js.map +1 -0
  447. package/web-ui/build/static/jolie-BqCG3sSM.js +2 -0
  448. package/web-ui/build/static/jolie-BqCG3sSM.js.map +1 -0
  449. package/web-ui/build/static/jq-DzRqbJit.js +2 -0
  450. package/web-ui/build/static/jq-DzRqbJit.js.map +1 -0
  451. package/web-ui/build/static/js-extras-BFFMtBVX.js +2 -0
  452. package/web-ui/build/static/js-extras-BFFMtBVX.js.map +1 -0
  453. package/web-ui/build/static/js-templates-CW6p3HmV.js +2 -0
  454. package/web-ui/build/static/js-templates-CW6p3HmV.js.map +1 -0
  455. package/web-ui/build/static/jsdoc-BWC96aSR.js +2 -0
  456. package/web-ui/build/static/jsdoc-BWC96aSR.js.map +1 -0
  457. package/web-ui/build/static/json-B4M2WnDO.js +2 -0
  458. package/web-ui/build/static/json-B4M2WnDO.js.map +1 -0
  459. package/web-ui/build/static/json-Ch4NUZe8.js +2 -0
  460. package/web-ui/build/static/json-Ch4NUZe8.js.map +1 -0
  461. package/web-ui/build/static/json5-bCxikHm2.js +2 -0
  462. package/web-ui/build/static/json5-bCxikHm2.js.map +1 -0
  463. package/web-ui/build/static/jsonp-DVdpfYIK.js +2 -0
  464. package/web-ui/build/static/jsonp-DVdpfYIK.js.map +1 -0
  465. package/web-ui/build/static/jsstacktrace-DR5KzGe0.js +2 -0
  466. package/web-ui/build/static/jsstacktrace-DR5KzGe0.js.map +1 -0
  467. package/web-ui/build/static/jsx-D8q1PuFc.js +2 -0
  468. package/web-ui/build/static/jsx-D8q1PuFc.js.map +1 -0
  469. package/web-ui/build/static/julia-DJJEoguR.js +2 -0
  470. package/web-ui/build/static/julia-DJJEoguR.js.map +1 -0
  471. package/web-ui/build/static/julia-mBN_67OP.js +2 -0
  472. package/web-ui/build/static/julia-mBN_67OP.js.map +1 -0
  473. package/web-ui/build/static/julia-repl-DwdKlYhj.js +2 -0
  474. package/web-ui/build/static/julia-repl-DwdKlYhj.js.map +1 -0
  475. package/web-ui/build/static/keepalived-Dw-vPNgL.js +2 -0
  476. package/web-ui/build/static/keepalived-Dw-vPNgL.js.map +1 -0
  477. package/web-ui/build/static/keyman-BmDY1uRU.js +2 -0
  478. package/web-ui/build/static/keyman-BmDY1uRU.js.map +1 -0
  479. package/web-ui/build/static/kotlin-CUtf95S8.js +2 -0
  480. package/web-ui/build/static/kotlin-CUtf95S8.js.map +1 -0
  481. package/web-ui/build/static/kotlin-CyRSNOd8.js +2 -0
  482. package/web-ui/build/static/kotlin-CyRSNOd8.js.map +1 -0
  483. package/web-ui/build/static/kumir-C6_kzmuO.js +2 -0
  484. package/web-ui/build/static/kumir-C6_kzmuO.js.map +1 -0
  485. package/web-ui/build/static/kusto-BoqnvnbI.js +2 -0
  486. package/web-ui/build/static/kusto-BoqnvnbI.js.map +1 -0
  487. package/web-ui/build/static/lasso-iNneKikw.js +2 -0
  488. package/web-ui/build/static/lasso-iNneKikw.js.map +1 -0
  489. package/web-ui/build/static/latex-BsJtzR4W.js +2 -0
  490. package/web-ui/build/static/latex-BsJtzR4W.js.map +1 -0
  491. package/web-ui/build/static/latex-Cu9pgsYh.js +2 -0
  492. package/web-ui/build/static/latex-Cu9pgsYh.js.map +1 -0
  493. package/web-ui/build/static/latte-3jRNYBU_.js +2 -0
  494. package/web-ui/build/static/latte-3jRNYBU_.js.map +1 -0
  495. package/web-ui/build/static/ldif-C62SsRCh.js +2 -0
  496. package/web-ui/build/static/ldif-C62SsRCh.js.map +1 -0
  497. package/web-ui/build/static/leaf-YuUFYZ_Y.js +2 -0
  498. package/web-ui/build/static/leaf-YuUFYZ_Y.js.map +1 -0
  499. package/web-ui/build/static/less-AhOWxX7J.js +2 -0
  500. package/web-ui/build/static/less-AhOWxX7J.js.map +1 -0
  501. package/web-ui/build/static/less-Ca57XOuv.js +2 -0
  502. package/web-ui/build/static/less-Ca57XOuv.js.map +1 -0
  503. package/web-ui/build/static/lilypond-CfSn32tl.js +2 -0
  504. package/web-ui/build/static/lilypond-CfSn32tl.js.map +1 -0
  505. package/web-ui/build/static/liquid-DX2GSNaQ.js +2 -0
  506. package/web-ui/build/static/liquid-DX2GSNaQ.js.map +1 -0
  507. package/web-ui/build/static/lisp-Bvl5KmK7.js +2 -0
  508. package/web-ui/build/static/lisp-Bvl5KmK7.js.map +1 -0
  509. package/web-ui/build/static/lisp-b_COUjwz.js +2 -0
  510. package/web-ui/build/static/lisp-b_COUjwz.js.map +1 -0
  511. package/web-ui/build/static/livecodeserver-dXX3Zaub.js +2 -0
  512. package/web-ui/build/static/livecodeserver-dXX3Zaub.js.map +1 -0
  513. package/web-ui/build/static/livescript-COMCpmT9.js +2 -0
  514. package/web-ui/build/static/livescript-COMCpmT9.js.map +1 -0
  515. package/web-ui/build/static/livescript-_MhbBkMD.js +2 -0
  516. package/web-ui/build/static/livescript-_MhbBkMD.js.map +1 -0
  517. package/web-ui/build/static/llvm-BDz4IQfG.js +2 -0
  518. package/web-ui/build/static/llvm-BDz4IQfG.js.map +1 -0
  519. package/web-ui/build/static/llvm-BFO-HcaY.js +2 -0
  520. package/web-ui/build/static/llvm-BFO-HcaY.js.map +1 -0
  521. package/web-ui/build/static/log-BWVcfDKV.js +2 -0
  522. package/web-ui/build/static/log-BWVcfDKV.js.map +1 -0
  523. package/web-ui/build/static/lolcode-B150q7Ui.js +2 -0
  524. package/web-ui/build/static/lolcode-B150q7Ui.js.map +1 -0
  525. package/web-ui/build/static/lsl-W1F82LTx.js +2 -0
  526. package/web-ui/build/static/lsl-W1F82LTx.js.map +1 -0
  527. package/web-ui/build/static/lua-BvQQKvlP.js +2 -0
  528. package/web-ui/build/static/lua-BvQQKvlP.js.map +1 -0
  529. package/web-ui/build/static/lua-CPE1ASsG.js +2 -0
  530. package/web-ui/build/static/lua-CPE1ASsG.js.map +1 -0
  531. package/web-ui/build/static/magma-ITVf3BuS.js +2 -0
  532. package/web-ui/build/static/magma-ITVf3BuS.js.map +1 -0
  533. package/web-ui/build/static/makefile-Do3NFtKn.js +2 -0
  534. package/web-ui/build/static/makefile-Do3NFtKn.js.map +1 -0
  535. package/web-ui/build/static/makefile-EcFw7iz0.js +2 -0
  536. package/web-ui/build/static/makefile-EcFw7iz0.js.map +1 -0
  537. package/web-ui/build/static/markdown-CeGbnWgo.js +2 -0
  538. package/web-ui/build/static/markdown-CeGbnWgo.js.map +1 -0
  539. package/web-ui/build/static/markdown-XcbS_gWU.js +2 -0
  540. package/web-ui/build/static/markdown-XcbS_gWU.js.map +1 -0
  541. package/web-ui/build/static/markup-B_roFIGu.js +2 -0
  542. package/web-ui/build/static/markup-B_roFIGu.js.map +1 -0
  543. package/web-ui/build/static/markup-templating-C8LRboVy.js +2 -0
  544. package/web-ui/build/static/markup-templating-C8LRboVy.js.map +1 -0
  545. package/web-ui/build/static/mathematica-CFS7SDK4.js +2 -0
  546. package/web-ui/build/static/mathematica-CFS7SDK4.js.map +1 -0
  547. package/web-ui/build/static/matlab-DsBugpAw.js +2 -0
  548. package/web-ui/build/static/matlab-DsBugpAw.js.map +1 -0
  549. package/web-ui/build/static/matlab-yJ_LaS4Q.js +2 -0
  550. package/web-ui/build/static/matlab-yJ_LaS4Q.js.map +1 -0
  551. package/web-ui/build/static/maxima-BRK37G87.js +2 -0
  552. package/web-ui/build/static/maxima-BRK37G87.js.map +1 -0
  553. package/web-ui/build/static/maxscript-Cd6nqcBu.js +2 -0
  554. package/web-ui/build/static/maxscript-Cd6nqcBu.js.map +1 -0
  555. package/web-ui/build/static/mel-Cczx8-jp.js +2 -0
  556. package/web-ui/build/static/mel-Cczx8-jp.js.map +1 -0
  557. package/web-ui/build/static/mel-DvZHieYd.js +2 -0
  558. package/web-ui/build/static/mel-DvZHieYd.js.map +1 -0
  559. package/web-ui/build/static/mercury-PVFovfbN.js +2 -0
  560. package/web-ui/build/static/mercury-PVFovfbN.js.map +1 -0
  561. package/web-ui/build/static/mermaid-Dvx1Z2cE.js +2 -0
  562. package/web-ui/build/static/mermaid-Dvx1Z2cE.js.map +1 -0
  563. package/web-ui/build/static/mipsasm-G0a66_ng.js +2 -0
  564. package/web-ui/build/static/mipsasm-G0a66_ng.js.map +1 -0
  565. package/web-ui/build/static/mizar-B7o3mTTL.js +2 -0
  566. package/web-ui/build/static/mizar-B7o3mTTL.js.map +1 -0
  567. package/web-ui/build/static/mizar-CCdKF9iB.js +2 -0
  568. package/web-ui/build/static/mizar-CCdKF9iB.js.map +1 -0
  569. package/web-ui/build/static/mojolicious-C4IIHwzD.js +2 -0
  570. package/web-ui/build/static/mojolicious-C4IIHwzD.js.map +1 -0
  571. package/web-ui/build/static/mongodb-6iYMe00x.js +2 -0
  572. package/web-ui/build/static/mongodb-6iYMe00x.js.map +1 -0
  573. package/web-ui/build/static/monkey-Bxz4YgDv.js +2 -0
  574. package/web-ui/build/static/monkey-Bxz4YgDv.js.map +1 -0
  575. package/web-ui/build/static/monkey-Cvb5MG-q.js +2 -0
  576. package/web-ui/build/static/monkey-Cvb5MG-q.js.map +1 -0
  577. package/web-ui/build/static/moonscript-BK0S_FN6.js +2 -0
  578. package/web-ui/build/static/moonscript-BK0S_FN6.js.map +1 -0
  579. package/web-ui/build/static/moonscript-Fc58lPGo.js +2 -0
  580. package/web-ui/build/static/moonscript-Fc58lPGo.js.map +1 -0
  581. package/web-ui/build/static/n1ql-CCufOaup.js +2 -0
  582. package/web-ui/build/static/n1ql-CCufOaup.js.map +1 -0
  583. package/web-ui/build/static/n1ql-DDbfYQBb.js +2 -0
  584. package/web-ui/build/static/n1ql-DDbfYQBb.js.map +1 -0
  585. package/web-ui/build/static/n4js-BTyVHeS5.js +2 -0
  586. package/web-ui/build/static/n4js-BTyVHeS5.js.map +1 -0
  587. package/web-ui/build/static/nand2tetris-hdl-CUG9t2nl.js +2 -0
  588. package/web-ui/build/static/nand2tetris-hdl-CUG9t2nl.js.map +1 -0
  589. package/web-ui/build/static/naniscript-DYQq4RIY.js +2 -0
  590. package/web-ui/build/static/naniscript-DYQq4RIY.js.map +1 -0
  591. package/web-ui/build/static/nasm-TXlsYTDL.js +2 -0
  592. package/web-ui/build/static/nasm-TXlsYTDL.js.map +1 -0
  593. package/web-ui/build/static/neon-C44UExvL.js +2 -0
  594. package/web-ui/build/static/neon-C44UExvL.js.map +1 -0
  595. package/web-ui/build/static/nevod-CbW6YpB6.js +2 -0
  596. package/web-ui/build/static/nevod-CbW6YpB6.js.map +1 -0
  597. package/web-ui/build/static/nginx-B-WcwUk9.js +2 -0
  598. package/web-ui/build/static/nginx-B-WcwUk9.js.map +1 -0
  599. package/web-ui/build/static/nginx-FL8KpWNl.js +2 -0
  600. package/web-ui/build/static/nginx-FL8KpWNl.js.map +1 -0
  601. package/web-ui/build/static/nim-BESPqGnO.js +2 -0
  602. package/web-ui/build/static/nim-BESPqGnO.js.map +1 -0
  603. package/web-ui/build/static/nim-CXrKNXpK.js +2 -0
  604. package/web-ui/build/static/nim-CXrKNXpK.js.map +1 -0
  605. package/web-ui/build/static/nix-DUIo7soq.js +2 -0
  606. package/web-ui/build/static/nix-DUIo7soq.js.map +1 -0
  607. package/web-ui/build/static/nix-Dq76i_Rj.js +2 -0
  608. package/web-ui/build/static/nix-Dq76i_Rj.js.map +1 -0
  609. package/web-ui/build/static/node-repl-C8FXbfnh.js +2 -0
  610. package/web-ui/build/static/node-repl-C8FXbfnh.js.map +1 -0
  611. package/web-ui/build/static/nsis-DcVaR5Vz.js +2 -0
  612. package/web-ui/build/static/nsis-DcVaR5Vz.js.map +1 -0
  613. package/web-ui/build/static/nsis-TB_5wkC7.js +2 -0
  614. package/web-ui/build/static/nsis-TB_5wkC7.js.map +1 -0
  615. package/web-ui/build/static/objectivec-2qchzn11.js +2 -0
  616. package/web-ui/build/static/objectivec-2qchzn11.js.map +1 -0
  617. package/web-ui/build/static/objectivec-DP4o9Uvc.js +2 -0
  618. package/web-ui/build/static/objectivec-DP4o9Uvc.js.map +1 -0
  619. package/web-ui/build/static/ocaml-CiRyU5jn.js +2 -0
  620. package/web-ui/build/static/ocaml-CiRyU5jn.js.map +1 -0
  621. package/web-ui/build/static/ocaml-DgN6E57a.js +2 -0
  622. package/web-ui/build/static/ocaml-DgN6E57a.js.map +1 -0
  623. package/web-ui/build/static/opencl-eY70UBI7.js +2 -0
  624. package/web-ui/build/static/opencl-eY70UBI7.js.map +1 -0
  625. package/web-ui/build/static/openqasm-Bk28CBDT.js +2 -0
  626. package/web-ui/build/static/openqasm-Bk28CBDT.js.map +1 -0
  627. package/web-ui/build/static/openscad-OfkF843O.js +2 -0
  628. package/web-ui/build/static/openscad-OfkF843O.js.map +1 -0
  629. package/web-ui/build/static/oxygene-wnvEKOzJ.js +2 -0
  630. package/web-ui/build/static/oxygene-wnvEKOzJ.js.map +1 -0
  631. package/web-ui/build/static/oz-DlYAWDhm.js +2 -0
  632. package/web-ui/build/static/oz-DlYAWDhm.js.map +1 -0
  633. package/web-ui/build/static/parigp-U_4PDMXT.js +2 -0
  634. package/web-ui/build/static/parigp-U_4PDMXT.js.map +1 -0
  635. package/web-ui/build/static/parser--BaEloX5.js +2 -0
  636. package/web-ui/build/static/parser--BaEloX5.js.map +1 -0
  637. package/web-ui/build/static/parser3-CLZcUmTq.js +2 -0
  638. package/web-ui/build/static/parser3-CLZcUmTq.js.map +1 -0
  639. package/web-ui/build/static/pascal-D3T7YTlQ.js +2 -0
  640. package/web-ui/build/static/pascal-D3T7YTlQ.js.map +1 -0
  641. package/web-ui/build/static/pascaligo-DfBzFX3Y.js +2 -0
  642. package/web-ui/build/static/pascaligo-DfBzFX3Y.js.map +1 -0
  643. package/web-ui/build/static/pcaxis-CyUnaR0R.js +2 -0
  644. package/web-ui/build/static/pcaxis-CyUnaR0R.js.map +1 -0
  645. package/web-ui/build/static/peoplecode-Bl5p3kWs.js +2 -0
  646. package/web-ui/build/static/peoplecode-Bl5p3kWs.js.map +1 -0
  647. package/web-ui/build/static/perl-CkeZd6VG.js +2 -0
  648. package/web-ui/build/static/perl-CkeZd6VG.js.map +1 -0
  649. package/web-ui/build/static/perl-ULXfDE4s.js +2 -0
  650. package/web-ui/build/static/perl-ULXfDE4s.js.map +1 -0
  651. package/web-ui/build/static/pf-D2ycdkSQ.js +2 -0
  652. package/web-ui/build/static/pf-D2ycdkSQ.js.map +1 -0
  653. package/web-ui/build/static/pgsql-BhszDLl9.js +2 -0
  654. package/web-ui/build/static/pgsql-BhszDLl9.js.map +1 -0
  655. package/web-ui/build/static/php-Bev1IW5H.js +2 -0
  656. package/web-ui/build/static/php-Bev1IW5H.js.map +1 -0
  657. package/web-ui/build/static/php-G4XPd9mx.js +2 -0
  658. package/web-ui/build/static/php-G4XPd9mx.js.map +1 -0
  659. package/web-ui/build/static/php-extras-CQ-sY0Od.js +2 -0
  660. package/web-ui/build/static/php-extras-CQ-sY0Od.js.map +1 -0
  661. package/web-ui/build/static/php-template-Dl0MP_2D.js +2 -0
  662. package/web-ui/build/static/php-template-Dl0MP_2D.js.map +1 -0
  663. package/web-ui/build/static/phpdoc-BWX2_St1.js +2 -0
  664. package/web-ui/build/static/phpdoc-BWX2_St1.js.map +1 -0
  665. package/web-ui/build/static/plaintext-CeNQSMAP.js +2 -0
  666. package/web-ui/build/static/plaintext-CeNQSMAP.js.map +1 -0
  667. package/web-ui/build/static/plsql-CDA3CoQ6.js +2 -0
  668. package/web-ui/build/static/plsql-CDA3CoQ6.js.map +1 -0
  669. package/web-ui/build/static/pony-BAxRxKsI.js +2 -0
  670. package/web-ui/build/static/pony-BAxRxKsI.js.map +1 -0
  671. package/web-ui/build/static/powerquery-B95C1DbZ.js +2 -0
  672. package/web-ui/build/static/powerquery-B95C1DbZ.js.map +1 -0
  673. package/web-ui/build/static/powershell-BDHn6J9Z.js +2 -0
  674. package/web-ui/build/static/powershell-BDHn6J9Z.js.map +1 -0
  675. package/web-ui/build/static/powershell-BZ4akwI6.js +2 -0
  676. package/web-ui/build/static/powershell-BZ4akwI6.js.map +1 -0
  677. package/web-ui/build/static/processing-B6XQgymM.js +2 -0
  678. package/web-ui/build/static/processing-B6XQgymM.js.map +1 -0
  679. package/web-ui/build/static/processing-CCV1ixNi.js +2 -0
  680. package/web-ui/build/static/processing-CCV1ixNi.js.map +1 -0
  681. package/web-ui/build/static/profile-DloRsKsX.js +2 -0
  682. package/web-ui/build/static/profile-DloRsKsX.js.map +1 -0
  683. package/web-ui/build/static/prolog-Co2gl0Kf.js +2 -0
  684. package/web-ui/build/static/prolog-Co2gl0Kf.js.map +1 -0
  685. package/web-ui/build/static/prolog-DWWO0_S-.js +2 -0
  686. package/web-ui/build/static/prolog-DWWO0_S-.js.map +1 -0
  687. package/web-ui/build/static/promql-CvmcR8o3.js +2 -0
  688. package/web-ui/build/static/promql-CvmcR8o3.js.map +1 -0
  689. package/web-ui/build/static/properties-B-XQdbQX.js +2 -0
  690. package/web-ui/build/static/properties-B-XQdbQX.js.map +1 -0
  691. package/web-ui/build/static/properties-DkMY-9_F.js +2 -0
  692. package/web-ui/build/static/properties-DkMY-9_F.js.map +1 -0
  693. package/web-ui/build/static/protobuf-C0H2-mi1.js +2 -0
  694. package/web-ui/build/static/protobuf-C0H2-mi1.js.map +1 -0
  695. package/web-ui/build/static/protobuf-DqhHcEu6.js +2 -0
  696. package/web-ui/build/static/protobuf-DqhHcEu6.js.map +1 -0
  697. package/web-ui/build/static/psl-Cz0o9I-V.js +2 -0
  698. package/web-ui/build/static/psl-Cz0o9I-V.js.map +1 -0
  699. package/web-ui/build/static/pug-DIHiRrf1.js +2 -0
  700. package/web-ui/build/static/pug-DIHiRrf1.js.map +1 -0
  701. package/web-ui/build/static/puppet-B0e8ctC_.js +2 -0
  702. package/web-ui/build/static/puppet-B0e8ctC_.js.map +1 -0
  703. package/web-ui/build/static/puppet-DdjWZAm-.js +2 -0
  704. package/web-ui/build/static/puppet-DdjWZAm-.js.map +1 -0
  705. package/web-ui/build/static/pure-CKtx6EPY.js +2 -0
  706. package/web-ui/build/static/pure-CKtx6EPY.js.map +1 -0
  707. package/web-ui/build/static/purebasic-B-2KmM6W.js +2 -0
  708. package/web-ui/build/static/purebasic-B-2KmM6W.js.map +1 -0
  709. package/web-ui/build/static/purebasic-D9yiPcnZ.js +2 -0
  710. package/web-ui/build/static/purebasic-D9yiPcnZ.js.map +1 -0
  711. package/web-ui/build/static/purescript-_Q0ZJcFh.js +2 -0
  712. package/web-ui/build/static/purescript-_Q0ZJcFh.js.map +1 -0
  713. package/web-ui/build/static/python-CgGLjZvM.js +2 -0
  714. package/web-ui/build/static/python-CgGLjZvM.js.map +1 -0
  715. package/web-ui/build/static/python-DfjWG5J7.js +2 -0
  716. package/web-ui/build/static/python-DfjWG5J7.js.map +1 -0
  717. package/web-ui/build/static/python-repl-o_E_aQMG.js +2 -0
  718. package/web-ui/build/static/python-repl-o_E_aQMG.js.map +1 -0
  719. package/web-ui/build/static/q-Cy23y7AY.js +2 -0
  720. package/web-ui/build/static/q-Cy23y7AY.js.map +1 -0
  721. package/web-ui/build/static/q-XnQKs4bt.js +2 -0
  722. package/web-ui/build/static/q-XnQKs4bt.js.map +1 -0
  723. package/web-ui/build/static/qml-CPi59sFZ.js +2 -0
  724. package/web-ui/build/static/qml-CPi59sFZ.js.map +1 -0
  725. package/web-ui/build/static/qml-CljXiplm.js +2 -0
  726. package/web-ui/build/static/qml-CljXiplm.js.map +1 -0
  727. package/web-ui/build/static/qore-DU5SoQ72.js +2 -0
  728. package/web-ui/build/static/qore-DU5SoQ72.js.map +1 -0
  729. package/web-ui/build/static/qsharp-DwWzzu1O.js +2 -0
  730. package/web-ui/build/static/qsharp-DwWzzu1O.js.map +1 -0
  731. package/web-ui/build/static/r-BGO0k6Y4.js +2 -0
  732. package/web-ui/build/static/r-BGO0k6Y4.js.map +1 -0
  733. package/web-ui/build/static/r-BJCbn9Dr.js +2 -0
  734. package/web-ui/build/static/r-BJCbn9Dr.js.map +1 -0
  735. package/web-ui/build/static/racket-uDAOE5w4.js +2 -0
  736. package/web-ui/build/static/racket-uDAOE5w4.js.map +1 -0
  737. package/web-ui/build/static/reason-CA7CNw_n.js +2 -0
  738. package/web-ui/build/static/reason-CA7CNw_n.js.map +1 -0
  739. package/web-ui/build/static/reasonml-CPqQFBp7.js +2 -0
  740. package/web-ui/build/static/reasonml-CPqQFBp7.js.map +1 -0
  741. package/web-ui/build/static/regex-CnOSJxGd.js +2 -0
  742. package/web-ui/build/static/regex-CnOSJxGd.js.map +1 -0
  743. package/web-ui/build/static/rego-BSO05hK4.js +2 -0
  744. package/web-ui/build/static/rego-BSO05hK4.js.map +1 -0
  745. package/web-ui/build/static/renpy-CDvBeeNf.js +2 -0
  746. package/web-ui/build/static/renpy-CDvBeeNf.js.map +1 -0
  747. package/web-ui/build/static/rest-J6huFzRi.js +2 -0
  748. package/web-ui/build/static/rest-J6huFzRi.js.map +1 -0
  749. package/web-ui/build/static/rib-DmR0f6vQ.js +2 -0
  750. package/web-ui/build/static/rib-DmR0f6vQ.js.map +1 -0
  751. package/web-ui/build/static/rip-DrDBCpaL.js +2 -0
  752. package/web-ui/build/static/rip-DrDBCpaL.js.map +1 -0
  753. package/web-ui/build/static/roboconf-CQD51i0x.js +2 -0
  754. package/web-ui/build/static/roboconf-CQD51i0x.js.map +1 -0
  755. package/web-ui/build/static/roboconf-chngJ7Vd.js +2 -0
  756. package/web-ui/build/static/roboconf-chngJ7Vd.js.map +1 -0
  757. package/web-ui/build/static/robotframework-2AhLvy35.js +2 -0
  758. package/web-ui/build/static/robotframework-2AhLvy35.js.map +1 -0
  759. package/web-ui/build/static/routeros-C0X95Tg2.js +2 -0
  760. package/web-ui/build/static/routeros-C0X95Tg2.js.map +1 -0
  761. package/web-ui/build/static/rsl-1_6GKIzS.js +2 -0
  762. package/web-ui/build/static/rsl-1_6GKIzS.js.map +1 -0
  763. package/web-ui/build/static/ruby-DHpb1yCB.js +2 -0
  764. package/web-ui/build/static/ruby-DHpb1yCB.js.map +1 -0
  765. package/web-ui/build/static/ruby-DWauBk1Z.js +2 -0
  766. package/web-ui/build/static/ruby-DWauBk1Z.js.map +1 -0
  767. package/web-ui/build/static/ruleslanguage-BQjOB3-9.js +2 -0
  768. package/web-ui/build/static/ruleslanguage-BQjOB3-9.js.map +1 -0
  769. package/web-ui/build/static/rust-BJY4j6lu.js +2 -0
  770. package/web-ui/build/static/rust-BJY4j6lu.js.map +1 -0
  771. package/web-ui/build/static/rust-JiA4Heqp.js +2 -0
  772. package/web-ui/build/static/rust-JiA4Heqp.js.map +1 -0
  773. package/web-ui/build/static/sas-CKLrpkcA.js +2 -0
  774. package/web-ui/build/static/sas-CKLrpkcA.js.map +1 -0
  775. package/web-ui/build/static/sas-VO_iV9U9.js +2 -0
  776. package/web-ui/build/static/sas-VO_iV9U9.js.map +1 -0
  777. package/web-ui/build/static/sass-DLmKaHQQ.js +2 -0
  778. package/web-ui/build/static/sass-DLmKaHQQ.js.map +1 -0
  779. package/web-ui/build/static/scala-D6iW3LCk.js +2 -0
  780. package/web-ui/build/static/scala-D6iW3LCk.js.map +1 -0
  781. package/web-ui/build/static/scala-vkQyExho.js +2 -0
  782. package/web-ui/build/static/scala-vkQyExho.js.map +1 -0
  783. package/web-ui/build/static/scheme-DSVpMhbK.js +2 -0
  784. package/web-ui/build/static/scheme-DSVpMhbK.js.map +1 -0
  785. package/web-ui/build/static/scheme-oEMnyOUt.js +2 -0
  786. package/web-ui/build/static/scheme-oEMnyOUt.js.map +1 -0
  787. package/web-ui/build/static/scilab-Cw1m9Kbg.js +2 -0
  788. package/web-ui/build/static/scilab-Cw1m9Kbg.js.map +1 -0
  789. package/web-ui/build/static/scss-C-L1dZoV.js +2 -0
  790. package/web-ui/build/static/scss-C-L1dZoV.js.map +1 -0
  791. package/web-ui/build/static/scss-DLdZ9bRM.js +2 -0
  792. package/web-ui/build/static/scss-DLdZ9bRM.js.map +1 -0
  793. package/web-ui/build/static/shell-CAN26sBv.js +2 -0
  794. package/web-ui/build/static/shell-CAN26sBv.js.map +1 -0
  795. package/web-ui/build/static/shell-session-DYD4cDd6.js +2 -0
  796. package/web-ui/build/static/shell-session-DYD4cDd6.js.map +1 -0
  797. package/web-ui/build/static/smali-DKHaua45.js +2 -0
  798. package/web-ui/build/static/smali-DKHaua45.js.map +1 -0
  799. package/web-ui/build/static/smali-icK32SOD.js +2 -0
  800. package/web-ui/build/static/smali-icK32SOD.js.map +1 -0
  801. package/web-ui/build/static/smalltalk-ByHICJ-Z.js +2 -0
  802. package/web-ui/build/static/smalltalk-ByHICJ-Z.js.map +1 -0
  803. package/web-ui/build/static/smalltalk-DL-EnGAz.js +2 -0
  804. package/web-ui/build/static/smalltalk-DL-EnGAz.js.map +1 -0
  805. package/web-ui/build/static/smarty-C5fScfRP.js +2 -0
  806. package/web-ui/build/static/smarty-C5fScfRP.js.map +1 -0
  807. package/web-ui/build/static/sml-Bm4wfldo.js +2 -0
  808. package/web-ui/build/static/sml-Bm4wfldo.js.map +1 -0
  809. package/web-ui/build/static/sml-DM7FU55N.js +2 -0
  810. package/web-ui/build/static/sml-DM7FU55N.js.map +1 -0
  811. package/web-ui/build/static/solidity-B7vBLP6P.js +2 -0
  812. package/web-ui/build/static/solidity-B7vBLP6P.js.map +1 -0
  813. package/web-ui/build/static/solution-file-fhzlzcZS.js +2 -0
  814. package/web-ui/build/static/solution-file-fhzlzcZS.js.map +1 -0
  815. package/web-ui/build/static/soy-CPUannHv.js +2 -0
  816. package/web-ui/build/static/soy-CPUannHv.js.map +1 -0
  817. package/web-ui/build/static/sparql-DOmi19y4.js +2 -0
  818. package/web-ui/build/static/sparql-DOmi19y4.js.map +1 -0
  819. package/web-ui/build/static/splunk-spl-C49-4Lfq.js +2 -0
  820. package/web-ui/build/static/splunk-spl-C49-4Lfq.js.map +1 -0
  821. package/web-ui/build/static/sqf-CD1cfTiH.js +2 -0
  822. package/web-ui/build/static/sqf-CD1cfTiH.js.map +1 -0
  823. package/web-ui/build/static/sqf-b0LOTM9s.js +2 -0
  824. package/web-ui/build/static/sqf-b0LOTM9s.js.map +1 -0
  825. package/web-ui/build/static/sql-3GLk4w_c.js +2 -0
  826. package/web-ui/build/static/sql-3GLk4w_c.js.map +1 -0
  827. package/web-ui/build/static/sql-iBNfHc66.js +2 -0
  828. package/web-ui/build/static/sql-iBNfHc66.js.map +1 -0
  829. package/web-ui/build/static/sql_more-DoLzbBom.js +2 -0
  830. package/web-ui/build/static/sql_more-DoLzbBom.js.map +1 -0
  831. package/web-ui/build/static/squirrel-ChXprAik.js +2 -0
  832. package/web-ui/build/static/squirrel-ChXprAik.js.map +1 -0
  833. package/web-ui/build/static/stan-CrKx7TNB.js +2 -0
  834. package/web-ui/build/static/stan-CrKx7TNB.js.map +1 -0
  835. package/web-ui/build/static/stan-akfM3H5d.js +2 -0
  836. package/web-ui/build/static/stan-akfM3H5d.js.map +1 -0
  837. package/web-ui/build/static/stata-Db4ctJBA.js +2 -0
  838. package/web-ui/build/static/stata-Db4ctJBA.js.map +1 -0
  839. package/web-ui/build/static/step21-BWyIaCbq.js +2 -0
  840. package/web-ui/build/static/step21-BWyIaCbq.js.map +1 -0
  841. package/web-ui/build/static/stylus-BpN2aRUG.js +2 -0
  842. package/web-ui/build/static/stylus-BpN2aRUG.js.map +1 -0
  843. package/web-ui/build/static/stylus-Drrp8fJc.js +2 -0
  844. package/web-ui/build/static/stylus-Drrp8fJc.js.map +1 -0
  845. package/web-ui/build/static/subunit-DpPkQJGY.js +2 -0
  846. package/web-ui/build/static/subunit-DpPkQJGY.js.map +1 -0
  847. package/web-ui/build/static/swift-0EmzPfHM.js +2 -0
  848. package/web-ui/build/static/swift-0EmzPfHM.js.map +1 -0
  849. package/web-ui/build/static/swift-C0R-iZWY.js +2 -0
  850. package/web-ui/build/static/swift-C0R-iZWY.js.map +1 -0
  851. package/web-ui/build/static/systemd-DQR4CRn2.js +2 -0
  852. package/web-ui/build/static/systemd-DQR4CRn2.js.map +1 -0
  853. package/web-ui/build/static/t4-cs-DSw_2bDr.js +2 -0
  854. package/web-ui/build/static/t4-cs-DSw_2bDr.js.map +1 -0
  855. package/web-ui/build/static/t4-templating-CSL7XeS1.js +2 -0
  856. package/web-ui/build/static/t4-templating-CSL7XeS1.js.map +1 -0
  857. package/web-ui/build/static/t4-vb-CGmGT7sO.js +2 -0
  858. package/web-ui/build/static/t4-vb-CGmGT7sO.js.map +1 -0
  859. package/web-ui/build/static/taggerscript-Yq33qaOj.js +2 -0
  860. package/web-ui/build/static/taggerscript-Yq33qaOj.js.map +1 -0
  861. package/web-ui/build/static/tap-5T3Cz_2L.js +2 -0
  862. package/web-ui/build/static/tap-5T3Cz_2L.js.map +1 -0
  863. package/web-ui/build/static/tap-DFJJMCS9.js +2 -0
  864. package/web-ui/build/static/tap-DFJJMCS9.js.map +1 -0
  865. package/web-ui/build/static/tcl-BZlNuD5u.js +2 -0
  866. package/web-ui/build/static/tcl-BZlNuD5u.js.map +1 -0
  867. package/web-ui/build/static/tcl-IwO_ZYwX.js +2 -0
  868. package/web-ui/build/static/tcl-IwO_ZYwX.js.map +1 -0
  869. package/web-ui/build/static/textile-BqIBd_1u.js +2 -0
  870. package/web-ui/build/static/textile-BqIBd_1u.js.map +1 -0
  871. package/web-ui/build/static/thrift-CAQwolB9.js +2 -0
  872. package/web-ui/build/static/thrift-CAQwolB9.js.map +1 -0
  873. package/web-ui/build/static/toml-wlKg8_A9.js +2 -0
  874. package/web-ui/build/static/toml-wlKg8_A9.js.map +1 -0
  875. package/web-ui/build/static/tp-DM1XOOzw.js +2 -0
  876. package/web-ui/build/static/tp-DM1XOOzw.js.map +1 -0
  877. package/web-ui/build/static/tremor-Bh-vCtDT.js +2 -0
  878. package/web-ui/build/static/tremor-Bh-vCtDT.js.map +1 -0
  879. package/web-ui/build/static/tsx-DDAUIjG-.js +2 -0
  880. package/web-ui/build/static/tsx-DDAUIjG-.js.map +1 -0
  881. package/web-ui/build/static/tt2-kddCfAun.js +2 -0
  882. package/web-ui/build/static/tt2-kddCfAun.js.map +1 -0
  883. package/web-ui/build/static/turtle-GapbSLtn.js +2 -0
  884. package/web-ui/build/static/turtle-GapbSLtn.js.map +1 -0
  885. package/web-ui/build/static/twig-BCIBPYkG.js +2 -0
  886. package/web-ui/build/static/twig-BCIBPYkG.js.map +1 -0
  887. package/web-ui/build/static/twig-CTILQm2N.js +2 -0
  888. package/web-ui/build/static/twig-CTILQm2N.js.map +1 -0
  889. package/web-ui/build/static/typescript-ByNyzp4w.js +2 -0
  890. package/web-ui/build/static/typescript-ByNyzp4w.js.map +1 -0
  891. package/web-ui/build/static/typescript-VbgeLBnj.js +2 -0
  892. package/web-ui/build/static/typescript-VbgeLBnj.js.map +1 -0
  893. package/web-ui/build/static/typoscript-CW-DCDe8.js +2 -0
  894. package/web-ui/build/static/typoscript-CW-DCDe8.js.map +1 -0
  895. package/web-ui/build/static/unrealscript-DegiFpmv.js +2 -0
  896. package/web-ui/build/static/unrealscript-DegiFpmv.js.map +1 -0
  897. package/web-ui/build/static/uorazor-DehT4qoH.js +2 -0
  898. package/web-ui/build/static/uorazor-DehT4qoH.js.map +1 -0
  899. package/web-ui/build/static/uri-vYQ-_6Pg.js +2 -0
  900. package/web-ui/build/static/uri-vYQ-_6Pg.js.map +1 -0
  901. package/web-ui/build/static/v-18Oyj3_k.js +2 -0
  902. package/web-ui/build/static/v-18Oyj3_k.js.map +1 -0
  903. package/web-ui/build/static/vala-C4nsgs8X.js +2 -0
  904. package/web-ui/build/static/vala-C4nsgs8X.js.map +1 -0
  905. package/web-ui/build/static/vala-CANo0QpG.js +2 -0
  906. package/web-ui/build/static/vala-CANo0QpG.js.map +1 -0
  907. package/web-ui/build/static/vbnet-CB77sNTW.js +2 -0
  908. package/web-ui/build/static/vbnet-CB77sNTW.js.map +1 -0
  909. package/web-ui/build/static/vbnet-CUekC7S0.js +2 -0
  910. package/web-ui/build/static/vbnet-CUekC7S0.js.map +1 -0
  911. package/web-ui/build/static/vbscript-D-ZGa9YC.js +2 -0
  912. package/web-ui/build/static/vbscript-D-ZGa9YC.js.map +1 -0
  913. package/web-ui/build/static/vbscript-html-DGcblvY0.js +2 -0
  914. package/web-ui/build/static/vbscript-html-DGcblvY0.js.map +1 -0
  915. package/web-ui/build/static/velocity-D-TqVrIQ.js +2 -0
  916. package/web-ui/build/static/velocity-D-TqVrIQ.js.map +1 -0
  917. package/web-ui/build/static/verilog-COyUFFsx.js +2 -0
  918. package/web-ui/build/static/verilog-COyUFFsx.js.map +1 -0
  919. package/web-ui/build/static/verilog-CeW77TeH.js +2 -0
  920. package/web-ui/build/static/verilog-CeW77TeH.js.map +1 -0
  921. package/web-ui/build/static/vhdl-8sLVaGIE.js +2 -0
  922. package/web-ui/build/static/vhdl-8sLVaGIE.js.map +1 -0
  923. package/web-ui/build/static/vhdl-MLtbl4yF.js +2 -0
  924. package/web-ui/build/static/vhdl-MLtbl4yF.js.map +1 -0
  925. package/web-ui/build/static/vim-DSBKG2bA.js +2 -0
  926. package/web-ui/build/static/vim-DSBKG2bA.js.map +1 -0
  927. package/web-ui/build/static/vim-V_D3p2kv.js +2 -0
  928. package/web-ui/build/static/vim-V_D3p2kv.js.map +1 -0
  929. package/web-ui/build/static/visual-basic-DMVfOdZo.js +2 -0
  930. package/web-ui/build/static/visual-basic-DMVfOdZo.js.map +1 -0
  931. package/web-ui/build/static/warpscript-CV6KPGDf.js +2 -0
  932. package/web-ui/build/static/warpscript-CV6KPGDf.js.map +1 -0
  933. package/web-ui/build/static/wasm-BMjBrMWR.js +2 -0
  934. package/web-ui/build/static/wasm-BMjBrMWR.js.map +1 -0
  935. package/web-ui/build/static/web-idl-DWw7J6Fx.js +2 -0
  936. package/web-ui/build/static/web-idl-DWw7J6Fx.js.map +1 -0
  937. package/web-ui/build/static/wiki-BT38XPDo.js +2 -0
  938. package/web-ui/build/static/wiki-BT38XPDo.js.map +1 -0
  939. package/web-ui/build/static/wolfram-D3g5Ayf8.js +2 -0
  940. package/web-ui/build/static/wolfram-D3g5Ayf8.js.map +1 -0
  941. package/web-ui/build/static/wren-RsgFtPVJ.js +2 -0
  942. package/web-ui/build/static/wren-RsgFtPVJ.js.map +1 -0
  943. package/web-ui/build/static/x86asm-DMpQM-X0.js +2 -0
  944. package/web-ui/build/static/x86asm-DMpQM-X0.js.map +1 -0
  945. package/web-ui/build/static/xeora-CWxsbczM.js +2 -0
  946. package/web-ui/build/static/xeora-CWxsbczM.js.map +1 -0
  947. package/web-ui/build/static/xl-SNDZkKVN.js +2 -0
  948. package/web-ui/build/static/xl-SNDZkKVN.js.map +1 -0
  949. package/web-ui/build/static/xml-BM1aytnX.js +2 -0
  950. package/web-ui/build/static/xml-BM1aytnX.js.map +1 -0
  951. package/web-ui/build/static/xml-doc-CMXEg4ew.js +2 -0
  952. package/web-ui/build/static/xml-doc-CMXEg4ew.js.map +1 -0
  953. package/web-ui/build/static/xojo-kDtG8wdS.js +2 -0
  954. package/web-ui/build/static/xojo-kDtG8wdS.js.map +1 -0
  955. package/web-ui/build/static/xquery-C9UzGPJ6.js +2 -0
  956. package/web-ui/build/static/xquery-C9UzGPJ6.js.map +1 -0
  957. package/web-ui/build/static/xquery-CCab5PHD.js +2 -0
  958. package/web-ui/build/static/xquery-CCab5PHD.js.map +1 -0
  959. package/web-ui/build/static/yaml-g3NFEWa3.js +2 -0
  960. package/web-ui/build/static/yaml-g3NFEWa3.js.map +1 -0
  961. package/web-ui/build/static/yaml-hGmIdfdg.js +2 -0
  962. package/web-ui/build/static/yaml-hGmIdfdg.js.map +1 -0
  963. package/web-ui/build/static/yang-DnjzVWlF.js +2 -0
  964. package/web-ui/build/static/yang-DnjzVWlF.js.map +1 -0
  965. package/web-ui/build/static/zephir-iZtCJ50X.js +2 -0
  966. package/web-ui/build/static/zephir-iZtCJ50X.js.map +1 -0
  967. package/web-ui/build/static/zig-DzJgPByX.js +2 -0
  968. package/web-ui/build/static/zig-DzJgPByX.js.map +1 -0
  969. package/web-ui/build/static/1c-D_qPvB3V.js +0 -2
  970. package/web-ui/build/static/1c-D_qPvB3V.js.map +0 -1
  971. package/web-ui/build/static/abap-CTac7GuJ.js +0 -2
  972. package/web-ui/build/static/abap-CTac7GuJ.js.map +0 -1
  973. package/web-ui/build/static/abnf-B-eguyQx.js +0 -2
  974. package/web-ui/build/static/abnf-B-eguyQx.js.map +0 -1
  975. package/web-ui/build/static/abnf-DchqkIUY.js +0 -2
  976. package/web-ui/build/static/abnf-DchqkIUY.js.map +0 -1
  977. package/web-ui/build/static/accesslog-Df2QXZJW.js +0 -2
  978. package/web-ui/build/static/accesslog-Df2QXZJW.js.map +0 -1
  979. package/web-ui/build/static/actionscript-DVmdyVvT.js +0 -2
  980. package/web-ui/build/static/actionscript-DVmdyVvT.js.map +0 -1
  981. package/web-ui/build/static/actionscript-UYqAHsow.js +0 -2
  982. package/web-ui/build/static/actionscript-UYqAHsow.js.map +0 -1
  983. package/web-ui/build/static/ada-DI0WZ2bS.js +0 -2
  984. package/web-ui/build/static/ada-DI0WZ2bS.js.map +0 -1
  985. package/web-ui/build/static/ada-offhvrbu.js +0 -2
  986. package/web-ui/build/static/ada-offhvrbu.js.map +0 -1
  987. package/web-ui/build/static/agda-Bhdvz1s5.js +0 -2
  988. package/web-ui/build/static/agda-Bhdvz1s5.js.map +0 -1
  989. package/web-ui/build/static/al-BIZUcZ4_.js +0 -2
  990. package/web-ui/build/static/al-BIZUcZ4_.js.map +0 -1
  991. package/web-ui/build/static/angelscript-CKXFYEKx.js +0 -2
  992. package/web-ui/build/static/angelscript-CKXFYEKx.js.map +0 -1
  993. package/web-ui/build/static/antlr4-CBOfHCbJ.js +0 -2
  994. package/web-ui/build/static/antlr4-CBOfHCbJ.js.map +0 -1
  995. package/web-ui/build/static/apache-B5MDB0nP.js +0 -2
  996. package/web-ui/build/static/apache-B5MDB0nP.js.map +0 -1
  997. package/web-ui/build/static/apacheconf-CPiv7EUZ.js +0 -2
  998. package/web-ui/build/static/apacheconf-CPiv7EUZ.js.map +0 -1
  999. package/web-ui/build/static/apex-0ySlorg9.js +0 -2
  1000. package/web-ui/build/static/apex-0ySlorg9.js.map +0 -1
  1001. package/web-ui/build/static/apl-DmEChSCP.js +0 -2
  1002. package/web-ui/build/static/apl-DmEChSCP.js.map +0 -1
  1003. package/web-ui/build/static/applescript-Bhtpf6MR.js +0 -2
  1004. package/web-ui/build/static/applescript-Bhtpf6MR.js.map +0 -1
  1005. package/web-ui/build/static/applescript-Dg-QTXBp.js +0 -2
  1006. package/web-ui/build/static/applescript-Dg-QTXBp.js.map +0 -1
  1007. package/web-ui/build/static/aql-Dffhxg7w.js +0 -2
  1008. package/web-ui/build/static/aql-Dffhxg7w.js.map +0 -1
  1009. package/web-ui/build/static/arcade-DFQwGr_Z.js +0 -2
  1010. package/web-ui/build/static/arcade-DFQwGr_Z.js.map +0 -1
  1011. package/web-ui/build/static/arduino-BFHvEv-X.js +0 -2
  1012. package/web-ui/build/static/arduino-BFHvEv-X.js.map +0 -1
  1013. package/web-ui/build/static/arduino-I_Bp9X3I.js +0 -2
  1014. package/web-ui/build/static/arduino-I_Bp9X3I.js.map +0 -1
  1015. package/web-ui/build/static/arff-BFbh46ZP.js +0 -2
  1016. package/web-ui/build/static/arff-BFbh46ZP.js.map +0 -1
  1017. package/web-ui/build/static/armasm-DW5_yWoJ.js +0 -2
  1018. package/web-ui/build/static/armasm-DW5_yWoJ.js.map +0 -1
  1019. package/web-ui/build/static/asciidoc-BOSWbL26.js +0 -2
  1020. package/web-ui/build/static/asciidoc-BOSWbL26.js.map +0 -1
  1021. package/web-ui/build/static/asciidoc-_FXFf8Hs.js +0 -2
  1022. package/web-ui/build/static/asciidoc-_FXFf8Hs.js.map +0 -1
  1023. package/web-ui/build/static/asm6502-CVrzJPnR.js +0 -2
  1024. package/web-ui/build/static/asm6502-CVrzJPnR.js.map +0 -1
  1025. package/web-ui/build/static/asmatmel-BSi9dhD3.js +0 -2
  1026. package/web-ui/build/static/asmatmel-BSi9dhD3.js.map +0 -1
  1027. package/web-ui/build/static/aspectj-BRwmbD2q.js +0 -2
  1028. package/web-ui/build/static/aspectj-BRwmbD2q.js.map +0 -1
  1029. package/web-ui/build/static/aspnet-BRwsysB9.js +0 -2
  1030. package/web-ui/build/static/aspnet-BRwsysB9.js.map +0 -1
  1031. package/web-ui/build/static/autohotkey-6a1jiEBe.js +0 -2
  1032. package/web-ui/build/static/autohotkey-6a1jiEBe.js.map +0 -1
  1033. package/web-ui/build/static/autohotkey-DR1-q437.js +0 -2
  1034. package/web-ui/build/static/autohotkey-DR1-q437.js.map +0 -1
  1035. package/web-ui/build/static/autoit-BMqz_Jee.js +0 -2
  1036. package/web-ui/build/static/autoit-BMqz_Jee.js.map +0 -1
  1037. package/web-ui/build/static/autoit-BvsodKLK.js +0 -2
  1038. package/web-ui/build/static/autoit-BvsodKLK.js.map +0 -1
  1039. package/web-ui/build/static/avisynth-B-auLfby.js +0 -2
  1040. package/web-ui/build/static/avisynth-B-auLfby.js.map +0 -1
  1041. package/web-ui/build/static/avrasm-BdAbhVUJ.js +0 -2
  1042. package/web-ui/build/static/avrasm-BdAbhVUJ.js.map +0 -1
  1043. package/web-ui/build/static/avro-idl-DOTpi7nl.js +0 -2
  1044. package/web-ui/build/static/avro-idl-DOTpi7nl.js.map +0 -1
  1045. package/web-ui/build/static/awk-CsgMOdUw.js +0 -2
  1046. package/web-ui/build/static/awk-CsgMOdUw.js.map +0 -1
  1047. package/web-ui/build/static/axapta-C5XrhaN5.js +0 -2
  1048. package/web-ui/build/static/axapta-C5XrhaN5.js.map +0 -1
  1049. package/web-ui/build/static/bash-C1-r7d7k.js +0 -2
  1050. package/web-ui/build/static/bash-C1-r7d7k.js.map +0 -1
  1051. package/web-ui/build/static/bash-DEgBrEC2.js +0 -2
  1052. package/web-ui/build/static/bash-DEgBrEC2.js.map +0 -1
  1053. package/web-ui/build/static/basic-B3R5VALF.js +0 -2
  1054. package/web-ui/build/static/basic-B3R5VALF.js.map +0 -1
  1055. package/web-ui/build/static/basic-DSfYRx3q.js +0 -2
  1056. package/web-ui/build/static/basic-DSfYRx3q.js.map +0 -1
  1057. package/web-ui/build/static/batch-C2fYtgqc.js +0 -2
  1058. package/web-ui/build/static/batch-C2fYtgqc.js.map +0 -1
  1059. package/web-ui/build/static/bbcode-BLM0BQmc.js +0 -2
  1060. package/web-ui/build/static/bbcode-BLM0BQmc.js.map +0 -1
  1061. package/web-ui/build/static/bicep-B7XNjHHJ.js +0 -2
  1062. package/web-ui/build/static/bicep-B7XNjHHJ.js.map +0 -1
  1063. package/web-ui/build/static/birb-CjVGlEUy.js +0 -2
  1064. package/web-ui/build/static/birb-CjVGlEUy.js.map +0 -1
  1065. package/web-ui/build/static/bison-BBYMGwHh.js +0 -2
  1066. package/web-ui/build/static/bison-BBYMGwHh.js.map +0 -1
  1067. package/web-ui/build/static/bnf-BpAgVggo.js +0 -2
  1068. package/web-ui/build/static/bnf-BpAgVggo.js.map +0 -1
  1069. package/web-ui/build/static/bnf-CIZRfMim.js +0 -2
  1070. package/web-ui/build/static/bnf-CIZRfMim.js.map +0 -1
  1071. package/web-ui/build/static/brainfuck-BL8Ck-Uf.js +0 -2
  1072. package/web-ui/build/static/brainfuck-BL8Ck-Uf.js.map +0 -1
  1073. package/web-ui/build/static/brainfuck-dauodiI3.js +0 -2
  1074. package/web-ui/build/static/brainfuck-dauodiI3.js.map +0 -1
  1075. package/web-ui/build/static/brightscript-BhJdYpbY.js +0 -2
  1076. package/web-ui/build/static/brightscript-BhJdYpbY.js.map +0 -1
  1077. package/web-ui/build/static/bro-DcFYnCbi.js +0 -2
  1078. package/web-ui/build/static/bro-DcFYnCbi.js.map +0 -1
  1079. package/web-ui/build/static/bsl-C9rjiX72.js +0 -2
  1080. package/web-ui/build/static/bsl-C9rjiX72.js.map +0 -1
  1081. package/web-ui/build/static/c-BsnzJksu.js +0 -2
  1082. package/web-ui/build/static/c-BsnzJksu.js.map +0 -1
  1083. package/web-ui/build/static/c-DJbroke5.js +0 -2
  1084. package/web-ui/build/static/c-DJbroke5.js.map +0 -1
  1085. package/web-ui/build/static/c-like-CJEAFsFB.js +0 -2
  1086. package/web-ui/build/static/c-like-CJEAFsFB.js.map +0 -1
  1087. package/web-ui/build/static/cal-BbfAhea3.js +0 -2
  1088. package/web-ui/build/static/cal-BbfAhea3.js.map +0 -1
  1089. package/web-ui/build/static/capnproto-cDJtGDOg.js +0 -2
  1090. package/web-ui/build/static/capnproto-cDJtGDOg.js.map +0 -1
  1091. package/web-ui/build/static/ceylon-a_GdVQ7f.js +0 -2
  1092. package/web-ui/build/static/ceylon-a_GdVQ7f.js.map +0 -1
  1093. package/web-ui/build/static/cfscript-Dzjty3sd.js +0 -2
  1094. package/web-ui/build/static/cfscript-Dzjty3sd.js.map +0 -1
  1095. package/web-ui/build/static/chaiscript-yZoEXdeV.js +0 -2
  1096. package/web-ui/build/static/chaiscript-yZoEXdeV.js.map +0 -1
  1097. package/web-ui/build/static/cil-D1_WHMPv.js +0 -2
  1098. package/web-ui/build/static/cil-D1_WHMPv.js.map +0 -1
  1099. package/web-ui/build/static/clean-B4O-WBZ-.js +0 -2
  1100. package/web-ui/build/static/clean-B4O-WBZ-.js.map +0 -1
  1101. package/web-ui/build/static/clike-BbhQMC3v.js +0 -2
  1102. package/web-ui/build/static/clike-BbhQMC3v.js.map +0 -1
  1103. package/web-ui/build/static/clojure-Bbu93y_6.js +0 -2
  1104. package/web-ui/build/static/clojure-Bbu93y_6.js.map +0 -1
  1105. package/web-ui/build/static/clojure-BxfqpsEY.js +0 -2
  1106. package/web-ui/build/static/clojure-BxfqpsEY.js.map +0 -1
  1107. package/web-ui/build/static/clojure-repl-z0AqhltN.js +0 -2
  1108. package/web-ui/build/static/clojure-repl-z0AqhltN.js.map +0 -1
  1109. package/web-ui/build/static/cmake-BbWAy8j3.js +0 -2
  1110. package/web-ui/build/static/cmake-BbWAy8j3.js.map +0 -1
  1111. package/web-ui/build/static/cmake-CIByV8ZW.js +0 -2
  1112. package/web-ui/build/static/cmake-CIByV8ZW.js.map +0 -1
  1113. package/web-ui/build/static/cobol-BydUPHC7.js +0 -2
  1114. package/web-ui/build/static/cobol-BydUPHC7.js.map +0 -1
  1115. package/web-ui/build/static/coffeescript-BV-bTh1q.js +0 -2
  1116. package/web-ui/build/static/coffeescript-BV-bTh1q.js.map +0 -1
  1117. package/web-ui/build/static/coffeescript-Dxnf0yRF.js +0 -2
  1118. package/web-ui/build/static/coffeescript-Dxnf0yRF.js.map +0 -1
  1119. package/web-ui/build/static/concurnas-yGkTkaWa.js +0 -2
  1120. package/web-ui/build/static/concurnas-yGkTkaWa.js.map +0 -1
  1121. package/web-ui/build/static/coq-AhBDV-0T.js +0 -2
  1122. package/web-ui/build/static/coq-AhBDV-0T.js.map +0 -1
  1123. package/web-ui/build/static/coq-Do4DDPAT.js +0 -2
  1124. package/web-ui/build/static/coq-Do4DDPAT.js.map +0 -1
  1125. package/web-ui/build/static/cos-C5QkEIhM.js +0 -2
  1126. package/web-ui/build/static/cos-C5QkEIhM.js.map +0 -1
  1127. package/web-ui/build/static/cpp-BCySi8iX.js +0 -2
  1128. package/web-ui/build/static/cpp-BCySi8iX.js.map +0 -1
  1129. package/web-ui/build/static/cpp-BN3K8LuX.js +0 -2
  1130. package/web-ui/build/static/cpp-BN3K8LuX.js.map +0 -1
  1131. package/web-ui/build/static/crmsh-DFwhwYLF.js +0 -2
  1132. package/web-ui/build/static/crmsh-DFwhwYLF.js.map +0 -1
  1133. package/web-ui/build/static/crystal-By6Gn7pt.js +0 -2
  1134. package/web-ui/build/static/crystal-By6Gn7pt.js.map +0 -1
  1135. package/web-ui/build/static/crystal-Du0ZHHT8.js +0 -2
  1136. package/web-ui/build/static/crystal-Du0ZHHT8.js.map +0 -1
  1137. package/web-ui/build/static/csharp-Cm9Sjsgy.js +0 -2
  1138. package/web-ui/build/static/csharp-Cm9Sjsgy.js.map +0 -1
  1139. package/web-ui/build/static/csharp-DQZn0AVP.js +0 -2
  1140. package/web-ui/build/static/csharp-DQZn0AVP.js.map +0 -1
  1141. package/web-ui/build/static/cshtml-Kp9Fmw-K.js +0 -2
  1142. package/web-ui/build/static/cshtml-Kp9Fmw-K.js.map +0 -1
  1143. package/web-ui/build/static/csp-BX8aZ19A.js +0 -2
  1144. package/web-ui/build/static/csp-BX8aZ19A.js.map +0 -1
  1145. package/web-ui/build/static/csp-DfWHORpc.js +0 -2
  1146. package/web-ui/build/static/csp-DfWHORpc.js.map +0 -1
  1147. package/web-ui/build/static/css-CEA2miUi.js +0 -2
  1148. package/web-ui/build/static/css-CEA2miUi.js.map +0 -1
  1149. package/web-ui/build/static/css-CQf2huHY.js +0 -2
  1150. package/web-ui/build/static/css-CQf2huHY.js.map +0 -1
  1151. package/web-ui/build/static/css-extras-B9kii9BZ.js +0 -2
  1152. package/web-ui/build/static/css-extras-B9kii9BZ.js.map +0 -1
  1153. package/web-ui/build/static/csv-8gxezeEm.js +0 -2
  1154. package/web-ui/build/static/csv-8gxezeEm.js.map +0 -1
  1155. package/web-ui/build/static/cypher-CNQLP3oK.js +0 -2
  1156. package/web-ui/build/static/cypher-CNQLP3oK.js.map +0 -1
  1157. package/web-ui/build/static/d-CTlyYd24.js +0 -2
  1158. package/web-ui/build/static/d-CTlyYd24.js.map +0 -1
  1159. package/web-ui/build/static/d-Uo7SffjY.js +0 -2
  1160. package/web-ui/build/static/d-Uo7SffjY.js.map +0 -1
  1161. package/web-ui/build/static/dart-Bpfc756e.js +0 -2
  1162. package/web-ui/build/static/dart-Bpfc756e.js.map +0 -1
  1163. package/web-ui/build/static/dart-DfuVI1xC.js +0 -2
  1164. package/web-ui/build/static/dart-DfuVI1xC.js.map +0 -1
  1165. package/web-ui/build/static/dataweave-DEIeoY1o.js +0 -2
  1166. package/web-ui/build/static/dataweave-DEIeoY1o.js.map +0 -1
  1167. package/web-ui/build/static/dax-BLtb3ND_.js +0 -2
  1168. package/web-ui/build/static/dax-BLtb3ND_.js.map +0 -1
  1169. package/web-ui/build/static/delphi-B5yHIpFg.js +0 -2
  1170. package/web-ui/build/static/delphi-B5yHIpFg.js.map +0 -1
  1171. package/web-ui/build/static/dhall-yr3u71o3.js +0 -2
  1172. package/web-ui/build/static/dhall-yr3u71o3.js.map +0 -1
  1173. package/web-ui/build/static/diff-BpzLXp_V.js +0 -2
  1174. package/web-ui/build/static/diff-BpzLXp_V.js.map +0 -1
  1175. package/web-ui/build/static/diff-ByqUXGvr.js +0 -2
  1176. package/web-ui/build/static/diff-ByqUXGvr.js.map +0 -1
  1177. package/web-ui/build/static/django-CizPT9Sp.js +0 -2
  1178. package/web-ui/build/static/django-CizPT9Sp.js.map +0 -1
  1179. package/web-ui/build/static/django-YscPDccG.js +0 -2
  1180. package/web-ui/build/static/django-YscPDccG.js.map +0 -1
  1181. package/web-ui/build/static/dns-C-_Yg_fu.js +0 -2
  1182. package/web-ui/build/static/dns-C-_Yg_fu.js.map +0 -1
  1183. package/web-ui/build/static/dns-zone-file-CnPa90lC.js +0 -2
  1184. package/web-ui/build/static/dns-zone-file-CnPa90lC.js.map +0 -1
  1185. package/web-ui/build/static/docker-CavDrVR9.js +0 -2
  1186. package/web-ui/build/static/docker-CavDrVR9.js.map +0 -1
  1187. package/web-ui/build/static/dockerfile-D2G2mFQS.js +0 -2
  1188. package/web-ui/build/static/dockerfile-D2G2mFQS.js.map +0 -1
  1189. package/web-ui/build/static/dos-Q_JIOZcH.js +0 -2
  1190. package/web-ui/build/static/dos-Q_JIOZcH.js.map +0 -1
  1191. package/web-ui/build/static/dot-DD4tMB0R.js +0 -2
  1192. package/web-ui/build/static/dot-DD4tMB0R.js.map +0 -1
  1193. package/web-ui/build/static/dsconfig-CfhX8vWC.js +0 -2
  1194. package/web-ui/build/static/dsconfig-CfhX8vWC.js.map +0 -1
  1195. package/web-ui/build/static/dts-Bc0mlEwd.js +0 -2
  1196. package/web-ui/build/static/dts-Bc0mlEwd.js.map +0 -1
  1197. package/web-ui/build/static/dust-COIwtMNn.js +0 -2
  1198. package/web-ui/build/static/dust-COIwtMNn.js.map +0 -1
  1199. package/web-ui/build/static/ebnf-3YG7EsMR.js +0 -2
  1200. package/web-ui/build/static/ebnf-3YG7EsMR.js.map +0 -1
  1201. package/web-ui/build/static/ebnf-CDtil2Mr.js +0 -2
  1202. package/web-ui/build/static/ebnf-CDtil2Mr.js.map +0 -1
  1203. package/web-ui/build/static/editorconfig-64X2vX1j.js +0 -2
  1204. package/web-ui/build/static/editorconfig-64X2vX1j.js.map +0 -1
  1205. package/web-ui/build/static/eiffel-CJur1DN4.js +0 -2
  1206. package/web-ui/build/static/eiffel-CJur1DN4.js.map +0 -1
  1207. package/web-ui/build/static/ejs-Cw7vN60h.js +0 -2
  1208. package/web-ui/build/static/ejs-Cw7vN60h.js.map +0 -1
  1209. package/web-ui/build/static/elixir-BKo2naZS.js +0 -2
  1210. package/web-ui/build/static/elixir-BKo2naZS.js.map +0 -1
  1211. package/web-ui/build/static/elixir-CLb0SxeB.js +0 -2
  1212. package/web-ui/build/static/elixir-CLb0SxeB.js.map +0 -1
  1213. package/web-ui/build/static/elm-CdhSHkyB.js +0 -2
  1214. package/web-ui/build/static/elm-CdhSHkyB.js.map +0 -1
  1215. package/web-ui/build/static/elm-Dt6hdTOM.js +0 -2
  1216. package/web-ui/build/static/elm-Dt6hdTOM.js.map +0 -1
  1217. package/web-ui/build/static/erb-BKbC0yOs.js +0 -2
  1218. package/web-ui/build/static/erb-BKbC0yOs.js.map +0 -1
  1219. package/web-ui/build/static/erb-Dk87pL0R.js +0 -2
  1220. package/web-ui/build/static/erb-Dk87pL0R.js.map +0 -1
  1221. package/web-ui/build/static/erlang-C2qJ6J5c.js +0 -2
  1222. package/web-ui/build/static/erlang-C2qJ6J5c.js.map +0 -1
  1223. package/web-ui/build/static/erlang-CHQ5UiBZ.js +0 -2
  1224. package/web-ui/build/static/erlang-CHQ5UiBZ.js.map +0 -1
  1225. package/web-ui/build/static/erlang-repl-Dl68oiyR.js +0 -2
  1226. package/web-ui/build/static/erlang-repl-Dl68oiyR.js.map +0 -1
  1227. package/web-ui/build/static/etlua-bzERpDQb.js +0 -2
  1228. package/web-ui/build/static/etlua-bzERpDQb.js.map +0 -1
  1229. package/web-ui/build/static/excel-__vaweKO.js +0 -2
  1230. package/web-ui/build/static/excel-__vaweKO.js.map +0 -1
  1231. package/web-ui/build/static/excel-formula-BlYDIi9V.js +0 -2
  1232. package/web-ui/build/static/excel-formula-BlYDIi9V.js.map +0 -1
  1233. package/web-ui/build/static/factor-Bl5GCkeY.js +0 -2
  1234. package/web-ui/build/static/factor-Bl5GCkeY.js.map +0 -1
  1235. package/web-ui/build/static/false-QwAAYlpL.js +0 -2
  1236. package/web-ui/build/static/false-QwAAYlpL.js.map +0 -1
  1237. package/web-ui/build/static/firestore-security-rules-BLu9pgHC.js +0 -2
  1238. package/web-ui/build/static/firestore-security-rules-BLu9pgHC.js.map +0 -1
  1239. package/web-ui/build/static/fix-DUZ7zbCO.js +0 -2
  1240. package/web-ui/build/static/fix-DUZ7zbCO.js.map +0 -1
  1241. package/web-ui/build/static/flix-DBpxzY7Q.js +0 -2
  1242. package/web-ui/build/static/flix-DBpxzY7Q.js.map +0 -1
  1243. package/web-ui/build/static/flow-SbqJPdB5.js +0 -2
  1244. package/web-ui/build/static/flow-SbqJPdB5.js.map +0 -1
  1245. package/web-ui/build/static/fortran-CFDXA6Sp.js +0 -2
  1246. package/web-ui/build/static/fortran-CFDXA6Sp.js.map +0 -1
  1247. package/web-ui/build/static/fortran-CUXnp6Ln.js +0 -2
  1248. package/web-ui/build/static/fortran-CUXnp6Ln.js.map +0 -1
  1249. package/web-ui/build/static/fsharp-Bd0qRNsn.js +0 -2
  1250. package/web-ui/build/static/fsharp-Bd0qRNsn.js.map +0 -1
  1251. package/web-ui/build/static/fsharp-DrcBdlmg.js +0 -2
  1252. package/web-ui/build/static/fsharp-DrcBdlmg.js.map +0 -1
  1253. package/web-ui/build/static/ftl-Dq8qawaZ.js +0 -2
  1254. package/web-ui/build/static/ftl-Dq8qawaZ.js.map +0 -1
  1255. package/web-ui/build/static/gams-CQ4RaBJS.js +0 -2
  1256. package/web-ui/build/static/gams-CQ4RaBJS.js.map +0 -1
  1257. package/web-ui/build/static/gap-C2sol0R7.js +0 -2
  1258. package/web-ui/build/static/gap-C2sol0R7.js.map +0 -1
  1259. package/web-ui/build/static/gauss-DuxwVw0Q.js +0 -2
  1260. package/web-ui/build/static/gauss-DuxwVw0Q.js.map +0 -1
  1261. package/web-ui/build/static/gcode-DPw5b_kg.js +0 -2
  1262. package/web-ui/build/static/gcode-DPw5b_kg.js.map +0 -1
  1263. package/web-ui/build/static/gcode-DpswyD50.js +0 -2
  1264. package/web-ui/build/static/gcode-DpswyD50.js.map +0 -1
  1265. package/web-ui/build/static/gdscript-DpMvAvMc.js +0 -2
  1266. package/web-ui/build/static/gdscript-DpMvAvMc.js.map +0 -1
  1267. package/web-ui/build/static/gedcom-FUv-oL9A.js +0 -2
  1268. package/web-ui/build/static/gedcom-FUv-oL9A.js.map +0 -1
  1269. package/web-ui/build/static/gherkin-BW6tBj9v.js +0 -2
  1270. package/web-ui/build/static/gherkin-BW6tBj9v.js.map +0 -1
  1271. package/web-ui/build/static/gherkin-DkCl2nBf.js +0 -2
  1272. package/web-ui/build/static/gherkin-DkCl2nBf.js.map +0 -1
  1273. package/web-ui/build/static/git-5TLEHhqN.js +0 -2
  1274. package/web-ui/build/static/git-5TLEHhqN.js.map +0 -1
  1275. package/web-ui/build/static/glsl-BQQPcfMd.js +0 -2
  1276. package/web-ui/build/static/glsl-BQQPcfMd.js.map +0 -1
  1277. package/web-ui/build/static/glsl-C9s8AnDs.js +0 -2
  1278. package/web-ui/build/static/glsl-C9s8AnDs.js.map +0 -1
  1279. package/web-ui/build/static/gml-C0DL-oII.js +0 -2
  1280. package/web-ui/build/static/gml-C0DL-oII.js.map +0 -1
  1281. package/web-ui/build/static/gml-J98uHGl8.js +0 -2
  1282. package/web-ui/build/static/gml-J98uHGl8.js.map +0 -1
  1283. package/web-ui/build/static/gn-CrZAxzn5.js +0 -2
  1284. package/web-ui/build/static/gn-CrZAxzn5.js.map +0 -1
  1285. package/web-ui/build/static/go-Dp5jBdf1.js +0 -2
  1286. package/web-ui/build/static/go-Dp5jBdf1.js.map +0 -1
  1287. package/web-ui/build/static/go-module-Dwc3DMpl.js +0 -2
  1288. package/web-ui/build/static/go-module-Dwc3DMpl.js.map +0 -1
  1289. package/web-ui/build/static/go-vowsfWNo.js +0 -2
  1290. package/web-ui/build/static/go-vowsfWNo.js.map +0 -1
  1291. package/web-ui/build/static/golo-Dp6ia9Ay.js +0 -2
  1292. package/web-ui/build/static/golo-Dp6ia9Ay.js.map +0 -1
  1293. package/web-ui/build/static/gradle-DLwds_jy.js +0 -2
  1294. package/web-ui/build/static/gradle-DLwds_jy.js.map +0 -1
  1295. package/web-ui/build/static/graphql-DvUOkFUA.js +0 -2
  1296. package/web-ui/build/static/graphql-DvUOkFUA.js.map +0 -1
  1297. package/web-ui/build/static/groovy-PQ3uh6zb.js +0 -2
  1298. package/web-ui/build/static/groovy-PQ3uh6zb.js.map +0 -1
  1299. package/web-ui/build/static/groovy-dLrm0ukM.js +0 -2
  1300. package/web-ui/build/static/groovy-dLrm0ukM.js.map +0 -1
  1301. package/web-ui/build/static/haml-DtEB_xKl.js +0 -2
  1302. package/web-ui/build/static/haml-DtEB_xKl.js.map +0 -1
  1303. package/web-ui/build/static/haml-Tg-bvLcg.js +0 -2
  1304. package/web-ui/build/static/haml-Tg-bvLcg.js.map +0 -1
  1305. package/web-ui/build/static/handlebars-BDWmVigh.js +0 -2
  1306. package/web-ui/build/static/handlebars-BDWmVigh.js.map +0 -1
  1307. package/web-ui/build/static/handlebars-BVRevtKf.js +0 -2
  1308. package/web-ui/build/static/handlebars-BVRevtKf.js.map +0 -1
  1309. package/web-ui/build/static/haskell-CG_c5wjN.js +0 -2
  1310. package/web-ui/build/static/haskell-CG_c5wjN.js.map +0 -1
  1311. package/web-ui/build/static/haskell-QJQJ6izh.js +0 -2
  1312. package/web-ui/build/static/haskell-QJQJ6izh.js.map +0 -1
  1313. package/web-ui/build/static/haxe-0myPSjSX.js +0 -2
  1314. package/web-ui/build/static/haxe-0myPSjSX.js.map +0 -1
  1315. package/web-ui/build/static/haxe-gS6mo3gt.js +0 -2
  1316. package/web-ui/build/static/haxe-gS6mo3gt.js.map +0 -1
  1317. package/web-ui/build/static/hcl-DYxtM4tY.js +0 -2
  1318. package/web-ui/build/static/hcl-DYxtM4tY.js.map +0 -1
  1319. package/web-ui/build/static/hlsl-B3arqne8.js +0 -2
  1320. package/web-ui/build/static/hlsl-B3arqne8.js.map +0 -1
  1321. package/web-ui/build/static/hoon-C-6EGYk6.js +0 -2
  1322. package/web-ui/build/static/hoon-C-6EGYk6.js.map +0 -1
  1323. package/web-ui/build/static/hpkp-Bb1DHDNe.js +0 -2
  1324. package/web-ui/build/static/hpkp-Bb1DHDNe.js.map +0 -1
  1325. package/web-ui/build/static/hsp-CnZ1fkTT.js +0 -2
  1326. package/web-ui/build/static/hsp-CnZ1fkTT.js.map +0 -1
  1327. package/web-ui/build/static/hsts-BMmSKp3I.js +0 -2
  1328. package/web-ui/build/static/hsts-BMmSKp3I.js.map +0 -1
  1329. package/web-ui/build/static/htmlbars-OGqT_g-X.js +0 -2
  1330. package/web-ui/build/static/htmlbars-OGqT_g-X.js.map +0 -1
  1331. package/web-ui/build/static/http-B4OlNKQ0.js +0 -2
  1332. package/web-ui/build/static/http-B4OlNKQ0.js.map +0 -1
  1333. package/web-ui/build/static/http-C6Z9vrxV.js +0 -2
  1334. package/web-ui/build/static/http-C6Z9vrxV.js.map +0 -1
  1335. package/web-ui/build/static/hy-BzsO2-2x.js +0 -2
  1336. package/web-ui/build/static/hy-BzsO2-2x.js.map +0 -1
  1337. package/web-ui/build/static/ichigojam-C6gA8iIp.js +0 -2
  1338. package/web-ui/build/static/ichigojam-C6gA8iIp.js.map +0 -1
  1339. package/web-ui/build/static/icon-sA7JDIZl.js +0 -2
  1340. package/web-ui/build/static/icon-sA7JDIZl.js.map +0 -1
  1341. package/web-ui/build/static/icu-message-format-CCgD9Ze3.js +0 -2
  1342. package/web-ui/build/static/icu-message-format-CCgD9Ze3.js.map +0 -1
  1343. package/web-ui/build/static/idris-CSLJbqrN.js +0 -2
  1344. package/web-ui/build/static/idris-CSLJbqrN.js.map +0 -1
  1345. package/web-ui/build/static/iecst-C2gvgcos.js +0 -2
  1346. package/web-ui/build/static/iecst-C2gvgcos.js.map +0 -1
  1347. package/web-ui/build/static/ignore-B2w0UszK.js +0 -2
  1348. package/web-ui/build/static/ignore-B2w0UszK.js.map +0 -1
  1349. package/web-ui/build/static/index-Cgq4p9_n.js +0 -2
  1350. package/web-ui/build/static/index-Cgq4p9_n.js.map +0 -1
  1351. package/web-ui/build/static/index-DLkEZgsP.css +0 -1
  1352. package/web-ui/build/static/index-Z3yzqwSM.js +0 -1248
  1353. package/web-ui/build/static/index-Z3yzqwSM.js.map +0 -1
  1354. package/web-ui/build/static/index-u6goNp7m.js +0 -14
  1355. package/web-ui/build/static/index-u6goNp7m.js.map +0 -1
  1356. package/web-ui/build/static/inform7-BQlCLtCm.js +0 -2
  1357. package/web-ui/build/static/inform7-BQlCLtCm.js.map +0 -1
  1358. package/web-ui/build/static/inform7-eq3-Fu4X.js +0 -2
  1359. package/web-ui/build/static/inform7-eq3-Fu4X.js.map +0 -1
  1360. package/web-ui/build/static/ini-4su4UdAy.js +0 -2
  1361. package/web-ui/build/static/ini-4su4UdAy.js.map +0 -1
  1362. package/web-ui/build/static/ini-Vyi-KSKC.js +0 -2
  1363. package/web-ui/build/static/ini-Vyi-KSKC.js.map +0 -1
  1364. package/web-ui/build/static/io-cREOEA8o.js +0 -2
  1365. package/web-ui/build/static/io-cREOEA8o.js.map +0 -1
  1366. package/web-ui/build/static/irpf90-DEAFhQEl.js +0 -2
  1367. package/web-ui/build/static/irpf90-DEAFhQEl.js.map +0 -1
  1368. package/web-ui/build/static/isbl-B2bb5fgJ.js +0 -2
  1369. package/web-ui/build/static/isbl-B2bb5fgJ.js.map +0 -1
  1370. package/web-ui/build/static/j-BcTA9QW3.js +0 -2
  1371. package/web-ui/build/static/j-BcTA9QW3.js.map +0 -1
  1372. package/web-ui/build/static/java-BzxB4j1l.js +0 -2
  1373. package/web-ui/build/static/java-BzxB4j1l.js.map +0 -1
  1374. package/web-ui/build/static/java-lGU8kY_-.js +0 -2
  1375. package/web-ui/build/static/java-lGU8kY_-.js.map +0 -1
  1376. package/web-ui/build/static/javadoc-CwVjo-bv.js +0 -2
  1377. package/web-ui/build/static/javadoc-CwVjo-bv.js.map +0 -1
  1378. package/web-ui/build/static/javadoclike-XVK-uaom.js +0 -2
  1379. package/web-ui/build/static/javadoclike-XVK-uaom.js.map +0 -1
  1380. package/web-ui/build/static/javascript-Bg4NuaWU.js +0 -2
  1381. package/web-ui/build/static/javascript-Bg4NuaWU.js.map +0 -1
  1382. package/web-ui/build/static/javascript-Cn0o5KaO.js +0 -2
  1383. package/web-ui/build/static/javascript-Cn0o5KaO.js.map +0 -1
  1384. package/web-ui/build/static/javastacktrace-Dgm-FqbS.js +0 -2
  1385. package/web-ui/build/static/javastacktrace-Dgm-FqbS.js.map +0 -1
  1386. package/web-ui/build/static/jboss-cli-Bpo3Ld2C.js +0 -2
  1387. package/web-ui/build/static/jboss-cli-Bpo3Ld2C.js.map +0 -1
  1388. package/web-ui/build/static/jexl-Dds9NEdz.js +0 -2
  1389. package/web-ui/build/static/jexl-Dds9NEdz.js.map +0 -1
  1390. package/web-ui/build/static/jolie-BIPNQTvN.js +0 -2
  1391. package/web-ui/build/static/jolie-BIPNQTvN.js.map +0 -1
  1392. package/web-ui/build/static/jq-CkL1VUPV.js +0 -2
  1393. package/web-ui/build/static/jq-CkL1VUPV.js.map +0 -1
  1394. package/web-ui/build/static/js-extras-CVhrFzJp.js +0 -2
  1395. package/web-ui/build/static/js-extras-CVhrFzJp.js.map +0 -1
  1396. package/web-ui/build/static/js-templates-Dp448QdB.js +0 -2
  1397. package/web-ui/build/static/js-templates-Dp448QdB.js.map +0 -1
  1398. package/web-ui/build/static/jsdoc-BtWQfZav.js +0 -2
  1399. package/web-ui/build/static/jsdoc-BtWQfZav.js.map +0 -1
  1400. package/web-ui/build/static/json-BDq68koc.js +0 -2
  1401. package/web-ui/build/static/json-BDq68koc.js.map +0 -1
  1402. package/web-ui/build/static/json-BUjku8kP.js +0 -2
  1403. package/web-ui/build/static/json-BUjku8kP.js.map +0 -1
  1404. package/web-ui/build/static/json5-S0r0gFFg.js +0 -2
  1405. package/web-ui/build/static/json5-S0r0gFFg.js.map +0 -1
  1406. package/web-ui/build/static/jsonp-C3L6llwx.js +0 -2
  1407. package/web-ui/build/static/jsonp-C3L6llwx.js.map +0 -1
  1408. package/web-ui/build/static/jsstacktrace-B2wj7mGI.js +0 -2
  1409. package/web-ui/build/static/jsstacktrace-B2wj7mGI.js.map +0 -1
  1410. package/web-ui/build/static/jsx-Bf9rCpb9.js +0 -2
  1411. package/web-ui/build/static/jsx-Bf9rCpb9.js.map +0 -1
  1412. package/web-ui/build/static/julia-CArgWk8G.js +0 -2
  1413. package/web-ui/build/static/julia-CArgWk8G.js.map +0 -1
  1414. package/web-ui/build/static/julia-repl-BtDcQ2Ic.js +0 -2
  1415. package/web-ui/build/static/julia-repl-BtDcQ2Ic.js.map +0 -1
  1416. package/web-ui/build/static/julia-yzQYi_0p.js +0 -2
  1417. package/web-ui/build/static/julia-yzQYi_0p.js.map +0 -1
  1418. package/web-ui/build/static/keepalived-D1JW6F4g.js +0 -2
  1419. package/web-ui/build/static/keepalived-D1JW6F4g.js.map +0 -1
  1420. package/web-ui/build/static/keyman-BLJFDpvc.js +0 -2
  1421. package/web-ui/build/static/keyman-BLJFDpvc.js.map +0 -1
  1422. package/web-ui/build/static/kotlin-81QTppC2.js +0 -2
  1423. package/web-ui/build/static/kotlin-81QTppC2.js.map +0 -1
  1424. package/web-ui/build/static/kotlin-JJiPKQey.js +0 -2
  1425. package/web-ui/build/static/kotlin-JJiPKQey.js.map +0 -1
  1426. package/web-ui/build/static/kumir-CckpFPkJ.js +0 -2
  1427. package/web-ui/build/static/kumir-CckpFPkJ.js.map +0 -1
  1428. package/web-ui/build/static/kusto-v3RvJfYj.js +0 -2
  1429. package/web-ui/build/static/kusto-v3RvJfYj.js.map +0 -1
  1430. package/web-ui/build/static/lasso-DHPAOHJh.js +0 -2
  1431. package/web-ui/build/static/lasso-DHPAOHJh.js.map +0 -1
  1432. package/web-ui/build/static/latex-6d2h-2ui.js +0 -2
  1433. package/web-ui/build/static/latex-6d2h-2ui.js.map +0 -1
  1434. package/web-ui/build/static/latex-DMftq-de.js +0 -2
  1435. package/web-ui/build/static/latex-DMftq-de.js.map +0 -1
  1436. package/web-ui/build/static/latte-BjJy943P.js +0 -2
  1437. package/web-ui/build/static/latte-BjJy943P.js.map +0 -1
  1438. package/web-ui/build/static/ldif-BnOSPC7n.js +0 -2
  1439. package/web-ui/build/static/ldif-BnOSPC7n.js.map +0 -1
  1440. package/web-ui/build/static/leaf-9AykRwXa.js +0 -2
  1441. package/web-ui/build/static/leaf-9AykRwXa.js.map +0 -1
  1442. package/web-ui/build/static/less-B8iajXeG.js +0 -2
  1443. package/web-ui/build/static/less-B8iajXeG.js.map +0 -1
  1444. package/web-ui/build/static/less-BWSY9EyE.js +0 -2
  1445. package/web-ui/build/static/less-BWSY9EyE.js.map +0 -1
  1446. package/web-ui/build/static/lilypond-C4co0TPs.js +0 -2
  1447. package/web-ui/build/static/lilypond-C4co0TPs.js.map +0 -1
  1448. package/web-ui/build/static/liquid-BDYkcgad.js +0 -2
  1449. package/web-ui/build/static/liquid-BDYkcgad.js.map +0 -1
  1450. package/web-ui/build/static/lisp-CVmuCtmx.js +0 -2
  1451. package/web-ui/build/static/lisp-CVmuCtmx.js.map +0 -1
  1452. package/web-ui/build/static/lisp-Ch4yAdNs.js +0 -2
  1453. package/web-ui/build/static/lisp-Ch4yAdNs.js.map +0 -1
  1454. package/web-ui/build/static/livecodeserver-orAMd3qf.js +0 -2
  1455. package/web-ui/build/static/livecodeserver-orAMd3qf.js.map +0 -1
  1456. package/web-ui/build/static/livescript-CUxtoRDV.js +0 -2
  1457. package/web-ui/build/static/livescript-CUxtoRDV.js.map +0 -1
  1458. package/web-ui/build/static/livescript-MM8af6u6.js +0 -2
  1459. package/web-ui/build/static/livescript-MM8af6u6.js.map +0 -1
  1460. package/web-ui/build/static/llvm-BcjUM7yI.js +0 -2
  1461. package/web-ui/build/static/llvm-BcjUM7yI.js.map +0 -1
  1462. package/web-ui/build/static/llvm-GlARBvKB.js +0 -2
  1463. package/web-ui/build/static/llvm-GlARBvKB.js.map +0 -1
  1464. package/web-ui/build/static/log-B4zvaowe.js +0 -2
  1465. package/web-ui/build/static/log-B4zvaowe.js.map +0 -1
  1466. package/web-ui/build/static/lolcode-DQ7YKI14.js +0 -2
  1467. package/web-ui/build/static/lolcode-DQ7YKI14.js.map +0 -1
  1468. package/web-ui/build/static/lsl-D-PYzrLj.js +0 -2
  1469. package/web-ui/build/static/lsl-D-PYzrLj.js.map +0 -1
  1470. package/web-ui/build/static/lua-DSmBmn6n.js +0 -2
  1471. package/web-ui/build/static/lua-DSmBmn6n.js.map +0 -1
  1472. package/web-ui/build/static/lua-aQfMvZ8s.js +0 -2
  1473. package/web-ui/build/static/lua-aQfMvZ8s.js.map +0 -1
  1474. package/web-ui/build/static/magma-DPDnXrRW.js +0 -2
  1475. package/web-ui/build/static/magma-DPDnXrRW.js.map +0 -1
  1476. package/web-ui/build/static/makefile-C6WNNyDV.js +0 -2
  1477. package/web-ui/build/static/makefile-C6WNNyDV.js.map +0 -1
  1478. package/web-ui/build/static/makefile-CDeGikr3.js +0 -2
  1479. package/web-ui/build/static/makefile-CDeGikr3.js.map +0 -1
  1480. package/web-ui/build/static/markdown-B1rSRMwm.js +0 -2
  1481. package/web-ui/build/static/markdown-B1rSRMwm.js.map +0 -1
  1482. package/web-ui/build/static/markdown-C6ib1fAR.js +0 -2
  1483. package/web-ui/build/static/markdown-C6ib1fAR.js.map +0 -1
  1484. package/web-ui/build/static/markup-DtVZGlRL.js +0 -2
  1485. package/web-ui/build/static/markup-DtVZGlRL.js.map +0 -1
  1486. package/web-ui/build/static/markup-templating-V0gg4i55.js +0 -2
  1487. package/web-ui/build/static/markup-templating-V0gg4i55.js.map +0 -1
  1488. package/web-ui/build/static/mathematica-LHn4_HLi.js +0 -2
  1489. package/web-ui/build/static/mathematica-LHn4_HLi.js.map +0 -1
  1490. package/web-ui/build/static/matlab-DVZuEEgZ.js +0 -2
  1491. package/web-ui/build/static/matlab-DVZuEEgZ.js.map +0 -1
  1492. package/web-ui/build/static/matlab-D_x-HxkR.js +0 -2
  1493. package/web-ui/build/static/matlab-D_x-HxkR.js.map +0 -1
  1494. package/web-ui/build/static/maxima-CjPAyFkj.js +0 -2
  1495. package/web-ui/build/static/maxima-CjPAyFkj.js.map +0 -1
  1496. package/web-ui/build/static/maxscript-xoJaLO4t.js +0 -2
  1497. package/web-ui/build/static/maxscript-xoJaLO4t.js.map +0 -1
  1498. package/web-ui/build/static/mel-Bfau7mRz.js +0 -2
  1499. package/web-ui/build/static/mel-Bfau7mRz.js.map +0 -1
  1500. package/web-ui/build/static/mel-bgbdOUYk.js +0 -2
  1501. package/web-ui/build/static/mel-bgbdOUYk.js.map +0 -1
  1502. package/web-ui/build/static/mercury-DS3T1hhG.js +0 -2
  1503. package/web-ui/build/static/mercury-DS3T1hhG.js.map +0 -1
  1504. package/web-ui/build/static/mermaid-BijvCuRH.js +0 -2
  1505. package/web-ui/build/static/mermaid-BijvCuRH.js.map +0 -1
  1506. package/web-ui/build/static/mipsasm-D3InDFob.js +0 -2
  1507. package/web-ui/build/static/mipsasm-D3InDFob.js.map +0 -1
  1508. package/web-ui/build/static/mizar--ggqnf4F.js +0 -2
  1509. package/web-ui/build/static/mizar--ggqnf4F.js.map +0 -1
  1510. package/web-ui/build/static/mizar-B_kmn3et.js +0 -2
  1511. package/web-ui/build/static/mizar-B_kmn3et.js.map +0 -1
  1512. package/web-ui/build/static/mojolicious-bcOmiLM2.js +0 -2
  1513. package/web-ui/build/static/mojolicious-bcOmiLM2.js.map +0 -1
  1514. package/web-ui/build/static/mongodb-BPac3Mz_.js +0 -2
  1515. package/web-ui/build/static/mongodb-BPac3Mz_.js.map +0 -1
  1516. package/web-ui/build/static/monkey-BKD0nteL.js +0 -2
  1517. package/web-ui/build/static/monkey-BKD0nteL.js.map +0 -1
  1518. package/web-ui/build/static/monkey-BmbhmOX_.js +0 -2
  1519. package/web-ui/build/static/monkey-BmbhmOX_.js.map +0 -1
  1520. package/web-ui/build/static/moonscript-BCSmE_te.js +0 -2
  1521. package/web-ui/build/static/moonscript-BCSmE_te.js.map +0 -1
  1522. package/web-ui/build/static/moonscript-vs8h0Jki.js +0 -2
  1523. package/web-ui/build/static/moonscript-vs8h0Jki.js.map +0 -1
  1524. package/web-ui/build/static/n1ql-DOTVgCMn.js +0 -2
  1525. package/web-ui/build/static/n1ql-DOTVgCMn.js.map +0 -1
  1526. package/web-ui/build/static/n1ql-kzK9uNdc.js +0 -2
  1527. package/web-ui/build/static/n1ql-kzK9uNdc.js.map +0 -1
  1528. package/web-ui/build/static/n4js-DVmYUlTn.js +0 -2
  1529. package/web-ui/build/static/n4js-DVmYUlTn.js.map +0 -1
  1530. package/web-ui/build/static/nand2tetris-hdl-bkY_BvT2.js +0 -2
  1531. package/web-ui/build/static/nand2tetris-hdl-bkY_BvT2.js.map +0 -1
  1532. package/web-ui/build/static/naniscript-D2t6sMlP.js +0 -2
  1533. package/web-ui/build/static/naniscript-D2t6sMlP.js.map +0 -1
  1534. package/web-ui/build/static/nasm-BLSmZGlN.js +0 -2
  1535. package/web-ui/build/static/nasm-BLSmZGlN.js.map +0 -1
  1536. package/web-ui/build/static/neon-BAN5cxGp.js +0 -2
  1537. package/web-ui/build/static/neon-BAN5cxGp.js.map +0 -1
  1538. package/web-ui/build/static/nevod-Cz4gGOlU.js +0 -2
  1539. package/web-ui/build/static/nevod-Cz4gGOlU.js.map +0 -1
  1540. package/web-ui/build/static/nginx-CT0qrPbD.js +0 -2
  1541. package/web-ui/build/static/nginx-CT0qrPbD.js.map +0 -1
  1542. package/web-ui/build/static/nginx-DC0LaV-N.js +0 -2
  1543. package/web-ui/build/static/nginx-DC0LaV-N.js.map +0 -1
  1544. package/web-ui/build/static/nim-B_xOVWDt.js +0 -2
  1545. package/web-ui/build/static/nim-B_xOVWDt.js.map +0 -1
  1546. package/web-ui/build/static/nim-if73Jqy4.js +0 -2
  1547. package/web-ui/build/static/nim-if73Jqy4.js.map +0 -1
  1548. package/web-ui/build/static/nix-B6rGw2Wr.js +0 -2
  1549. package/web-ui/build/static/nix-B6rGw2Wr.js.map +0 -1
  1550. package/web-ui/build/static/nix-DIdjmlZ6.js +0 -2
  1551. package/web-ui/build/static/nix-DIdjmlZ6.js.map +0 -1
  1552. package/web-ui/build/static/node-repl-B1ES3pay.js +0 -2
  1553. package/web-ui/build/static/node-repl-B1ES3pay.js.map +0 -1
  1554. package/web-ui/build/static/nsis-BFRqZXCA.js +0 -2
  1555. package/web-ui/build/static/nsis-BFRqZXCA.js.map +0 -1
  1556. package/web-ui/build/static/nsis-Ba4YllFm.js +0 -2
  1557. package/web-ui/build/static/nsis-Ba4YllFm.js.map +0 -1
  1558. package/web-ui/build/static/objectivec-BxEZsjKj.js +0 -2
  1559. package/web-ui/build/static/objectivec-BxEZsjKj.js.map +0 -1
  1560. package/web-ui/build/static/objectivec-DyEJWr7T.js +0 -2
  1561. package/web-ui/build/static/objectivec-DyEJWr7T.js.map +0 -1
  1562. package/web-ui/build/static/ocaml-BZLhoEBj.js +0 -2
  1563. package/web-ui/build/static/ocaml-BZLhoEBj.js.map +0 -1
  1564. package/web-ui/build/static/ocaml-Xt0ZQw7e.js +0 -2
  1565. package/web-ui/build/static/ocaml-Xt0ZQw7e.js.map +0 -1
  1566. package/web-ui/build/static/opencl-BgEBP0EM.js +0 -2
  1567. package/web-ui/build/static/opencl-BgEBP0EM.js.map +0 -1
  1568. package/web-ui/build/static/openqasm-D6BniJ6L.js +0 -2
  1569. package/web-ui/build/static/openqasm-D6BniJ6L.js.map +0 -1
  1570. package/web-ui/build/static/openscad-Cm9pSOJx.js +0 -2
  1571. package/web-ui/build/static/openscad-Cm9pSOJx.js.map +0 -1
  1572. package/web-ui/build/static/oxygene-Bp2e80jA.js +0 -2
  1573. package/web-ui/build/static/oxygene-Bp2e80jA.js.map +0 -1
  1574. package/web-ui/build/static/oz-1fZed9Ln.js +0 -2
  1575. package/web-ui/build/static/oz-1fZed9Ln.js.map +0 -1
  1576. package/web-ui/build/static/parigp-BAPr0f7r.js +0 -2
  1577. package/web-ui/build/static/parigp-BAPr0f7r.js.map +0 -1
  1578. package/web-ui/build/static/parser-BQefhI1K.js +0 -2
  1579. package/web-ui/build/static/parser-BQefhI1K.js.map +0 -1
  1580. package/web-ui/build/static/parser3-elGJSu38.js +0 -2
  1581. package/web-ui/build/static/parser3-elGJSu38.js.map +0 -1
  1582. package/web-ui/build/static/pascal-CCnW1a0e.js +0 -2
  1583. package/web-ui/build/static/pascal-CCnW1a0e.js.map +0 -1
  1584. package/web-ui/build/static/pascaligo-CfEaz3yw.js +0 -2
  1585. package/web-ui/build/static/pascaligo-CfEaz3yw.js.map +0 -1
  1586. package/web-ui/build/static/pcaxis-BDCPPp1_.js +0 -2
  1587. package/web-ui/build/static/pcaxis-BDCPPp1_.js.map +0 -1
  1588. package/web-ui/build/static/peoplecode-DuGFL0lj.js +0 -2
  1589. package/web-ui/build/static/peoplecode-DuGFL0lj.js.map +0 -1
  1590. package/web-ui/build/static/perl-BXE6y_xS.js +0 -2
  1591. package/web-ui/build/static/perl-BXE6y_xS.js.map +0 -1
  1592. package/web-ui/build/static/perl-C_SoFYMv.js +0 -2
  1593. package/web-ui/build/static/perl-C_SoFYMv.js.map +0 -1
  1594. package/web-ui/build/static/pf-CGlU52CJ.js +0 -2
  1595. package/web-ui/build/static/pf-CGlU52CJ.js.map +0 -1
  1596. package/web-ui/build/static/pgsql-BlS6GjvG.js +0 -2
  1597. package/web-ui/build/static/pgsql-BlS6GjvG.js.map +0 -1
  1598. package/web-ui/build/static/php-CdPJ1RGl.js +0 -2
  1599. package/web-ui/build/static/php-CdPJ1RGl.js.map +0 -1
  1600. package/web-ui/build/static/php-Dcv7SuDT.js +0 -2
  1601. package/web-ui/build/static/php-Dcv7SuDT.js.map +0 -1
  1602. package/web-ui/build/static/php-extras-DwytT292.js +0 -2
  1603. package/web-ui/build/static/php-extras-DwytT292.js.map +0 -1
  1604. package/web-ui/build/static/php-template-kKqbhHCA.js +0 -2
  1605. package/web-ui/build/static/php-template-kKqbhHCA.js.map +0 -1
  1606. package/web-ui/build/static/phpdoc-E5fokUFs.js +0 -2
  1607. package/web-ui/build/static/phpdoc-E5fokUFs.js.map +0 -1
  1608. package/web-ui/build/static/plaintext-Ct4oE1X4.js +0 -2
  1609. package/web-ui/build/static/plaintext-Ct4oE1X4.js.map +0 -1
  1610. package/web-ui/build/static/plsql-CWnqoHPE.js +0 -2
  1611. package/web-ui/build/static/plsql-CWnqoHPE.js.map +0 -1
  1612. package/web-ui/build/static/pony-BaPZQfNU.js +0 -2
  1613. package/web-ui/build/static/pony-BaPZQfNU.js.map +0 -1
  1614. package/web-ui/build/static/powerquery-C3tXJ2uI.js +0 -2
  1615. package/web-ui/build/static/powerquery-C3tXJ2uI.js.map +0 -1
  1616. package/web-ui/build/static/powershell-BbPdPSAP.js +0 -2
  1617. package/web-ui/build/static/powershell-BbPdPSAP.js.map +0 -1
  1618. package/web-ui/build/static/powershell-BcEpDYE4.js +0 -2
  1619. package/web-ui/build/static/powershell-BcEpDYE4.js.map +0 -1
  1620. package/web-ui/build/static/processing-B0NH30lD.js +0 -2
  1621. package/web-ui/build/static/processing-B0NH30lD.js.map +0 -1
  1622. package/web-ui/build/static/processing-BFZpjn5e.js +0 -2
  1623. package/web-ui/build/static/processing-BFZpjn5e.js.map +0 -1
  1624. package/web-ui/build/static/profile-BKNJ_gOd.js +0 -2
  1625. package/web-ui/build/static/profile-BKNJ_gOd.js.map +0 -1
  1626. package/web-ui/build/static/prolog-Cr5pilQw.js +0 -2
  1627. package/web-ui/build/static/prolog-Cr5pilQw.js.map +0 -1
  1628. package/web-ui/build/static/prolog-JeNf1WYx.js +0 -2
  1629. package/web-ui/build/static/prolog-JeNf1WYx.js.map +0 -1
  1630. package/web-ui/build/static/promql-CWoWIhDz.js +0 -2
  1631. package/web-ui/build/static/promql-CWoWIhDz.js.map +0 -1
  1632. package/web-ui/build/static/properties-35Yy38Ve.js +0 -2
  1633. package/web-ui/build/static/properties-35Yy38Ve.js.map +0 -1
  1634. package/web-ui/build/static/properties-DXXZ61tT.js +0 -2
  1635. package/web-ui/build/static/properties-DXXZ61tT.js.map +0 -1
  1636. package/web-ui/build/static/protobuf-nFu9eDLU.js +0 -2
  1637. package/web-ui/build/static/protobuf-nFu9eDLU.js.map +0 -1
  1638. package/web-ui/build/static/protobuf-yoE2i3OP.js +0 -2
  1639. package/web-ui/build/static/protobuf-yoE2i3OP.js.map +0 -1
  1640. package/web-ui/build/static/psl-CAKNhaVI.js +0 -2
  1641. package/web-ui/build/static/psl-CAKNhaVI.js.map +0 -1
  1642. package/web-ui/build/static/pug-CI8RwSHa.js +0 -2
  1643. package/web-ui/build/static/pug-CI8RwSHa.js.map +0 -1
  1644. package/web-ui/build/static/puppet-DR7az3Wf.js +0 -2
  1645. package/web-ui/build/static/puppet-DR7az3Wf.js.map +0 -1
  1646. package/web-ui/build/static/puppet-Dx6vC1u-.js +0 -2
  1647. package/web-ui/build/static/puppet-Dx6vC1u-.js.map +0 -1
  1648. package/web-ui/build/static/pure-BQ01lAOn.js +0 -2
  1649. package/web-ui/build/static/pure-BQ01lAOn.js.map +0 -1
  1650. package/web-ui/build/static/purebasic-ZsfLhMCb.js +0 -2
  1651. package/web-ui/build/static/purebasic-ZsfLhMCb.js.map +0 -1
  1652. package/web-ui/build/static/purebasic-xJ6LFMBz.js +0 -2
  1653. package/web-ui/build/static/purebasic-xJ6LFMBz.js.map +0 -1
  1654. package/web-ui/build/static/purescript-LajiG_jD.js +0 -2
  1655. package/web-ui/build/static/purescript-LajiG_jD.js.map +0 -1
  1656. package/web-ui/build/static/python-BFhspOyV.js +0 -2
  1657. package/web-ui/build/static/python-BFhspOyV.js.map +0 -1
  1658. package/web-ui/build/static/python-BtRrADJB.js +0 -2
  1659. package/web-ui/build/static/python-BtRrADJB.js.map +0 -1
  1660. package/web-ui/build/static/python-repl-DNW7xX3F.js +0 -2
  1661. package/web-ui/build/static/python-repl-DNW7xX3F.js.map +0 -1
  1662. package/web-ui/build/static/q-DImkSPDX.js +0 -2
  1663. package/web-ui/build/static/q-DImkSPDX.js.map +0 -1
  1664. package/web-ui/build/static/q-gc8CN775.js +0 -2
  1665. package/web-ui/build/static/q-gc8CN775.js.map +0 -1
  1666. package/web-ui/build/static/qml-ByOF3YcL.js +0 -2
  1667. package/web-ui/build/static/qml-ByOF3YcL.js.map +0 -1
  1668. package/web-ui/build/static/qml-DSXJgLbV.js +0 -2
  1669. package/web-ui/build/static/qml-DSXJgLbV.js.map +0 -1
  1670. package/web-ui/build/static/qore-Bnm9Q_tM.js +0 -2
  1671. package/web-ui/build/static/qore-Bnm9Q_tM.js.map +0 -1
  1672. package/web-ui/build/static/qsharp-Bwy4Obue.js +0 -2
  1673. package/web-ui/build/static/qsharp-Bwy4Obue.js.map +0 -1
  1674. package/web-ui/build/static/r-BkRGLx5M.js +0 -2
  1675. package/web-ui/build/static/r-BkRGLx5M.js.map +0 -1
  1676. package/web-ui/build/static/r-C6pP0_0c.js +0 -2
  1677. package/web-ui/build/static/r-C6pP0_0c.js.map +0 -1
  1678. package/web-ui/build/static/racket-QGJWcbA6.js +0 -2
  1679. package/web-ui/build/static/racket-QGJWcbA6.js.map +0 -1
  1680. package/web-ui/build/static/reason-9gny3QTi.js +0 -2
  1681. package/web-ui/build/static/reason-9gny3QTi.js.map +0 -1
  1682. package/web-ui/build/static/reasonml-DrLDPFZX.js +0 -2
  1683. package/web-ui/build/static/reasonml-DrLDPFZX.js.map +0 -1
  1684. package/web-ui/build/static/regex-qMRSM9QB.js +0 -2
  1685. package/web-ui/build/static/regex-qMRSM9QB.js.map +0 -1
  1686. package/web-ui/build/static/rego-DGuTf2b6.js +0 -2
  1687. package/web-ui/build/static/rego-DGuTf2b6.js.map +0 -1
  1688. package/web-ui/build/static/renpy-ChVyf5sZ.js +0 -2
  1689. package/web-ui/build/static/renpy-ChVyf5sZ.js.map +0 -1
  1690. package/web-ui/build/static/rest-BblHwMct.js +0 -2
  1691. package/web-ui/build/static/rest-BblHwMct.js.map +0 -1
  1692. package/web-ui/build/static/rib-CFlTDVqt.js +0 -2
  1693. package/web-ui/build/static/rib-CFlTDVqt.js.map +0 -1
  1694. package/web-ui/build/static/rip-LD_w9DSd.js +0 -2
  1695. package/web-ui/build/static/rip-LD_w9DSd.js.map +0 -1
  1696. package/web-ui/build/static/roboconf-Bu5NiP5d.js +0 -2
  1697. package/web-ui/build/static/roboconf-Bu5NiP5d.js.map +0 -1
  1698. package/web-ui/build/static/roboconf-C5bNJjuR.js +0 -2
  1699. package/web-ui/build/static/roboconf-C5bNJjuR.js.map +0 -1
  1700. package/web-ui/build/static/robotframework-2eDAxDTe.js +0 -2
  1701. package/web-ui/build/static/robotframework-2eDAxDTe.js.map +0 -1
  1702. package/web-ui/build/static/routeros-Ccon739j.js +0 -2
  1703. package/web-ui/build/static/routeros-Ccon739j.js.map +0 -1
  1704. package/web-ui/build/static/rsl-80tdnNlP.js +0 -2
  1705. package/web-ui/build/static/rsl-80tdnNlP.js.map +0 -1
  1706. package/web-ui/build/static/ruby-BdEyJsJD.js +0 -2
  1707. package/web-ui/build/static/ruby-BdEyJsJD.js.map +0 -1
  1708. package/web-ui/build/static/ruby-DRIP-eLy.js +0 -2
  1709. package/web-ui/build/static/ruby-DRIP-eLy.js.map +0 -1
  1710. package/web-ui/build/static/ruleslanguage-BPFhrfFe.js +0 -2
  1711. package/web-ui/build/static/ruleslanguage-BPFhrfFe.js.map +0 -1
  1712. package/web-ui/build/static/rust-DGOFHfWr.js +0 -2
  1713. package/web-ui/build/static/rust-DGOFHfWr.js.map +0 -1
  1714. package/web-ui/build/static/rust-sYhKMGAU.js +0 -2
  1715. package/web-ui/build/static/rust-sYhKMGAU.js.map +0 -1
  1716. package/web-ui/build/static/sas-C9jSKV7l.js +0 -2
  1717. package/web-ui/build/static/sas-C9jSKV7l.js.map +0 -1
  1718. package/web-ui/build/static/sas-Dw-kwTvd.js +0 -2
  1719. package/web-ui/build/static/sas-Dw-kwTvd.js.map +0 -1
  1720. package/web-ui/build/static/sass-QanR8d0y.js +0 -2
  1721. package/web-ui/build/static/sass-QanR8d0y.js.map +0 -1
  1722. package/web-ui/build/static/scala-B_41N8CK.js +0 -2
  1723. package/web-ui/build/static/scala-B_41N8CK.js.map +0 -1
  1724. package/web-ui/build/static/scala-NhaQtgfI.js +0 -2
  1725. package/web-ui/build/static/scala-NhaQtgfI.js.map +0 -1
  1726. package/web-ui/build/static/scheme-CdkFg8f2.js +0 -2
  1727. package/web-ui/build/static/scheme-CdkFg8f2.js.map +0 -1
  1728. package/web-ui/build/static/scheme-D8C6NMBk.js +0 -2
  1729. package/web-ui/build/static/scheme-D8C6NMBk.js.map +0 -1
  1730. package/web-ui/build/static/scilab-DwHPZxdA.js +0 -2
  1731. package/web-ui/build/static/scilab-DwHPZxdA.js.map +0 -1
  1732. package/web-ui/build/static/scss-DA3NwUoU.js +0 -2
  1733. package/web-ui/build/static/scss-DA3NwUoU.js.map +0 -1
  1734. package/web-ui/build/static/scss-xoahYycu.js +0 -2
  1735. package/web-ui/build/static/scss-xoahYycu.js.map +0 -1
  1736. package/web-ui/build/static/shell-BNCYooEv.js +0 -2
  1737. package/web-ui/build/static/shell-BNCYooEv.js.map +0 -1
  1738. package/web-ui/build/static/shell-session-BHivd8nO.js +0 -2
  1739. package/web-ui/build/static/shell-session-BHivd8nO.js.map +0 -1
  1740. package/web-ui/build/static/smali-CQLbUppv.js +0 -2
  1741. package/web-ui/build/static/smali-CQLbUppv.js.map +0 -1
  1742. package/web-ui/build/static/smali-DfUCwm0R.js +0 -2
  1743. package/web-ui/build/static/smali-DfUCwm0R.js.map +0 -1
  1744. package/web-ui/build/static/smalltalk-Bwy3_s-9.js +0 -2
  1745. package/web-ui/build/static/smalltalk-Bwy3_s-9.js.map +0 -1
  1746. package/web-ui/build/static/smalltalk-DUE0NAtJ.js +0 -2
  1747. package/web-ui/build/static/smalltalk-DUE0NAtJ.js.map +0 -1
  1748. package/web-ui/build/static/smarty-DbGvc9xG.js +0 -2
  1749. package/web-ui/build/static/smarty-DbGvc9xG.js.map +0 -1
  1750. package/web-ui/build/static/sml-CI5EQ0Qu.js +0 -2
  1751. package/web-ui/build/static/sml-CI5EQ0Qu.js.map +0 -1
  1752. package/web-ui/build/static/sml-DSxIexhe.js +0 -2
  1753. package/web-ui/build/static/sml-DSxIexhe.js.map +0 -1
  1754. package/web-ui/build/static/solidity-DCMKFdNo.js +0 -2
  1755. package/web-ui/build/static/solidity-DCMKFdNo.js.map +0 -1
  1756. package/web-ui/build/static/solution-file-NT8KtQ-w.js +0 -2
  1757. package/web-ui/build/static/solution-file-NT8KtQ-w.js.map +0 -1
  1758. package/web-ui/build/static/soy-B110XdmA.js +0 -2
  1759. package/web-ui/build/static/soy-B110XdmA.js.map +0 -1
  1760. package/web-ui/build/static/sparql-BxnUbvHo.js +0 -2
  1761. package/web-ui/build/static/sparql-BxnUbvHo.js.map +0 -1
  1762. package/web-ui/build/static/splunk-spl-pwxmjPEj.js +0 -2
  1763. package/web-ui/build/static/splunk-spl-pwxmjPEj.js.map +0 -1
  1764. package/web-ui/build/static/sqf-BXo2Ucnl.js +0 -2
  1765. package/web-ui/build/static/sqf-BXo2Ucnl.js.map +0 -1
  1766. package/web-ui/build/static/sqf-DOFfGLF3.js +0 -2
  1767. package/web-ui/build/static/sqf-DOFfGLF3.js.map +0 -1
  1768. package/web-ui/build/static/sql-DBti3yHe.js +0 -2
  1769. package/web-ui/build/static/sql-DBti3yHe.js.map +0 -1
  1770. package/web-ui/build/static/sql-tKjJECQp.js +0 -2
  1771. package/web-ui/build/static/sql-tKjJECQp.js.map +0 -1
  1772. package/web-ui/build/static/sql_more-e8p64rgQ.js +0 -2
  1773. package/web-ui/build/static/sql_more-e8p64rgQ.js.map +0 -1
  1774. package/web-ui/build/static/squirrel-BgryDToh.js +0 -2
  1775. package/web-ui/build/static/squirrel-BgryDToh.js.map +0 -1
  1776. package/web-ui/build/static/stan-Bp3Ji6gl.js +0 -2
  1777. package/web-ui/build/static/stan-Bp3Ji6gl.js.map +0 -1
  1778. package/web-ui/build/static/stan-KiJ_x44p.js +0 -2
  1779. package/web-ui/build/static/stan-KiJ_x44p.js.map +0 -1
  1780. package/web-ui/build/static/stata-Ct8C8WO9.js +0 -2
  1781. package/web-ui/build/static/stata-Ct8C8WO9.js.map +0 -1
  1782. package/web-ui/build/static/step21-DMjDkTBx.js +0 -2
  1783. package/web-ui/build/static/step21-DMjDkTBx.js.map +0 -1
  1784. package/web-ui/build/static/stylus-CmKvhQaT.js +0 -2
  1785. package/web-ui/build/static/stylus-CmKvhQaT.js.map +0 -1
  1786. package/web-ui/build/static/stylus-DBi1AjDZ.js +0 -2
  1787. package/web-ui/build/static/stylus-DBi1AjDZ.js.map +0 -1
  1788. package/web-ui/build/static/subunit-DfUk55-B.js +0 -2
  1789. package/web-ui/build/static/subunit-DfUk55-B.js.map +0 -1
  1790. package/web-ui/build/static/swift-B_SThX1_.js +0 -2
  1791. package/web-ui/build/static/swift-B_SThX1_.js.map +0 -1
  1792. package/web-ui/build/static/swift-DlYKJDzH.js +0 -2
  1793. package/web-ui/build/static/swift-DlYKJDzH.js.map +0 -1
  1794. package/web-ui/build/static/systemd-BQk3UqOg.js +0 -2
  1795. package/web-ui/build/static/systemd-BQk3UqOg.js.map +0 -1
  1796. package/web-ui/build/static/t4-cs-CLhFWwmv.js +0 -2
  1797. package/web-ui/build/static/t4-cs-CLhFWwmv.js.map +0 -1
  1798. package/web-ui/build/static/t4-templating-9ygezJzV.js +0 -2
  1799. package/web-ui/build/static/t4-templating-9ygezJzV.js.map +0 -1
  1800. package/web-ui/build/static/t4-vb-B17jU_4m.js +0 -2
  1801. package/web-ui/build/static/t4-vb-B17jU_4m.js.map +0 -1
  1802. package/web-ui/build/static/taggerscript-DFTkn-cd.js +0 -2
  1803. package/web-ui/build/static/taggerscript-DFTkn-cd.js.map +0 -1
  1804. package/web-ui/build/static/tap-DiTGXlEA.js +0 -2
  1805. package/web-ui/build/static/tap-DiTGXlEA.js.map +0 -1
  1806. package/web-ui/build/static/tap-ytAGuQzI.js +0 -2
  1807. package/web-ui/build/static/tap-ytAGuQzI.js.map +0 -1
  1808. package/web-ui/build/static/tcl-B8fFBHry.js +0 -2
  1809. package/web-ui/build/static/tcl-B8fFBHry.js.map +0 -1
  1810. package/web-ui/build/static/tcl-D8AopmOP.js +0 -2
  1811. package/web-ui/build/static/tcl-D8AopmOP.js.map +0 -1
  1812. package/web-ui/build/static/textile-COphc5sd.js +0 -2
  1813. package/web-ui/build/static/textile-COphc5sd.js.map +0 -1
  1814. package/web-ui/build/static/thrift-DZ7DTn1f.js +0 -2
  1815. package/web-ui/build/static/thrift-DZ7DTn1f.js.map +0 -1
  1816. package/web-ui/build/static/toml-DTUiF9Km.js +0 -2
  1817. package/web-ui/build/static/toml-DTUiF9Km.js.map +0 -1
  1818. package/web-ui/build/static/tp-CE4XvH5p.js +0 -2
  1819. package/web-ui/build/static/tp-CE4XvH5p.js.map +0 -1
  1820. package/web-ui/build/static/tremor-C77yMHA3.js +0 -2
  1821. package/web-ui/build/static/tremor-C77yMHA3.js.map +0 -1
  1822. package/web-ui/build/static/tsx-C7MW58r5.js +0 -2
  1823. package/web-ui/build/static/tsx-C7MW58r5.js.map +0 -1
  1824. package/web-ui/build/static/tt2-5O1-qC4O.js +0 -2
  1825. package/web-ui/build/static/tt2-5O1-qC4O.js.map +0 -1
  1826. package/web-ui/build/static/turtle-BSGDucZJ.js +0 -2
  1827. package/web-ui/build/static/turtle-BSGDucZJ.js.map +0 -1
  1828. package/web-ui/build/static/twig-Ck8WO3xA.js +0 -2
  1829. package/web-ui/build/static/twig-Ck8WO3xA.js.map +0 -1
  1830. package/web-ui/build/static/twig-do5vUUyw.js +0 -2
  1831. package/web-ui/build/static/twig-do5vUUyw.js.map +0 -1
  1832. package/web-ui/build/static/typescript-BLsAxuVG.js +0 -2
  1833. package/web-ui/build/static/typescript-BLsAxuVG.js.map +0 -1
  1834. package/web-ui/build/static/typescript-nM_dxKP9.js +0 -2
  1835. package/web-ui/build/static/typescript-nM_dxKP9.js.map +0 -1
  1836. package/web-ui/build/static/typoscript-BvcgqSqY.js +0 -2
  1837. package/web-ui/build/static/typoscript-BvcgqSqY.js.map +0 -1
  1838. package/web-ui/build/static/unrealscript-CTWC-bVY.js +0 -2
  1839. package/web-ui/build/static/unrealscript-CTWC-bVY.js.map +0 -1
  1840. package/web-ui/build/static/uorazor-Dilz5RNV.js +0 -2
  1841. package/web-ui/build/static/uorazor-Dilz5RNV.js.map +0 -1
  1842. package/web-ui/build/static/uri-Bmls2-DT.js +0 -2
  1843. package/web-ui/build/static/uri-Bmls2-DT.js.map +0 -1
  1844. package/web-ui/build/static/v-BgLQ9Ycc.js +0 -2
  1845. package/web-ui/build/static/v-BgLQ9Ycc.js.map +0 -1
  1846. package/web-ui/build/static/vala-Cm3y_G3H.js +0 -2
  1847. package/web-ui/build/static/vala-Cm3y_G3H.js.map +0 -1
  1848. package/web-ui/build/static/vala-TZsbQ-Zc.js +0 -2
  1849. package/web-ui/build/static/vala-TZsbQ-Zc.js.map +0 -1
  1850. package/web-ui/build/static/vbnet-CUR-ZLCX.js +0 -2
  1851. package/web-ui/build/static/vbnet-CUR-ZLCX.js.map +0 -1
  1852. package/web-ui/build/static/vbnet-DSoNQ2XW.js +0 -2
  1853. package/web-ui/build/static/vbnet-DSoNQ2XW.js.map +0 -1
  1854. package/web-ui/build/static/vbscript-BartKsJT.js +0 -2
  1855. package/web-ui/build/static/vbscript-BartKsJT.js.map +0 -1
  1856. package/web-ui/build/static/vbscript-html-0hiakhFr.js +0 -2
  1857. package/web-ui/build/static/vbscript-html-0hiakhFr.js.map +0 -1
  1858. package/web-ui/build/static/velocity-D3j90RKr.js +0 -2
  1859. package/web-ui/build/static/velocity-D3j90RKr.js.map +0 -1
  1860. package/web-ui/build/static/verilog-Cq1a8DdU.js +0 -2
  1861. package/web-ui/build/static/verilog-Cq1a8DdU.js.map +0 -1
  1862. package/web-ui/build/static/verilog-OBAeWcRM.js +0 -2
  1863. package/web-ui/build/static/verilog-OBAeWcRM.js.map +0 -1
  1864. package/web-ui/build/static/vhdl-CtePii6W.js +0 -2
  1865. package/web-ui/build/static/vhdl-CtePii6W.js.map +0 -1
  1866. package/web-ui/build/static/vhdl-DxAm5hhA.js +0 -2
  1867. package/web-ui/build/static/vhdl-DxAm5hhA.js.map +0 -1
  1868. package/web-ui/build/static/vim-Bnpwnm1H.js +0 -2
  1869. package/web-ui/build/static/vim-Bnpwnm1H.js.map +0 -1
  1870. package/web-ui/build/static/vim-DOPRcHbu.js +0 -2
  1871. package/web-ui/build/static/vim-DOPRcHbu.js.map +0 -1
  1872. package/web-ui/build/static/visual-basic-CmvWs8Y4.js +0 -2
  1873. package/web-ui/build/static/visual-basic-CmvWs8Y4.js.map +0 -1
  1874. package/web-ui/build/static/warpscript-C7JXAeCX.js +0 -2
  1875. package/web-ui/build/static/warpscript-C7JXAeCX.js.map +0 -1
  1876. package/web-ui/build/static/wasm-Dg1iRB1P.js +0 -2
  1877. package/web-ui/build/static/wasm-Dg1iRB1P.js.map +0 -1
  1878. package/web-ui/build/static/web-idl-312gICJ_.js +0 -2
  1879. package/web-ui/build/static/web-idl-312gICJ_.js.map +0 -1
  1880. package/web-ui/build/static/wiki-CETWrb77.js +0 -2
  1881. package/web-ui/build/static/wiki-CETWrb77.js.map +0 -1
  1882. package/web-ui/build/static/wolfram-CChr8eAu.js +0 -2
  1883. package/web-ui/build/static/wolfram-CChr8eAu.js.map +0 -1
  1884. package/web-ui/build/static/wren-CNDfGy-a.js +0 -2
  1885. package/web-ui/build/static/wren-CNDfGy-a.js.map +0 -1
  1886. package/web-ui/build/static/x86asm-KOsBAi6G.js +0 -2
  1887. package/web-ui/build/static/x86asm-KOsBAi6G.js.map +0 -1
  1888. package/web-ui/build/static/xeora-DiFTTjrx.js +0 -2
  1889. package/web-ui/build/static/xeora-DiFTTjrx.js.map +0 -1
  1890. package/web-ui/build/static/xl-C4U3E450.js +0 -2
  1891. package/web-ui/build/static/xl-C4U3E450.js.map +0 -1
  1892. package/web-ui/build/static/xml-XTmTOewe.js +0 -2
  1893. package/web-ui/build/static/xml-XTmTOewe.js.map +0 -1
  1894. package/web-ui/build/static/xml-doc-BWJd7KnA.js +0 -2
  1895. package/web-ui/build/static/xml-doc-BWJd7KnA.js.map +0 -1
  1896. package/web-ui/build/static/xojo-DGqISLW2.js +0 -2
  1897. package/web-ui/build/static/xojo-DGqISLW2.js.map +0 -1
  1898. package/web-ui/build/static/xquery-CKOwjxR8.js +0 -2
  1899. package/web-ui/build/static/xquery-CKOwjxR8.js.map +0 -1
  1900. package/web-ui/build/static/xquery-DRRK5ve6.js +0 -2
  1901. package/web-ui/build/static/xquery-DRRK5ve6.js.map +0 -1
  1902. package/web-ui/build/static/yaml-BsesZJLa.js +0 -2
  1903. package/web-ui/build/static/yaml-BsesZJLa.js.map +0 -1
  1904. package/web-ui/build/static/yaml-lmNFW8ON.js +0 -2
  1905. package/web-ui/build/static/yaml-lmNFW8ON.js.map +0 -1
  1906. package/web-ui/build/static/yang-D2XecjdJ.js +0 -2
  1907. package/web-ui/build/static/yang-D2XecjdJ.js.map +0 -1
  1908. package/web-ui/build/static/zephir-B1iL3iT8.js +0 -2
  1909. package/web-ui/build/static/zephir-B1iL3iT8.js.map +0 -1
  1910. package/web-ui/build/static/zig-D4xcy35B.js +0 -2
  1911. package/web-ui/build/static/zig-D4xcy35B.js.map +0 -1
@@ -1,685 +1,794 @@
1
- /**
2
- * Credential Vault Service
3
- *
4
- * Purpose:
5
- * - Securely store website login credentials with AES-256-GCM encryption
6
- * - Store authentication sessions (cookies) for reuse
7
- * - Provide credentials to browser tool without exposing to AI agents
8
- * - Support credential injection for automated login flows
9
- *
10
- * Security Model:
11
- * - Credentials are encrypted at rest using machine-specific key derivation
12
- * - Credentials are NEVER exposed to AI agents or included in conversation context
13
- * - Only the browser tool can access credentials for form filling
14
- * - Sessions include expiry tracking for automatic cleanup
15
- */
16
-
17
- import { promises as fs } from 'fs';
18
- import path from 'path';
19
- import crypto from 'crypto';
20
- import os from 'os';
21
- import { getUserDataPaths, ensureUserDataDirs } from '../utilities/userDataDir.js';
22
- import {
23
- CREDENTIAL_CONFIG,
24
- KNOWN_SITES,
25
- CREDENTIAL_EVENTS
26
- } from '../utilities/stealthConstants.js';
27
-
28
- // Encryption configuration (from constants)
29
- const ALGORITHM = CREDENTIAL_CONFIG.ENCRYPTION_ALGORITHM;
30
- const KEY_LENGTH = 32; // 256 bits
31
- const IV_LENGTH = CREDENTIAL_CONFIG.IV_LENGTH;
32
- const AUTH_TAG_LENGTH = CREDENTIAL_CONFIG.AUTH_TAG_LENGTH;
33
- const SALT_LENGTH = CREDENTIAL_CONFIG.SALT_LENGTH;
34
- const PBKDF2_ITERATIONS = CREDENTIAL_CONFIG.KEY_DERIVATION_ITERATIONS;
35
-
36
- class CredentialVault {
37
- constructor(logger = null) {
38
- this.logger = logger;
39
-
40
- // In-memory storage
41
- this.credentials = new Map(); // siteId -> credential data
42
- this.sessions = new Map(); // siteId -> session cookies
43
-
44
- // Pending credential requests (for async UI flow)
45
- this.pendingRequests = new Map(); // requestId -> { resolve, reject, timeout }
46
-
47
- // Persistence configuration
48
- this.credentialsFile = null;
49
- this.sessionsFile = null;
50
- this.encryptionKey = null;
51
- this.initialized = false;
52
- }
53
-
54
- /**
55
- * Initialize persistence - must be called before using vault
56
- * @returns {Promise<void>}
57
- */
58
- async initialize() {
59
- if (this.initialized) return;
60
-
61
- try {
62
- await ensureUserDataDirs();
63
- const paths = getUserDataPaths();
64
- const settingsDir = paths.settings;
65
-
66
- this.credentialsFile = path.join(settingsDir, CREDENTIAL_CONFIG.STORAGE.CREDENTIALS_FILE);
67
- this.sessionsFile = path.join(settingsDir, CREDENTIAL_CONFIG.STORAGE.SESSIONS_FILE);
68
-
69
- // Generate or load machine-specific encryption key
70
- this.encryptionKey = await this._getOrCreateEncryptionKey(settingsDir);
71
-
72
- // Load persisted data
73
- await this._loadCredentials();
74
- await this._loadSessions();
75
-
76
- // Cleanup expired sessions
77
- this._cleanupExpiredSessions();
78
-
79
- this.initialized = true;
80
- this.logger?.info('[CredentialVault] Initialized', {
81
- credentialsCount: this.credentials.size,
82
- sessionsCount: this.sessions.size
83
- });
84
- } catch (error) {
85
- this.logger?.warn('[CredentialVault] Initialization failed, using memory-only mode', {
86
- error: error.message
87
- });
88
- }
89
- }
90
-
91
- /**
92
- * Get or create a machine-specific encryption key
93
- * @private
94
- */
95
- async _getOrCreateEncryptionKey(settingsDir) {
96
- const saltFile = path.join(settingsDir, '.credential-salt');
97
- let salt;
98
-
99
- try {
100
- salt = await fs.readFile(saltFile);
101
- } catch {
102
- // Generate new salt
103
- salt = crypto.randomBytes(SALT_LENGTH);
104
- await fs.writeFile(saltFile, salt, { mode: 0o600 });
105
- this.logger?.info('[CredentialVault] Generated new encryption salt');
106
- }
107
-
108
- // Derive key from salt + machine-specific data
109
- const machineData = this._getMachineIdentifier();
110
- const key = crypto.pbkdf2Sync(
111
- machineData,
112
- salt,
113
- PBKDF2_ITERATIONS,
114
- KEY_LENGTH,
115
- 'sha256'
116
- );
117
-
118
- return key;
119
- }
120
-
121
- /**
122
- * Get a machine-specific identifier for key derivation
123
- * @private
124
- */
125
- _getMachineIdentifier() {
126
- const parts = [
127
- os.hostname(),
128
- os.homedir(),
129
- os.userInfo().username,
130
- process.platform,
131
- 'loxia-credential-vault-v1'
132
- ];
133
- return parts.join(':');
134
- }
135
-
136
- /**
137
- * Encrypt data using AES-256-GCM
138
- * @private
139
- */
140
- _encrypt(plaintext) {
141
- if (!this.encryptionKey) {
142
- throw new Error('Encryption key not initialized');
143
- }
144
-
145
- const iv = crypto.randomBytes(IV_LENGTH);
146
- const cipher = crypto.createCipheriv(ALGORITHM, this.encryptionKey, iv);
147
-
148
- let encrypted = cipher.update(plaintext, 'utf8', 'base64');
149
- encrypted += cipher.final('base64');
150
-
151
- const authTag = cipher.getAuthTag();
152
-
153
- // Combine IV + authTag + encrypted data
154
- const combined = Buffer.concat([
155
- iv,
156
- authTag,
157
- Buffer.from(encrypted, 'base64')
158
- ]);
159
-
160
- return combined.toString('base64');
161
- }
162
-
163
- /**
164
- * Decrypt data using AES-256-GCM
165
- * @private
166
- */
167
- _decrypt(encryptedData) {
168
- if (!this.encryptionKey) {
169
- throw new Error('Encryption key not initialized');
170
- }
171
-
172
- const combined = Buffer.from(encryptedData, 'base64');
173
-
174
- // Extract IV, authTag, and encrypted data
175
- const iv = combined.subarray(0, IV_LENGTH);
176
- const authTag = combined.subarray(IV_LENGTH, IV_LENGTH + AUTH_TAG_LENGTH);
177
- const encrypted = combined.subarray(IV_LENGTH + AUTH_TAG_LENGTH);
178
-
179
- const decipher = crypto.createDecipheriv(ALGORITHM, this.encryptionKey, iv);
180
- decipher.setAuthTag(authTag);
181
-
182
- let decrypted = decipher.update(encrypted.toString('base64'), 'base64', 'utf8');
183
- decrypted += decipher.final('utf8');
184
-
185
- return decrypted;
186
- }
187
-
188
- // ============================================================
189
- // Credential Management
190
- // ============================================================
191
-
192
- /**
193
- * Store credentials for a site
194
- * @param {string} siteId - Site identifier (e.g., 'linkedin', 'github')
195
- * @param {Object} credentials - Credential data
196
- * @param {string} credentials.username - Username or email
197
- * @param {string} credentials.password - Password
198
- * @param {string} [credentials.loginUrl] - Custom login URL
199
- * @param {Object} [credentials.selectors] - Custom CSS selectors
200
- * @returns {Promise<void>}
201
- */
202
- async saveCredentials(siteId, credentials) {
203
- if (!siteId || !credentials.username || !credentials.password) {
204
- throw new Error('siteId, username, and password are required');
205
- }
206
-
207
- const normalizedId = siteId.toLowerCase().trim();
208
-
209
- // Get known site info if available
210
- const knownSite = KNOWN_SITES[normalizedId];
211
-
212
- const credentialEntry = {
213
- siteId: normalizedId,
214
- name: knownSite?.name || normalizedId,
215
- username: credentials.username,
216
- password: credentials.password,
217
- loginUrl: credentials.loginUrl || knownSite?.loginUrl || null,
218
- selectors: credentials.selectors || knownSite?.selectors || null,
219
- usernameType: credentials.usernameType || knownSite?.usernameType || 'email',
220
- multiStep: credentials.multiStep || knownSite?.multiStep || false,
221
- createdAt: Date.now(),
222
- lastUsed: null
223
- };
224
-
225
- this.credentials.set(normalizedId, credentialEntry);
226
-
227
- await this._persistCredentials();
228
-
229
- this.logger?.info('[CredentialVault] Credentials saved', {
230
- siteId: normalizedId,
231
- username: this._maskUsername(credentials.username)
232
- });
233
- }
234
-
235
- /**
236
- * Get credentials for a site (internal use only - never expose to agent)
237
- * @param {string} siteId - Site identifier
238
- * @returns {Object|null} Credential data or null
239
- */
240
- getCredentials(siteId) {
241
- const normalizedId = siteId.toLowerCase().trim();
242
- const entry = this.credentials.get(normalizedId);
243
-
244
- if (entry) {
245
- // Update last used timestamp
246
- entry.lastUsed = Date.now();
247
- this._persistCredentials().catch(() => {}); // Fire and forget
248
- }
249
-
250
- return entry || null;
251
- }
252
-
253
- /**
254
- * Check if credentials exist for a site
255
- * @param {string} siteId - Site identifier
256
- * @returns {boolean}
257
- */
258
- hasCredentials(siteId) {
259
- const normalizedId = siteId.toLowerCase().trim();
260
- return this.credentials.has(normalizedId);
261
- }
262
-
263
- /**
264
- * Delete credentials for a site
265
- * @param {string} siteId - Site identifier
266
- * @returns {Promise<boolean>} True if deleted
267
- */
268
- async deleteCredentials(siteId) {
269
- const normalizedId = siteId.toLowerCase().trim();
270
- const deleted = this.credentials.delete(normalizedId);
271
-
272
- if (deleted) {
273
- await this._persistCredentials();
274
- // Also delete associated session
275
- await this.deleteSession(normalizedId);
276
- this.logger?.info('[CredentialVault] Credentials deleted', { siteId: normalizedId });
277
- }
278
-
279
- return deleted;
280
- }
281
-
282
- /**
283
- * List all stored credentials (safe version without passwords)
284
- * @returns {Array} Array of credential summaries
285
- */
286
- listCredentials() {
287
- const list = [];
288
- for (const [siteId, entry] of this.credentials) {
289
- list.push({
290
- siteId,
291
- name: entry.name,
292
- username: this._maskUsername(entry.username),
293
- loginUrl: entry.loginUrl,
294
- createdAt: entry.createdAt,
295
- lastUsed: entry.lastUsed,
296
- hasSession: this.sessions.has(siteId)
297
- });
298
- }
299
- return list.sort((a, b) => (b.lastUsed || 0) - (a.lastUsed || 0));
300
- }
301
-
302
- // ============================================================
303
- // Session Management
304
- // ============================================================
305
-
306
- /**
307
- * Save authentication session (cookies) for a site
308
- * @param {string} siteId - Site identifier
309
- * @param {Array} cookies - Array of cookie objects from Puppeteer
310
- * @returns {Promise<void>}
311
- */
312
- async saveSession(siteId, cookies) {
313
- const normalizedId = siteId.toLowerCase().trim();
314
-
315
- const sessionEntry = {
316
- siteId: normalizedId,
317
- cookies,
318
- savedAt: Date.now(),
319
- expiresAt: Date.now() + CREDENTIAL_CONFIG.SESSION_EXPIRY_MS
320
- };
321
-
322
- this.sessions.set(normalizedId, sessionEntry);
323
- await this._persistSessions();
324
-
325
- this.logger?.info('[CredentialVault] Session saved', {
326
- siteId: normalizedId,
327
- cookiesCount: cookies.length
328
- });
329
- }
330
-
331
- /**
332
- * Get session cookies for a site
333
- * @param {string} siteId - Site identifier
334
- * @returns {Object|null} Session data or null
335
- */
336
- getSession(siteId) {
337
- const normalizedId = siteId.toLowerCase().trim();
338
- const entry = this.sessions.get(normalizedId);
339
-
340
- if (!entry) return null;
341
-
342
- // Check if session has expired
343
- if (Date.now() > entry.expiresAt) {
344
- this.sessions.delete(normalizedId);
345
- this._persistSessions().catch(() => {});
346
- return null;
347
- }
348
-
349
- return entry;
350
- }
351
-
352
- /**
353
- * Get all stored sessions (for cookie restoration)
354
- * @returns {Object} Map of siteId -> session data
355
- */
356
- getAllSessions() {
357
- const result = {};
358
- const now = Date.now();
359
-
360
- for (const [siteId, entry] of this.sessions) {
361
- // Skip expired sessions
362
- if (now > entry.expiresAt) {
363
- continue;
364
- }
365
- result[siteId] = entry;
366
- }
367
-
368
- return result;
369
- }
370
-
371
- /**
372
- * Delete session for a site
373
- * @param {string} siteId - Site identifier
374
- * @returns {Promise<boolean>}
375
- */
376
- async deleteSession(siteId) {
377
- const normalizedId = siteId.toLowerCase().trim();
378
- const deleted = this.sessions.delete(normalizedId);
379
-
380
- if (deleted) {
381
- await this._persistSessions();
382
- this.logger?.info('[CredentialVault] Session deleted', { siteId: normalizedId });
383
- }
384
-
385
- return deleted;
386
- }
387
-
388
- /**
389
- * Cleanup expired sessions
390
- * @private
391
- */
392
- _cleanupExpiredSessions() {
393
- const now = Date.now();
394
- let cleaned = 0;
395
-
396
- for (const [siteId, entry] of this.sessions) {
397
- if (now > entry.expiresAt) {
398
- this.sessions.delete(siteId);
399
- cleaned++;
400
- }
401
- }
402
-
403
- if (cleaned > 0) {
404
- this._persistSessions().catch(() => {});
405
- this.logger?.info('[CredentialVault] Cleaned up expired sessions', { count: cleaned });
406
- }
407
- }
408
-
409
- // ============================================================
410
- // Async Credential Request Flow
411
- // ============================================================
412
-
413
- /**
414
- * Create a credential request (for UI prompt flow)
415
- * @param {string} siteId - Site identifier
416
- * @param {Object} options - Request options
417
- * @returns {Promise<Object>} Request info for WebSocket
418
- */
419
- createCredentialRequest(siteId, options = {}) {
420
- const requestId = `cred_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;
421
- const normalizedId = siteId.toLowerCase().trim();
422
- const knownSite = KNOWN_SITES[normalizedId];
423
-
424
- const createdAt = Date.now();
425
- const requestInfo = {
426
- requestId,
427
- siteId: normalizedId,
428
- siteName: knownSite?.name || normalizedId,
429
- loginUrl: options.loginUrl || knownSite?.loginUrl || null,
430
- fields: options.fields || ['username', 'password'],
431
- usernameType: knownSite?.usernameType || 'email',
432
- agentId: options.agentId || null,
433
- createdAt,
434
- timeout: createdAt + CREDENTIAL_CONFIG.REQUEST_TIMEOUT_MS // Timestamp when request expires
435
- };
436
-
437
- // Create a promise that will be resolved when credentials are submitted
438
- const promise = new Promise((resolve, reject) => {
439
- // Set timeout for credential request
440
- const timeout = setTimeout(() => {
441
- this.pendingRequests.delete(requestId);
442
- reject(new Error(`Credential request timed out for ${normalizedId}`));
443
- }, CREDENTIAL_CONFIG.REQUEST_TIMEOUT_MS);
444
-
445
- this.pendingRequests.set(requestId, {
446
- resolve,
447
- reject,
448
- timeout,
449
- requestInfo
450
- });
451
- });
452
-
453
- this.logger?.info('[CredentialVault] Credential request created', {
454
- requestId,
455
- siteId: normalizedId
456
- });
457
-
458
- return {
459
- requestInfo,
460
- promise
461
- };
462
- }
463
-
464
- /**
465
- * Submit credentials for a pending request
466
- * @param {string} requestId - Request ID
467
- * @param {Object} credentials - Submitted credentials
468
- * @param {boolean} saveForFuture - Whether to save for future use
469
- * @returns {Promise<void>}
470
- */
471
- async submitCredentials(requestId, credentials, saveForFuture = false) {
472
- const pending = this.pendingRequests.get(requestId);
473
-
474
- if (!pending) {
475
- throw new Error(`No pending credential request found: ${requestId}`);
476
- }
477
-
478
- // Clear timeout
479
- clearTimeout(pending.timeout);
480
- this.pendingRequests.delete(requestId);
481
-
482
- // Save credentials if requested
483
- if (saveForFuture) {
484
- await this.saveCredentials(pending.requestInfo.siteId, credentials);
485
- }
486
-
487
- // Resolve the promise with credentials
488
- pending.resolve({
489
- credentials,
490
- siteId: pending.requestInfo.siteId,
491
- saved: saveForFuture
492
- });
493
-
494
- this.logger?.info('[CredentialVault] Credentials submitted', {
495
- requestId,
496
- siteId: pending.requestInfo.siteId,
497
- saved: saveForFuture
498
- });
499
- }
500
-
501
- /**
502
- * Cancel a pending credential request
503
- * @param {string} requestId - Request ID
504
- */
505
- cancelCredentialRequest(requestId) {
506
- const pending = this.pendingRequests.get(requestId);
507
-
508
- if (pending) {
509
- clearTimeout(pending.timeout);
510
- this.pendingRequests.delete(requestId);
511
- pending.reject(new Error('Credential request cancelled by user'));
512
-
513
- this.logger?.info('[CredentialVault] Credential request cancelled', { requestId });
514
- }
515
- }
516
-
517
- /**
518
- * Get pending request info (for status checks)
519
- * @param {string} requestId - Request ID
520
- * @returns {Object|null}
521
- */
522
- getPendingRequest(requestId) {
523
- const pending = this.pendingRequests.get(requestId);
524
- return pending ? pending.requestInfo : null;
525
- }
526
-
527
- // ============================================================
528
- // Persistence
529
- // ============================================================
530
-
531
- /**
532
- * Persist credentials to encrypted file
533
- * @private
534
- */
535
- async _persistCredentials() {
536
- if (!this.credentialsFile || !this.encryptionKey) return;
537
-
538
- try {
539
- const data = {
540
- version: 1,
541
- savedAt: new Date().toISOString(),
542
- credentials: Array.from(this.credentials.entries())
543
- };
544
-
545
- const encrypted = this._encrypt(JSON.stringify(data));
546
- await fs.writeFile(this.credentialsFile, encrypted, { mode: 0o600 });
547
- } catch (error) {
548
- this.logger?.warn('[CredentialVault] Failed to persist credentials', {
549
- error: error.message
550
- });
551
- }
552
- }
553
-
554
- /**
555
- * Load credentials from encrypted file
556
- * @private
557
- */
558
- async _loadCredentials() {
559
- if (!this.credentialsFile || !this.encryptionKey) return;
560
-
561
- try {
562
- const encrypted = await fs.readFile(this.credentialsFile, 'utf8');
563
- const decrypted = this._decrypt(encrypted);
564
- const data = JSON.parse(decrypted);
565
-
566
- if (data.credentials) {
567
- this.credentials = new Map(data.credentials);
568
- }
569
- } catch (error) {
570
- if (error.code !== 'ENOENT') {
571
- this.logger?.warn('[CredentialVault] Failed to load credentials', {
572
- error: error.message
573
- });
574
- }
575
- }
576
- }
577
-
578
- /**
579
- * Persist sessions to encrypted file
580
- * @private
581
- */
582
- async _persistSessions() {
583
- if (!this.sessionsFile || !this.encryptionKey) return;
584
-
585
- try {
586
- const data = {
587
- version: 1,
588
- savedAt: new Date().toISOString(),
589
- sessions: Array.from(this.sessions.entries())
590
- };
591
-
592
- const encrypted = this._encrypt(JSON.stringify(data));
593
- await fs.writeFile(this.sessionsFile, encrypted, { mode: 0o600 });
594
- } catch (error) {
595
- this.logger?.warn('[CredentialVault] Failed to persist sessions', {
596
- error: error.message
597
- });
598
- }
599
- }
600
-
601
- /**
602
- * Load sessions from encrypted file
603
- * @private
604
- */
605
- async _loadSessions() {
606
- if (!this.sessionsFile || !this.encryptionKey) return;
607
-
608
- try {
609
- const encrypted = await fs.readFile(this.sessionsFile, 'utf8');
610
- const decrypted = this._decrypt(encrypted);
611
- const data = JSON.parse(decrypted);
612
-
613
- if (data.sessions) {
614
- this.sessions = new Map(data.sessions);
615
- }
616
- } catch (error) {
617
- if (error.code !== 'ENOENT') {
618
- this.logger?.warn('[CredentialVault] Failed to load sessions', {
619
- error: error.message
620
- });
621
- }
622
- }
623
- }
624
-
625
- // ============================================================
626
- // Helpers
627
- // ============================================================
628
-
629
- /**
630
- * Mask username for logging (show only first/last chars)
631
- * @private
632
- */
633
- _maskUsername(username) {
634
- if (!username || username.length < 4) return '***';
635
- return username[0] + '***' + username.slice(-2);
636
- }
637
-
638
- /**
639
- * Get known site configuration
640
- * @param {string} siteId - Site identifier
641
- * @returns {Object|null}
642
- */
643
- getKnownSite(siteId) {
644
- const normalizedId = siteId.toLowerCase().trim();
645
- return KNOWN_SITES[normalizedId] || null;
646
- }
647
-
648
- /**
649
- * List all known sites
650
- * @returns {Array}
651
- */
652
- listKnownSites() {
653
- return Object.entries(KNOWN_SITES).map(([id, config]) => ({
654
- siteId: id,
655
- name: config.name,
656
- loginUrl: config.loginUrl,
657
- hasCredentials: this.hasCredentials(id)
658
- }));
659
- }
660
-
661
- /**
662
- * Get credential event types (for WebSocket integration)
663
- * @returns {Object}
664
- */
665
- static getEventTypes() {
666
- return CREDENTIAL_EVENTS;
667
- }
668
- }
669
-
670
- // Singleton instance
671
- let vaultInstance = null;
672
-
673
- /**
674
- * Get or create the credential vault instance
675
- * @param {Object} logger - Logger instance
676
- * @returns {CredentialVault}
677
- */
678
- export function getCredentialVault(logger = null) {
679
- if (!vaultInstance) {
680
- vaultInstance = new CredentialVault(logger);
681
- }
682
- return vaultInstance;
683
- }
684
-
685
- export default CredentialVault;
1
+ /**
2
+ * Credential Vault Service
3
+ *
4
+ * Purpose:
5
+ * - Securely store website login credentials with AES-256-GCM encryption
6
+ * - Store authentication sessions (cookies) for reuse
7
+ * - Provide credentials to browser tool without exposing to AI agents
8
+ * - Support credential injection for automated login flows
9
+ *
10
+ * Security Model:
11
+ * - Credentials are encrypted at rest using machine-specific key derivation
12
+ * - Credentials are NEVER exposed to AI agents or included in conversation context
13
+ * - Only the browser tool can access credentials for form filling
14
+ * - Sessions include expiry tracking for automatic cleanup
15
+ */
16
+
17
+ import { promises as fs } from 'fs';
18
+ import path from 'path';
19
+ import crypto from 'crypto';
20
+ import os from 'os';
21
+ import { getUserDataPaths, ensureUserDataDirs } from '../utilities/userDataDir.js';
22
+ import {
23
+ CREDENTIAL_CONFIG,
24
+ KNOWN_SITES,
25
+ CREDENTIAL_EVENTS
26
+ } from '../utilities/stealthConstants.js';
27
+ import { canonicalizeSiteId } from '../utilities/siteIdCanonical.js';
28
+
29
+ // Encryption configuration (from constants)
30
+ const ALGORITHM = CREDENTIAL_CONFIG.ENCRYPTION_ALGORITHM;
31
+ const KEY_LENGTH = 32; // 256 bits
32
+ const IV_LENGTH = CREDENTIAL_CONFIG.IV_LENGTH;
33
+ const AUTH_TAG_LENGTH = CREDENTIAL_CONFIG.AUTH_TAG_LENGTH;
34
+ const SALT_LENGTH = CREDENTIAL_CONFIG.SALT_LENGTH;
35
+ const PBKDF2_ITERATIONS = CREDENTIAL_CONFIG.KEY_DERIVATION_ITERATIONS;
36
+
37
+ class CredentialVault {
38
+ constructor(logger = null) {
39
+ this.logger = logger;
40
+
41
+ // In-memory storage
42
+ this.credentials = new Map(); // siteId -> credential data
43
+ this.sessions = new Map(); // siteId -> session cookies
44
+
45
+ // Pending credential requests (for async UI flow)
46
+ this.pendingRequests = new Map(); // requestId -> { resolve, reject, timeout }
47
+
48
+ // Persistence configuration
49
+ this.credentialsFile = null;
50
+ this.sessionsFile = null;
51
+ this.encryptionKey = null; // primary (stable, persisted) key
52
+ this.legacyKey = null; // machine-derived key, kept only to migrate old data
53
+ this.initialized = false;
54
+ // Surfaced failure state so the API/UI can warn instead of silently
55
+ // pretending the vault is empty. Null = healthy.
56
+ this.loadError = null; // { kind, message, ... } | null
57
+ this.persistent = false; // false = memory-only (nothing survives restart)
58
+ }
59
+
60
+ /**
61
+ * Initialize persistence - must be called before using vault
62
+ * @returns {Promise<void>}
63
+ */
64
+ async initialize() {
65
+ if (this.initialized) return;
66
+
67
+ try {
68
+ await ensureUserDataDirs();
69
+ const paths = getUserDataPaths();
70
+ const settingsDir = paths.settings;
71
+
72
+ this.credentialsFile = path.join(settingsDir, CREDENTIAL_CONFIG.STORAGE.CREDENTIALS_FILE);
73
+ this.sessionsFile = path.join(settingsDir, CREDENTIAL_CONFIG.STORAGE.SESSIONS_FILE);
74
+
75
+ // Primary key: a stable, persisted random key that survives PC renames /
76
+ // profile changes (the old machine-derived key silently lost everything
77
+ // when any of hostname/username/homedir changed). The legacy key is
78
+ // derived only so we can transparently migrate old data on first load.
79
+ this.encryptionKey = await this._getOrCreateMasterKey(settingsDir);
80
+ this.legacyKey = await this._deriveLegacyKey(settingsDir);
81
+ this.persistent = true;
82
+
83
+ // Load persisted data
84
+ await this._loadCredentials();
85
+ await this._loadSessions();
86
+
87
+ // Cleanup expired sessions
88
+ this._cleanupExpiredSessions();
89
+
90
+ this.initialized = true;
91
+ this.logger?.info('[CredentialVault] Initialized', {
92
+ credentialsCount: this.credentials.size,
93
+ sessionsCount: this.sessions.size,
94
+ loadError: this.loadError?.kind || null,
95
+ });
96
+ } catch (error) {
97
+ // The key file couldn't be read/created (permissions, AV lock, corrupt).
98
+ // We DELIBERATELY do not fall back to overwriting keys — that would
99
+ // destroy recoverable data. Run memory-only and surface the failure.
100
+ this.persistent = false;
101
+ this.initialized = true;
102
+ this.loadError = { kind: 'key-unavailable', message: error.message };
103
+ this.logger?.error('[CredentialVault] Could not open the key store — running memory-only (nothing will persist). Fix permissions and restart.', {
104
+ error: error.message,
105
+ });
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Get or create the primary encryption key a random 32-byte key persisted
111
+ * at `.credential-key`. Crucially, a NEW key is only ever minted when the
112
+ * file genuinely does not exist (ENOENT). Any other read error (EACCES,
113
+ * EBUSY, corrupt) THROWS instead of regenerating — regenerating would silently
114
+ * make every stored credential undecryptable forever.
115
+ * @private
116
+ */
117
+ async _getOrCreateMasterKey(settingsDir) {
118
+ const keyFile = path.join(settingsDir, '.credential-key');
119
+ try {
120
+ const key = await fs.readFile(keyFile);
121
+ if (key.length < KEY_LENGTH) {
122
+ throw new Error(`credential key file is corrupt (${key.length} bytes, need ${KEY_LENGTH})`);
123
+ }
124
+ return key.subarray(0, KEY_LENGTH);
125
+ } catch (err) {
126
+ if (err.code === 'ENOENT') {
127
+ const key = crypto.randomBytes(KEY_LENGTH);
128
+ await fs.writeFile(keyFile, key, { mode: 0o600 });
129
+ this.logger?.info('[CredentialVault] Generated new master key');
130
+ return key;
131
+ }
132
+ throw err; // do NOT overwrite on a transient/corrupt read
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Derive the legacy machine-bound key (salt + machine identifier) that older
138
+ * versions used, purely so `_loadCredentials` can migrate data forward.
139
+ * Returns null when there's no salt (nothing legacy to migrate).
140
+ * @private
141
+ */
142
+ async _deriveLegacyKey(settingsDir) {
143
+ const saltFile = path.join(settingsDir, '.credential-salt');
144
+ let salt;
145
+ try {
146
+ salt = await fs.readFile(saltFile);
147
+ } catch {
148
+ return null; // no salt file → no legacy data
149
+ }
150
+ return crypto.pbkdf2Sync(this._getMachineIdentifier(), salt, PBKDF2_ITERATIONS, KEY_LENGTH, 'sha256');
151
+ }
152
+
153
+ /**
154
+ * Get a machine-specific identifier for key derivation
155
+ * @private
156
+ */
157
+ _getMachineIdentifier() {
158
+ const parts = [
159
+ os.hostname(),
160
+ os.homedir(),
161
+ os.userInfo().username,
162
+ process.platform,
163
+ 'loxia-credential-vault-v1'
164
+ ];
165
+ return parts.join(':');
166
+ }
167
+
168
+ /**
169
+ * Encrypt data using AES-256-GCM
170
+ * @private
171
+ */
172
+ _encrypt(plaintext) {
173
+ if (!this.encryptionKey) {
174
+ throw new Error('Encryption key not initialized');
175
+ }
176
+
177
+ const iv = crypto.randomBytes(IV_LENGTH);
178
+ const cipher = crypto.createCipheriv(ALGORITHM, this.encryptionKey, iv);
179
+
180
+ let encrypted = cipher.update(plaintext, 'utf8', 'base64');
181
+ encrypted += cipher.final('base64');
182
+
183
+ const authTag = cipher.getAuthTag();
184
+
185
+ // Combine IV + authTag + encrypted data
186
+ const combined = Buffer.concat([
187
+ iv,
188
+ authTag,
189
+ Buffer.from(encrypted, 'base64')
190
+ ]);
191
+
192
+ return combined.toString('base64');
193
+ }
194
+
195
+ /**
196
+ * Decrypt data using AES-256-GCM
197
+ * @private
198
+ */
199
+ _decrypt(encryptedData, key = this.encryptionKey) {
200
+ if (!key) {
201
+ throw new Error('Encryption key not initialized');
202
+ }
203
+
204
+ const combined = Buffer.from(encryptedData, 'base64');
205
+
206
+ // Extract IV, authTag, and encrypted data
207
+ const iv = combined.subarray(0, IV_LENGTH);
208
+ const authTag = combined.subarray(IV_LENGTH, IV_LENGTH + AUTH_TAG_LENGTH);
209
+ const encrypted = combined.subarray(IV_LENGTH + AUTH_TAG_LENGTH);
210
+
211
+ const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);
212
+ decipher.setAuthTag(authTag);
213
+
214
+ let decrypted = decipher.update(encrypted.toString('base64'), 'base64', 'utf8');
215
+ decrypted += decipher.final('utf8');
216
+
217
+ return decrypted;
218
+ }
219
+
220
+ /**
221
+ * Best-effort: move an undecryptable file aside so we never destroy data that
222
+ * might still be recoverable (e.g. by restoring the original machine/key),
223
+ * and so a fresh empty vault can start persisting again.
224
+ * @private
225
+ */
226
+ async _backupUnreadable(file) {
227
+ try {
228
+ const backup = `${file}.corrupt-${Date.now()}`;
229
+ await fs.rename(file, backup);
230
+ this.logger?.warn('[CredentialVault] Backed up unreadable file', { file, backup });
231
+ } catch (err) {
232
+ this.logger?.warn('[CredentialVault] Could not back up unreadable file', { file, error: err.message });
233
+ }
234
+ }
235
+
236
+ /**
237
+ * Decrypt a persisted blob, transparently migrating from the legacy
238
+ * machine-bound key to the stable master key when needed.
239
+ * @returns {{ data: object } | { migrated: true, data: object } | null}
240
+ * null = undecryptable with either key.
241
+ * @private
242
+ */
243
+ _decryptWithMigration(encrypted) {
244
+ try {
245
+ return { data: JSON.parse(this._decrypt(encrypted)) };
246
+ } catch {
247
+ /* try legacy */
248
+ }
249
+ if (this.legacyKey) {
250
+ try {
251
+ const data = JSON.parse(this._decrypt(encrypted, this.legacyKey));
252
+ return { data, migrated: true };
253
+ } catch {
254
+ /* fall through */
255
+ }
256
+ }
257
+ return null;
258
+ }
259
+
260
+ // ============================================================
261
+ // Credential Management
262
+ // ============================================================
263
+
264
+ /**
265
+ * Store credentials for a site
266
+ * @param {string} siteId - Site identifier (e.g., 'linkedin', 'github')
267
+ * @param {Object} credentials - Credential data
268
+ * @param {string} credentials.username - Username or email
269
+ * @param {string} credentials.password - Password
270
+ * @param {string} [credentials.loginUrl] - Custom login URL
271
+ * @param {Object} [credentials.selectors] - Custom CSS selectors
272
+ * @returns {Promise<void>}
273
+ */
274
+ async saveCredentials(siteId, credentials) {
275
+ if (!siteId || !credentials.username || !credentials.password) {
276
+ throw new Error('siteId, username, and password are required');
277
+ }
278
+
279
+ const normalizedId = canonicalizeSiteId(siteId);
280
+
281
+ // Get known site info if available
282
+ const knownSite = KNOWN_SITES[normalizedId];
283
+
284
+ const credentialEntry = {
285
+ siteId: normalizedId,
286
+ name: knownSite?.name || normalizedId,
287
+ username: credentials.username,
288
+ password: credentials.password,
289
+ loginUrl: credentials.loginUrl || knownSite?.loginUrl || null,
290
+ selectors: credentials.selectors || knownSite?.selectors || null,
291
+ usernameType: credentials.usernameType || knownSite?.usernameType || 'email',
292
+ multiStep: credentials.multiStep || knownSite?.multiStep || false,
293
+ createdAt: Date.now(),
294
+ lastUsed: null
295
+ };
296
+
297
+ this.credentials.set(normalizedId, credentialEntry);
298
+
299
+ await this._persistCredentials();
300
+
301
+ this.logger?.info('[CredentialVault] Credentials saved', {
302
+ siteId: normalizedId,
303
+ username: this._maskUsername(credentials.username)
304
+ });
305
+ }
306
+
307
+ /**
308
+ * Get credentials for a site (internal use only - never expose to agent)
309
+ * @param {string} siteId - Site identifier
310
+ * @returns {Object|null} Credential data or null
311
+ */
312
+ getCredentials(siteId) {
313
+ const normalizedId = canonicalizeSiteId(siteId);
314
+ const entry = this.credentials.get(normalizedId);
315
+
316
+ if (entry) {
317
+ // Update last used timestamp
318
+ entry.lastUsed = Date.now();
319
+ this._persistCredentials().catch(() => {}); // Fire and forget
320
+ }
321
+
322
+ return entry || null;
323
+ }
324
+
325
+ /**
326
+ * Check if credentials exist for a site
327
+ * @param {string} siteId - Site identifier
328
+ * @returns {boolean}
329
+ */
330
+ hasCredentials(siteId) {
331
+ const normalizedId = canonicalizeSiteId(siteId);
332
+ return this.credentials.has(normalizedId);
333
+ }
334
+
335
+ /**
336
+ * Delete credentials for a site
337
+ * @param {string} siteId - Site identifier
338
+ * @returns {Promise<boolean>} True if deleted
339
+ */
340
+ async deleteCredentials(siteId) {
341
+ const normalizedId = canonicalizeSiteId(siteId);
342
+ const deleted = this.credentials.delete(normalizedId);
343
+
344
+ if (deleted) {
345
+ await this._persistCredentials();
346
+ // Also delete associated session
347
+ await this.deleteSession(normalizedId);
348
+ this.logger?.info('[CredentialVault] Credentials deleted', { siteId: normalizedId });
349
+ }
350
+
351
+ return deleted;
352
+ }
353
+
354
+ /**
355
+ * List all stored credentials (safe version without passwords)
356
+ * @returns {Array} Array of credential summaries
357
+ */
358
+ listCredentials() {
359
+ const list = [];
360
+ for (const [siteId, entry] of this.credentials) {
361
+ list.push({
362
+ siteId,
363
+ name: entry.name,
364
+ username: this._maskUsername(entry.username),
365
+ loginUrl: entry.loginUrl,
366
+ createdAt: entry.createdAt,
367
+ lastUsed: entry.lastUsed,
368
+ hasSession: this.sessions.has(siteId)
369
+ });
370
+ }
371
+ return list.sort((a, b) => (b.lastUsed || 0) - (a.lastUsed || 0));
372
+ }
373
+
374
+ // ============================================================
375
+ // Session Management
376
+ // ============================================================
377
+
378
+ /**
379
+ * Save authentication session (cookies) for a site
380
+ * @param {string} siteId - Site identifier
381
+ * @param {Array} cookies - Array of cookie objects from Puppeteer
382
+ * @returns {Promise<void>}
383
+ */
384
+ async saveSession(siteId, cookies) {
385
+ const normalizedId = canonicalizeSiteId(siteId);
386
+
387
+ const sessionEntry = {
388
+ siteId: normalizedId,
389
+ cookies,
390
+ savedAt: Date.now(),
391
+ expiresAt: Date.now() + CREDENTIAL_CONFIG.SESSION_EXPIRY_MS
392
+ };
393
+
394
+ this.sessions.set(normalizedId, sessionEntry);
395
+ await this._persistSessions();
396
+
397
+ this.logger?.info('[CredentialVault] Session saved', {
398
+ siteId: normalizedId,
399
+ cookiesCount: cookies.length
400
+ });
401
+ }
402
+
403
+ /**
404
+ * Get session cookies for a site
405
+ * @param {string} siteId - Site identifier
406
+ * @returns {Object|null} Session data or null
407
+ */
408
+ getSession(siteId) {
409
+ const normalizedId = canonicalizeSiteId(siteId);
410
+ const entry = this.sessions.get(normalizedId);
411
+
412
+ if (!entry) return null;
413
+
414
+ // Check if session has expired
415
+ if (Date.now() > entry.expiresAt) {
416
+ this.sessions.delete(normalizedId);
417
+ this._persistSessions().catch(() => {});
418
+ return null;
419
+ }
420
+
421
+ return entry;
422
+ }
423
+
424
+ /**
425
+ * Get all stored sessions (for cookie restoration)
426
+ * @returns {Object} Map of siteId -> session data
427
+ */
428
+ getAllSessions() {
429
+ const result = {};
430
+ const now = Date.now();
431
+
432
+ for (const [siteId, entry] of this.sessions) {
433
+ // Skip expired sessions
434
+ if (now > entry.expiresAt) {
435
+ continue;
436
+ }
437
+ result[siteId] = entry;
438
+ }
439
+
440
+ return result;
441
+ }
442
+
443
+ /**
444
+ * Delete session for a site
445
+ * @param {string} siteId - Site identifier
446
+ * @returns {Promise<boolean>}
447
+ */
448
+ async deleteSession(siteId) {
449
+ const normalizedId = canonicalizeSiteId(siteId);
450
+ const deleted = this.sessions.delete(normalizedId);
451
+
452
+ if (deleted) {
453
+ await this._persistSessions();
454
+ this.logger?.info('[CredentialVault] Session deleted', { siteId: normalizedId });
455
+ }
456
+
457
+ return deleted;
458
+ }
459
+
460
+ /**
461
+ * Cleanup expired sessions
462
+ * @private
463
+ */
464
+ _cleanupExpiredSessions() {
465
+ const now = Date.now();
466
+ let cleaned = 0;
467
+
468
+ for (const [siteId, entry] of this.sessions) {
469
+ if (now > entry.expiresAt) {
470
+ this.sessions.delete(siteId);
471
+ cleaned++;
472
+ }
473
+ }
474
+
475
+ if (cleaned > 0) {
476
+ this._persistSessions().catch(() => {});
477
+ this.logger?.info('[CredentialVault] Cleaned up expired sessions', { count: cleaned });
478
+ }
479
+ }
480
+
481
+ // ============================================================
482
+ // Async Credential Request Flow
483
+ // ============================================================
484
+
485
+ /**
486
+ * Create a credential request (for UI prompt flow)
487
+ * @param {string} siteId - Site identifier
488
+ * @param {Object} options - Request options
489
+ * @returns {Promise<Object>} Request info for WebSocket
490
+ */
491
+ createCredentialRequest(siteId, options = {}) {
492
+ const requestId = `cred_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;
493
+ const normalizedId = canonicalizeSiteId(siteId);
494
+ const knownSite = KNOWN_SITES[normalizedId];
495
+
496
+ const createdAt = Date.now();
497
+ const requestInfo = {
498
+ requestId,
499
+ siteId: normalizedId,
500
+ siteName: knownSite?.name || normalizedId,
501
+ loginUrl: options.loginUrl || knownSite?.loginUrl || null,
502
+ fields: options.fields || ['username', 'password'],
503
+ usernameType: knownSite?.usernameType || 'email',
504
+ agentId: options.agentId || null,
505
+ createdAt,
506
+ timeout: createdAt + CREDENTIAL_CONFIG.REQUEST_TIMEOUT_MS // Timestamp when request expires
507
+ };
508
+
509
+ // Create a promise that will be resolved when credentials are submitted
510
+ const promise = new Promise((resolve, reject) => {
511
+ // Set timeout for credential request
512
+ const timeout = setTimeout(() => {
513
+ this.pendingRequests.delete(requestId);
514
+ reject(new Error(`Credential request timed out for ${normalizedId}`));
515
+ }, CREDENTIAL_CONFIG.REQUEST_TIMEOUT_MS);
516
+
517
+ this.pendingRequests.set(requestId, {
518
+ resolve,
519
+ reject,
520
+ timeout,
521
+ requestInfo
522
+ });
523
+ });
524
+
525
+ this.logger?.info('[CredentialVault] Credential request created', {
526
+ requestId,
527
+ siteId: normalizedId
528
+ });
529
+
530
+ return {
531
+ requestInfo,
532
+ promise
533
+ };
534
+ }
535
+
536
+ /**
537
+ * Submit credentials for a pending request
538
+ * @param {string} requestId - Request ID
539
+ * @param {Object} credentials - Submitted credentials
540
+ * @param {boolean} saveForFuture - Whether to save for future use
541
+ * @returns {Promise<void>}
542
+ */
543
+ async submitCredentials(requestId, credentials, saveForFuture = false) {
544
+ const pending = this.pendingRequests.get(requestId);
545
+
546
+ if (!pending) {
547
+ throw new Error(`No pending credential request found: ${requestId}`);
548
+ }
549
+
550
+ // Clear timeout
551
+ clearTimeout(pending.timeout);
552
+ this.pendingRequests.delete(requestId);
553
+
554
+ // Save credentials if requested
555
+ if (saveForFuture) {
556
+ await this.saveCredentials(pending.requestInfo.siteId, credentials);
557
+ }
558
+
559
+ // Resolve the promise with credentials
560
+ pending.resolve({
561
+ credentials,
562
+ siteId: pending.requestInfo.siteId,
563
+ saved: saveForFuture
564
+ });
565
+
566
+ this.logger?.info('[CredentialVault] Credentials submitted', {
567
+ requestId,
568
+ siteId: pending.requestInfo.siteId,
569
+ saved: saveForFuture
570
+ });
571
+ }
572
+
573
+ /**
574
+ * Cancel a pending credential request
575
+ * @param {string} requestId - Request ID
576
+ */
577
+ cancelCredentialRequest(requestId) {
578
+ const pending = this.pendingRequests.get(requestId);
579
+
580
+ if (pending) {
581
+ clearTimeout(pending.timeout);
582
+ this.pendingRequests.delete(requestId);
583
+ pending.reject(new Error('Credential request cancelled by user'));
584
+
585
+ this.logger?.info('[CredentialVault] Credential request cancelled', { requestId });
586
+ }
587
+ }
588
+
589
+ /**
590
+ * Get pending request info (for status checks)
591
+ * @param {string} requestId - Request ID
592
+ * @returns {Object|null}
593
+ */
594
+ getPendingRequest(requestId) {
595
+ const pending = this.pendingRequests.get(requestId);
596
+ return pending ? pending.requestInfo : null;
597
+ }
598
+
599
+ // ============================================================
600
+ // Persistence
601
+ // ============================================================
602
+
603
+ /**
604
+ * Persist credentials to encrypted file
605
+ * @private
606
+ */
607
+ async _persistCredentials() {
608
+ if (!this.credentialsFile || !this.encryptionKey) return;
609
+
610
+ try {
611
+ const data = {
612
+ version: 1,
613
+ savedAt: new Date().toISOString(),
614
+ credentials: Array.from(this.credentials.entries())
615
+ };
616
+
617
+ const encrypted = this._encrypt(JSON.stringify(data));
618
+ await fs.writeFile(this.credentialsFile, encrypted, { mode: 0o600 });
619
+ } catch (error) {
620
+ this.logger?.warn('[CredentialVault] Failed to persist credentials', {
621
+ error: error.message
622
+ });
623
+ }
624
+ }
625
+
626
+ /**
627
+ * Load credentials from encrypted file
628
+ * @private
629
+ */
630
+ async _loadCredentials() {
631
+ if (!this.credentialsFile || !this.encryptionKey) return;
632
+
633
+ let encrypted;
634
+ try {
635
+ encrypted = await fs.readFile(this.credentialsFile, 'utf8');
636
+ } catch (error) {
637
+ if (error.code !== 'ENOENT') {
638
+ this.loadError = { kind: 'read-failed', file: 'credentials', message: error.message };
639
+ this.logger?.error('[CredentialVault] Failed to read credentials file', { error: error.message });
640
+ }
641
+ return; // ENOENT is normal for a fresh install
642
+ }
643
+
644
+ const result = this._decryptWithMigration(encrypted);
645
+ if (result) {
646
+ if (result.data.credentials) this.credentials = new Map(result.data.credentials);
647
+ if (result.migrated) {
648
+ await this._persistCredentials(); // re-encrypt under the stable master key
649
+ this.logger?.info('[CredentialVault] Migrated credentials to the stable key', {
650
+ count: this.credentials.size,
651
+ });
652
+ }
653
+ return;
654
+ }
655
+
656
+ // Undecryptable with either key — genuine loss (machine key changed before
657
+ // this version, or file corruption). Preserve the file, surface loudly,
658
+ // and start empty so the user can at least re-enter and persist again.
659
+ await this._backupUnreadable(this.credentialsFile);
660
+ this.loadError = { kind: 'undecryptable', file: 'credentials', at: Date.now() };
661
+ this.logger?.error('[CredentialVault] Stored credentials could not be decrypted (encryption key changed?). Backed up the file and started empty.');
662
+ }
663
+
664
+ /**
665
+ * Persist sessions to encrypted file
666
+ * @private
667
+ */
668
+ async _persistSessions() {
669
+ if (!this.sessionsFile || !this.encryptionKey) return;
670
+
671
+ try {
672
+ const data = {
673
+ version: 1,
674
+ savedAt: new Date().toISOString(),
675
+ sessions: Array.from(this.sessions.entries())
676
+ };
677
+
678
+ const encrypted = this._encrypt(JSON.stringify(data));
679
+ await fs.writeFile(this.sessionsFile, encrypted, { mode: 0o600 });
680
+ } catch (error) {
681
+ this.logger?.warn('[CredentialVault] Failed to persist sessions', {
682
+ error: error.message
683
+ });
684
+ }
685
+ }
686
+
687
+ /**
688
+ * Load sessions from encrypted file
689
+ * @private
690
+ */
691
+ async _loadSessions() {
692
+ if (!this.sessionsFile || !this.encryptionKey) return;
693
+
694
+ let encrypted;
695
+ try {
696
+ encrypted = await fs.readFile(this.sessionsFile, 'utf8');
697
+ } catch (error) {
698
+ if (error.code !== 'ENOENT') {
699
+ this.logger?.warn('[CredentialVault] Failed to read sessions file', { error: error.message });
700
+ }
701
+ return;
702
+ }
703
+
704
+ const result = this._decryptWithMigration(encrypted);
705
+ if (result) {
706
+ if (result.data.sessions) this.sessions = new Map(result.data.sessions);
707
+ if (result.migrated) await this._persistSessions();
708
+ return;
709
+ }
710
+
711
+ // Sessions are non-critical (cookies, 7-day expiry) — just move the
712
+ // unreadable file aside and start fresh; no user-facing error needed.
713
+ await this._backupUnreadable(this.sessionsFile);
714
+ this.logger?.warn('[CredentialVault] Stored sessions could not be decrypted — starting fresh.');
715
+ }
716
+
717
+ // ============================================================
718
+ // Helpers
719
+ // ============================================================
720
+
721
+ /**
722
+ * Mask username for logging (show only first/last chars)
723
+ * @private
724
+ */
725
+ _maskUsername(username) {
726
+ if (!username || username.length < 4) return '***';
727
+ return username[0] + '***' + username.slice(-2);
728
+ }
729
+
730
+ /**
731
+ * Get known site configuration
732
+ * @param {string} siteId - Site identifier
733
+ * @returns {Object|null}
734
+ */
735
+ getKnownSite(siteId) {
736
+ const normalizedId = canonicalizeSiteId(siteId);
737
+ return KNOWN_SITES[normalizedId] || null;
738
+ }
739
+
740
+ /**
741
+ * List all known sites
742
+ * @returns {Array}
743
+ */
744
+ listKnownSites() {
745
+ return Object.entries(KNOWN_SITES).map(([id, config]) => ({
746
+ siteId: id,
747
+ name: config.name,
748
+ loginUrl: config.loginUrl,
749
+ hasCredentials: this.hasCredentials(id)
750
+ }));
751
+ }
752
+
753
+ /**
754
+ * Get credential event types (for WebSocket integration)
755
+ * @returns {Object}
756
+ */
757
+ static getEventTypes() {
758
+ return CREDENTIAL_EVENTS;
759
+ }
760
+
761
+ /**
762
+ * Vault health for the API/UI. `healthy` is false when creds won't persist
763
+ * (memory-only) or existing data couldn't be decrypted — so the UI can warn
764
+ * instead of the failure being invisible.
765
+ * @returns {Object}
766
+ */
767
+ getStatus() {
768
+ return {
769
+ initialized: this.initialized,
770
+ persistent: this.persistent,
771
+ healthy: this.persistent && !this.loadError,
772
+ loadError: this.loadError || null,
773
+ credentialsCount: this.credentials.size,
774
+ sessionsCount: this.sessions.size,
775
+ };
776
+ }
777
+ }
778
+
779
+ // Singleton instance
780
+ let vaultInstance = null;
781
+
782
+ /**
783
+ * Get or create the credential vault instance
784
+ * @param {Object} logger - Logger instance
785
+ * @returns {CredentialVault}
786
+ */
787
+ export function getCredentialVault(logger = null) {
788
+ if (!vaultInstance) {
789
+ vaultInstance = new CredentialVault(logger);
790
+ }
791
+ return vaultInstance;
792
+ }
793
+
794
+ export default CredentialVault;