@sinequa/assistant 3.10.5 → 3.10.10

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 (839) hide show
  1. package/chat/index.d.ts +2155 -3
  2. package/fesm2022/sinequa-assistant-chat.mjs +764 -593
  3. package/fesm2022/sinequa-assistant-chat.mjs.map +1 -1
  4. package/index.d.ts +3 -5
  5. package/node_modules/zod/LICENSE +21 -0
  6. package/node_modules/zod/README.md +208 -0
  7. package/node_modules/zod/index.cjs +33 -0
  8. package/node_modules/zod/index.d.cts +4 -0
  9. package/node_modules/zod/index.d.ts +4 -0
  10. package/node_modules/zod/index.js +4 -0
  11. package/node_modules/zod/locales/index.cjs +17 -0
  12. package/node_modules/zod/locales/index.d.cts +1 -0
  13. package/node_modules/zod/locales/index.d.ts +1 -0
  14. package/node_modules/zod/locales/index.js +1 -0
  15. package/node_modules/zod/locales/package.json +6 -0
  16. package/node_modules/zod/mini/index.cjs +32 -0
  17. package/node_modules/zod/mini/index.d.cts +3 -0
  18. package/node_modules/zod/mini/index.d.ts +3 -0
  19. package/node_modules/zod/mini/index.js +3 -0
  20. package/node_modules/zod/mini/package.json +6 -0
  21. package/node_modules/zod/package.json +135 -0
  22. package/node_modules/zod/src/index.ts +4 -0
  23. package/node_modules/zod/src/locales/index.ts +1 -0
  24. package/node_modules/zod/src/mini/index.ts +3 -0
  25. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  26. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  27. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  28. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  29. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  30. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  31. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  32. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  33. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  34. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  35. package/node_modules/zod/src/v3/errors.ts +13 -0
  36. package/node_modules/zod/src/v3/external.ts +6 -0
  37. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  38. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  39. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  40. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  41. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  42. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  43. package/node_modules/zod/src/v3/index.ts +4 -0
  44. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  45. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  46. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  47. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  48. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  49. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  50. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  51. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  52. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  53. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  54. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  55. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  56. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  57. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  58. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  59. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  60. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  61. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  62. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  63. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  64. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  65. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  66. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  67. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  68. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  69. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  70. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  71. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  72. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  73. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  74. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  75. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  76. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  77. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  78. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  79. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  80. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  81. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  82. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  83. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  84. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  85. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  86. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  87. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  88. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  89. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  90. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  91. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  92. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  93. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  94. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  95. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  96. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  97. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  98. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  99. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  100. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  101. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  102. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  103. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  104. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  105. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  106. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  107. package/node_modules/zod/src/v3/types.ts +5138 -0
  108. package/node_modules/zod/src/v4/classic/checks.ts +32 -0
  109. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  110. package/node_modules/zod/src/v4/classic/compat.ts +70 -0
  111. package/node_modules/zod/src/v4/classic/errors.ts +82 -0
  112. package/node_modules/zod/src/v4/classic/external.ts +51 -0
  113. package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  114. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  115. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  116. package/node_modules/zod/src/v4/classic/parse.ts +82 -0
  117. package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  118. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  119. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  120. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  121. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  122. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  123. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  124. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  125. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  126. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  127. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  128. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  129. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  130. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  131. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  132. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  133. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  134. package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  135. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  136. package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  137. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  138. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  139. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  140. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  141. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  142. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  143. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  144. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  145. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  146. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  147. package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  148. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  149. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  150. package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  151. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  152. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  153. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  154. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  155. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  156. package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  157. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  158. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  159. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  160. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  161. package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  162. package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  163. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  164. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  165. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  166. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  167. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  168. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  169. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  170. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  171. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  172. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  173. package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
  174. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  175. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  176. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  177. package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  178. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  179. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  180. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  181. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  182. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  183. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  184. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  185. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  186. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  187. package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  188. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  189. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  190. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  191. package/node_modules/zod/src/v4/core/api.ts +1798 -0
  192. package/node_modules/zod/src/v4/core/checks.ts +1293 -0
  193. package/node_modules/zod/src/v4/core/config.ts +15 -0
  194. package/node_modules/zod/src/v4/core/core.ts +138 -0
  195. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  196. package/node_modules/zod/src/v4/core/errors.ts +448 -0
  197. package/node_modules/zod/src/v4/core/index.ts +16 -0
  198. package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  199. package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  200. package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  201. package/node_modules/zod/src/v4/core/parse.ts +195 -0
  202. package/node_modules/zod/src/v4/core/regexes.ts +183 -0
  203. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  204. package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
  205. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  206. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  207. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  208. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  209. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  210. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  211. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  212. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  213. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  214. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  215. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  216. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  217. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  218. package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  219. package/node_modules/zod/src/v4/core/util.ts +966 -0
  220. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  221. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  222. package/node_modules/zod/src/v4/index.ts +4 -0
  223. package/node_modules/zod/src/v4/locales/ar.ts +115 -0
  224. package/node_modules/zod/src/v4/locales/az.ts +111 -0
  225. package/node_modules/zod/src/v4/locales/be.ts +176 -0
  226. package/node_modules/zod/src/v4/locales/bg.ts +128 -0
  227. package/node_modules/zod/src/v4/locales/ca.ts +116 -0
  228. package/node_modules/zod/src/v4/locales/cs.ts +118 -0
  229. package/node_modules/zod/src/v4/locales/da.ts +123 -0
  230. package/node_modules/zod/src/v4/locales/de.ts +116 -0
  231. package/node_modules/zod/src/v4/locales/en.ts +119 -0
  232. package/node_modules/zod/src/v4/locales/eo.ts +118 -0
  233. package/node_modules/zod/src/v4/locales/es.ts +141 -0
  234. package/node_modules/zod/src/v4/locales/fa.ts +126 -0
  235. package/node_modules/zod/src/v4/locales/fi.ts +121 -0
  236. package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  237. package/node_modules/zod/src/v4/locales/fr.ts +116 -0
  238. package/node_modules/zod/src/v4/locales/he.ts +246 -0
  239. package/node_modules/zod/src/v4/locales/hu.ts +117 -0
  240. package/node_modules/zod/src/v4/locales/hy.ts +164 -0
  241. package/node_modules/zod/src/v4/locales/id.ts +115 -0
  242. package/node_modules/zod/src/v4/locales/index.ts +49 -0
  243. package/node_modules/zod/src/v4/locales/is.ts +119 -0
  244. package/node_modules/zod/src/v4/locales/it.ts +116 -0
  245. package/node_modules/zod/src/v4/locales/ja.ts +114 -0
  246. package/node_modules/zod/src/v4/locales/ka.ts +123 -0
  247. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  248. package/node_modules/zod/src/v4/locales/km.ts +119 -0
  249. package/node_modules/zod/src/v4/locales/ko.ts +121 -0
  250. package/node_modules/zod/src/v4/locales/lt.ts +239 -0
  251. package/node_modules/zod/src/v4/locales/mk.ts +118 -0
  252. package/node_modules/zod/src/v4/locales/ms.ts +115 -0
  253. package/node_modules/zod/src/v4/locales/nl.ts +121 -0
  254. package/node_modules/zod/src/v4/locales/no.ts +116 -0
  255. package/node_modules/zod/src/v4/locales/ota.ts +117 -0
  256. package/node_modules/zod/src/v4/locales/pl.ts +118 -0
  257. package/node_modules/zod/src/v4/locales/ps.ts +126 -0
  258. package/node_modules/zod/src/v4/locales/pt.ts +116 -0
  259. package/node_modules/zod/src/v4/locales/ru.ts +176 -0
  260. package/node_modules/zod/src/v4/locales/sl.ts +118 -0
  261. package/node_modules/zod/src/v4/locales/sv.ts +119 -0
  262. package/node_modules/zod/src/v4/locales/ta.ts +118 -0
  263. package/node_modules/zod/src/v4/locales/th.ts +119 -0
  264. package/node_modules/zod/src/v4/locales/tr.ts +111 -0
  265. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  266. package/node_modules/zod/src/v4/locales/uk.ts +117 -0
  267. package/node_modules/zod/src/v4/locales/ur.ts +119 -0
  268. package/node_modules/zod/src/v4/locales/uz.ts +116 -0
  269. package/node_modules/zod/src/v4/locales/vi.ts +117 -0
  270. package/node_modules/zod/src/v4/locales/yo.ts +124 -0
  271. package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  272. package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  273. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  274. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  275. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  276. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  277. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  278. package/node_modules/zod/src/v4/mini/parse.ts +14 -0
  279. package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  280. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  281. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  282. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  283. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  284. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  285. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  286. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  287. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  288. package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  289. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  290. package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  291. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  292. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  293. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  294. package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  295. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  296. package/node_modules/zod/v3/ZodError.cjs +138 -0
  297. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  298. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  299. package/node_modules/zod/v3/ZodError.js +133 -0
  300. package/node_modules/zod/v3/errors.cjs +17 -0
  301. package/node_modules/zod/v3/errors.d.cts +5 -0
  302. package/node_modules/zod/v3/errors.d.ts +5 -0
  303. package/node_modules/zod/v3/errors.js +9 -0
  304. package/node_modules/zod/v3/external.cjs +22 -0
  305. package/node_modules/zod/v3/external.d.cts +6 -0
  306. package/node_modules/zod/v3/external.d.ts +6 -0
  307. package/node_modules/zod/v3/external.js +6 -0
  308. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  309. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  310. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  311. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  312. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  313. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  314. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  315. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  316. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  317. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  318. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  319. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  320. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  321. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  322. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  323. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  324. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  325. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  326. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  327. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  328. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  329. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  330. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  331. package/node_modules/zod/v3/helpers/util.js +133 -0
  332. package/node_modules/zod/v3/index.cjs +33 -0
  333. package/node_modules/zod/v3/index.d.cts +4 -0
  334. package/node_modules/zod/v3/index.d.ts +4 -0
  335. package/node_modules/zod/v3/index.js +4 -0
  336. package/node_modules/zod/v3/locales/en.cjs +112 -0
  337. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  338. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  339. package/node_modules/zod/v3/locales/en.js +109 -0
  340. package/node_modules/zod/v3/package.json +6 -0
  341. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  342. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  343. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  344. package/node_modules/zod/v3/standard-schema.js +1 -0
  345. package/node_modules/zod/v3/types.cjs +3777 -0
  346. package/node_modules/zod/v3/types.d.cts +1034 -0
  347. package/node_modules/zod/v3/types.d.ts +1034 -0
  348. package/node_modules/zod/v3/types.js +3695 -0
  349. package/node_modules/zod/v4/classic/checks.cjs +33 -0
  350. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  351. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  352. package/node_modules/zod/v4/classic/checks.js +1 -0
  353. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  354. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  355. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  356. package/node_modules/zod/v4/classic/coerce.js +17 -0
  357. package/node_modules/zod/v4/classic/compat.cjs +61 -0
  358. package/node_modules/zod/v4/classic/compat.d.cts +50 -0
  359. package/node_modules/zod/v4/classic/compat.d.ts +50 -0
  360. package/node_modules/zod/v4/classic/compat.js +31 -0
  361. package/node_modules/zod/v4/classic/errors.cjs +74 -0
  362. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  363. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  364. package/node_modules/zod/v4/classic/errors.js +48 -0
  365. package/node_modules/zod/v4/classic/external.cjs +73 -0
  366. package/node_modules/zod/v4/classic/external.d.cts +15 -0
  367. package/node_modules/zod/v4/classic/external.d.ts +15 -0
  368. package/node_modules/zod/v4/classic/external.js +20 -0
  369. package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  370. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  371. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  372. package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  373. package/node_modules/zod/v4/classic/index.cjs +33 -0
  374. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  375. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  376. package/node_modules/zod/v4/classic/index.js +4 -0
  377. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  378. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  379. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  380. package/node_modules/zod/v4/classic/iso.js +30 -0
  381. package/node_modules/zod/v4/classic/package.json +6 -0
  382. package/node_modules/zod/v4/classic/parse.cjs +41 -0
  383. package/node_modules/zod/v4/classic/parse.d.cts +31 -0
  384. package/node_modules/zod/v4/classic/parse.d.ts +31 -0
  385. package/node_modules/zod/v4/classic/parse.js +15 -0
  386. package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  387. package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  388. package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  389. package/node_modules/zod/v4/classic/schemas.js +1157 -0
  390. package/node_modules/zod/v4/core/api.cjs +1222 -0
  391. package/node_modules/zod/v4/core/api.d.cts +304 -0
  392. package/node_modules/zod/v4/core/api.d.ts +304 -0
  393. package/node_modules/zod/v4/core/api.js +1082 -0
  394. package/node_modules/zod/v4/core/checks.cjs +601 -0
  395. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  396. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  397. package/node_modules/zod/v4/core/checks.js +575 -0
  398. package/node_modules/zod/v4/core/core.cjs +83 -0
  399. package/node_modules/zod/v4/core/core.d.cts +70 -0
  400. package/node_modules/zod/v4/core/core.d.ts +70 -0
  401. package/node_modules/zod/v4/core/core.js +76 -0
  402. package/node_modules/zod/v4/core/doc.cjs +39 -0
  403. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  404. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  405. package/node_modules/zod/v4/core/doc.js +35 -0
  406. package/node_modules/zod/v4/core/errors.cjs +213 -0
  407. package/node_modules/zod/v4/core/errors.d.cts +220 -0
  408. package/node_modules/zod/v4/core/errors.d.ts +220 -0
  409. package/node_modules/zod/v4/core/errors.js +182 -0
  410. package/node_modules/zod/v4/core/index.cjs +47 -0
  411. package/node_modules/zod/v4/core/index.d.cts +16 -0
  412. package/node_modules/zod/v4/core/index.d.ts +16 -0
  413. package/node_modules/zod/v4/core/index.js +16 -0
  414. package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  415. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  416. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  417. package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  418. package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  419. package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  420. package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  421. package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  422. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  423. package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  424. package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  425. package/node_modules/zod/v4/core/json-schema.js +1 -0
  426. package/node_modules/zod/v4/core/package.json +6 -0
  427. package/node_modules/zod/v4/core/parse.cjs +131 -0
  428. package/node_modules/zod/v4/core/parse.d.cts +49 -0
  429. package/node_modules/zod/v4/core/parse.d.ts +49 -0
  430. package/node_modules/zod/v4/core/parse.js +93 -0
  431. package/node_modules/zod/v4/core/regexes.cjs +166 -0
  432. package/node_modules/zod/v4/core/regexes.d.cts +79 -0
  433. package/node_modules/zod/v4/core/regexes.d.ts +79 -0
  434. package/node_modules/zod/v4/core/regexes.js +133 -0
  435. package/node_modules/zod/v4/core/registries.cjs +56 -0
  436. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  437. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  438. package/node_modules/zod/v4/core/registries.js +51 -0
  439. package/node_modules/zod/v4/core/schemas.cjs +2124 -0
  440. package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  441. package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  442. package/node_modules/zod/v4/core/schemas.js +2093 -0
  443. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  444. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  445. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  446. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  447. package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  448. package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  449. package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  450. package/node_modules/zod/v4/core/to-json-schema.js +437 -0
  451. package/node_modules/zod/v4/core/util.cjs +710 -0
  452. package/node_modules/zod/v4/core/util.d.cts +199 -0
  453. package/node_modules/zod/v4/core/util.d.ts +199 -0
  454. package/node_modules/zod/v4/core/util.js +651 -0
  455. package/node_modules/zod/v4/core/versions.cjs +8 -0
  456. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  457. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  458. package/node_modules/zod/v4/core/versions.js +5 -0
  459. package/node_modules/zod/v4/index.cjs +22 -0
  460. package/node_modules/zod/v4/index.d.cts +3 -0
  461. package/node_modules/zod/v4/index.d.ts +3 -0
  462. package/node_modules/zod/v4/index.js +3 -0
  463. package/node_modules/zod/v4/locales/ar.cjs +133 -0
  464. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  465. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  466. package/node_modules/zod/v4/locales/ar.js +106 -0
  467. package/node_modules/zod/v4/locales/az.cjs +132 -0
  468. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  469. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  470. package/node_modules/zod/v4/locales/az.js +105 -0
  471. package/node_modules/zod/v4/locales/be.cjs +183 -0
  472. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  473. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  474. package/node_modules/zod/v4/locales/be.js +156 -0
  475. package/node_modules/zod/v4/locales/bg.cjs +147 -0
  476. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  477. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  478. package/node_modules/zod/v4/locales/bg.js +120 -0
  479. package/node_modules/zod/v4/locales/ca.cjs +134 -0
  480. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  481. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  482. package/node_modules/zod/v4/locales/ca.js +107 -0
  483. package/node_modules/zod/v4/locales/cs.cjs +138 -0
  484. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  485. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  486. package/node_modules/zod/v4/locales/cs.js +111 -0
  487. package/node_modules/zod/v4/locales/da.cjs +142 -0
  488. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  489. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  490. package/node_modules/zod/v4/locales/da.js +115 -0
  491. package/node_modules/zod/v4/locales/de.cjs +135 -0
  492. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  493. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  494. package/node_modules/zod/v4/locales/de.js +108 -0
  495. package/node_modules/zod/v4/locales/en.cjs +136 -0
  496. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  497. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  498. package/node_modules/zod/v4/locales/en.js +109 -0
  499. package/node_modules/zod/v4/locales/eo.cjs +136 -0
  500. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  501. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  502. package/node_modules/zod/v4/locales/eo.js +109 -0
  503. package/node_modules/zod/v4/locales/es.cjs +159 -0
  504. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  505. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  506. package/node_modules/zod/v4/locales/es.js +132 -0
  507. package/node_modules/zod/v4/locales/fa.cjs +141 -0
  508. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  509. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  510. package/node_modules/zod/v4/locales/fa.js +114 -0
  511. package/node_modules/zod/v4/locales/fi.cjs +139 -0
  512. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  513. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  514. package/node_modules/zod/v4/locales/fi.js +112 -0
  515. package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  516. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  517. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  518. package/node_modules/zod/v4/locales/fr-CA.js +107 -0
  519. package/node_modules/zod/v4/locales/fr.cjs +135 -0
  520. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  521. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  522. package/node_modules/zod/v4/locales/fr.js +108 -0
  523. package/node_modules/zod/v4/locales/he.cjs +241 -0
  524. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  525. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  526. package/node_modules/zod/v4/locales/he.js +214 -0
  527. package/node_modules/zod/v4/locales/hu.cjs +135 -0
  528. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  529. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  530. package/node_modules/zod/v4/locales/hu.js +108 -0
  531. package/node_modules/zod/v4/locales/hy.cjs +174 -0
  532. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  533. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  534. package/node_modules/zod/v4/locales/hy.js +147 -0
  535. package/node_modules/zod/v4/locales/id.cjs +133 -0
  536. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  537. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  538. package/node_modules/zod/v4/locales/id.js +106 -0
  539. package/node_modules/zod/v4/locales/index.cjs +104 -0
  540. package/node_modules/zod/v4/locales/index.d.cts +49 -0
  541. package/node_modules/zod/v4/locales/index.d.ts +49 -0
  542. package/node_modules/zod/v4/locales/index.js +49 -0
  543. package/node_modules/zod/v4/locales/is.cjs +136 -0
  544. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  545. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  546. package/node_modules/zod/v4/locales/is.js +109 -0
  547. package/node_modules/zod/v4/locales/it.cjs +135 -0
  548. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  549. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  550. package/node_modules/zod/v4/locales/it.js +108 -0
  551. package/node_modules/zod/v4/locales/ja.cjs +134 -0
  552. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  553. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  554. package/node_modules/zod/v4/locales/ja.js +107 -0
  555. package/node_modules/zod/v4/locales/ka.cjs +139 -0
  556. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  557. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  558. package/node_modules/zod/v4/locales/ka.js +112 -0
  559. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  560. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  561. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  562. package/node_modules/zod/v4/locales/kh.js +5 -0
  563. package/node_modules/zod/v4/locales/km.cjs +137 -0
  564. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  565. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  566. package/node_modules/zod/v4/locales/km.js +110 -0
  567. package/node_modules/zod/v4/locales/ko.cjs +138 -0
  568. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  569. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  570. package/node_modules/zod/v4/locales/ko.js +111 -0
  571. package/node_modules/zod/v4/locales/lt.cjs +230 -0
  572. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  573. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  574. package/node_modules/zod/v4/locales/lt.js +203 -0
  575. package/node_modules/zod/v4/locales/mk.cjs +136 -0
  576. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  577. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  578. package/node_modules/zod/v4/locales/mk.js +109 -0
  579. package/node_modules/zod/v4/locales/ms.cjs +134 -0
  580. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  581. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  582. package/node_modules/zod/v4/locales/ms.js +107 -0
  583. package/node_modules/zod/v4/locales/nl.cjs +137 -0
  584. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  585. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  586. package/node_modules/zod/v4/locales/nl.js +110 -0
  587. package/node_modules/zod/v4/locales/no.cjs +135 -0
  588. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  589. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  590. package/node_modules/zod/v4/locales/no.js +108 -0
  591. package/node_modules/zod/v4/locales/ota.cjs +136 -0
  592. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  593. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  594. package/node_modules/zod/v4/locales/ota.js +109 -0
  595. package/node_modules/zod/v4/locales/package.json +6 -0
  596. package/node_modules/zod/v4/locales/pl.cjs +136 -0
  597. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  598. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  599. package/node_modules/zod/v4/locales/pl.js +109 -0
  600. package/node_modules/zod/v4/locales/ps.cjs +141 -0
  601. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  602. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  603. package/node_modules/zod/v4/locales/ps.js +114 -0
  604. package/node_modules/zod/v4/locales/pt.cjs +135 -0
  605. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  606. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  607. package/node_modules/zod/v4/locales/pt.js +108 -0
  608. package/node_modules/zod/v4/locales/ru.cjs +183 -0
  609. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  610. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  611. package/node_modules/zod/v4/locales/ru.js +156 -0
  612. package/node_modules/zod/v4/locales/sl.cjs +136 -0
  613. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  614. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  615. package/node_modules/zod/v4/locales/sl.js +109 -0
  616. package/node_modules/zod/v4/locales/sv.cjs +137 -0
  617. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  618. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  619. package/node_modules/zod/v4/locales/sv.js +110 -0
  620. package/node_modules/zod/v4/locales/ta.cjs +137 -0
  621. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  622. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  623. package/node_modules/zod/v4/locales/ta.js +110 -0
  624. package/node_modules/zod/v4/locales/th.cjs +137 -0
  625. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  626. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  627. package/node_modules/zod/v4/locales/th.js +110 -0
  628. package/node_modules/zod/v4/locales/tr.cjs +132 -0
  629. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  630. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  631. package/node_modules/zod/v4/locales/tr.js +105 -0
  632. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  633. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  634. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  635. package/node_modules/zod/v4/locales/ua.js +5 -0
  636. package/node_modules/zod/v4/locales/uk.cjs +135 -0
  637. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  638. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  639. package/node_modules/zod/v4/locales/uk.js +108 -0
  640. package/node_modules/zod/v4/locales/ur.cjs +137 -0
  641. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  642. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  643. package/node_modules/zod/v4/locales/ur.js +110 -0
  644. package/node_modules/zod/v4/locales/uz.cjs +136 -0
  645. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  646. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  647. package/node_modules/zod/v4/locales/uz.js +109 -0
  648. package/node_modules/zod/v4/locales/vi.cjs +135 -0
  649. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  650. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  651. package/node_modules/zod/v4/locales/vi.js +108 -0
  652. package/node_modules/zod/v4/locales/yo.cjs +134 -0
  653. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  654. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  655. package/node_modules/zod/v4/locales/yo.js +107 -0
  656. package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  657. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  658. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  659. package/node_modules/zod/v4/locales/zh-CN.js +109 -0
  660. package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  661. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  662. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  663. package/node_modules/zod/v4/locales/zh-TW.js +107 -0
  664. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  665. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  666. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  667. package/node_modules/zod/v4/mini/checks.js +1 -0
  668. package/node_modules/zod/v4/mini/coerce.cjs +52 -0
  669. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  670. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  671. package/node_modules/zod/v4/mini/coerce.js +22 -0
  672. package/node_modules/zod/v4/mini/external.cjs +63 -0
  673. package/node_modules/zod/v4/mini/external.d.cts +12 -0
  674. package/node_modules/zod/v4/mini/external.d.ts +12 -0
  675. package/node_modules/zod/v4/mini/external.js +14 -0
  676. package/node_modules/zod/v4/mini/index.cjs +32 -0
  677. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  678. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  679. package/node_modules/zod/v4/mini/index.js +3 -0
  680. package/node_modules/zod/v4/mini/iso.cjs +64 -0
  681. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  682. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  683. package/node_modules/zod/v4/mini/iso.js +34 -0
  684. package/node_modules/zod/v4/mini/package.json +6 -0
  685. package/node_modules/zod/v4/mini/parse.cjs +16 -0
  686. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  687. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  688. package/node_modules/zod/v4/mini/parse.js +1 -0
  689. package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  690. package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  691. package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  692. package/node_modules/zod/v4/mini/schemas.js +925 -0
  693. package/node_modules/zod/v4/package.json +6 -0
  694. package/node_modules/zod/v4-mini/index.cjs +32 -0
  695. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  696. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  697. package/node_modules/zod/v4-mini/index.js +3 -0
  698. package/node_modules/zod/v4-mini/package.json +6 -0
  699. package/package.json +11 -10
  700. package/chat/charts/chart/chart.component.d.ts +0 -13
  701. package/chat/chat-message/chat-message.component.d.ts +0 -75
  702. package/chat/chat-settings-v3/chat-settings-v3.component.d.ts +0 -48
  703. package/chat/chat.component.d.ts +0 -387
  704. package/chat/chat.service.d.ts +0 -370
  705. package/chat/custom-elements/components/code-block.component.d.ts +0 -11
  706. package/chat/custom-elements/components/document-reference.component.d.ts +0 -13
  707. package/chat/custom-elements/components/image-reference.component.d.ts +0 -14
  708. package/chat/custom-elements/components/page-reference.component.d.ts +0 -14
  709. package/chat/custom-elements/components/table-tools.component.d.ts +0 -11
  710. package/chat/custom-elements/custom-elements.config.d.ts +0 -2
  711. package/chat/custom-elements/custom-elements.service.d.ts +0 -14
  712. package/chat/debug-message/debug-message-details/debug-message-details.component.d.ts +0 -18
  713. package/chat/debug-message/debug-message.component.d.ts +0 -14
  714. package/chat/debug-message/debug-message.service.d.ts +0 -15
  715. package/chat/dialogs/delete-saved-chat.component.d.ts +0 -22
  716. package/chat/dialogs/rename-saved-chat.component.d.ts +0 -21
  717. package/chat/dialogs/updates.component.d.ts +0 -15
  718. package/chat/documents-upload/document-list/document-list.component.d.ts +0 -64
  719. package/chat/documents-upload/document-overview/document-overview.component.d.ts +0 -17
  720. package/chat/documents-upload/document-upload/document-upload.component.d.ts +0 -91
  721. package/chat/documents-upload/documents-upload.model.d.ts +0 -66
  722. package/chat/documents-upload/documents-upload.service.d.ts +0 -161
  723. package/chat/fetch-patcher/app-injector.d.ts +0 -9
  724. package/chat/fetch-patcher/fetch-patcher.d.ts +0 -31
  725. package/chat/fetch-patcher/global-error-handler.service.d.ts +0 -36
  726. package/chat/fetch-patcher/handle-unauthorized-logic.d.ts +0 -13
  727. package/chat/format-icon/format-icon.component.d.ts +0 -10
  728. package/chat/format-icon/icons.d.ts +0 -5
  729. package/chat/initials-avatar/initials-avatar.component.d.ts +0 -35
  730. package/chat/instance-manager.service.d.ts +0 -28
  731. package/chat/markdown-it/markdown-it.config.d.ts +0 -4
  732. package/chat/markdown-it/plugins/code-block.plugin.d.ts +0 -2
  733. package/chat/markdown-it/plugins/document-reference.plugin.d.ts +0 -8
  734. package/chat/markdown-it/plugins/image-reference.plugin.d.ts +0 -9
  735. package/chat/markdown-it/plugins/link.plugin.d.ts +0 -5
  736. package/chat/markdown-it/plugins/page-reference.plugin.d.ts +0 -9
  737. package/chat/markdown-it/plugins/table-tools.plugin.d.ts +0 -2
  738. package/chat/pipes/message-content.pipe.d.ts +0 -16
  739. package/chat/public-api.d.ts +0 -35
  740. package/chat/references/chat-reference/chat-reference.component.d.ts +0 -24
  741. package/chat/references/chat-reference-image/chat-reference-image.component.d.ts +0 -20
  742. package/chat/references/chat-reference-page/chat-reference-page.component.d.ts +0 -20
  743. package/chat/saved-chats/saved-chats.component.d.ts +0 -37
  744. package/chat/saved-chats/saved-chats.service.d.ts +0 -29
  745. package/chat/services/app.service.d.ts +0 -9
  746. package/chat/services/assistant-configuration.service.d.ts +0 -34
  747. package/chat/services/assistant-metadata.service.d.ts +0 -20
  748. package/chat/services/assistant-tokens-tracking.service.d.ts +0 -23
  749. package/chat/services/assistant-ws-frames.service.d.ts +0 -50
  750. package/chat/services/dialog.service.d.ts +0 -12
  751. package/chat/services/notification.service.d.ts +0 -10
  752. package/chat/services/principal.service.d.ts +0 -7
  753. package/chat/services/search.service.d.ts +0 -7
  754. package/chat/services/signalR-connection.service.d.ts +0 -25
  755. package/chat/services/signalR.web.service.d.ts +0 -35
  756. package/chat/services/ui.service.d.ts +0 -13
  757. package/chat/services/user-settings.service.d.ts +0 -7
  758. package/chat/smart-renderer/smart-renderer.d.ts +0 -25
  759. package/chat/token-progress-bar/token-progress-bar.component.d.ts +0 -24
  760. package/chat/tooltip/tooltip.component.d.ts +0 -12
  761. package/chat/tooltip/tooltip.directive.d.ts +0 -81
  762. package/chat/types/message-content.types.d.ts +0 -54
  763. package/chat/types/message-reference.types.d.ts +0 -14
  764. package/chat/types.d.ts +0 -920
  765. package/chat/utils/assistant-json.d.ts +0 -2
  766. package/chat/utils/utils.service.d.ts +0 -67
  767. package/chat/version.d.ts +0 -1
  768. package/esm2022/chat/charts/chart/chart.component.mjs +0 -40
  769. package/esm2022/chat/chat-message/chat-message.component.mjs +0 -252
  770. package/esm2022/chat/chat-settings-v3/chat-settings-v3.component.mjs +0 -121
  771. package/esm2022/chat/chat.component.mjs +0 -1115
  772. package/esm2022/chat/chat.service.mjs +0 -636
  773. package/esm2022/chat/custom-elements/components/code-block.component.mjs +0 -97
  774. package/esm2022/chat/custom-elements/components/document-reference.component.mjs +0 -85
  775. package/esm2022/chat/custom-elements/components/image-reference.component.mjs +0 -79
  776. package/esm2022/chat/custom-elements/components/page-reference.component.mjs +0 -79
  777. package/esm2022/chat/custom-elements/components/table-tools.component.mjs +0 -111
  778. package/esm2022/chat/custom-elements/custom-elements.config.mjs +0 -6
  779. package/esm2022/chat/custom-elements/custom-elements.service.mjs +0 -35
  780. package/esm2022/chat/debug-message/debug-message-details/debug-message-details.component.mjs +0 -43
  781. package/esm2022/chat/debug-message/debug-message.component.mjs +0 -40
  782. package/esm2022/chat/debug-message/debug-message.service.mjs +0 -49
  783. package/esm2022/chat/dialogs/delete-saved-chat.component.mjs +0 -81
  784. package/esm2022/chat/dialogs/rename-saved-chat.component.mjs +0 -85
  785. package/esm2022/chat/dialogs/updates.component.mjs +0 -61
  786. package/esm2022/chat/documents-upload/document-list/document-list.component.mjs +0 -141
  787. package/esm2022/chat/documents-upload/document-overview/document-overview.component.mjs +0 -42
  788. package/esm2022/chat/documents-upload/document-upload/document-upload.component.mjs +0 -254
  789. package/esm2022/chat/documents-upload/documents-upload.model.mjs +0 -2
  790. package/esm2022/chat/documents-upload/documents-upload.service.mjs +0 -274
  791. package/esm2022/chat/fetch-patcher/app-injector.mjs +0 -19
  792. package/esm2022/chat/fetch-patcher/fetch-patcher.mjs +0 -62
  793. package/esm2022/chat/fetch-patcher/global-error-handler.service.mjs +0 -92
  794. package/esm2022/chat/fetch-patcher/handle-unauthorized-logic.mjs +0 -19
  795. package/esm2022/chat/format-icon/format-icon.component.mjs +0 -23
  796. package/esm2022/chat/format-icon/icons.mjs +0 -138
  797. package/esm2022/chat/initials-avatar/initials-avatar.component.mjs +0 -60
  798. package/esm2022/chat/instance-manager.service.mjs +0 -46
  799. package/esm2022/chat/markdown-it/markdown-it.config.mjs +0 -6
  800. package/esm2022/chat/markdown-it/plugins/code-block.plugin.mjs +0 -14
  801. package/esm2022/chat/markdown-it/plugins/document-reference.plugin.mjs +0 -66
  802. package/esm2022/chat/markdown-it/plugins/image-reference.plugin.mjs +0 -67
  803. package/esm2022/chat/markdown-it/plugins/link.plugin.mjs +0 -15
  804. package/esm2022/chat/markdown-it/plugins/page-reference.plugin.mjs +0 -67
  805. package/esm2022/chat/markdown-it/plugins/table-tools.plugin.mjs +0 -12
  806. package/esm2022/chat/pipes/message-content.pipe.mjs +0 -37
  807. package/esm2022/chat/public-api.mjs +0 -37
  808. package/esm2022/chat/references/chat-reference/chat-reference.component.mjs +0 -72
  809. package/esm2022/chat/references/chat-reference-image/chat-reference-image.component.mjs +0 -42
  810. package/esm2022/chat/references/chat-reference-page/chat-reference-page.component.mjs +0 -42
  811. package/esm2022/chat/saved-chats/saved-chats.component.mjs +0 -115
  812. package/esm2022/chat/saved-chats/saved-chats.service.mjs +0 -170
  813. package/esm2022/chat/services/app.service.mjs +0 -30
  814. package/esm2022/chat/services/assistant-configuration.service.mjs +0 -158
  815. package/esm2022/chat/services/assistant-metadata.service.mjs +0 -85
  816. package/esm2022/chat/services/assistant-tokens-tracking.service.mjs +0 -50
  817. package/esm2022/chat/services/assistant-ws-frames.service.mjs +0 -391
  818. package/esm2022/chat/services/dialog.service.mjs +0 -40
  819. package/esm2022/chat/services/notification.service.mjs +0 -25
  820. package/esm2022/chat/services/principal.service.mjs +0 -16
  821. package/esm2022/chat/services/search.service.mjs +0 -13
  822. package/esm2022/chat/services/signalR-connection.service.mjs +0 -102
  823. package/esm2022/chat/services/signalR.web.service.mjs +0 -69
  824. package/esm2022/chat/services/ui.service.mjs +0 -61
  825. package/esm2022/chat/services/user-settings.service.mjs +0 -25
  826. package/esm2022/chat/sinequa-assistant-chat.mjs +0 -5
  827. package/esm2022/chat/smart-renderer/smart-renderer.mjs +0 -104
  828. package/esm2022/chat/token-progress-bar/token-progress-bar.component.mjs +0 -52
  829. package/esm2022/chat/tooltip/tooltip.component.mjs +0 -44
  830. package/esm2022/chat/tooltip/tooltip.directive.mjs +0 -203
  831. package/esm2022/chat/types/message-content.types.mjs +0 -2
  832. package/esm2022/chat/types/message-reference.types.mjs +0 -2
  833. package/esm2022/chat/types.mjs +0 -130
  834. package/esm2022/chat/utils/assistant-json.mjs +0 -12
  835. package/esm2022/chat/utils/utils.service.mjs +0 -170
  836. package/esm2022/chat/version.mjs +0 -3
  837. package/esm2022/public-api.mjs +0 -3
  838. package/esm2022/sinequa-assistant.mjs +0 -5
  839. package/public-api.d.ts +0 -1
@@ -1,141 +0,0 @@
1
- import { CommonModule } from "@angular/common";
2
- import { Component, inject } from "@angular/core";
3
- import { BehaviorSubject, catchError, combineLatest, EMPTY, of, Subscription, switchMap, take, tap } from "rxjs";
4
- import { parseISO, toDate } from "date-fns";
5
- import { provideTranslocoScope, TranslocoPipe, TranslocoService } from '@jsverse/transloco';
6
- import { isAuthenticated } from "@sinequa/atomic";
7
- import { AssistantUtils } from "../../utils/utils.service";
8
- import { DocumentsUploadService } from "../documents-upload.service";
9
- import { FormatIconComponent } from '../../format-icon/format-icon.component';
10
- import { NotificationsService } from "../../services/notification.service";
11
- import { AppService } from "../../services/app.service";
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/common";
14
- export class DocumentListComponent {
15
- constructor() {
16
- this.groupedUploadedDocuments$ = new BehaviorSubject([]);
17
- this.deletingAll = false;
18
- this._subscription = new Subscription();
19
- this.documentsUploadService = inject(DocumentsUploadService);
20
- this.notificationsService = inject(NotificationsService);
21
- this.appService = inject(AppService);
22
- this.transloco = inject(TranslocoService);
23
- this.assistantUtils = inject(AssistantUtils);
24
- }
25
- ngOnInit() {
26
- this._subscription.add(of(isAuthenticated()).pipe(switchMap((_) => this.appService.init()), tap((_) => {
27
- this.onUpdateUploadedDocumentsList();
28
- this.documentsUploadService.getDocumentsList();
29
- }), catchError((error) => {
30
- console.error(error);
31
- this.notificationsService.error(error);
32
- return EMPTY;
33
- }))
34
- .subscribe());
35
- }
36
- ngOnDestroy() {
37
- this._subscription.unsubscribe();
38
- }
39
- /**
40
- * Updates the list of uploaded documents by fetching the latest data from the service.
41
- * The fetched documents are grouped by date.
42
- *
43
- * @returns {void}
44
- */
45
- onUpdateUploadedDocumentsList() {
46
- this._subscription.add(combineLatest([
47
- this.documentsUploadService.uploadedDocuments$,
48
- this.transloco.langChanges$
49
- ]).pipe(tap(([uploadedDocuments]) => {
50
- this.groupedUploadedDocuments$.next(this._groupUploadedDocumentsByDate(uploadedDocuments));
51
- }), catchError((error) => {
52
- console.error(error);
53
- this.notificationsService.error(error);
54
- return EMPTY;
55
- }))
56
- .subscribe());
57
- }
58
- deleteDocument(event, doc) {
59
- event.stopPropagation();
60
- this.documentToDelete = doc;
61
- }
62
- /**
63
- * Handles the deletion of an uploaded document. This method triggers a confirmation modal
64
- * to ensure the user wants to proceed with the deletion. If confirmed, it sends a request
65
- * to delete the document and provides feedback to the user upon success or failure.
66
- *
67
- * @param event - The event object associated with the delete action, used to stop propagation.
68
- * @param doc - The document to be deleted, represented as an instance of `UploadedDocument`.
69
- *
70
- * @remarks
71
- * - Displays a confirmation modal with a warning message.
72
- * - On confirmation, deletes the document.
73
- * - Shows a success notification upon successful deletion.
74
- * - Logs and notifies the user of any errors encountered during the deletion process.
75
- */
76
- performDeleteDocument() {
77
- this._subscription.add(this.documentsUploadService.deleteDocuments([this.documentToDelete.id])
78
- .pipe(tap(() => {
79
- this.notificationsService.success(this.transloco.translate('chatDocumentsUpload.deleteDocumentSuccess', { title: this.documentToDelete.fileName }));
80
- this.documentToDelete = undefined;
81
- }), switchMap(() => this.documentsUploadService.getDocumentsList()), catchError((error) => {
82
- console.error(error);
83
- this.notificationsService.error(this.transloco.translate('chatDocumentsUpload.deleteDocumentError', { title: this.documentToDelete.fileName }));
84
- return EMPTY;
85
- }), take(1))
86
- .subscribe());
87
- }
88
- deleteAllDocuments(event) {
89
- event?.stopPropagation();
90
- this.deletingAll = true;
91
- }
92
- /**
93
- * Handles the deletion of all uploaded documents. This method triggers a confirmation modal
94
- * to ensure the user wants to proceed with the deletion. If confirmed, it sends a request
95
- * to delete the whole list of documents and provides feedback to the user upon success or failure.
96
- *
97
- * @param event - (Optional) The event object associated with the delete action, used to stop propagation.
98
- *
99
- * @remarks
100
- * - Displays a confirmation modal with a warning message.
101
- * - On confirmation, deletes all documents.
102
- * - Shows a success notification upon successful deletion.
103
- * - Logs and notifies the user of any errors encountered during the deletion process.
104
- */
105
- performDeleteAllDocuments() {
106
- this._subscription.add(this.documentsUploadService.deleteAllDocuments()
107
- .pipe(tap(() => {
108
- this.deletingAll = false;
109
- this.notificationsService.success(this.transloco.translate('chatDocumentsUpload.deleteAllDocumentsSuccess'));
110
- }), switchMap(() => this.documentsUploadService.getDocumentsList()), catchError((error) => {
111
- console.error(error);
112
- this.notificationsService.error(this.transloco.translate('chatDocumentsUpload.deleteAllDocumentsError'));
113
- return EMPTY;
114
- }), take(1))
115
- .subscribe());
116
- }
117
- _groupUploadedDocumentsByDate(docs) {
118
- if (!docs || docs.length === 0) {
119
- return [];
120
- }
121
- const groupedUploadedDocuments = new Map();
122
- docs
123
- .sort((a, b) => parseISO(b.indexationTime).getTime() - parseISO(a.indexationTime).getTime())
124
- .forEach(doc => {
125
- const groupKey = this.assistantUtils.getTimeKey(toDate(parseISO(doc.indexationTime))); // Must convert the UTC date to local date before passing to _getTimeKey
126
- if (!groupedUploadedDocuments.has(groupKey)) {
127
- groupedUploadedDocuments.set(groupKey, []);
128
- }
129
- groupedUploadedDocuments.get(groupKey).push(doc);
130
- });
131
- return Array.from(groupedUploadedDocuments, ([key, value]) => ({ key, value }));
132
- ;
133
- }
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DocumentListComponent, isStandalone: true, selector: "sq-document-list", providers: [provideTranslocoScope('chat-documents-upload')], ngImport: i0, template: "<div class=\"alert alert-danger\" *ngIf=\"deletingAll\">\n <span>{{ 'chatDocumentsUpload.deleteAllDocumentsText' | transloco }}</span>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-light w-100\" (click)=\"deletingAll=false\">{{ 'chatDocumentsUpload.cancel' | transloco }}</button>\n <button class=\"btn btn-secondary w-100\" (click)=\"performDeleteAllDocuments()\">{{ 'chatDocumentsUpload.confirm' | transloco }}</button>\n </div>\n</div>\n\n<div *ngFor=\"let group of (groupedUploadedDocuments$ | async)\" class=\"uploaded-docs\">\n <span class=\"uploaded-docs-date\">{{group.key | transloco}}</span>\n <div *ngFor=\"let doc of group.value\">\n <div class=\"uploaded-doc p-2\">\n <sq-format-icon [extension]=\"doc.fileExt\" class=\"me-1\"></sq-format-icon>\n <span class=\"title me-1\" [title]=\"doc.fileName\">{{doc.fileName}}</span>\n <button\n type=\"button\"\n (click)=\"deleteDocument($event, doc)\"\n [title]=\"'chatDocumentsUpload.delete' | transloco\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"uploaded-doc-actions fas fa-trash ms-1\"></i>\n </button>\n </div>\n\n <div class=\"alert alert-warning\" *ngIf=\"documentToDelete && documentToDelete.id === doc.id\">\n <span>\n {{ 'chatDocumentsUpload.deleteDocumentText' | transloco: { title: documentToDelete!.fileName } }}\n </span>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-light w-100\" (click)=\"documentToDelete=undefined\">{{ 'chatDocumentsUpload.cancel' | transloco }}</button>\n <button class=\"btn btn-secondary w-100\" (click)=\"performDeleteDocument()\">{{ 'chatDocumentsUpload.confirm' | transloco }}</button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}.uploaded-docs{padding:.3rem 1rem}.uploaded-docs-date{font-size:12px;font-weight:500;color:#a9a9a9;margin-top:.5rem}.uploaded-docs .uploaded-doc{display:flex;align-items:center;cursor:pointer;margin-left:.25rem}.uploaded-docs .uploaded-doc span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.uploaded-docs .uploaded-doc .uploaded-doc-actions{display:none}.uploaded-docs .uploaded-doc .uploaded-doc-actions:hover{color:var(--ast-primary-color, #005DA7)}.uploaded-docs .uploaded-doc:hover{background-color:var(--ast-uploaded-doc-hover-background, #f2f8fe)}.uploaded-docs .uploaded-doc:hover .uploaded-doc-actions{display:block}.uploaded-docs .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormatIconComponent, selector: "sq-format-icon", inputs: ["extension"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] }); }
136
- }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentListComponent, decorators: [{
138
- type: Component,
139
- args: [{ selector: "sq-document-list", standalone: true, providers: [provideTranslocoScope('chat-documents-upload')], imports: [CommonModule, FormatIconComponent, TranslocoPipe], template: "<div class=\"alert alert-danger\" *ngIf=\"deletingAll\">\n <span>{{ 'chatDocumentsUpload.deleteAllDocumentsText' | transloco }}</span>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-light w-100\" (click)=\"deletingAll=false\">{{ 'chatDocumentsUpload.cancel' | transloco }}</button>\n <button class=\"btn btn-secondary w-100\" (click)=\"performDeleteAllDocuments()\">{{ 'chatDocumentsUpload.confirm' | transloco }}</button>\n </div>\n</div>\n\n<div *ngFor=\"let group of (groupedUploadedDocuments$ | async)\" class=\"uploaded-docs\">\n <span class=\"uploaded-docs-date\">{{group.key | transloco}}</span>\n <div *ngFor=\"let doc of group.value\">\n <div class=\"uploaded-doc p-2\">\n <sq-format-icon [extension]=\"doc.fileExt\" class=\"me-1\"></sq-format-icon>\n <span class=\"title me-1\" [title]=\"doc.fileName\">{{doc.fileName}}</span>\n <button\n type=\"button\"\n (click)=\"deleteDocument($event, doc)\"\n [title]=\"'chatDocumentsUpload.delete' | transloco\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"uploaded-doc-actions fas fa-trash ms-1\"></i>\n </button>\n </div>\n\n <div class=\"alert alert-warning\" *ngIf=\"documentToDelete && documentToDelete.id === doc.id\">\n <span>\n {{ 'chatDocumentsUpload.deleteDocumentText' | transloco: { title: documentToDelete!.fileName } }}\n </span>\n <div class=\"d-flex gap-2\">\n <button class=\"btn btn-light w-100\" (click)=\"documentToDelete=undefined\">{{ 'chatDocumentsUpload.cancel' | transloco }}</button>\n <button class=\"btn btn-secondary w-100\" (click)=\"performDeleteDocument()\">{{ 'chatDocumentsUpload.confirm' | transloco }}</button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}.uploaded-docs{padding:.3rem 1rem}.uploaded-docs-date{font-size:12px;font-weight:500;color:#a9a9a9;margin-top:.5rem}.uploaded-docs .uploaded-doc{display:flex;align-items:center;cursor:pointer;margin-left:.25rem}.uploaded-docs .uploaded-doc span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.uploaded-docs .uploaded-doc .uploaded-doc-actions{display:none}.uploaded-docs .uploaded-doc .uploaded-doc-actions:hover{color:var(--ast-primary-color, #005DA7)}.uploaded-docs .uploaded-doc:hover{background-color:var(--ast-uploaded-doc-hover-background, #f2f8fe)}.uploaded-docs .uploaded-doc:hover .uploaded-doc-actions{display:block}.uploaded-docs .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
140
- }] });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50LWxpc3QvZG9jdW1lbnQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50LWxpc3QvZG9jdW1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixLQUFLLEVBQ0wsRUFBRSxFQUNGLFlBQVksRUFDWixTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsRUFDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNQLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBVXhELE1BQU0sT0FBTyxxQkFBcUI7SUFSbEM7UUFTUyw4QkFBeUIsR0FBRyxJQUFJLGVBQWUsQ0FBOEMsRUFBRSxDQUFDLENBQUM7UUFHakcsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFNUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hELHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBbUoxRDtJQWpKQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakQsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDZCQUE2QjtRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQjtZQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVk7U0FDNUIsQ0FBQyxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7UUFDNUYsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFZLEVBQUUsR0FBcUI7UUFDaEQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdkUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLDJDQUEyQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckosSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFDL0QsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLHlDQUF5QyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakosT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7YUFDQSxTQUFTLEVBQUUsQ0FDYixDQUFDO0lBRUosQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRTthQUMvQyxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsK0NBQStDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUMvRCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxDQUFDO1lBQ3pHLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUyxFQUFFLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxJQUFvQztRQUN4RSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUV2RSxJQUFJO2FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNYLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdFQUF3RTtZQUUvSixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ25GLENBQUM7K0dBOUpVLHFCQUFxQjttR0FBckIscUJBQXFCLCtEQUhyQixDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUMsMEJDakM3RCwyMERBbUNBLDBuRUREWSxZQUFZLHFUQUFFLG1CQUFtQiw2RUFBRSxhQUFhOzs0RkFFL0MscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLGFBQ0wsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFdBQ2xELENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNhdGNoRXJyb3IsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIEVNUFRZLFxuICBvZixcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcFxufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgcGFyc2VJU08sXG4gIHRvRGF0ZVxufSBmcm9tIFwiZGF0ZS1mbnNcIjtcbmltcG9ydCB7IHByb3ZpZGVUcmFuc2xvY29TY29wZSwgVHJhbnNsb2NvUGlwZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB7IGlzQXV0aGVudGljYXRlZCB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcblxuaW1wb3J0IHsgQXNzaXN0YW50VXRpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbHMuc2VydmljZVwiO1xuaW1wb3J0IHsgRG9jdW1lbnRzVXBsb2FkU2VydmljZSB9IGZyb20gXCIuLi9kb2N1bWVudHMtdXBsb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZvcm1hdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtYXQtaWNvbi9mb3JtYXQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkZWREb2N1bWVudCB9IGZyb20gXCIuLi9kb2N1bWVudHMtdXBsb2FkLm1vZGVsXCI7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3EtZG9jdW1lbnQtbGlzdFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2RvY3VtZW50LWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2RvY3VtZW50LWxpc3QuY29tcG9uZW50LnNjc3NcIl0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xvY29TY29wZSgnY2hhdC1kb2N1bWVudHMtdXBsb2FkJyldLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3JtYXRJY29uQ29tcG9uZW50LCBUcmFuc2xvY29QaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZ3JvdXBlZFVwbG9hZGVkRG9jdW1lbnRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBrZXk6IHN0cmluZzsgdmFsdWU6IFVwbG9hZGVkRG9jdW1lbnRbXX1bXT4oW10pO1xuXG4gIHB1YmxpYyBkb2N1bWVudFRvRGVsZXRlPzogVXBsb2FkZWREb2N1bWVudDtcbiAgcHVibGljIGRlbGV0aW5nQWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBkb2N1bWVudHNVcGxvYWRTZXJ2aWNlID0gaW5qZWN0KERvY3VtZW50c1VwbG9hZFNlcnZpY2UpO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBwdWJsaWMgYXBwU2VydmljZSA9IGluamVjdChBcHBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY28gPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzaXN0YW50VXRpbHMgPSBpbmplY3QoQXNzaXN0YW50VXRpbHMpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBvZihpc0F1dGhlbnRpY2F0ZWQoKSkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKF8pID0+IHRoaXMuYXBwU2VydmljZS5pbml0KCkpLFxuICAgICAgICAgIHRhcCgoXykgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblVwZGF0ZVVwbG9hZGVkRG9jdW1lbnRzTGlzdCgpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLmdldERvY3VtZW50c0xpc3QoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHVwbG9hZGVkIGRvY3VtZW50cyBieSBmZXRjaGluZyB0aGUgbGF0ZXN0IGRhdGEgZnJvbSB0aGUgc2VydmljZS5cbiAgICogVGhlIGZldGNoZWQgZG9jdW1lbnRzIGFyZSBncm91cGVkIGJ5IGRhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25VcGRhdGVVcGxvYWRlZERvY3VtZW50c0xpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50c1VwbG9hZFNlcnZpY2UudXBsb2FkZWREb2N1bWVudHMkLFxuICAgICAgICB0aGlzLnRyYW5zbG9jby5sYW5nQ2hhbmdlcyRcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgdGFwKChbdXBsb2FkZWREb2N1bWVudHNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWRVcGxvYWRlZERvY3VtZW50cyQubmV4dCh0aGlzLl9ncm91cFVwbG9hZGVkRG9jdW1lbnRzQnlEYXRlKHVwbG9hZGVkRG9jdW1lbnRzKSlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBkZWxldGVEb2N1bWVudChldmVudDogRXZlbnQsIGRvYzogVXBsb2FkZWREb2N1bWVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZG9jdW1lbnRUb0RlbGV0ZSA9IGRvYztcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiBhbiB1cGxvYWRlZCBkb2N1bWVudC4gVGhpcyBtZXRob2QgdHJpZ2dlcnMgYSBjb25maXJtYXRpb24gbW9kYWxcbiAgICogdG8gZW5zdXJlIHRoZSB1c2VyIHdhbnRzIHRvIHByb2NlZWQgd2l0aCB0aGUgZGVsZXRpb24uIElmIGNvbmZpcm1lZCwgaXQgc2VuZHMgYSByZXF1ZXN0XG4gICAqIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQgYW5kIHByb3ZpZGVzIGZlZWRiYWNrIHRvIHRoZSB1c2VyIHVwb24gc3VjY2VzcyBvciBmYWlsdXJlLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVsZXRlIGFjdGlvbiwgdXNlZCB0byBzdG9wIHByb3BhZ2F0aW9uLlxuICAgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHRvIGJlIGRlbGV0ZWQsIHJlcHJlc2VudGVkIGFzIGFuIGluc3RhbmNlIG9mIGBVcGxvYWRlZERvY3VtZW50YC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogLSBEaXNwbGF5cyBhIGNvbmZpcm1hdGlvbiBtb2RhbCB3aXRoIGEgd2FybmluZyBtZXNzYWdlLlxuICAgKiAtIE9uIGNvbmZpcm1hdGlvbiwgZGVsZXRlcyB0aGUgZG9jdW1lbnQuXG4gICAqIC0gU2hvd3MgYSBzdWNjZXNzIG5vdGlmaWNhdGlvbiB1cG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uXG4gICAqIC0gTG9ncyBhbmQgbm90aWZpZXMgdGhlIHVzZXIgb2YgYW55IGVycm9ycyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIGRlbGV0aW9uIHByb2Nlc3MuXG4gICAqL1xuICBwZXJmb3JtRGVsZXRlRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS5kZWxldGVEb2N1bWVudHMoW3RoaXMuZG9jdW1lbnRUb0RlbGV0ZSEuaWRdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5zdWNjZXNzKHRoaXMudHJhbnNsb2NvLnRyYW5zbGF0ZSgnY2hhdERvY3VtZW50c1VwbG9hZC5kZWxldGVEb2N1bWVudFN1Y2Nlc3MnLCB7IHRpdGxlOiB0aGlzLmRvY3VtZW50VG9EZWxldGUhLmZpbGVOYW1lIH0pKTtcbiAgICAgICAgICB0aGlzLmRvY3VtZW50VG9EZWxldGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLmdldERvY3VtZW50c0xpc3QoKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbG9jby50cmFuc2xhdGUoJ2NoYXREb2N1bWVudHNVcGxvYWQuZGVsZXRlRG9jdW1lbnRFcnJvcicsIHsgdGl0bGU6IHRoaXMuZG9jdW1lbnRUb0RlbGV0ZSEuZmlsZU5hbWUgfSkpO1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG5cbiAgfVxuXG4gIGRlbGV0ZUFsbERvY3VtZW50cyhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGVsZXRpbmdBbGwgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIGFsbCB1cGxvYWRlZCBkb2N1bWVudHMuIFRoaXMgbWV0aG9kIHRyaWdnZXJzIGEgY29uZmlybWF0aW9uIG1vZGFsXG4gICAqIHRvIGVuc3VyZSB0aGUgdXNlciB3YW50cyB0byBwcm9jZWVkIHdpdGggdGhlIGRlbGV0aW9uLiBJZiBjb25maXJtZWQsIGl0IHNlbmRzIGEgcmVxdWVzdFxuICAgKiB0byBkZWxldGUgdGhlIHdob2xlIGxpc3Qgb2YgZG9jdW1lbnRzIGFuZCBwcm92aWRlcyBmZWVkYmFjayB0byB0aGUgdXNlciB1cG9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZS5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gKE9wdGlvbmFsKSBUaGUgZXZlbnQgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVsZXRlIGFjdGlvbiwgdXNlZCB0byBzdG9wIHByb3BhZ2F0aW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiAtIERpc3BsYXlzIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggYSB3YXJuaW5nIG1lc3NhZ2UuXG4gICAqIC0gT24gY29uZmlybWF0aW9uLCBkZWxldGVzIGFsbCBkb2N1bWVudHMuXG4gICAqIC0gU2hvd3MgYSBzdWNjZXNzIG5vdGlmaWNhdGlvbiB1cG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uXG4gICAqIC0gTG9ncyBhbmQgbm90aWZpZXMgdGhlIHVzZXIgb2YgYW55IGVycm9ycyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIGRlbGV0aW9uIHByb2Nlc3MuXG4gICAqL1xuICBwZXJmb3JtRGVsZXRlQWxsRG9jdW1lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmRvY3VtZW50c1VwbG9hZFNlcnZpY2UuZGVsZXRlQWxsRG9jdW1lbnRzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGVsZXRpbmdBbGwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnN1Y2Nlc3ModGhpcy50cmFuc2xvY28udHJhbnNsYXRlKCdjaGF0RG9jdW1lbnRzVXBsb2FkLmRlbGV0ZUFsbERvY3VtZW50c1N1Y2Nlc3MnKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLmdldERvY3VtZW50c0xpc3QoKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbG9jby50cmFuc2xhdGUoJ2NoYXREb2N1bWVudHNVcGxvYWQuZGVsZXRlQWxsRG9jdW1lbnRzRXJyb3InKSk7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dyb3VwVXBsb2FkZWREb2N1bWVudHNCeURhdGUoZG9jczogVXBsb2FkZWREb2N1bWVudFtdIHwgdW5kZWZpbmVkKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IFVwbG9hZGVkRG9jdW1lbnRbXSB9W10ge1xuICAgIGlmICghZG9jcyB8fCBkb2NzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBncm91cGVkVXBsb2FkZWREb2N1bWVudHMgPSBuZXcgTWFwPHN0cmluZywgVXBsb2FkZWREb2N1bWVudFtdPigpO1xuXG4gICAgZG9jc1xuICAgICAgLnNvcnQoKGEsIGIpID0+IHBhcnNlSVNPKGIuaW5kZXhhdGlvblRpbWUpLmdldFRpbWUoKSAtIHBhcnNlSVNPKGEuaW5kZXhhdGlvblRpbWUpLmdldFRpbWUoKSlcbiAgICAgIC5mb3JFYWNoKGRvYyA9PiB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBLZXkgPSB0aGlzLmFzc2lzdGFudFV0aWxzLmdldFRpbWVLZXkodG9EYXRlKHBhcnNlSVNPKGRvYy5pbmRleGF0aW9uVGltZSkpKTsgLy8gTXVzdCBjb252ZXJ0IHRoZSBVVEMgZGF0ZSB0byBsb2NhbCBkYXRlIGJlZm9yZSBwYXNzaW5nIHRvIF9nZXRUaW1lS2V5XG5cbiAgICAgICAgICBpZiAoIWdyb3VwZWRVcGxvYWRlZERvY3VtZW50cy5oYXMoZ3JvdXBLZXkpKSB7XG4gICAgICAgICAgICBncm91cGVkVXBsb2FkZWREb2N1bWVudHMuc2V0KGdyb3VwS2V5LCBbXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JvdXBlZFVwbG9hZGVkRG9jdW1lbnRzLmdldChncm91cEtleSkhLnB1c2goZG9jKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZFVwbG9hZGVkRG9jdW1lbnRzLCAoW2tleSwgdmFsdWVdKSA9PiAoeyBrZXksIHZhbHVlIH0pKTs7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiAqbmdJZj1cImRlbGV0aW5nQWxsXCI+XG4gIDxzcGFuPnt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLmRlbGV0ZUFsbERvY3VtZW50c1RleHQnIHwgdHJhbnNsb2NvIH19PC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgdy0xMDBcIiAoY2xpY2spPVwiZGVsZXRpbmdBbGw9ZmFsc2VcIj57eyAnY2hhdERvY3VtZW50c1VwbG9hZC5jYW5jZWwnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHctMTAwXCIgKGNsaWNrKT1cInBlcmZvcm1EZWxldGVBbGxEb2N1bWVudHMoKVwiPnt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLmNvbmZpcm0nIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIChncm91cGVkVXBsb2FkZWREb2N1bWVudHMkIHwgYXN5bmMpXCIgY2xhc3M9XCJ1cGxvYWRlZC1kb2NzXCI+XG4gIDxzcGFuIGNsYXNzPVwidXBsb2FkZWQtZG9jcy1kYXRlXCI+e3tncm91cC5rZXkgfCB0cmFuc2xvY299fTwvc3Bhbj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgZG9jIG9mIGdyb3VwLnZhbHVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZGVkLWRvYyBwLTJcIj5cbiAgICAgIDxzcS1mb3JtYXQtaWNvbiBbZXh0ZW5zaW9uXT1cImRvYy5maWxlRXh0XCIgY2xhc3M9XCJtZS0xXCI+PC9zcS1mb3JtYXQtaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUgbWUtMVwiIFt0aXRsZV09XCJkb2MuZmlsZU5hbWVcIj57e2RvYy5maWxlTmFtZX19PC9zcGFuPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZURvY3VtZW50KCRldmVudCwgZG9jKVwiXG4gICAgICAgIFt0aXRsZV09XCInY2hhdERvY3VtZW50c1VwbG9hZC5kZWxldGUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgY2xhc3M9XCJiZy10cmFuc3BhcmVudCBib3JkZXItMCBwLTAgbS0wIGN1cnNvci1wb2ludGVyIHRleHQtaW5oZXJpdCBsZWFkaW5nLW5vbmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJ1cGxvYWRlZC1kb2MtYWN0aW9ucyBmYXMgZmEtdHJhc2ggbXMtMVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIiAqbmdJZj1cImRvY3VtZW50VG9EZWxldGUgJiYgZG9jdW1lbnRUb0RlbGV0ZS5pZCA9PT0gZG9jLmlkXCI+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgJ2NoYXREb2N1bWVudHNVcGxvYWQuZGVsZXRlRG9jdW1lbnRUZXh0JyB8IHRyYW5zbG9jbzogeyB0aXRsZTogZG9jdW1lbnRUb0RlbGV0ZSEuZmlsZU5hbWUgfSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCB3LTEwMFwiIChjbGljayk9XCJkb2N1bWVudFRvRGVsZXRlPXVuZGVmaW5lZFwiPnt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLmNhbmNlbCcgfCB0cmFuc2xvY28gfX08L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHctMTAwXCIgKGNsaWNrKT1cInBlcmZvcm1EZWxldGVEb2N1bWVudCgpXCI+e3sgJ2NoYXREb2N1bWVudHNVcGxvYWQuY29uZmlybScgfCB0cmFuc2xvY28gfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,42 +0,0 @@
1
- import { CommonModule } from "@angular/common";
2
- import { Component, EventEmitter, inject, Input, Output } from "@angular/core";
3
- import { catchError, EMPTY, of, Subscription, switchMap, tap } from "rxjs";
4
- import { provideTranslocoScope, TranslocoPipe } from '@jsverse/transloco';
5
- import { isAuthenticated } from "@sinequa/atomic";
6
- import { DocumentsUploadService } from "../documents-upload.service";
7
- import { NotificationsService } from "../../services/notification.service";
8
- import { AppService } from "../../services/app.service";
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- export class DocumentOverviewComponent {
12
- constructor() {
13
- this.disabledUpload = true;
14
- this.onUpload = new EventEmitter();
15
- this._subscription = new Subscription();
16
- this.documentsUploadService = inject(DocumentsUploadService);
17
- this.notificationsService = inject(NotificationsService);
18
- this.appService = inject(AppService);
19
- }
20
- ngOnInit() {
21
- this._subscription.add(of(isAuthenticated()).pipe(switchMap((_) => this.appService.init()), tap((_) => this.documentsUploadService.init()), switchMap((_) => this.documentsUploadService.getDocumentsList()), catchError((error) => {
22
- console.error(error);
23
- this.notificationsService.error(error);
24
- return EMPTY;
25
- }))
26
- .subscribe());
27
- }
28
- ngOnDestroy() {
29
- this._subscription.unsubscribe();
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DocumentOverviewComponent, isStandalone: true, selector: "sq-document-overview", inputs: { disabledUpload: "disabledUpload" }, outputs: { onUpload: "onUpload" }, providers: [provideTranslocoScope('chat-documents-upload')], ngImport: i0, template: "<div class=\"d-flex\">\n <span class=\"overview-text flex-grow-1\">\n {{ 'chatDocumentsUpload.uploadedDocuments' | transloco: { count: (documentsUploadService.uploadedDocuments$ | async)?.length || 0 } }}\n </span>\n <button class=\"btn btn-light\" [title]=\"'chatDocumentsUpload.uploadToSources' | transloco\" (click)=\"onUpload.emit()\" [disabled]=\"disabledUpload\">\n <i class=\"fas fa-cloud-upload-alt\"></i>\n </button>\n</div>\n", styles: [".overview-text{font-style:italic;padding:.5rem .8rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentOverviewComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: "sq-document-overview", standalone: true, providers: [provideTranslocoScope('chat-documents-upload')], imports: [CommonModule, TranslocoPipe], template: "<div class=\"d-flex\">\n <span class=\"overview-text flex-grow-1\">\n {{ 'chatDocumentsUpload.uploadedDocuments' | transloco: { count: (documentsUploadService.uploadedDocuments$ | async)?.length || 0 } }}\n </span>\n <button class=\"btn btn-light\" [title]=\"'chatDocumentsUpload.uploadToSources' | transloco\" (click)=\"onUpload.emit()\" [disabled]=\"disabledUpload\">\n <i class=\"fas fa-cloud-upload-alt\"></i>\n </button>\n</div>\n", styles: [".overview-text{font-style:italic;padding:.5rem .8rem}\n"] }]
37
- }], propDecorators: { disabledUpload: [{
38
- type: Input
39
- }], onUpload: [{
40
- type: Output
41
- }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvZG9jdW1lbnRzLXVwbG9hZC9kb2N1bWVudC1vdmVydmlldy9kb2N1bWVudC1vdmVydmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50LW92ZXJ2aWV3L2RvY3VtZW50LW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsRUFBRSxFQUNGLFlBQVksRUFDWixTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQWV4RCxNQUFNLE9BQU8seUJBQXlCO0lBYnRDO1FBY1csbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFFOUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3hELHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FzQnhDO0lBcEJDLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDeEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDOUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUNoRSxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzsrR0E3QlUseUJBQXlCO21HQUF6Qix5QkFBeUIsb0pBVHpCLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQywwQkN0QjdELCtiQVFBLGdIRGVZLFlBQVksK0VBQUUsYUFBYTs7NEZBUTFCLHlCQUF5QjtrQkFickMsU0FBUzsrQkFDRSxzQkFBc0IsY0FFcEIsSUFBSSxhQUNMLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxXQUNsRCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OEJBUzdCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIEVNUFRZLFxuICBvZixcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRhcFxufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbG9jb1Njb3BlLCBUcmFuc2xvY29QaXBlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcblxuaW1wb3J0IHsgaXNBdXRoZW50aWNhdGVkIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQgeyBEb2N1bWVudHNVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4uL2RvY3VtZW50cy11cGxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInNxLWRvY3VtZW50LW92ZXJ2aWV3XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZG9jdW1lbnQtb3ZlcnZpZXcuY29tcG9uZW50Lmh0bWxcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZVRyYW5zbG9jb1Njb3BlKCdjaGF0LWRvY3VtZW50cy11cGxvYWQnKV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbG9jb1BpcGVdLFxuICBzdHlsZXM6IFtgXG4ub3ZlcnZpZXctdGV4dCB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgcGFkZGluZzogLjVyZW0gLjhyZW07XG59XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50T3ZlcnZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRpc2FibGVkVXBsb2FkOiBib29sZWFuID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgb25VcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBkb2N1bWVudHNVcGxvYWRTZXJ2aWNlID0gaW5qZWN0KERvY3VtZW50c1VwbG9hZFNlcnZpY2UpO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBwdWJsaWMgYXBwU2VydmljZSA9IGluamVjdChBcHBTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgb2YoaXNBdXRoZW50aWNhdGVkKCkpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChfKSA9PiB0aGlzLmFwcFNlcnZpY2UuaW5pdCgpKSxcbiAgICAgICAgICB0YXAoKF8pID0+IHRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS5pbml0KCkpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoXykgPT4gdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLmdldERvY3VtZW50c0xpc3QoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICA8c3BhbiBjbGFzcz1cIm92ZXJ2aWV3LXRleHQgZmxleC1ncm93LTFcIj5cbiAgICB7eyAnY2hhdERvY3VtZW50c1VwbG9hZC51cGxvYWRlZERvY3VtZW50cycgfCB0cmFuc2xvY286IHsgY291bnQ6IChkb2N1bWVudHNVcGxvYWRTZXJ2aWNlLnVwbG9hZGVkRG9jdW1lbnRzJCB8IGFzeW5jKT8ubGVuZ3RoIHx8IDAgfSB9fVxuICA8L3NwYW4+XG4gIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0XCIgW3RpdGxlXT1cIidjaGF0RG9jdW1lbnRzVXBsb2FkLnVwbG9hZFRvU291cmNlcycgfCB0cmFuc2xvY29cIiAoY2xpY2spPVwib25VcGxvYWQuZW1pdCgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkVXBsb2FkXCI+XG4gICAgPGkgY2xhc3M9XCJmYXMgZmEtY2xvdWQtdXBsb2FkLWFsdFwiPjwvaT5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -1,254 +0,0 @@
1
- import { CommonModule } from "@angular/common";
2
- import { Component, inject, Input, ViewChild, } from "@angular/core";
3
- import { NgxFlowModule } from "@flowjs/ngx-flow";
4
- import { BehaviorSubject, catchError, EMPTY, finalize, interval, Subscription, switchMap, takeWhile, tap, startWith, of, take, } from "rxjs";
5
- import { provideTranslocoScope, TranslocoPipe, TranslocoService } from '@jsverse/transloco';
6
- import { isAuthenticated } from "@sinequa/atomic";
7
- import { DocumentsUploadService } from "../documents-upload.service";
8
- import { FormatIconComponent } from '../../format-icon/format-icon.component';
9
- import { NotificationsService } from "../../services/notification.service";
10
- import { AppService } from "../../services/app.service";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/common";
13
- import * as i2 from "@flowjs/ngx-flow";
14
- export class DocumentUploadComponent {
15
- constructor() {
16
- /** Polling interval in milliseconds to update the indexing status of the uploaded documents */
17
- this.pollingInterval = 1000;
18
- this.flowConfig = {
19
- // Disables chunk testing before uploading actual file data. Thus, avoids unnecessary requests and speeds up uploads
20
- testChunks: false,
21
- // Allows multiple file uploads simultaneously
22
- singleFile: false,
23
- // Allows the same file to be uploaded multiple times
24
- allowDuplicateUploads: true,
25
- query: () => {
26
- return {}; // Empty object to prevent query parameters
27
- },
28
- preprocess: (chunk) => chunk.abort() // Prevents the default flow upload of chunks
29
- };
30
- this.errorAlerts = [];
31
- this.dragging$ = new BehaviorSubject(false);
32
- this.indexing$ = new BehaviorSubject(false);
33
- this.indexingInfos$ = new BehaviorSubject(undefined);
34
- this.uploading$ = new BehaviorSubject(false);
35
- this.uploadingInfos$ = new BehaviorSubject(undefined);
36
- this._subscription = new Subscription();
37
- this.documentsUploadService = inject(DocumentsUploadService);
38
- this.notificationsService = inject(NotificationsService);
39
- this.appService = inject(AppService);
40
- this.transloco = inject(TranslocoService);
41
- }
42
- ngOnInit() {
43
- this._subscription.add(of(isAuthenticated()).pipe(switchMap((_) => this.appService.init()), tap((_) => this.documentsUploadService.init()), catchError((error) => {
44
- console.error(error);
45
- this.notificationsService.error(error);
46
- return EMPTY;
47
- }))
48
- .subscribe());
49
- this._subscription.add(this.flow.events$.subscribe((event) => {
50
- const evt = event;
51
- // Kept it just for reference to show how to access data of different events
52
- if (event.type === "filesAdded") {
53
- const addedFiles = evt.event[0];
54
- this._onFilesAdded(addedFiles);
55
- }
56
- if (event.type === "filesSubmitted") {
57
- this._onFilesSubmitted();
58
- }
59
- }));
60
- // Override the upload method of the flow directive
61
- this.flow.upload = this.startUpload.bind(this);
62
- }
63
- ngOnDestroy() {
64
- this._subscription.unsubscribe();
65
- }
66
- /**
67
- * Handles the submission of files.
68
- *
69
- * @remarks
70
- * This method performs the following checks on the submitted files:
71
- *
72
- * 1. Checks if the number of files submitted exceeds the remainingFileCount defined in the constraints.
73
- * - If the number of files exceeds the allowed count, all files are removed from the flow.
74
- * - An error message is added to the error alerts.
75
- *
76
- * 2. Checks if the total size of the files submitted exceeds the remainingFileSize defined in the constraints.
77
- * - If the total size exceeds the allowed size, all files are removed from the flow.
78
- * - An error message is added to the error alerts.
79
- *
80
- * 3. Checks if the file extension of the files submitted is not allowed.
81
- * - If the file extension is not allowed, the file is removed from the flow.
82
- * - An error message is added to the error alerts.
83
- */
84
- _onFilesSubmitted() {
85
- // Get all files from the flow
86
- const files = [...this.flow.flowJs.files];
87
- // Clear the error alerts
88
- this.errorAlerts = [];
89
- const errors = [];
90
- /**
91
- * Checks if the number of files submitted exceeds the remainingFileCount defined in the constraints.
92
- * If the number of files exceeds the allowed count, all files are removed from the flow
93
- * An error message is added to the error alerts.
94
- */
95
- if (files.length > this.documentsUploadService.uploadConfig$.value.constraints.remainingFileCount) {
96
- for (const file of files) {
97
- this.flow.flowJs.removeFile(file);
98
- }
99
- errors.push(this.transloco.translate('chatDocumentsUpload.filesNumberLimitExceeded', { max: this.documentsUploadService.uploadConfig$.value.constraints.remainingFileCount }));
100
- }
101
- /**
102
- * Checks if the total size of the files submitted exceeds the remainingFileSize defined in the constraints.
103
- * If the total size exceeds the allowed size, all files are removed from the flow
104
- * An error message is added to the error alerts.
105
- *
106
- * @remarks
107
- * The maximum size of the files that can be uploaded is temporary set to the maximum of 128 MB and the remainingFileSizeMB defined in the constraints.
108
- * Waiting for the plugin to handle this kestrel issue
109
- */
110
- else if (this.documentsUploadService.convertBytesToMB(this.flow.flowJs.getSize()) > Math.min(128, this.documentsUploadService.uploadConfig$.value.constraints.remainingFileSizeMB)) {
111
- for (const file of files) {
112
- this.flow.flowJs.removeFile(file);
113
- }
114
- errors.push(this.transloco.translate('chatDocumentsUpload.filesSizeLimitExceeded', { max: Math.min(128, this.documentsUploadService.uploadConfig$.value.constraints.remainingFileSizeMB) }));
115
- }
116
- /**
117
- * Checks if the file extension of the files submitted is not allowed.
118
- * If the file extension is not allowed, the file is removed from the flow
119
- * An error message is added to the error alerts.
120
- */
121
- else {
122
- for (const file of files) {
123
- if (!this.documentsUploadService.uploadConfig$.value.constraints.supportedFileExtensions.includes(`${file.getExtension()}`)) {
124
- this.flow.flowJs.removeFile(file);
125
- errors.push(this.transloco.translate('chatDocumentsUpload.fileExtensionUnsupported', { extension: file.getExtension() }));
126
- }
127
- }
128
- }
129
- // Add unique error messages to the error alerts
130
- this.errorAlerts = [...new Set(errors)];
131
- }
132
- _onFilesAdded(files) { }
133
- onDragenter() {
134
- this.dragging$.next(true);
135
- }
136
- onDragleave(event) {
137
- if (!event.relatedTarget ||
138
- !event.relatedTarget.closest(".dropzone")) {
139
- this.dragging$.next(false);
140
- }
141
- }
142
- onDrop() {
143
- this.dragging$.next(false);
144
- }
145
- trackTransfer(transfer) {
146
- return transfer.id;
147
- }
148
- /**
149
- * Initiates the upload process by invoking the `upload` method
150
- * of the `flow` instance.
151
- * The `upload` method is overridden in the `ngOnInit` method to match the requirements of the assistant API.
152
- */
153
- upload() {
154
- this.flow.upload();
155
- }
156
- /**
157
- * Initiates the file upload process by preparing the form data,
158
- * setting the uploading flag, and making an API call to upload the files.
159
- *
160
- * @remarks
161
- * - Collects all files from the `flowJs` instance and appends them to a `FormData` object.
162
- * - Subscribes to the upload process to handle progress updates, completion, and errors.
163
- * - Triggers tracking the indexing process upon successful upload completion.
164
- * - Cleans up the `flow` instance after the upload process is finalized.
165
- */
166
- startUpload() {
167
- const formData = new FormData();
168
- // Add all files with their original names
169
- this.flow.flowJs.files.forEach((file) => {
170
- formData.append(file.name, file.file);
171
- });
172
- // Clear the error alerts
173
- this.errorAlerts = [];
174
- // Set the uploading flag to true
175
- this.uploading$.next(true);
176
- // Make the API call to upload the files
177
- this._subscription.add(this.documentsUploadService.uploadDocuments(formData).pipe(tap((event) => {
178
- if (event.type === 'uploadProgress') {
179
- this.uploadingInfos$.next(event);
180
- }
181
- if (event.type === 'response') {
182
- this.trackIndexingProcess(event.body.statusToken);
183
- }
184
- }), catchError((err) => {
185
- this.uploading$.next(false); // Set the uploading flag to false ONLY in case of an error. Otherwise, keep it true until the start of indexing process in order to prevent flickering of the UI
186
- this.uploadingInfos$.next(undefined); // Clear the uploading infos
187
- console.error(err);
188
- this.notificationsService.error(this.transloco.translate('chatDocumentsUpload.errorUploadingFiles'));
189
- return EMPTY;
190
- }), finalize(() => {
191
- // Clear the flow instance after the upload is complete or an error occurs
192
- this.flow.cancel();
193
- })).subscribe());
194
- }
195
- /**
196
- * Tracks the indexing process for a single documents upload session by polling the API for its status.
197
- *
198
- * @param token - A unique token representing the single documents upload session.
199
- *
200
- * @remarks
201
- * - Clears the uploading flags and sets the indexing flag to true before starting the process.
202
- * - Polls the API every (pollingInterval: default = 1 second) to retrieve the current indexing status.
203
- * - Updates the `indexingInfos` property with the latest status.
204
- * - Stops polling when the indexing process is completed or an error occurs.
205
- * - Cleans up by resetting the indexing flags and clearing the `indexingInfos` property when the process is finalized.
206
- */
207
- trackIndexingProcess(token) {
208
- // Clear the uploading flags
209
- this.uploading$.next(false);
210
- this.uploadingInfos$.next(undefined);
211
- // Set the indexing flag to true
212
- this.indexing$.next(true);
213
- // Combine immediate API call with interval-based polling
214
- this._subscription.add(interval(this.pollingInterval).pipe(startWith(0), // Trigger the API call immediately
215
- switchMap(() => this.documentsUploadService.getIndexingStatus(token)), tap((res) => this.indexingInfos$.next(res)), takeWhile((response) => !response.isCompleted, true), // Use takeWhileInclusive() pattern to ensure that the last value where isCompleted === true is also included.
216
- catchError((err) => {
217
- console.error(err);
218
- this.notificationsService.error(this.transloco.translate('chatDocumentsUpload.errorIndexingStatus'));
219
- return EMPTY;
220
- }), finalize(() => {
221
- // Refresh the list of uploaded documents at the end of indexing
222
- this.documentsUploadService.getDocumentsList().pipe(take(1)).subscribe();
223
- // Clear the indexing flags
224
- this.indexing$.next(false);
225
- this.indexingInfos$.next(undefined);
226
- })).subscribe());
227
- }
228
- /**
229
- * Calculates the indexing progress as a percentage of completed documents.
230
- *
231
- * @param infos - The indexing information containing the list of documents and their statuses.
232
- * @returns The progress as a number between 0 and 1, where 0 indicates no progress and 1 indicates all documents are processed (processed means either indexed or errored).
233
- * Returns 0 if the input is invalid or there are no documents.
234
- */
235
- getIndexingProgress(infos) {
236
- if (!infos || !infos.docs)
237
- return 0;
238
- const completed = infos.docs.filter(doc => doc.status === "Indexed" || doc.status === "Error").length;
239
- const total = infos.docs.length;
240
- return completed / total;
241
- }
242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DocumentUploadComponent, isStandalone: true, selector: "sq-document-upload", inputs: { pollingInterval: "pollingInterval" }, providers: [provideTranslocoScope('chat-documents-upload')], viewQueries: [{ propertyName: "flow", first: true, predicate: ["flow"], descendants: true, static: true }], ngImport: i0, template: "<ng-container #flow=\"flow\" [flowConfig]=\"flowConfig\"></ng-container>\n<div class=\"file-upload-container\">\n <input\n type=\"file\"\n flowButton\n [flow]=\"flow.flowJs\"\n multiple\n hidden\n #fileInput>\n <div\n flowDrop\n [flow]=\"flow.flowJs\"\n (dragenter)=\"onDragenter()\"\n (dragleave)=\"onDragleave($event)\"\n (drop)=\"onDrop()\"\n (click)=\"fileInput.click()\"\n class=\"dropzone\"\n [ngClass]=\"{'dropzone--active': (dragging$ | async)}\"\n [hidden]=\"(uploading$ | async) || (indexing$ | async)\">\n <ng-container *ngIf=\"!(dragging$ | async); else draggingContent\">\n <i class=\"fas fa-cloud-upload-alt\"></i>\n <span>{{ 'chatDocumentsUpload.dragAndDrop' | transloco }}</span>\n <span class=\"text-orange\">{{ 'chatDocumentsUpload.clickToBrowse' | transloco }}</span>\n </ng-container>\n <ng-template #draggingContent>\n <span>{{ 'chatDocumentsUpload.dropFiles' | transloco }}</span>\n </ng-template>\n </div>\n\n <div *ngIf=\"(uploading$ | async) || (indexing$ | async)\" class=\"dropzone dropzone--active\">\n <ng-container *ngIf=\"(uploading$ | async); else indexingState\">\n <i class=\"fas fa-spinner fa-pulse\"></i>\n <span>\n {{ 'chatDocumentsUpload.uploadingFiles' | transloco: { count: (flow.transfers$ | async)!.transfers.length } }}\n </span>\n <span *ngIf=\"(uploadingInfos$ | async) as uploadingInfos\">{{ uploadingInfos.progress | number:'1.0-0' }}%</span>\n </ng-container>\n <ng-template #indexingState>\n <i class=\"fas fa-spinner fa-pulse\"></i>\n <ng-container *ngIf=\"indexingInfos$ | async as indexingInfo\">\n <span>\n {{ 'chatDocumentsUpload.indexingFiles' | transloco: { count: indexingInfo.docs.length } }}\n </span>\n <span>{{ getIndexingProgress(indexingInfo) * 100 | number:'1.0-0' }}%</span>\n </ng-container>\n </ng-template>\n </div>\n\n <ul *ngIf=\"errorAlerts.length > 0\" class=\"error-list mt-3\">\n <li *ngFor=\"let error of errorAlerts\">\n {{ error }}\n </li>\n </ul>\n\n <div *ngIf=\"((flow.transfers$ | async)?.transfers?.length > 0) && !(uploading$ | async)\" class=\"file-list mt-3\">\n <ul>\n <li *ngFor=\"let transfer of (flow.transfers$ | async)!.transfers; trackBy: trackTransfer\">\n <sq-format-icon [extension]=\"transfer.flowFile.getExtension()\" class=\"me-1\"></sq-format-icon>\n <span class=\"me-1\" [title]=\"transfer.name\">{{ transfer.name }}</span>\n <button\n type=\"button\"\n (click)=\"flow.cancelFile(transfer)\"\n [title]=\"'chatDocumentsUpload.cancel' | transloco\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"fas fa-trash\"></i>\n </button>\n </li>\n </ul>\n </div>\n\n <div class=\"d-flex mt-2\">\n <button\n type=\"button\"\n class=\"btn btn-light cancel-btn me-2\"\n (click)=\"flow.cancel()\"\n [disabled]=\"!((flow.transfers$ | async)?.transfers?.length > 0) || (uploading$ | async) || (indexing$ | async)\">\n {{ 'chatDocumentsUpload.cancel' | transloco }}\n </button>\n <button\n type=\"button\"\n class=\"upload-btn\"\n (click)=\"upload()\"\n [disabled]=\"!((flow.transfers$ | async)?.transfers?.length > 0) || (uploading$ | async) || (indexing$ | async)\">\n {{ 'chatDocumentsUpload.upload' | transloco }}\n </button>\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}@keyframes dash-move{0%{background-position:0 0}to{background-position:100% 0}}.file-upload-container{width:100%;position:relative;padding:20px;background-color:var(--ast-primary-bg, #f2f8fe)}.file-upload-container .dropzone{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100px;border:2px dashed var(--ast-primary-color, #005DA7);border-color:var(--ast-secondary-color, #FF732E) var(--ast-primary-color, #005DA7) var(--ast-primary-color, #005DA7) var(--ast-secondary-color, #FF732E);border-radius:5px;padding:10px;cursor:pointer;background-color:var(--ast-primary-bg, #f2f8fe);transition:background-color .3s ease;color:var(--ast-primary-color, #005DA7)}.file-upload-container .dropzone--active{background-color:var(--ast-secondary-bg, #FFF8F1);color:var(--ast-secondary-color, #FF732E);border-color:var(--ast-secondary-color, #FF732E)}.file-upload-container .dropzone i{font-size:x-large}.file-upload-container .dropzone span{margin:0;font-size:small}.file-upload-container .dropzone span.text-orange{color:var(--ast-secondary-color, #FF732E)}.file-upload-container .file-list h6{color:#a9a9a9}.file-upload-container .file-list ul{list-style-type:none;padding:0}.file-upload-container .file-list ul li{display:flex;align-items:center;padding:10px;background-color:var(--ast-primary-bg, #f2f8fe);margin-bottom:5px;border-radius:5px;font-size:small}.file-upload-container .file-list ul li span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.file-upload-container .file-list ul li i{cursor:pointer}.file-upload-container .file-list ul li i:hover{color:var(--ast-primary-color, #005DA7)}.file-upload-container .error-list{display:flex;flex-direction:column;list-style:disc;background:var(--ast-error-color, rgba(249, 58, 55, .7));color:#fff;border-radius:5px}.file-upload-container .error-list li{padding:3px}.file-upload-container .upload-btn{background:linear-gradient(to right,#1d4ed8,#ec4899,#f97316);color:#fff;border:none;padding:8px 16px;border-radius:5px;cursor:pointer;width:100%}.file-upload-container .upload-btn:hover{background:linear-gradient(to right,#1d4ed8cc,#ec4899cc,#f97316cc)}.file-upload-container .upload-btn[disabled]{opacity:.3;cursor:not-allowed}.file-upload-container .cancel-btn{cursor:pointer;pointer-events:unset;width:100%}.file-upload-container .cancel-btn[disabled]{opacity:.3;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: NgxFlowModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[flowButton]", inputs: ["flowDirectoryOnly", "flowAttributes", "flow"] }, { kind: "directive", type: i2.DropDirective, selector: "[flowDrop]", inputs: ["flow"], exportAs: ["flowDrop"] }, { kind: "directive", type: i2.FlowDirective, selector: "[flowConfig]", inputs: ["flowConfig"], exportAs: ["flow"] }, { kind: "component", type: FormatIconComponent, selector: "sq-format-icon", inputs: ["extension"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] }); }
244
- }
245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DocumentUploadComponent, decorators: [{
246
- type: Component,
247
- args: [{ selector: "sq-document-upload", standalone: true, providers: [provideTranslocoScope('chat-documents-upload')], imports: [CommonModule, NgxFlowModule, FormatIconComponent, TranslocoPipe], template: "<ng-container #flow=\"flow\" [flowConfig]=\"flowConfig\"></ng-container>\n<div class=\"file-upload-container\">\n <input\n type=\"file\"\n flowButton\n [flow]=\"flow.flowJs\"\n multiple\n hidden\n #fileInput>\n <div\n flowDrop\n [flow]=\"flow.flowJs\"\n (dragenter)=\"onDragenter()\"\n (dragleave)=\"onDragleave($event)\"\n (drop)=\"onDrop()\"\n (click)=\"fileInput.click()\"\n class=\"dropzone\"\n [ngClass]=\"{'dropzone--active': (dragging$ | async)}\"\n [hidden]=\"(uploading$ | async) || (indexing$ | async)\">\n <ng-container *ngIf=\"!(dragging$ | async); else draggingContent\">\n <i class=\"fas fa-cloud-upload-alt\"></i>\n <span>{{ 'chatDocumentsUpload.dragAndDrop' | transloco }}</span>\n <span class=\"text-orange\">{{ 'chatDocumentsUpload.clickToBrowse' | transloco }}</span>\n </ng-container>\n <ng-template #draggingContent>\n <span>{{ 'chatDocumentsUpload.dropFiles' | transloco }}</span>\n </ng-template>\n </div>\n\n <div *ngIf=\"(uploading$ | async) || (indexing$ | async)\" class=\"dropzone dropzone--active\">\n <ng-container *ngIf=\"(uploading$ | async); else indexingState\">\n <i class=\"fas fa-spinner fa-pulse\"></i>\n <span>\n {{ 'chatDocumentsUpload.uploadingFiles' | transloco: { count: (flow.transfers$ | async)!.transfers.length } }}\n </span>\n <span *ngIf=\"(uploadingInfos$ | async) as uploadingInfos\">{{ uploadingInfos.progress | number:'1.0-0' }}%</span>\n </ng-container>\n <ng-template #indexingState>\n <i class=\"fas fa-spinner fa-pulse\"></i>\n <ng-container *ngIf=\"indexingInfos$ | async as indexingInfo\">\n <span>\n {{ 'chatDocumentsUpload.indexingFiles' | transloco: { count: indexingInfo.docs.length } }}\n </span>\n <span>{{ getIndexingProgress(indexingInfo) * 100 | number:'1.0-0' }}%</span>\n </ng-container>\n </ng-template>\n </div>\n\n <ul *ngIf=\"errorAlerts.length > 0\" class=\"error-list mt-3\">\n <li *ngFor=\"let error of errorAlerts\">\n {{ error }}\n </li>\n </ul>\n\n <div *ngIf=\"((flow.transfers$ | async)?.transfers?.length > 0) && !(uploading$ | async)\" class=\"file-list mt-3\">\n <ul>\n <li *ngFor=\"let transfer of (flow.transfers$ | async)!.transfers; trackBy: trackTransfer\">\n <sq-format-icon [extension]=\"transfer.flowFile.getExtension()\" class=\"me-1\"></sq-format-icon>\n <span class=\"me-1\" [title]=\"transfer.name\">{{ transfer.name }}</span>\n <button\n type=\"button\"\n (click)=\"flow.cancelFile(transfer)\"\n [title]=\"'chatDocumentsUpload.cancel' | transloco\"\n class=\"bg-transparent border-0 p-0 m-0 cursor-pointer text-inherit leading-none inline-flex items-center justify-center\"\n >\n <i class=\"fas fa-trash\"></i>\n </button>\n </li>\n </ul>\n </div>\n\n <div class=\"d-flex mt-2\">\n <button\n type=\"button\"\n class=\"btn btn-light cancel-btn me-2\"\n (click)=\"flow.cancel()\"\n [disabled]=\"!((flow.transfers$ | async)?.transfers?.length > 0) || (uploading$ | async) || (indexing$ | async)\">\n {{ 'chatDocumentsUpload.cancel' | transloco }}\n </button>\n <button\n type=\"button\"\n class=\"upload-btn\"\n (click)=\"upload()\"\n [disabled]=\"!((flow.transfers$ | async)?.transfers?.length > 0) || (uploading$ | async) || (indexing$ | async)\">\n {{ 'chatDocumentsUpload.upload' | transloco }}\n </button>\n </div>\n</div>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-error{background-color:var(--ast-error-bg, rgba(249, 58, 55, .2));color:var(--ast-action-buttons-color, inherit)}.ast-error:hover{color:var(--ast-error-color, rgba(249, 58, 55, .7))}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-uploaded-doc-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black;--ast-action-buttons-color: white;--ast-action-buttons-hover-color: #6dbee6;--ast-report-bg: #070707}@keyframes dash-move{0%{background-position:0 0}to{background-position:100% 0}}.file-upload-container{width:100%;position:relative;padding:20px;background-color:var(--ast-primary-bg, #f2f8fe)}.file-upload-container .dropzone{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100px;border:2px dashed var(--ast-primary-color, #005DA7);border-color:var(--ast-secondary-color, #FF732E) var(--ast-primary-color, #005DA7) var(--ast-primary-color, #005DA7) var(--ast-secondary-color, #FF732E);border-radius:5px;padding:10px;cursor:pointer;background-color:var(--ast-primary-bg, #f2f8fe);transition:background-color .3s ease;color:var(--ast-primary-color, #005DA7)}.file-upload-container .dropzone--active{background-color:var(--ast-secondary-bg, #FFF8F1);color:var(--ast-secondary-color, #FF732E);border-color:var(--ast-secondary-color, #FF732E)}.file-upload-container .dropzone i{font-size:x-large}.file-upload-container .dropzone span{margin:0;font-size:small}.file-upload-container .dropzone span.text-orange{color:var(--ast-secondary-color, #FF732E)}.file-upload-container .file-list h6{color:#a9a9a9}.file-upload-container .file-list ul{list-style-type:none;padding:0}.file-upload-container .file-list ul li{display:flex;align-items:center;padding:10px;background-color:var(--ast-primary-bg, #f2f8fe);margin-bottom:5px;border-radius:5px;font-size:small}.file-upload-container .file-list ul li span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.file-upload-container .file-list ul li i{cursor:pointer}.file-upload-container .file-list ul li i:hover{color:var(--ast-primary-color, #005DA7)}.file-upload-container .error-list{display:flex;flex-direction:column;list-style:disc;background:var(--ast-error-color, rgba(249, 58, 55, .7));color:#fff;border-radius:5px}.file-upload-container .error-list li{padding:3px}.file-upload-container .upload-btn{background:linear-gradient(to right,#1d4ed8,#ec4899,#f97316);color:#fff;border:none;padding:8px 16px;border-radius:5px;cursor:pointer;width:100%}.file-upload-container .upload-btn:hover{background:linear-gradient(to right,#1d4ed8cc,#ec4899cc,#f97316cc)}.file-upload-container .upload-btn[disabled]{opacity:.3;cursor:not-allowed}.file-upload-container .cancel-btn{cursor:pointer;pointer-events:unset;width:100%}.file-upload-container .cancel-btn[disabled]{opacity:.3;cursor:not-allowed}\n"] }]
248
- }], propDecorators: { pollingInterval: [{
249
- type: Input
250
- }], flow: [{
251
- type: ViewChild,
252
- args: ["flow", { static: true }]
253
- }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2RvY3VtZW50cy11cGxvYWQvZG9jdW1lbnQtdXBsb2FkL2RvY3VtZW50LXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50LXVwbG9hZC9kb2N1bWVudC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBMkIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixLQUFLLEVBQ0wsUUFBUSxFQUNSLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsU0FBUyxFQUNULEVBQUUsRUFDRixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0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LENBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxtQkFBbUIsQ0FBQyxLQUFnQztRQUNsRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3RHLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2hDLE9BQU8sU0FBUyxHQUFDLEtBQUssQ0FBQztJQUN6QixDQUFDOytHQW5SVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixpSEFIdkIsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLHNJQ3hDN0QsMi9HQXdGQSxzdUhEL0NZLFlBQVksMGNBQUUsYUFBYSx5WUFBRSxtQkFBbUIsNkVBQUUsYUFBYTs7NEZBRTlELHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEIsSUFBSSxhQUNMLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxXQUNsRCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxDQUFDOzhCQUlqRSxlQUFlO3NCQUF2QixLQUFLO2dCQUUrQixJQUFJO3NCQUF4QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOZ3hGbG93TW9kdWxlLCBGbG93RGlyZWN0aXZlLCBUcmFuc2ZlciB9IGZyb20gXCJAZmxvd2pzL25neC1mbG93XCI7XG5pbXBvcnQgeyBGbG93RmlsZSB9IGZyb20gXCJmbG93anNcIjtcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgRU1QVFksXG4gIGZpbmFsaXplLFxuICBpbnRlcnZhbCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VXaGlsZSxcbiAgdGFwLFxuICBzdGFydFdpdGgsXG4gIG9mLFxuICB0YWtlLFxufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgcHJvdmlkZVRyYW5zbG9jb1Njb3BlLCBUcmFuc2xvY29QaXBlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcblxuaW1wb3J0IHsgaXNBdXRoZW50aWNhdGVkIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQgeyBEb2N1bWVudHNVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4uL2RvY3VtZW50cy11cGxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHsgRm9ybWF0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm1hdC1pY29uL2Zvcm1hdC1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmRleGluZ0luZm9zLCBVcGxvYWRFdmVudCwgVXBsb2FkaW5nSW5mb3MgfSBmcm9tIFwiLi4vZG9jdW1lbnRzLXVwbG9hZC5tb2RlbFwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInNxLWRvY3VtZW50LXVwbG9hZFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2RvY3VtZW50LXVwbG9hZC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZG9jdW1lbnQtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtwcm92aWRlVHJhbnNsb2NvU2NvcGUoJ2NoYXQtZG9jdW1lbnRzLXVwbG9hZCcpXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmd4Rmxvd01vZHVsZSwgRm9ybWF0SWNvbkNvbXBvbmVudCwgVHJhbnNsb2NvUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBQb2xsaW5nIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byB1cGRhdGUgdGhlIGluZGV4aW5nIHN0YXR1cyBvZiB0aGUgdXBsb2FkZWQgZG9jdW1lbnRzICovXG4gIEBJbnB1dCgpIHBvbGxpbmdJbnRlcnZhbCA6IG51bWJlciA9IDEwMDA7XG4gIC8vIFJlZmVyZW5jZSB0byB0aGUgZmxvdyBkaXJlY3RpdmVcbiAgQFZpZXdDaGlsZChcImZsb3dcIiwgeyBzdGF0aWM6IHRydWUgfSkgZmxvdyE6IEZsb3dEaXJlY3RpdmU7XG5cbiAgcmVhZG9ubHkgZmxvd0NvbmZpZzogZmxvd2pzLkZsb3dPcHRpb25zID0ge1xuICAgIC8vIERpc2FibGVzIGNodW5rIHRlc3RpbmcgYmVmb3JlIHVwbG9hZGluZyBhY3R1YWwgZmlsZSBkYXRhLiBUaHVzLCBhdm9pZHMgdW5uZWNlc3NhcnkgcmVxdWVzdHMgYW5kIHNwZWVkcyB1cCB1cGxvYWRzXG4gICAgdGVzdENodW5rczogZmFsc2UsXG4gICAgLy8gQWxsb3dzIG11bHRpcGxlIGZpbGUgdXBsb2FkcyBzaW11bHRhbmVvdXNseVxuICAgIHNpbmdsZUZpbGU6IGZhbHNlLFxuICAgIC8vIEFsbG93cyB0aGUgc2FtZSBmaWxlIHRvIGJlIHVwbG9hZGVkIG11bHRpcGxlIHRpbWVzXG4gICAgYWxsb3dEdXBsaWNhdGVVcGxvYWRzOiB0cnVlLFxuICAgIHF1ZXJ5OiAoKSA9PiB7XG4gICAgICByZXR1cm4ge307IC8vIEVtcHR5IG9iamVjdCB0byBwcmV2ZW50IHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICB9LFxuICAgIHByZXByb2Nlc3M6IChjaHVuaykgPT4gY2h1bmsuYWJvcnQoKSAvLyBQcmV2ZW50cyB0aGUgZGVmYXVsdCBmbG93IHVwbG9hZCBvZiBjaHVua3NcbiAgfTtcbiAgcHVibGljIGVycm9yQWxlcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZHJhZ2dpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBpbmRleGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGluZGV4aW5nSW5mb3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbmRleGluZ0luZm9zIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwdWJsaWMgdXBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgdXBsb2FkaW5nSW5mb3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVcGxvYWRpbmdJbmZvcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIGRvY3VtZW50c1VwbG9hZFNlcnZpY2UgPSBpbmplY3QoRG9jdW1lbnRzVXBsb2FkU2VydmljZSk7XG4gIHB1YmxpYyBub3RpZmljYXRpb25zU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHB1YmxpYyBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgb2YoaXNBdXRoZW50aWNhdGVkKCkpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChfKSA9PiB0aGlzLmFwcFNlcnZpY2UuaW5pdCgpKSxcbiAgICAgICAgICB0YXAoKF8pID0+IHRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS5pbml0KCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmZsb3cuZXZlbnRzJC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGV2dCA9IGV2ZW50IGFzIGFueTtcbiAgICAgICAgLy8gS2VwdCBpdCBqdXN0IGZvciByZWZlcmVuY2UgdG8gc2hvdyBob3cgdG8gYWNjZXNzIGRhdGEgb2YgZGlmZmVyZW50IGV2ZW50c1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJmaWxlc0FkZGVkXCIpIHtcbiAgICAgICAgICBjb25zdCBhZGRlZEZpbGVzID0gZXZ0LmV2ZW50WzBdIGFzIEZsb3dGaWxlW107XG4gICAgICAgICAgdGhpcy5fb25GaWxlc0FkZGVkKGFkZGVkRmlsZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBcImZpbGVzU3VibWl0dGVkXCIpIHtcbiAgICAgICAgICB0aGlzLl9vbkZpbGVzU3VibWl0dGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIE92ZXJyaWRlIHRoZSB1cGxvYWQgbWV0aG9kIG9mIHRoZSBmbG93IGRpcmVjdGl2ZVxuICAgIHRoaXMuZmxvdy51cGxvYWQgPSB0aGlzLnN0YXJ0VXBsb2FkLmJpbmQodGhpcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBzdWJtaXNzaW9uIG9mIGZpbGVzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIG1ldGhvZCBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIGNoZWNrcyBvbiB0aGUgc3VibWl0dGVkIGZpbGVzOlxuICAgKlxuICAgKiAxLiBDaGVja3MgaWYgdGhlIG51bWJlciBvZiBmaWxlcyBzdWJtaXR0ZWQgZXhjZWVkcyB0aGUgcmVtYWluaW5nRmlsZUNvdW50IGRlZmluZWQgaW4gdGhlIGNvbnN0cmFpbnRzLlxuICAgKiAgICAtIElmIHRoZSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkcyB0aGUgYWxsb3dlZCBjb3VudCwgYWxsIGZpbGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGZsb3cuXG4gICAqICAgIC0gQW4gZXJyb3IgbWVzc2FnZSBpcyBhZGRlZCB0byB0aGUgZXJyb3IgYWxlcnRzLlxuICAgKlxuICAgKiAyLiBDaGVja3MgaWYgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIHN1Ym1pdHRlZCBleGNlZWRzIHRoZSByZW1haW5pbmdGaWxlU2l6ZSBkZWZpbmVkIGluIHRoZSBjb25zdHJhaW50cy5cbiAgICogICAgLSBJZiB0aGUgdG90YWwgc2l6ZSBleGNlZWRzIHRoZSBhbGxvd2VkIHNpemUsIGFsbCBmaWxlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBmbG93LlxuICAgKiAgICAtIEFuIGVycm9yIG1lc3NhZ2UgaXMgYWRkZWQgdG8gdGhlIGVycm9yIGFsZXJ0cy5cbiAgICpcbiAgICogMy4gQ2hlY2tzIGlmIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiB0aGUgZmlsZXMgc3VibWl0dGVkIGlzIG5vdCBhbGxvd2VkLlxuICAgKiAgICAtIElmIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyBub3QgYWxsb3dlZCwgdGhlIGZpbGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBmbG93LlxuICAgKiAgICAtIEFuIGVycm9yIG1lc3NhZ2UgaXMgYWRkZWQgdG8gdGhlIGVycm9yIGFsZXJ0cy5cbiAgICovXG4gIHByaXZhdGUgX29uRmlsZXNTdWJtaXR0ZWQoKSB7XG4gICAgLy8gR2V0IGFsbCBmaWxlcyBmcm9tIHRoZSBmbG93XG4gICAgY29uc3QgZmlsZXMgPSBbLi4udGhpcy5mbG93LmZsb3dKcy5maWxlc107XG4gICAgLy8gQ2xlYXIgdGhlIGVycm9yIGFsZXJ0c1xuICAgIHRoaXMuZXJyb3JBbGVydHMgPSBbXTtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIG51bWJlciBvZiBmaWxlcyBzdWJtaXR0ZWQgZXhjZWVkcyB0aGUgcmVtYWluaW5nRmlsZUNvdW50IGRlZmluZWQgaW4gdGhlIGNvbnN0cmFpbnRzLlxuICAgICAqIElmIHRoZSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkcyB0aGUgYWxsb3dlZCBjb3VudCwgYWxsIGZpbGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGZsb3dcbiAgICAgKiBBbiBlcnJvciBtZXNzYWdlIGlzIGFkZGVkIHRvIHRoZSBlcnJvciBhbGVydHMuXG4gICAgICovXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IHRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS51cGxvYWRDb25maWckLnZhbHVlIS5jb25zdHJhaW50cy5yZW1haW5pbmdGaWxlQ291bnQpIHtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICB0aGlzLmZsb3cuZmxvd0pzLnJlbW92ZUZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgICBlcnJvcnMucHVzaCh0aGlzLnRyYW5zbG9jby50cmFuc2xhdGUoJ2NoYXREb2N1bWVudHNVcGxvYWQuZmlsZXNOdW1iZXJMaW1pdEV4Y2VlZGVkJywgeyBtYXg6IHRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS51cGxvYWRDb25maWckLnZhbHVlIS5jb25zdHJhaW50cy5yZW1haW5pbmdGaWxlQ291bnQgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZmlsZXMgc3VibWl0dGVkIGV4Y2VlZHMgdGhlIHJlbWFpbmluZ0ZpbGVTaXplIGRlZmluZWQgaW4gdGhlIGNvbnN0cmFpbnRzLlxuICAgICAqIElmIHRoZSB0b3RhbCBzaXplIGV4Y2VlZHMgdGhlIGFsbG93ZWQgc2l6ZSwgYWxsIGZpbGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGZsb3dcbiAgICAgKiBBbiBlcnJvciBtZXNzYWdlIGlzIGFkZGVkIHRvIHRoZSBlcnJvciBhbGVydHMuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkIGlzIHRlbXBvcmFyeSBzZXQgdG8gdGhlIG1heGltdW0gb2YgMTI4IE1CIGFuZCB0aGUgcmVtYWluaW5nRmlsZVNpemVNQiBkZWZpbmVkIGluIHRoZSBjb25zdHJhaW50cy5cbiAgICAgKiBXYWl0aW5nIGZvciB0aGUgcGx1Z2luIHRvIGhhbmRsZSB0aGlzIGtlc3RyZWwgaXNzdWVcbiAgICAgKi9cbiAgICBlbHNlIGlmICh0aGlzLmRvY3VtZW50c1VwbG9hZFNlcnZpY2UuY29udmVydEJ5dGVzVG9NQih0aGlzLmZsb3cuZmxvd0pzLmdldFNpemUoKSkgPiBNYXRoLm1pbigxMjgsIHRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS51cGxvYWRDb25maWckLnZhbHVlIS5jb25zdHJhaW50cy5yZW1haW5pbmdGaWxlU2l6ZU1CKSkge1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIHRoaXMuZmxvdy5mbG93SnMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICAgIH1cbiAgICAgIGVycm9ycy5wdXNoKHRoaXMudHJhbnNsb2NvLnRyYW5zbGF0ZSgnY2hhdERvY3VtZW50c1VwbG9hZC5maWxlc1NpemVMaW1pdEV4Y2VlZGVkJywgeyBtYXg6IE1hdGgubWluKDEyOCwgdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLnVwbG9hZENvbmZpZyQudmFsdWUhLmNvbnN0cmFpbnRzLnJlbWFpbmluZ0ZpbGVTaXplTUIpIH0pKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZmlsZSBleHRlbnNpb24gb2YgdGhlIGZpbGVzIHN1Ym1pdHRlZCBpcyBub3QgYWxsb3dlZC5cbiAgICAgKiBJZiB0aGUgZmlsZSBleHRlbnNpb24gaXMgbm90IGFsbG93ZWQsIHRoZSBmaWxlIGlzIHJlbW92ZWQgZnJvbSB0aGUgZmxvd1xuICAgICAqIEFuIGVycm9yIG1lc3NhZ2UgaXMgYWRkZWQgdG8gdGhlIGVycm9yIGFsZXJ0cy5cbiAgICAgKi9cbiAgICBlbHNlIHtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRzVXBsb2FkU2VydmljZS51cGxvYWRDb25maWckLnZhbHVlIS5jb25zdHJhaW50cy5zdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucy5pbmNsdWRlcyhgJHtmaWxlLmdldEV4dGVuc2lvbigpfWApKSB7XG4gICAgICAgICAgdGhpcy5mbG93LmZsb3dKcy5yZW1vdmVGaWxlKGZpbGUpO1xuICAgICAgICAgIGVycm9ycy5wdXNoKHRoaXMudHJhbnNsb2NvLnRyYW5zbGF0ZSgnY2hhdERvY3VtZW50c1VwbG9hZC5maWxlRXh0ZW5zaW9uVW5zdXBwb3J0ZWQnLCB7IGV4dGVuc2lvbjogZmlsZS5nZXRFeHRlbnNpb24oKSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgdW5pcXVlIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBlcnJvciBhbGVydHNcbiAgICB0aGlzLmVycm9yQWxlcnRzID0gWy4uLm5ldyBTZXQoZXJyb3JzKV07XG4gIH1cblxuICBwcml2YXRlIF9vbkZpbGVzQWRkZWQoZmlsZXM6IEZsb3dGaWxlW10pIHt9XG5cbiAgb25EcmFnZW50ZXIoKSB7XG4gICAgdGhpcy5kcmFnZ2luZyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG9uRHJhZ2xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICAhZXZlbnQucmVsYXRlZFRhcmdldCB8fFxuICAgICAgIShldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFwiLmRyb3B6b25lXCIpXG4gICAgKSB7XG4gICAgICB0aGlzLmRyYWdnaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvbkRyb3AoKSB7XG4gICAgdGhpcy5kcmFnZ2luZyQubmV4dChmYWxzZSk7XG4gIH1cblxuICB0cmFja1RyYW5zZmVyKHRyYW5zZmVyOiBUcmFuc2Zlcikge1xuICAgIHJldHVybiB0cmFuc2Zlci5pZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyB0aGUgdXBsb2FkIHByb2Nlc3MgYnkgaW52b2tpbmcgdGhlIGB1cGxvYWRgIG1ldGhvZFxuICAgKiBvZiB0aGUgYGZsb3dgIGluc3RhbmNlLlxuICAgKiBUaGUgYHVwbG9hZGAgbWV0aG9kIGlzIG92ZXJyaWRkZW4gaW4gdGhlIGBuZ09uSW5pdGAgbWV0aG9kIHRvIG1hdGNoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIGFzc2lzdGFudCBBUEkuXG4gICAqL1xuICB1cGxvYWQoKSB7XG4gICAgdGhpcy5mbG93LnVwbG9hZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyB0aGUgZmlsZSB1cGxvYWQgcHJvY2VzcyBieSBwcmVwYXJpbmcgdGhlIGZvcm0gZGF0YSxcbiAgICogc2V0dGluZyB0aGUgdXBsb2FkaW5nIGZsYWcsIGFuZCBtYWtpbmcgYW4gQVBJIGNhbGwgdG8gdXBsb2FkIHRoZSBmaWxlcy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogLSBDb2xsZWN0cyBhbGwgZmlsZXMgZnJvbSB0aGUgYGZsb3dKc2AgaW5zdGFuY2UgYW5kIGFwcGVuZHMgdGhlbSB0byBhIGBGb3JtRGF0YWAgb2JqZWN0LlxuICAgKiAtIFN1YnNjcmliZXMgdG8gdGhlIHVwbG9hZCBwcm9jZXNzIHRvIGhhbmRsZSBwcm9ncmVzcyB1cGRhdGVzLCBjb21wbGV0aW9uLCBhbmQgZXJyb3JzLlxuICAgKiAtIFRyaWdnZXJzIHRyYWNraW5nIHRoZSBpbmRleGluZyBwcm9jZXNzIHVwb24gc3VjY2Vzc2Z1bCB1cGxvYWQgY29tcGxldGlvbi5cbiAgICogLSBDbGVhbnMgdXAgdGhlIGBmbG93YCBpbnN0YW5jZSBhZnRlciB0aGUgdXBsb2FkIHByb2Nlc3MgaXMgZmluYWxpemVkLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGFydFVwbG9hZCgpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgLy8gQWRkIGFsbCBmaWxlcyB3aXRoIHRoZWlyIG9yaWdpbmFsIG5hbWVzXG4gICAgdGhpcy5mbG93LmZsb3dKcy5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoZmlsZS5uYW1lLCBmaWxlLmZpbGUpO1xuICAgIH0pO1xuXG4gICAgLy8gQ2xlYXIgdGhlIGVycm9yIGFsZXJ0c1xuICAgIHRoaXMuZXJyb3JBbGVydHMgPSBbXTtcbiAgICAvLyBTZXQgdGhlIHVwbG9hZGluZyBmbGFnIHRvIHRydWVcbiAgICB0aGlzLnVwbG9hZGluZyQubmV4dCh0cnVlKTtcblxuICAgIC8vIE1ha2UgdGhlIEFQSSBjYWxsIHRvIHVwbG9hZCB0aGUgZmlsZXNcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLnVwbG9hZERvY3VtZW50cyhmb3JtRGF0YSkucGlwZShcbiAgICAgICAgdGFwKChldmVudDogVXBsb2FkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3VwbG9hZFByb2dyZXNzJykge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdJbmZvcyQubmV4dChldmVudCBhcyBVcGxvYWRpbmdJbmZvcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAncmVzcG9uc2UnKSB7XG4gICAgICAgICAgICB0aGlzLnRyYWNrSW5kZXhpbmdQcm9jZXNzKGV2ZW50LmJvZHkuc3RhdHVzVG9rZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KGZhbHNlKTsgLy8gU2V0IHRoZSB1cGxvYWRpbmcgZmxhZyB0byBmYWxzZSBPTkxZIGluIGNhc2Ugb2YgYW4gZXJyb3IuIE90aGVyd2lzZSwga2VlcCBpdCB0cnVlIHVudGlsIHRoZSBzdGFydCBvZiBpbmRleGluZyBwcm9jZXNzIGluIG9yZGVyIHRvIHByZXZlbnQgZmxpY2tlcmluZyBvZiB0aGUgVUlcbiAgICAgICAgICB0aGlzLnVwbG9hZGluZ0luZm9zJC5uZXh0KHVuZGVmaW5lZCk7IC8vIENsZWFyIHRoZSB1cGxvYWRpbmcgaW5mb3NcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbG9jby50cmFuc2xhdGUoJ2NoYXREb2N1bWVudHNVcGxvYWQuZXJyb3JVcGxvYWRpbmdGaWxlcycpKTtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgLy8gQ2xlYXIgdGhlIGZsb3cgaW5zdGFuY2UgYWZ0ZXIgdGhlIHVwbG9hZCBpcyBjb21wbGV0ZSBvciBhbiBlcnJvciBvY2N1cnNcbiAgICAgICAgICB0aGlzLmZsb3cuY2FuY2VsKCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja3MgdGhlIGluZGV4aW5nIHByb2Nlc3MgZm9yIGEgc2luZ2xlIGRvY3VtZW50cyB1cGxvYWQgc2Vzc2lvbiBieSBwb2xsaW5nIHRoZSBBUEkgZm9yIGl0cyBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIEEgdW5pcXVlIHRva2VuIHJlcHJlc2VudGluZyB0aGUgc2luZ2xlIGRvY3VtZW50cyB1cGxvYWQgc2Vzc2lvbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogLSBDbGVhcnMgdGhlIHVwbG9hZGluZyBmbGFncyBhbmQgc2V0cyB0aGUgaW5kZXhpbmcgZmxhZyB0byB0cnVlIGJlZm9yZSBzdGFydGluZyB0aGUgcHJvY2Vzcy5cbiAgICogLSBQb2xscyB0aGUgQVBJIGV2ZXJ5IChwb2xsaW5nSW50ZXJ2YWw6IGRlZmF1bHQgPSAxIHNlY29uZCkgdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgaW5kZXhpbmcgc3RhdHVzLlxuICAgKiAtIFVwZGF0ZXMgdGhlIGBpbmRleGluZ0luZm9zYCBwcm9wZXJ0eSB3aXRoIHRoZSBsYXRlc3Qgc3RhdHVzLlxuICAgKiAtIFN0b3BzIHBvbGxpbmcgd2hlbiB0aGUgaW5kZXhpbmcgcHJvY2VzcyBpcyBjb21wbGV0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLlxuICAgKiAtIENsZWFucyB1cCBieSByZXNldHRpbmcgdGhlIGluZGV4aW5nIGZsYWdzIGFuZCBjbGVhcmluZyB0aGUgYGluZGV4aW5nSW5mb3NgIHByb3BlcnR5IHdoZW4gdGhlIHByb2Nlc3MgaXMgZmluYWxpemVkLlxuICAgKi9cbiAgdHJhY2tJbmRleGluZ1Byb2Nlc3ModG9rZW46IHN0cmluZykge1xuICAgIC8vIENsZWFyIHRoZSB1cGxvYWRpbmcgZmxhZ3NcbiAgICB0aGlzLnVwbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgdGhpcy51cGxvYWRpbmdJbmZvcyQubmV4dCh1bmRlZmluZWQpO1xuICAgIC8vIFNldCB0aGUgaW5kZXhpbmcgZmxhZyB0byB0cnVlXG4gICAgdGhpcy5pbmRleGluZyQubmV4dCh0cnVlKTtcblxuICAgIC8vIENvbWJpbmUgaW1tZWRpYXRlIEFQSSBjYWxsIHdpdGggaW50ZXJ2YWwtYmFzZWQgcG9sbGluZ1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBpbnRlcnZhbCh0aGlzLnBvbGxpbmdJbnRlcnZhbCkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKDApLCAvLyBUcmlnZ2VyIHRoZSBBUEkgY2FsbCBpbW1lZGlhdGVseVxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLmdldEluZGV4aW5nU3RhdHVzKHRva2VuKSksXG4gICAgICAgIHRhcCgocmVzOiBJbmRleGluZ0luZm9zKSA9PiB0aGlzLmluZGV4aW5nSW5mb3MkLm5leHQocmVzKSksXG4gICAgICAgIHRha2VXaGlsZSgocmVzcG9uc2U6IEluZGV4aW5nSW5mb3MpID0+ICFyZXNwb25zZS5pc0NvbXBsZXRlZCwgdHJ1ZSksIC8vIFVzZSB0YWtlV2hpbGVJbmNsdXNpdmUoKSBwYXR0ZXJuIHRvIGVuc3VyZSB0aGF0IHRoZSBsYXN0IHZhbHVlIHdoZXJlIGlzQ29tcGxldGVkID09PSB0cnVlIGlzIGFsc28gaW5jbHVkZWQuXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsb2NvLnRyYW5zbGF0ZSgnY2hhdERvY3VtZW50c1VwbG9hZC5lcnJvckluZGV4aW5nU3RhdHVzJykpO1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAvLyBSZWZyZXNoIHRoZSBsaXN0IG9mIHVwbG9hZGVkIGRvY3VtZW50cyBhdCB0aGUgZW5kIG9mIGluZGV4aW5nXG4gICAgICAgICAgdGhpcy5kb2N1bWVudHNVcGxvYWRTZXJ2aWNlLmdldERvY3VtZW50c0xpc3QoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgpO1xuICAgICAgICAgIC8vIENsZWFyIHRoZSBpbmRleGluZyBmbGFnc1xuICAgICAgICAgIHRoaXMuaW5kZXhpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuaW5kZXhpbmdJbmZvcyQubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgaW5kZXhpbmcgcHJvZ3Jlc3MgYXMgYSBwZXJjZW50YWdlIG9mIGNvbXBsZXRlZCBkb2N1bWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpbmZvcyAtIFRoZSBpbmRleGluZyBpbmZvcm1hdGlvbiBjb250YWluaW5nIHRoZSBsaXN0IG9mIGRvY3VtZW50cyBhbmQgdGhlaXIgc3RhdHVzZXMuXG4gICAqIEByZXR1cm5zIFRoZSBwcm9ncmVzcyBhcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEsIHdoZXJlIDAgaW5kaWNhdGVzIG5vIHByb2dyZXNzIGFuZCAxIGluZGljYXRlcyBhbGwgZG9jdW1lbnRzIGFyZSBwcm9jZXNzZWQgKHByb2Nlc3NlZCBtZWFucyBlaXRoZXIgaW5kZXhlZCBvciBlcnJvcmVkKS5cbiAgICogICAgICAgICAgUmV0dXJucyAwIGlmIHRoZSBpbnB1dCBpcyBpbnZhbGlkIG9yIHRoZXJlIGFyZSBubyBkb2N1bWVudHMuXG4gICAqL1xuICBnZXRJbmRleGluZ1Byb2dyZXNzKGluZm9zOiBJbmRleGluZ0luZm9zIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBpZiAoIWluZm9zIHx8ICFpbmZvcy5kb2NzKSByZXR1cm4gMDtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSBpbmZvcy5kb2NzLmZpbHRlcihkb2MgPT4gZG9jLnN0YXR1cyA9PT0gXCJJbmRleGVkXCIgfHwgZG9jLnN0YXR1cyA9PT0gXCJFcnJvclwiKS5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBpbmZvcy5kb2NzLmxlbmd0aDtcbiAgICByZXR1cm4gY29tcGxldGVkL3RvdGFsO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgI2Zsb3c9XCJmbG93XCIgW2Zsb3dDb25maWddPVwiZmxvd0NvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkLWNvbnRhaW5lclwiPlxuICA8aW5wdXRcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgZmxvd0J1dHRvblxuICAgIFtmbG93XT1cImZsb3cuZmxvd0pzXCJcbiAgICBtdWx0aXBsZVxuICAgIGhpZGRlblxuICAgICNmaWxlSW5wdXQ+XG4gIDxkaXZcbiAgICBmbG93RHJvcFxuICAgIFtmbG93XT1cImZsb3cuZmxvd0pzXCJcbiAgICAoZHJhZ2VudGVyKT1cIm9uRHJhZ2VudGVyKClcIlxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnbGVhdmUoJGV2ZW50KVwiXG4gICAgKGRyb3ApPVwib25Ecm9wKClcIlxuICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgY2xhc3M9XCJkcm9wem9uZVwiXG4gICAgW25nQ2xhc3NdPVwieydkcm9wem9uZS0tYWN0aXZlJzogKGRyYWdnaW5nJCB8IGFzeW5jKX1cIlxuICAgIFtoaWRkZW5dPVwiKHVwbG9hZGluZyQgfCBhc3luYykgfHwgKGluZGV4aW5nJCB8IGFzeW5jKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoZHJhZ2dpbmckIHwgYXN5bmMpOyBlbHNlIGRyYWdnaW5nQ29udGVudFwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jbG91ZC11cGxvYWQtYWx0XCI+PC9pPlxuICAgICAgICA8c3Bhbj57eyAnY2hhdERvY3VtZW50c1VwbG9hZC5kcmFnQW5kRHJvcCcgfCB0cmFuc2xvY28gfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1vcmFuZ2VcIj57eyAnY2hhdERvY3VtZW50c1VwbG9hZC5jbGlja1RvQnJvd3NlJyB8IHRyYW5zbG9jbyB9fTwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkcmFnZ2luZ0NvbnRlbnQ+XG4gICAgICAgIDxzcGFuPnt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLmRyb3BGaWxlcycgfCB0cmFuc2xvY28gfX08L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiKHVwbG9hZGluZyQgfCBhc3luYykgfHwgKGluZGV4aW5nJCB8IGFzeW5jKVwiIGNsYXNzPVwiZHJvcHpvbmUgZHJvcHpvbmUtLWFjdGl2ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodXBsb2FkaW5nJCB8IGFzeW5jKTsgZWxzZSBpbmRleGluZ1N0YXRlXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXB1bHNlXCI+PC9pPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLnVwbG9hZGluZ0ZpbGVzJyB8IHRyYW5zbG9jbzogeyBjb3VudDogKGZsb3cudHJhbnNmZXJzJCB8IGFzeW5jKSEudHJhbnNmZXJzLmxlbmd0aCB9IH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIih1cGxvYWRpbmdJbmZvcyQgfCBhc3luYykgYXMgdXBsb2FkaW5nSW5mb3NcIj57eyB1cGxvYWRpbmdJbmZvcy5wcm9ncmVzcyB8IG51bWJlcjonMS4wLTAnIH19JTwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2luZGV4aW5nU3RhdGU+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXB1bHNlXCI+PC9pPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4aW5nSW5mb3MkIHwgYXN5bmMgYXMgaW5kZXhpbmdJbmZvXCI+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLmluZGV4aW5nRmlsZXMnIHwgdHJhbnNsb2NvOiB7IGNvdW50OiBpbmRleGluZ0luZm8uZG9jcy5sZW5ndGggfSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IGdldEluZGV4aW5nUHJvZ3Jlc3MoaW5kZXhpbmdJbmZvKSAqIDEwMCB8IG51bWJlcjonMS4wLTAnIH19JTwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDx1bCAqbmdJZj1cImVycm9yQWxlcnRzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yLWxpc3QgbXQtM1wiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JBbGVydHNcIj5cbiAgICAgIHt7IGVycm9yIH19XG4gICAgPC9saT5cbiAgPC91bD5cblxuICA8ZGl2ICpuZ0lmPVwiKChmbG93LnRyYW5zZmVycyQgfCBhc3luYyk/LnRyYW5zZmVycz8ubGVuZ3RoID4gMCkgJiYgISh1cGxvYWRpbmckIHwgYXN5bmMpXCIgY2xhc3M9XCJmaWxlLWxpc3QgbXQtM1wiPlxuICAgIDx1bD5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdHJhbnNmZXIgb2YgKGZsb3cudHJhbnNmZXJzJCB8IGFzeW5jKSEudHJhbnNmZXJzOyB0cmFja0J5OiB0cmFja1RyYW5zZmVyXCI+XG4gICAgICAgIDxzcS1mb3JtYXQtaWNvbiBbZXh0ZW5zaW9uXT1cInRyYW5zZmVyLmZsb3dGaWxlLmdldEV4dGVuc2lvbigpXCIgY2xhc3M9XCJtZS0xXCI+PC9zcS1mb3JtYXQtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xXCIgW3RpdGxlXT1cInRyYW5zZmVyLm5hbWVcIj57eyB0cmFuc2Zlci5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImZsb3cuY2FuY2VsRmlsZSh0cmFuc2ZlcilcIlxuICAgICAgICAgIFt0aXRsZV09XCInY2hhdERvY3VtZW50c1VwbG9hZC5jYW5jZWwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBjbGFzcz1cImJnLXRyYW5zcGFyZW50IGJvcmRlci0wIHAtMCBtLTAgY3Vyc29yLXBvaW50ZXIgdGV4dC1pbmhlcml0IGxlYWRpbmctbm9uZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdHJhc2hcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMlwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGNhbmNlbC1idG4gbWUtMlwiXG4gICAgICAoY2xpY2spPVwiZmxvdy5jYW5jZWwoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiISgoZmxvdy50cmFuc2ZlcnMkIHwgYXN5bmMpPy50cmFuc2ZlcnM/Lmxlbmd0aCA+IDApIHx8ICh1cGxvYWRpbmckIHwgYXN5bmMpIHx8IChpbmRleGluZyQgfCBhc3luYylcIj5cbiAgICAgIHt7ICdjaGF0RG9jdW1lbnRzVXBsb2FkLmNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwidXBsb2FkLWJ0blwiXG4gICAgICAoY2xpY2spPVwidXBsb2FkKClcIlxuICAgICAgW2Rpc2FibGVkXT1cIiEoKGZsb3cudHJhbnNmZXJzJCB8IGFzeW5jKT8udHJhbnNmZXJzPy5sZW5ndGggPiAwKSB8fCAodXBsb2FkaW5nJCB8IGFzeW5jKSB8fCAoaW5kZXhpbmckIHwgYXN5bmMpXCI+XG4gICAgICB7eyAnY2hhdERvY3VtZW50c1VwbG9hZC51cGxvYWQnIHwgdHJhbnNsb2NvIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=