paraqeet 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2070) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/_sass/_bootstrap-icons.scss +100 -3
  4. data/_sass/bootstrap/_buttons.scss +1 -1
  5. data/_sass/bootstrap/_reboot.scss +1 -0
  6. data/_sass/bootstrap/_root.scss +3 -0
  7. data/_sass/bootstrap/_utilities.scss +3 -3
  8. data/_sass/bootstrap/_variables-dark.scss +2 -0
  9. data/_sass/bootstrap/_variables.scss +15 -13
  10. data/_sass/bootstrap/forms/_form-check.scss +1 -0
  11. data/_sass/bootstrap/mixins/_banner.scss +1 -1
  12. data/_sass/bootstrap/mixins/_grid.scss +1 -1
  13. data/assets/bootstrap-icons/0-circle-fill.svg +2 -2
  14. data/assets/bootstrap-icons/0-circle.svg +2 -2
  15. data/assets/bootstrap-icons/0-square-fill.svg +2 -2
  16. data/assets/bootstrap-icons/0-square.svg +2 -2
  17. data/assets/bootstrap-icons/1-circle-fill.svg +1 -1
  18. data/assets/bootstrap-icons/1-circle.svg +1 -1
  19. data/assets/bootstrap-icons/1-square-fill.svg +1 -1
  20. data/assets/bootstrap-icons/1-square.svg +2 -2
  21. data/assets/bootstrap-icons/123.svg +1 -1
  22. data/assets/bootstrap-icons/2-circle-fill.svg +1 -1
  23. data/assets/bootstrap-icons/2-circle.svg +1 -1
  24. data/assets/bootstrap-icons/2-square-fill.svg +1 -1
  25. data/assets/bootstrap-icons/2-square.svg +2 -2
  26. data/assets/bootstrap-icons/3-circle-fill.svg +1 -1
  27. data/assets/bootstrap-icons/3-circle.svg +2 -2
  28. data/assets/bootstrap-icons/3-square-fill.svg +1 -1
  29. data/assets/bootstrap-icons/3-square.svg +2 -2
  30. data/assets/bootstrap-icons/4-circle-fill.svg +1 -1
  31. data/assets/bootstrap-icons/4-circle.svg +2 -2
  32. data/assets/bootstrap-icons/4-square-fill.svg +2 -2
  33. data/assets/bootstrap-icons/4-square.svg +2 -2
  34. data/assets/bootstrap-icons/5-circle-fill.svg +1 -1
  35. data/assets/bootstrap-icons/5-circle.svg +1 -1
  36. data/assets/bootstrap-icons/5-square-fill.svg +1 -1
  37. data/assets/bootstrap-icons/5-square.svg +1 -1
  38. data/assets/bootstrap-icons/6-circle-fill.svg +1 -1
  39. data/assets/bootstrap-icons/6-circle.svg +1 -1
  40. data/assets/bootstrap-icons/6-square-fill.svg +2 -2
  41. data/assets/bootstrap-icons/6-square.svg +2 -2
  42. data/assets/bootstrap-icons/7-circle-fill.svg +1 -1
  43. data/assets/bootstrap-icons/7-circle.svg +1 -1
  44. data/assets/bootstrap-icons/7-square-fill.svg +1 -1
  45. data/assets/bootstrap-icons/7-square.svg +1 -1
  46. data/assets/bootstrap-icons/8-circle-fill.svg +1 -1
  47. data/assets/bootstrap-icons/8-circle.svg +1 -1
  48. data/assets/bootstrap-icons/8-square-fill.svg +2 -2
  49. data/assets/bootstrap-icons/8-square.svg +2 -2
  50. data/assets/bootstrap-icons/9-circle-fill.svg +1 -1
  51. data/assets/bootstrap-icons/9-circle.svg +1 -1
  52. data/assets/bootstrap-icons/9-square-fill.svg +1 -1
  53. data/assets/bootstrap-icons/9-square.svg +2 -2
  54. data/assets/bootstrap-icons/activity.svg +1 -1
  55. data/assets/bootstrap-icons/airplane-engines-fill.svg +1 -1
  56. data/assets/bootstrap-icons/airplane-engines.svg +1 -1
  57. data/assets/bootstrap-icons/airplane-fill.svg +1 -1
  58. data/assets/bootstrap-icons/airplane.svg +1 -1
  59. data/assets/bootstrap-icons/alarm-fill.svg +1 -1
  60. data/assets/bootstrap-icons/alarm.svg +2 -2
  61. data/assets/bootstrap-icons/alexa.svg +1 -1
  62. data/assets/bootstrap-icons/align-bottom.svg +1 -1
  63. data/assets/bootstrap-icons/align-center.svg +1 -1
  64. data/assets/bootstrap-icons/align-end.svg +2 -2
  65. data/assets/bootstrap-icons/align-middle.svg +1 -1
  66. data/assets/bootstrap-icons/align-start.svg +2 -2
  67. data/assets/bootstrap-icons/align-top.svg +1 -1
  68. data/assets/bootstrap-icons/alipay.svg +1 -1
  69. data/assets/bootstrap-icons/alphabet-uppercase.svg +3 -0
  70. data/assets/bootstrap-icons/alphabet.svg +3 -0
  71. data/assets/bootstrap-icons/alt.svg +1 -1
  72. data/assets/bootstrap-icons/amazon.svg +4 -0
  73. data/assets/bootstrap-icons/amd.svg +1 -1
  74. data/assets/bootstrap-icons/android.svg +1 -1
  75. data/assets/bootstrap-icons/android2.svg +1 -1
  76. data/assets/bootstrap-icons/app-indicator.svg +2 -2
  77. data/assets/bootstrap-icons/app.svg +1 -1
  78. data/assets/bootstrap-icons/apple.svg +2 -2
  79. data/assets/bootstrap-icons/archive-fill.svg +1 -1
  80. data/assets/bootstrap-icons/archive.svg +1 -1
  81. data/assets/bootstrap-icons/arrow-90deg-down.svg +1 -1
  82. data/assets/bootstrap-icons/arrow-90deg-left.svg +1 -1
  83. data/assets/bootstrap-icons/arrow-90deg-right.svg +1 -1
  84. data/assets/bootstrap-icons/arrow-90deg-up.svg +1 -1
  85. data/assets/bootstrap-icons/arrow-bar-down.svg +1 -1
  86. data/assets/bootstrap-icons/arrow-bar-left.svg +1 -1
  87. data/assets/bootstrap-icons/arrow-bar-right.svg +1 -1
  88. data/assets/bootstrap-icons/arrow-bar-up.svg +1 -1
  89. data/assets/bootstrap-icons/arrow-clockwise.svg +2 -2
  90. data/assets/bootstrap-icons/arrow-counterclockwise.svg +2 -2
  91. data/assets/bootstrap-icons/arrow-down-circle-fill.svg +1 -1
  92. data/assets/bootstrap-icons/arrow-down-circle.svg +1 -1
  93. data/assets/bootstrap-icons/arrow-down-left-circle-fill.svg +1 -1
  94. data/assets/bootstrap-icons/arrow-down-left-circle.svg +1 -1
  95. data/assets/bootstrap-icons/arrow-down-left-square-fill.svg +1 -1
  96. data/assets/bootstrap-icons/arrow-down-left-square.svg +1 -1
  97. data/assets/bootstrap-icons/arrow-down-left.svg +1 -1
  98. data/assets/bootstrap-icons/arrow-down-right-circle-fill.svg +1 -1
  99. data/assets/bootstrap-icons/arrow-down-right-circle.svg +1 -1
  100. data/assets/bootstrap-icons/arrow-down-right-square-fill.svg +1 -1
  101. data/assets/bootstrap-icons/arrow-down-right-square.svg +1 -1
  102. data/assets/bootstrap-icons/arrow-down-right.svg +1 -1
  103. data/assets/bootstrap-icons/arrow-down-short.svg +1 -1
  104. data/assets/bootstrap-icons/arrow-down-square-fill.svg +1 -1
  105. data/assets/bootstrap-icons/arrow-down-square.svg +1 -1
  106. data/assets/bootstrap-icons/arrow-down-up.svg +1 -1
  107. data/assets/bootstrap-icons/arrow-down.svg +1 -1
  108. data/assets/bootstrap-icons/arrow-left-circle-fill.svg +1 -1
  109. data/assets/bootstrap-icons/arrow-left-circle.svg +1 -1
  110. data/assets/bootstrap-icons/arrow-left-right.svg +1 -1
  111. data/assets/bootstrap-icons/arrow-left-short.svg +1 -1
  112. data/assets/bootstrap-icons/arrow-left-square-fill.svg +1 -1
  113. data/assets/bootstrap-icons/arrow-left-square.svg +1 -1
  114. data/assets/bootstrap-icons/arrow-left.svg +1 -1
  115. data/assets/bootstrap-icons/arrow-repeat.svg +2 -2
  116. data/assets/bootstrap-icons/arrow-return-left.svg +1 -1
  117. data/assets/bootstrap-icons/arrow-return-right.svg +1 -1
  118. data/assets/bootstrap-icons/arrow-right-circle-fill.svg +1 -1
  119. data/assets/bootstrap-icons/arrow-right-circle.svg +1 -1
  120. data/assets/bootstrap-icons/arrow-right-short.svg +1 -1
  121. data/assets/bootstrap-icons/arrow-right-square-fill.svg +1 -1
  122. data/assets/bootstrap-icons/arrow-right-square.svg +1 -1
  123. data/assets/bootstrap-icons/arrow-right.svg +1 -1
  124. data/assets/bootstrap-icons/arrow-through-heart-fill.svg +1 -1
  125. data/assets/bootstrap-icons/arrow-through-heart.svg +1 -1
  126. data/assets/bootstrap-icons/arrow-up-circle-fill.svg +1 -1
  127. data/assets/bootstrap-icons/arrow-up-circle.svg +1 -1
  128. data/assets/bootstrap-icons/arrow-up-left-circle-fill.svg +1 -1
  129. data/assets/bootstrap-icons/arrow-up-left-circle.svg +1 -1
  130. data/assets/bootstrap-icons/arrow-up-left-square-fill.svg +1 -1
  131. data/assets/bootstrap-icons/arrow-up-left-square.svg +1 -1
  132. data/assets/bootstrap-icons/arrow-up-left.svg +1 -1
  133. data/assets/bootstrap-icons/arrow-up-right-circle-fill.svg +1 -1
  134. data/assets/bootstrap-icons/arrow-up-right-circle.svg +1 -1
  135. data/assets/bootstrap-icons/arrow-up-right-square-fill.svg +1 -1
  136. data/assets/bootstrap-icons/arrow-up-right-square.svg +1 -1
  137. data/assets/bootstrap-icons/arrow-up-right.svg +1 -1
  138. data/assets/bootstrap-icons/arrow-up-short.svg +1 -1
  139. data/assets/bootstrap-icons/arrow-up-square-fill.svg +1 -1
  140. data/assets/bootstrap-icons/arrow-up-square.svg +1 -1
  141. data/assets/bootstrap-icons/arrow-up.svg +1 -1
  142. data/assets/bootstrap-icons/arrows-angle-contract.svg +1 -1
  143. data/assets/bootstrap-icons/arrows-angle-expand.svg +1 -1
  144. data/assets/bootstrap-icons/arrows-collapse-vertical.svg +3 -0
  145. data/assets/bootstrap-icons/arrows-collapse.svg +1 -1
  146. data/assets/bootstrap-icons/arrows-expand-vertical.svg +3 -0
  147. data/assets/bootstrap-icons/arrows-expand.svg +1 -1
  148. data/assets/bootstrap-icons/arrows-fullscreen.svg +1 -1
  149. data/assets/bootstrap-icons/arrows-move.svg +1 -1
  150. data/assets/bootstrap-icons/arrows-vertical.svg +3 -0
  151. data/assets/bootstrap-icons/arrows.svg +3 -0
  152. data/assets/bootstrap-icons/aspect-ratio-fill.svg +1 -1
  153. data/assets/bootstrap-icons/aspect-ratio.svg +2 -2
  154. data/assets/bootstrap-icons/asterisk.svg +1 -1
  155. data/assets/bootstrap-icons/at.svg +1 -1
  156. data/assets/bootstrap-icons/award-fill.svg +2 -2
  157. data/assets/bootstrap-icons/award.svg +2 -2
  158. data/assets/bootstrap-icons/back.svg +1 -1
  159. data/assets/bootstrap-icons/backpack-fill.svg +4 -0
  160. data/assets/bootstrap-icons/backpack.svg +4 -0
  161. data/assets/bootstrap-icons/backpack2-fill.svg +4 -0
  162. data/assets/bootstrap-icons/backpack2.svg +5 -0
  163. data/assets/bootstrap-icons/backpack3-fill.svg +4 -0
  164. data/assets/bootstrap-icons/backpack3.svg +4 -0
  165. data/assets/bootstrap-icons/backpack4-fill.svg +4 -0
  166. data/assets/bootstrap-icons/backpack4.svg +4 -0
  167. data/assets/bootstrap-icons/backspace-fill.svg +1 -1
  168. data/assets/bootstrap-icons/backspace-reverse-fill.svg +1 -1
  169. data/assets/bootstrap-icons/backspace-reverse.svg +2 -2
  170. data/assets/bootstrap-icons/backspace.svg +1 -1
  171. data/assets/bootstrap-icons/badge-3d-fill.svg +2 -2
  172. data/assets/bootstrap-icons/badge-3d.svg +2 -2
  173. data/assets/bootstrap-icons/badge-4k-fill.svg +2 -2
  174. data/assets/bootstrap-icons/badge-4k.svg +2 -2
  175. data/assets/bootstrap-icons/badge-8k-fill.svg +2 -2
  176. data/assets/bootstrap-icons/badge-8k.svg +2 -2
  177. data/assets/bootstrap-icons/badge-ad-fill.svg +2 -2
  178. data/assets/bootstrap-icons/badge-ad.svg +2 -2
  179. data/assets/bootstrap-icons/badge-ar-fill.svg +2 -2
  180. data/assets/bootstrap-icons/badge-ar.svg +2 -2
  181. data/assets/bootstrap-icons/badge-cc-fill.svg +1 -1
  182. data/assets/bootstrap-icons/badge-cc.svg +2 -2
  183. data/assets/bootstrap-icons/badge-hd-fill.svg +2 -2
  184. data/assets/bootstrap-icons/badge-hd.svg +2 -2
  185. data/assets/bootstrap-icons/badge-sd-fill.svg +2 -2
  186. data/assets/bootstrap-icons/badge-sd.svg +1 -1
  187. data/assets/bootstrap-icons/badge-tm-fill.svg +1 -1
  188. data/assets/bootstrap-icons/badge-tm.svg +2 -2
  189. data/assets/bootstrap-icons/badge-vo-fill.svg +2 -2
  190. data/assets/bootstrap-icons/badge-vo.svg +2 -2
  191. data/assets/bootstrap-icons/badge-vr-fill.svg +2 -2
  192. data/assets/bootstrap-icons/badge-vr.svg +2 -2
  193. data/assets/bootstrap-icons/badge-wc-fill.svg +1 -1
  194. data/assets/bootstrap-icons/badge-wc.svg +2 -2
  195. data/assets/bootstrap-icons/bag-check-fill.svg +1 -1
  196. data/assets/bootstrap-icons/bag-check.svg +2 -2
  197. data/assets/bootstrap-icons/bag-dash-fill.svg +1 -1
  198. data/assets/bootstrap-icons/bag-dash.svg +2 -2
  199. data/assets/bootstrap-icons/bag-fill.svg +1 -1
  200. data/assets/bootstrap-icons/bag-heart-fill.svg +1 -1
  201. data/assets/bootstrap-icons/bag-heart.svg +1 -1
  202. data/assets/bootstrap-icons/bag-plus-fill.svg +1 -1
  203. data/assets/bootstrap-icons/bag-plus.svg +2 -2
  204. data/assets/bootstrap-icons/bag-x-fill.svg +1 -1
  205. data/assets/bootstrap-icons/bag-x.svg +2 -2
  206. data/assets/bootstrap-icons/bag.svg +1 -1
  207. data/assets/bootstrap-icons/balloon-fill.svg +1 -1
  208. data/assets/bootstrap-icons/balloon-heart-fill.svg +1 -1
  209. data/assets/bootstrap-icons/balloon-heart.svg +1 -1
  210. data/assets/bootstrap-icons/balloon.svg +1 -1
  211. data/assets/bootstrap-icons/ban-fill.svg +3 -0
  212. data/assets/bootstrap-icons/ban.svg +3 -0
  213. data/assets/bootstrap-icons/bandaid-fill.svg +1 -1
  214. data/assets/bootstrap-icons/bandaid.svg +2 -2
  215. data/assets/bootstrap-icons/bank.svg +1 -1
  216. data/assets/bootstrap-icons/bank2.svg +1 -1
  217. data/assets/bootstrap-icons/bar-chart-fill.svg +1 -1
  218. data/assets/bootstrap-icons/bar-chart-line-fill.svg +1 -1
  219. data/assets/bootstrap-icons/bar-chart-line.svg +1 -1
  220. data/assets/bootstrap-icons/bar-chart-steps.svg +1 -1
  221. data/assets/bootstrap-icons/bar-chart.svg +1 -1
  222. data/assets/bootstrap-icons/basket-fill.svg +1 -1
  223. data/assets/bootstrap-icons/basket.svg +1 -1
  224. data/assets/bootstrap-icons/basket2-fill.svg +1 -1
  225. data/assets/bootstrap-icons/basket2.svg +2 -2
  226. data/assets/bootstrap-icons/basket3.svg +1 -1
  227. data/assets/bootstrap-icons/battery-charging.svg +3 -3
  228. data/assets/bootstrap-icons/battery-full.svg +2 -2
  229. data/assets/bootstrap-icons/battery-half.svg +2 -2
  230. data/assets/bootstrap-icons/battery.svg +1 -1
  231. data/assets/bootstrap-icons/behance.svg +1 -1
  232. data/assets/bootstrap-icons/bell-fill.svg +1 -1
  233. data/assets/bootstrap-icons/bell-slash-fill.svg +1 -1
  234. data/assets/bootstrap-icons/bell-slash.svg +1 -1
  235. data/assets/bootstrap-icons/bell.svg +1 -1
  236. data/assets/bootstrap-icons/bezier.svg +2 -2
  237. data/assets/bootstrap-icons/bezier2.svg +1 -1
  238. data/assets/bootstrap-icons/bicycle.svg +1 -1
  239. data/assets/bootstrap-icons/bing.svg +5 -0
  240. data/assets/bootstrap-icons/binoculars-fill.svg +1 -1
  241. data/assets/bootstrap-icons/binoculars.svg +1 -1
  242. data/assets/bootstrap-icons/blockquote-left.svg +1 -1
  243. data/assets/bootstrap-icons/blockquote-right.svg +1 -1
  244. data/assets/bootstrap-icons/bluetooth.svg +1 -1
  245. data/assets/bootstrap-icons/body-text.svg +1 -1
  246. data/assets/bootstrap-icons/book-fill.svg +1 -1
  247. data/assets/bootstrap-icons/book-half.svg +1 -1
  248. data/assets/bootstrap-icons/book.svg +1 -1
  249. data/assets/bootstrap-icons/bookmark-check-fill.svg +1 -1
  250. data/assets/bootstrap-icons/bookmark-check.svg +2 -2
  251. data/assets/bootstrap-icons/bookmark-dash-fill.svg +1 -1
  252. data/assets/bootstrap-icons/bookmark-dash.svg +2 -2
  253. data/assets/bootstrap-icons/bookmark-fill.svg +1 -1
  254. data/assets/bootstrap-icons/bookmark-heart-fill.svg +1 -1
  255. data/assets/bootstrap-icons/bookmark-heart.svg +1 -1
  256. data/assets/bootstrap-icons/bookmark-plus-fill.svg +1 -1
  257. data/assets/bootstrap-icons/bookmark-plus.svg +2 -2
  258. data/assets/bootstrap-icons/bookmark-star-fill.svg +1 -1
  259. data/assets/bootstrap-icons/bookmark-star.svg +2 -2
  260. data/assets/bootstrap-icons/bookmark-x-fill.svg +1 -1
  261. data/assets/bootstrap-icons/bookmark-x.svg +2 -2
  262. data/assets/bootstrap-icons/bookmark.svg +1 -1
  263. data/assets/bootstrap-icons/bookmarks-fill.svg +2 -2
  264. data/assets/bootstrap-icons/bookmarks.svg +2 -2
  265. data/assets/bootstrap-icons/bookshelf.svg +1 -1
  266. data/assets/bootstrap-icons/boombox-fill.svg +2 -2
  267. data/assets/bootstrap-icons/boombox.svg +4 -4
  268. data/assets/bootstrap-icons/bootstrap-fill.svg +2 -2
  269. data/assets/bootstrap-icons/bootstrap-icons.svg +1 -1
  270. data/assets/bootstrap-icons/bootstrap-reboot.svg +2 -2
  271. data/assets/bootstrap-icons/bootstrap.svg +2 -2
  272. data/assets/bootstrap-icons/border-all.svg +1 -1
  273. data/assets/bootstrap-icons/border-bottom.svg +1 -1
  274. data/assets/bootstrap-icons/border-center.svg +1 -1
  275. data/assets/bootstrap-icons/border-inner.svg +3 -3
  276. data/assets/bootstrap-icons/border-left.svg +1 -1
  277. data/assets/bootstrap-icons/border-middle.svg +1 -1
  278. data/assets/bootstrap-icons/border-outer.svg +2 -2
  279. data/assets/bootstrap-icons/border-right.svg +1 -1
  280. data/assets/bootstrap-icons/border-style.svg +1 -1
  281. data/assets/bootstrap-icons/border-top.svg +1 -1
  282. data/assets/bootstrap-icons/border-width.svg +1 -1
  283. data/assets/bootstrap-icons/border.svg +1 -1
  284. data/assets/bootstrap-icons/bounding-box-circles.svg +1 -1
  285. data/assets/bootstrap-icons/bounding-box.svg +1 -1
  286. data/assets/bootstrap-icons/box-arrow-down-left.svg +2 -2
  287. data/assets/bootstrap-icons/box-arrow-down-right.svg +2 -2
  288. data/assets/bootstrap-icons/box-arrow-down.svg +2 -2
  289. data/assets/bootstrap-icons/box-arrow-in-down-left.svg +2 -2
  290. data/assets/bootstrap-icons/box-arrow-in-down-right.svg +2 -2
  291. data/assets/bootstrap-icons/box-arrow-in-down.svg +2 -2
  292. data/assets/bootstrap-icons/box-arrow-in-left.svg +2 -2
  293. data/assets/bootstrap-icons/box-arrow-in-right.svg +2 -2
  294. data/assets/bootstrap-icons/box-arrow-in-up-left.svg +2 -2
  295. data/assets/bootstrap-icons/box-arrow-in-up-right.svg +2 -2
  296. data/assets/bootstrap-icons/box-arrow-in-up.svg +2 -2
  297. data/assets/bootstrap-icons/box-arrow-left.svg +2 -2
  298. data/assets/bootstrap-icons/box-arrow-right.svg +2 -2
  299. data/assets/bootstrap-icons/box-arrow-up-left.svg +2 -2
  300. data/assets/bootstrap-icons/box-arrow-up-right.svg +2 -2
  301. data/assets/bootstrap-icons/box-arrow-up.svg +2 -2
  302. data/assets/bootstrap-icons/box-fill.svg +1 -1
  303. data/assets/bootstrap-icons/box-seam-fill.svg +1 -1
  304. data/assets/bootstrap-icons/box-seam.svg +1 -1
  305. data/assets/bootstrap-icons/box.svg +1 -1
  306. data/assets/bootstrap-icons/box2-fill.svg +1 -1
  307. data/assets/bootstrap-icons/box2-heart-fill.svg +1 -1
  308. data/assets/bootstrap-icons/box2-heart.svg +2 -2
  309. data/assets/bootstrap-icons/box2.svg +1 -1
  310. data/assets/bootstrap-icons/boxes.svg +1 -1
  311. data/assets/bootstrap-icons/braces-asterisk.svg +1 -1
  312. data/assets/bootstrap-icons/braces.svg +1 -1
  313. data/assets/bootstrap-icons/bricks.svg +1 -1
  314. data/assets/bootstrap-icons/briefcase-fill.svg +2 -2
  315. data/assets/bootstrap-icons/briefcase.svg +1 -1
  316. data/assets/bootstrap-icons/brightness-alt-high-fill.svg +1 -1
  317. data/assets/bootstrap-icons/brightness-alt-high.svg +1 -1
  318. data/assets/bootstrap-icons/brightness-alt-low-fill.svg +1 -1
  319. data/assets/bootstrap-icons/brightness-alt-low.svg +1 -1
  320. data/assets/bootstrap-icons/brightness-high-fill.svg +1 -1
  321. data/assets/bootstrap-icons/brightness-high.svg +1 -1
  322. data/assets/bootstrap-icons/brightness-low-fill.svg +1 -1
  323. data/assets/bootstrap-icons/brightness-low.svg +1 -1
  324. data/assets/bootstrap-icons/brilliance.svg +3 -0
  325. data/assets/bootstrap-icons/broadcast-pin.svg +1 -1
  326. data/assets/bootstrap-icons/broadcast.svg +1 -1
  327. data/assets/bootstrap-icons/browser-chrome.svg +1 -1
  328. data/assets/bootstrap-icons/browser-edge.svg +3 -3
  329. data/assets/bootstrap-icons/browser-firefox.svg +1 -1
  330. data/assets/bootstrap-icons/browser-safari.svg +1 -1
  331. data/assets/bootstrap-icons/brush-fill.svg +1 -1
  332. data/assets/bootstrap-icons/brush.svg +1 -1
  333. data/assets/bootstrap-icons/bucket-fill.svg +1 -1
  334. data/assets/bootstrap-icons/bucket.svg +1 -1
  335. data/assets/bootstrap-icons/bug-fill.svg +2 -2
  336. data/assets/bootstrap-icons/bug.svg +1 -1
  337. data/assets/bootstrap-icons/building-add.svg +3 -3
  338. data/assets/bootstrap-icons/building-check.svg +3 -3
  339. data/assets/bootstrap-icons/building-dash.svg +3 -3
  340. data/assets/bootstrap-icons/building-down.svg +3 -3
  341. data/assets/bootstrap-icons/building-exclamation.svg +2 -2
  342. data/assets/bootstrap-icons/building-fill-add.svg +2 -2
  343. data/assets/bootstrap-icons/building-fill-check.svg +2 -2
  344. data/assets/bootstrap-icons/building-fill-dash.svg +2 -2
  345. data/assets/bootstrap-icons/building-fill-down.svg +2 -2
  346. data/assets/bootstrap-icons/building-fill-exclamation.svg +2 -2
  347. data/assets/bootstrap-icons/building-fill-gear.svg +2 -2
  348. data/assets/bootstrap-icons/building-fill-lock.svg +2 -2
  349. data/assets/bootstrap-icons/building-fill-slash.svg +2 -2
  350. data/assets/bootstrap-icons/building-fill-up.svg +2 -2
  351. data/assets/bootstrap-icons/building-fill-x.svg +2 -2
  352. data/assets/bootstrap-icons/building-fill.svg +1 -1
  353. data/assets/bootstrap-icons/building-gear.svg +2 -2
  354. data/assets/bootstrap-icons/building-lock.svg +2 -2
  355. data/assets/bootstrap-icons/building-slash.svg +3 -3
  356. data/assets/bootstrap-icons/building-up.svg +3 -3
  357. data/assets/bootstrap-icons/building-x.svg +2 -2
  358. data/assets/bootstrap-icons/building.svg +2 -2
  359. data/assets/bootstrap-icons/buildings-fill.svg +1 -1
  360. data/assets/bootstrap-icons/buildings.svg +2 -2
  361. data/assets/bootstrap-icons/bullseye.svg +4 -4
  362. data/assets/bootstrap-icons/bus-front-fill.svg +1 -1
  363. data/assets/bootstrap-icons/bus-front.svg +2 -2
  364. data/assets/bootstrap-icons/c-circle-fill.svg +1 -1
  365. data/assets/bootstrap-icons/c-circle.svg +1 -1
  366. data/assets/bootstrap-icons/c-square-fill.svg +1 -1
  367. data/assets/bootstrap-icons/c-square.svg +2 -2
  368. data/assets/bootstrap-icons/cake-fill.svg +3 -0
  369. data/assets/bootstrap-icons/cake.svg +3 -0
  370. data/assets/bootstrap-icons/cake2-fill.svg +4 -0
  371. data/assets/bootstrap-icons/cake2.svg +3 -0
  372. data/assets/bootstrap-icons/calculator-fill.svg +1 -1
  373. data/assets/bootstrap-icons/calculator.svg +2 -2
  374. data/assets/bootstrap-icons/calendar-check-fill.svg +1 -1
  375. data/assets/bootstrap-icons/calendar-check.svg +2 -2
  376. data/assets/bootstrap-icons/calendar-date-fill.svg +2 -2
  377. data/assets/bootstrap-icons/calendar-date.svg +2 -2
  378. data/assets/bootstrap-icons/calendar-day-fill.svg +1 -1
  379. data/assets/bootstrap-icons/calendar-day.svg +2 -2
  380. data/assets/bootstrap-icons/calendar-event-fill.svg +1 -1
  381. data/assets/bootstrap-icons/calendar-event.svg +2 -2
  382. data/assets/bootstrap-icons/calendar-fill.svg +1 -1
  383. data/assets/bootstrap-icons/calendar-heart-fill.svg +1 -1
  384. data/assets/bootstrap-icons/calendar-heart.svg +1 -1
  385. data/assets/bootstrap-icons/calendar-minus-fill.svg +1 -1
  386. data/assets/bootstrap-icons/calendar-minus.svg +2 -2
  387. data/assets/bootstrap-icons/calendar-month-fill.svg +2 -2
  388. data/assets/bootstrap-icons/calendar-month.svg +2 -2
  389. data/assets/bootstrap-icons/calendar-plus-fill.svg +1 -1
  390. data/assets/bootstrap-icons/calendar-plus.svg +2 -2
  391. data/assets/bootstrap-icons/calendar-range-fill.svg +1 -1
  392. data/assets/bootstrap-icons/calendar-range.svg +2 -2
  393. data/assets/bootstrap-icons/calendar-week-fill.svg +1 -1
  394. data/assets/bootstrap-icons/calendar-week.svg +2 -2
  395. data/assets/bootstrap-icons/calendar-x-fill.svg +1 -1
  396. data/assets/bootstrap-icons/calendar-x.svg +2 -2
  397. data/assets/bootstrap-icons/calendar.svg +1 -1
  398. data/assets/bootstrap-icons/calendar2-check-fill.svg +1 -1
  399. data/assets/bootstrap-icons/calendar2-check.svg +3 -3
  400. data/assets/bootstrap-icons/calendar2-date-fill.svg +2 -2
  401. data/assets/bootstrap-icons/calendar2-date.svg +3 -3
  402. data/assets/bootstrap-icons/calendar2-day-fill.svg +1 -1
  403. data/assets/bootstrap-icons/calendar2-day.svg +3 -3
  404. data/assets/bootstrap-icons/calendar2-event-fill.svg +1 -1
  405. data/assets/bootstrap-icons/calendar2-event.svg +3 -3
  406. data/assets/bootstrap-icons/calendar2-fill.svg +1 -1
  407. data/assets/bootstrap-icons/calendar2-heart-fill.svg +1 -1
  408. data/assets/bootstrap-icons/calendar2-heart.svg +1 -1
  409. data/assets/bootstrap-icons/calendar2-minus-fill.svg +1 -1
  410. data/assets/bootstrap-icons/calendar2-minus.svg +3 -3
  411. data/assets/bootstrap-icons/calendar2-month-fill.svg +2 -2
  412. data/assets/bootstrap-icons/calendar2-month.svg +3 -3
  413. data/assets/bootstrap-icons/calendar2-plus-fill.svg +1 -1
  414. data/assets/bootstrap-icons/calendar2-plus.svg +2 -2
  415. data/assets/bootstrap-icons/calendar2-range-fill.svg +1 -1
  416. data/assets/bootstrap-icons/calendar2-range.svg +2 -2
  417. data/assets/bootstrap-icons/calendar2-week-fill.svg +1 -1
  418. data/assets/bootstrap-icons/calendar2-week.svg +2 -2
  419. data/assets/bootstrap-icons/calendar2-x-fill.svg +1 -1
  420. data/assets/bootstrap-icons/calendar2-x.svg +3 -3
  421. data/assets/bootstrap-icons/calendar2.svg +2 -2
  422. data/assets/bootstrap-icons/calendar3-event-fill.svg +1 -1
  423. data/assets/bootstrap-icons/calendar3-event.svg +2 -2
  424. data/assets/bootstrap-icons/calendar3-fill.svg +1 -1
  425. data/assets/bootstrap-icons/calendar3-range-fill.svg +1 -1
  426. data/assets/bootstrap-icons/calendar3-range.svg +2 -2
  427. data/assets/bootstrap-icons/calendar3-week-fill.svg +1 -1
  428. data/assets/bootstrap-icons/calendar3-week.svg +2 -2
  429. data/assets/bootstrap-icons/calendar3.svg +2 -2
  430. data/assets/bootstrap-icons/calendar4-event.svg +2 -2
  431. data/assets/bootstrap-icons/calendar4-range.svg +2 -2
  432. data/assets/bootstrap-icons/calendar4-week.svg +2 -2
  433. data/assets/bootstrap-icons/calendar4.svg +1 -1
  434. data/assets/bootstrap-icons/camera-fill.svg +2 -2
  435. data/assets/bootstrap-icons/camera-reels-fill.svg +3 -3
  436. data/assets/bootstrap-icons/camera-reels.svg +3 -3
  437. data/assets/bootstrap-icons/camera-video-fill.svg +1 -1
  438. data/assets/bootstrap-icons/camera-video-off-fill.svg +1 -1
  439. data/assets/bootstrap-icons/camera-video-off.svg +1 -1
  440. data/assets/bootstrap-icons/camera-video.svg +1 -1
  441. data/assets/bootstrap-icons/camera.svg +2 -2
  442. data/assets/bootstrap-icons/camera2.svg +2 -2
  443. data/assets/bootstrap-icons/capslock-fill.svg +1 -1
  444. data/assets/bootstrap-icons/capslock.svg +1 -1
  445. data/assets/bootstrap-icons/capsule-pill.svg +1 -1
  446. data/assets/bootstrap-icons/capsule.svg +1 -1
  447. data/assets/bootstrap-icons/car-front-fill.svg +1 -1
  448. data/assets/bootstrap-icons/car-front.svg +2 -2
  449. data/assets/bootstrap-icons/card-checklist.svg +2 -2
  450. data/assets/bootstrap-icons/card-heading.svg +2 -2
  451. data/assets/bootstrap-icons/card-image.svg +2 -2
  452. data/assets/bootstrap-icons/card-list.svg +2 -2
  453. data/assets/bootstrap-icons/card-text.svg +2 -2
  454. data/assets/bootstrap-icons/caret-down-square-fill.svg +1 -1
  455. data/assets/bootstrap-icons/caret-down-square.svg +2 -2
  456. data/assets/bootstrap-icons/caret-down.svg +1 -1
  457. data/assets/bootstrap-icons/caret-left-square-fill.svg +1 -1
  458. data/assets/bootstrap-icons/caret-left-square.svg +2 -2
  459. data/assets/bootstrap-icons/caret-left.svg +1 -1
  460. data/assets/bootstrap-icons/caret-right-square-fill.svg +1 -1
  461. data/assets/bootstrap-icons/caret-right-square.svg +2 -2
  462. data/assets/bootstrap-icons/caret-right.svg +1 -1
  463. data/assets/bootstrap-icons/caret-up-square-fill.svg +1 -1
  464. data/assets/bootstrap-icons/caret-up-square.svg +2 -2
  465. data/assets/bootstrap-icons/caret-up.svg +1 -1
  466. data/assets/bootstrap-icons/cart-check-fill.svg +1 -1
  467. data/assets/bootstrap-icons/cart-check.svg +2 -2
  468. data/assets/bootstrap-icons/cart-dash-fill.svg +1 -1
  469. data/assets/bootstrap-icons/cart-dash.svg +2 -2
  470. data/assets/bootstrap-icons/cart-fill.svg +1 -1
  471. data/assets/bootstrap-icons/cart-plus-fill.svg +1 -1
  472. data/assets/bootstrap-icons/cart-plus.svg +2 -2
  473. data/assets/bootstrap-icons/cart-x-fill.svg +1 -1
  474. data/assets/bootstrap-icons/cart-x.svg +2 -2
  475. data/assets/bootstrap-icons/cart.svg +1 -1
  476. data/assets/bootstrap-icons/cart2.svg +1 -1
  477. data/assets/bootstrap-icons/cart3.svg +1 -1
  478. data/assets/bootstrap-icons/cart4.svg +1 -1
  479. data/assets/bootstrap-icons/cash-coin.svg +4 -4
  480. data/assets/bootstrap-icons/cash-stack.svg +2 -2
  481. data/assets/bootstrap-icons/cash.svg +2 -2
  482. data/assets/bootstrap-icons/cassette-fill.svg +2 -2
  483. data/assets/bootstrap-icons/cassette.svg +2 -2
  484. data/assets/bootstrap-icons/cast.svg +2 -2
  485. data/assets/bootstrap-icons/cc-circle-fill.svg +1 -1
  486. data/assets/bootstrap-icons/cc-circle.svg +1 -1
  487. data/assets/bootstrap-icons/cc-square-fill.svg +1 -1
  488. data/assets/bootstrap-icons/cc-square.svg +2 -2
  489. data/assets/bootstrap-icons/chat-dots-fill.svg +1 -1
  490. data/assets/bootstrap-icons/chat-dots.svg +2 -2
  491. data/assets/bootstrap-icons/chat-fill.svg +1 -1
  492. data/assets/bootstrap-icons/chat-heart-fill.svg +1 -1
  493. data/assets/bootstrap-icons/chat-heart.svg +1 -1
  494. data/assets/bootstrap-icons/chat-left-dots-fill.svg +1 -1
  495. data/assets/bootstrap-icons/chat-left-dots.svg +2 -2
  496. data/assets/bootstrap-icons/chat-left-fill.svg +1 -1
  497. data/assets/bootstrap-icons/chat-left-heart-fill.svg +1 -1
  498. data/assets/bootstrap-icons/chat-left-heart.svg +2 -2
  499. data/assets/bootstrap-icons/chat-left-quote-fill.svg +1 -1
  500. data/assets/bootstrap-icons/chat-left-quote.svg +1 -1
  501. data/assets/bootstrap-icons/chat-left-text-fill.svg +1 -1
  502. data/assets/bootstrap-icons/chat-left-text.svg +2 -2
  503. data/assets/bootstrap-icons/chat-left.svg +1 -1
  504. data/assets/bootstrap-icons/chat-quote-fill.svg +1 -1
  505. data/assets/bootstrap-icons/chat-quote.svg +1 -1
  506. data/assets/bootstrap-icons/chat-right-dots-fill.svg +1 -1
  507. data/assets/bootstrap-icons/chat-right-dots.svg +2 -2
  508. data/assets/bootstrap-icons/chat-right-fill.svg +1 -1
  509. data/assets/bootstrap-icons/chat-right-heart-fill.svg +1 -1
  510. data/assets/bootstrap-icons/chat-right-heart.svg +2 -2
  511. data/assets/bootstrap-icons/chat-right-quote-fill.svg +1 -1
  512. data/assets/bootstrap-icons/chat-right-quote.svg +1 -1
  513. data/assets/bootstrap-icons/chat-right-text-fill.svg +1 -1
  514. data/assets/bootstrap-icons/chat-right-text.svg +2 -2
  515. data/assets/bootstrap-icons/chat-right.svg +1 -1
  516. data/assets/bootstrap-icons/chat-square-dots-fill.svg +1 -1
  517. data/assets/bootstrap-icons/chat-square-dots.svg +2 -2
  518. data/assets/bootstrap-icons/chat-square-fill.svg +1 -1
  519. data/assets/bootstrap-icons/chat-square-heart-fill.svg +1 -1
  520. data/assets/bootstrap-icons/chat-square-heart.svg +2 -2
  521. data/assets/bootstrap-icons/chat-square-quote-fill.svg +1 -1
  522. data/assets/bootstrap-icons/chat-square-quote.svg +1 -1
  523. data/assets/bootstrap-icons/chat-square-text-fill.svg +1 -1
  524. data/assets/bootstrap-icons/chat-square-text.svg +2 -2
  525. data/assets/bootstrap-icons/chat-square.svg +1 -1
  526. data/assets/bootstrap-icons/chat-text-fill.svg +1 -1
  527. data/assets/bootstrap-icons/chat-text.svg +2 -2
  528. data/assets/bootstrap-icons/chat.svg +1 -1
  529. data/assets/bootstrap-icons/check-all.svg +1 -1
  530. data/assets/bootstrap-icons/check-circle-fill.svg +1 -1
  531. data/assets/bootstrap-icons/check-circle.svg +2 -2
  532. data/assets/bootstrap-icons/check-lg.svg +1 -1
  533. data/assets/bootstrap-icons/check-square-fill.svg +1 -1
  534. data/assets/bootstrap-icons/check-square.svg +2 -2
  535. data/assets/bootstrap-icons/check.svg +1 -1
  536. data/assets/bootstrap-icons/check2-all.svg +2 -2
  537. data/assets/bootstrap-icons/check2-circle.svg +2 -2
  538. data/assets/bootstrap-icons/check2-square.svg +2 -2
  539. data/assets/bootstrap-icons/check2.svg +1 -1
  540. data/assets/bootstrap-icons/chevron-bar-contract.svg +1 -1
  541. data/assets/bootstrap-icons/chevron-bar-down.svg +1 -1
  542. data/assets/bootstrap-icons/chevron-bar-expand.svg +1 -1
  543. data/assets/bootstrap-icons/chevron-bar-left.svg +1 -1
  544. data/assets/bootstrap-icons/chevron-bar-right.svg +1 -1
  545. data/assets/bootstrap-icons/chevron-bar-up.svg +1 -1
  546. data/assets/bootstrap-icons/chevron-compact-down.svg +1 -1
  547. data/assets/bootstrap-icons/chevron-compact-left.svg +1 -1
  548. data/assets/bootstrap-icons/chevron-compact-right.svg +1 -1
  549. data/assets/bootstrap-icons/chevron-compact-up.svg +1 -1
  550. data/assets/bootstrap-icons/chevron-contract.svg +1 -1
  551. data/assets/bootstrap-icons/chevron-double-down.svg +2 -2
  552. data/assets/bootstrap-icons/chevron-double-left.svg +2 -2
  553. data/assets/bootstrap-icons/chevron-double-right.svg +2 -2
  554. data/assets/bootstrap-icons/chevron-double-up.svg +2 -2
  555. data/assets/bootstrap-icons/chevron-down.svg +1 -1
  556. data/assets/bootstrap-icons/chevron-expand.svg +1 -1
  557. data/assets/bootstrap-icons/chevron-left.svg +1 -1
  558. data/assets/bootstrap-icons/chevron-right.svg +1 -1
  559. data/assets/bootstrap-icons/chevron-up.svg +1 -1
  560. data/assets/bootstrap-icons/circle-half.svg +1 -1
  561. data/assets/bootstrap-icons/circle-square.svg +2 -2
  562. data/assets/bootstrap-icons/circle.svg +1 -1
  563. data/assets/bootstrap-icons/clipboard-check-fill.svg +2 -2
  564. data/assets/bootstrap-icons/clipboard-check.svg +3 -3
  565. data/assets/bootstrap-icons/clipboard-data-fill.svg +2 -2
  566. data/assets/bootstrap-icons/clipboard-data.svg +3 -3
  567. data/assets/bootstrap-icons/clipboard-fill.svg +1 -1
  568. data/assets/bootstrap-icons/clipboard-heart-fill.svg +2 -2
  569. data/assets/bootstrap-icons/clipboard-heart.svg +3 -3
  570. data/assets/bootstrap-icons/clipboard-minus-fill.svg +2 -2
  571. data/assets/bootstrap-icons/clipboard-minus.svg +3 -3
  572. data/assets/bootstrap-icons/clipboard-plus-fill.svg +2 -2
  573. data/assets/bootstrap-icons/clipboard-plus.svg +3 -3
  574. data/assets/bootstrap-icons/clipboard-pulse.svg +1 -1
  575. data/assets/bootstrap-icons/clipboard-x-fill.svg +2 -2
  576. data/assets/bootstrap-icons/clipboard-x.svg +3 -3
  577. data/assets/bootstrap-icons/clipboard.svg +2 -2
  578. data/assets/bootstrap-icons/clipboard2-check-fill.svg +2 -2
  579. data/assets/bootstrap-icons/clipboard2-check.svg +3 -3
  580. data/assets/bootstrap-icons/clipboard2-data-fill.svg +2 -2
  581. data/assets/bootstrap-icons/clipboard2-data.svg +3 -3
  582. data/assets/bootstrap-icons/clipboard2-fill.svg +2 -2
  583. data/assets/bootstrap-icons/clipboard2-heart-fill.svg +2 -2
  584. data/assets/bootstrap-icons/clipboard2-heart.svg +3 -3
  585. data/assets/bootstrap-icons/clipboard2-minus-fill.svg +2 -2
  586. data/assets/bootstrap-icons/clipboard2-minus.svg +3 -3
  587. data/assets/bootstrap-icons/clipboard2-plus-fill.svg +2 -2
  588. data/assets/bootstrap-icons/clipboard2-plus.svg +3 -3
  589. data/assets/bootstrap-icons/clipboard2-pulse-fill.svg +2 -2
  590. data/assets/bootstrap-icons/clipboard2-pulse.svg +3 -3
  591. data/assets/bootstrap-icons/clipboard2-x-fill.svg +2 -2
  592. data/assets/bootstrap-icons/clipboard2-x.svg +3 -3
  593. data/assets/bootstrap-icons/clipboard2.svg +2 -2
  594. data/assets/bootstrap-icons/clock-fill.svg +1 -1
  595. data/assets/bootstrap-icons/clock-history.svg +3 -3
  596. data/assets/bootstrap-icons/clock.svg +2 -2
  597. data/assets/bootstrap-icons/cloud-arrow-down-fill.svg +1 -1
  598. data/assets/bootstrap-icons/cloud-arrow-down.svg +2 -2
  599. data/assets/bootstrap-icons/cloud-arrow-up-fill.svg +1 -1
  600. data/assets/bootstrap-icons/cloud-arrow-up.svg +2 -2
  601. data/assets/bootstrap-icons/cloud-check-fill.svg +1 -1
  602. data/assets/bootstrap-icons/cloud-check.svg +2 -2
  603. data/assets/bootstrap-icons/cloud-download-fill.svg +1 -1
  604. data/assets/bootstrap-icons/cloud-download.svg +2 -2
  605. data/assets/bootstrap-icons/cloud-drizzle-fill.svg +1 -1
  606. data/assets/bootstrap-icons/cloud-drizzle.svg +1 -1
  607. data/assets/bootstrap-icons/cloud-fill.svg +1 -1
  608. data/assets/bootstrap-icons/cloud-fog-fill.svg +1 -1
  609. data/assets/bootstrap-icons/cloud-fog.svg +1 -1
  610. data/assets/bootstrap-icons/cloud-fog2-fill.svg +1 -1
  611. data/assets/bootstrap-icons/cloud-fog2.svg +1 -1
  612. data/assets/bootstrap-icons/cloud-hail-fill.svg +1 -1
  613. data/assets/bootstrap-icons/cloud-hail.svg +1 -1
  614. data/assets/bootstrap-icons/cloud-haze-fill.svg +1 -1
  615. data/assets/bootstrap-icons/cloud-haze.svg +1 -1
  616. data/assets/bootstrap-icons/cloud-haze2-fill.svg +1 -1
  617. data/assets/bootstrap-icons/cloud-haze2.svg +1 -1
  618. data/assets/bootstrap-icons/cloud-lightning-fill.svg +1 -1
  619. data/assets/bootstrap-icons/cloud-lightning-rain-fill.svg +1 -1
  620. data/assets/bootstrap-icons/cloud-lightning-rain.svg +1 -1
  621. data/assets/bootstrap-icons/cloud-lightning.svg +1 -1
  622. data/assets/bootstrap-icons/cloud-minus-fill.svg +1 -1
  623. data/assets/bootstrap-icons/cloud-minus.svg +2 -2
  624. data/assets/bootstrap-icons/cloud-moon-fill.svg +2 -2
  625. data/assets/bootstrap-icons/cloud-moon.svg +2 -2
  626. data/assets/bootstrap-icons/cloud-plus-fill.svg +1 -1
  627. data/assets/bootstrap-icons/cloud-plus.svg +2 -2
  628. data/assets/bootstrap-icons/cloud-rain-fill.svg +1 -1
  629. data/assets/bootstrap-icons/cloud-rain-heavy-fill.svg +1 -1
  630. data/assets/bootstrap-icons/cloud-rain-heavy.svg +1 -1
  631. data/assets/bootstrap-icons/cloud-rain.svg +1 -1
  632. data/assets/bootstrap-icons/cloud-slash-fill.svg +1 -1
  633. data/assets/bootstrap-icons/cloud-slash.svg +2 -2
  634. data/assets/bootstrap-icons/cloud-sleet-fill.svg +1 -1
  635. data/assets/bootstrap-icons/cloud-sleet.svg +1 -1
  636. data/assets/bootstrap-icons/cloud-snow-fill.svg +1 -1
  637. data/assets/bootstrap-icons/cloud-snow.svg +1 -1
  638. data/assets/bootstrap-icons/cloud-sun-fill.svg +2 -2
  639. data/assets/bootstrap-icons/cloud-sun.svg +2 -2
  640. data/assets/bootstrap-icons/cloud-upload-fill.svg +1 -1
  641. data/assets/bootstrap-icons/cloud-upload.svg +2 -2
  642. data/assets/bootstrap-icons/cloud.svg +1 -1
  643. data/assets/bootstrap-icons/clouds-fill.svg +2 -2
  644. data/assets/bootstrap-icons/clouds.svg +2 -2
  645. data/assets/bootstrap-icons/cloudy-fill.svg +1 -1
  646. data/assets/bootstrap-icons/cloudy.svg +1 -1
  647. data/assets/bootstrap-icons/code-slash.svg +1 -1
  648. data/assets/bootstrap-icons/code-square.svg +2 -2
  649. data/assets/bootstrap-icons/code.svg +1 -1
  650. data/assets/bootstrap-icons/coin.svg +3 -3
  651. data/assets/bootstrap-icons/collection-fill.svg +1 -1
  652. data/assets/bootstrap-icons/collection-play-fill.svg +1 -1
  653. data/assets/bootstrap-icons/collection-play.svg +2 -2
  654. data/assets/bootstrap-icons/collection.svg +1 -1
  655. data/assets/bootstrap-icons/columns-gap.svg +1 -1
  656. data/assets/bootstrap-icons/columns.svg +1 -1
  657. data/assets/bootstrap-icons/command.svg +1 -1
  658. data/assets/bootstrap-icons/compass-fill.svg +1 -1
  659. data/assets/bootstrap-icons/compass.svg +1 -1
  660. data/assets/bootstrap-icons/cone-striped.svg +1 -1
  661. data/assets/bootstrap-icons/cone.svg +1 -1
  662. data/assets/bootstrap-icons/controller.svg +2 -2
  663. data/assets/bootstrap-icons/cookie.svg +4 -0
  664. data/assets/bootstrap-icons/copy.svg +3 -0
  665. data/assets/bootstrap-icons/cpu-fill.svg +2 -2
  666. data/assets/bootstrap-icons/cpu.svg +1 -1
  667. data/assets/bootstrap-icons/credit-card-2-back-fill.svg +1 -1
  668. data/assets/bootstrap-icons/credit-card-2-back.svg +2 -2
  669. data/assets/bootstrap-icons/credit-card-2-front-fill.svg +1 -1
  670. data/assets/bootstrap-icons/credit-card-2-front.svg +2 -2
  671. data/assets/bootstrap-icons/credit-card-fill.svg +1 -1
  672. data/assets/bootstrap-icons/credit-card.svg +2 -2
  673. data/assets/bootstrap-icons/crop.svg +1 -1
  674. data/assets/bootstrap-icons/crosshair.svg +3 -0
  675. data/assets/bootstrap-icons/crosshair2.svg +3 -0
  676. data/assets/bootstrap-icons/cup-fill.svg +1 -1
  677. data/assets/bootstrap-icons/cup-hot-fill.svg +2 -2
  678. data/assets/bootstrap-icons/cup-hot.svg +2 -2
  679. data/assets/bootstrap-icons/cup-straw.svg +1 -1
  680. data/assets/bootstrap-icons/cup.svg +1 -1
  681. data/assets/bootstrap-icons/currency-bitcoin.svg +1 -1
  682. data/assets/bootstrap-icons/currency-dollar.svg +1 -1
  683. data/assets/bootstrap-icons/currency-euro.svg +1 -1
  684. data/assets/bootstrap-icons/currency-exchange.svg +1 -1
  685. data/assets/bootstrap-icons/currency-pound.svg +1 -1
  686. data/assets/bootstrap-icons/currency-rupee.svg +1 -1
  687. data/assets/bootstrap-icons/cursor-text.svg +1 -1
  688. data/assets/bootstrap-icons/cursor.svg +1 -1
  689. data/assets/bootstrap-icons/dash-circle-dotted.svg +1 -1
  690. data/assets/bootstrap-icons/dash-circle-fill.svg +1 -1
  691. data/assets/bootstrap-icons/dash-circle.svg +2 -2
  692. data/assets/bootstrap-icons/dash-lg.svg +1 -1
  693. data/assets/bootstrap-icons/dash-square-dotted.svg +1 -1
  694. data/assets/bootstrap-icons/dash-square-fill.svg +1 -1
  695. data/assets/bootstrap-icons/dash-square.svg +2 -2
  696. data/assets/bootstrap-icons/dash.svg +1 -1
  697. data/assets/bootstrap-icons/database-add.svg +2 -2
  698. data/assets/bootstrap-icons/database-check.svg +2 -2
  699. data/assets/bootstrap-icons/database-dash.svg +2 -2
  700. data/assets/bootstrap-icons/database-down.svg +2 -2
  701. data/assets/bootstrap-icons/database-exclamation.svg +2 -2
  702. data/assets/bootstrap-icons/database-fill-add.svg +2 -2
  703. data/assets/bootstrap-icons/database-fill-check.svg +2 -2
  704. data/assets/bootstrap-icons/database-fill-dash.svg +2 -2
  705. data/assets/bootstrap-icons/database-fill-down.svg +2 -2
  706. data/assets/bootstrap-icons/database-fill-exclamation.svg +3 -3
  707. data/assets/bootstrap-icons/database-fill-gear.svg +2 -2
  708. data/assets/bootstrap-icons/database-fill-lock.svg +3 -3
  709. data/assets/bootstrap-icons/database-fill-slash.svg +2 -2
  710. data/assets/bootstrap-icons/database-fill-up.svg +2 -2
  711. data/assets/bootstrap-icons/database-fill-x.svg +3 -3
  712. data/assets/bootstrap-icons/database-fill.svg +4 -4
  713. data/assets/bootstrap-icons/database-gear.svg +2 -2
  714. data/assets/bootstrap-icons/database-lock.svg +2 -2
  715. data/assets/bootstrap-icons/database-slash.svg +2 -2
  716. data/assets/bootstrap-icons/database-up.svg +2 -2
  717. data/assets/bootstrap-icons/database-x.svg +2 -2
  718. data/assets/bootstrap-icons/database.svg +1 -1
  719. data/assets/bootstrap-icons/device-hdd-fill.svg +2 -2
  720. data/assets/bootstrap-icons/device-hdd.svg +3 -3
  721. data/assets/bootstrap-icons/device-ssd-fill.svg +2 -2
  722. data/assets/bootstrap-icons/device-ssd.svg +2 -2
  723. data/assets/bootstrap-icons/diagram-2-fill.svg +1 -1
  724. data/assets/bootstrap-icons/diagram-2.svg +1 -1
  725. data/assets/bootstrap-icons/diagram-3-fill.svg +1 -1
  726. data/assets/bootstrap-icons/diagram-3.svg +1 -1
  727. data/assets/bootstrap-icons/diamond-fill.svg +1 -1
  728. data/assets/bootstrap-icons/diamond-half.svg +1 -1
  729. data/assets/bootstrap-icons/diamond.svg +1 -1
  730. data/assets/bootstrap-icons/dice-1-fill.svg +1 -1
  731. data/assets/bootstrap-icons/dice-1.svg +1 -1
  732. data/assets/bootstrap-icons/dice-2-fill.svg +1 -1
  733. data/assets/bootstrap-icons/dice-2.svg +2 -2
  734. data/assets/bootstrap-icons/dice-3-fill.svg +1 -1
  735. data/assets/bootstrap-icons/dice-3.svg +2 -2
  736. data/assets/bootstrap-icons/dice-4-fill.svg +1 -1
  737. data/assets/bootstrap-icons/dice-4.svg +2 -2
  738. data/assets/bootstrap-icons/dice-5-fill.svg +1 -1
  739. data/assets/bootstrap-icons/dice-5.svg +2 -2
  740. data/assets/bootstrap-icons/dice-6-fill.svg +1 -1
  741. data/assets/bootstrap-icons/dice-6.svg +2 -2
  742. data/assets/bootstrap-icons/disc-fill.svg +1 -1
  743. data/assets/bootstrap-icons/disc.svg +2 -2
  744. data/assets/bootstrap-icons/discord.svg +1 -1
  745. data/assets/bootstrap-icons/display-fill.svg +1 -1
  746. data/assets/bootstrap-icons/display.svg +1 -1
  747. data/assets/bootstrap-icons/displayport-fill.svg +1 -1
  748. data/assets/bootstrap-icons/displayport.svg +2 -2
  749. data/assets/bootstrap-icons/distribute-horizontal.svg +2 -2
  750. data/assets/bootstrap-icons/distribute-vertical.svg +2 -2
  751. data/assets/bootstrap-icons/door-closed-fill.svg +1 -1
  752. data/assets/bootstrap-icons/door-closed.svg +2 -2
  753. data/assets/bootstrap-icons/door-open-fill.svg +1 -1
  754. data/assets/bootstrap-icons/door-open.svg +2 -2
  755. data/assets/bootstrap-icons/dot.svg +1 -1
  756. data/assets/bootstrap-icons/download.svg +2 -2
  757. data/assets/bootstrap-icons/dpad-fill.svg +1 -1
  758. data/assets/bootstrap-icons/dpad.svg +1 -1
  759. data/assets/bootstrap-icons/dribbble.svg +1 -1
  760. data/assets/bootstrap-icons/dropbox.svg +1 -1
  761. data/assets/bootstrap-icons/droplet-fill.svg +1 -1
  762. data/assets/bootstrap-icons/droplet-half.svg +2 -2
  763. data/assets/bootstrap-icons/droplet.svg +2 -2
  764. data/assets/bootstrap-icons/duffle-fill.svg +3 -0
  765. data/assets/bootstrap-icons/duffle.svg +4 -0
  766. data/assets/bootstrap-icons/ear-fill.svg +1 -1
  767. data/assets/bootstrap-icons/ear.svg +1 -1
  768. data/assets/bootstrap-icons/earbuds.svg +1 -1
  769. data/assets/bootstrap-icons/easel-fill.svg +1 -1
  770. data/assets/bootstrap-icons/easel.svg +1 -1
  771. data/assets/bootstrap-icons/easel2-fill.svg +2 -2
  772. data/assets/bootstrap-icons/easel2.svg +1 -1
  773. data/assets/bootstrap-icons/easel3-fill.svg +1 -1
  774. data/assets/bootstrap-icons/easel3.svg +1 -1
  775. data/assets/bootstrap-icons/egg-fill.svg +1 -1
  776. data/assets/bootstrap-icons/egg-fried.svg +1 -1
  777. data/assets/bootstrap-icons/egg.svg +1 -1
  778. data/assets/bootstrap-icons/eject-fill.svg +1 -1
  779. data/assets/bootstrap-icons/eject.svg +1 -1
  780. data/assets/bootstrap-icons/emoji-angry-fill.svg +1 -1
  781. data/assets/bootstrap-icons/emoji-angry.svg +2 -2
  782. data/assets/bootstrap-icons/emoji-astonished-fill.svg +3 -0
  783. data/assets/bootstrap-icons/emoji-astonished.svg +4 -0
  784. data/assets/bootstrap-icons/emoji-dizzy-fill.svg +1 -1
  785. data/assets/bootstrap-icons/emoji-dizzy.svg +2 -2
  786. data/assets/bootstrap-icons/emoji-expressionless-fill.svg +1 -1
  787. data/assets/bootstrap-icons/emoji-expressionless.svg +2 -2
  788. data/assets/bootstrap-icons/emoji-frown-fill.svg +1 -1
  789. data/assets/bootstrap-icons/emoji-frown.svg +2 -2
  790. data/assets/bootstrap-icons/emoji-grimace-fill.svg +3 -0
  791. data/assets/bootstrap-icons/emoji-grimace.svg +4 -0
  792. data/assets/bootstrap-icons/emoji-grin-fill.svg +3 -0
  793. data/assets/bootstrap-icons/emoji-grin.svg +4 -0
  794. data/assets/bootstrap-icons/emoji-heart-eyes-fill.svg +1 -1
  795. data/assets/bootstrap-icons/emoji-heart-eyes.svg +2 -2
  796. data/assets/bootstrap-icons/emoji-kiss-fill.svg +1 -1
  797. data/assets/bootstrap-icons/emoji-kiss.svg +1 -1
  798. data/assets/bootstrap-icons/emoji-laughing-fill.svg +1 -1
  799. data/assets/bootstrap-icons/emoji-laughing.svg +2 -2
  800. data/assets/bootstrap-icons/emoji-neutral-fill.svg +1 -1
  801. data/assets/bootstrap-icons/emoji-neutral.svg +2 -2
  802. data/assets/bootstrap-icons/emoji-smile-fill.svg +1 -1
  803. data/assets/bootstrap-icons/emoji-smile-upside-down-fill.svg +1 -1
  804. data/assets/bootstrap-icons/emoji-smile-upside-down.svg +2 -2
  805. data/assets/bootstrap-icons/emoji-smile.svg +2 -2
  806. data/assets/bootstrap-icons/emoji-sunglasses-fill.svg +1 -1
  807. data/assets/bootstrap-icons/emoji-sunglasses.svg +2 -2
  808. data/assets/bootstrap-icons/emoji-surprise-fill.svg +3 -0
  809. data/assets/bootstrap-icons/emoji-surprise.svg +4 -0
  810. data/assets/bootstrap-icons/emoji-tear-fill.svg +3 -0
  811. data/assets/bootstrap-icons/emoji-tear.svg +4 -0
  812. data/assets/bootstrap-icons/emoji-wink-fill.svg +1 -1
  813. data/assets/bootstrap-icons/emoji-wink.svg +2 -2
  814. data/assets/bootstrap-icons/envelope-arrow-down-fill.svg +4 -0
  815. data/assets/bootstrap-icons/envelope-arrow-down.svg +4 -0
  816. data/assets/bootstrap-icons/envelope-arrow-up-fill.svg +4 -0
  817. data/assets/bootstrap-icons/envelope-arrow-up.svg +4 -0
  818. data/assets/bootstrap-icons/envelope-at-fill.svg +2 -2
  819. data/assets/bootstrap-icons/envelope-at.svg +2 -2
  820. data/assets/bootstrap-icons/envelope-check-fill.svg +2 -2
  821. data/assets/bootstrap-icons/envelope-check.svg +2 -2
  822. data/assets/bootstrap-icons/envelope-dash-fill.svg +2 -2
  823. data/assets/bootstrap-icons/envelope-dash.svg +2 -2
  824. data/assets/bootstrap-icons/envelope-exclamation-fill.svg +2 -2
  825. data/assets/bootstrap-icons/envelope-exclamation.svg +2 -2
  826. data/assets/bootstrap-icons/envelope-fill.svg +1 -1
  827. data/assets/bootstrap-icons/envelope-heart-fill.svg +2 -2
  828. data/assets/bootstrap-icons/envelope-heart.svg +1 -1
  829. data/assets/bootstrap-icons/envelope-open-fill.svg +1 -1
  830. data/assets/bootstrap-icons/envelope-open-heart-fill.svg +2 -2
  831. data/assets/bootstrap-icons/envelope-open-heart.svg +1 -1
  832. data/assets/bootstrap-icons/envelope-open.svg +1 -1
  833. data/assets/bootstrap-icons/envelope-paper-fill.svg +1 -1
  834. data/assets/bootstrap-icons/envelope-paper-heart-fill.svg +1 -1
  835. data/assets/bootstrap-icons/envelope-paper-heart.svg +1 -1
  836. data/assets/bootstrap-icons/envelope-paper.svg +1 -1
  837. data/assets/bootstrap-icons/envelope-plus-fill.svg +2 -2
  838. data/assets/bootstrap-icons/envelope-plus.svg +2 -2
  839. data/assets/bootstrap-icons/envelope-slash-fill.svg +2 -2
  840. data/assets/bootstrap-icons/envelope-slash.svg +2 -2
  841. data/assets/bootstrap-icons/envelope-x-fill.svg +2 -2
  842. data/assets/bootstrap-icons/envelope-x.svg +2 -2
  843. data/assets/bootstrap-icons/envelope.svg +1 -1
  844. data/assets/bootstrap-icons/eraser-fill.svg +1 -1
  845. data/assets/bootstrap-icons/eraser.svg +1 -1
  846. data/assets/bootstrap-icons/escape.svg +2 -2
  847. data/assets/bootstrap-icons/ethernet.svg +2 -2
  848. data/assets/bootstrap-icons/ev-front-fill.svg +1 -1
  849. data/assets/bootstrap-icons/ev-front.svg +2 -2
  850. data/assets/bootstrap-icons/ev-station-fill.svg +1 -1
  851. data/assets/bootstrap-icons/ev-station.svg +2 -2
  852. data/assets/bootstrap-icons/exclamation-circle-fill.svg +1 -1
  853. data/assets/bootstrap-icons/exclamation-circle.svg +2 -2
  854. data/assets/bootstrap-icons/exclamation-diamond-fill.svg +1 -1
  855. data/assets/bootstrap-icons/exclamation-diamond.svg +2 -2
  856. data/assets/bootstrap-icons/exclamation-lg.svg +1 -1
  857. data/assets/bootstrap-icons/exclamation-octagon-fill.svg +1 -1
  858. data/assets/bootstrap-icons/exclamation-octagon.svg +2 -2
  859. data/assets/bootstrap-icons/exclamation-square-fill.svg +1 -1
  860. data/assets/bootstrap-icons/exclamation-square.svg +2 -2
  861. data/assets/bootstrap-icons/exclamation-triangle-fill.svg +1 -1
  862. data/assets/bootstrap-icons/exclamation-triangle.svg +2 -2
  863. data/assets/bootstrap-icons/exclamation.svg +1 -1
  864. data/assets/bootstrap-icons/exclude.svg +1 -1
  865. data/assets/bootstrap-icons/explicit-fill.svg +1 -1
  866. data/assets/bootstrap-icons/explicit.svg +2 -2
  867. data/assets/bootstrap-icons/exposure.svg +4 -0
  868. data/assets/bootstrap-icons/eye-fill.svg +2 -2
  869. data/assets/bootstrap-icons/eye-slash-fill.svg +2 -2
  870. data/assets/bootstrap-icons/eye-slash.svg +3 -3
  871. data/assets/bootstrap-icons/eye.svg +2 -2
  872. data/assets/bootstrap-icons/eyedropper.svg +1 -1
  873. data/assets/bootstrap-icons/eyeglasses.svg +1 -1
  874. data/assets/bootstrap-icons/facebook.svg +1 -1
  875. data/assets/bootstrap-icons/fan.svg +2 -2
  876. data/assets/bootstrap-icons/fast-forward-btn-fill.svg +1 -1
  877. data/assets/bootstrap-icons/fast-forward-btn.svg +2 -2
  878. data/assets/bootstrap-icons/fast-forward-circle-fill.svg +1 -1
  879. data/assets/bootstrap-icons/fast-forward-circle.svg +2 -2
  880. data/assets/bootstrap-icons/fast-forward-fill.svg +2 -2
  881. data/assets/bootstrap-icons/fast-forward.svg +2 -2
  882. data/assets/bootstrap-icons/feather.svg +3 -0
  883. data/assets/bootstrap-icons/feather2.svg +3 -0
  884. data/assets/bootstrap-icons/file-arrow-down-fill.svg +1 -1
  885. data/assets/bootstrap-icons/file-arrow-down.svg +2 -2
  886. data/assets/bootstrap-icons/file-arrow-up-fill.svg +1 -1
  887. data/assets/bootstrap-icons/file-arrow-up.svg +2 -2
  888. data/assets/bootstrap-icons/file-bar-graph-fill.svg +1 -1
  889. data/assets/bootstrap-icons/file-bar-graph.svg +2 -2
  890. data/assets/bootstrap-icons/file-binary-fill.svg +2 -2
  891. data/assets/bootstrap-icons/file-binary.svg +2 -2
  892. data/assets/bootstrap-icons/file-break-fill.svg +1 -1
  893. data/assets/bootstrap-icons/file-break.svg +1 -1
  894. data/assets/bootstrap-icons/file-check-fill.svg +1 -1
  895. data/assets/bootstrap-icons/file-check.svg +2 -2
  896. data/assets/bootstrap-icons/file-code-fill.svg +1 -1
  897. data/assets/bootstrap-icons/file-code.svg +2 -2
  898. data/assets/bootstrap-icons/file-diff-fill.svg +1 -1
  899. data/assets/bootstrap-icons/file-diff.svg +2 -2
  900. data/assets/bootstrap-icons/file-earmark-arrow-down-fill.svg +1 -1
  901. data/assets/bootstrap-icons/file-earmark-arrow-down.svg +2 -2
  902. data/assets/bootstrap-icons/file-earmark-arrow-up-fill.svg +1 -1
  903. data/assets/bootstrap-icons/file-earmark-arrow-up.svg +2 -2
  904. data/assets/bootstrap-icons/file-earmark-bar-graph-fill.svg +1 -1
  905. data/assets/bootstrap-icons/file-earmark-bar-graph.svg +2 -2
  906. data/assets/bootstrap-icons/file-earmark-binary-fill.svg +2 -2
  907. data/assets/bootstrap-icons/file-earmark-binary.svg +2 -2
  908. data/assets/bootstrap-icons/file-earmark-break-fill.svg +1 -1
  909. data/assets/bootstrap-icons/file-earmark-break.svg +1 -1
  910. data/assets/bootstrap-icons/file-earmark-check-fill.svg +1 -1
  911. data/assets/bootstrap-icons/file-earmark-check.svg +2 -2
  912. data/assets/bootstrap-icons/file-earmark-code-fill.svg +1 -1
  913. data/assets/bootstrap-icons/file-earmark-code.svg +2 -2
  914. data/assets/bootstrap-icons/file-earmark-diff-fill.svg +1 -1
  915. data/assets/bootstrap-icons/file-earmark-diff.svg +2 -2
  916. data/assets/bootstrap-icons/file-earmark-easel-fill.svg +2 -2
  917. data/assets/bootstrap-icons/file-earmark-easel.svg +2 -2
  918. data/assets/bootstrap-icons/file-earmark-excel-fill.svg +1 -1
  919. data/assets/bootstrap-icons/file-earmark-excel.svg +1 -1
  920. data/assets/bootstrap-icons/file-earmark-fill.svg +1 -1
  921. data/assets/bootstrap-icons/file-earmark-font-fill.svg +1 -1
  922. data/assets/bootstrap-icons/file-earmark-font.svg +1 -1
  923. data/assets/bootstrap-icons/file-earmark-image-fill.svg +1 -1
  924. data/assets/bootstrap-icons/file-earmark-image.svg +2 -2
  925. data/assets/bootstrap-icons/file-earmark-lock-fill.svg +2 -2
  926. data/assets/bootstrap-icons/file-earmark-lock.svg +2 -2
  927. data/assets/bootstrap-icons/file-earmark-lock2-fill.svg +2 -2
  928. data/assets/bootstrap-icons/file-earmark-lock2.svg +2 -2
  929. data/assets/bootstrap-icons/file-earmark-medical-fill.svg +1 -1
  930. data/assets/bootstrap-icons/file-earmark-medical.svg +2 -2
  931. data/assets/bootstrap-icons/file-earmark-minus-fill.svg +1 -1
  932. data/assets/bootstrap-icons/file-earmark-minus.svg +2 -2
  933. data/assets/bootstrap-icons/file-earmark-music-fill.svg +1 -1
  934. data/assets/bootstrap-icons/file-earmark-music.svg +2 -2
  935. data/assets/bootstrap-icons/file-earmark-pdf-fill.svg +2 -2
  936. data/assets/bootstrap-icons/file-earmark-pdf.svg +2 -2
  937. data/assets/bootstrap-icons/file-earmark-person-fill.svg +1 -1
  938. data/assets/bootstrap-icons/file-earmark-person.svg +2 -2
  939. data/assets/bootstrap-icons/file-earmark-play-fill.svg +1 -1
  940. data/assets/bootstrap-icons/file-earmark-play.svg +1 -1
  941. data/assets/bootstrap-icons/file-earmark-plus-fill.svg +1 -1
  942. data/assets/bootstrap-icons/file-earmark-plus.svg +2 -2
  943. data/assets/bootstrap-icons/file-earmark-post-fill.svg +1 -1
  944. data/assets/bootstrap-icons/file-earmark-post.svg +2 -2
  945. data/assets/bootstrap-icons/file-earmark-ppt-fill.svg +2 -2
  946. data/assets/bootstrap-icons/file-earmark-ppt.svg +2 -2
  947. data/assets/bootstrap-icons/file-earmark-richtext-fill.svg +1 -1
  948. data/assets/bootstrap-icons/file-earmark-richtext.svg +2 -2
  949. data/assets/bootstrap-icons/file-earmark-ruled-fill.svg +1 -1
  950. data/assets/bootstrap-icons/file-earmark-ruled.svg +1 -1
  951. data/assets/bootstrap-icons/file-earmark-slides-fill.svg +1 -1
  952. data/assets/bootstrap-icons/file-earmark-slides.svg +2 -2
  953. data/assets/bootstrap-icons/file-earmark-spreadsheet-fill.svg +2 -2
  954. data/assets/bootstrap-icons/file-earmark-spreadsheet.svg +1 -1
  955. data/assets/bootstrap-icons/file-earmark-text-fill.svg +1 -1
  956. data/assets/bootstrap-icons/file-earmark-text.svg +2 -2
  957. data/assets/bootstrap-icons/file-earmark-word-fill.svg +1 -1
  958. data/assets/bootstrap-icons/file-earmark-word.svg +1 -1
  959. data/assets/bootstrap-icons/file-earmark-x-fill.svg +1 -1
  960. data/assets/bootstrap-icons/file-earmark-x.svg +2 -2
  961. data/assets/bootstrap-icons/file-earmark-zip-fill.svg +2 -2
  962. data/assets/bootstrap-icons/file-earmark-zip.svg +2 -2
  963. data/assets/bootstrap-icons/file-earmark.svg +1 -1
  964. data/assets/bootstrap-icons/file-easel-fill.svg +2 -2
  965. data/assets/bootstrap-icons/file-easel.svg +2 -2
  966. data/assets/bootstrap-icons/file-excel-fill.svg +1 -1
  967. data/assets/bootstrap-icons/file-excel.svg +2 -2
  968. data/assets/bootstrap-icons/file-fill.svg +1 -1
  969. data/assets/bootstrap-icons/file-font-fill.svg +1 -1
  970. data/assets/bootstrap-icons/file-font.svg +1 -1
  971. data/assets/bootstrap-icons/file-image-fill.svg +1 -1
  972. data/assets/bootstrap-icons/file-image.svg +2 -2
  973. data/assets/bootstrap-icons/file-lock-fill.svg +2 -2
  974. data/assets/bootstrap-icons/file-lock.svg +2 -2
  975. data/assets/bootstrap-icons/file-lock2-fill.svg +2 -2
  976. data/assets/bootstrap-icons/file-lock2.svg +2 -2
  977. data/assets/bootstrap-icons/file-medical-fill.svg +1 -1
  978. data/assets/bootstrap-icons/file-medical.svg +2 -2
  979. data/assets/bootstrap-icons/file-minus-fill.svg +1 -1
  980. data/assets/bootstrap-icons/file-minus.svg +2 -2
  981. data/assets/bootstrap-icons/file-music-fill.svg +1 -1
  982. data/assets/bootstrap-icons/file-music.svg +2 -2
  983. data/assets/bootstrap-icons/file-pdf-fill.svg +2 -2
  984. data/assets/bootstrap-icons/file-pdf.svg +2 -2
  985. data/assets/bootstrap-icons/file-person-fill.svg +1 -1
  986. data/assets/bootstrap-icons/file-person.svg +2 -2
  987. data/assets/bootstrap-icons/file-play-fill.svg +1 -1
  988. data/assets/bootstrap-icons/file-play.svg +1 -1
  989. data/assets/bootstrap-icons/file-plus-fill.svg +1 -1
  990. data/assets/bootstrap-icons/file-plus.svg +2 -2
  991. data/assets/bootstrap-icons/file-post-fill.svg +1 -1
  992. data/assets/bootstrap-icons/file-post.svg +2 -2
  993. data/assets/bootstrap-icons/file-ppt-fill.svg +2 -2
  994. data/assets/bootstrap-icons/file-ppt.svg +2 -2
  995. data/assets/bootstrap-icons/file-richtext-fill.svg +1 -1
  996. data/assets/bootstrap-icons/file-richtext.svg +2 -2
  997. data/assets/bootstrap-icons/file-ruled-fill.svg +1 -1
  998. data/assets/bootstrap-icons/file-ruled.svg +1 -1
  999. data/assets/bootstrap-icons/file-slides-fill.svg +1 -1
  1000. data/assets/bootstrap-icons/file-slides.svg +2 -2
  1001. data/assets/bootstrap-icons/file-spreadsheet-fill.svg +1 -1
  1002. data/assets/bootstrap-icons/file-spreadsheet.svg +1 -1
  1003. data/assets/bootstrap-icons/file-text-fill.svg +1 -1
  1004. data/assets/bootstrap-icons/file-text.svg +2 -2
  1005. data/assets/bootstrap-icons/file-word-fill.svg +1 -1
  1006. data/assets/bootstrap-icons/file-word.svg +1 -1
  1007. data/assets/bootstrap-icons/file-x-fill.svg +1 -1
  1008. data/assets/bootstrap-icons/file-x.svg +2 -2
  1009. data/assets/bootstrap-icons/file-zip-fill.svg +2 -2
  1010. data/assets/bootstrap-icons/file-zip.svg +2 -2
  1011. data/assets/bootstrap-icons/file.svg +1 -1
  1012. data/assets/bootstrap-icons/files-alt.svg +1 -1
  1013. data/assets/bootstrap-icons/files.svg +1 -1
  1014. data/assets/bootstrap-icons/filetype-aac.svg +1 -1
  1015. data/assets/bootstrap-icons/filetype-ai.svg +1 -1
  1016. data/assets/bootstrap-icons/filetype-bmp.svg +1 -1
  1017. data/assets/bootstrap-icons/filetype-cs.svg +1 -1
  1018. data/assets/bootstrap-icons/filetype-css.svg +1 -1
  1019. data/assets/bootstrap-icons/filetype-csv.svg +1 -1
  1020. data/assets/bootstrap-icons/filetype-doc.svg +1 -1
  1021. data/assets/bootstrap-icons/filetype-docx.svg +1 -1
  1022. data/assets/bootstrap-icons/filetype-exe.svg +1 -1
  1023. data/assets/bootstrap-icons/filetype-gif.svg +1 -1
  1024. data/assets/bootstrap-icons/filetype-heic.svg +1 -1
  1025. data/assets/bootstrap-icons/filetype-html.svg +1 -1
  1026. data/assets/bootstrap-icons/filetype-java.svg +1 -1
  1027. data/assets/bootstrap-icons/filetype-jpg.svg +1 -1
  1028. data/assets/bootstrap-icons/filetype-js.svg +1 -1
  1029. data/assets/bootstrap-icons/filetype-json.svg +1 -1
  1030. data/assets/bootstrap-icons/filetype-jsx.svg +1 -1
  1031. data/assets/bootstrap-icons/filetype-key.svg +1 -1
  1032. data/assets/bootstrap-icons/filetype-m4p.svg +1 -1
  1033. data/assets/bootstrap-icons/filetype-md.svg +1 -1
  1034. data/assets/bootstrap-icons/filetype-mdx.svg +1 -1
  1035. data/assets/bootstrap-icons/filetype-mov.svg +1 -1
  1036. data/assets/bootstrap-icons/filetype-mp3.svg +1 -1
  1037. data/assets/bootstrap-icons/filetype-mp4.svg +1 -1
  1038. data/assets/bootstrap-icons/filetype-otf.svg +1 -1
  1039. data/assets/bootstrap-icons/filetype-pdf.svg +1 -1
  1040. data/assets/bootstrap-icons/filetype-php.svg +1 -1
  1041. data/assets/bootstrap-icons/filetype-png.svg +1 -1
  1042. data/assets/bootstrap-icons/filetype-ppt.svg +1 -1
  1043. data/assets/bootstrap-icons/filetype-pptx.svg +1 -1
  1044. data/assets/bootstrap-icons/filetype-psd.svg +1 -1
  1045. data/assets/bootstrap-icons/filetype-py.svg +1 -1
  1046. data/assets/bootstrap-icons/filetype-raw.svg +1 -1
  1047. data/assets/bootstrap-icons/filetype-rb.svg +1 -1
  1048. data/assets/bootstrap-icons/filetype-sass.svg +1 -1
  1049. data/assets/bootstrap-icons/filetype-scss.svg +1 -1
  1050. data/assets/bootstrap-icons/filetype-sh.svg +1 -1
  1051. data/assets/bootstrap-icons/filetype-sql.svg +1 -1
  1052. data/assets/bootstrap-icons/filetype-svg.svg +1 -1
  1053. data/assets/bootstrap-icons/filetype-tiff.svg +1 -1
  1054. data/assets/bootstrap-icons/filetype-tsx.svg +1 -1
  1055. data/assets/bootstrap-icons/filetype-ttf.svg +1 -1
  1056. data/assets/bootstrap-icons/filetype-txt.svg +1 -1
  1057. data/assets/bootstrap-icons/filetype-wav.svg +1 -1
  1058. data/assets/bootstrap-icons/filetype-woff.svg +1 -1
  1059. data/assets/bootstrap-icons/filetype-xls.svg +1 -1
  1060. data/assets/bootstrap-icons/filetype-xlsx.svg +1 -1
  1061. data/assets/bootstrap-icons/filetype-xml.svg +1 -1
  1062. data/assets/bootstrap-icons/filetype-yml.svg +1 -1
  1063. data/assets/bootstrap-icons/film.svg +1 -1
  1064. data/assets/bootstrap-icons/filter-circle-fill.svg +1 -1
  1065. data/assets/bootstrap-icons/filter-circle.svg +2 -2
  1066. data/assets/bootstrap-icons/filter-left.svg +1 -1
  1067. data/assets/bootstrap-icons/filter-right.svg +1 -1
  1068. data/assets/bootstrap-icons/filter-square-fill.svg +1 -1
  1069. data/assets/bootstrap-icons/filter-square.svg +2 -2
  1070. data/assets/bootstrap-icons/filter.svg +1 -1
  1071. data/assets/bootstrap-icons/fingerprint.svg +4 -4
  1072. data/assets/bootstrap-icons/fire.svg +1 -1
  1073. data/assets/bootstrap-icons/flag-fill.svg +1 -1
  1074. data/assets/bootstrap-icons/flag.svg +1 -1
  1075. data/assets/bootstrap-icons/floppy-fill.svg +4 -0
  1076. data/assets/bootstrap-icons/floppy.svg +4 -0
  1077. data/assets/bootstrap-icons/floppy2-fill.svg +4 -0
  1078. data/assets/bootstrap-icons/floppy2.svg +3 -0
  1079. data/assets/bootstrap-icons/flower1.svg +1 -1
  1080. data/assets/bootstrap-icons/flower2.svg +1 -1
  1081. data/assets/bootstrap-icons/flower3.svg +1 -1
  1082. data/assets/bootstrap-icons/folder-check.svg +2 -2
  1083. data/assets/bootstrap-icons/folder-fill.svg +1 -1
  1084. data/assets/bootstrap-icons/folder-minus.svg +2 -2
  1085. data/assets/bootstrap-icons/folder-plus.svg +2 -2
  1086. data/assets/bootstrap-icons/folder-symlink-fill.svg +1 -1
  1087. data/assets/bootstrap-icons/folder-symlink.svg +2 -2
  1088. data/assets/bootstrap-icons/folder-x.svg +2 -2
  1089. data/assets/bootstrap-icons/folder.svg +1 -1
  1090. data/assets/bootstrap-icons/folder2-open.svg +1 -1
  1091. data/assets/bootstrap-icons/folder2.svg +1 -1
  1092. data/assets/bootstrap-icons/font/bootstrap-icons.css +2078 -0
  1093. data/assets/bootstrap-icons/font/bootstrap-icons.json +2052 -0
  1094. data/assets/bootstrap-icons/font/bootstrap-icons.min.css +5 -0
  1095. data/assets/bootstrap-icons/font/bootstrap-icons.scss +2090 -0
  1096. data/assets/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
  1097. data/assets/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
  1098. data/assets/bootstrap-icons/fonts.svg +1 -1
  1099. data/assets/bootstrap-icons/forward-fill.svg +1 -1
  1100. data/assets/bootstrap-icons/forward.svg +1 -1
  1101. data/assets/bootstrap-icons/front.svg +1 -1
  1102. data/assets/bootstrap-icons/fuel-pump-diesel-fill.svg +2 -2
  1103. data/assets/bootstrap-icons/fuel-pump-diesel.svg +2 -2
  1104. data/assets/bootstrap-icons/fuel-pump-fill.svg +1 -1
  1105. data/assets/bootstrap-icons/fuel-pump.svg +2 -2
  1106. data/assets/bootstrap-icons/fullscreen-exit.svg +1 -1
  1107. data/assets/bootstrap-icons/fullscreen.svg +1 -1
  1108. data/assets/bootstrap-icons/funnel-fill.svg +1 -1
  1109. data/assets/bootstrap-icons/funnel.svg +1 -1
  1110. data/assets/bootstrap-icons/gear-fill.svg +1 -1
  1111. data/assets/bootstrap-icons/gear-wide-connected.svg +1 -1
  1112. data/assets/bootstrap-icons/gear-wide.svg +1 -1
  1113. data/assets/bootstrap-icons/gear.svg +2 -2
  1114. data/assets/bootstrap-icons/gem.svg +1 -1
  1115. data/assets/bootstrap-icons/gender-ambiguous.svg +1 -1
  1116. data/assets/bootstrap-icons/gender-female.svg +1 -1
  1117. data/assets/bootstrap-icons/gender-male.svg +1 -1
  1118. data/assets/bootstrap-icons/gender-neuter.svg +3 -0
  1119. data/assets/bootstrap-icons/gender-trans.svg +1 -1
  1120. data/assets/bootstrap-icons/geo-alt-fill.svg +1 -1
  1121. data/assets/bootstrap-icons/geo-alt.svg +2 -2
  1122. data/assets/bootstrap-icons/geo-fill.svg +1 -1
  1123. data/assets/bootstrap-icons/geo.svg +1 -1
  1124. data/assets/bootstrap-icons/gift-fill.svg +1 -1
  1125. data/assets/bootstrap-icons/gift.svg +1 -1
  1126. data/assets/bootstrap-icons/git.svg +1 -1
  1127. data/assets/bootstrap-icons/github.svg +1 -1
  1128. data/assets/bootstrap-icons/gitlab.svg +3 -0
  1129. data/assets/bootstrap-icons/globe-americas.svg +1 -1
  1130. data/assets/bootstrap-icons/globe-asia-australia.svg +2 -2
  1131. data/assets/bootstrap-icons/globe-central-south-asia.svg +1 -1
  1132. data/assets/bootstrap-icons/globe-europe-africa.svg +1 -1
  1133. data/assets/bootstrap-icons/globe.svg +1 -1
  1134. data/assets/bootstrap-icons/globe2.svg +1 -1
  1135. data/assets/bootstrap-icons/google-play.svg +1 -1
  1136. data/assets/bootstrap-icons/google.svg +1 -1
  1137. data/assets/bootstrap-icons/gpu-card.svg +3 -3
  1138. data/assets/bootstrap-icons/graph-down-arrow.svg +1 -1
  1139. data/assets/bootstrap-icons/graph-down.svg +1 -1
  1140. data/assets/bootstrap-icons/graph-up-arrow.svg +1 -1
  1141. data/assets/bootstrap-icons/graph-up.svg +1 -1
  1142. data/assets/bootstrap-icons/grid-1x2-fill.svg +1 -1
  1143. data/assets/bootstrap-icons/grid-1x2.svg +1 -1
  1144. data/assets/bootstrap-icons/grid-3x2-gap-fill.svg +1 -1
  1145. data/assets/bootstrap-icons/grid-3x2-gap.svg +1 -1
  1146. data/assets/bootstrap-icons/grid-3x2.svg +1 -1
  1147. data/assets/bootstrap-icons/grid-3x3-gap-fill.svg +1 -1
  1148. data/assets/bootstrap-icons/grid-3x3-gap.svg +1 -1
  1149. data/assets/bootstrap-icons/grid-3x3.svg +1 -1
  1150. data/assets/bootstrap-icons/grid-fill.svg +1 -1
  1151. data/assets/bootstrap-icons/grid.svg +1 -1
  1152. data/assets/bootstrap-icons/grip-horizontal.svg +1 -1
  1153. data/assets/bootstrap-icons/grip-vertical.svg +1 -1
  1154. data/assets/bootstrap-icons/h-circle-fill.svg +1 -1
  1155. data/assets/bootstrap-icons/h-circle.svg +1 -1
  1156. data/assets/bootstrap-icons/h-square-fill.svg +1 -1
  1157. data/assets/bootstrap-icons/h-square.svg +2 -2
  1158. data/assets/bootstrap-icons/hammer.svg +1 -1
  1159. data/assets/bootstrap-icons/hand-index-fill.svg +1 -1
  1160. data/assets/bootstrap-icons/hand-index-thumb-fill.svg +1 -1
  1161. data/assets/bootstrap-icons/hand-index-thumb.svg +1 -1
  1162. data/assets/bootstrap-icons/hand-index.svg +1 -1
  1163. data/assets/bootstrap-icons/hand-thumbs-down-fill.svg +1 -1
  1164. data/assets/bootstrap-icons/hand-thumbs-down.svg +1 -1
  1165. data/assets/bootstrap-icons/hand-thumbs-up-fill.svg +1 -1
  1166. data/assets/bootstrap-icons/hand-thumbs-up.svg +1 -1
  1167. data/assets/bootstrap-icons/handbag-fill.svg +1 -1
  1168. data/assets/bootstrap-icons/handbag.svg +1 -1
  1169. data/assets/bootstrap-icons/hash.svg +1 -1
  1170. data/assets/bootstrap-icons/hdd-fill.svg +1 -1
  1171. data/assets/bootstrap-icons/hdd-network-fill.svg +1 -1
  1172. data/assets/bootstrap-icons/hdd-network.svg +2 -2
  1173. data/assets/bootstrap-icons/hdd-rack-fill.svg +1 -1
  1174. data/assets/bootstrap-icons/hdd-rack.svg +2 -2
  1175. data/assets/bootstrap-icons/hdd-stack-fill.svg +1 -1
  1176. data/assets/bootstrap-icons/hdd-stack.svg +3 -3
  1177. data/assets/bootstrap-icons/hdd.svg +2 -2
  1178. data/assets/bootstrap-icons/hdmi-fill.svg +1 -1
  1179. data/assets/bootstrap-icons/hdmi.svg +2 -2
  1180. data/assets/bootstrap-icons/headphones.svg +1 -1
  1181. data/assets/bootstrap-icons/headset-vr.svg +2 -2
  1182. data/assets/bootstrap-icons/headset.svg +1 -1
  1183. data/assets/bootstrap-icons/heart-arrow.svg +1 -1
  1184. data/assets/bootstrap-icons/heart-fill.svg +1 -1
  1185. data/assets/bootstrap-icons/heart-half.svg +1 -1
  1186. data/assets/bootstrap-icons/heart-pulse-fill.svg +2 -2
  1187. data/assets/bootstrap-icons/heart-pulse.svg +2 -2
  1188. data/assets/bootstrap-icons/heart.svg +1 -1
  1189. data/assets/bootstrap-icons/heartbreak-fill.svg +1 -1
  1190. data/assets/bootstrap-icons/heartbreak.svg +1 -1
  1191. data/assets/bootstrap-icons/hearts.svg +1 -1
  1192. data/assets/bootstrap-icons/heptagon-fill.svg +1 -1
  1193. data/assets/bootstrap-icons/heptagon-half.svg +1 -1
  1194. data/assets/bootstrap-icons/heptagon.svg +1 -1
  1195. data/assets/bootstrap-icons/hexagon-fill.svg +1 -1
  1196. data/assets/bootstrap-icons/hexagon-half.svg +1 -1
  1197. data/assets/bootstrap-icons/hexagon.svg +1 -1
  1198. data/assets/bootstrap-icons/highlighter.svg +3 -0
  1199. data/assets/bootstrap-icons/highlights.svg +3 -0
  1200. data/assets/bootstrap-icons/hospital-fill.svg +1 -1
  1201. data/assets/bootstrap-icons/hospital.svg +2 -2
  1202. data/assets/bootstrap-icons/hourglass-bottom.svg +1 -1
  1203. data/assets/bootstrap-icons/hourglass-split.svg +1 -1
  1204. data/assets/bootstrap-icons/hourglass-top.svg +1 -1
  1205. data/assets/bootstrap-icons/hourglass.svg +1 -1
  1206. data/assets/bootstrap-icons/house-add-fill.svg +3 -3
  1207. data/assets/bootstrap-icons/house-add.svg +2 -2
  1208. data/assets/bootstrap-icons/house-check-fill.svg +3 -3
  1209. data/assets/bootstrap-icons/house-check.svg +2 -2
  1210. data/assets/bootstrap-icons/house-dash-fill.svg +3 -3
  1211. data/assets/bootstrap-icons/house-dash.svg +2 -2
  1212. data/assets/bootstrap-icons/house-door-fill.svg +1 -1
  1213. data/assets/bootstrap-icons/house-door.svg +1 -1
  1214. data/assets/bootstrap-icons/house-down-fill.svg +3 -3
  1215. data/assets/bootstrap-icons/house-down.svg +2 -2
  1216. data/assets/bootstrap-icons/house-exclamation-fill.svg +3 -3
  1217. data/assets/bootstrap-icons/house-exclamation.svg +2 -2
  1218. data/assets/bootstrap-icons/house-fill.svg +2 -2
  1219. data/assets/bootstrap-icons/house-gear-fill.svg +3 -3
  1220. data/assets/bootstrap-icons/house-gear.svg +2 -2
  1221. data/assets/bootstrap-icons/house-heart-fill.svg +2 -2
  1222. data/assets/bootstrap-icons/house-heart.svg +2 -2
  1223. data/assets/bootstrap-icons/house-lock-fill.svg +3 -3
  1224. data/assets/bootstrap-icons/house-lock.svg +2 -2
  1225. data/assets/bootstrap-icons/house-slash-fill.svg +3 -3
  1226. data/assets/bootstrap-icons/house-slash.svg +2 -2
  1227. data/assets/bootstrap-icons/house-up-fill.svg +3 -3
  1228. data/assets/bootstrap-icons/house-up.svg +2 -2
  1229. data/assets/bootstrap-icons/house-x-fill.svg +3 -3
  1230. data/assets/bootstrap-icons/house-x.svg +2 -2
  1231. data/assets/bootstrap-icons/house.svg +1 -1
  1232. data/assets/bootstrap-icons/houses-fill.svg +2 -2
  1233. data/assets/bootstrap-icons/houses.svg +1 -1
  1234. data/assets/bootstrap-icons/hr.svg +1 -1
  1235. data/assets/bootstrap-icons/hurricane.svg +1 -1
  1236. data/assets/bootstrap-icons/hypnotize.svg +2 -2
  1237. data/assets/bootstrap-icons/image-alt.svg +1 -1
  1238. data/assets/bootstrap-icons/image-fill.svg +1 -1
  1239. data/assets/bootstrap-icons/image.svg +2 -2
  1240. data/assets/bootstrap-icons/images.svg +2 -2
  1241. data/assets/bootstrap-icons/inbox-fill.svg +1 -1
  1242. data/assets/bootstrap-icons/inbox.svg +1 -1
  1243. data/assets/bootstrap-icons/inboxes-fill.svg +1 -1
  1244. data/assets/bootstrap-icons/inboxes.svg +1 -1
  1245. data/assets/bootstrap-icons/incognito.svg +1 -1
  1246. data/assets/bootstrap-icons/indent.svg +2 -2
  1247. data/assets/bootstrap-icons/infinity.svg +1 -1
  1248. data/assets/bootstrap-icons/info-circle-fill.svg +1 -1
  1249. data/assets/bootstrap-icons/info-circle.svg +2 -2
  1250. data/assets/bootstrap-icons/info-lg.svg +1 -1
  1251. data/assets/bootstrap-icons/info-square-fill.svg +1 -1
  1252. data/assets/bootstrap-icons/info-square.svg +2 -2
  1253. data/assets/bootstrap-icons/info.svg +1 -1
  1254. data/assets/bootstrap-icons/input-cursor-text.svg +2 -2
  1255. data/assets/bootstrap-icons/input-cursor.svg +2 -2
  1256. data/assets/bootstrap-icons/instagram.svg +1 -1
  1257. data/assets/bootstrap-icons/intersect.svg +1 -1
  1258. data/assets/bootstrap-icons/journal-album.svg +3 -3
  1259. data/assets/bootstrap-icons/journal-arrow-down.svg +3 -3
  1260. data/assets/bootstrap-icons/journal-arrow-up.svg +3 -3
  1261. data/assets/bootstrap-icons/journal-bookmark-fill.svg +3 -3
  1262. data/assets/bootstrap-icons/journal-bookmark.svg +3 -3
  1263. data/assets/bootstrap-icons/journal-check.svg +3 -3
  1264. data/assets/bootstrap-icons/journal-code.svg +3 -3
  1265. data/assets/bootstrap-icons/journal-medical.svg +3 -3
  1266. data/assets/bootstrap-icons/journal-minus.svg +3 -3
  1267. data/assets/bootstrap-icons/journal-plus.svg +3 -3
  1268. data/assets/bootstrap-icons/journal-richtext.svg +3 -3
  1269. data/assets/bootstrap-icons/journal-text.svg +3 -3
  1270. data/assets/bootstrap-icons/journal-x.svg +3 -3
  1271. data/assets/bootstrap-icons/journal.svg +2 -2
  1272. data/assets/bootstrap-icons/journals.svg +2 -2
  1273. data/assets/bootstrap-icons/joystick.svg +2 -2
  1274. data/assets/bootstrap-icons/justify-left.svg +1 -1
  1275. data/assets/bootstrap-icons/justify-right.svg +1 -1
  1276. data/assets/bootstrap-icons/justify.svg +1 -1
  1277. data/assets/bootstrap-icons/kanban-fill.svg +1 -1
  1278. data/assets/bootstrap-icons/kanban.svg +2 -2
  1279. data/assets/bootstrap-icons/key-fill.svg +1 -1
  1280. data/assets/bootstrap-icons/key.svg +2 -2
  1281. data/assets/bootstrap-icons/keyboard-fill.svg +1 -1
  1282. data/assets/bootstrap-icons/keyboard.svg +2 -2
  1283. data/assets/bootstrap-icons/ladder.svg +1 -1
  1284. data/assets/bootstrap-icons/lamp-fill.svg +2 -2
  1285. data/assets/bootstrap-icons/lamp.svg +2 -2
  1286. data/assets/bootstrap-icons/laptop-fill.svg +1 -1
  1287. data/assets/bootstrap-icons/laptop.svg +1 -1
  1288. data/assets/bootstrap-icons/layer-backward.svg +2 -2
  1289. data/assets/bootstrap-icons/layer-forward.svg +2 -2
  1290. data/assets/bootstrap-icons/layers-fill.svg +2 -2
  1291. data/assets/bootstrap-icons/layers-half.svg +1 -1
  1292. data/assets/bootstrap-icons/layers.svg +1 -1
  1293. data/assets/bootstrap-icons/layout-sidebar-inset-reverse.svg +2 -2
  1294. data/assets/bootstrap-icons/layout-sidebar-inset.svg +2 -2
  1295. data/assets/bootstrap-icons/layout-sidebar-reverse.svg +1 -1
  1296. data/assets/bootstrap-icons/layout-sidebar.svg +1 -1
  1297. data/assets/bootstrap-icons/layout-split.svg +1 -1
  1298. data/assets/bootstrap-icons/layout-text-sidebar-reverse.svg +2 -2
  1299. data/assets/bootstrap-icons/layout-text-sidebar.svg +2 -2
  1300. data/assets/bootstrap-icons/layout-text-window-reverse.svg +2 -2
  1301. data/assets/bootstrap-icons/layout-text-window.svg +2 -2
  1302. data/assets/bootstrap-icons/layout-three-columns.svg +1 -1
  1303. data/assets/bootstrap-icons/layout-wtf.svg +1 -1
  1304. data/assets/bootstrap-icons/life-preserver.svg +1 -1
  1305. data/assets/bootstrap-icons/lightbulb-fill.svg +1 -1
  1306. data/assets/bootstrap-icons/lightbulb-off-fill.svg +1 -1
  1307. data/assets/bootstrap-icons/lightbulb-off.svg +1 -1
  1308. data/assets/bootstrap-icons/lightbulb.svg +1 -1
  1309. data/assets/bootstrap-icons/lightning-charge.svg +1 -1
  1310. data/assets/bootstrap-icons/lightning-fill.svg +1 -1
  1311. data/assets/bootstrap-icons/lightning.svg +1 -1
  1312. data/assets/bootstrap-icons/line.svg +1 -1
  1313. data/assets/bootstrap-icons/link-45deg.svg +2 -2
  1314. data/assets/bootstrap-icons/link.svg +2 -2
  1315. data/assets/bootstrap-icons/linkedin.svg +1 -1
  1316. data/assets/bootstrap-icons/list-check.svg +1 -1
  1317. data/assets/bootstrap-icons/list-columns-reverse.svg +1 -1
  1318. data/assets/bootstrap-icons/list-columns.svg +1 -1
  1319. data/assets/bootstrap-icons/list-nested.svg +1 -1
  1320. data/assets/bootstrap-icons/list-ol.svg +2 -2
  1321. data/assets/bootstrap-icons/list-stars.svg +2 -2
  1322. data/assets/bootstrap-icons/list-task.svg +3 -3
  1323. data/assets/bootstrap-icons/list-ul.svg +1 -1
  1324. data/assets/bootstrap-icons/list.svg +1 -1
  1325. data/assets/bootstrap-icons/lock-fill.svg +1 -1
  1326. data/assets/bootstrap-icons/lock.svg +1 -1
  1327. data/assets/bootstrap-icons/luggage-fill.svg +4 -0
  1328. data/assets/bootstrap-icons/luggage.svg +4 -0
  1329. data/assets/bootstrap-icons/lungs-fill.svg +1 -1
  1330. data/assets/bootstrap-icons/lungs.svg +1 -1
  1331. data/assets/bootstrap-icons/magic.svg +1 -1
  1332. data/assets/bootstrap-icons/magnet-fill.svg +1 -1
  1333. data/assets/bootstrap-icons/magnet.svg +1 -1
  1334. data/assets/bootstrap-icons/mailbox-flag.svg +4 -0
  1335. data/assets/bootstrap-icons/mailbox.svg +2 -2
  1336. data/assets/bootstrap-icons/mailbox2-flag.svg +4 -0
  1337. data/assets/bootstrap-icons/mailbox2.svg +2 -2
  1338. data/assets/bootstrap-icons/map-fill.svg +1 -1
  1339. data/assets/bootstrap-icons/map.svg +1 -1
  1340. data/assets/bootstrap-icons/markdown-fill.svg +1 -1
  1341. data/assets/bootstrap-icons/markdown.svg +4 -4
  1342. data/assets/bootstrap-icons/marker-tip.svg +3 -0
  1343. data/assets/bootstrap-icons/mask.svg +1 -1
  1344. data/assets/bootstrap-icons/mastodon.svg +1 -1
  1345. data/assets/bootstrap-icons/medium.svg +1 -1
  1346. data/assets/bootstrap-icons/megaphone-fill.svg +1 -1
  1347. data/assets/bootstrap-icons/megaphone.svg +1 -1
  1348. data/assets/bootstrap-icons/memory.svg +1 -1
  1349. data/assets/bootstrap-icons/menu-app-fill.svg +1 -1
  1350. data/assets/bootstrap-icons/menu-app.svg +1 -1
  1351. data/assets/bootstrap-icons/menu-button-fill.svg +1 -1
  1352. data/assets/bootstrap-icons/menu-button-wide-fill.svg +1 -1
  1353. data/assets/bootstrap-icons/menu-button-wide.svg +2 -2
  1354. data/assets/bootstrap-icons/menu-button.svg +2 -2
  1355. data/assets/bootstrap-icons/menu-down.svg +1 -1
  1356. data/assets/bootstrap-icons/menu-up.svg +1 -1
  1357. data/assets/bootstrap-icons/messenger.svg +1 -1
  1358. data/assets/bootstrap-icons/meta.svg +1 -1
  1359. data/assets/bootstrap-icons/mic-fill.svg +2 -2
  1360. data/assets/bootstrap-icons/mic-mute-fill.svg +2 -2
  1361. data/assets/bootstrap-icons/mic-mute.svg +2 -2
  1362. data/assets/bootstrap-icons/mic.svg +2 -2
  1363. data/assets/bootstrap-icons/microsoft-teams.svg +2 -2
  1364. data/assets/bootstrap-icons/microsoft.svg +1 -1
  1365. data/assets/bootstrap-icons/minecart-loaded.svg +2 -2
  1366. data/assets/bootstrap-icons/minecart.svg +1 -1
  1367. data/assets/bootstrap-icons/modem-fill.svg +1 -1
  1368. data/assets/bootstrap-icons/modem.svg +2 -2
  1369. data/assets/bootstrap-icons/moisture.svg +1 -1
  1370. data/assets/bootstrap-icons/moon-fill.svg +1 -1
  1371. data/assets/bootstrap-icons/moon-stars-fill.svg +2 -2
  1372. data/assets/bootstrap-icons/moon-stars.svg +2 -2
  1373. data/assets/bootstrap-icons/moon.svg +1 -1
  1374. data/assets/bootstrap-icons/mortarboard-fill.svg +2 -2
  1375. data/assets/bootstrap-icons/mortarboard.svg +2 -2
  1376. data/assets/bootstrap-icons/motherboard-fill.svg +2 -2
  1377. data/assets/bootstrap-icons/motherboard.svg +2 -2
  1378. data/assets/bootstrap-icons/mouse-fill.svg +1 -1
  1379. data/assets/bootstrap-icons/mouse.svg +1 -1
  1380. data/assets/bootstrap-icons/mouse2-fill.svg +1 -1
  1381. data/assets/bootstrap-icons/mouse2.svg +1 -1
  1382. data/assets/bootstrap-icons/mouse3-fill.svg +1 -1
  1383. data/assets/bootstrap-icons/mouse3.svg +1 -1
  1384. data/assets/bootstrap-icons/music-note-beamed.svg +3 -3
  1385. data/assets/bootstrap-icons/music-note-list.svg +4 -4
  1386. data/assets/bootstrap-icons/music-note.svg +3 -3
  1387. data/assets/bootstrap-icons/music-player-fill.svg +2 -2
  1388. data/assets/bootstrap-icons/music-player.svg +3 -3
  1389. data/assets/bootstrap-icons/newspaper.svg +2 -2
  1390. data/assets/bootstrap-icons/nintendo-switch.svg +2 -2
  1391. data/assets/bootstrap-icons/node-minus-fill.svg +1 -1
  1392. data/assets/bootstrap-icons/node-minus.svg +1 -1
  1393. data/assets/bootstrap-icons/node-plus-fill.svg +1 -1
  1394. data/assets/bootstrap-icons/node-plus.svg +1 -1
  1395. data/assets/bootstrap-icons/noise-reduction.svg +4 -0
  1396. data/assets/bootstrap-icons/nut-fill.svg +1 -1
  1397. data/assets/bootstrap-icons/nut.svg +2 -2
  1398. data/assets/bootstrap-icons/nvidia.svg +1 -1
  1399. data/assets/bootstrap-icons/nvme-fill.svg +4 -0
  1400. data/assets/bootstrap-icons/nvme.svg +4 -0
  1401. data/assets/bootstrap-icons/octagon-fill.svg +1 -1
  1402. data/assets/bootstrap-icons/octagon-half.svg +1 -1
  1403. data/assets/bootstrap-icons/octagon.svg +1 -1
  1404. data/assets/bootstrap-icons/opencollective.svg +4 -0
  1405. data/assets/bootstrap-icons/optical-audio-fill.svg +2 -2
  1406. data/assets/bootstrap-icons/optical-audio.svg +3 -3
  1407. data/assets/bootstrap-icons/option.svg +1 -1
  1408. data/assets/bootstrap-icons/outlet.svg +2 -2
  1409. data/assets/bootstrap-icons/p-circle-fill.svg +1 -1
  1410. data/assets/bootstrap-icons/p-circle.svg +1 -1
  1411. data/assets/bootstrap-icons/p-square-fill.svg +2 -2
  1412. data/assets/bootstrap-icons/p-square.svg +2 -2
  1413. data/assets/bootstrap-icons/paint-bucket.svg +1 -1
  1414. data/assets/bootstrap-icons/palette-fill.svg +1 -1
  1415. data/assets/bootstrap-icons/palette.svg +2 -2
  1416. data/assets/bootstrap-icons/palette2.svg +1 -2
  1417. data/assets/bootstrap-icons/paperclip.svg +1 -1
  1418. data/assets/bootstrap-icons/paragraph.svg +1 -1
  1419. data/assets/bootstrap-icons/pass-fill.svg +1 -1
  1420. data/assets/bootstrap-icons/pass.svg +2 -2
  1421. data/assets/bootstrap-icons/passport-fill.svg +4 -0
  1422. data/assets/bootstrap-icons/passport.svg +4 -0
  1423. data/assets/bootstrap-icons/patch-check-fill.svg +1 -1
  1424. data/assets/bootstrap-icons/patch-check.svg +2 -2
  1425. data/assets/bootstrap-icons/patch-exclamation-fill.svg +1 -1
  1426. data/assets/bootstrap-icons/patch-exclamation.svg +2 -2
  1427. data/assets/bootstrap-icons/patch-minus-fill.svg +1 -1
  1428. data/assets/bootstrap-icons/patch-minus.svg +2 -2
  1429. data/assets/bootstrap-icons/patch-plus-fill.svg +1 -1
  1430. data/assets/bootstrap-icons/patch-plus.svg +2 -2
  1431. data/assets/bootstrap-icons/patch-question-fill.svg +1 -1
  1432. data/assets/bootstrap-icons/patch-question.svg +3 -3
  1433. data/assets/bootstrap-icons/pause-btn-fill.svg +1 -1
  1434. data/assets/bootstrap-icons/pause-btn.svg +2 -2
  1435. data/assets/bootstrap-icons/pause-circle-fill.svg +1 -1
  1436. data/assets/bootstrap-icons/pause-circle.svg +2 -2
  1437. data/assets/bootstrap-icons/pause-fill.svg +1 -1
  1438. data/assets/bootstrap-icons/pause.svg +1 -1
  1439. data/assets/bootstrap-icons/paypal.svg +1 -1
  1440. data/assets/bootstrap-icons/pc-display-horizontal.svg +1 -1
  1441. data/assets/bootstrap-icons/pc-display.svg +1 -1
  1442. data/assets/bootstrap-icons/pc-horizontal.svg +1 -1
  1443. data/assets/bootstrap-icons/pc.svg +1 -1
  1444. data/assets/bootstrap-icons/pci-card-network.svg +5 -0
  1445. data/assets/bootstrap-icons/pci-card-sound.svg +5 -0
  1446. data/assets/bootstrap-icons/pci-card.svg +2 -2
  1447. data/assets/bootstrap-icons/peace-fill.svg +1 -1
  1448. data/assets/bootstrap-icons/peace.svg +1 -1
  1449. data/assets/bootstrap-icons/pen-fill.svg +1 -1
  1450. data/assets/bootstrap-icons/pen.svg +1 -1
  1451. data/assets/bootstrap-icons/pencil-fill.svg +1 -1
  1452. data/assets/bootstrap-icons/pencil-square.svg +1 -1
  1453. data/assets/bootstrap-icons/pencil.svg +1 -1
  1454. data/assets/bootstrap-icons/pentagon-half.svg +1 -1
  1455. data/assets/bootstrap-icons/people-fill.svg +1 -1
  1456. data/assets/bootstrap-icons/people.svg +1 -1
  1457. data/assets/bootstrap-icons/percent.svg +1 -1
  1458. data/assets/bootstrap-icons/person-add.svg +2 -2
  1459. data/assets/bootstrap-icons/person-arms-up.svg +4 -0
  1460. data/assets/bootstrap-icons/person-badge-fill.svg +1 -1
  1461. data/assets/bootstrap-icons/person-badge.svg +2 -2
  1462. data/assets/bootstrap-icons/person-bounding-box.svg +2 -2
  1463. data/assets/bootstrap-icons/person-check-fill.svg +2 -2
  1464. data/assets/bootstrap-icons/person-check.svg +2 -2
  1465. data/assets/bootstrap-icons/person-circle.svg +2 -2
  1466. data/assets/bootstrap-icons/person-dash-fill.svg +2 -2
  1467. data/assets/bootstrap-icons/person-dash.svg +2 -2
  1468. data/assets/bootstrap-icons/person-down.svg +2 -2
  1469. data/assets/bootstrap-icons/person-exclamation.svg +2 -2
  1470. data/assets/bootstrap-icons/person-fill-add.svg +2 -2
  1471. data/assets/bootstrap-icons/person-fill-check.svg +2 -2
  1472. data/assets/bootstrap-icons/person-fill-dash.svg +2 -2
  1473. data/assets/bootstrap-icons/person-fill-down.svg +2 -2
  1474. data/assets/bootstrap-icons/person-fill-exclamation.svg +2 -2
  1475. data/assets/bootstrap-icons/person-fill-gear.svg +1 -1
  1476. data/assets/bootstrap-icons/person-fill-lock.svg +1 -1
  1477. data/assets/bootstrap-icons/person-fill-slash.svg +1 -1
  1478. data/assets/bootstrap-icons/person-fill-up.svg +2 -2
  1479. data/assets/bootstrap-icons/person-fill-x.svg +2 -2
  1480. data/assets/bootstrap-icons/person-fill.svg +1 -1
  1481. data/assets/bootstrap-icons/person-gear.svg +1 -1
  1482. data/assets/bootstrap-icons/person-heart.svg +1 -1
  1483. data/assets/bootstrap-icons/person-hearts.svg +1 -1
  1484. data/assets/bootstrap-icons/person-lines-fill.svg +1 -1
  1485. data/assets/bootstrap-icons/person-lock.svg +1 -1
  1486. data/assets/bootstrap-icons/person-plus-fill.svg +2 -2
  1487. data/assets/bootstrap-icons/person-plus.svg +2 -2
  1488. data/assets/bootstrap-icons/person-raised-hand.svg +4 -0
  1489. data/assets/bootstrap-icons/person-rolodex.svg +2 -2
  1490. data/assets/bootstrap-icons/person-slash.svg +1 -1
  1491. data/assets/bootstrap-icons/person-square.svg +2 -2
  1492. data/assets/bootstrap-icons/person-standing-dress.svg +3 -0
  1493. data/assets/bootstrap-icons/person-standing.svg +3 -0
  1494. data/assets/bootstrap-icons/person-up.svg +2 -2
  1495. data/assets/bootstrap-icons/person-vcard-fill.svg +1 -1
  1496. data/assets/bootstrap-icons/person-vcard.svg +2 -2
  1497. data/assets/bootstrap-icons/person-video.svg +2 -2
  1498. data/assets/bootstrap-icons/person-video2.svg +2 -2
  1499. data/assets/bootstrap-icons/person-video3.svg +2 -2
  1500. data/assets/bootstrap-icons/person-walking.svg +4 -0
  1501. data/assets/bootstrap-icons/person-wheelchair.svg +3 -0
  1502. data/assets/bootstrap-icons/person-workspace.svg +2 -2
  1503. data/assets/bootstrap-icons/person-x-fill.svg +1 -1
  1504. data/assets/bootstrap-icons/person-x.svg +2 -2
  1505. data/assets/bootstrap-icons/person.svg +1 -1
  1506. data/assets/bootstrap-icons/phone-fill.svg +1 -1
  1507. data/assets/bootstrap-icons/phone-flip.svg +1 -1
  1508. data/assets/bootstrap-icons/phone-landscape-fill.svg +1 -1
  1509. data/assets/bootstrap-icons/phone-landscape.svg +2 -2
  1510. data/assets/bootstrap-icons/phone-vibrate-fill.svg +1 -1
  1511. data/assets/bootstrap-icons/phone-vibrate.svg +2 -2
  1512. data/assets/bootstrap-icons/phone.svg +2 -2
  1513. data/assets/bootstrap-icons/pie-chart-fill.svg +1 -1
  1514. data/assets/bootstrap-icons/pie-chart.svg +1 -1
  1515. data/assets/bootstrap-icons/piggy-bank-fill.svg +1 -1
  1516. data/assets/bootstrap-icons/piggy-bank.svg +2 -2
  1517. data/assets/bootstrap-icons/pin-angle-fill.svg +1 -1
  1518. data/assets/bootstrap-icons/pin-angle.svg +1 -1
  1519. data/assets/bootstrap-icons/pin-fill.svg +1 -1
  1520. data/assets/bootstrap-icons/pin-map-fill.svg +1 -1
  1521. data/assets/bootstrap-icons/pin-map.svg +2 -2
  1522. data/assets/bootstrap-icons/pin.svg +1 -1
  1523. data/assets/bootstrap-icons/pinterest.svg +1 -1
  1524. data/assets/bootstrap-icons/pip-fill.svg +1 -1
  1525. data/assets/bootstrap-icons/pip.svg +2 -2
  1526. data/assets/bootstrap-icons/play-btn-fill.svg +1 -1
  1527. data/assets/bootstrap-icons/play-btn.svg +2 -2
  1528. data/assets/bootstrap-icons/play-circle-fill.svg +1 -1
  1529. data/assets/bootstrap-icons/play-circle.svg +2 -2
  1530. data/assets/bootstrap-icons/play-fill.svg +1 -1
  1531. data/assets/bootstrap-icons/play.svg +1 -1
  1532. data/assets/bootstrap-icons/playstation.svg +1 -1
  1533. data/assets/bootstrap-icons/plug-fill.svg +1 -1
  1534. data/assets/bootstrap-icons/plug.svg +1 -1
  1535. data/assets/bootstrap-icons/plugin.svg +1 -1
  1536. data/assets/bootstrap-icons/plus-circle-dotted.svg +1 -1
  1537. data/assets/bootstrap-icons/plus-circle-fill.svg +1 -1
  1538. data/assets/bootstrap-icons/plus-circle.svg +2 -2
  1539. data/assets/bootstrap-icons/plus-lg.svg +1 -1
  1540. data/assets/bootstrap-icons/plus-slash-minus.svg +1 -1
  1541. data/assets/bootstrap-icons/plus-square-dotted.svg +1 -1
  1542. data/assets/bootstrap-icons/plus-square-fill.svg +1 -1
  1543. data/assets/bootstrap-icons/plus-square.svg +2 -2
  1544. data/assets/bootstrap-icons/plus.svg +1 -1
  1545. data/assets/bootstrap-icons/postage-fill.svg +2 -2
  1546. data/assets/bootstrap-icons/postage-heart-fill.svg +2 -2
  1547. data/assets/bootstrap-icons/postage-heart.svg +2 -2
  1548. data/assets/bootstrap-icons/postage.svg +2 -2
  1549. data/assets/bootstrap-icons/postcard-fill.svg +2 -2
  1550. data/assets/bootstrap-icons/postcard-heart-fill.svg +1 -1
  1551. data/assets/bootstrap-icons/postcard-heart.svg +2 -2
  1552. data/assets/bootstrap-icons/postcard.svg +1 -1
  1553. data/assets/bootstrap-icons/power.svg +2 -2
  1554. data/assets/bootstrap-icons/prescription.svg +2 -2
  1555. data/assets/bootstrap-icons/prescription2.svg +2 -2
  1556. data/assets/bootstrap-icons/printer-fill.svg +2 -2
  1557. data/assets/bootstrap-icons/printer.svg +2 -2
  1558. data/assets/bootstrap-icons/projector-fill.svg +1 -1
  1559. data/assets/bootstrap-icons/projector.svg +2 -2
  1560. data/assets/bootstrap-icons/puzzle-fill.svg +1 -1
  1561. data/assets/bootstrap-icons/puzzle.svg +1 -1
  1562. data/assets/bootstrap-icons/qr-code-scan.svg +5 -5
  1563. data/assets/bootstrap-icons/qr-code.svg +5 -5
  1564. data/assets/bootstrap-icons/question-circle-fill.svg +1 -1
  1565. data/assets/bootstrap-icons/question-circle.svg +2 -2
  1566. data/assets/bootstrap-icons/question-diamond-fill.svg +1 -1
  1567. data/assets/bootstrap-icons/question-diamond.svg +2 -2
  1568. data/assets/bootstrap-icons/question-lg.svg +1 -1
  1569. data/assets/bootstrap-icons/question-octagon-fill.svg +1 -1
  1570. data/assets/bootstrap-icons/question-octagon.svg +2 -2
  1571. data/assets/bootstrap-icons/question-square-fill.svg +1 -1
  1572. data/assets/bootstrap-icons/question-square.svg +2 -2
  1573. data/assets/bootstrap-icons/question.svg +1 -1
  1574. data/assets/bootstrap-icons/quora.svg +1 -1
  1575. data/assets/bootstrap-icons/quote.svg +1 -1
  1576. data/assets/bootstrap-icons/r-circle-fill.svg +1 -1
  1577. data/assets/bootstrap-icons/r-circle.svg +1 -1
  1578. data/assets/bootstrap-icons/r-square-fill.svg +2 -2
  1579. data/assets/bootstrap-icons/r-square.svg +2 -2
  1580. data/assets/bootstrap-icons/radar.svg +3 -0
  1581. data/assets/bootstrap-icons/radioactive.svg +2 -2
  1582. data/assets/bootstrap-icons/rainbow.svg +1 -1
  1583. data/assets/bootstrap-icons/receipt-cutoff.svg +2 -2
  1584. data/assets/bootstrap-icons/receipt.svg +2 -2
  1585. data/assets/bootstrap-icons/reception-0.svg +1 -1
  1586. data/assets/bootstrap-icons/reception-1.svg +1 -1
  1587. data/assets/bootstrap-icons/reception-2.svg +1 -1
  1588. data/assets/bootstrap-icons/reception-3.svg +1 -1
  1589. data/assets/bootstrap-icons/reception-4.svg +1 -1
  1590. data/assets/bootstrap-icons/record-btn-fill.svg +1 -1
  1591. data/assets/bootstrap-icons/record-btn.svg +2 -2
  1592. data/assets/bootstrap-icons/record-circle-fill.svg +1 -1
  1593. data/assets/bootstrap-icons/record-circle.svg +2 -2
  1594. data/assets/bootstrap-icons/record-fill.svg +1 -1
  1595. data/assets/bootstrap-icons/record.svg +1 -1
  1596. data/assets/bootstrap-icons/record2-fill.svg +2 -2
  1597. data/assets/bootstrap-icons/record2.svg +2 -2
  1598. data/assets/bootstrap-icons/recycle.svg +1 -1
  1599. data/assets/bootstrap-icons/reddit.svg +2 -2
  1600. data/assets/bootstrap-icons/regex.svg +1 -1
  1601. data/assets/bootstrap-icons/repeat-1.svg +2 -2
  1602. data/assets/bootstrap-icons/repeat.svg +1 -1
  1603. data/assets/bootstrap-icons/reply-all-fill.svg +2 -2
  1604. data/assets/bootstrap-icons/reply-all.svg +2 -2
  1605. data/assets/bootstrap-icons/reply-fill.svg +1 -1
  1606. data/assets/bootstrap-icons/reply.svg +1 -1
  1607. data/assets/bootstrap-icons/rewind-btn-fill.svg +1 -1
  1608. data/assets/bootstrap-icons/rewind-btn.svg +2 -2
  1609. data/assets/bootstrap-icons/rewind-circle-fill.svg +1 -1
  1610. data/assets/bootstrap-icons/rewind-circle.svg +2 -2
  1611. data/assets/bootstrap-icons/rewind-fill.svg +2 -2
  1612. data/assets/bootstrap-icons/rewind.svg +2 -2
  1613. data/assets/bootstrap-icons/robot.svg +2 -2
  1614. data/assets/bootstrap-icons/rocket-fill.svg +2 -2
  1615. data/assets/bootstrap-icons/rocket-takeoff-fill.svg +2 -2
  1616. data/assets/bootstrap-icons/rocket-takeoff.svg +3 -3
  1617. data/assets/bootstrap-icons/rocket.svg +3 -3
  1618. data/assets/bootstrap-icons/router-fill.svg +3 -3
  1619. data/assets/bootstrap-icons/router.svg +4 -4
  1620. data/assets/bootstrap-icons/rss-fill.svg +1 -1
  1621. data/assets/bootstrap-icons/rss.svg +2 -2
  1622. data/assets/bootstrap-icons/rulers.svg +1 -1
  1623. data/assets/bootstrap-icons/safe-fill.svg +2 -2
  1624. data/assets/bootstrap-icons/safe.svg +2 -2
  1625. data/assets/bootstrap-icons/safe2-fill.svg +2 -2
  1626. data/assets/bootstrap-icons/safe2.svg +2 -2
  1627. data/assets/bootstrap-icons/save-fill.svg +1 -1
  1628. data/assets/bootstrap-icons/save.svg +1 -1
  1629. data/assets/bootstrap-icons/save2-fill.svg +1 -1
  1630. data/assets/bootstrap-icons/save2.svg +1 -1
  1631. data/assets/bootstrap-icons/scissors.svg +1 -1
  1632. data/assets/bootstrap-icons/scooter.svg +1 -1
  1633. data/assets/bootstrap-icons/screwdriver.svg +1 -1
  1634. data/assets/bootstrap-icons/sd-card-fill.svg +1 -1
  1635. data/assets/bootstrap-icons/sd-card.svg +2 -2
  1636. data/assets/bootstrap-icons/search-heart-fill.svg +1 -1
  1637. data/assets/bootstrap-icons/search-heart.svg +2 -2
  1638. data/assets/bootstrap-icons/search.svg +1 -1
  1639. data/assets/bootstrap-icons/segmented-nav.svg +1 -1
  1640. data/assets/bootstrap-icons/send-arrow-down-fill.svg +4 -0
  1641. data/assets/bootstrap-icons/send-arrow-down.svg +4 -0
  1642. data/assets/bootstrap-icons/send-arrow-up-fill.svg +4 -0
  1643. data/assets/bootstrap-icons/send-arrow-up.svg +4 -0
  1644. data/assets/bootstrap-icons/send-check-fill.svg +2 -2
  1645. data/assets/bootstrap-icons/send-check.svg +2 -2
  1646. data/assets/bootstrap-icons/send-dash-fill.svg +2 -2
  1647. data/assets/bootstrap-icons/send-dash.svg +2 -2
  1648. data/assets/bootstrap-icons/send-exclamation-fill.svg +2 -2
  1649. data/assets/bootstrap-icons/send-exclamation.svg +2 -2
  1650. data/assets/bootstrap-icons/send-fill.svg +1 -1
  1651. data/assets/bootstrap-icons/send-plus-fill.svg +2 -2
  1652. data/assets/bootstrap-icons/send-plus.svg +2 -2
  1653. data/assets/bootstrap-icons/send-slash-fill.svg +2 -2
  1654. data/assets/bootstrap-icons/send-slash.svg +2 -2
  1655. data/assets/bootstrap-icons/send-x-fill.svg +2 -2
  1656. data/assets/bootstrap-icons/send-x.svg +2 -2
  1657. data/assets/bootstrap-icons/send.svg +1 -1
  1658. data/assets/bootstrap-icons/server.svg +3 -3
  1659. data/assets/bootstrap-icons/shadows.svg +3 -0
  1660. data/assets/bootstrap-icons/share-fill.svg +1 -1
  1661. data/assets/bootstrap-icons/share.svg +1 -1
  1662. data/assets/bootstrap-icons/shield-check.svg +2 -2
  1663. data/assets/bootstrap-icons/shield-exclamation.svg +2 -2
  1664. data/assets/bootstrap-icons/shield-fill-check.svg +1 -1
  1665. data/assets/bootstrap-icons/shield-fill-exclamation.svg +1 -1
  1666. data/assets/bootstrap-icons/shield-fill-minus.svg +1 -1
  1667. data/assets/bootstrap-icons/shield-fill-plus.svg +1 -1
  1668. data/assets/bootstrap-icons/shield-fill-x.svg +1 -1
  1669. data/assets/bootstrap-icons/shield-fill.svg +1 -1
  1670. data/assets/bootstrap-icons/shield-lock-fill.svg +1 -1
  1671. data/assets/bootstrap-icons/shield-lock.svg +2 -2
  1672. data/assets/bootstrap-icons/shield-minus.svg +2 -2
  1673. data/assets/bootstrap-icons/shield-plus.svg +2 -2
  1674. data/assets/bootstrap-icons/shield-shaded.svg +1 -1
  1675. data/assets/bootstrap-icons/shield-slash-fill.svg +1 -1
  1676. data/assets/bootstrap-icons/shield-slash.svg +1 -1
  1677. data/assets/bootstrap-icons/shield-x.svg +2 -2
  1678. data/assets/bootstrap-icons/shield.svg +1 -1
  1679. data/assets/bootstrap-icons/shift-fill.svg +1 -1
  1680. data/assets/bootstrap-icons/shift.svg +1 -1
  1681. data/assets/bootstrap-icons/shop-window.svg +1 -1
  1682. data/assets/bootstrap-icons/shop.svg +1 -1
  1683. data/assets/bootstrap-icons/shuffle.svg +2 -2
  1684. data/assets/bootstrap-icons/sign-dead-end-fill.svg +2 -2
  1685. data/assets/bootstrap-icons/sign-dead-end.svg +2 -2
  1686. data/assets/bootstrap-icons/sign-do-not-enter-fill.svg +2 -2
  1687. data/assets/bootstrap-icons/sign-do-not-enter.svg +2 -2
  1688. data/assets/bootstrap-icons/sign-intersection-fill.svg +1 -1
  1689. data/assets/bootstrap-icons/sign-intersection-side-fill.svg +1 -1
  1690. data/assets/bootstrap-icons/sign-intersection-side.svg +2 -2
  1691. data/assets/bootstrap-icons/sign-intersection-t-fill.svg +1 -1
  1692. data/assets/bootstrap-icons/sign-intersection-t.svg +2 -2
  1693. data/assets/bootstrap-icons/sign-intersection-y-fill.svg +1 -1
  1694. data/assets/bootstrap-icons/sign-intersection-y.svg +2 -2
  1695. data/assets/bootstrap-icons/sign-intersection.svg +2 -2
  1696. data/assets/bootstrap-icons/sign-merge-left-fill.svg +1 -1
  1697. data/assets/bootstrap-icons/sign-merge-left.svg +2 -2
  1698. data/assets/bootstrap-icons/sign-merge-right-fill.svg +1 -1
  1699. data/assets/bootstrap-icons/sign-merge-right.svg +2 -2
  1700. data/assets/bootstrap-icons/sign-no-left-turn-fill.svg +2 -2
  1701. data/assets/bootstrap-icons/sign-no-left-turn.svg +1 -1
  1702. data/assets/bootstrap-icons/sign-no-parking-fill.svg +2 -2
  1703. data/assets/bootstrap-icons/sign-no-parking.svg +1 -1
  1704. data/assets/bootstrap-icons/sign-no-right-turn-fill.svg +2 -2
  1705. data/assets/bootstrap-icons/sign-no-right-turn.svg +1 -1
  1706. data/assets/bootstrap-icons/sign-railroad-fill.svg +2 -2
  1707. data/assets/bootstrap-icons/sign-railroad.svg +2 -2
  1708. data/assets/bootstrap-icons/sign-stop-fill.svg +2 -2
  1709. data/assets/bootstrap-icons/sign-stop-lights-fill.svg +2 -2
  1710. data/assets/bootstrap-icons/sign-stop-lights.svg +2 -2
  1711. data/assets/bootstrap-icons/sign-stop.svg +2 -2
  1712. data/assets/bootstrap-icons/sign-turn-left-fill.svg +1 -1
  1713. data/assets/bootstrap-icons/sign-turn-left.svg +2 -2
  1714. data/assets/bootstrap-icons/sign-turn-right-fill.svg +1 -1
  1715. data/assets/bootstrap-icons/sign-turn-right.svg +2 -2
  1716. data/assets/bootstrap-icons/sign-turn-slight-left-fill.svg +1 -1
  1717. data/assets/bootstrap-icons/sign-turn-slight-left.svg +2 -2
  1718. data/assets/bootstrap-icons/sign-turn-slight-right-fill.svg +1 -1
  1719. data/assets/bootstrap-icons/sign-turn-slight-right.svg +2 -2
  1720. data/assets/bootstrap-icons/sign-yield-fill.svg +1 -1
  1721. data/assets/bootstrap-icons/sign-yield.svg +3 -3
  1722. data/assets/bootstrap-icons/signal.svg +1 -1
  1723. data/assets/bootstrap-icons/signpost-2-fill.svg +1 -1
  1724. data/assets/bootstrap-icons/signpost-2.svg +1 -1
  1725. data/assets/bootstrap-icons/signpost-fill.svg +1 -1
  1726. data/assets/bootstrap-icons/signpost-split-fill.svg +1 -1
  1727. data/assets/bootstrap-icons/signpost-split.svg +1 -1
  1728. data/assets/bootstrap-icons/signpost.svg +1 -1
  1729. data/assets/bootstrap-icons/sim-fill.svg +2 -2
  1730. data/assets/bootstrap-icons/sim-slash-fill.svg +3 -0
  1731. data/assets/bootstrap-icons/sim-slash.svg +3 -0
  1732. data/assets/bootstrap-icons/sim.svg +2 -2
  1733. data/assets/bootstrap-icons/sina-weibo.svg +2 -2
  1734. data/assets/bootstrap-icons/skip-backward-btn-fill.svg +1 -1
  1735. data/assets/bootstrap-icons/skip-backward-btn.svg +2 -2
  1736. data/assets/bootstrap-icons/skip-backward-circle-fill.svg +1 -1
  1737. data/assets/bootstrap-icons/skip-backward-circle.svg +2 -2
  1738. data/assets/bootstrap-icons/skip-backward-fill.svg +1 -1
  1739. data/assets/bootstrap-icons/skip-backward.svg +1 -1
  1740. data/assets/bootstrap-icons/skip-end-btn-fill.svg +1 -1
  1741. data/assets/bootstrap-icons/skip-end-btn.svg +2 -2
  1742. data/assets/bootstrap-icons/skip-end-circle-fill.svg +1 -1
  1743. data/assets/bootstrap-icons/skip-end-circle.svg +2 -2
  1744. data/assets/bootstrap-icons/skip-end-fill.svg +1 -1
  1745. data/assets/bootstrap-icons/skip-end.svg +1 -1
  1746. data/assets/bootstrap-icons/skip-forward-btn-fill.svg +1 -1
  1747. data/assets/bootstrap-icons/skip-forward-btn.svg +2 -2
  1748. data/assets/bootstrap-icons/skip-forward-circle-fill.svg +1 -1
  1749. data/assets/bootstrap-icons/skip-forward-circle.svg +2 -2
  1750. data/assets/bootstrap-icons/skip-forward-fill.svg +1 -1
  1751. data/assets/bootstrap-icons/skip-forward.svg +1 -1
  1752. data/assets/bootstrap-icons/skip-start-btn-fill.svg +1 -1
  1753. data/assets/bootstrap-icons/skip-start-btn.svg +2 -2
  1754. data/assets/bootstrap-icons/skip-start-circle-fill.svg +1 -1
  1755. data/assets/bootstrap-icons/skip-start-circle.svg +2 -2
  1756. data/assets/bootstrap-icons/skip-start-fill.svg +1 -1
  1757. data/assets/bootstrap-icons/skip-start.svg +1 -1
  1758. data/assets/bootstrap-icons/skype.svg +1 -1
  1759. data/assets/bootstrap-icons/slack.svg +1 -1
  1760. data/assets/bootstrap-icons/slash-circle-fill.svg +1 -1
  1761. data/assets/bootstrap-icons/slash-circle.svg +2 -2
  1762. data/assets/bootstrap-icons/slash-lg.svg +1 -1
  1763. data/assets/bootstrap-icons/slash-square-fill.svg +1 -1
  1764. data/assets/bootstrap-icons/slash-square.svg +2 -2
  1765. data/assets/bootstrap-icons/slash.svg +1 -1
  1766. data/assets/bootstrap-icons/sliders.svg +1 -1
  1767. data/assets/bootstrap-icons/sliders2-vertical.svg +1 -1
  1768. data/assets/bootstrap-icons/sliders2.svg +1 -1
  1769. data/assets/bootstrap-icons/smartwatch.svg +2 -2
  1770. data/assets/bootstrap-icons/snapchat.svg +1 -1
  1771. data/assets/bootstrap-icons/snow2.svg +1 -1
  1772. data/assets/bootstrap-icons/snow3.svg +2 -2
  1773. data/assets/bootstrap-icons/sort-alpha-down-alt.svg +3 -3
  1774. data/assets/bootstrap-icons/sort-alpha-down.svg +2 -2
  1775. data/assets/bootstrap-icons/sort-alpha-up-alt.svg +3 -3
  1776. data/assets/bootstrap-icons/sort-alpha-up.svg +2 -2
  1777. data/assets/bootstrap-icons/sort-down-alt.svg +1 -1
  1778. data/assets/bootstrap-icons/sort-down.svg +1 -1
  1779. data/assets/bootstrap-icons/sort-numeric-down-alt.svg +2 -2
  1780. data/assets/bootstrap-icons/sort-numeric-down.svg +2 -2
  1781. data/assets/bootstrap-icons/sort-numeric-up-alt.svg +2 -2
  1782. data/assets/bootstrap-icons/sort-numeric-up.svg +2 -2
  1783. data/assets/bootstrap-icons/sort-up-alt.svg +1 -1
  1784. data/assets/bootstrap-icons/sort-up.svg +1 -1
  1785. data/assets/bootstrap-icons/soundwave.svg +1 -1
  1786. data/assets/bootstrap-icons/sourceforge.svg +4 -0
  1787. data/assets/bootstrap-icons/speaker-fill.svg +2 -2
  1788. data/assets/bootstrap-icons/speaker.svg +2 -2
  1789. data/assets/bootstrap-icons/speedometer.svg +2 -2
  1790. data/assets/bootstrap-icons/speedometer2.svg +2 -2
  1791. data/assets/bootstrap-icons/spellcheck.svg +2 -2
  1792. data/assets/bootstrap-icons/spotify.svg +1 -1
  1793. data/assets/bootstrap-icons/square-fill.svg +1 -1
  1794. data/assets/bootstrap-icons/square-half.svg +1 -1
  1795. data/assets/bootstrap-icons/square.svg +1 -1
  1796. data/assets/bootstrap-icons/stack-overflow.svg +2 -2
  1797. data/assets/bootstrap-icons/stack.svg +2 -2
  1798. data/assets/bootstrap-icons/star-half.svg +1 -1
  1799. data/assets/bootstrap-icons/star.svg +1 -1
  1800. data/assets/bootstrap-icons/stars.svg +1 -1
  1801. data/assets/bootstrap-icons/steam.svg +2 -2
  1802. data/assets/bootstrap-icons/stickies-fill.svg +2 -2
  1803. data/assets/bootstrap-icons/stickies.svg +2 -2
  1804. data/assets/bootstrap-icons/sticky-fill.svg +1 -1
  1805. data/assets/bootstrap-icons/sticky.svg +1 -1
  1806. data/assets/bootstrap-icons/stop-btn-fill.svg +1 -1
  1807. data/assets/bootstrap-icons/stop-btn.svg +2 -2
  1808. data/assets/bootstrap-icons/stop-circle-fill.svg +1 -1
  1809. data/assets/bootstrap-icons/stop-circle.svg +2 -2
  1810. data/assets/bootstrap-icons/stop-fill.svg +1 -1
  1811. data/assets/bootstrap-icons/stop.svg +1 -1
  1812. data/assets/bootstrap-icons/stoplights-fill.svg +1 -1
  1813. data/assets/bootstrap-icons/stoplights.svg +2 -2
  1814. data/assets/bootstrap-icons/stopwatch-fill.svg +1 -1
  1815. data/assets/bootstrap-icons/stopwatch.svg +2 -2
  1816. data/assets/bootstrap-icons/strava.svg +1 -1
  1817. data/assets/bootstrap-icons/stripe.svg +1 -1
  1818. data/assets/bootstrap-icons/subscript.svg +1 -1
  1819. data/assets/bootstrap-icons/substack.svg +3 -0
  1820. data/assets/bootstrap-icons/subtract.svg +1 -1
  1821. data/assets/bootstrap-icons/suit-club-fill.svg +1 -1
  1822. data/assets/bootstrap-icons/suit-club.svg +1 -1
  1823. data/assets/bootstrap-icons/suit-diamond-fill.svg +1 -1
  1824. data/assets/bootstrap-icons/suit-diamond.svg +1 -1
  1825. data/assets/bootstrap-icons/suit-heart-fill.svg +1 -1
  1826. data/assets/bootstrap-icons/suit-heart.svg +1 -1
  1827. data/assets/bootstrap-icons/suit-spade-fill.svg +1 -1
  1828. data/assets/bootstrap-icons/suit-spade.svg +1 -1
  1829. data/assets/bootstrap-icons/suitcase-fill.svg +3 -0
  1830. data/assets/bootstrap-icons/suitcase-lg-fill.svg +3 -0
  1831. data/assets/bootstrap-icons/suitcase-lg.svg +3 -0
  1832. data/assets/bootstrap-icons/suitcase.svg +4 -0
  1833. data/assets/bootstrap-icons/suitcase2-fill.svg +3 -0
  1834. data/assets/bootstrap-icons/suitcase2.svg +3 -0
  1835. data/assets/bootstrap-icons/sun-fill.svg +1 -1
  1836. data/assets/bootstrap-icons/sun.svg +1 -1
  1837. data/assets/bootstrap-icons/sunglasses.svg +1 -1
  1838. data/assets/bootstrap-icons/sunrise-fill.svg +1 -1
  1839. data/assets/bootstrap-icons/sunrise.svg +1 -1
  1840. data/assets/bootstrap-icons/sunset-fill.svg +1 -1
  1841. data/assets/bootstrap-icons/sunset.svg +1 -1
  1842. data/assets/bootstrap-icons/superscript.svg +1 -1
  1843. data/assets/bootstrap-icons/symmetry-horizontal.svg +1 -1
  1844. data/assets/bootstrap-icons/symmetry-vertical.svg +1 -1
  1845. data/assets/bootstrap-icons/table.svg +1 -1
  1846. data/assets/bootstrap-icons/tablet-fill.svg +1 -1
  1847. data/assets/bootstrap-icons/tablet-landscape-fill.svg +1 -1
  1848. data/assets/bootstrap-icons/tablet-landscape.svg +2 -2
  1849. data/assets/bootstrap-icons/tablet.svg +2 -2
  1850. data/assets/bootstrap-icons/tag-fill.svg +1 -1
  1851. data/assets/bootstrap-icons/tag.svg +2 -2
  1852. data/assets/bootstrap-icons/tags-fill.svg +2 -2
  1853. data/assets/bootstrap-icons/tags.svg +2 -2
  1854. data/assets/bootstrap-icons/taxi-front-fill.svg +1 -1
  1855. data/assets/bootstrap-icons/taxi-front.svg +2 -2
  1856. data/assets/bootstrap-icons/telegram.svg +1 -1
  1857. data/assets/bootstrap-icons/telephone-fill.svg +1 -1
  1858. data/assets/bootstrap-icons/telephone-forward-fill.svg +1 -1
  1859. data/assets/bootstrap-icons/telephone-forward.svg +1 -1
  1860. data/assets/bootstrap-icons/telephone-inbound-fill.svg +1 -1
  1861. data/assets/bootstrap-icons/telephone-inbound.svg +1 -1
  1862. data/assets/bootstrap-icons/telephone-minus-fill.svg +1 -1
  1863. data/assets/bootstrap-icons/telephone-minus.svg +2 -2
  1864. data/assets/bootstrap-icons/telephone-outbound-fill.svg +1 -1
  1865. data/assets/bootstrap-icons/telephone-outbound.svg +1 -1
  1866. data/assets/bootstrap-icons/telephone-plus-fill.svg +1 -1
  1867. data/assets/bootstrap-icons/telephone-plus.svg +2 -2
  1868. data/assets/bootstrap-icons/telephone-x-fill.svg +1 -1
  1869. data/assets/bootstrap-icons/telephone-x.svg +2 -2
  1870. data/assets/bootstrap-icons/telephone.svg +1 -1
  1871. data/assets/bootstrap-icons/tencent-qq.svg +2 -2
  1872. data/assets/bootstrap-icons/terminal-dash.svg +2 -2
  1873. data/assets/bootstrap-icons/terminal-fill.svg +1 -1
  1874. data/assets/bootstrap-icons/terminal-plus.svg +2 -2
  1875. data/assets/bootstrap-icons/terminal-split.svg +2 -2
  1876. data/assets/bootstrap-icons/terminal-x.svg +2 -2
  1877. data/assets/bootstrap-icons/terminal.svg +2 -2
  1878. data/assets/bootstrap-icons/text-center.svg +1 -1
  1879. data/assets/bootstrap-icons/text-indent-left.svg +1 -1
  1880. data/assets/bootstrap-icons/text-indent-right.svg +1 -1
  1881. data/assets/bootstrap-icons/text-left.svg +1 -1
  1882. data/assets/bootstrap-icons/text-paragraph.svg +1 -1
  1883. data/assets/bootstrap-icons/text-right.svg +1 -1
  1884. data/assets/bootstrap-icons/text-wrap.svg +1 -1
  1885. data/assets/bootstrap-icons/textarea-resize.svg +1 -1
  1886. data/assets/bootstrap-icons/textarea-t.svg +2 -2
  1887. data/assets/bootstrap-icons/textarea.svg +1 -1
  1888. data/assets/bootstrap-icons/thermometer-half.svg +2 -2
  1889. data/assets/bootstrap-icons/thermometer-high.svg +2 -2
  1890. data/assets/bootstrap-icons/thermometer-low.svg +2 -2
  1891. data/assets/bootstrap-icons/thermometer-snow.svg +2 -2
  1892. data/assets/bootstrap-icons/thermometer-sun.svg +2 -2
  1893. data/assets/bootstrap-icons/thermometer.svg +2 -2
  1894. data/assets/bootstrap-icons/threads-fill.svg +4 -0
  1895. data/assets/bootstrap-icons/threads.svg +3 -0
  1896. data/assets/bootstrap-icons/three-dots-vertical.svg +1 -1
  1897. data/assets/bootstrap-icons/three-dots.svg +1 -1
  1898. data/assets/bootstrap-icons/thunderbolt-fill.svg +1 -1
  1899. data/assets/bootstrap-icons/thunderbolt.svg +2 -2
  1900. data/assets/bootstrap-icons/ticket-detailed-fill.svg +1 -1
  1901. data/assets/bootstrap-icons/ticket-detailed.svg +2 -2
  1902. data/assets/bootstrap-icons/ticket-fill.svg +1 -1
  1903. data/assets/bootstrap-icons/ticket-perforated-fill.svg +1 -1
  1904. data/assets/bootstrap-icons/ticket-perforated.svg +2 -2
  1905. data/assets/bootstrap-icons/ticket.svg +1 -1
  1906. data/assets/bootstrap-icons/tiktok.svg +1 -1
  1907. data/assets/bootstrap-icons/toggle-off.svg +1 -1
  1908. data/assets/bootstrap-icons/toggle-on.svg +1 -1
  1909. data/assets/bootstrap-icons/toggle2-off.svg +2 -2
  1910. data/assets/bootstrap-icons/toggle2-on.svg +2 -2
  1911. data/assets/bootstrap-icons/toggles.svg +1 -1
  1912. data/assets/bootstrap-icons/toggles2.svg +3 -3
  1913. data/assets/bootstrap-icons/tools.svg +1 -1
  1914. data/assets/bootstrap-icons/tornado.svg +1 -1
  1915. data/assets/bootstrap-icons/train-freight-front-fill.svg +1 -1
  1916. data/assets/bootstrap-icons/train-freight-front.svg +1 -1
  1917. data/assets/bootstrap-icons/train-front-fill.svg +1 -1
  1918. data/assets/bootstrap-icons/train-front.svg +1 -1
  1919. data/assets/bootstrap-icons/train-lightrail-front-fill.svg +1 -1
  1920. data/assets/bootstrap-icons/train-lightrail-front.svg +1 -1
  1921. data/assets/bootstrap-icons/translate.svg +2 -2
  1922. data/assets/bootstrap-icons/transparency.svg +3 -0
  1923. data/assets/bootstrap-icons/trash-fill.svg +1 -1
  1924. data/assets/bootstrap-icons/trash.svg +2 -2
  1925. data/assets/bootstrap-icons/trash2-fill.svg +1 -1
  1926. data/assets/bootstrap-icons/trash2.svg +1 -1
  1927. data/assets/bootstrap-icons/trash3-fill.svg +1 -1
  1928. data/assets/bootstrap-icons/trash3.svg +1 -1
  1929. data/assets/bootstrap-icons/tree-fill.svg +1 -1
  1930. data/assets/bootstrap-icons/tree.svg +1 -1
  1931. data/assets/bootstrap-icons/trello.svg +1 -1
  1932. data/assets/bootstrap-icons/triangle-fill.svg +1 -1
  1933. data/assets/bootstrap-icons/triangle-half.svg +1 -1
  1934. data/assets/bootstrap-icons/triangle.svg +1 -1
  1935. data/assets/bootstrap-icons/trophy-fill.svg +1 -1
  1936. data/assets/bootstrap-icons/trophy.svg +1 -1
  1937. data/assets/bootstrap-icons/tropical-storm.svg +2 -2
  1938. data/assets/bootstrap-icons/truck-flatbed.svg +1 -1
  1939. data/assets/bootstrap-icons/truck-front-fill.svg +1 -1
  1940. data/assets/bootstrap-icons/truck-front.svg +2 -2
  1941. data/assets/bootstrap-icons/truck.svg +1 -1
  1942. data/assets/bootstrap-icons/tsunami.svg +1 -1
  1943. data/assets/bootstrap-icons/tv-fill.svg +1 -1
  1944. data/assets/bootstrap-icons/tv.svg +1 -1
  1945. data/assets/bootstrap-icons/twitch.svg +2 -2
  1946. data/assets/bootstrap-icons/twitter-x.svg +3 -0
  1947. data/assets/bootstrap-icons/twitter.svg +1 -1
  1948. data/assets/bootstrap-icons/type-bold.svg +1 -1
  1949. data/assets/bootstrap-icons/type-h1.svg +1 -1
  1950. data/assets/bootstrap-icons/type-h2.svg +1 -1
  1951. data/assets/bootstrap-icons/type-h3.svg +1 -1
  1952. data/assets/bootstrap-icons/type-h4.svg +3 -0
  1953. data/assets/bootstrap-icons/type-h5.svg +3 -0
  1954. data/assets/bootstrap-icons/type-h6.svg +3 -0
  1955. data/assets/bootstrap-icons/type-strikethrough.svg +1 -1
  1956. data/assets/bootstrap-icons/type-underline.svg +1 -1
  1957. data/assets/bootstrap-icons/type.svg +1 -1
  1958. data/assets/bootstrap-icons/ubuntu.svg +1 -1
  1959. data/assets/bootstrap-icons/ui-checks-grid.svg +1 -1
  1960. data/assets/bootstrap-icons/ui-checks.svg +1 -1
  1961. data/assets/bootstrap-icons/ui-radios-grid.svg +1 -1
  1962. data/assets/bootstrap-icons/ui-radios.svg +1 -1
  1963. data/assets/bootstrap-icons/umbrella-fill.svg +1 -1
  1964. data/assets/bootstrap-icons/umbrella.svg +1 -1
  1965. data/assets/bootstrap-icons/unindent.svg +2 -2
  1966. data/assets/bootstrap-icons/union.svg +1 -1
  1967. data/assets/bootstrap-icons/unity.svg +1 -1
  1968. data/assets/bootstrap-icons/universal-access-circle.svg +2 -2
  1969. data/assets/bootstrap-icons/universal-access.svg +1 -1
  1970. data/assets/bootstrap-icons/unlock-fill.svg +1 -1
  1971. data/assets/bootstrap-icons/unlock.svg +1 -1
  1972. data/assets/bootstrap-icons/upc-scan.svg +1 -1
  1973. data/assets/bootstrap-icons/upc.svg +1 -1
  1974. data/assets/bootstrap-icons/upload.svg +2 -2
  1975. data/assets/bootstrap-icons/usb-c-fill.svg +1 -1
  1976. data/assets/bootstrap-icons/usb-c.svg +2 -2
  1977. data/assets/bootstrap-icons/usb-drive-fill.svg +1 -1
  1978. data/assets/bootstrap-icons/usb-drive.svg +1 -1
  1979. data/assets/bootstrap-icons/usb-fill.svg +1 -1
  1980. data/assets/bootstrap-icons/usb-micro-fill.svg +1 -1
  1981. data/assets/bootstrap-icons/usb-micro.svg +2 -2
  1982. data/assets/bootstrap-icons/usb-mini-fill.svg +1 -1
  1983. data/assets/bootstrap-icons/usb-mini.svg +2 -2
  1984. data/assets/bootstrap-icons/usb-plug-fill.svg +1 -1
  1985. data/assets/bootstrap-icons/usb-plug.svg +1 -1
  1986. data/assets/bootstrap-icons/usb-symbol.svg +1 -1
  1987. data/assets/bootstrap-icons/usb.svg +2 -2
  1988. data/assets/bootstrap-icons/valentine.svg +2 -2
  1989. data/assets/bootstrap-icons/valentine2.svg +2 -2
  1990. data/assets/bootstrap-icons/vector-pen.svg +2 -2
  1991. data/assets/bootstrap-icons/view-list.svg +1 -1
  1992. data/assets/bootstrap-icons/view-stacked.svg +1 -1
  1993. data/assets/bootstrap-icons/vignette.svg +4 -0
  1994. data/assets/bootstrap-icons/vimeo.svg +1 -1
  1995. data/assets/bootstrap-icons/vinyl-fill.svg +2 -2
  1996. data/assets/bootstrap-icons/vinyl.svg +3 -3
  1997. data/assets/bootstrap-icons/virus.svg +1 -1
  1998. data/assets/bootstrap-icons/virus2.svg +1 -1
  1999. data/assets/bootstrap-icons/voicemail.svg +1 -1
  2000. data/assets/bootstrap-icons/volume-down-fill.svg +1 -1
  2001. data/assets/bootstrap-icons/volume-down.svg +1 -1
  2002. data/assets/bootstrap-icons/volume-mute-fill.svg +1 -1
  2003. data/assets/bootstrap-icons/volume-mute.svg +1 -1
  2004. data/assets/bootstrap-icons/volume-off-fill.svg +1 -1
  2005. data/assets/bootstrap-icons/volume-off.svg +1 -1
  2006. data/assets/bootstrap-icons/volume-up-fill.svg +3 -3
  2007. data/assets/bootstrap-icons/volume-up.svg +3 -3
  2008. data/assets/bootstrap-icons/vr.svg +1 -1
  2009. data/assets/bootstrap-icons/wallet-fill.svg +2 -2
  2010. data/assets/bootstrap-icons/wallet.svg +1 -1
  2011. data/assets/bootstrap-icons/wallet2.svg +1 -1
  2012. data/assets/bootstrap-icons/watch.svg +2 -2
  2013. data/assets/bootstrap-icons/water.svg +1 -1
  2014. data/assets/bootstrap-icons/webcam-fill.svg +2 -2
  2015. data/assets/bootstrap-icons/webcam.svg +2 -2
  2016. data/assets/bootstrap-icons/wechat.svg +2 -2
  2017. data/assets/bootstrap-icons/whatsapp.svg +1 -1
  2018. data/assets/bootstrap-icons/wifi-1.svg +1 -1
  2019. data/assets/bootstrap-icons/wifi-2.svg +1 -1
  2020. data/assets/bootstrap-icons/wifi-off.svg +1 -1
  2021. data/assets/bootstrap-icons/wifi.svg +2 -2
  2022. data/assets/bootstrap-icons/wikipedia.svg +1 -1
  2023. data/assets/bootstrap-icons/wind.svg +1 -1
  2024. data/assets/bootstrap-icons/window-dash.svg +3 -3
  2025. data/assets/bootstrap-icons/window-desktop.svg +2 -2
  2026. data/assets/bootstrap-icons/window-dock.svg +2 -2
  2027. data/assets/bootstrap-icons/window-fullscreen.svg +2 -2
  2028. data/assets/bootstrap-icons/window-plus.svg +3 -3
  2029. data/assets/bootstrap-icons/window-sidebar.svg +2 -2
  2030. data/assets/bootstrap-icons/window-split.svg +2 -2
  2031. data/assets/bootstrap-icons/window-stack.svg +2 -2
  2032. data/assets/bootstrap-icons/window-x.svg +3 -3
  2033. data/assets/bootstrap-icons/window.svg +2 -2
  2034. data/assets/bootstrap-icons/windows.svg +1 -1
  2035. data/assets/bootstrap-icons/wordpress.svg +3 -3
  2036. data/assets/bootstrap-icons/wrench-adjustable-circle-fill.svg +2 -2
  2037. data/assets/bootstrap-icons/wrench-adjustable-circle.svg +2 -2
  2038. data/assets/bootstrap-icons/wrench-adjustable.svg +2 -2
  2039. data/assets/bootstrap-icons/wrench.svg +1 -1
  2040. data/assets/bootstrap-icons/x-circle-fill.svg +1 -1
  2041. data/assets/bootstrap-icons/x-circle.svg +2 -2
  2042. data/assets/bootstrap-icons/x-diamond-fill.svg +1 -1
  2043. data/assets/bootstrap-icons/x-diamond.svg +1 -1
  2044. data/assets/bootstrap-icons/x-lg.svg +1 -1
  2045. data/assets/bootstrap-icons/x-octagon-fill.svg +1 -1
  2046. data/assets/bootstrap-icons/x-octagon.svg +2 -2
  2047. data/assets/bootstrap-icons/x-square-fill.svg +1 -1
  2048. data/assets/bootstrap-icons/x-square.svg +2 -2
  2049. data/assets/bootstrap-icons/x.svg +1 -1
  2050. data/assets/bootstrap-icons/xbox.svg +1 -1
  2051. data/assets/bootstrap-icons/yelp.svg +1 -1
  2052. data/assets/bootstrap-icons/yin-yang.svg +2 -2
  2053. data/assets/bootstrap-icons/youtube.svg +1 -1
  2054. data/assets/bootstrap-icons/zoom-in.svg +3 -3
  2055. data/assets/bootstrap-icons/zoom-out.svg +3 -3
  2056. data/assets/js/bootstrap.bundle.js +16 -8
  2057. data/assets/js/bootstrap.bundle.js.map +1 -1
  2058. data/assets/js/bootstrap.bundle.min.js +2 -2
  2059. data/assets/js/bootstrap.bundle.min.js.map +1 -1
  2060. data/assets/js/bootstrap.esm.js +16 -8
  2061. data/assets/js/bootstrap.esm.js.map +1 -1
  2062. data/assets/js/bootstrap.esm.min.js +2 -2
  2063. data/assets/js/bootstrap.esm.min.js.map +1 -1
  2064. data/assets/js/bootstrap.js +16 -8
  2065. data/assets/js/bootstrap.js.map +1 -1
  2066. data/assets/js/bootstrap.min.js +2 -2
  2067. data/assets/js/bootstrap.min.js.map +1 -1
  2068. metadata +105 -4
  2069. data/assets/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
  2070. data/assets/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","toType","object","Object","prototype","toString","call","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","domElement","findHandler","events","callable","delegationSelector","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","handlers","previousFunction","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","_unused","defineProperty","configurable","normalizeData","JSON","parse","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","autoClose","boundary","display","offset","popperConfig","reference","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","modifiers","options","enabled","_selectMenuItem","openToggles","context","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","dataApiKeydownHandler","clearMenus","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","scrollTop","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","scroll","Offcanvas","blur","completeCallback","position","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","fallbackPlacements","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","hash","height","offsetTop","scrollTo","top","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","item","activeNodes","node","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/dom/data.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.0'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"],"mappings":";;;;;sCAWA,MAAMA,WAAa,IAAIC,IAEvBC,KAAe,CACbC,IAAIC,EAASC,EAAKC,GACXN,WAAWO,IAAIH,IAClBJ,WAAWG,IAAIC,EAAS,IAAIH,KAG9B,MAAMO,EAAcR,WAAWS,IAAIL,GAI9BI,EAAYD,IAAIF,IAA6B,IAArBG,EAAYE,KAMzCF,EAAYL,IAAIE,EAAKC,GAJnBK,QAAQC,MAAO,+EAA8EC,MAAMC,KAAKN,EAAYO,QAAQ,M,EAOhIN,IAAGA,CAACL,EAASC,IACPL,WAAWO,IAAIH,IACVJ,WAAWS,IAAIL,GAASK,IAAIJ,IAG9B,KAGTW,OAAOZ,EAASC,GACd,IAAKL,WAAWO,IAAIH,GAClB,OAGF,MAAMI,EAAcR,WAAWS,IAAIL,GAEnCI,EAAYS,OAAOZ,GAGM,IAArBG,EAAYE,MACdV,WAAWiB,OAAOb,EAEtB,GC9CIc,QAAU,IACVC,wBAA0B,IAC1BC,eAAiB,gBAOjBC,cAAgBC,IAChBA,GAAYC,OAAOC,KAAOD,OAAOC,IAAIC,SAEvCH,EAAWA,EAASI,QAAQ,iBAAiB,CAACC,EAAOC,IAAQ,IAAGJ,IAAIC,OAAOG,QAGtEN,GAIHO,OAASC,GACTA,QACM,GAAEA,IAGLC,OAAOC,UAAUC,SAASC,KAAKJ,GAAQH,MAAM,eAAe,GAAGQ,cAOlEC,OAASC,IACb,GACEA,GAAUC,KAAKC,MAjCH,IAiCSD,KAAKE,gBACnBC,SAASC,eAAeL,IAEjC,OAAOA,CAAM,EAGTM,iCAAmCvC,IACvC,IAAKA,EACH,OAAO,EAIT,IAAIwC,mBAAEA,EAAkBC,gBAAEA,GAAoBtB,OAAOuB,iBAAiB1C,GAEtE,MAAM2C,EAA0BC,OAAOC,WAAWL,GAC5CM,EAAuBF,OAAOC,WAAWJ,GAG/C,OAAKE,GAA4BG,GAKjCN,EAAqBA,EAAmBO,MAAM,KAAK,GACnDN,EAAkBA,EAAgBM,MAAM,KAAK,GAxDf,KA0DtBH,OAAOC,WAAWL,GAAsBI,OAAOC,WAAWJ,KAPzD,CAOoG,EAGzGO,qBAAuBhD,IAC3BA,EAAQiD,cAAc,IAAIC,MAAMlC,gBAAgB,EAG5CmC,UAAYzB,MACXA,GAA4B,iBAAXA,UAIO,IAAlBA,EAAO0B,SAChB1B,EAASA,EAAO,SAGgB,IAApBA,EAAO2B,UAGjBC,WAAa5B,GAEbyB,UAAUzB,GACLA,EAAO0B,OAAS1B,EAAO,GAAKA,EAGf,iBAAXA,GAAuBA,EAAO6B,OAAS,EACzClB,SAASmB,cAAcvC,cAAcS,IAGvC,KAGH+B,UAAYzD,IAChB,IAAKmD,UAAUnD,IAAgD,IAApCA,EAAQ0D,iBAAiBH,OAClD,OAAO,EAGT,MAAMI,EAAgF,YAA7DjB,iBAAiB1C,GAAS4D,iBAAiB,cAE9DC,EAAgB7D,EAAQ8D,QAAQ,uBAEtC,IAAKD,EACH,OAAOF,EAGT,GAAIE,IAAkB7D,EAAS,CAC7B,MAAM+D,EAAU/D,EAAQ8D,QAAQ,WAChC,GAAIC,GAAWA,EAAQC,aAAeH,EACpC,OAAO,EAGT,GAAgB,OAAZE,EACF,OAAO,CAEX,CAEA,OAAOJ,CAAgB,EAGnBM,WAAajE,IACZA,GAAWA,EAAQqD,WAAaa,KAAKC,gBAItCnE,EAAQoE,UAAUC,SAAS,mBAIC,IAArBrE,EAAQsE,SACVtE,EAAQsE,SAGVtE,EAAQuE,aAAa,aAAoD,UAArCvE,EAAQwE,aAAa,aAG5DC,eAAiBzE,IACrB,IAAKqC,SAASqC,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxB3E,EAAQ4E,YAA4B,CAC7C,MAAMC,EAAO7E,EAAQ4E,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,IAC7C,CAEA,OAAI7E,aAAmB8E,WACd9E,EAIJA,EAAQgE,WAINS,eAAezE,EAAQgE,YAHrB,IAGgC,EAGrCe,KAAOA,OAUPC,OAAShF,IACbA,EAAQiF,YAAY,EAGhBC,UAAYA,IACZ/D,OAAOgE,SAAW9C,SAAS+C,KAAKb,aAAa,qBACxCpD,OAAOgE,OAGT,KAGHE,0BAA4B,GAE5BC,mBAAqBC,IACG,YAAxBlD,SAASmD,YAENH,0BAA0B9B,QAC7BlB,SAASoD,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMF,KAAYF,0BACrBE,GACF,IAIJF,0BAA0BK,KAAKH,IAE/BA,GACF,EAGII,MAAQA,IAAuC,QAAjCtD,SAASqC,gBAAgBkB,IAEvCC,mBAAqBC,IAnBAP,QAoBN,KACjB,MAAMQ,EAAIb,YAEV,GAAIa,EAAG,CACL,MAAMC,EAAOF,EAAOG,KACdC,EAAqBH,EAAEI,GAAGH,GAChCD,EAAEI,GAAGH,GAAQF,EAAOM,gBACpBL,EAAEI,GAAGH,GAAMK,YAAcP,EACzBC,EAAEI,GAAGH,GAAMM,WAAa,KACtBP,EAAEI,GAAGH,GAAQE,EACNJ,EAAOM,gBAElB,GA/B0B,YAAxB/D,SAASmD,YAENH,0BAA0B9B,QAC7BlB,SAASoD,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMF,KAAYF,0BACrBE,GACF,IAIJF,0BAA0BK,KAAKH,IAE/BA,GAoBA,EAGEgB,QAAUA,CAACC,EAAkBC,EAAO,GAAIC,EAAeF,IACxB,mBAArBA,EAAkCA,KAAoBC,GAAQC,EAGxEC,uBAAyBA,CAACpB,EAAUqB,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAN,QAAQhB,GAIV,MACMuB,EAAmBvE,iCAAiCqE,GADlC,EAGxB,IAAIG,GAAS,EAEb,MAAMC,EAAUA,EAAGC,aACbA,IAAWL,IAIfG,GAAS,EACTH,EAAkBM,oBAAoBlG,eAAgBgG,GACtDT,QAAQhB,GAAS,EAGnBqB,EAAkBnB,iBAAiBzE,eAAgBgG,GACnDG,YAAW,KACJJ,GACH/D,qBAAqB4D,EACvB,GACCE,EAAiB,EAYhBM,qBAAuBA,CAACC,EAAMC,EAAeC,EAAeC,KAChE,MAAMC,EAAaJ,EAAK9D,OACxB,IAAImE,EAAQL,EAAKM,QAAQL,GAIzB,OAAe,IAAXI,GACMH,GAAiBC,EAAiBH,EAAKI,EAAa,GAAKJ,EAAK,IAGxEK,GAASH,EAAgB,GAAK,EAE1BC,IACFE,GAASA,EAAQD,GAAcA,GAG1BJ,EAAKnF,KAAK0F,IAAI,EAAG1F,KAAK2F,IAAIH,EAAOD,EAAa,KAAI,EC7QrDK,eAAiB,qBACjBC,eAAiB,OACjBC,cAAgB,SAChBC,cAAgB,GACtB,IAAIC,SAAW,EACf,MAAMC,aAAe,CACnBC,WAAY,YACZC,WAAY,YAGRC,aAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOF,SAASC,aAAaxI,EAASyI,GAC7B,OAAQA,GAAQ,GAAEA,MAAQP,cAAiBlI,EAAQkI,UAAYA,UACjE,CAEA,SAASQ,iBAAiB1I,GACxB,MAAMyI,EAAMD,aAAaxI,GAKzB,OAHAA,EAAQkI,SAAWO,EACnBR,cAAcQ,GAAOR,cAAcQ,IAAQ,GAEpCR,cAAcQ,EACvB,CAEA,SAASE,iBAAiB3I,EAASmG,GACjC,OAAO,SAASa,EAAQ4B,GAOtB,OANAC,WAAWD,EAAO,CAAEE,eAAgB9I,IAEhCgH,EAAQ+B,QACVC,aAAaC,IAAIjJ,EAAS4I,EAAMM,KAAM/C,GAGjCA,EAAGgD,MAAMnJ,EAAS,CAAC4I,G,CAE9B,CAEA,SAASQ,2BAA2BpJ,EAASkB,EAAUiF,GACrD,OAAO,SAASa,EAAQ4B,GACtB,MAAMS,EAAcrJ,EAAQsJ,iBAAiBpI,GAE7C,IAAK,IAAI+F,OAAEA,GAAW2B,EAAO3B,GAAUA,IAAWsC,KAAMtC,EAASA,EAAOjD,WACtE,IAAK,MAAMwF,KAAcH,EACvB,GAAIG,IAAevC,EAUnB,OANA4B,WAAWD,EAAO,CAAEE,eAAgB7B,IAEhCD,EAAQ+B,QACVC,aAAaC,IAAIjJ,EAAS4I,EAAMM,KAAMhI,EAAUiF,GAG3CA,EAAGgD,MAAMlC,EAAQ,CAAC2B,G,CAIjC,CAEA,SAASa,YAAYC,EAAQC,EAAUC,EAAqB,MAC1D,OAAOjI,OAAOkI,OAAOH,GAClBI,MAAKlB,GAASA,EAAMe,WAAaA,GAAYf,EAAMgB,qBAAuBA,GAC/E,CAEA,SAASG,oBAAoBC,EAAmBhD,EAASiD,GACvD,MAAMC,EAAiC,iBAAZlD,EAErB2C,EAAWO,EAAcD,EAAsBjD,GAAWiD,EAChE,IAAIE,EAAYC,aAAaJ,GAM7B,OAJK1B,aAAanI,IAAIgK,KACpBA,EAAYH,GAGP,CAACE,EAAaP,EAAUQ,EACjC,CAEA,SAASE,WAAWrK,EAASgK,EAAmBhD,EAASiD,EAAoBlB,GAC3E,GAAiC,iBAAtBiB,IAAmChK,EAC5C,OAGF,IAAKkK,EAAaP,EAAUQ,GAAaJ,oBAAoBC,EAAmBhD,EAASiD,GAIzF,GAAID,KAAqB7B,aAAc,CACrC,MAAMmC,EAAenE,GACZ,SAAUyC,GACf,IAAKA,EAAM2B,eAAkB3B,EAAM2B,gBAAkB3B,EAAME,iBAAmBF,EAAME,eAAezE,SAASuE,EAAM2B,eAChH,OAAOpE,EAAGrE,KAAKyH,KAAMX,E,EAK3Be,EAAWW,EAAaX,EAC1B,CAEA,MAAMD,EAAShB,iBAAiB1I,GAC1BwK,EAAWd,EAAOS,KAAeT,EAAOS,GAAa,IACrDM,EAAmBhB,YAAYe,EAAUb,EAAUO,EAAclD,EAAU,MAEjF,GAAIyD,EAGF,YAFAA,EAAiB1B,OAAS0B,EAAiB1B,QAAUA,GAKvD,MAAMN,EAAMD,aAAamB,EAAUK,EAAkB1I,QAAQwG,eAAgB,KACvE3B,EAAK+D,EACTd,2BAA2BpJ,EAASgH,EAAS2C,GAC7ChB,iBAAiB3I,EAAS2J,GAE5BxD,EAAGyD,mBAAqBM,EAAclD,EAAU,KAChDb,EAAGwD,SAAWA,EACdxD,EAAG4C,OAASA,EACZ5C,EAAG+B,SAAWO,EACd+B,EAAS/B,GAAOtC,EAEhBnG,EAAQyF,iBAAiB0E,EAAWhE,EAAI+D,EAC1C,CAEA,SAASQ,cAAc1K,EAAS0J,EAAQS,EAAWnD,EAAS4C,GAC1D,MAAMzD,EAAKsD,YAAYC,EAAOS,GAAYnD,EAAS4C,GAE9CzD,IAILnG,EAAQkH,oBAAoBiD,EAAWhE,EAAIwE,QAAQf,WAC5CF,EAAOS,GAAWhE,EAAG+B,UAC9B,CAEA,SAAS0C,yBAAyB5K,EAAS0J,EAAQS,EAAWU,GAC5D,MAAMC,EAAoBpB,EAAOS,IAAc,GAE/C,IAAK,MAAOY,EAAYnC,KAAUjH,OAAOqJ,QAAQF,GAC3CC,EAAWE,SAASJ,IACtBH,cAAc1K,EAAS0J,EAAQS,EAAWvB,EAAMe,SAAUf,EAAMgB,mBAGtE,CAEA,SAASQ,aAAaxB,GAGpB,OADAA,EAAQA,EAAMtH,QAAQyG,eAAgB,IAC/BI,aAAaS,IAAUA,CAChC,CAEA,MAAMI,aAAe,CACnBkC,GAAGlL,EAAS4I,EAAO5B,EAASiD,GAC1BI,WAAWrK,EAAS4I,EAAO5B,EAASiD,GAAoB,E,EAG1DkB,IAAInL,EAAS4I,EAAO5B,EAASiD,GAC3BI,WAAWrK,EAAS4I,EAAO5B,EAASiD,GAAoB,E,EAG1DhB,IAAIjJ,EAASgK,EAAmBhD,EAASiD,GACvC,GAAiC,iBAAtBD,IAAmChK,EAC5C,OAGF,MAAOkK,EAAaP,EAAUQ,GAAaJ,oBAAoBC,EAAmBhD,EAASiD,GACrFmB,EAAcjB,IAAcH,EAC5BN,EAAShB,iBAAiB1I,GAC1B8K,EAAoBpB,EAAOS,IAAc,GACzCkB,EAAcrB,EAAkBsB,WAAW,KAEjD,QAAwB,IAAb3B,EAAX,CAUA,GAAI0B,EACF,IAAK,MAAME,KAAgB5J,OAAOhB,KAAK+I,GACrCkB,yBAAyB5K,EAAS0J,EAAQ6B,EAAcvB,EAAkBwB,MAAM,IAIpF,IAAK,MAAOC,EAAa7C,KAAUjH,OAAOqJ,QAAQF,GAAoB,CACpE,MAAMC,EAAaU,EAAYnK,QAAQ0G,cAAe,IAEjDoD,IAAepB,EAAkBiB,SAASF,IAC7CL,cAAc1K,EAAS0J,EAAQS,EAAWvB,EAAMe,SAAUf,EAAMgB,mBAEpE,CAdA,KARA,CAEE,IAAKjI,OAAOhB,KAAKmK,GAAmBvH,OAClC,OAGFmH,cAAc1K,EAAS0J,EAAQS,EAAWR,EAAUO,EAAclD,EAAU,KAE9E,C,EAiBF0E,QAAQ1L,EAAS4I,EAAOnC,GACtB,GAAqB,iBAAVmC,IAAuB5I,EAChC,OAAO,KAGT,MAAM+F,EAAIb,YAIV,IAAIyG,EAAc,KACdC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EALHlD,IADFwB,aAAaxB,IAQZ7C,IACjB4F,EAAc5F,EAAE7C,MAAM0F,EAAOnC,GAE7BV,EAAE/F,GAAS0L,QAAQC,GACnBC,GAAWD,EAAYI,uBACvBF,GAAkBF,EAAYK,gCAC9BF,EAAmBH,EAAYM,sBAGjC,MAAMC,EAAMrD,WAAW,IAAI3F,MAAM0F,EAAO,CAAEgD,UAASO,YAAY,IAAS1F,GAcxE,OAZIqF,GACFI,EAAIE,iBAGFP,GACF7L,EAAQiD,cAAciJ,GAGpBA,EAAIJ,kBAAoBH,GAC1BA,EAAYS,iBAGPF,CACT,GAGF,SAASrD,WAAWwD,EAAKC,EAAO,IAC9B,IAAK,MAAOrM,EAAKsM,KAAU5K,OAAOqJ,QAAQsB,GACxC,IACED,EAAIpM,GAAOsM,CAQb,CAPE,MAAAC,GACA7K,OAAO8K,eAAeJ,EAAKpM,EAAK,CAC9ByM,cAAc,EACdrM,IAAGA,IACMkM,GAGb,CAGF,OAAOF,CACT,CCnTA,SAASM,cAAcJ,GACrB,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,GAAIA,IAAU3J,OAAO2J,GAAO1K,WAC1B,OAAOe,OAAO2J,GAGhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,IACE,OAAOK,KAAKC,MAAMC,mBAAmBP,GAGvC,CAFE,MAAAC,GACA,OAAOD,CACT,CACF,CAEA,SAASQ,iBAAiB9M,GACxB,OAAOA,EAAIqB,QAAQ,UAAU0L,GAAQ,IAAGA,EAAIjL,iBAC9C,CAEA,MAAMkL,YAAc,CAClBC,iBAAiBlN,EAASC,EAAKsM,GAC7BvM,EAAQmN,aAAc,WAAUJ,iBAAiB9M,KAAQsM,E,EAG3Da,oBAAoBpN,EAASC,GAC3BD,EAAQqN,gBAAiB,WAAUN,iBAAiB9M,K,EAGtDqN,kBAAkBtN,GAChB,IAAKA,EACH,MAAO,GAGT,MAAMuN,EAAa,GACbC,EAAS7L,OAAOhB,KAAKX,EAAQyN,SAASC,QAAOzN,GAAOA,EAAIqL,WAAW,QAAUrL,EAAIqL,WAAW,cAElG,IAAK,MAAMrL,KAAOuN,EAAQ,CACxB,IAAIG,EAAU1N,EAAIqB,QAAQ,MAAO,IACjCqM,EAAUA,EAAQC,OAAO,GAAG7L,cAAgB4L,EAAQnC,MAAM,EAAGmC,EAAQpK,QACrEgK,EAAWI,GAAWhB,cAAc3M,EAAQyN,QAAQxN,GACtD,CAEA,OAAOsN,C,EAGTM,iBAAgBA,CAAC7N,EAASC,IACjB0M,cAAc3M,EAAQwE,aAAc,WAAUuI,iBAAiB9M,QCpD1E,MAAM6N,OAEOC,qBACT,MAAO,EACT,CAEWC,yBACT,MAAO,EACT,CAEW/H,kBACT,MAAM,IAAIgI,MAAM,sEAClB,CAEAC,WAAWC,GAIT,OAHAA,EAAS5E,KAAK6E,gBAAgBD,GAC9BA,EAAS5E,KAAK8E,kBAAkBF,GAChC5E,KAAK+E,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAChB,OAAOA,CACT,CAEAC,gBAAgBD,EAAQnO,GACtB,MAAMuO,EAAapL,UAAUnD,GAAWiN,YAAYY,iBAAiB7N,EAAS,UAAY,GAE1F,MAAO,IACFuJ,KAAKiF,YAAYT,WACM,iBAAfQ,EAA0BA,EAAa,MAC9CpL,UAAUnD,GAAWiN,YAAYK,kBAAkBtN,GAAW,MAC5C,iBAAXmO,EAAsBA,EAAS,GAE9C,CAEAG,iBAAiBH,EAAQM,EAAclF,KAAKiF,YAAYR,aACtD,IAAK,MAAOU,EAAUC,KAAkBhN,OAAOqJ,QAAQyD,GAAc,CACnE,MAAMlC,EAAQ4B,EAAOO,GACfE,EAAYzL,UAAUoJ,GAAS,UH1BrC7K,OADSA,EG2B+C6K,GHzBlD,GAAE7K,IAGLC,OAAOC,UAAUC,SAASC,KAAKJ,GAAQH,MAAM,eAAe,GAAGQ,cGwBlE,IAAK,IAAI8M,OAAOF,GAAeG,KAAKF,GAClC,MAAM,IAAIG,UACP,GAAExF,KAAKiF,YAAYvI,KAAK+I,0BAA0BN,qBAA4BE,yBAAiCD,MAGtH,CHlCWjN,KGmCb,EC7CF,MAAMuN,QAAU,QAMhB,MAAMC,sBAAsBpB,OAC1BU,YAAYxO,EAASmO,GACnBgB,SAEAnP,EAAUsD,WAAWtD,MAKrBuJ,KAAK6F,SAAWpP,EAChBuJ,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAE/BrO,KAAKC,IAAIwJ,KAAK6F,SAAU7F,KAAKiF,YAAYc,SAAU/F,MACrD,CAGAgG,UACEzP,KAAKc,OAAO2I,KAAK6F,SAAU7F,KAAKiF,YAAYc,UAC5CtG,aAAaC,IAAIM,KAAK6F,SAAU7F,KAAKiF,YAAYgB,WAEjD,IAAK,MAAMC,KAAgB9N,OAAO+N,oBAAoBnG,MACpDA,KAAKkG,GAAgB,IAEzB,CAEAE,eAAepK,EAAUvF,EAAS4P,GAAa,GAC7CjJ,uBAAuBpB,EAAUvF,EAAS4P,EAC5C,CAEA1B,WAAWC,GAIT,OAHAA,EAAS5E,KAAK6E,gBAAgBD,EAAQ5E,KAAK6F,UAC3CjB,EAAS5E,KAAK8E,kBAAkBF,GAChC5E,KAAK+E,iBAAiBH,GACfA,CACT,CAGA0B,mBAAmB7P,GACjB,OAAOF,KAAKO,IAAIiD,WAAWtD,GAAUuJ,KAAK+F,SAC5C,CAEAO,2BAA2B7P,EAASmO,EAAS,IAC3C,OAAO5E,KAAKuG,YAAY9P,IAAY,IAAIuJ,KAAKvJ,EAA2B,iBAAXmO,EAAsBA,EAAS,KAC9F,CAEWc,qBACT,MApDY,OAqDd,CAEWK,sBACT,MAAQ,MAAK/F,KAAKtD,MACpB,CAEWuJ,uBACT,MAAQ,IAAGjG,KAAK+F,UAClB,CAEAO,iBAAiB7J,GACf,MAAQ,GAAEA,IAAOuD,KAAKiG,WACxB,ECxEF,MAAMO,YAAc/P,IAClB,IAAIkB,EAAWlB,EAAQwE,aAAa,kBAEpC,IAAKtD,GAAyB,MAAbA,EAAkB,CACjC,IAAI8O,EAAgBhQ,EAAQwE,aAAa,QAMzC,IAAKwL,IAAmBA,EAAc/E,SAAS,OAAS+E,EAAc1E,WAAW,KAC/E,OAAO,KAIL0E,EAAc/E,SAAS,OAAS+E,EAAc1E,WAAW,OAC3D0E,EAAiB,IAAGA,EAAcjN,MAAM,KAAK,MAG/C7B,EAAW8O,GAAmC,MAAlBA,EAAwBA,EAAcC,OAAS,IAC7E,CAEA,OAAOhP,cAAcC,EAAS,EAG1BgP,eAAiB,CACrBpG,KAAIA,CAAC5I,EAAUlB,EAAUqC,SAASqC,kBACzB,GAAGyL,UAAUC,QAAQxO,UAAU0H,iBAAiBxH,KAAK9B,EAASkB,IAGvEmP,QAAOA,CAACnP,EAAUlB,EAAUqC,SAASqC,kBAC5B0L,QAAQxO,UAAU4B,cAAc1B,KAAK9B,EAASkB,GAGvDoP,SAAQA,CAACtQ,EAASkB,IACT,GAAGiP,UAAUnQ,EAAQsQ,UAAU5C,QAAO6C,GAASA,EAAMC,QAAQtP,KAGtEuP,QAAQzQ,EAASkB,GACf,MAAMuP,EAAU,GAChB,IAAIC,EAAW1Q,EAAQgE,WAAWF,QAAQ5C,GAE1C,KAAOwP,GACLD,EAAQ/K,KAAKgL,GACbA,EAAWA,EAAS1M,WAAWF,QAAQ5C,GAGzC,OAAOuP,C,EAGTE,KAAK3Q,EAASkB,GACZ,IAAI0P,EAAW5Q,EAAQ6Q,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASJ,QAAQtP,GACnB,MAAO,CAAC0P,GAGVA,EAAWA,EAASC,sBACtB,CAEA,MAAO,E,EAGTC,KAAK9Q,EAASkB,GACZ,IAAI4P,EAAO9Q,EAAQ+Q,mBAEnB,KAAOD,GAAM,CACX,GAAIA,EAAKN,QAAQtP,GACf,MAAO,CAAC4P,GAGVA,EAAOA,EAAKC,kBACd,CAEA,MAAO,E,EAGTC,kBAAkBhR,GAChB,MAAMiR,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAC,KAAIhQ,GAAa,GAAEA,2BAAiCiQ,KAAK,KAE3D,OAAO5H,KAAKO,KAAKmH,EAAYjR,GAAS0N,QAAO0D,IAAOnN,WAAWmN,IAAO3N,UAAU2N,I,EAGlFC,uBAAuBrR,GACrB,MAAMkB,EAAW6O,YAAY/P,GAE7B,OAAIkB,GACKgP,eAAeG,QAAQnP,GAAYA,EAGrC,I,EAGToQ,uBAAuBtR,GACrB,MAAMkB,EAAW6O,YAAY/P,GAE7B,OAAOkB,EAAWgP,eAAeG,QAAQnP,GAAY,I,EAGvDqQ,gCAAgCvR,GAC9B,MAAMkB,EAAW6O,YAAY/P,GAE7B,OAAOkB,EAAWgP,eAAepG,KAAK5I,GAAY,EACpD,GC/GIsQ,qBAAuBA,CAACC,EAAWC,EAAS,UAChD,MAAMC,EAAc,gBAAeF,EAAUjC,YACvCxJ,EAAOyL,EAAUxL,KAEvB+C,aAAakC,GAAG7I,SAAUsP,EAAa,qBAAoB3L,OAAU,SAAU4C,GAK7E,GAJI,CAAC,IAAK,QAAQqC,SAAS1B,KAAKqI,UAC9BhJ,EAAMwD,iBAGJnI,WAAWsF,MACb,OAGF,MAAMtC,EAASiJ,eAAeoB,uBAAuB/H,OAASA,KAAKzF,QAAS,IAAGkC,KAC9DyL,EAAUI,oBAAoB5K,GAGtCyK,IACX,GAAE,ECbEzL,OAAO,QACPqJ,WAAW,WACXE,YAAa,YAEbsC,YAAe,iBACfC,aAAgB,kBAChBC,kBAAkB,OAClBC,kBAAkB,OAMxB,MAAMC,cAAchD,cAEPjJ,kBACT,OAAOA,MACT,CAGAkM,QAGE,GAFmBnJ,aAAa0C,QAAQnC,KAAK6F,SAAU0C,aAExChG,iBACb,OAGFvC,KAAK6F,SAAShL,UAAUxD,OApBJ,QAsBpB,MAAMgP,EAAarG,KAAK6F,SAAShL,UAAUC,SAvBvB,QAwBpBkF,KAAKoG,gBAAe,IAAMpG,KAAK6I,mBAAmB7I,KAAK6F,SAAUQ,EACnE,CAGAwC,kBACE7I,KAAK6F,SAASxO,SACdoI,aAAa0C,QAAQnC,KAAK6F,SAAU2C,cACpCxI,KAAKgG,SACP,CAGAM,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOJ,MAAML,oBAAoBtI,MAEvC,GAAsB,iBAAX4E,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5E,KANb,CAOF,GACF,EAOFiI,qBAAqBU,MAAO,SAM5BrM,mBAAmBqM,OCrEnB,MAAMjM,OAAO,SACPqJ,WAAW,YACXE,YAAa,aACbgD,eAAe,YAEfC,oBAAoB,SACpBC,uBAAuB,4BACvBC,uBAAwB,2BAM9B,MAAMC,eAAe1D,cAERjJ,kBACT,OAAOA,MACT,CAGA4M,SAEEtJ,KAAK6F,SAASjC,aAAa,eAAgB5D,KAAK6F,SAAShL,UAAUyO,OAjB7C,UAkBxB,CAGAhD,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOM,OAAOf,oBAAoBtI,MAEzB,WAAX4E,GACFmE,EAAKnE,IAET,GACF,EAOFnF,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB9J,IACpEA,EAAMwD,iBAEN,MAAM0G,EAASlK,EAAM3B,OAAOnD,QAAQ4O,wBACvBE,OAAOf,oBAAoBiB,GAEnCD,QAAQ,IAOfhN,mBAAmB+M,QCtDnB,MAAM3M,OAAO,QACPuJ,YAAY,YACZuD,iBAAoB,sBACpBC,gBAAmB,qBACnBC,eAAkB,oBAClBC,kBAAqB,uBACrBC,gBAAmB,qBACnBC,mBAAqB,QACrBC,iBAAmB,MACnBC,yBAA2B,gBAC3BC,gBAAkB,GAElBxF,UAAU,CACdyF,YAAa,KACbC,aAAc,KACdC,cAAe,MAGX1F,cAAc,CAClBwF,YAAa,kBACbC,aAAc,kBACdC,cAAe,mBAOjB,MAAMC,cAAc7F,OAClBU,YAAYxO,EAASmO,GACnBgB,QACA5F,KAAK6F,SAAWpP,EAEXA,GAAY2T,MAAMC,gBAIvBrK,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAC/B5E,KAAKsK,QAAU,EACftK,KAAKuK,sBAAwBnJ,QAAQxJ,OAAO4S,cAC5CxK,KAAKyK,cACP,CAGWjG,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGAsJ,UACEvG,aAAaC,IAAIM,KAAK6F,SAzDR,YA0DhB,CAGA6E,OAAOrL,GACAW,KAAKuK,sBAMNvK,KAAK2K,wBAAwBtL,KAC/BW,KAAKsK,QAAUjL,EAAMuL,SANrB5K,KAAKsK,QAAUjL,EAAMwL,QAAQ,GAAGD,OAQpC,CAEAE,KAAKzL,GACCW,KAAK2K,wBAAwBtL,KAC/BW,KAAKsK,QAAUjL,EAAMuL,QAAU5K,KAAKsK,SAGtCtK,KAAK+K,eACL/N,QAAQgD,KAAK8F,QAAQmE,YACvB,CAEAe,MAAM3L,GACJW,KAAKsK,QAAUjL,EAAMwL,SAAWxL,EAAMwL,QAAQ7Q,OAAS,EACrD,EACAqF,EAAMwL,QAAQ,GAAGD,QAAU5K,KAAKsK,OACpC,CAEAS,eACE,MAAME,EAAYtS,KAAKuS,IAAIlL,KAAKsK,SAEhC,GAAIW,GAlFgB,GAmFlB,OAGF,MAAME,EAAYF,EAAYjL,KAAKsK,QAEnCtK,KAAKsK,QAAU,EAEVa,GAILnO,QAAQmO,EAAY,EAAInL,KAAK8F,QAAQqE,cAAgBnK,KAAK8F,QAAQoE,aACpE,CAEAO,cACMzK,KAAKuK,uBACP9K,aAAakC,GAAG3B,KAAK6F,SAAU8D,mBAAmBtK,GAASW,KAAK0K,OAAOrL,KACvEI,aAAakC,GAAG3B,KAAK6F,SAAU+D,iBAAiBvK,GAASW,KAAK8K,KAAKzL,KAEnEW,KAAK6F,SAAShL,UAAUuQ,IAvGG,mBAyG3B3L,aAAakC,GAAG3B,KAAK6F,SAAU2D,kBAAkBnK,GAASW,KAAK0K,OAAOrL,KACtEI,aAAakC,GAAG3B,KAAK6F,SAAU4D,iBAAiBpK,GAASW,KAAKgL,MAAM3L,KACpEI,aAAakC,GAAG3B,KAAK6F,SAAU6D,gBAAgBrK,GAASW,KAAK8K,KAAKzL,KAEtE,CAEAsL,wBAAwBtL,GACtB,OAAOW,KAAKuK,wBAjHS,QAiHiBlL,EAAMgM,aAlHrB,UAkHyDhM,EAAMgM,YACxF,CAGA/E,qBACE,MAAO,iBAAkBxN,SAASqC,iBAAmBmQ,UAAUC,eAAiB,CAClF,ECrHF,MAAM7O,OAAO,WACPqJ,WAAW,cACXE,YAAa,eACbgD,eAAe,YAEfuC,iBAAiB,YACjBC,kBAAkB,aAClBC,uBAAyB,IAEzBC,WAAa,OACbC,WAAa,OACbC,eAAiB,OACjBC,gBAAkB,QAElBC,YAAe,oBACfC,WAAc,mBACdC,gBAAiB,sBACjBC,mBAAoB,yBACpBC,mBAAoB,yBACpBC,iBAAoB,wBACpBC,sBAAuB,4BACvBjD,uBAAwB,6BAExBkD,oBAAsB,WACtBpD,oBAAoB,SACpBqD,iBAAmB,QACnBC,eAAiB,oBACjBC,iBAAmB,sBACnBC,gBAAkB,qBAClBC,gBAAkB,qBAElBC,gBAAkB,UAClBC,cAAgB,iBAChBC,qBAAuBF,wBACvBG,kBAAoB,qBACpBC,oBAAsB,uBACtBC,oBAAsB,sCACtBC,mBAAqB,4BAErBC,iBAAmB,CACvBC,UA5BsB,QA6BtBC,WA9BqB,QAiCjB7I,UAAU,CACd8I,SAAU,IACVC,UAAU,EACVC,MAAO,QACPC,MAAM,EACNC,OAAO,EACPC,MAAM,GAGFlJ,cAAc,CAClB6I,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,KAAM,mBACNC,MAAO,UACPC,KAAM,WAOR,MAAMC,iBAAiBjI,cACrBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAK6N,UAAY,KACjB7N,KAAK8N,eAAiB,KACtB9N,KAAK+N,YAAa,EAClB/N,KAAKgO,aAAe,KACpBhO,KAAKiO,aAAe,KAEpBjO,KAAKkO,mBAAqBvH,eAAeG,QAAQkG,oBAAqBhN,KAAK6F,UAC3E7F,KAAKmO,qBAtDmB,aAwDpBnO,KAAK8F,QAAQ2H,MACfzN,KAAKoO,OAET,CAGW5J,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA6K,OACEvH,KAAKqO,OA1FU,OA2FjB,CAEAC,mBAIOxV,SAASyV,QAAUrU,UAAU8F,KAAK6F,WACrC7F,KAAKuH,MAET,CAEAH,OACEpH,KAAKqO,OAtGU,OAuGjB,CAEAb,QACMxN,KAAK+N,YACPtU,qBAAqBuG,KAAK6F,UAG5B7F,KAAKwO,gBACP,CAEAJ,QACEpO,KAAKwO,iBACLxO,KAAKyO,kBAELzO,KAAK6N,UAAYa,aAAY,IAAM1O,KAAKsO,mBAAmBtO,KAAK8F,QAAQwH,SAC1E,CAEAqB,oBACO3O,KAAK8F,QAAQ2H,OAIdzN,KAAK+N,WACPtO,aAAamC,IAAI5B,KAAK6F,SAAUmG,YAAY,IAAMhM,KAAKoO,UAIzDpO,KAAKoO,QACP,CAEAQ,GAAGzQ,GACD,MAAM0Q,EAAQ7O,KAAK8O,YACnB,GAAI3Q,EAAQ0Q,EAAM7U,OAAS,GAAKmE,EAAQ,EACtC,OAGF,GAAI6B,KAAK+N,WAEP,YADAtO,aAAamC,IAAI5B,KAAK6F,SAAUmG,YAAY,IAAMhM,KAAK4O,GAAGzQ,KAI5D,MAAM4Q,EAAc/O,KAAKgP,cAAchP,KAAKiP,cAC5C,GAAIF,IAAgB5Q,EAClB,OAGF,MAAM+Q,EAAQ/Q,EAAQ4Q,EAtJP,OACA,OAuJf/O,KAAKqO,OAAOa,EAAOL,EAAM1Q,GAC3B,CAEA6H,UACMhG,KAAKiO,cACPjO,KAAKiO,aAAajI,UAGpBJ,MAAMI,SACR,CAGAlB,kBAAkBF,GAEhB,OADAA,EAAOuK,gBAAkBvK,EAAO0I,SACzB1I,CACT,CAEAuJ,qBACMnO,KAAK8F,QAAQyH,UACf9N,aAAakC,GAAG3B,KAAK6F,SAAUoG,iBAAe5M,GAASW,KAAKoP,SAAS/P,KAG5C,UAAvBW,KAAK8F,QAAQ0H,QACf/N,aAAakC,GAAG3B,KAAK6F,SAAUqG,oBAAkB,IAAMlM,KAAKwN,UAC5D/N,aAAakC,GAAG3B,KAAK6F,SAAUsG,oBAAkB,IAAMnM,KAAK2O,uBAG1D3O,KAAK8F,QAAQ4H,OAAStD,MAAMC,eAC9BrK,KAAKqP,yBAET,CAEAA,0BACE,IAAK,MAAMC,KAAO3I,eAAepG,KAAKwM,kBAAmB/M,KAAK6F,UAC5DpG,aAAakC,GAAG2N,EAAKlD,kBAAkB/M,GAASA,EAAMwD,mBAGxD,MAqBM0M,EAAc,CAClBrF,aAAcA,IAAMlK,KAAKqO,OAAOrO,KAAKwP,kBAjNpB,SAkNjBrF,cAAeA,IAAMnK,KAAKqO,OAAOrO,KAAKwP,kBAjNpB,UAkNlBvF,YAxBkBwF,KACS,UAAvBzP,KAAK8F,QAAQ0H,QAYjBxN,KAAKwN,QACDxN,KAAKgO,cACP0B,aAAa1P,KAAKgO,cAGpBhO,KAAKgO,aAAepQ,YAAW,IAAMoC,KAAK2O,qBAjNjB,IAiN+D3O,KAAK8F,QAAQwH,UAAS,GAShHtN,KAAKiO,aAAe,IAAI7D,MAAMpK,KAAK6F,SAAU0J,EAC/C,CAEAH,SAAS/P,GACP,GAAI,kBAAkBkG,KAAKlG,EAAM3B,OAAO2K,SACtC,OAGF,MAAM8C,EAAYgC,iBAAiB9N,EAAM3I,KACrCyU,IACF9L,EAAMwD,iBACN7C,KAAKqO,OAAOrO,KAAKwP,kBAAkBrE,IAEvC,CAEA6D,cAAcvY,GACZ,OAAOuJ,KAAK8O,YAAY1Q,QAAQ3H,EAClC,CAEAkZ,2BAA2BxR,GACzB,IAAK6B,KAAKkO,mBACR,OAGF,MAAM0B,EAAkBjJ,eAAeG,QA1NnB,UA0N4C9G,KAAKkO,oBAErE0B,EAAgB/U,UAAUxD,OAnOJ,UAoOtBuY,EAAgB9L,gBAAgB,gBAEhC,MAAM+L,EAAqBlJ,eAAeG,QAAS,sBAAqB3I,MAAW6B,KAAKkO,oBAEpF2B,IACFA,EAAmBhV,UAAUuQ,IAzOT,UA0OpByE,EAAmBjM,aAAa,eAAgB,QAEpD,CAEA6K,kBACE,MAAMhY,EAAUuJ,KAAK8N,gBAAkB9N,KAAKiP,aAE5C,IAAKxY,EACH,OAGF,MAAMqZ,EAAkBzW,OAAO0W,SAAStZ,EAAQwE,aAAa,oBAAqB,IAElF+E,KAAK8F,QAAQwH,SAAWwC,GAAmB9P,KAAK8F,QAAQqJ,eAC1D,CAEAd,OAAOa,EAAOzY,EAAU,MACtB,GAAIuJ,KAAK+N,WACP,OAGF,MAAMhQ,EAAgBiC,KAAKiP,aACrBe,EA/QS,SA+QAd,EACTe,EAAcxZ,GAAWoH,qBAAqBmC,KAAK8O,YAAa/Q,EAAeiS,EAAQhQ,KAAK8F,QAAQ6H,MAE1G,GAAIsC,IAAgBlS,EAClB,OAGF,MAAMmS,EAAmBlQ,KAAKgP,cAAciB,GAEtCE,EAAeC,GACZ3Q,aAAa0C,QAAQnC,KAAK6F,SAAUuK,EAAW,CACpDpP,cAAeiP,EACf9E,UAAWnL,KAAKqQ,kBAAkBnB,GAClC/X,KAAM6I,KAAKgP,cAAcjR,GACzB6Q,GAAIsB,IAMR,GAFmBC,EAAapE,aAEjBxJ,iBACb,OAGF,IAAKxE,IAAkBkS,EAGrB,OAGF,MAAMK,EAAYlP,QAAQpB,KAAK6N,WAC/B7N,KAAKwN,QAELxN,KAAK+N,YAAa,EAElB/N,KAAK2P,2BAA2BO,GAChClQ,KAAK8N,eAAiBmC,EAEtB,MAAMM,EAAuBP,EAASvD,iBAAmBD,eACnDgE,EAAiBR,EAAStD,gBAAkBC,gBAElDsD,EAAYpV,UAAUuQ,IAAIoF,GAE1B/U,OAAOwU,GAEPlS,EAAclD,UAAUuQ,IAAImF,GAC5BN,EAAYpV,UAAUuQ,IAAImF,GAa1BvQ,KAAKoG,gBAXoBqK,KACvBR,EAAYpV,UAAUxD,OAAOkZ,EAAsBC,GACnDP,EAAYpV,UAAUuQ,IAlTF,UAoTpBrN,EAAclD,UAAUxD,OApTJ,SAoT8BmZ,EAAgBD,GAElEvQ,KAAK+N,YAAa,EAElBoC,EAAanE,WAAW,GAGYjO,EAAeiC,KAAK0Q,eAEtDJ,GACFtQ,KAAKoO,OAET,CAEAsC,cACE,OAAO1Q,KAAK6F,SAAShL,UAAUC,SAlUV,QAmUvB,CAEAmU,aACE,OAAOtI,eAAeG,QAAQgG,qBAAsB9M,KAAK6F,SAC3D,CAEAiJ,YACE,OAAOnI,eAAepG,KAAKsM,cAAe7M,KAAK6F,SACjD,CAEA2I,iBACMxO,KAAK6N,YACP8C,cAAc3Q,KAAK6N,WACnB7N,KAAK6N,UAAY,KAErB,CAEA2B,kBAAkBrE,GAChB,OAAI/O,QAnWe,SAoWV+O,EArWM,OADA,OAEI,SAuWZA,EAzWQ,OACA,MAyWjB,CAEAkF,kBAAkBnB,GAChB,OAAI9S,QA5WW,SA6WN8S,EA5WU,OACC,QAFL,SAgXRA,EA9Wa,QADD,MAgXrB,CAGA5I,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAO6E,SAAStF,oBAAoBtI,KAAM4E,GAEhD,GAAsB,iBAAXA,GAKX,GAAsB,iBAAXA,EAAqB,CAC9B,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IACP,OAVEmE,EAAK6F,GAAGhK,EAWZ,GACF,EAOFnF,aAAakC,GAAG7I,SAAUsQ,uBAAsB6D,qBAAqB,SAAU5N,GAC7E,MAAM3B,EAASiJ,eAAeoB,uBAAuB/H,MAErD,IAAKtC,IAAWA,EAAO7C,UAAUC,SAlYP,YAmYxB,OAGFuE,EAAMwD,iBAEN,MAAM+N,EAAWhD,SAAStF,oBAAoB5K,GACxCmT,EAAa7Q,KAAK/E,aAAa,oBAErC,OAAI4V,GACFD,EAAShC,GAAGiC,QACZD,EAASjC,qBAIyC,SAAhDjL,YAAYY,iBAAiBtE,KAAM,UACrC4Q,EAASrJ,YACTqJ,EAASjC,sBAIXiC,EAASxJ,YACTwJ,EAASjC,oBACX,IAEAlP,aAAakC,GAAG/J,OAAQyU,uBAAqB,KAC3C,MAAMyE,EAAYnK,eAAepG,KAAK2M,oBAEtC,IAAK,MAAM0D,KAAYE,EACrBlD,SAAStF,oBAAoBsI,EAC/B,IAOFtU,mBAAmBsR,UCncnB,MAAMlR,OAAO,WACPqJ,WAAW,cACXE,YAAa,eACbgD,eAAe,YAEf8H,aAAc,mBACdC,cAAe,oBACfC,aAAc,mBACdC,eAAgB,qBAChB9H,uBAAwB,6BAExBV,kBAAkB,OAClByI,oBAAsB,WACtBC,sBAAwB,aACxBC,qBAAuB,YACvBC,2BAA8B,6BAC9BC,sBAAwB,sBAExBC,MAAQ,QACRC,OAAS,SAETC,iBAAmB,uCACnBvI,uBAAuB,8BAEvB3E,UAAU,CACdmN,OAAQ,KACRrI,QAAQ,GAGJ7E,cAAc,CAClBkN,OAAQ,iBACRrI,OAAQ,WAOV,MAAMsI,iBAAiBjM,cACrBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAK6R,kBAAmB,EACxB7R,KAAK8R,cAAgB,GAErB,MAAMC,EAAapL,eAAepG,KAAK4I,wBAEvC,IAAK,MAAM6I,KAAQD,EAAY,CAC7B,MAAMpa,EAAWgP,eAAemB,uBAAuBkK,GACjDC,EAAgBtL,eAAepG,KAAK5I,GACvCwM,QAAO+N,GAAgBA,IAAiBlS,KAAK6F,WAE/B,OAAblO,GAAqBsa,EAAcjY,QACrCgG,KAAK8R,cAAc3V,KAAK6V,EAE5B,CAEAhS,KAAKmS,sBAEAnS,KAAK8F,QAAQ6L,QAChB3R,KAAKoS,0BAA0BpS,KAAK8R,cAAe9R,KAAKqS,YAGtDrS,KAAK8F,QAAQwD,QACftJ,KAAKsJ,QAET,CAGW9E,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA4M,SACMtJ,KAAKqS,WACPrS,KAAKsS,OAELtS,KAAKuS,MAET,CAEAA,OACE,GAAIvS,KAAK6R,kBAAoB7R,KAAKqS,WAChC,OAGF,IAAIG,EAAiB,GASrB,GANIxS,KAAK8F,QAAQ6L,SACfa,EAAiBxS,KAAKyS,uBAAuBf,kBAC1CvN,QAAO1N,GAAWA,IAAYuJ,KAAK6F,WACnC8B,KAAIlR,GAAWmb,SAAStJ,oBAAoB7R,EAAS,CAAE6S,QAAQ,OAGhEkJ,EAAexY,QAAUwY,EAAe,GAAGX,iBAC7C,OAIF,GADmBpS,aAAa0C,QAAQnC,KAAK6F,SAAUkL,cACxCxO,iBACb,OAGF,IAAK,MAAMmQ,KAAkBF,EAC3BE,EAAeJ,OAGjB,MAAMK,EAAY3S,KAAK4S,gBAEvB5S,KAAK6F,SAAShL,UAAUxD,OA3GA,YA4GxB2I,KAAK6F,SAAShL,UAAUuQ,IA3GE,cA6G1BpL,KAAK6F,SAASgN,MAAMF,GAAa,EAEjC3S,KAAKoS,0BAA0BpS,KAAK8R,eAAe,GACnD9R,KAAK6R,kBAAmB,EAExB,MAYMiB,EAAc,SADSH,EAAU,GAAGlN,cAAgBkN,EAAU1Q,MAAM,KAG1EjC,KAAKoG,gBAdY2M,KACf/S,KAAK6R,kBAAmB,EAExB7R,KAAK6F,SAAShL,UAAUxD,OArHA,cAsHxB2I,KAAK6F,SAAShL,UAAUuQ,IAvHF,WADJ,QA0HlBpL,KAAK6F,SAASgN,MAAMF,GAAa,GAEjClT,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cAAY,GAMpBhR,KAAK6F,UAAU,GAC7C7F,KAAK6F,SAASgN,MAAMF,GAAc,GAAE3S,KAAK6F,SAASiN,MACpD,CAEAR,OACE,GAAItS,KAAK6R,mBAAqB7R,KAAKqS,WACjC,OAIF,GADmB5S,aAAa0C,QAAQnC,KAAK6F,SAAUoL,cACxC1O,iBACb,OAGF,MAAMoQ,EAAY3S,KAAK4S,gBAEvB5S,KAAK6F,SAASgN,MAAMF,GAAc,GAAE3S,KAAK6F,SAASmN,wBAAwBL,OAE1ElX,OAAOuE,KAAK6F,UAEZ7F,KAAK6F,SAAShL,UAAUuQ,IApJE,cAqJ1BpL,KAAK6F,SAAShL,UAAUxD,OAtJA,WADJ,QAyJpB,IAAK,MAAM8K,KAAWnC,KAAK8R,cAAe,CACxC,MAAMrb,EAAUkQ,eAAeoB,uBAAuB5F,GAElD1L,IAAYuJ,KAAKqS,SAAS5b,IAC5BuJ,KAAKoS,0BAA0B,CAACjQ,IAAU,EAE9C,CAEAnC,KAAK6R,kBAAmB,EASxB7R,KAAK6F,SAASgN,MAAMF,GAAa,GAEjC3S,KAAKoG,gBATY2M,KACf/S,KAAK6R,kBAAmB,EACxB7R,KAAK6F,SAAShL,UAAUxD,OAnKA,cAoKxB2I,KAAK6F,SAAShL,UAAUuQ,IArKF,YAsKtB3L,aAAa0C,QAAQnC,KAAK6F,SAAUqL,eAAa,GAKrBlR,KAAK6F,UAAU,EAC/C,CAEAwM,SAAS5b,EAAUuJ,KAAK6F,UACtB,OAAOpP,EAAQoE,UAAUC,SAhLL,OAiLtB,CAGAgK,kBAAkBF,GAGhB,OAFAA,EAAO0E,OAASlI,QAAQwD,EAAO0E,QAC/B1E,EAAO+M,OAAS5X,WAAW6K,EAAO+M,QAC3B/M,CACT,CAEAgO,gBACE,OAAO5S,KAAK6F,SAAShL,UAAUC,SAtLL,uBAsLuC0W,MAAQC,MAC3E,CAEAU,sBACE,IAAKnS,KAAK8F,QAAQ6L,OAChB,OAGF,MAAM5K,EAAW/G,KAAKyS,uBAAuBtJ,wBAE7C,IAAK,MAAM1S,KAAWsQ,EAAU,CAC9B,MAAMkM,EAAWtM,eAAeoB,uBAAuBtR,GAEnDwc,GACFjT,KAAKoS,0BAA0B,CAAC3b,GAAUuJ,KAAKqS,SAASY,GAE5D,CACF,CAEAR,uBAAuB9a,GACrB,MAAMoP,EAAWJ,eAAepG,KAAK+Q,2BAA4BtR,KAAK8F,QAAQ6L,QAE9E,OAAOhL,eAAepG,KAAK5I,EAAUqI,KAAK8F,QAAQ6L,QAAQxN,QAAO1N,IAAYsQ,EAASrF,SAASjL,IACjG,CAEA2b,0BAA0Bc,EAAcC,GACtC,GAAKD,EAAalZ,OAIlB,IAAK,MAAMvD,KAAWyc,EACpBzc,EAAQoE,UAAUyO,OAvNK,aAuNyB6J,GAChD1c,EAAQmN,aAAa,gBAAiBuP,EAE1C,CAGA7M,uBAAuB1B,GACrB,MAAMkB,EAAU,GAKhB,MAJsB,iBAAXlB,GAAuB,YAAYW,KAAKX,KACjDkB,EAAQwD,QAAS,GAGZtJ,KAAK8I,MAAK,WACf,MAAMC,EAAO6I,SAAStJ,oBAAoBtI,KAAM8F,GAEhD,GAAsB,iBAAXlB,EAAqB,CAC9B,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IACP,CACF,GACF,EAOFnF,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,IAEjD,MAAzBA,EAAM3B,OAAO2K,SAAoBhJ,EAAME,gBAAmD,MAAjCF,EAAME,eAAe8I,UAChFhJ,EAAMwD,iBAGR,IAAK,MAAMpM,KAAWkQ,eAAeqB,gCAAgChI,MACnE4R,SAAStJ,oBAAoB7R,EAAS,CAAE6S,QAAQ,IAASA,QAE7D,IAMAhN,mBAAmBsV,UC1QnB,MAAMlV,OAAO,WACPqJ,WAAW,cACXE,YAAa,eACbgD,eAAe,YAEfmK,aAAa,SACbC,UAAU,MACVC,eAAe,UACfC,iBAAiB,YACjBC,mBAAqB,EAErBvC,aAAc,mBACdC,eAAgB,qBAChBH,aAAc,mBACdC,cAAe,oBACf5H,uBAAwB,6BACxBqK,uBAA0B,+BAC1BC,qBAAwB,6BAExBhL,kBAAkB,OAClBiL,kBAAoB,SACpBC,mBAAqB,UACrBC,qBAAuB,YACvBC,yBAA2B,gBAC3BC,2BAA6B,kBAE7B5K,uBAAuB,4DACvB6K,2BAA8B,GAAE7K,8BAChC8K,cAAgB,iBAChBC,gBAAkB,UAClBC,oBAAsB,cACtBC,uBAAyB,8DAEzBC,cAAgBjY,QAAU,UAAY,YACtCkY,iBAAmBlY,QAAU,YAAc,UAC3CmY,iBAAmBnY,QAAU,aAAe,eAC5CoY,oBAAsBpY,QAAU,eAAiB,aACjDqY,gBAAkBrY,QAAU,aAAe,cAC3CsY,eAAiBtY,QAAU,cAAgB,aAC3CuY,oBAAsB,MACtBC,uBAAyB,SAEzBpQ,UAAU,CACdqQ,WAAW,EACXC,SAAU,kBACVC,QAAS,UACTC,OAAQ,CAAC,EAAG,GACZC,aAAc,KACdC,UAAW,UAGPzQ,cAAc,CAClBoQ,UAAW,mBACXC,SAAU,mBACVC,QAAS,SACTC,OAAQ,0BACRC,aAAc,yBACdC,UAAW,2BAOb,MAAMC,iBAAiBxP,cACrBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAKoV,QAAU,KACfpV,KAAKqV,QAAUrV,KAAK6F,SAASpL,WAE7BuF,KAAKsV,MAAQ3O,eAAeY,KAAKvH,KAAK6F,SAAUoO,eAAe,IAC7DtN,eAAeS,KAAKpH,KAAK6F,SAAUoO,eAAe,IAClDtN,eAAeG,QAAQmN,cAAejU,KAAKqV,SAC7CrV,KAAKuV,UAAYvV,KAAKwV,eACxB,CAGWhR,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA4M,SACE,OAAOtJ,KAAKqS,WAAarS,KAAKsS,OAAStS,KAAKuS,MAC9C,CAEAA,OACE,GAAI7X,WAAWsF,KAAK6F,WAAa7F,KAAKqS,WACpC,OAGF,MAAMrR,EAAgB,CACpBA,cAAehB,KAAK6F,UAKtB,IAFkBpG,aAAa0C,QAAQnC,KAAK6F,SAAUkL,aAAY/P,GAEpDuB,iBAAd,CAUA,GANAvC,KAAKyV,gBAMD,iBAAkB3c,SAASqC,kBAAoB6E,KAAKqV,QAAQ9a,QAtFxC,eAuFtB,IAAK,MAAM9D,IAAW,GAAGmQ,UAAU9N,SAAS+C,KAAKkL,UAC/CtH,aAAakC,GAAGlL,EAAS,YAAa+E,MAI1CwE,KAAK6F,SAAS6P,QACd1V,KAAK6F,SAASjC,aAAa,iBAAiB,GAE5C5D,KAAKsV,MAAMza,UAAUuQ,IA1GD,QA2GpBpL,KAAK6F,SAAShL,UAAUuQ,IA3GJ,QA4GpB3L,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cAAahQ,EAnBjD,CAoBF,CAEAsR,OACE,GAAI5X,WAAWsF,KAAK6F,YAAc7F,KAAKqS,WACrC,OAGF,MAAMrR,EAAgB,CACpBA,cAAehB,KAAK6F,UAGtB7F,KAAK2V,cAAc3U,EACrB,CAEAgF,UACMhG,KAAKoV,SACPpV,KAAKoV,QAAQQ,UAGfhQ,MAAMI,SACR,CAEA6P,SACE7V,KAAKuV,UAAYvV,KAAKwV,gBAClBxV,KAAKoV,SACPpV,KAAKoV,QAAQS,QAEjB,CAGAF,cAAc3U,GAEZ,IADkBvB,aAAa0C,QAAQnC,KAAK6F,SAAUoL,aAAYjQ,GACpDuB,iBAAd,CAMA,GAAI,iBAAkBzJ,SAASqC,gBAC7B,IAAK,MAAM1E,IAAW,GAAGmQ,UAAU9N,SAAS+C,KAAKkL,UAC/CtH,aAAaC,IAAIjJ,EAAS,YAAa+E,MAIvCwE,KAAKoV,SACPpV,KAAKoV,QAAQQ,UAGf5V,KAAKsV,MAAMza,UAAUxD,OA7JD,QA8JpB2I,KAAK6F,SAAShL,UAAUxD,OA9JJ,QA+JpB2I,KAAK6F,SAASjC,aAAa,gBAAiB,SAC5CF,YAAYG,oBAAoB7D,KAAKsV,MAAO,UAC5C7V,aAAa0C,QAAQnC,KAAK6F,SAAUqL,eAAclQ,EAlBlD,CAmBF,CAEA2D,WAAWC,GAGT,GAAgC,iBAFhCA,EAASgB,MAAMjB,WAAWC,IAERsQ,YAA2Btb,UAAUgL,EAAOsQ,YACV,mBAA3CtQ,EAAOsQ,UAAUlC,sBAGxB,MAAM,IAAIxN,UAAW,GAAE9I,OAAK+I,+GAG9B,OAAOb,CACT,CAEA6Q,gBACE,QAAsB,IAAXK,OACT,MAAM,IAAItQ,UAAU,gEAGtB,IAAIuQ,EAAmB/V,KAAK6F,SAEG,WAA3B7F,KAAK8F,QAAQoP,UACfa,EAAmB/V,KAAKqV,QACfzb,UAAUoG,KAAK8F,QAAQoP,WAChCa,EAAmBhc,WAAWiG,KAAK8F,QAAQoP,WACA,iBAA3BlV,KAAK8F,QAAQoP,YAC7Ba,EAAmB/V,KAAK8F,QAAQoP,WAGlC,MAAMD,EAAejV,KAAKgW,mBAC1BhW,KAAKoV,QAAUU,OAAOG,aAAaF,EAAkB/V,KAAKsV,MAAOL,EACnE,CAEA5C,WACE,OAAOrS,KAAKsV,MAAMza,UAAUC,SArMR,OAsMtB,CAEAob,gBACE,MAAMC,EAAiBnW,KAAKqV,QAE5B,GAAIc,EAAetb,UAAUC,SAzMN,WA0MrB,OAAO2Z,gBAGT,GAAI0B,EAAetb,UAAUC,SA5MJ,aA6MvB,OAAO4Z,eAGT,GAAIyB,EAAetb,UAAUC,SA/MA,iBAgN3B,MAhMsB,MAmMxB,GAAIqb,EAAetb,UAAUC,SAlNE,mBAmN7B,MAnMyB,SAuM3B,MAAMsb,EAAkF,QAA1Ejd,iBAAiB6G,KAAKsV,OAAOjb,iBAAiB,iBAAiBqM,OAE7E,OAAIyP,EAAetb,UAAUC,SA7NP,UA8Nbsb,EAAQ9B,iBAAmBD,cAG7B+B,EAAQ5B,oBAAsBD,gBACvC,CAEAiB,gBACE,OAAkD,OAA3CxV,KAAK6F,SAAStL,QA5ND,UA6NtB,CAEA8b,aACE,MAAMrB,OAAEA,GAAWhV,KAAK8F,QAExB,MAAsB,iBAAXkP,EACFA,EAAOxb,MAAM,KAAKmO,KAAI3E,GAAS3J,OAAO0W,SAAS/M,EAAO,MAGzC,mBAAXgS,EACFsB,GAActB,EAAOsB,EAAYtW,KAAK6F,UAGxCmP,CACT,CAEAgB,mBACE,MAAMO,EAAwB,CAC5BC,UAAWxW,KAAKkW,gBAChBO,UAAW,CAAC,CACVha,KAAM,kBACNia,QAAS,CACP5B,SAAU9U,KAAK8F,QAAQgP,WAG3B,CACErY,KAAM,SACNia,QAAS,CACP1B,OAAQhV,KAAKqW,iBAcnB,OARIrW,KAAKuV,WAAsC,WAAzBvV,KAAK8F,QAAQiP,WACjCrR,YAAYC,iBAAiB3D,KAAKsV,MAAO,SAAU,UACnDiB,EAAsBE,UAAY,CAAC,CACjCha,KAAM,cACNka,SAAS,KAIN,IACFJ,KACAvZ,QAAQgD,KAAK8F,QAAQmP,aAAc,CAACsB,IAE3C,CAEAK,iBAAgBlgB,IAAEA,EAAGgH,OAAEA,IACrB,MAAMmR,EAAQlI,eAAepG,KAAK6T,uBAAwBpU,KAAKsV,OAAOnR,QAAO1N,GAAWyD,UAAUzD,KAE7FoY,EAAM7U,QAMX6D,qBAAqBgR,EAAOnR,EAAQhH,IAAQ6c,kBAAiB1E,EAAMnN,SAAShE,IAASgY,OACvF,CAGApP,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOoM,SAAS7M,oBAAoBtI,KAAM4E,GAEhD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,CAEA0B,kBAAkBjH,GAChB,GA/TuB,IA+TnBA,EAAMkK,QAAiD,UAAflK,EAAMM,MAlUtC,QAkU0DN,EAAM3I,IAC1E,OAGF,MAAMmgB,EAAclQ,eAAepG,KAAKyT,4BAExC,IAAK,MAAM1K,KAAUuN,EAAa,CAChC,MAAMC,EAAU3B,SAAS5O,YAAY+C,GACrC,IAAKwN,IAAyC,IAA9BA,EAAQhR,QAAQ+O,UAC9B,SAGF,MAAMkC,EAAe1X,EAAM0X,eACrBC,EAAeD,EAAarV,SAASoV,EAAQxB,OACnD,GACEyB,EAAarV,SAASoV,EAAQjR,WACC,WAA9BiR,EAAQhR,QAAQ+O,YAA2BmC,GACb,YAA9BF,EAAQhR,QAAQ+O,WAA2BmC,EAE5C,SAIF,GAAIF,EAAQxB,MAAMxa,SAASuE,EAAM3B,UAA4B,UAAf2B,EAAMM,MAzV1C,QAyV8DN,EAAM3I,KAAoB,qCAAqC6O,KAAKlG,EAAM3B,OAAO2K,UACvJ,SAGF,MAAMrH,EAAgB,CAAEA,cAAe8V,EAAQjR,UAE5B,UAAfxG,EAAMM,OACRqB,EAAcoH,WAAa/I,GAG7ByX,EAAQnB,cAAc3U,EACxB,CACF,CAEAsF,6BAA6BjH,GAI3B,MAAM4X,EAAU,kBAAkB1R,KAAKlG,EAAM3B,OAAO2K,SAC9C6O,EA7WS,WA6WO7X,EAAM3I,IACtBygB,EAAkB,CAAC7D,eAAcC,kBAAgB7R,SAASrC,EAAM3I,KAEtE,IAAKygB,IAAoBD,EACvB,OAGF,GAAID,IAAYC,EACd,OAGF7X,EAAMwD,iBAGN,MAAMuU,EAAkBpX,KAAKiH,QAAQkC,wBACnCnJ,KACC2G,eAAeS,KAAKpH,KAAMmJ,wBAAsB,IAC/CxC,eAAeY,KAAKvH,KAAMmJ,wBAAsB,IAChDxC,eAAeG,QAAQqC,uBAAsB9J,EAAME,eAAe9E,YAEhE9D,EAAWwe,SAAS7M,oBAAoB8O,GAE9C,GAAID,EAIF,OAHA9X,EAAMgY,kBACN1gB,EAAS4b,YACT5b,EAASigB,gBAAgBvX,GAIvB1I,EAAS0b,aACXhT,EAAMgY,kBACN1gB,EAAS2b,OACT8E,EAAgB1B,QAEpB,EAOFjW,aAAakC,GAAG7I,SAAU2a,uBAAwBtK,uBAAsBgM,SAASmC,uBACjF7X,aAAakC,GAAG7I,SAAU2a,uBAAwBQ,cAAekB,SAASmC,uBAC1E7X,aAAakC,GAAG7I,SAAUsQ,uBAAsB+L,SAASoC,YACzD9X,aAAakC,GAAG7I,SAAU4a,qBAAsByB,SAASoC,YACzD9X,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,GAC9EA,EAAMwD,iBACNsS,SAAS7M,oBAAoBtI,MAAMsJ,QACrC,IAMAhN,mBAAmB6Y,UCrbnB,MAAMzY,OAAO,WACP+L,kBAAkB,OAClBC,kBAAkB,OAClB8O,gBAAmB,wBAEnBhT,UAAU,CACdiT,UAAW,iBACXC,cAAe,KACfrR,YAAY,EACZnM,WAAW,EACXyd,YAAa,QAGTlT,cAAc,CAClBgT,UAAW,SACXC,cAAe,kBACfrR,WAAY,UACZnM,UAAW,UACXyd,YAAa,oBAOf,MAAMC,iBAAiBrT,OACrBU,YAAYL,GACVgB,QACA5F,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAC/B5E,KAAK6X,aAAc,EACnB7X,KAAK6F,SAAW,IAClB,CAGWrB,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA6V,KAAKvW,GACH,IAAKgE,KAAK8F,QAAQ5L,UAEhB,YADA8C,QAAQhB,GAIVgE,KAAK8X,UAEL,MAAMrhB,EAAUuJ,KAAK+X,cACjB/X,KAAK8F,QAAQO,YACf5K,OAAOhF,GAGTA,EAAQoE,UAAUuQ,IA1DE,QA4DpBpL,KAAKgY,mBAAkB,KACrBhb,QAAQhB,EAAS,GAErB,CAEAsW,KAAKtW,GACEgE,KAAK8F,QAAQ5L,WAKlB8F,KAAK+X,cAAcld,UAAUxD,OAvET,QAyEpB2I,KAAKgY,mBAAkB,KACrBhY,KAAKgG,UACLhJ,QAAQhB,EAAS,KARjBgB,QAAQhB,EAUZ,CAEAgK,UACOhG,KAAK6X,cAIVpY,aAAaC,IAAIM,KAAK6F,SAAU2R,iBAEhCxX,KAAK6F,SAASxO,SACd2I,KAAK6X,aAAc,EACrB,CAGAE,cACE,IAAK/X,KAAK6F,SAAU,CAClB,MAAMoS,EAAWnf,SAASof,cAAc,OACxCD,EAASR,UAAYzX,KAAK8F,QAAQ2R,UAC9BzX,KAAK8F,QAAQO,YACf4R,EAASpd,UAAUuQ,IAjGH,QAoGlBpL,KAAK6F,SAAWoS,CAClB,CAEA,OAAOjY,KAAK6F,QACd,CAEAf,kBAAkBF,GAGhB,OADAA,EAAO+S,YAAc5d,WAAW6K,EAAO+S,aAChC/S,CACT,CAEAkT,UACE,GAAI9X,KAAK6X,YACP,OAGF,MAAMphB,EAAUuJ,KAAK+X,cACrB/X,KAAK8F,QAAQ6R,YAAYQ,OAAO1hB,GAEhCgJ,aAAakC,GAAGlL,EAAS+gB,iBAAiB,KACxCxa,QAAQgD,KAAK8F,QAAQ4R,cAAc,IAGrC1X,KAAK6X,aAAc,CACrB,CAEAG,kBAAkBhc,GAChBoB,uBAAuBpB,EAAUgE,KAAK+X,cAAe/X,KAAK8F,QAAQO,WACpE,EClIF,MAAM3J,OAAO,YACPqJ,WAAW,eACXE,YAAa,gBACbmS,gBAAiB,uBACjBC,kBAAqB,2BAErBhF,QAAU,MACViF,gBAAkB,UAClBC,iBAAmB,WAEnB/T,UAAU,CACdgU,WAAW,EACXC,YAAa,MAGThU,cAAc,CAClB+T,UAAW,UACXC,YAAa,WAOf,MAAMC,kBAAkBnU,OACtBU,YAAYL,GACVgB,QACA5F,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAC/B5E,KAAK2Y,WAAY,EACjB3Y,KAAK4Y,qBAAuB,IAC9B,CAGWpU,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGAmc,WACM7Y,KAAK2Y,YAIL3Y,KAAK8F,QAAQ0S,WACfxY,KAAK8F,QAAQ2S,YAAY/C,QAG3BjW,aAAaC,IAAI5G,SAAUmN,aAC3BxG,aAAakC,GAAG7I,SAAUsf,iBAAe/Y,GAASW,KAAK8Y,eAAezZ,KACtEI,aAAakC,GAAG7I,SAAUuf,mBAAmBhZ,GAASW,KAAK+Y,eAAe1Z,KAE1EW,KAAK2Y,WAAY,EACnB,CAEAK,aACOhZ,KAAK2Y,YAIV3Y,KAAK2Y,WAAY,EACjBlZ,aAAaC,IAAI5G,SAAUmN,aAC7B,CAGA6S,eAAezZ,GACb,MAAMoZ,YAAEA,GAAgBzY,KAAK8F,QAE7B,GAAIzG,EAAM3B,SAAW5E,UAAYuG,EAAM3B,SAAW+a,GAAeA,EAAY3d,SAASuE,EAAM3B,QAC1F,OAGF,MAAMub,EAAWtS,eAAec,kBAAkBgR,GAE1B,IAApBQ,EAASjf,OACXye,EAAY/C,QA1EO,aA2EV1V,KAAK4Y,qBACdK,EAASA,EAASjf,OAAS,GAAG0b,QAE9BuD,EAAS,GAAGvD,OAEhB,CAEAqD,eAAe1Z,GApFD,QAqFRA,EAAM3I,MAIVsJ,KAAK4Y,qBAAuBvZ,EAAM6Z,SAvFb,WADD,UAyFtB,EChGF,MAAMC,uBAAyB,oDACzBC,wBAA0B,cAC1BC,iBAAmB,gBACnBC,gBAAkB,eAMxB,MAAMC,gBACJtU,cACEjF,KAAK6F,SAAW/M,SAAS+C,IAC3B,CAGA2d,WAEE,MAAMC,EAAgB3gB,SAASqC,gBAAgBue,YAC/C,OAAO/gB,KAAKuS,IAAItT,OAAO+hB,WAAaF,EACtC,CAEAnH,OACE,MAAMsH,EAAQ5Z,KAAKwZ,WACnBxZ,KAAK6Z,mBAEL7Z,KAAK8Z,sBAAsB9Z,KAAK6F,SAvBX,iBAuBuCkU,GAAmBA,EAAkBH,IAEjG5Z,KAAK8Z,sBAAsBX,uBAzBN,iBAyBgDY,GAAmBA,EAAkBH,IAC1G5Z,KAAK8Z,sBA3BuB,cAER,gBAyBiDC,GAAmBA,EAAkBH,GAC5G,CAEAI,QACEha,KAAKia,wBAAwBja,KAAK6F,SAAU,YAC5C7F,KAAKia,wBAAwBja,KAAK6F,SA/Bb,iBAgCrB7F,KAAKia,wBAAwBd,uBAhCR,iBAiCrBnZ,KAAKia,wBAlCuB,cAER,eAiCtB,CAEAC,gBACE,OAAOla,KAAKwZ,WAAa,CAC3B,CAGAK,mBACE7Z,KAAKma,sBAAsBna,KAAK6F,SAAU,YAC1C7F,KAAK6F,SAASgN,MAAMuH,SAAW,QACjC,CAEAN,sBAAsBniB,EAAU0iB,EAAere,GAC7C,MAAMse,EAAiBta,KAAKwZ,WAW5BxZ,KAAKua,2BAA2B5iB,GAVHlB,IAC3B,GAAIA,IAAYuJ,KAAK6F,UAAYjO,OAAO+hB,WAAaljB,EAAQijB,YAAcY,EACzE,OAGFta,KAAKma,sBAAsB1jB,EAAS4jB,GACpC,MAAMN,EAAkBniB,OAAOuB,iBAAiB1C,GAAS4D,iBAAiBggB,GAC1E5jB,EAAQoc,MAAM2H,YAAYH,EAAgB,GAAEre,EAAS3C,OAAOC,WAAWygB,QAAsB,GAIjG,CAEAI,sBAAsB1jB,EAAS4jB,GAC7B,MAAMI,EAAchkB,EAAQoc,MAAMxY,iBAAiBggB,GAC/CI,GACF/W,YAAYC,iBAAiBlN,EAAS4jB,EAAeI,EAEzD,CAEAR,wBAAwBtiB,EAAU0iB,GAahCra,KAAKua,2BAA2B5iB,GAZHlB,IAC3B,MAAMuM,EAAQU,YAAYY,iBAAiB7N,EAAS4jB,GAEtC,OAAVrX,GAKJU,YAAYG,oBAAoBpN,EAAS4jB,GACzC5jB,EAAQoc,MAAM2H,YAAYH,EAAerX,IALvCvM,EAAQoc,MAAM6H,eAAeL,EAKgB,GAInD,CAEAE,2BAA2B5iB,EAAUgjB,GACnC,GAAI/gB,UAAUjC,GACZgjB,EAAShjB,QAIX,IAAK,MAAMijB,KAAOjU,eAAepG,KAAK5I,EAAUqI,KAAK6F,UACnD8U,EAASC,EAEb,EC1FF,MAAMle,OAAO,QACPqJ,WAAW,WACXE,YAAa,YACbgD,eAAe,YACfmK,aAAa,SAEbnC,aAAc,gBACd4J,uBAAwB,yBACxB3J,eAAgB,kBAChBH,aAAc,gBACdC,cAAe,iBACf8J,eAAgB,kBAChBC,oBAAuB,yBACvBC,wBAA2B,6BAC3BC,wBAAyB,2BACzB7R,uBAAwB,0BAExB8R,gBAAkB,aAClBzS,kBAAkB,OAClBC,kBAAkB,OAClByS,kBAAoB,eAEpBC,gBAAgB,cAChBC,gBAAkB,gBAClBC,oBAAsB,cACtBnS,uBAAuB,2BAEvB3E,UAAU,CACdyT,UAAU,EACVvC,OAAO,EACPnI,UAAU,GAGN9I,cAAc,CAClBwT,SAAU,mBACVvC,MAAO,UACPnI,SAAU,WAOZ,MAAMgO,cAAc5V,cAClBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAKwb,QAAU7U,eAAeG,QAxBV,gBAwBmC9G,KAAK6F,UAC5D7F,KAAKyb,UAAYzb,KAAK0b,sBACtB1b,KAAK2b,WAAa3b,KAAK4b,uBACvB5b,KAAKqS,UAAW,EAChBrS,KAAK6R,kBAAmB,EACxB7R,KAAK6b,WAAa,IAAItC,gBAEtBvZ,KAAKmO,oBACP,CAGW3J,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA4M,OAAOtI,GACL,OAAOhB,KAAKqS,SAAWrS,KAAKsS,OAAStS,KAAKuS,KAAKvR,EACjD,CAEAuR,KAAKvR,GACChB,KAAKqS,UAAYrS,KAAK6R,kBAIRpS,aAAa0C,QAAQnC,KAAK6F,SAAUkL,aAAY,CAChE/P,kBAGYuB,mBAIdvC,KAAKqS,UAAW,EAChBrS,KAAK6R,kBAAmB,EAExB7R,KAAK6b,WAAWvJ,OAEhBxZ,SAAS+C,KAAKhB,UAAUuQ,IA5EJ,cA8EpBpL,KAAK8b,gBAEL9b,KAAKyb,UAAUlJ,MAAK,IAAMvS,KAAK+b,aAAa/a,KAC9C,CAEAsR,OACOtS,KAAKqS,WAAYrS,KAAK6R,mBAITpS,aAAa0C,QAAQnC,KAAK6F,SAAUoL,cAExC1O,mBAIdvC,KAAKqS,UAAW,EAChBrS,KAAK6R,kBAAmB,EACxB7R,KAAK2b,WAAW3C,aAEhBhZ,KAAK6F,SAAShL,UAAUxD,OAhGJ,QAkGpB2I,KAAKoG,gBAAe,IAAMpG,KAAKgc,cAAchc,KAAK6F,SAAU7F,KAAK0Q,gBACnE,CAEA1K,UACEvG,aAAaC,IAAI9H,OAvHF,aAwHf6H,aAAaC,IAAIM,KAAKwb,QAxHP,aA0Hfxb,KAAKyb,UAAUzV,UACfhG,KAAK2b,WAAW3C,aAEhBpT,MAAMI,SACR,CAEAiW,eACEjc,KAAK8b,eACP,CAGAJ,sBACE,OAAO,IAAI9D,SAAS,CAClB1d,UAAWkH,QAAQpB,KAAK8F,QAAQmS,UAChC5R,WAAYrG,KAAK0Q,eAErB,CAEAkL,uBACE,OAAO,IAAIlD,UAAU,CACnBD,YAAazY,KAAK6F,UAEtB,CAEAkW,aAAa/a,GAENlI,SAAS+C,KAAKf,SAASkF,KAAK6F,WAC/B/M,SAAS+C,KAAKsc,OAAOnY,KAAK6F,UAG5B7F,KAAK6F,SAASgN,MAAMkC,QAAU,QAC9B/U,KAAK6F,SAAS/B,gBAAgB,eAC9B9D,KAAK6F,SAASjC,aAAa,cAAc,GACzC5D,KAAK6F,SAASjC,aAAa,OAAQ,UACnC5D,KAAK6F,SAASqW,UAAY,EAE1B,MAAMC,EAAYxV,eAAeG,QAxIT,cAwIsC9G,KAAKwb,SAC/DW,IACFA,EAAUD,UAAY,GAGxBzgB,OAAOuE,KAAK6F,UAEZ7F,KAAK6F,SAAShL,UAAUuQ,IApJJ,QAiKpBpL,KAAKoG,gBAXsBgW,KACrBpc,KAAK8F,QAAQ4P,OACf1V,KAAK2b,WAAW9C,WAGlB7Y,KAAK6R,kBAAmB,EACxBpS,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cAAa,CAC/ChQ,iBACA,GAGoChB,KAAKwb,QAASxb,KAAK0Q,cAC7D,CAEAvC,qBACE1O,aAAakC,GAAG3B,KAAK6F,SAAUoV,yBAAuB5b,IApLvC,WAqLTA,EAAM3I,MAINsJ,KAAK8F,QAAQyH,SACfvN,KAAKsS,OAIPtS,KAAKqc,6BAA4B,IAGnC5c,aAAakC,GAAG/J,OAAQkjB,gBAAc,KAChC9a,KAAKqS,WAAarS,KAAK6R,kBACzB7R,KAAK8b,eACP,IAGFrc,aAAakC,GAAG3B,KAAK6F,SAAUmV,yBAAyB3b,IAEtDI,aAAamC,IAAI5B,KAAK6F,SAAUkV,qBAAqBuB,IAC/Ctc,KAAK6F,WAAaxG,EAAM3B,QAAUsC,KAAK6F,WAAayW,EAAO5e,SAIjC,WAA1BsC,KAAK8F,QAAQmS,SAKbjY,KAAK8F,QAAQmS,UACfjY,KAAKsS,OALLtS,KAAKqc,6BAMP,GACA,GAEN,CAEAL,aACEhc,KAAK6F,SAASgN,MAAMkC,QAAU,OAC9B/U,KAAK6F,SAASjC,aAAa,eAAe,GAC1C5D,KAAK6F,SAAS/B,gBAAgB,cAC9B9D,KAAK6F,SAAS/B,gBAAgB,QAC9B9D,KAAK6R,kBAAmB,EAExB7R,KAAKyb,UAAUnJ,MAAK,KAClBxZ,SAAS+C,KAAKhB,UAAUxD,OArNN,cAsNlB2I,KAAKuc,oBACLvc,KAAK6b,WAAW7B,QAChBva,aAAa0C,QAAQnC,KAAK6F,SAAUqL,eAAa,GAErD,CAEAR,cACE,OAAO1Q,KAAK6F,SAAShL,UAAUC,SA5NX,OA6NtB,CAEAuhB,6BAEE,GADkB5c,aAAa0C,QAAQnC,KAAK6F,SAAUgV,wBACxCtY,iBACZ,OAGF,MAAMia,EAAqBxc,KAAK6F,SAAS4W,aAAe3jB,SAASqC,gBAAgBuhB,aAC3EC,EAAmB3c,KAAK6F,SAASgN,MAAM+J,UAEpB,WAArBD,GAAiC3c,KAAK6F,SAAShL,UAAUC,SAtOvC,kBA0OjB0hB,IACHxc,KAAK6F,SAASgN,MAAM+J,UAAY,UAGlC5c,KAAK6F,SAAShL,UAAUuQ,IA9OF,gBA+OtBpL,KAAKoG,gBAAe,KAClBpG,KAAK6F,SAAShL,UAAUxD,OAhPJ,gBAiPpB2I,KAAKoG,gBAAe,KAClBpG,KAAK6F,SAASgN,MAAM+J,UAAYD,CAAgB,GAC/C3c,KAAKwb,QAAQ,GACfxb,KAAKwb,SAERxb,KAAK6F,SAAS6P,QAChB,CAMAoG,gBACE,MAAMU,EAAqBxc,KAAK6F,SAAS4W,aAAe3jB,SAASqC,gBAAgBuhB,aAC3EpC,EAAiBta,KAAK6b,WAAWrC,WACjCqD,EAAoBvC,EAAiB,EAE3C,GAAIuC,IAAsBL,EAAoB,CAC5C,MAAMrX,EAAW/I,QAAU,cAAgB,eAC3C4D,KAAK6F,SAASgN,MAAM1N,GAAa,GAAEmV,KACrC,CAEA,IAAKuC,GAAqBL,EAAoB,CAC5C,MAAMrX,EAAW/I,QAAU,eAAiB,cAC5C4D,KAAK6F,SAASgN,MAAM1N,GAAa,GAAEmV,KACrC,CACF,CAEAiC,oBACEvc,KAAK6F,SAASgN,MAAMiK,YAAc,GAClC9c,KAAK6F,SAASgN,MAAMkK,aAAe,EACrC,CAGAzW,uBAAuB1B,EAAQ5D,GAC7B,OAAOhB,KAAK8I,MAAK,WACf,MAAMC,EAAOwS,MAAMjT,oBAAoBtI,KAAM4E,GAE7C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5D,EANb,CAOF,GACF,EAOFvB,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,GAC9E,MAAM3B,EAASiJ,eAAeoB,uBAAuB/H,MAEjD,CAAC,IAAK,QAAQ0B,SAAS1B,KAAKqI,UAC9BhJ,EAAMwD,iBAGRpD,aAAamC,IAAIlE,EAAQqT,cAAYiM,IAC/BA,EAAUza,kBAKd9C,aAAamC,IAAIlE,EAAQwT,gBAAc,KACjChX,UAAU8F,OACZA,KAAK0V,OACP,GACA,IAIJ,MAAMuH,EAActW,eAAeG,QA3Tf,eA4ThBmW,GACF1B,MAAMhV,YAAY0W,GAAa3K,OAGpBiJ,MAAMjT,oBAAoB5K,GAElC4L,OAAOtJ,KACd,IAEAiI,qBAAqBsT,OAMrBjf,mBAAmBif,OC7VnB,MAAM7e,OAAO,YACPqJ,WAAW,eACXE,YAAa,gBACbgD,eAAe,YACfoD,sBAAuB,6BACvB+G,WAAa,SAEb1K,kBAAkB,OAClBwU,qBAAqB,UACrBC,kBAAoB,SACpBC,oBAAsB,qBACtBhC,cAAgB,kBAEhBrK,aAAc,oBACdC,cAAe,qBACfC,aAAc,oBACd4J,qBAAwB,6BACxB3J,eAAgB,sBAChB4J,aAAgB,sBAChB1R,uBAAwB,8BACxB6R,sBAAyB,+BAEzB9R,uBAAuB,+BAEvB3E,UAAU,CACdyT,UAAU,EACV1K,UAAU,EACV8P,QAAQ,GAGJ5Y,cAAc,CAClBwT,SAAU,mBACV1K,SAAU,UACV8P,OAAQ,WAOV,MAAMC,kBAAkB3X,cACtBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAKqS,UAAW,EAChBrS,KAAKyb,UAAYzb,KAAK0b,sBACtB1b,KAAK2b,WAAa3b,KAAK4b,uBACvB5b,KAAKmO,oBACP,CAGW3J,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA4M,OAAOtI,GACL,OAAOhB,KAAKqS,SAAWrS,KAAKsS,OAAStS,KAAKuS,KAAKvR,EACjD,CAEAuR,KAAKvR,GACChB,KAAKqS,UAIS5S,aAAa0C,QAAQnC,KAAK6F,SAAUkL,aAAY,CAAE/P,kBAEtDuB,mBAIdvC,KAAKqS,UAAW,EAChBrS,KAAKyb,UAAUlJ,OAEVvS,KAAK8F,QAAQuX,SAChB,IAAI9D,iBAAkBjH,OAGxBtS,KAAK6F,SAASjC,aAAa,cAAc,GACzC5D,KAAK6F,SAASjC,aAAa,OAAQ,UACnC5D,KAAK6F,SAAShL,UAAUuQ,IAhFD,WA4FvBpL,KAAKoG,gBAVoBqK,KAClBzQ,KAAK8F,QAAQuX,SAAUrd,KAAK8F,QAAQmS,UACvCjY,KAAK2b,WAAW9C,WAGlB7Y,KAAK6F,SAAShL,UAAUuQ,IAxFN,QAyFlBpL,KAAK6F,SAAShL,UAAUxD,OAxFH,WAyFrBoI,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cAAa,CAAEhQ,iBAAgB,GAG/BhB,KAAK6F,UAAU,GACvD,CAEAyM,OACOtS,KAAKqS,WAIQ5S,aAAa0C,QAAQnC,KAAK6F,SAAUoL,cAExC1O,mBAIdvC,KAAK2b,WAAW3C,aAChBhZ,KAAK6F,SAAS0X,OACdvd,KAAKqS,UAAW,EAChBrS,KAAK6F,SAAShL,UAAUuQ,IA5GF,UA6GtBpL,KAAKyb,UAAUnJ,OAcftS,KAAKoG,gBAZoBoX,KACvBxd,KAAK6F,SAAShL,UAAUxD,OAlHN,OAEE,UAiHpB2I,KAAK6F,SAAS/B,gBAAgB,cAC9B9D,KAAK6F,SAAS/B,gBAAgB,QAEzB9D,KAAK8F,QAAQuX,SAChB,IAAI9D,iBAAkBS,QAGxBva,aAAa0C,QAAQnC,KAAK6F,SAAUqL,eAAa,GAGblR,KAAK6F,UAAU,IACvD,CAEAG,UACEhG,KAAKyb,UAAUzV,UACfhG,KAAK2b,WAAW3C,aAChBpT,MAAMI,SACR,CAGA0V,sBACE,MAUMxhB,EAAYkH,QAAQpB,KAAK8F,QAAQmS,UAEvC,OAAO,IAAIL,SAAS,CAClBH,UAAW2F,oBACXljB,YACAmM,YAAY,EACZsR,YAAa3X,KAAK6F,SAASpL,WAC3Bid,cAAexd,EAjBKwd,KACU,WAA1B1X,KAAK8F,QAAQmS,SAKjBjY,KAAKsS,OAJH7S,aAAa0C,QAAQnC,KAAK6F,SAAUgV,qBAI3B,EAWgC,MAE/C,CAEAe,uBACE,OAAO,IAAIlD,UAAU,CACnBD,YAAazY,KAAK6F,UAEtB,CAEAsI,qBACE1O,aAAakC,GAAG3B,KAAK6F,SAAUoV,uBAAuB5b,IAtKvC,WAuKTA,EAAM3I,MAINsJ,KAAK8F,QAAQyH,SACfvN,KAAKsS,OAIP7S,aAAa0C,QAAQnC,KAAK6F,SAAUgV,sBAAqB,GAE7D,CAGAvU,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOuU,UAAUhV,oBAAoBtI,KAAM4E,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5E,KANb,CAOF,GACF,EAOFP,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,GAC9E,MAAM3B,EAASiJ,eAAeoB,uBAAuB/H,MAMrD,GAJI,CAAC,IAAK,QAAQ0B,SAAS1B,KAAKqI,UAC9BhJ,EAAMwD,iBAGJnI,WAAWsF,MACb,OAGFP,aAAamC,IAAIlE,EAAQwT,gBAAc,KAEjChX,UAAU8F,OACZA,KAAK0V,OACP,IAIF,MAAMuH,EAActW,eAAeG,QAAQsU,eACvC6B,GAAeA,IAAgBvf,GACjC4f,UAAU/W,YAAY0W,GAAa3K,OAGxBgL,UAAUhV,oBAAoB5K,GACtC4L,OAAOtJ,KACd,IAEAP,aAAakC,GAAG/J,OAAQyU,uBAAqB,KAC3C,IAAK,MAAM1U,KAAYgP,eAAepG,KAAK6a,eACzCkC,UAAUhV,oBAAoB3Q,GAAU4a,MAC1C,IAGF9S,aAAakC,GAAG/J,OAAQkjB,cAAc,KACpC,IAAK,MAAMrkB,KAAWkQ,eAAepG,KAAK,gDACG,UAAvCpH,iBAAiB1C,GAASgnB,UAC5BH,UAAUhV,oBAAoB7R,GAAS6b,MAE3C,IAGFrK,qBAAqBqV,WAMrBhhB,mBAAmBghB,WC/QnB,MAAMI,uBAAyB,iBAElBC,iBAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQD,wBAC5CE,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHrP,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDsP,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAIAC,cAAgB,IAAIxgB,IAAI,CAC5B,aACA,OACA,OACA,WACA,WACA,SACA,MACA,eAUIygB,iBAAmB,0DAEnBC,iBAAmBA,CAACC,EAAWC,KACnC,MAAMC,EAAgBF,EAAUG,SAAStnB,cAEzC,OAAIonB,EAAqBle,SAASme,IAC5BL,cAAc5oB,IAAIipB,IACbze,QAAQqe,iBAAiBla,KAAKoa,EAAUI,YAO5CH,EAAqBzb,QAAO6b,GAAkBA,aAA0B1a,SAC5E2a,MAAKC,GAASA,EAAM3a,KAAKsa,IAAe,EAGtC,SAASM,aAAaC,EAAYC,EAAWC,GAClD,IAAKF,EAAWpmB,OACd,OAAOomB,EAGT,GAAIE,GAAgD,mBAArBA,EAC7B,OAAOA,EAAiBF,GAG1B,MACMG,GADY,IAAI3oB,OAAO4oB,WACKC,gBAAgBL,EAAY,aACxDnH,EAAW,GAAGrS,UAAU2Z,EAAgB1kB,KAAKkE,iBAAiB,MAEpE,IAAK,MAAMtJ,KAAWwiB,EAAU,CAC9B,MAAMyH,EAAcjqB,EAAQqpB,SAAStnB,cAErC,IAAKJ,OAAOhB,KAAKipB,GAAW3e,SAASgf,GAAc,CACjDjqB,EAAQY,SACR,QACF,CAEA,MAAMspB,EAAgB,GAAG/Z,UAAUnQ,EAAQuN,YACrC4c,EAAoB,GAAGha,OAAOyZ,EAAU,MAAQ,GAAIA,EAAUK,IAAgB,IAEpF,IAAK,MAAMf,KAAagB,EACjBjB,iBAAiBC,EAAWiB,IAC/BnqB,EAAQqN,gBAAgB6b,EAAUG,SAGxC,CAEA,OAAOS,EAAgB1kB,KAAKglB,SAC9B,CCjGA,MAAMnkB,OAAO,kBAEP8H,UAAU,CACd6b,UAAW1C,iBACXmD,QAAS,GACTC,WAAY,GACZC,MAAM,EACNC,UAAU,EACVC,WAAY,KACZC,SAAU,eAGN1c,cAAc,CAClB4b,UAAW,SACXS,QAAS,SACTC,WAAY,oBACZC,KAAM,UACNC,SAAU,UACVC,WAAY,kBACZC,SAAU,UAGNC,mBAAqB,CACzBC,MAAO,iCACP1pB,SAAU,oBAOZ,MAAM2pB,wBAAwB/c,OAC5BU,YAAYL,GACVgB,QACA5F,KAAK8F,QAAU9F,KAAK2E,WAAWC,EACjC,CAGWJ,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA6kB,aACE,OAAOnpB,OAAOkI,OAAON,KAAK8F,QAAQgb,SAC/BnZ,KAAI/C,GAAU5E,KAAKwhB,yBAAyB5c,KAC5CT,OAAO/C,QACZ,CAEAqgB,aACE,OAAOzhB,KAAKuhB,aAAavnB,OAAS,CACpC,CAEA0nB,cAAcZ,GAGZ,OAFA9gB,KAAK2hB,cAAcb,GACnB9gB,KAAK8F,QAAQgb,QAAU,IAAK9gB,KAAK8F,QAAQgb,WAAYA,GAC9C9gB,IACT,CAEA4hB,SACE,MAAMC,EAAkB/oB,SAASof,cAAc,OAC/C2J,EAAgBhB,UAAY7gB,KAAK8hB,eAAe9hB,KAAK8F,QAAQqb,UAE7D,IAAK,MAAOxpB,EAAUoqB,KAAS3pB,OAAOqJ,QAAQzB,KAAK8F,QAAQgb,SACzD9gB,KAAKgiB,YAAYH,EAAiBE,EAAMpqB,GAG1C,MAAMwpB,EAAWU,EAAgB9a,SAAS,GACpCga,EAAa/gB,KAAKwhB,yBAAyBxhB,KAAK8F,QAAQib,YAM9D,OAJIA,GACFI,EAAStmB,UAAUuQ,OAAO2V,EAAWvnB,MAAM,MAGtC2nB,CACT,CAGApc,iBAAiBH,GACfgB,MAAMb,iBAAiBH,GACvB5E,KAAK2hB,cAAc/c,EAAOkc,QAC5B,CAEAa,cAAcM,GACZ,IAAK,MAAOtqB,EAAUmpB,KAAY1oB,OAAOqJ,QAAQwgB,GAC/Crc,MAAMb,iBAAiB,CAAEpN,WAAU0pB,MAAOP,GAAWM,mBAEzD,CAEAY,YAAYb,EAAUL,EAASnpB,GAC7B,MAAMuqB,EAAkBvb,eAAeG,QAAQnP,EAAUwpB,GAEpDe,KAILpB,EAAU9gB,KAAKwhB,yBAAyBV,IAOpClnB,UAAUknB,GACZ9gB,KAAKmiB,sBAAsBpoB,WAAW+mB,GAAUoB,GAI9CliB,KAAK8F,QAAQkb,KACfkB,EAAgBrB,UAAY7gB,KAAK8hB,eAAehB,GAIlDoB,EAAgBE,YAActB,EAd5BoB,EAAgB7qB,SAepB,CAEAyqB,eAAeG,GACb,OAAOjiB,KAAK8F,QAAQmb,SAAWd,aAAa8B,EAAKjiB,KAAK8F,QAAQua,UAAWrgB,KAAK8F,QAAQob,YAAce,CACtG,CAEAT,yBAAyBS,GACvB,OAAOjlB,QAAQilB,EAAK,CAACjiB,MACvB,CAEAmiB,sBAAsB1rB,EAASyrB,GAC7B,GAAIliB,KAAK8F,QAAQkb,KAGf,OAFAkB,EAAgBrB,UAAY,QAC5BqB,EAAgB/J,OAAO1hB,GAIzByrB,EAAgBE,YAAc3rB,EAAQ2rB,WACxC,ECzIF,MAAM1lB,OAAO,UACP2lB,sBAAwB,IAAIrjB,IAAI,CAAC,WAAY,YAAa,eAE1DyJ,kBAAkB,OAClB6Z,iBAAmB,QACnB5Z,kBAAkB,OAElB6Z,uBAAyB,iBACzBC,eAAkB,SAElBC,iBAAmB,gBAEnBC,cAAgB,QAChBC,cAAgB,QAChBC,cAAgB,QAChBC,eAAiB,SAEjB5R,aAAa,OACbC,eAAe,SACfH,aAAa,OACbC,cAAc,QACd8R,eAAiB,WACjBC,cAAc,QACd3K,gBAAgB,UAChB4K,iBAAiB,WACjB9W,iBAAmB,aACnBC,iBAAmB,aAEnB8W,cAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAOhnB,QAAU,OAAS,QAC1BinB,OAAQ,SACRC,KAAMlnB,QAAU,QAAU,QAGtBoI,UAAU,CACd6b,UAAW1C,iBACX4F,WAAW,EACXzO,SAAU,kBACV0O,WAAW,EACXC,YAAa,GACbC,MAAO,EACPC,mBAAoB,CAAC,MAAO,QAAS,SAAU,QAC/C3C,MAAM,EACNhM,OAAQ,CAAC,EAAG,GACZwB,UAAW,MACXvB,aAAc,KACdgM,UAAU,EACVC,WAAY,KACZvpB,UAAU,EACVwpB,SAAU,+GAIVyC,MAAO,GACPzhB,QAAS,eAGLsC,cAAc,CAClB4b,UAAW,SACXkD,UAAW,UACXzO,SAAU,mBACV0O,UAAW,2BACXC,YAAa,oBACbC,MAAO,kBACPC,mBAAoB,QACpB3C,KAAM,UACNhM,OAAQ,0BACRwB,UAAW,oBACXvB,aAAc,yBACdgM,SAAU,UACVC,WAAY,kBACZvpB,SAAU,mBACVwpB,SAAU,SACVyC,MAAO,4BACPzhB,QAAS,UAOX,MAAM0hB,gBAAgBle,cACpBV,YAAYxO,EAASmO,GACnB,QAAsB,IAAXkR,OACT,MAAM,IAAItQ,UAAU,+DAGtBI,MAAMnP,EAASmO,GAGf5E,KAAK8jB,YAAa,EAClB9jB,KAAK+jB,SAAW,EAChB/jB,KAAKgkB,WAAa,KAClBhkB,KAAKikB,eAAiB,GACtBjkB,KAAKoV,QAAU,KACfpV,KAAKkkB,iBAAmB,KACxBlkB,KAAKmkB,YAAc,KAGnBnkB,KAAKokB,IAAM,KAEXpkB,KAAKqkB,gBAEArkB,KAAK8F,QAAQnO,UAChBqI,KAAKskB,WAET,CAGW9f,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGA6nB,SACEvkB,KAAK8jB,YAAa,CACpB,CAEAU,UACExkB,KAAK8jB,YAAa,CACpB,CAEAW,gBACEzkB,KAAK8jB,YAAc9jB,KAAK8jB,UAC1B,CAEAxa,SACOtJ,KAAK8jB,aAIV9jB,KAAKikB,eAAeS,OAAS1kB,KAAKikB,eAAeS,MAC7C1kB,KAAKqS,WACPrS,KAAK2kB,SAIP3kB,KAAK4kB,SACP,CAEA5e,UACE0J,aAAa1P,KAAK+jB,UAElBtkB,aAAaC,IAAIM,KAAK6F,SAAStL,QAjJX,UAEC,gBA+IqDyF,KAAK6kB,mBAE3E7kB,KAAK6F,SAAS5K,aAAa,2BAC7B+E,KAAK6F,SAASjC,aAAa,QAAS5D,KAAK6F,SAAS5K,aAAa,2BAGjE+E,KAAK8kB,iBACLlf,MAAMI,SACR,CAEAuM,OACE,GAAoC,SAAhCvS,KAAK6F,SAASgN,MAAMkC,QACtB,MAAM,IAAIrQ,MAAM,uCAGlB,IAAM1E,KAAK+kB,mBAAoB/kB,KAAK8jB,WAClC,OAGF,MAAM9G,EAAYvd,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYmL,UAzJxD,SA2JT4U,GADa9pB,eAAe8E,KAAK6F,WACL7F,KAAK6F,SAASof,cAAc9pB,iBAAiBL,SAASkF,KAAK6F,UAE7F,GAAImX,EAAUza,mBAAqByiB,EACjC,OAIFhlB,KAAK8kB,iBAEL,MAAMV,EAAMpkB,KAAKklB,iBAEjBllB,KAAK6F,SAASjC,aAAa,mBAAoBwgB,EAAInpB,aAAa,OAEhE,MAAMuoB,UAAEA,GAAcxjB,KAAK8F,QAe3B,GAbK9F,KAAK6F,SAASof,cAAc9pB,gBAAgBL,SAASkF,KAAKokB,OAC7DZ,EAAUrL,OAAOiM,GACjB3kB,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYmL,UA1KpC,cA6KnBpQ,KAAKoV,QAAUpV,KAAKyV,cAAc2O,GAElCA,EAAIvpB,UAAUuQ,IA/LM,QAqMhB,iBAAkBtS,SAASqC,gBAC7B,IAAK,MAAM1E,IAAW,GAAGmQ,UAAU9N,SAAS+C,KAAKkL,UAC/CtH,aAAakC,GAAGlL,EAAS,YAAa+E,MAc1CwE,KAAKoG,gBAVY2M,KACftT,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYmL,UA7LvC,WA+LU,IAApBpQ,KAAKgkB,YACPhkB,KAAK2kB,SAGP3kB,KAAKgkB,YAAa,CAAK,GAGKhkB,KAAKokB,IAAKpkB,KAAK0Q,cAC/C,CAEA4B,OACE,GAAKtS,KAAKqS,aAIQ5S,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYmL,UAjNxD,SAkND7N,iBAAd,CASA,GALYvC,KAAKklB,iBACbrqB,UAAUxD,OAnOM,QAuOhB,iBAAkByB,SAASqC,gBAC7B,IAAK,MAAM1E,IAAW,GAAGmQ,UAAU9N,SAAS+C,KAAKkL,UAC/CtH,aAAaC,IAAIjJ,EAAS,YAAa+E,MAI3CwE,KAAKikB,eAA4B,OAAI,EACrCjkB,KAAKikB,eAA4B,OAAI,EACrCjkB,KAAKikB,eAA4B,OAAI,EACrCjkB,KAAKgkB,WAAa,KAelBhkB,KAAKoG,gBAbY2M,KACX/S,KAAKmlB,yBAIJnlB,KAAKgkB,YACRhkB,KAAK8kB,iBAGP9kB,KAAK6F,SAAS/B,gBAAgB,oBAC9BrE,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYmL,UA/OtC,WA+O8D,GAGjDpQ,KAAKokB,IAAKpkB,KAAK0Q,cA/B7C,CAgCF,CAEAmF,SACM7V,KAAKoV,SACPpV,KAAKoV,QAAQS,QAEjB,CAGAkP,iBACE,OAAO3jB,QAAQpB,KAAKolB,YACtB,CAEAF,iBAKE,OAJKllB,KAAKokB,MACRpkB,KAAKokB,IAAMpkB,KAAKqlB,kBAAkBrlB,KAAKmkB,aAAenkB,KAAKslB,2BAGtDtlB,KAAKokB,GACd,CAEAiB,kBAAkBvE,GAChB,MAAMsD,EAAMpkB,KAAKulB,oBAAoBzE,GAASc,SAG9C,IAAKwC,EACH,OAAO,KAGTA,EAAIvpB,UAAUxD,OA/RM,OAEA,QA+RpB+sB,EAAIvpB,UAAUuQ,IAAK,MAAKpL,KAAKiF,YAAYvI,aAEzC,MAAM8oB,EAAQ/sB,OAAOuH,KAAKiF,YAAYvI,MAAMpE,WAQ5C,OANA8rB,EAAIxgB,aAAa,KAAM4hB,GAEnBxlB,KAAK0Q,eACP0T,EAAIvpB,UAAUuQ,IAxSI,QA2SbgZ,CACT,CAEAqB,WAAW3E,GACT9gB,KAAKmkB,YAAcrD,EACf9gB,KAAKqS,aACPrS,KAAK8kB,iBACL9kB,KAAKuS,OAET,CAEAgT,oBAAoBzE,GAalB,OAZI9gB,KAAKkkB,iBACPlkB,KAAKkkB,iBAAiBxC,cAAcZ,GAEpC9gB,KAAKkkB,iBAAmB,IAAI5C,gBAAgB,IACvCthB,KAAK8F,QAGRgb,UACAC,WAAY/gB,KAAKwhB,yBAAyBxhB,KAAK8F,QAAQ2d,eAIpDzjB,KAAKkkB,gBACd,CAEAoB,yBACE,MAAO,CACL,iBAA0BtlB,KAAKolB,YAEnC,CAEAA,YACE,OAAOplB,KAAKwhB,yBAAyBxhB,KAAK8F,QAAQ8d,QAAU5jB,KAAK6F,SAAS5K,aAAa,yBACzF,CAGAyqB,6BAA6BrmB,GAC3B,OAAOW,KAAKiF,YAAYqD,oBAAoBjJ,EAAME,eAAgBS,KAAK2lB,qBACzE,CAEAjV,cACE,OAAO1Q,KAAK8F,QAAQyd,WAAcvjB,KAAKokB,KAAOpkB,KAAKokB,IAAIvpB,UAAUC,SAtV7C,OAuVtB,CAEAuX,WACE,OAAOrS,KAAKokB,KAAOpkB,KAAKokB,IAAIvpB,UAAUC,SAxVlB,OAyVtB,CAEA2a,cAAc2O,GACZ,MAAM5N,EAAYxZ,QAAQgD,KAAK8F,QAAQ0Q,UAAW,CAACxW,KAAMokB,EAAKpkB,KAAK6F,WAC7D+f,EAAa3C,cAAczM,EAAU/Q,eAC3C,OAAOqQ,OAAOG,aAAajW,KAAK6F,SAAUue,EAAKpkB,KAAKgW,iBAAiB4P,GACvE,CAEAvP,aACE,MAAMrB,OAAEA,GAAWhV,KAAK8F,QAExB,MAAsB,iBAAXkP,EACFA,EAAOxb,MAAM,KAAKmO,KAAI3E,GAAS3J,OAAO0W,SAAS/M,EAAO,MAGzC,mBAAXgS,EACFsB,GAActB,EAAOsB,EAAYtW,KAAK6F,UAGxCmP,CACT,CAEAwM,yBAAyBS,GACvB,OAAOjlB,QAAQilB,EAAK,CAACjiB,KAAK6F,UAC5B,CAEAmQ,iBAAiB4P,GACf,MAAMrP,EAAwB,CAC5BC,UAAWoP,EACXnP,UAAW,CACT,CACEha,KAAM,OACNia,QAAS,CACPiN,mBAAoB3jB,KAAK8F,QAAQ6d,qBAGrC,CACElnB,KAAM,SACNia,QAAS,CACP1B,OAAQhV,KAAKqW,eAGjB,CACE5Z,KAAM,kBACNia,QAAS,CACP5B,SAAU9U,KAAK8F,QAAQgP,WAG3B,CACErY,KAAM,QACNia,QAAS,CACPjgB,QAAU,IAAGuJ,KAAKiF,YAAYvI,eAGlC,CACED,KAAM,kBACNka,SAAS,EACTkP,MAAO,aACPjpB,GAAImM,IAGF/I,KAAKklB,iBAAiBthB,aAAa,wBAAyBmF,EAAK+c,MAAMtP,UAAU,KAMzF,MAAO,IACFD,KACAvZ,QAAQgD,KAAK8F,QAAQmP,aAAc,CAACsB,IAE3C,CAEA8N,gBACE,MAAM0B,EAAW/lB,KAAK8F,QAAQ3D,QAAQ3I,MAAM,KAE5C,IAAK,MAAM2I,KAAW4jB,EACpB,GAAgB,UAAZ5jB,EACF1C,aAAakC,GAAG3B,KAAK6F,SAAU7F,KAAKiF,YAAYmL,UAtZpC,SAsZ4DpQ,KAAK8F,QAAQnO,UAAU0H,IAC7EW,KAAK0lB,6BAA6BrmB,GAC1CiK,QAAQ,SAEb,GAjaU,WAiaNnH,EAA4B,CACrC,MAAM6jB,EAraQ,UAqaE7jB,EACdnC,KAAKiF,YAAYmL,UAzZF,cA0ZfpQ,KAAKiF,YAAYmL,UA5ZL,WA6ZR6V,EAxaQ,UAwaG9jB,EACfnC,KAAKiF,YAAYmL,UA3ZF,cA4ZfpQ,KAAKiF,YAAYmL,UA9ZJ,YAgaf3Q,aAAakC,GAAG3B,KAAK6F,SAAUmgB,EAAShmB,KAAK8F,QAAQnO,UAAU0H,IAC7D,MAAMyX,EAAU9W,KAAK0lB,6BAA6BrmB,GAClDyX,EAAQmN,eAA8B,YAAf5kB,EAAMM,KA7ajB,QADA,UA8auE,EACnFmX,EAAQ8N,QAAQ,IAElBnlB,aAAakC,GAAG3B,KAAK6F,SAAUogB,EAAUjmB,KAAK8F,QAAQnO,UAAU0H,IAC9D,MAAMyX,EAAU9W,KAAK0lB,6BAA6BrmB,GAClDyX,EAAQmN,eAA8B,aAAf5kB,EAAMM,KAlbjB,QADA,SAobVmX,EAAQjR,SAAS/K,SAASuE,EAAM2B,eAElC8V,EAAQ6N,QAAQ,GAEpB,CAGF3kB,KAAK6kB,kBAAoB,KACnB7kB,KAAK6F,UACP7F,KAAKsS,MACP,EAGF7S,aAAakC,GAAG3B,KAAK6F,SAAStL,QArcV,UAEC,gBAmcoDyF,KAAK6kB,kBAChF,CAEAP,YACE,MAAMV,EAAQ5jB,KAAK6F,SAAS5K,aAAa,SAEpC2oB,IAIA5jB,KAAK6F,SAAS5K,aAAa,eAAkB+E,KAAK6F,SAASuc,YAAY1b,QAC1E1G,KAAK6F,SAASjC,aAAa,aAAcggB,GAG3C5jB,KAAK6F,SAASjC,aAAa,yBAA0BggB,GACrD5jB,KAAK6F,SAAS/B,gBAAgB,SAChC,CAEA8gB,SACM5kB,KAAKqS,YAAcrS,KAAKgkB,WAC1BhkB,KAAKgkB,YAAa,GAIpBhkB,KAAKgkB,YAAa,EAElBhkB,KAAKkmB,aAAY,KACXlmB,KAAKgkB,YACPhkB,KAAKuS,MACP,GACCvS,KAAK8F,QAAQ4d,MAAMnR,MACxB,CAEAoS,SACM3kB,KAAKmlB,yBAITnlB,KAAKgkB,YAAa,EAElBhkB,KAAKkmB,aAAY,KACVlmB,KAAKgkB,YACRhkB,KAAKsS,MACP,GACCtS,KAAK8F,QAAQ4d,MAAMpR,MACxB,CAEA4T,YAAYzoB,EAAS0oB,GACnBzW,aAAa1P,KAAK+jB,UAClB/jB,KAAK+jB,SAAWnmB,WAAWH,EAAS0oB,EACtC,CAEAhB,uBACE,OAAO/sB,OAAOkI,OAAON,KAAKikB,gBAAgBviB,UAAS,EACrD,CAEAiD,WAAWC,GACT,MAAMwhB,EAAiB1iB,YAAYK,kBAAkB/D,KAAK6F,UAE1D,IAAK,MAAMwgB,KAAiBjuB,OAAOhB,KAAKgvB,GAClC/D,sBAAsBzrB,IAAIyvB,WACrBD,EAAeC,GAW1B,OAPAzhB,EAAS,IACJwhB,KACmB,iBAAXxhB,GAAuBA,EAASA,EAAS,IAEtDA,EAAS5E,KAAK6E,gBAAgBD,GAC9BA,EAAS5E,KAAK8E,kBAAkBF,GAChC5E,KAAK+E,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAkBhB,OAjBAA,EAAO4e,WAAiC,IAArB5e,EAAO4e,UAAsB1qB,SAAS+C,KAAO9B,WAAW6K,EAAO4e,WAEtD,iBAAjB5e,EAAO8e,QAChB9e,EAAO8e,MAAQ,CACbnR,KAAM3N,EAAO8e,MACbpR,KAAM1N,EAAO8e,QAIW,iBAAjB9e,EAAOgf,QAChBhf,EAAOgf,MAAQhf,EAAOgf,MAAMtrB,YAGA,iBAAnBsM,EAAOkc,UAChBlc,EAAOkc,QAAUlc,EAAOkc,QAAQxoB,YAG3BsM,CACT,CAEA+gB,qBACE,MAAM/gB,EAAS,GAEf,IAAK,MAAOlO,EAAKsM,KAAU5K,OAAOqJ,QAAQzB,KAAK8F,SACzC9F,KAAKiF,YAAYT,QAAQ9N,KAASsM,IACpC4B,EAAOlO,GAAOsM,GAUlB,OANA4B,EAAOjN,UAAW,EAClBiN,EAAOzC,QAAU,SAKVyC,CACT,CAEAkgB,iBACM9kB,KAAKoV,UACPpV,KAAKoV,QAAQQ,UACb5V,KAAKoV,QAAU,MAGbpV,KAAKokB,MACPpkB,KAAKokB,IAAI/sB,SACT2I,KAAKokB,IAAM,KAEf,CAGA9d,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAO8a,QAAQvb,oBAAoBtI,KAAM4E,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFtI,mBAAmBunB,SCtmBnB,MAAMnnB,OAAO,UAEP4pB,eAAiB,kBACjBC,iBAAmB,gBAEnB/hB,UAAU,IACXqf,QAAQrf,QACXsc,QAAS,GACT9L,OAAQ,CAAC,EAAG,GACZwB,UAAW,QACX2K,SAAU,8IAKVhf,QAAS,SAGLsC,cAAc,IACfof,QAAQpf,YACXqc,QAAS,kCAOX,MAAM0F,gBAAgB3C,QAETrf,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGAqoB,iBACE,OAAO/kB,KAAKolB,aAAeplB,KAAKymB,aAClC,CAGAnB,yBACE,MAAO,CACLgB,CAACA,gBAAiBtmB,KAAKolB,YACvB,gBAAoBplB,KAAKymB,cAE7B,CAEAA,cACE,OAAOzmB,KAAKwhB,yBAAyBxhB,KAAK8F,QAAQgb,QACpD,CAGAxa,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOyd,QAAQle,oBAAoBtI,KAAM4E,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFtI,mBAAmBkqB,SC9EnB,MAAM9pB,OAAO,YACPqJ,WAAW,eACXE,YAAa,gBACbgD,aAAe,YAEfyd,eAAkB,wBAClB3D,YAAe,qBACf1W,sBAAuB,6BAEvBsa,yBAA2B,gBAC3Bzd,oBAAoB,SAEpB0d,kBAAoB,yBACpBC,sBAAwB,SACxBC,wBAA0B,oBAC1BC,mBAAqB,YACrBC,mBAAqB,YACrBC,oBAAsB,mBACtBC,oBAAuB,qDACvBC,kBAAoB,YACpBC,2BAA2B,mBAE3B5iB,UAAU,CACdwQ,OAAQ,KACRqS,WAAY,eACZC,cAAc,EACd5pB,OAAQ,KACR6pB,UAAW,CAAC,GAAK,GAAK,IAGlB9iB,cAAc,CAClBuQ,OAAQ,gBACRqS,WAAY,SACZC,aAAc,UACd5pB,OAAQ,UACR6pB,UAAW,SAOb,MAAMC,kBAAkB7hB,cACtBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAGf5E,KAAKynB,aAAe,IAAInxB,IACxB0J,KAAK0nB,oBAAsB,IAAIpxB,IAC/B0J,KAAK2nB,aAA6D,YAA9CxuB,iBAAiB6G,KAAK6F,UAAU+W,UAA0B,KAAO5c,KAAK6F,SAC1F7F,KAAK4nB,cAAgB,KACrB5nB,KAAK6nB,UAAY,KACjB7nB,KAAK8nB,oBAAsB,CACzBC,gBAAiB,EACjBC,gBAAiB,GAEnBhoB,KAAKioB,SACP,CAGWzjB,qBACT,OAAOA,SACT,CAEWC,yBACT,OAAOA,aACT,CAEW/H,kBACT,OAAOA,MACT,CAGAurB,UACEjoB,KAAKkoB,mCACLloB,KAAKmoB,2BAEDnoB,KAAK6nB,UACP7nB,KAAK6nB,UAAUO,aAEfpoB,KAAK6nB,UAAY7nB,KAAKqoB,kBAGxB,IAAK,MAAMC,KAAWtoB,KAAK0nB,oBAAoBpnB,SAC7CN,KAAK6nB,UAAUU,QAAQD,EAE3B,CAEAtiB,UACEhG,KAAK6nB,UAAUO,aACfxiB,MAAMI,SACR,CAGAlB,kBAAkBF,GAWhB,OATAA,EAAOlH,OAAS3D,WAAW6K,EAAOlH,SAAW5E,SAAS+C,KAGtD+I,EAAOyiB,WAAaziB,EAAOoQ,OAAU,GAAEpQ,EAAOoQ,oBAAsBpQ,EAAOyiB,WAE3C,iBAArBziB,EAAO2iB,YAChB3iB,EAAO2iB,UAAY3iB,EAAO2iB,UAAU/tB,MAAM,KAAKmO,KAAI3E,GAAS3J,OAAOC,WAAW0J,MAGzE4B,CACT,CAEAujB,2BACOnoB,KAAK8F,QAAQwhB,eAKlB7nB,aAAaC,IAAIM,KAAK8F,QAAQpI,OAAQqlB,aAEtCtjB,aAAakC,GAAG3B,KAAK8F,QAAQpI,OAAQqlB,YAvGX,UAuG+C1jB,IACvE,MAAMmpB,EAAoBxoB,KAAK0nB,oBAAoB5wB,IAAIuI,EAAM3B,OAAO+qB,MACpE,GAAID,EAAmB,CACrBnpB,EAAMwD,iBACN,MAAMvH,EAAO0E,KAAK2nB,cAAgB/vB,OAC5B8wB,EAASF,EAAkBG,UAAY3oB,KAAK6F,SAAS8iB,UAC3D,GAAIrtB,EAAKstB,SAEP,YADAttB,EAAKstB,SAAS,CAAEC,IAAKH,EAAQI,SAAU,WAKzCxtB,EAAK4gB,UAAYwM,CACnB,KAEJ,CAEAL,kBACE,MAAM3R,EAAU,CACdpb,KAAM0E,KAAK2nB,aACXJ,UAAWvnB,KAAK8F,QAAQyhB,UACxBF,WAAYrnB,KAAK8F,QAAQuhB,YAG3B,OAAO,IAAI0B,sBAAqBtnB,GAAWzB,KAAKgpB,kBAAkBvnB,IAAUiV,EAC9E,CAGAsS,kBAAkBvnB,GAChB,MAAMwnB,EAAgB5H,GAASrhB,KAAKynB,aAAa3wB,IAAK,IAAGuqB,EAAM3jB,OAAOzF,MAChE4gB,EAAWwI,IACfrhB,KAAK8nB,oBAAoBC,gBAAkB1G,EAAM3jB,OAAOirB,UACxD3oB,KAAKkpB,SAASD,EAAc5H,GAAO,EAG/B2G,GAAmBhoB,KAAK2nB,cAAgB7uB,SAASqC,iBAAiB+gB,UAClEiN,EAAkBnB,GAAmBhoB,KAAK8nB,oBAAoBE,gBACpEhoB,KAAK8nB,oBAAoBE,gBAAkBA,EAE3C,IAAK,MAAM3G,KAAS5f,EAAS,CAC3B,IAAK4f,EAAM+H,eAAgB,CACzBppB,KAAK4nB,cAAgB,KACrB5nB,KAAKqpB,kBAAkBJ,EAAc5H,IAErC,QACF,CAEA,MAAMiI,EAA2BjI,EAAM3jB,OAAOirB,WAAa3oB,KAAK8nB,oBAAoBC,gBAEpF,GAAIoB,GAAmBG,GAGrB,GAFAzQ,EAASwI,IAEJ2G,EACH,YAOCmB,GAAoBG,GACvBzQ,EAASwI,EAEb,CACF,CAEA6G,mCACEloB,KAAKynB,aAAe,IAAInxB,IACxB0J,KAAK0nB,oBAAsB,IAAIpxB,IAE/B,MAAMizB,EAAc5iB,eAAepG,KA7KT,SA6KqCP,KAAK8F,QAAQpI,QAE5E,IAAK,MAAM8rB,KAAUD,EAAa,CAEhC,IAAKC,EAAOf,MAAQ/tB,WAAW8uB,GAC7B,SAGF,MAAMhB,EAAoB7hB,eAAeG,QAAQ2iB,UAAUD,EAAOf,MAAOzoB,KAAK6F,UAG1E3L,UAAUsuB,KACZxoB,KAAKynB,aAAajxB,IAAIizB,UAAUD,EAAOf,MAAOe,GAC9CxpB,KAAK0nB,oBAAoBlxB,IAAIgzB,EAAOf,KAAMD,GAE9C,CACF,CAEAU,SAASxrB,GACHsC,KAAK4nB,gBAAkBlqB,IAI3BsC,KAAKqpB,kBAAkBrpB,KAAK8F,QAAQpI,QACpCsC,KAAK4nB,cAAgBlqB,EACrBA,EAAO7C,UAAUuQ,IAzMK,UA0MtBpL,KAAK0pB,iBAAiBhsB,GAEtB+B,aAAa0C,QAAQnC,KAAK6F,SAAU6gB,eAAgB,CAAE1lB,cAAetD,IACvE,CAEAgsB,iBAAiBhsB,GAEf,GAAIA,EAAO7C,UAAUC,SAlNQ,iBAmN3B6L,eAAeG,QAxMY,mBAwMsBpJ,EAAOnD,QAzMpC,cA0MjBM,UAAUuQ,IAnNO,eAuNtB,IAAK,MAAMue,KAAahjB,eAAeO,QAAQxJ,EAnNnB,qBAsN1B,IAAK,MAAMksB,KAAQjjB,eAAeS,KAAKuiB,EAAWzC,qBAChD0C,EAAK/uB,UAAUuQ,IA3NG,SA8NxB,CAEAie,kBAAkB1X,GAChBA,EAAO9W,UAAUxD,OAjOK,UAmOtB,MAAMwyB,EAAcljB,eAAepG,KAAM,gBAAgDoR,GACzF,IAAK,MAAMmY,KAAQD,EACjBC,EAAKjvB,UAAUxD,OArOK,SAuOxB,CAGAiP,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOye,UAAUlf,oBAAoBtI,KAAM4E,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFnF,aAAakC,GAAG/J,OAAQyU,uBAAqB,KAC3C,IAAK,MAAM0d,KAAOpjB,eAAepG,KAAKqmB,mBACpCY,UAAUlf,oBAAoByhB,EAChC,IAOFztB,mBAAmBkrB,WCnRnB,MAAM9qB,OAAO,MACPqJ,WAAW,SACXE,YAAa,UAEbgL,aAAc,cACdC,eAAgB,gBAChBH,aAAc,cACdC,cAAe,eACf5H,qBAAwB,eACxB6C,cAAiB,iBACjBI,oBAAuB,cAEvBb,eAAiB,YACjBC,gBAAkB,aAClB6H,aAAe,UACfC,eAAiB,YAEjBrK,kBAAoB,SACpBT,kBAAkB,OAClBC,kBAAkB,OAClBshB,eAAiB,WAEjB5C,yBAA2B,mBAC3B6C,uBAAyB,iBACzBC,6BAA+B,yBAE/BC,mBAAqB,sCACrBC,eAAiB,8BACjBC,eAAkB,8GAClBlhB,qBAAuB,2EACvBmhB,oBAAuB,GAAED,mBAAmBlhB,uBAE5CohB,4BAA+B,gGAMrC,MAAMC,YAAY7kB,cAChBV,YAAYxO,GACVmP,MAAMnP,GACNuJ,KAAKqV,QAAUrV,KAAK6F,SAAStL,QAAQ4vB,oBAEhCnqB,KAAKqV,UAOVrV,KAAKyqB,sBAAsBzqB,KAAKqV,QAASrV,KAAK0qB,gBAE9CjrB,aAAakC,GAAG3B,KAAK6F,SAAUoG,eAAe5M,GAASW,KAAKoP,SAAS/P,KACvE,CAGW3C,kBACT,MAzDS,KA0DX,CAGA6V,OACE,MAAMoY,EAAY3qB,KAAK6F,SACvB,GAAI7F,KAAK4qB,cAAcD,GACrB,OAIF,MAAME,EAAS7qB,KAAK8qB,iBAEdC,EAAYF,EAChBprB,aAAa0C,QAAQ0oB,EAAQ5Z,aAAY,CAAEjQ,cAAe2pB,IAC1D,KAEgBlrB,aAAa0C,QAAQwoB,EAAW5Z,aAAY,CAAE/P,cAAe6pB,IAEjEtoB,kBAAqBwoB,GAAaA,EAAUxoB,mBAI1DvC,KAAKgrB,YAAYH,EAAQF,GACzB3qB,KAAKirB,UAAUN,EAAWE,GAC5B,CAGAI,UAAUx0B,EAASy0B,GACZz0B,IAILA,EAAQoE,UAAUuQ,IAzEI,UA2EtBpL,KAAKirB,UAAUtkB,eAAeoB,uBAAuBtR,IAgBrDuJ,KAAKoG,gBAdY2M,KACsB,QAAjCtc,EAAQwE,aAAa,SAKzBxE,EAAQqN,gBAAgB,YACxBrN,EAAQmN,aAAa,iBAAiB,GACtC5D,KAAKmrB,gBAAgB10B,GAAS,GAC9BgJ,aAAa0C,QAAQ1L,EAASua,cAAa,CACzChQ,cAAekqB,KARfz0B,EAAQoE,UAAUuQ,IA7EF,OAsFhB,GAG0B3U,EAASA,EAAQoE,UAAUC,SA1FrC,SA2FtB,CAEAkwB,YAAYv0B,EAASy0B,GACdz0B,IAILA,EAAQoE,UAAUxD,OAnGI,UAoGtBZ,EAAQ8mB,OAERvd,KAAKgrB,YAAYrkB,eAAeoB,uBAAuBtR,IAcvDuJ,KAAKoG,gBAZY2M,KACsB,QAAjCtc,EAAQwE,aAAa,SAKzBxE,EAAQmN,aAAa,iBAAiB,GACtCnN,EAAQmN,aAAa,WAAY,MACjC5D,KAAKmrB,gBAAgB10B,GAAS,GAC9BgJ,aAAa0C,QAAQ1L,EAASya,eAAc,CAAElQ,cAAekqB,KAP3Dz0B,EAAQoE,UAAUxD,OAxGF,OA+GyD,GAG/CZ,EAASA,EAAQoE,UAAUC,SAnHrC,SAoHtB,CAEAsU,SAAS/P,GACP,IAAM,CAACmM,eAAgBC,gBAAiB6H,aAAcC,gBAAgB7R,SAASrC,EAAM3I,KACnF,OAGF2I,EAAMgY,kBACNhY,EAAMwD,iBACN,MAAMmN,EAAS,CAACvE,gBAAiB8H,gBAAgB7R,SAASrC,EAAM3I,KAC1D00B,EAAoBvtB,qBAAqBmC,KAAK0qB,eAAevmB,QAAO1N,IAAYiE,WAAWjE,KAAW4I,EAAM3B,OAAQsS,GAAQ,GAE9Hob,IACFA,EAAkB1V,MAAM,CAAE2V,eAAe,IACzCb,IAAIliB,oBAAoB8iB,GAAmB7Y,OAE/C,CAEAmY,eACE,OAAO/jB,eAAepG,KAAK+pB,oBAAqBtqB,KAAKqV,QACvD,CAEAyV,iBACE,OAAO9qB,KAAK0qB,eAAenqB,MAAKyG,GAAShH,KAAK4qB,cAAc5jB,MAAW,IACzE,CAEAyjB,sBAAsB9Y,EAAQ5K,GAC5B/G,KAAKsrB,yBAAyB3Z,EAAQ,OAAQ,WAE9C,IAAK,MAAM3K,KAASD,EAClB/G,KAAKurB,6BAA6BvkB,EAEtC,CAEAukB,6BAA6BvkB,GAC3BA,EAAQhH,KAAKwrB,iBAAiBxkB,GAC9B,MAAMykB,EAAWzrB,KAAK4qB,cAAc5jB,GAC9B0kB,EAAY1rB,KAAK2rB,iBAAiB3kB,GACxCA,EAAMpD,aAAa,gBAAiB6nB,GAEhCC,IAAc1kB,GAChBhH,KAAKsrB,yBAAyBI,EAAW,OAAQ,gBAG9CD,GACHzkB,EAAMpD,aAAa,WAAY,MAGjC5D,KAAKsrB,yBAAyBtkB,EAAO,OAAQ,OAG7ChH,KAAK4rB,mCAAmC5kB,EAC1C,CAEA4kB,mCAAmC5kB,GACjC,MAAMtJ,EAASiJ,eAAeoB,uBAAuBf,GAEhDtJ,IAILsC,KAAKsrB,yBAAyB5tB,EAAQ,OAAQ,YAE1CsJ,EAAM/O,IACR+H,KAAKsrB,yBAAyB5tB,EAAQ,kBAAoB,GAAEsJ,EAAM/O,MAEtE,CAEAkzB,gBAAgB10B,EAASo1B,GACvB,MAAMH,EAAY1rB,KAAK2rB,iBAAiBl1B,GACxC,IAAKi1B,EAAU7wB,UAAUC,SAxLN,YAyLjB,OAGF,MAAMwO,EAASA,CAAC3R,EAAU8f,KACxB,MAAMhhB,EAAUkQ,eAAeG,QAAQnP,EAAU+zB,GAC7Cj1B,GACFA,EAAQoE,UAAUyO,OAAOmO,EAAWoU,EACtC,EAGFviB,EAjM6B,mBALP,UAuMtBA,EAjM2B,iBAJP,QAsMpBoiB,EAAU9nB,aAAa,gBAAiBioB,EAC1C,CAEAP,yBAAyB70B,EAASkpB,EAAW3c,GACtCvM,EAAQuE,aAAa2kB,IACxBlpB,EAAQmN,aAAa+b,EAAW3c,EAEpC,CAEA4nB,cAAc5Y,GACZ,OAAOA,EAAKnX,UAAUC,SAlNA,SAmNxB,CAGA0wB,iBAAiBxZ,GACf,OAAOA,EAAK/K,QAAQqjB,qBAAuBtY,EAAOrL,eAAeG,QAAQwjB,oBAAqBtY,EAChG,CAGA2Z,iBAAiB3Z,GACf,OAAOA,EAAKzX,QAAQ6vB,iBAAmBpY,CACzC,CAGA1L,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOyhB,IAAIliB,oBAAoBtI,MAErC,GAAsB,iBAAX4E,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFnF,aAAakC,GAAG7I,SA9Pc,eA8PkBqQ,sBAAsB,SAAU9J,GAC1E,CAAC,IAAK,QAAQqC,SAAS1B,KAAKqI,UAC9BhJ,EAAMwD,iBAGJnI,WAAWsF,OAIfwqB,IAAIliB,oBAAoBtI,MAAMuS,MAChC,IAKA9S,aAAakC,GAAG/J,OA3Qa,eA2QgB,KAC3C,IAAK,MAAMnB,KAAWkQ,eAAepG,KAAKgqB,6BACxCC,IAAIliB,oBAAoB7R,EAC1B,IAMF6F,mBAAmBkuB,KC9RnB,MAAM9tB,KAAO,QACPqJ,SAAW,WACXE,UAAa,YAEb6lB,gBAAmB,qBACnBC,eAAkB,oBAClB3T,cAAiB,mBACjB4K,eAAkB,oBAClB/R,WAAc,gBACdC,aAAgB,kBAChBH,WAAc,gBACdC,YAAe,iBAEfvI,gBAAkB,OAClBujB,gBAAkB,OAClBtjB,gBAAkB,OAClBwU,mBAAqB,UAErBzY,YAAc,CAClB8e,UAAW,UACX0I,SAAU,UACVvI,MAAO,UAGHlf,QAAU,CACd+e,WAAW,EACX0I,UAAU,EACVvI,MAAO,KAOT,MAAMwI,cAAcvmB,cAClBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAK+jB,SAAW,KAChB/jB,KAAKmsB,sBAAuB,EAC5BnsB,KAAKosB,yBAA0B,EAC/BpsB,KAAKqkB,eACP,CAGW7f,qBACT,OAAOA,OACT,CAEWC,yBACT,OAAOA,WACT,CAEW/H,kBACT,OAAOA,IACT,CAGA6V,OACoB9S,aAAa0C,QAAQnC,KAAK6F,SAAUkL,YAExCxO,mBAIdvC,KAAKqsB,gBAEDrsB,KAAK8F,QAAQyd,WACfvjB,KAAK6F,SAAShL,UAAUuQ,IAvDN,QAiEpBpL,KAAK6F,SAAShL,UAAUxD,OAhEJ,QAiEpBoE,OAAOuE,KAAK6F,UACZ7F,KAAK6F,SAAShL,UAAUuQ,IAjEJ,OACG,WAkEvBpL,KAAKoG,gBAXY2M,KACf/S,KAAK6F,SAAShL,UAAUxD,OAxDH,WAyDrBoI,aAAa0C,QAAQnC,KAAK6F,SAAUmL,aAEpChR,KAAKssB,oBAAoB,GAOGtsB,KAAK6F,SAAU7F,KAAK8F,QAAQyd,WAC5D,CAEAjR,OACOtS,KAAKusB,YAIQ9sB,aAAa0C,QAAQnC,KAAK6F,SAAUoL,YAExC1O,mBAUdvC,KAAK6F,SAAShL,UAAUuQ,IAtFD,WAuFvBpL,KAAKoG,gBAPY2M,KACf/S,KAAK6F,SAAShL,UAAUuQ,IAnFN,QAoFlBpL,KAAK6F,SAAShL,UAAUxD,OAlFH,UADH,QAoFlBoI,aAAa0C,QAAQnC,KAAK6F,SAAUqL,aAAa,GAIrBlR,KAAK6F,SAAU7F,KAAK8F,QAAQyd,YAC5D,CAEAvd,UACEhG,KAAKqsB,gBAEDrsB,KAAKusB,WACPvsB,KAAK6F,SAAShL,UAAUxD,OA/FN,QAkGpBuO,MAAMI,SACR,CAEAumB,UACE,OAAOvsB,KAAK6F,SAAShL,UAAUC,SAtGX,OAuGtB,CAIAwxB,qBACOtsB,KAAK8F,QAAQmmB,WAIdjsB,KAAKmsB,sBAAwBnsB,KAAKosB,0BAItCpsB,KAAK+jB,SAAWnmB,YAAW,KACzBoC,KAAKsS,MAAM,GACVtS,KAAK8F,QAAQ4d,QAClB,CAEA8I,eAAentB,EAAOotB,GACpB,OAAQptB,EAAMM,MACZ,IAAK,YACL,IAAK,WACHK,KAAKmsB,qBAAuBM,EAC5B,MAGF,IAAK,UACL,IAAK,WACHzsB,KAAKosB,wBAA0BK,EASnC,GAAIA,EAEF,YADAzsB,KAAKqsB,gBAIP,MAAMpc,EAAc5Q,EAAM2B,cACtBhB,KAAK6F,WAAaoK,GAAejQ,KAAK6F,SAAS/K,SAASmV,IAI5DjQ,KAAKssB,oBACP,CAEAjI,gBACE5kB,aAAakC,GAAG3B,KAAK6F,SAAUimB,iBAAiBzsB,GAASW,KAAKwsB,eAAentB,GAAO,KACpFI,aAAakC,GAAG3B,KAAK6F,SAAUkmB,gBAAgB1sB,GAASW,KAAKwsB,eAAentB,GAAO,KACnFI,aAAakC,GAAG3B,KAAK6F,SAAUuS,eAAe/Y,GAASW,KAAKwsB,eAAentB,GAAO,KAClFI,aAAakC,GAAG3B,KAAK6F,SAAUmd,gBAAgB3jB,GAASW,KAAKwsB,eAAentB,GAAO,IACrF,CAEAgtB,gBACE3c,aAAa1P,KAAK+jB,UAClB/jB,KAAK+jB,SAAW,IAClB,CAGAzd,uBAAuB1B,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOmjB,MAAM5jB,oBAAoBtI,KAAM4E,GAE7C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5E,KACf,CACF,GACF,EAOFiI,qBAAqBikB,OAMrB5vB,mBAAmB4vB,c"}
1
+ {"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","toType","object","Object","prototype","toString","call","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","isRTL","dir","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","domElement","findHandler","events","callable","delegationSelector","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","handlers","previousFunction","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","_unused","defineProperty","configurable","normalizeData","JSON","parse","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","_destroyElement","each","data","undefined","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","autoClose","boundary","display","offset","popperConfig","reference","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","modifiers","options","enabled","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","scrollTop","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","scroll","Offcanvas","blur","completeCallback","position","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","fallbackPlacements","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","hash","height","offsetTop","scrollTo","top","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","item","activeNodes","node","spy","HOME_KEY","END_KEY","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/dom/data.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null\n }\n\n return selector\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n\n const children = this._getChildren().filter(element => !isDisabled(element))\n let nextActiveElement\n\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n }\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n"],"mappings":";;;;;sCAWA,MAAMA,WAAa,IAAIC,IAEvBC,KAAe,CACbC,IAAIC,EAASC,EAAKC,GACXN,WAAWO,IAAIH,IAClBJ,WAAWG,IAAIC,EAAS,IAAIH,KAG9B,MAAMO,EAAcR,WAAWS,IAAIL,GAI9BI,EAAYD,IAAIF,IAA6B,IAArBG,EAAYE,KAMzCF,EAAYL,IAAIE,EAAKC,GAJnBK,QAAQC,MAAO,+EAA8EC,MAAMC,KAAKN,EAAYO,QAAQ,M,EAOhIN,IAAGA,CAACL,EAASC,IACPL,WAAWO,IAAIH,IACVJ,WAAWS,IAAIL,GAASK,IAAIJ,IAG9B,KAGTW,OAAOZ,EAASC,GACd,IAAKL,WAAWO,IAAIH,GAClB,OAGF,MAAMI,EAAcR,WAAWS,IAAIL,GAEnCI,EAAYS,OAAOZ,GAGM,IAArBG,EAAYE,MACdV,WAAWiB,OAAOb,EAEtB,GC9CIc,QAAU,IACVC,wBAA0B,IAC1BC,eAAiB,gBAOjBC,cAAgBC,IAChBA,GAAYC,OAAOC,KAAOD,OAAOC,IAAIC,SAEvCH,EAAWA,EAASI,QAAQ,iBAAiB,CAACC,EAAOC,IAAQ,IAAGJ,IAAIC,OAAOG,QAGtEN,GAIHO,OAASC,GACTA,QACM,GAAEA,IAGLC,OAAOC,UAAUC,SAASC,KAAKJ,GAAQH,MAAM,eAAe,GAAGQ,cAOlEC,OAASC,IACb,GACEA,GAAUC,KAAKC,MAjCH,IAiCSD,KAAKE,gBACnBC,SAASC,eAAeL,IAEjC,OAAOA,CAAM,EAGTM,iCAAmCvC,IACvC,IAAKA,EACH,OAAO,EAIT,IAAIwC,mBAAEA,EAAkBC,gBAAEA,GAAoBtB,OAAOuB,iBAAiB1C,GAEtE,MAAM2C,EAA0BC,OAAOC,WAAWL,GAC5CM,EAAuBF,OAAOC,WAAWJ,GAG/C,OAAKE,GAA4BG,GAKjCN,EAAqBA,EAAmBO,MAAM,KAAK,GACnDN,EAAkBA,EAAgBM,MAAM,KAAK,GAxDf,KA0DtBH,OAAOC,WAAWL,GAAsBI,OAAOC,WAAWJ,KAPzD,CAOoG,EAGzGO,qBAAuBhD,IAC3BA,EAAQiD,cAAc,IAAIC,MAAMlC,gBAAgB,EAG5CmC,UAAYzB,MACXA,GAA4B,iBAAXA,UAIO,IAAlBA,EAAO0B,SAChB1B,EAASA,EAAO,SAGgB,IAApBA,EAAO2B,UAGjBC,WAAa5B,GAEbyB,UAAUzB,GACLA,EAAO0B,OAAS1B,EAAO,GAAKA,EAGf,iBAAXA,GAAuBA,EAAO6B,OAAS,EACzClB,SAASmB,cAAcvC,cAAcS,IAGvC,KAGH+B,UAAYzD,IAChB,IAAKmD,UAAUnD,IAAgD,IAApCA,EAAQ0D,iBAAiBH,OAClD,OAAO,EAGT,MAAMI,EAAgF,YAA7DjB,iBAAiB1C,GAAS4D,iBAAiB,cAE9DC,EAAgB7D,EAAQ8D,QAAQ,uBAEtC,IAAKD,EACH,OAAOF,EAGT,GAAIE,IAAkB7D,EAAS,CAC7B,MAAM+D,EAAU/D,EAAQ8D,QAAQ,WAChC,GAAIC,GAAWA,EAAQC,aAAeH,EACpC,OAAO,EAGT,GAAgB,OAAZE,EACF,OAAO,CAEX,CAEA,OAAOJ,CAAgB,EAGnBM,WAAajE,IACZA,GAAWA,EAAQqD,WAAaa,KAAKC,gBAItCnE,EAAQoE,UAAUC,SAAS,mBAIC,IAArBrE,EAAQsE,SACVtE,EAAQsE,SAGVtE,EAAQuE,aAAa,aAAoD,UAArCvE,EAAQwE,aAAa,aAG5DC,eAAiBzE,IACrB,IAAKqC,SAASqC,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxB3E,EAAQ4E,YAA4B,CAC7C,MAAMC,EAAO7E,EAAQ4E,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,IAC7C,CAEA,OAAI7E,aAAmB8E,WACd9E,EAIJA,EAAQgE,WAINS,eAAezE,EAAQgE,YAHrB,IAGgC,EAGrCe,KAAOA,OAUPC,OAAShF,IACbA,EAAQiF,YAAY,EAGhBC,UAAYA,IACZ/D,OAAOgE,SAAW9C,SAAS+C,KAAKb,aAAa,qBACxCpD,OAAOgE,OAGT,KAGHE,0BAA4B,GAE5BC,mBAAqBC,IACG,YAAxBlD,SAASmD,YAENH,0BAA0B9B,QAC7BlB,SAASoD,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMF,KAAYF,0BACrBE,GACF,IAIJF,0BAA0BK,KAAKH,IAE/BA,GACF,EAGII,MAAQA,IAAuC,QAAjCtD,SAASqC,gBAAgBkB,IAEvCC,mBAAqBC,IAnBAP,QAoBN,KACjB,MAAMQ,EAAIb,YAEV,GAAIa,EAAG,CACL,MAAMC,EAAOF,EAAOG,KACdC,EAAqBH,EAAEI,GAAGH,GAChCD,EAAEI,GAAGH,GAAQF,EAAOM,gBACpBL,EAAEI,GAAGH,GAAMK,YAAcP,EACzBC,EAAEI,GAAGH,GAAMM,WAAa,KACtBP,EAAEI,GAAGH,GAAQE,EACNJ,EAAOM,gBAElB,GA/B0B,YAAxB/D,SAASmD,YAENH,0BAA0B9B,QAC7BlB,SAASoD,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMF,KAAYF,0BACrBE,GACF,IAIJF,0BAA0BK,KAAKH,IAE/BA,GAoBA,EAGEgB,QAAUA,CAACC,EAAkBC,EAAO,GAAIC,EAAeF,IACxB,mBAArBA,EAAkCA,KAAoBC,GAAQC,EAGxEC,uBAAyBA,CAACpB,EAAUqB,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAN,QAAQhB,GAIV,MACMuB,EAAmBvE,iCAAiCqE,GADlC,EAGxB,IAAIG,GAAS,EAEb,MAAMC,EAAUA,EAAGC,aACbA,IAAWL,IAIfG,GAAS,EACTH,EAAkBM,oBAAoBlG,eAAgBgG,GACtDT,QAAQhB,GAAS,EAGnBqB,EAAkBnB,iBAAiBzE,eAAgBgG,GACnDG,YAAW,KACJJ,GACH/D,qBAAqB4D,EACvB,GACCE,EAAiB,EAYhBM,qBAAuBA,CAACC,EAAMC,EAAeC,EAAeC,KAChE,MAAMC,EAAaJ,EAAK9D,OACxB,IAAImE,EAAQL,EAAKM,QAAQL,GAIzB,OAAe,IAAXI,GACMH,GAAiBC,EAAiBH,EAAKI,EAAa,GAAKJ,EAAK,IAGxEK,GAASH,EAAgB,GAAK,EAE1BC,IACFE,GAASA,EAAQD,GAAcA,GAG1BJ,EAAKnF,KAAK0F,IAAI,EAAG1F,KAAK2F,IAAIH,EAAOD,EAAa,KAAI,EC7QrDK,eAAiB,qBACjBC,eAAiB,OACjBC,cAAgB,SAChBC,cAAgB,GACtB,IAAIC,SAAW,EACf,MAAMC,aAAe,CACnBC,WAAY,YACZC,WAAY,YAGRC,aAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOF,SAASC,aAAaxI,EAASyI,GAC7B,OAAQA,GAAQ,GAAEA,MAAQP,cAAiBlI,EAAQkI,UAAYA,UACjE,CAEA,SAASQ,iBAAiB1I,GACxB,MAAMyI,EAAMD,aAAaxI,GAKzB,OAHAA,EAAQkI,SAAWO,EACnBR,cAAcQ,GAAOR,cAAcQ,IAAQ,GAEpCR,cAAcQ,EACvB,CAEA,SAASE,iBAAiB3I,EAASmG,GACjC,OAAO,SAASa,EAAQ4B,GAOtB,OANAC,WAAWD,EAAO,CAAEE,eAAgB9I,IAEhCgH,EAAQ+B,QACVC,aAAaC,IAAIjJ,EAAS4I,EAAMM,KAAM/C,GAGjCA,EAAGgD,MAAMnJ,EAAS,CAAC4I,G,CAE9B,CAEA,SAASQ,2BAA2BpJ,EAASkB,EAAUiF,GACrD,OAAO,SAASa,EAAQ4B,GACtB,MAAMS,EAAcrJ,EAAQsJ,iBAAiBpI,GAE7C,IAAK,IAAI+F,OAAEA,GAAW2B,EAAO3B,GAAUA,IAAWsC,KAAMtC,EAASA,EAAOjD,WACtE,IAAK,MAAMwF,KAAcH,EACvB,GAAIG,IAAevC,EAUnB,OANA4B,WAAWD,EAAO,CAAEE,eAAgB7B,IAEhCD,EAAQ+B,QACVC,aAAaC,IAAIjJ,EAAS4I,EAAMM,KAAMhI,EAAUiF,GAG3CA,EAAGgD,MAAMlC,EAAQ,CAAC2B,G,CAIjC,CAEA,SAASa,YAAYC,EAAQC,EAAUC,EAAqB,MAC1D,OAAOjI,OAAOkI,OAAOH,GAClBI,MAAKlB,GAASA,EAAMe,WAAaA,GAAYf,EAAMgB,qBAAuBA,GAC/E,CAEA,SAASG,oBAAoBC,EAAmBhD,EAASiD,GACvD,MAAMC,EAAiC,iBAAZlD,EAErB2C,EAAWO,EAAcD,EAAsBjD,GAAWiD,EAChE,IAAIE,EAAYC,aAAaJ,GAM7B,OAJK1B,aAAanI,IAAIgK,KACpBA,EAAYH,GAGP,CAACE,EAAaP,EAAUQ,EACjC,CAEA,SAASE,WAAWrK,EAASgK,EAAmBhD,EAASiD,EAAoBlB,GAC3E,GAAiC,iBAAtBiB,IAAmChK,EAC5C,OAGF,IAAKkK,EAAaP,EAAUQ,GAAaJ,oBAAoBC,EAAmBhD,EAASiD,GAIzF,GAAID,KAAqB7B,aAAc,CACrC,MAAMmC,EAAenE,GACZ,SAAUyC,GACf,IAAKA,EAAM2B,eAAkB3B,EAAM2B,gBAAkB3B,EAAME,iBAAmBF,EAAME,eAAezE,SAASuE,EAAM2B,eAChH,OAAOpE,EAAGrE,KAAKyH,KAAMX,E,EAK3Be,EAAWW,EAAaX,EAC1B,CAEA,MAAMD,EAAShB,iBAAiB1I,GAC1BwK,EAAWd,EAAOS,KAAeT,EAAOS,GAAa,IACrDM,EAAmBhB,YAAYe,EAAUb,EAAUO,EAAclD,EAAU,MAEjF,GAAIyD,EAGF,YAFAA,EAAiB1B,OAAS0B,EAAiB1B,QAAUA,GAKvD,MAAMN,EAAMD,aAAamB,EAAUK,EAAkB1I,QAAQwG,eAAgB,KACvE3B,EAAK+D,EACTd,2BAA2BpJ,EAASgH,EAAS2C,GAC7ChB,iBAAiB3I,EAAS2J,GAE5BxD,EAAGyD,mBAAqBM,EAAclD,EAAU,KAChDb,EAAGwD,SAAWA,EACdxD,EAAG4C,OAASA,EACZ5C,EAAG+B,SAAWO,EACd+B,EAAS/B,GAAOtC,EAEhBnG,EAAQyF,iBAAiB0E,EAAWhE,EAAI+D,EAC1C,CAEA,SAASQ,cAAc1K,EAAS0J,EAAQS,EAAWnD,EAAS4C,GAC1D,MAAMzD,EAAKsD,YAAYC,EAAOS,GAAYnD,EAAS4C,GAE9CzD,IAILnG,EAAQkH,oBAAoBiD,EAAWhE,EAAIwE,QAAQf,WAC5CF,EAAOS,GAAWhE,EAAG+B,UAC9B,CAEA,SAAS0C,yBAAyB5K,EAAS0J,EAAQS,EAAWU,GAC5D,MAAMC,EAAoBpB,EAAOS,IAAc,GAE/C,IAAK,MAAOY,EAAYnC,KAAUjH,OAAOqJ,QAAQF,GAC3CC,EAAWE,SAASJ,IACtBH,cAAc1K,EAAS0J,EAAQS,EAAWvB,EAAMe,SAAUf,EAAMgB,mBAGtE,CAEA,SAASQ,aAAaxB,GAGpB,OADAA,EAAQA,EAAMtH,QAAQyG,eAAgB,IAC/BI,aAAaS,IAAUA,CAChC,CAEA,MAAMI,aAAe,CACnBkC,GAAGlL,EAAS4I,EAAO5B,EAASiD,GAC1BI,WAAWrK,EAAS4I,EAAO5B,EAASiD,GAAoB,E,EAG1DkB,IAAInL,EAAS4I,EAAO5B,EAASiD,GAC3BI,WAAWrK,EAAS4I,EAAO5B,EAASiD,GAAoB,E,EAG1DhB,IAAIjJ,EAASgK,EAAmBhD,EAASiD,GACvC,GAAiC,iBAAtBD,IAAmChK,EAC5C,OAGF,MAAOkK,EAAaP,EAAUQ,GAAaJ,oBAAoBC,EAAmBhD,EAASiD,GACrFmB,EAAcjB,IAAcH,EAC5BN,EAAShB,iBAAiB1I,GAC1B8K,EAAoBpB,EAAOS,IAAc,GACzCkB,EAAcrB,EAAkBsB,WAAW,KAEjD,QAAwB,IAAb3B,EAAX,CAUA,GAAI0B,EACF,IAAK,MAAME,KAAgB5J,OAAOhB,KAAK+I,GACrCkB,yBAAyB5K,EAAS0J,EAAQ6B,EAAcvB,EAAkBwB,MAAM,IAIpF,IAAK,MAAOC,EAAa7C,KAAUjH,OAAOqJ,QAAQF,GAAoB,CACpE,MAAMC,EAAaU,EAAYnK,QAAQ0G,cAAe,IAEjDoD,IAAepB,EAAkBiB,SAASF,IAC7CL,cAAc1K,EAAS0J,EAAQS,EAAWvB,EAAMe,SAAUf,EAAMgB,mBAEpE,CAdA,KARA,CAEE,IAAKjI,OAAOhB,KAAKmK,GAAmBvH,OAClC,OAGFmH,cAAc1K,EAAS0J,EAAQS,EAAWR,EAAUO,EAAclD,EAAU,KAE9E,C,EAiBF0E,QAAQ1L,EAAS4I,EAAOnC,GACtB,GAAqB,iBAAVmC,IAAuB5I,EAChC,OAAO,KAGT,MAAM+F,EAAIb,YAIV,IAAIyG,EAAc,KACdC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EALHlD,IADFwB,aAAaxB,IAQZ7C,IACjB4F,EAAc5F,EAAE7C,MAAM0F,EAAOnC,GAE7BV,EAAE/F,GAAS0L,QAAQC,GACnBC,GAAWD,EAAYI,uBACvBF,GAAkBF,EAAYK,gCAC9BF,EAAmBH,EAAYM,sBAGjC,MAAMC,EAAMrD,WAAW,IAAI3F,MAAM0F,EAAO,CAAEgD,UAASO,YAAY,IAAS1F,GAcxE,OAZIqF,GACFI,EAAIE,iBAGFP,GACF7L,EAAQiD,cAAciJ,GAGpBA,EAAIJ,kBAAoBH,GAC1BA,EAAYS,iBAGPF,CACT,GAGF,SAASrD,WAAWwD,EAAKC,EAAO,IAC9B,IAAK,MAAOrM,EAAKsM,KAAU5K,OAAOqJ,QAAQsB,GACxC,IACED,EAAIpM,GAAOsM,C,CACX,MAAAC,GACA7K,OAAO8K,eAAeJ,EAAKpM,EAAK,CAC9ByM,cAAc,EACdrM,IAAGA,IACMkM,GAGb,CAGF,OAAOF,CACT,CCnTA,SAASM,cAAcJ,GACrB,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,GAAIA,IAAU3J,OAAO2J,GAAO1K,WAC1B,OAAOe,OAAO2J,GAGhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,IACE,OAAOK,KAAKC,MAAMC,mBAAmBP,G,CACrC,MAAAC,GACA,OAAOD,CACT,CACF,CAEA,SAASQ,iBAAiB9M,GACxB,OAAOA,EAAIqB,QAAQ,UAAU0L,GAAQ,IAAGA,EAAIjL,iBAC9C,CAEA,MAAMkL,YAAc,CAClBC,iBAAiBlN,EAASC,EAAKsM,GAC7BvM,EAAQmN,aAAc,WAAUJ,iBAAiB9M,KAAQsM,E,EAG3Da,oBAAoBpN,EAASC,GAC3BD,EAAQqN,gBAAiB,WAAUN,iBAAiB9M,K,EAGtDqN,kBAAkBtN,GAChB,IAAKA,EACH,MAAO,GAGT,MAAMuN,EAAa,GACbC,EAAS7L,OAAOhB,KAAKX,EAAQyN,SAASC,QAAOzN,GAAOA,EAAIqL,WAAW,QAAUrL,EAAIqL,WAAW,cAElG,IAAK,MAAMrL,KAAOuN,EAAQ,CACxB,IAAIG,EAAU1N,EAAIqB,QAAQ,MAAO,IACjCqM,EAAUA,EAAQC,OAAO,GAAG7L,cAAgB4L,EAAQnC,MAAM,EAAGmC,EAAQpK,QACrEgK,EAAWI,GAAWhB,cAAc3M,EAAQyN,QAAQxN,GACtD,CAEA,OAAOsN,C,EAGTM,iBAAgBA,CAAC7N,EAASC,IACjB0M,cAAc3M,EAAQwE,aAAc,WAAUuI,iBAAiB9M,QCpD1E,MAAM6N,OAEJ,kBAAWC,GACT,MAAO,EACT,CAEA,sBAAWC,GACT,MAAO,EACT,CAEA,eAAW/H,GACT,MAAM,IAAIgI,MAAM,sEAClB,CAEAC,WAAWC,GAIT,OAHAA,EAAS5E,KAAK6E,gBAAgBD,GAC9BA,EAAS5E,KAAK8E,kBAAkBF,GAChC5E,KAAK+E,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAChB,OAAOA,CACT,CAEAC,gBAAgBD,EAAQnO,GACtB,MAAMuO,EAAapL,UAAUnD,GAAWiN,YAAYY,iBAAiB7N,EAAS,UAAY,GAE1F,MAAO,IACFuJ,KAAKiF,YAAYT,WACM,iBAAfQ,EAA0BA,EAAa,MAC9CpL,UAAUnD,GAAWiN,YAAYK,kBAAkBtN,GAAW,MAC5C,iBAAXmO,EAAsBA,EAAS,GAE9C,CAEAG,iBAAiBH,EAAQM,EAAclF,KAAKiF,YAAYR,aACtD,IAAK,MAAOU,EAAUC,KAAkBhN,OAAOqJ,QAAQyD,GAAc,CACnE,MAAMlC,EAAQ4B,EAAOO,GACfE,EAAYzL,UAAUoJ,GAAS,UH1BrC7K,OADSA,EG2B+C6K,GHzBlD,GAAE7K,IAGLC,OAAOC,UAAUC,SAASC,KAAKJ,GAAQH,MAAM,eAAe,GAAGQ,cGwBlE,IAAK,IAAI8M,OAAOF,GAAeG,KAAKF,GAClC,MAAM,IAAIG,UACP,GAAExF,KAAKiF,YAAYvI,KAAK+I,0BAA0BN,qBAA4BE,yBAAiCD,MAGtH,CHlCWjN,KGmCb,EC7CF,MAAMuN,QAAU,QAMhB,MAAMC,sBAAsBpB,OAC1BU,YAAYxO,EAASmO,GACnBgB,SAEAnP,EAAUsD,WAAWtD,MAKrBuJ,KAAK6F,SAAWpP,EAChBuJ,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAE/BrO,KAAKC,IAAIwJ,KAAK6F,SAAU7F,KAAKiF,YAAYc,SAAU/F,MACrD,CAGAgG,UACEzP,KAAKc,OAAO2I,KAAK6F,SAAU7F,KAAKiF,YAAYc,UAC5CtG,aAAaC,IAAIM,KAAK6F,SAAU7F,KAAKiF,YAAYgB,WAEjD,IAAK,MAAMC,KAAgB9N,OAAO+N,oBAAoBnG,MACpDA,KAAKkG,GAAgB,IAEzB,CAEAE,eAAepK,EAAUvF,EAAS4P,GAAa,GAC7CjJ,uBAAuBpB,EAAUvF,EAAS4P,EAC5C,CAEA1B,WAAWC,GAIT,OAHAA,EAAS5E,KAAK6E,gBAAgBD,EAAQ5E,KAAK6F,UAC3CjB,EAAS5E,KAAK8E,kBAAkBF,GAChC5E,KAAK+E,iBAAiBH,GACfA,CACT,CAGA,kBAAO0B,CAAY7P,GACjB,OAAOF,KAAKO,IAAIiD,WAAWtD,GAAUuJ,KAAK+F,SAC5C,CAEA,0BAAOQ,CAAoB9P,EAASmO,EAAS,IAC3C,OAAO5E,KAAKsG,YAAY7P,IAAY,IAAIuJ,KAAKvJ,EAA2B,iBAAXmO,EAAsBA,EAAS,KAC9F,CAEA,kBAAWc,GACT,MApDY,OAqDd,CAEA,mBAAWK,GACT,MAAQ,MAAK/F,KAAKtD,MACpB,CAEA,oBAAWuJ,GACT,MAAQ,IAAGjG,KAAK+F,UAClB,CAEA,gBAAOS,CAAU/J,GACf,MAAQ,GAAEA,IAAOuD,KAAKiG,WACxB,ECxEF,MAAMQ,YAAchQ,IAClB,IAAIkB,EAAWlB,EAAQwE,aAAa,kBAEpC,IAAKtD,GAAyB,MAAbA,EAAkB,CACjC,IAAI+O,EAAgBjQ,EAAQwE,aAAa,QAMzC,IAAKyL,IAAmBA,EAAchF,SAAS,OAASgF,EAAc3E,WAAW,KAC/E,OAAO,KAIL2E,EAAchF,SAAS,OAASgF,EAAc3E,WAAW,OAC3D2E,EAAiB,IAAGA,EAAclN,MAAM,KAAK,MAG/C7B,EAAW+O,GAAmC,MAAlBA,EAAwBhP,cAAcgP,EAAcC,QAAU,IAC5F,CAEA,OAAOhP,CAAQ,EAGXiP,eAAiB,CACrBrG,KAAIA,CAAC5I,EAAUlB,EAAUqC,SAASqC,kBACzB,GAAG0L,UAAUC,QAAQzO,UAAU0H,iBAAiBxH,KAAK9B,EAASkB,IAGvEoP,QAAOA,CAACpP,EAAUlB,EAAUqC,SAASqC,kBAC5B2L,QAAQzO,UAAU4B,cAAc1B,KAAK9B,EAASkB,GAGvDqP,SAAQA,CAACvQ,EAASkB,IACT,GAAGkP,UAAUpQ,EAAQuQ,UAAU7C,QAAO8C,GAASA,EAAMC,QAAQvP,KAGtEwP,QAAQ1Q,EAASkB,GACf,MAAMwP,EAAU,GAChB,IAAIC,EAAW3Q,EAAQgE,WAAWF,QAAQ5C,GAE1C,KAAOyP,GACLD,EAAQhL,KAAKiL,GACbA,EAAWA,EAAS3M,WAAWF,QAAQ5C,GAGzC,OAAOwP,C,EAGTE,KAAK5Q,EAASkB,GACZ,IAAI2P,EAAW7Q,EAAQ8Q,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASJ,QAAQvP,GACnB,MAAO,CAAC2P,GAGVA,EAAWA,EAASC,sBACtB,CAEA,MAAO,E,EAGTC,KAAK/Q,EAASkB,GACZ,IAAI6P,EAAO/Q,EAAQgR,mBAEnB,KAAOD,GAAM,CACX,GAAIA,EAAKN,QAAQvP,GACf,MAAO,CAAC6P,GAGVA,EAAOA,EAAKC,kBACd,CAEA,MAAO,E,EAGTC,kBAAkBjR,GAChB,MAAMkR,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAC,KAAIjQ,GAAa,GAAEA,2BAAiCkQ,KAAK,KAE3D,OAAO7H,KAAKO,KAAKoH,EAAYlR,GAAS0N,QAAO2D,IAAOpN,WAAWoN,IAAO5N,UAAU4N,I,EAGlFC,uBAAuBtR,GACrB,MAAMkB,EAAW8O,YAAYhQ,GAE7B,OAAIkB,GACKiP,eAAeG,QAAQpP,GAAYA,EAGrC,I,EAGTqQ,uBAAuBvR,GACrB,MAAMkB,EAAW8O,YAAYhQ,GAE7B,OAAOkB,EAAWiP,eAAeG,QAAQpP,GAAY,I,EAGvDsQ,gCAAgCxR,GAC9B,MAAMkB,EAAW8O,YAAYhQ,GAE7B,OAAOkB,EAAWiP,eAAerG,KAAK5I,GAAY,EACpD,GC/GIuQ,qBAAuBA,CAACC,EAAWC,EAAS,UAChD,MAAMC,EAAc,gBAAeF,EAAUlC,YACvCxJ,EAAO0L,EAAUzL,KAEvB+C,aAAakC,GAAG7I,SAAUuP,EAAa,qBAAoB5L,OAAU,SAAU4C,GAK7E,GAJI,CAAC,IAAK,QAAQqC,SAAS1B,KAAKsI,UAC9BjJ,EAAMwD,iBAGJnI,WAAWsF,MACb,OAGF,MAAMtC,EAASkJ,eAAeoB,uBAAuBhI,OAASA,KAAKzF,QAAS,IAAGkC,KAC9D0L,EAAU5B,oBAAoB7I,GAGtC0K,IACX,GAAE,ECbE1L,OAAO,QACPqJ,WAAW,WACXE,YAAa,YAEbsC,YAAe,iBACfC,aAAgB,kBAChBC,kBAAkB,OAClBC,kBAAkB,OAMxB,MAAMC,cAAchD,cAElB,eAAWjJ,GACT,OAAOA,MACT,CAGAkM,QAGE,GAFmBnJ,aAAa0C,QAAQnC,KAAK6F,SAAU0C,aAExChG,iBACb,OAGFvC,KAAK6F,SAAShL,UAAUxD,OApBJ,QAsBpB,MAAMgP,EAAarG,KAAK6F,SAAShL,UAAUC,SAvBvB,QAwBpBkF,KAAKoG,gBAAe,IAAMpG,KAAK6I,mBAAmB7I,KAAK6F,SAAUQ,EACnE,CAGAwC,kBACE7I,KAAK6F,SAASxO,SACdoI,aAAa0C,QAAQnC,KAAK6F,SAAU2C,cACpCxI,KAAKgG,SACP,CAGA,sBAAOnJ,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOJ,MAAMpC,oBAAoBvG,MAEvC,GAAsB,iBAAX4E,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5E,KANb,CAOF,GACF,EAOFkI,qBAAqBS,MAAO,SAM5BrM,mBAAmBqM,OCrEnB,MAAMjM,OAAO,SACPqJ,WAAW,YACXE,YAAa,IAAGF,aAChBkD,eAAe,YAEfC,oBAAoB,SACpBC,uBAAuB,4BACvBC,uBAAwB,QAAOnD,uBAMrC,MAAMoD,eAAe1D,cAEnB,eAAWjJ,GACT,OAAOA,MACT,CAGA4M,SAEEtJ,KAAK6F,SAASjC,aAAa,eAAgB5D,KAAK6F,SAAShL,UAAUyO,OAjB7C,UAkBxB,CAGA,sBAAOzM,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOM,OAAO9C,oBAAoBvG,MAEzB,WAAX4E,GACFmE,EAAKnE,IAET,GACF,EAOFnF,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB9J,IACpEA,EAAMwD,iBAEN,MAAM0G,EAASlK,EAAM3B,OAAOnD,QAAQ4O,wBACvBE,OAAO9C,oBAAoBgD,GAEnCD,QAAQ,IAOfhN,mBAAmB+M,QCtDnB,MAAM3M,OAAO,QACPuJ,YAAY,YACZuD,iBAAoB,sBACpBC,gBAAmB,qBACnBC,eAAkB,oBAClBC,kBAAqB,uBACrBC,gBAAmB,qBACnBC,mBAAqB,QACrBC,iBAAmB,MACnBC,yBAA2B,gBAC3BC,gBAAkB,GAElBxF,UAAU,CACdyF,YAAa,KACbC,aAAc,KACdC,cAAe,MAGX1F,cAAc,CAClBwF,YAAa,kBACbC,aAAc,kBACdC,cAAe,mBAOjB,MAAMC,cAAc7F,OAClBU,YAAYxO,EAASmO,GACnBgB,QACA5F,KAAK6F,SAAWpP,EAEXA,GAAY2T,MAAMC,gBAIvBrK,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAC/B5E,KAAKsK,QAAU,EACftK,KAAKuK,sBAAwBnJ,QAAQxJ,OAAO4S,cAC5CxK,KAAKyK,cACP,CAGA,kBAAWjG,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGAsJ,UACEvG,aAAaC,IAAIM,KAAK6F,SAzDR,YA0DhB,CAGA6E,OAAOrL,GACAW,KAAKuK,sBAMNvK,KAAK2K,wBAAwBtL,KAC/BW,KAAKsK,QAAUjL,EAAMuL,SANrB5K,KAAKsK,QAAUjL,EAAMwL,QAAQ,GAAGD,OAQpC,CAEAE,KAAKzL,GACCW,KAAK2K,wBAAwBtL,KAC/BW,KAAKsK,QAAUjL,EAAMuL,QAAU5K,KAAKsK,SAGtCtK,KAAK+K,eACL/N,QAAQgD,KAAK8F,QAAQmE,YACvB,CAEAe,MAAM3L,GACJW,KAAKsK,QAAUjL,EAAMwL,SAAWxL,EAAMwL,QAAQ7Q,OAAS,EACrD,EACAqF,EAAMwL,QAAQ,GAAGD,QAAU5K,KAAKsK,OACpC,CAEAS,eACE,MAAME,EAAYtS,KAAKuS,IAAIlL,KAAKsK,SAEhC,GAAIW,GAlFgB,GAmFlB,OAGF,MAAME,EAAYF,EAAYjL,KAAKsK,QAEnCtK,KAAKsK,QAAU,EAEVa,GAILnO,QAAQmO,EAAY,EAAInL,KAAK8F,QAAQqE,cAAgBnK,KAAK8F,QAAQoE,aACpE,CAEAO,cACMzK,KAAKuK,uBACP9K,aAAakC,GAAG3B,KAAK6F,SAAU8D,mBAAmBtK,GAASW,KAAK0K,OAAOrL,KACvEI,aAAakC,GAAG3B,KAAK6F,SAAU+D,iBAAiBvK,GAASW,KAAK8K,KAAKzL,KAEnEW,KAAK6F,SAAShL,UAAUuQ,IAvGG,mBAyG3B3L,aAAakC,GAAG3B,KAAK6F,SAAU2D,kBAAkBnK,GAASW,KAAK0K,OAAOrL,KACtEI,aAAakC,GAAG3B,KAAK6F,SAAU4D,iBAAiBpK,GAASW,KAAKgL,MAAM3L,KACpEI,aAAakC,GAAG3B,KAAK6F,SAAU6D,gBAAgBrK,GAASW,KAAK8K,KAAKzL,KAEtE,CAEAsL,wBAAwBtL,GACtB,OAAOW,KAAKuK,wBAjHS,QAiHiBlL,EAAMgM,aAlHrB,UAkHyDhM,EAAMgM,YACxF,CAGA,kBAAOhB,GACL,MAAO,iBAAkBvR,SAASqC,iBAAmBmQ,UAAUC,eAAiB,CAClF,ECrHF,MAAM7O,OAAO,WACPqJ,WAAW,cACXE,YAAa,IAAGF,aAChBkD,eAAe,YAEfuC,iBAAiB,YACjBC,kBAAkB,aAClBC,uBAAyB,IAEzBC,WAAa,OACbC,WAAa,OACbC,eAAiB,OACjBC,gBAAkB,QAElBC,YAAe,QAAO9F,cACtB+F,WAAc,OAAM/F,cACpBgG,gBAAiB,UAAShG,cAC1BiG,mBAAoB,aAAYjG,cAChCkG,mBAAoB,aAAYlG,cAChCmG,iBAAoB,YAAWnG,cAC/BoG,sBAAuB,OAAMpG,uBAC7BmD,uBAAwB,QAAOnD,uBAE/BqG,oBAAsB,WACtBpD,oBAAoB,SACpBqD,iBAAmB,QACnBC,eAAiB,oBACjBC,iBAAmB,sBACnBC,gBAAkB,qBAClBC,gBAAkB,qBAElBC,gBAAkB,UAClBC,cAAgB,iBAChBC,qBAAuBF,wBACvBG,kBAAoB,qBACpBC,oBAAsB,uBACtBC,oBAAsB,sCACtBC,mBAAqB,4BAErBC,iBAAmB,CACvBC,UA5BsB,QA6BtBC,WA9BqB,QAiCjB7I,UAAU,CACd8I,SAAU,IACVC,UAAU,EACVC,MAAO,QACPC,MAAM,EACNC,OAAO,EACPC,MAAM,GAGFlJ,cAAc,CAClB6I,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,KAAM,mBACNC,MAAO,UACPC,KAAM,WAOR,MAAMC,iBAAiBjI,cACrBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAK6N,UAAY,KACjB7N,KAAK8N,eAAiB,KACtB9N,KAAK+N,YAAa,EAClB/N,KAAKgO,aAAe,KACpBhO,KAAKiO,aAAe,KAEpBjO,KAAKkO,mBAAqBtH,eAAeG,QAAQiG,oBAAqBhN,KAAK6F,UAC3E7F,KAAKmO,qBAtDmB,aAwDpBnO,KAAK8F,QAAQ2H,MACfzN,KAAKoO,OAET,CAGA,kBAAW5J,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA8K,OACExH,KAAKqO,OA1FU,OA2FjB,CAEAC,mBAIOxV,SAASyV,QAAUrU,UAAU8F,KAAK6F,WACrC7F,KAAKwH,MAET,CAEAH,OACErH,KAAKqO,OAtGU,OAuGjB,CAEAb,QACMxN,KAAK+N,YACPtU,qBAAqBuG,KAAK6F,UAG5B7F,KAAKwO,gBACP,CAEAJ,QACEpO,KAAKwO,iBACLxO,KAAKyO,kBAELzO,KAAK6N,UAAYa,aAAY,IAAM1O,KAAKsO,mBAAmBtO,KAAK8F,QAAQwH,SAC1E,CAEAqB,oBACO3O,KAAK8F,QAAQ2H,OAIdzN,KAAK+N,WACPtO,aAAamC,IAAI5B,KAAK6F,SAAUmG,YAAY,IAAMhM,KAAKoO,UAIzDpO,KAAKoO,QACP,CAEAQ,GAAGzQ,GACD,MAAM0Q,EAAQ7O,KAAK8O,YACnB,GAAI3Q,EAAQ0Q,EAAM7U,OAAS,GAAKmE,EAAQ,EACtC,OAGF,GAAI6B,KAAK+N,WAEP,YADAtO,aAAamC,IAAI5B,KAAK6F,SAAUmG,YAAY,IAAMhM,KAAK4O,GAAGzQ,KAI5D,MAAM4Q,EAAc/O,KAAKgP,cAAchP,KAAKiP,cAC5C,GAAIF,IAAgB5Q,EAClB,OAGF,MAAM+Q,EAAQ/Q,EAAQ4Q,EAtJP,OACA,OAuJf/O,KAAKqO,OAAOa,EAAOL,EAAM1Q,GAC3B,CAEA6H,UACMhG,KAAKiO,cACPjO,KAAKiO,aAAajI,UAGpBJ,MAAMI,SACR,CAGAlB,kBAAkBF,GAEhB,OADAA,EAAOuK,gBAAkBvK,EAAO0I,SACzB1I,CACT,CAEAuJ,qBACMnO,KAAK8F,QAAQyH,UACf9N,aAAakC,GAAG3B,KAAK6F,SAAUoG,iBAAe5M,GAASW,KAAKoP,SAAS/P,KAG5C,UAAvBW,KAAK8F,QAAQ0H,QACf/N,aAAakC,GAAG3B,KAAK6F,SAAUqG,oBAAkB,IAAMlM,KAAKwN,UAC5D/N,aAAakC,GAAG3B,KAAK6F,SAAUsG,oBAAkB,IAAMnM,KAAK2O,uBAG1D3O,KAAK8F,QAAQ4H,OAAStD,MAAMC,eAC9BrK,KAAKqP,yBAET,CAEAA,0BACE,IAAK,MAAMC,KAAO1I,eAAerG,KAAKwM,kBAAmB/M,KAAK6F,UAC5DpG,aAAakC,GAAG2N,EAAKlD,kBAAkB/M,GAASA,EAAMwD,mBAGxD,MAqBM0M,EAAc,CAClBrF,aAAcA,IAAMlK,KAAKqO,OAAOrO,KAAKwP,kBAjNpB,SAkNjBrF,cAAeA,IAAMnK,KAAKqO,OAAOrO,KAAKwP,kBAjNpB,UAkNlBvF,YAxBkBwF,KACS,UAAvBzP,KAAK8F,QAAQ0H,QAYjBxN,KAAKwN,QACDxN,KAAKgO,cACP0B,aAAa1P,KAAKgO,cAGpBhO,KAAKgO,aAAepQ,YAAW,IAAMoC,KAAK2O,qBAjNjB,IAiN+D3O,KAAK8F,QAAQwH,UAAS,GAShHtN,KAAKiO,aAAe,IAAI7D,MAAMpK,KAAK6F,SAAU0J,EAC/C,CAEAH,SAAS/P,GACP,GAAI,kBAAkBkG,KAAKlG,EAAM3B,OAAO4K,SACtC,OAGF,MAAM6C,EAAYgC,iBAAiB9N,EAAM3I,KACrCyU,IACF9L,EAAMwD,iBACN7C,KAAKqO,OAAOrO,KAAKwP,kBAAkBrE,IAEvC,CAEA6D,cAAcvY,GACZ,OAAOuJ,KAAK8O,YAAY1Q,QAAQ3H,EAClC,CAEAkZ,2BAA2BxR,GACzB,IAAK6B,KAAKkO,mBACR,OAGF,MAAM0B,EAAkBhJ,eAAeG,QA1NnB,UA0N4C/G,KAAKkO,oBAErE0B,EAAgB/U,UAAUxD,OAnOJ,UAoOtBuY,EAAgB9L,gBAAgB,gBAEhC,MAAM+L,EAAqBjJ,eAAeG,QAAS,sBAAqB5I,MAAW6B,KAAKkO,oBAEpF2B,IACFA,EAAmBhV,UAAUuQ,IAzOT,UA0OpByE,EAAmBjM,aAAa,eAAgB,QAEpD,CAEA6K,kBACE,MAAMhY,EAAUuJ,KAAK8N,gBAAkB9N,KAAKiP,aAE5C,IAAKxY,EACH,OAGF,MAAMqZ,EAAkBzW,OAAO0W,SAAStZ,EAAQwE,aAAa,oBAAqB,IAElF+E,KAAK8F,QAAQwH,SAAWwC,GAAmB9P,KAAK8F,QAAQqJ,eAC1D,CAEAd,OAAOa,EAAOzY,EAAU,MACtB,GAAIuJ,KAAK+N,WACP,OAGF,MAAMhQ,EAAgBiC,KAAKiP,aACrBe,EA/QS,SA+QAd,EACTe,EAAcxZ,GAAWoH,qBAAqBmC,KAAK8O,YAAa/Q,EAAeiS,EAAQhQ,KAAK8F,QAAQ6H,MAE1G,GAAIsC,IAAgBlS,EAClB,OAGF,MAAMmS,EAAmBlQ,KAAKgP,cAAciB,GAEtCE,EAAe3J,GACZ/G,aAAa0C,QAAQnC,KAAK6F,SAAUW,EAAW,CACpDxF,cAAeiP,EACf9E,UAAWnL,KAAKoQ,kBAAkBlB,GAClC/X,KAAM6I,KAAKgP,cAAcjR,GACzB6Q,GAAIsB,IAMR,GAFmBC,EAAapE,aAEjBxJ,iBACb,OAGF,IAAKxE,IAAkBkS,EAGrB,OAGF,MAAMI,EAAYjP,QAAQpB,KAAK6N,WAC/B7N,KAAKwN,QAELxN,KAAK+N,YAAa,EAElB/N,KAAK2P,2BAA2BO,GAChClQ,KAAK8N,eAAiBmC,EAEtB,MAAMK,EAAuBN,EAASvD,iBAAmBD,eACnD+D,EAAiBP,EAAStD,gBAAkBC,gBAElDsD,EAAYpV,UAAUuQ,IAAImF,GAE1B9U,OAAOwU,GAEPlS,EAAclD,UAAUuQ,IAAIkF,GAC5BL,EAAYpV,UAAUuQ,IAAIkF,GAa1BtQ,KAAKoG,gBAXoBoK,KACvBP,EAAYpV,UAAUxD,OAAOiZ,EAAsBC,GACnDN,EAAYpV,UAAUuQ,IAlTF,UAoTpBrN,EAAclD,UAAUxD,OApTJ,SAoT8BkZ,EAAgBD,GAElEtQ,KAAK+N,YAAa,EAElBoC,EAAanE,WAAW,GAGYjO,EAAeiC,KAAKyQ,eAEtDJ,GACFrQ,KAAKoO,OAET,CAEAqC,cACE,OAAOzQ,KAAK6F,SAAShL,UAAUC,SAlUV,QAmUvB,CAEAmU,aACE,OAAOrI,eAAeG,QAAQ+F,qBAAsB9M,KAAK6F,SAC3D,CAEAiJ,YACE,OAAOlI,eAAerG,KAAKsM,cAAe7M,KAAK6F,SACjD,CAEA2I,iBACMxO,KAAK6N,YACP6C,cAAc1Q,KAAK6N,WACnB7N,KAAK6N,UAAY,KAErB,CAEA2B,kBAAkBrE,GAChB,OAAI/O,QAnWe,SAoWV+O,EArWM,OADA,OAEI,SAuWZA,EAzWQ,OACA,MAyWjB,CAEAiF,kBAAkBlB,GAChB,OAAI9S,QA5WW,SA6WN8S,EA5WU,OACC,QAFL,SAgXRA,EA9Wa,QADD,MAgXrB,CAGA,sBAAOrS,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAO6E,SAASrH,oBAAoBvG,KAAM4E,GAEhD,GAAsB,iBAAXA,GAKX,GAAsB,iBAAXA,EAAqB,CAC9B,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IACP,OAVEmE,EAAK6F,GAAGhK,EAWZ,GACF,EAOFnF,aAAakC,GAAG7I,SAAUsQ,uBAAsB6D,qBAAqB,SAAU5N,GAC7E,MAAM3B,EAASkJ,eAAeoB,uBAAuBhI,MAErD,IAAKtC,IAAWA,EAAO7C,UAAUC,SAlYP,YAmYxB,OAGFuE,EAAMwD,iBAEN,MAAM8N,EAAW/C,SAASrH,oBAAoB7I,GACxCkT,EAAa5Q,KAAK/E,aAAa,oBAErC,OAAI2V,GACFD,EAAS/B,GAAGgC,QACZD,EAAShC,qBAIyC,SAAhDjL,YAAYY,iBAAiBtE,KAAM,UACrC2Q,EAASnJ,YACTmJ,EAAShC,sBAIXgC,EAAStJ,YACTsJ,EAAShC,oBACX,IAEAlP,aAAakC,GAAG/J,OAAQyU,uBAAqB,KAC3C,MAAMwE,EAAYjK,eAAerG,KAAK2M,oBAEtC,IAAK,MAAMyD,KAAYE,EACrBjD,SAASrH,oBAAoBoK,EAC/B,IAOFrU,mBAAmBsR,UCncnB,MAAMlR,OAAO,WACPqJ,WAAW,cACXE,YAAa,IAAGF,aAChBkD,eAAe,YAEf6H,aAAc,OAAM7K,cACpB8K,cAAe,QAAO9K,cACtB+K,aAAc,OAAM/K,cACpBgL,eAAgB,SAAQhL,cACxBmD,uBAAwB,QAAOnD,uBAE/ByC,kBAAkB,OAClBwI,oBAAsB,WACtBC,sBAAwB,aACxBC,qBAAuB,YACvBC,2BAA8B,6BAC9BC,sBAAwB,sBAExBC,MAAQ,QACRC,OAAS,SAETC,iBAAmB,uCACnBtI,uBAAuB,8BAEvB3E,UAAU,CACdkN,OAAQ,KACRpI,QAAQ,GAGJ7E,cAAc,CAClBiN,OAAQ,iBACRpI,OAAQ,WAOV,MAAMqI,iBAAiBhM,cACrBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAK4R,kBAAmB,EACxB5R,KAAK6R,cAAgB,GAErB,MAAMC,EAAalL,eAAerG,KAAK4I,wBAEvC,IAAK,MAAM4I,KAAQD,EAAY,CAC7B,MAAMna,EAAWiP,eAAemB,uBAAuBgK,GACjDC,EAAgBpL,eAAerG,KAAK5I,GACvCwM,QAAO8N,GAAgBA,IAAiBjS,KAAK6F,WAE/B,OAAblO,GAAqBqa,EAAchY,QACrCgG,KAAK6R,cAAc1V,KAAK4V,EAE5B,CAEA/R,KAAKkS,sBAEAlS,KAAK8F,QAAQ4L,QAChB1R,KAAKmS,0BAA0BnS,KAAK6R,cAAe7R,KAAKoS,YAGtDpS,KAAK8F,QAAQwD,QACftJ,KAAKsJ,QAET,CAGA,kBAAW9E,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4M,SACMtJ,KAAKoS,WACPpS,KAAKqS,OAELrS,KAAKsS,MAET,CAEAA,OACE,GAAItS,KAAK4R,kBAAoB5R,KAAKoS,WAChC,OAGF,IAAIG,EAAiB,GASrB,GANIvS,KAAK8F,QAAQ4L,SACfa,EAAiBvS,KAAKwS,uBAAuBf,kBAC1CtN,QAAO1N,GAAWA,IAAYuJ,KAAK6F,WACnC+B,KAAInR,GAAWkb,SAASpL,oBAAoB9P,EAAS,CAAE6S,QAAQ,OAGhEiJ,EAAevY,QAAUuY,EAAe,GAAGX,iBAC7C,OAIF,GADmBnS,aAAa0C,QAAQnC,KAAK6F,SAAUiL,cACxCvO,iBACb,OAGF,IAAK,MAAMkQ,KAAkBF,EAC3BE,EAAeJ,OAGjB,MAAMK,EAAY1S,KAAK2S,gBAEvB3S,KAAK6F,SAAShL,UAAUxD,OA3GA,YA4GxB2I,KAAK6F,SAAShL,UAAUuQ,IA3GE,cA6G1BpL,KAAK6F,SAAS+M,MAAMF,GAAa,EAEjC1S,KAAKmS,0BAA0BnS,KAAK6R,eAAe,GACnD7R,KAAK4R,kBAAmB,EAExB,MAYMiB,EAAc,SADSH,EAAU,GAAGjN,cAAgBiN,EAAUzQ,MAAM,KAG1EjC,KAAKoG,gBAdY0M,KACf9S,KAAK4R,kBAAmB,EAExB5R,KAAK6F,SAAShL,UAAUxD,OArHA,cAsHxB2I,KAAK6F,SAAShL,UAAUuQ,IAvHF,WADJ,QA0HlBpL,KAAK6F,SAAS+M,MAAMF,GAAa,GAEjCjT,aAAa0C,QAAQnC,KAAK6F,SAAUkL,cAAY,GAMpB/Q,KAAK6F,UAAU,GAC7C7F,KAAK6F,SAAS+M,MAAMF,GAAc,GAAE1S,KAAK6F,SAASgN,MACpD,CAEAR,OACE,GAAIrS,KAAK4R,mBAAqB5R,KAAKoS,WACjC,OAIF,GADmB3S,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cACxCzO,iBACb,OAGF,MAAMmQ,EAAY1S,KAAK2S,gBAEvB3S,KAAK6F,SAAS+M,MAAMF,GAAc,GAAE1S,KAAK6F,SAASkN,wBAAwBL,OAE1EjX,OAAOuE,KAAK6F,UAEZ7F,KAAK6F,SAAShL,UAAUuQ,IApJE,cAqJ1BpL,KAAK6F,SAAShL,UAAUxD,OAtJA,WADJ,QAyJpB,IAAK,MAAM8K,KAAWnC,KAAK6R,cAAe,CACxC,MAAMpb,EAAUmQ,eAAeoB,uBAAuB7F,GAElD1L,IAAYuJ,KAAKoS,SAAS3b,IAC5BuJ,KAAKmS,0BAA0B,CAAChQ,IAAU,EAE9C,CAEAnC,KAAK4R,kBAAmB,EASxB5R,KAAK6F,SAAS+M,MAAMF,GAAa,GAEjC1S,KAAKoG,gBATY0M,KACf9S,KAAK4R,kBAAmB,EACxB5R,KAAK6F,SAAShL,UAAUxD,OAnKA,cAoKxB2I,KAAK6F,SAAShL,UAAUuQ,IArKF,YAsKtB3L,aAAa0C,QAAQnC,KAAK6F,SAAUoL,eAAa,GAKrBjR,KAAK6F,UAAU,EAC/C,CAEAuM,SAAS3b,EAAUuJ,KAAK6F,UACtB,OAAOpP,EAAQoE,UAAUC,SAhLL,OAiLtB,CAGAgK,kBAAkBF,GAGhB,OAFAA,EAAO0E,OAASlI,QAAQwD,EAAO0E,QAC/B1E,EAAO8M,OAAS3X,WAAW6K,EAAO8M,QAC3B9M,CACT,CAEA+N,gBACE,OAAO3S,KAAK6F,SAAShL,UAAUC,SAtLL,uBAsLuCyW,MAAQC,MAC3E,CAEAU,sBACE,IAAKlS,KAAK8F,QAAQ4L,OAChB,OAGF,MAAM1K,EAAWhH,KAAKwS,uBAAuBrJ,wBAE7C,IAAK,MAAM1S,KAAWuQ,EAAU,CAC9B,MAAMgM,EAAWpM,eAAeoB,uBAAuBvR,GAEnDuc,GACFhT,KAAKmS,0BAA0B,CAAC1b,GAAUuJ,KAAKoS,SAASY,GAE5D,CACF,CAEAR,uBAAuB7a,GACrB,MAAMqP,EAAWJ,eAAerG,KAAK8Q,2BAA4BrR,KAAK8F,QAAQ4L,QAE9E,OAAO9K,eAAerG,KAAK5I,EAAUqI,KAAK8F,QAAQ4L,QAAQvN,QAAO1N,IAAYuQ,EAAStF,SAASjL,IACjG,CAEA0b,0BAA0Bc,EAAcC,GACtC,GAAKD,EAAajZ,OAIlB,IAAK,MAAMvD,KAAWwc,EACpBxc,EAAQoE,UAAUyO,OAvNK,aAuNyB4J,GAChDzc,EAAQmN,aAAa,gBAAiBsP,EAE1C,CAGA,sBAAOrW,CAAgB+H,GACrB,MAAMkB,EAAU,GAKhB,MAJsB,iBAAXlB,GAAuB,YAAYW,KAAKX,KACjDkB,EAAQwD,QAAS,GAGZtJ,KAAK8I,MAAK,WACf,MAAMC,EAAO4I,SAASpL,oBAAoBvG,KAAM8F,GAEhD,GAAsB,iBAAXlB,EAAqB,CAC9B,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IACP,CACF,GACF,EAOFnF,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,IAEjD,MAAzBA,EAAM3B,OAAO4K,SAAoBjJ,EAAME,gBAAmD,MAAjCF,EAAME,eAAe+I,UAChFjJ,EAAMwD,iBAGR,IAAK,MAAMpM,KAAWmQ,eAAeqB,gCAAgCjI,MACnE2R,SAASpL,oBAAoB9P,EAAS,CAAE6S,QAAQ,IAASA,QAE7D,IAMAhN,mBAAmBqV,UC1QnB,MAAMjV,OAAO,WACPqJ,WAAW,cACXE,YAAa,IAAGF,aAChBkD,eAAe,YAEfkK,aAAa,SACbC,UAAU,MACVC,eAAe,UACfC,iBAAiB,YACjBC,mBAAqB,EAErBvC,aAAc,OAAM/K,cACpBgL,eAAgB,SAAQhL,cACxB6K,aAAc,OAAM7K,cACpB8K,cAAe,QAAO9K,cACtBmD,uBAAwB,QAAOnD,uBAC/BuN,uBAA0B,UAASvN,uBACnCwN,qBAAwB,QAAOxN,uBAE/ByC,kBAAkB,OAClBgL,kBAAoB,SACpBC,mBAAqB,UACrBC,qBAAuB,YACvBC,yBAA2B,gBAC3BC,2BAA6B,kBAE7B3K,uBAAuB,4DACvB4K,2BAA8B,GAAE5K,8BAChC6K,cAAgB,iBAChBC,gBAAkB,UAClBC,oBAAsB,cACtBC,uBAAyB,8DAEzBC,cAAgBhY,QAAU,UAAY,YACtCiY,iBAAmBjY,QAAU,YAAc,UAC3CkY,iBAAmBlY,QAAU,aAAe,eAC5CmY,oBAAsBnY,QAAU,eAAiB,aACjDoY,gBAAkBpY,QAAU,aAAe,cAC3CqY,eAAiBrY,QAAU,cAAgB,aAC3CsY,oBAAsB,MACtBC,uBAAyB,SAEzBnQ,UAAU,CACdoQ,WAAW,EACXC,SAAU,kBACVC,QAAS,UACTC,OAAQ,CAAC,EAAG,GACZC,aAAc,KACdC,UAAW,UAGPxQ,cAAc,CAClBmQ,UAAW,mBACXC,SAAU,mBACVC,QAAS,SACTC,OAAQ,0BACRC,aAAc,yBACdC,UAAW,2BAOb,MAAMC,iBAAiBvP,cACrBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAKmV,QAAU,KACfnV,KAAKoV,QAAUpV,KAAK6F,SAASpL,WAE7BuF,KAAKqV,MAAQzO,eAAeY,KAAKxH,KAAK6F,SAAUmO,eAAe,IAC7DpN,eAAeS,KAAKrH,KAAK6F,SAAUmO,eAAe,IAClDpN,eAAeG,QAAQiN,cAAehU,KAAKoV,SAC7CpV,KAAKsV,UAAYtV,KAAKuV,eACxB,CAGA,kBAAW/Q,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4M,SACE,OAAOtJ,KAAKoS,WAAapS,KAAKqS,OAASrS,KAAKsS,MAC9C,CAEAA,OACE,GAAI5X,WAAWsF,KAAK6F,WAAa7F,KAAKoS,WACpC,OAGF,MAAMpR,EAAgB,CACpBA,cAAehB,KAAK6F,UAKtB,IAFkBpG,aAAa0C,QAAQnC,KAAK6F,SAAUiL,aAAY9P,GAEpDuB,iBAAd,CAUA,GANAvC,KAAKwV,gBAMD,iBAAkB1c,SAASqC,kBAAoB6E,KAAKoV,QAAQ7a,QAtFxC,eAuFtB,IAAK,MAAM9D,IAAW,GAAGoQ,UAAU/N,SAAS+C,KAAKmL,UAC/CvH,aAAakC,GAAGlL,EAAS,YAAa+E,MAI1CwE,KAAK6F,SAAS4P,QACdzV,KAAK6F,SAASjC,aAAa,iBAAiB,GAE5C5D,KAAKqV,MAAMxa,UAAUuQ,IA1GD,QA2GpBpL,KAAK6F,SAAShL,UAAUuQ,IA3GJ,QA4GpB3L,aAAa0C,QAAQnC,KAAK6F,SAAUkL,cAAa/P,EAnBjD,CAoBF,CAEAqR,OACE,GAAI3X,WAAWsF,KAAK6F,YAAc7F,KAAKoS,WACrC,OAGF,MAAMpR,EAAgB,CACpBA,cAAehB,KAAK6F,UAGtB7F,KAAK0V,cAAc1U,EACrB,CAEAgF,UACMhG,KAAKmV,SACPnV,KAAKmV,QAAQQ,UAGf/P,MAAMI,SACR,CAEA4P,SACE5V,KAAKsV,UAAYtV,KAAKuV,gBAClBvV,KAAKmV,SACPnV,KAAKmV,QAAQS,QAEjB,CAGAF,cAAc1U,GAEZ,IADkBvB,aAAa0C,QAAQnC,KAAK6F,SAAUmL,aAAYhQ,GACpDuB,iBAAd,CAMA,GAAI,iBAAkBzJ,SAASqC,gBAC7B,IAAK,MAAM1E,IAAW,GAAGoQ,UAAU/N,SAAS+C,KAAKmL,UAC/CvH,aAAaC,IAAIjJ,EAAS,YAAa+E,MAIvCwE,KAAKmV,SACPnV,KAAKmV,QAAQQ,UAGf3V,KAAKqV,MAAMxa,UAAUxD,OA7JD,QA8JpB2I,KAAK6F,SAAShL,UAAUxD,OA9JJ,QA+JpB2I,KAAK6F,SAASjC,aAAa,gBAAiB,SAC5CF,YAAYG,oBAAoB7D,KAAKqV,MAAO,UAC5C5V,aAAa0C,QAAQnC,KAAK6F,SAAUoL,eAAcjQ,EAlBlD,CAmBF,CAEA2D,WAAWC,GAGT,GAAgC,iBAFhCA,EAASgB,MAAMjB,WAAWC,IAERqQ,YAA2Brb,UAAUgL,EAAOqQ,YACV,mBAA3CrQ,EAAOqQ,UAAUlC,sBAGxB,MAAM,IAAIvN,UAAW,GAAE9I,OAAK+I,+GAG9B,OAAOb,CACT,CAEA4Q,gBACE,QAAsB,IAAXK,OACT,MAAM,IAAIrQ,UAAU,gEAGtB,IAAIsQ,EAAmB9V,KAAK6F,SAEG,WAA3B7F,KAAK8F,QAAQmP,UACfa,EAAmB9V,KAAKoV,QACfxb,UAAUoG,KAAK8F,QAAQmP,WAChCa,EAAmB/b,WAAWiG,KAAK8F,QAAQmP,WACA,iBAA3BjV,KAAK8F,QAAQmP,YAC7Ba,EAAmB9V,KAAK8F,QAAQmP,WAGlC,MAAMD,EAAehV,KAAK+V,mBAC1B/V,KAAKmV,QAAUU,OAAOG,aAAaF,EAAkB9V,KAAKqV,MAAOL,EACnE,CAEA5C,WACE,OAAOpS,KAAKqV,MAAMxa,UAAUC,SArMR,OAsMtB,CAEAmb,gBACE,MAAMC,EAAiBlW,KAAKoV,QAE5B,GAAIc,EAAerb,UAAUC,SAzMN,WA0MrB,OAAO0Z,gBAGT,GAAI0B,EAAerb,UAAUC,SA5MJ,aA6MvB,OAAO2Z,eAGT,GAAIyB,EAAerb,UAAUC,SA/MA,iBAgN3B,MAhMsB,MAmMxB,GAAIob,EAAerb,UAAUC,SAlNE,mBAmN7B,MAnMyB,SAuM3B,MAAMqb,EAAkF,QAA1Ehd,iBAAiB6G,KAAKqV,OAAOhb,iBAAiB,iBAAiBsM,OAE7E,OAAIuP,EAAerb,UAAUC,SA7NP,UA8Nbqb,EAAQ9B,iBAAmBD,cAG7B+B,EAAQ5B,oBAAsBD,gBACvC,CAEAiB,gBACE,OAAkD,OAA3CvV,KAAK6F,SAAStL,QA5ND,UA6NtB,CAEA6b,aACE,MAAMrB,OAAEA,GAAW/U,KAAK8F,QAExB,MAAsB,iBAAXiP,EACFA,EAAOvb,MAAM,KAAKoO,KAAI5E,GAAS3J,OAAO0W,SAAS/M,EAAO,MAGzC,mBAAX+R,EACFsB,GAActB,EAAOsB,EAAYrW,KAAK6F,UAGxCkP,CACT,CAEAgB,mBACE,MAAMO,EAAwB,CAC5BC,UAAWvW,KAAKiW,gBAChBO,UAAW,CAAC,CACV/Z,KAAM,kBACNga,QAAS,CACP5B,SAAU7U,KAAK8F,QAAQ+O,WAG3B,CACEpY,KAAM,SACNga,QAAS,CACP1B,OAAQ/U,KAAKoW,iBAcnB,OARIpW,KAAKsV,WAAsC,WAAzBtV,KAAK8F,QAAQgP,WACjCpR,YAAYC,iBAAiB3D,KAAKqV,MAAO,SAAU,UACnDiB,EAAsBE,UAAY,CAAC,CACjC/Z,KAAM,cACNia,SAAS,KAIN,IACFJ,KACAtZ,QAAQgD,KAAK8F,QAAQkP,aAAc,CAACsB,IAE3C,CAEAK,iBAAgBjgB,IAAEA,EAAGgH,OAAEA,IACrB,MAAMmR,EAAQjI,eAAerG,KAAK4T,uBAAwBnU,KAAKqV,OAAOlR,QAAO1N,GAAWyD,UAAUzD,KAE7FoY,EAAM7U,QAMX6D,qBAAqBgR,EAAOnR,EAAQhH,IAAQ4c,kBAAiBzE,EAAMnN,SAAShE,IAAS+X,OACvF,CAGA,sBAAO5Y,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOmM,SAAS3O,oBAAoBvG,KAAM4E,GAEhD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,CAEA,iBAAOgS,CAAWvX,GAChB,GA/TuB,IA+TnBA,EAAMkK,QAAiD,UAAflK,EAAMM,MAlUtC,QAkU0DN,EAAM3I,IAC1E,OAGF,MAAMmgB,EAAcjQ,eAAerG,KAAKwT,4BAExC,IAAK,MAAMzK,KAAUuN,EAAa,CAChC,MAAMC,EAAU5B,SAAS5O,YAAYgD,GACrC,IAAKwN,IAAyC,IAA9BA,EAAQhR,QAAQ8O,UAC9B,SAGF,MAAMmC,EAAe1X,EAAM0X,eACrBC,EAAeD,EAAarV,SAASoV,EAAQzB,OACnD,GACE0B,EAAarV,SAASoV,EAAQjR,WACC,WAA9BiR,EAAQhR,QAAQ8O,YAA2BoC,GACb,YAA9BF,EAAQhR,QAAQ8O,WAA2BoC,EAE5C,SAIF,GAAIF,EAAQzB,MAAMva,SAASuE,EAAM3B,UAA4B,UAAf2B,EAAMM,MAzV1C,QAyV8DN,EAAM3I,KAAoB,qCAAqC6O,KAAKlG,EAAM3B,OAAO4K,UACvJ,SAGF,MAAMtH,EAAgB,CAAEA,cAAe8V,EAAQjR,UAE5B,UAAfxG,EAAMM,OACRqB,EAAcqH,WAAahJ,GAG7ByX,EAAQpB,cAAc1U,EACxB,CACF,CAEA,4BAAOiW,CAAsB5X,GAI3B,MAAM6X,EAAU,kBAAkB3R,KAAKlG,EAAM3B,OAAO4K,SAC9C6O,EA7WS,WA6WO9X,EAAM3I,IACtB0gB,EAAkB,CAAC/D,eAAcC,kBAAgB5R,SAASrC,EAAM3I,KAEtE,IAAK0gB,IAAoBD,EACvB,OAGF,GAAID,IAAYC,EACd,OAGF9X,EAAMwD,iBAGN,MAAMwU,EAAkBrX,KAAKkH,QAAQiC,wBACnCnJ,KACC4G,eAAeS,KAAKrH,KAAMmJ,wBAAsB,IAC/CvC,eAAeY,KAAKxH,KAAMmJ,wBAAsB,IAChDvC,eAAeG,QAAQoC,uBAAsB9J,EAAME,eAAe9E,YAEhE9D,EAAWue,SAAS3O,oBAAoB8Q,GAE9C,GAAID,EAIF,OAHA/X,EAAMiY,kBACN3gB,EAAS2b,YACT3b,EAASggB,gBAAgBtX,GAIvB1I,EAASyb,aACX/S,EAAMiY,kBACN3gB,EAAS0b,OACTgF,EAAgB5B,QAEpB,EAOFhW,aAAakC,GAAG7I,SAAU0a,uBAAwBrK,uBAAsB+L,SAAS+B,uBACjFxX,aAAakC,GAAG7I,SAAU0a,uBAAwBQ,cAAekB,SAAS+B,uBAC1ExX,aAAakC,GAAG7I,SAAUsQ,uBAAsB8L,SAAS0B,YACzDnX,aAAakC,GAAG7I,SAAU2a,qBAAsByB,SAAS0B,YACzDnX,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,GAC9EA,EAAMwD,iBACNqS,SAAS3O,oBAAoBvG,MAAMsJ,QACrC,IAMAhN,mBAAmB4Y,UCrbnB,MAAMxY,OAAO,WACP+L,kBAAkB,OAClBC,kBAAkB,OAClB6O,gBAAmB,gBAAe7a,SAElC8H,UAAU,CACdgT,UAAW,iBACXC,cAAe,KACfpR,YAAY,EACZnM,WAAW,EACXwd,YAAa,QAGTjT,cAAc,CAClB+S,UAAW,SACXC,cAAe,kBACfpR,WAAY,UACZnM,UAAW,UACXwd,YAAa,oBAOf,MAAMC,iBAAiBpT,OACrBU,YAAYL,GACVgB,QACA5F,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAC/B5E,KAAK4X,aAAc,EACnB5X,KAAK6F,SAAW,IAClB,CAGA,kBAAWrB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4V,KAAKtW,GACH,IAAKgE,KAAK8F,QAAQ5L,UAEhB,YADA8C,QAAQhB,GAIVgE,KAAK6X,UAEL,MAAMphB,EAAUuJ,KAAK8X,cACjB9X,KAAK8F,QAAQO,YACf5K,OAAOhF,GAGTA,EAAQoE,UAAUuQ,IA1DE,QA4DpBpL,KAAK+X,mBAAkB,KACrB/a,QAAQhB,EAAS,GAErB,CAEAqW,KAAKrW,GACEgE,KAAK8F,QAAQ5L,WAKlB8F,KAAK8X,cAAcjd,UAAUxD,OAvET,QAyEpB2I,KAAK+X,mBAAkB,KACrB/X,KAAKgG,UACLhJ,QAAQhB,EAAS,KARjBgB,QAAQhB,EAUZ,CAEAgK,UACOhG,KAAK4X,cAIVnY,aAAaC,IAAIM,KAAK6F,SAAU0R,iBAEhCvX,KAAK6F,SAASxO,SACd2I,KAAK4X,aAAc,EACrB,CAGAE,cACE,IAAK9X,KAAK6F,SAAU,CAClB,MAAMmS,EAAWlf,SAASmf,cAAc,OACxCD,EAASR,UAAYxX,KAAK8F,QAAQ0R,UAC9BxX,KAAK8F,QAAQO,YACf2R,EAASnd,UAAUuQ,IAjGH,QAoGlBpL,KAAK6F,SAAWmS,CAClB,CAEA,OAAOhY,KAAK6F,QACd,CAEAf,kBAAkBF,GAGhB,OADAA,EAAO8S,YAAc3d,WAAW6K,EAAO8S,aAChC9S,CACT,CAEAiT,UACE,GAAI7X,KAAK4X,YACP,OAGF,MAAMnhB,EAAUuJ,KAAK8X,cACrB9X,KAAK8F,QAAQ4R,YAAYQ,OAAOzhB,GAEhCgJ,aAAakC,GAAGlL,EAAS8gB,iBAAiB,KACxCva,QAAQgD,KAAK8F,QAAQ2R,cAAc,IAGrCzX,KAAK4X,aAAc,CACrB,CAEAG,kBAAkB/b,GAChBoB,uBAAuBpB,EAAUgE,KAAK8X,cAAe9X,KAAK8F,QAAQO,WACpE,EClIF,MAAM3J,OAAO,YACPqJ,WAAW,eACXE,YAAa,IAAGF,aAChBoS,gBAAiB,UAASlS,cAC1BmS,kBAAqB,cAAanS,cAElCmN,QAAU,MACViF,gBAAkB,UAClBC,iBAAmB,WAEnB9T,UAAU,CACd+T,WAAW,EACXC,YAAa,MAGT/T,cAAc,CAClB8T,UAAW,UACXC,YAAa,WAOf,MAAMC,kBAAkBlU,OACtBU,YAAYL,GACVgB,QACA5F,KAAK8F,QAAU9F,KAAK2E,WAAWC,GAC/B5E,KAAK0Y,WAAY,EACjB1Y,KAAK2Y,qBAAuB,IAC9B,CAGA,kBAAWnU,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGAkc,WACM5Y,KAAK0Y,YAIL1Y,KAAK8F,QAAQyS,WACfvY,KAAK8F,QAAQ0S,YAAY/C,QAG3BhW,aAAaC,IAAI5G,SAAUmN,aAC3BxG,aAAakC,GAAG7I,SAAUqf,iBAAe9Y,GAASW,KAAK6Y,eAAexZ,KACtEI,aAAakC,GAAG7I,SAAUsf,mBAAmB/Y,GAASW,KAAK8Y,eAAezZ,KAE1EW,KAAK0Y,WAAY,EACnB,CAEAK,aACO/Y,KAAK0Y,YAIV1Y,KAAK0Y,WAAY,EACjBjZ,aAAaC,IAAI5G,SAAUmN,aAC7B,CAGA4S,eAAexZ,GACb,MAAMmZ,YAAEA,GAAgBxY,KAAK8F,QAE7B,GAAIzG,EAAM3B,SAAW5E,UAAYuG,EAAM3B,SAAW8a,GAAeA,EAAY1d,SAASuE,EAAM3B,QAC1F,OAGF,MAAMsb,EAAWpS,eAAec,kBAAkB8Q,GAE1B,IAApBQ,EAAShf,OACXwe,EAAY/C,QA1EO,aA2EVzV,KAAK2Y,qBACdK,EAASA,EAAShf,OAAS,GAAGyb,QAE9BuD,EAAS,GAAGvD,OAEhB,CAEAqD,eAAezZ,GApFD,QAqFRA,EAAM3I,MAIVsJ,KAAK2Y,qBAAuBtZ,EAAM4Z,SAvFb,WADD,UAyFtB,EChGF,MAAMC,uBAAyB,oDACzBC,wBAA0B,cAC1BC,iBAAmB,gBACnBC,gBAAkB,eAMxB,MAAMC,gBACJrU,cACEjF,KAAK6F,SAAW/M,SAAS+C,IAC3B,CAGA0d,WAEE,MAAMC,EAAgB1gB,SAASqC,gBAAgBse,YAC/C,OAAO9gB,KAAKuS,IAAItT,OAAO8hB,WAAaF,EACtC,CAEAnH,OACE,MAAMsH,EAAQ3Z,KAAKuZ,WACnBvZ,KAAK4Z,mBAEL5Z,KAAK6Z,sBAAsB7Z,KAAK6F,SAvBX,iBAuBuCiU,GAAmBA,EAAkBH,IAEjG3Z,KAAK6Z,sBAAsBX,uBAzBN,iBAyBgDY,GAAmBA,EAAkBH,IAC1G3Z,KAAK6Z,sBA3BuB,cAER,gBAyBiDC,GAAmBA,EAAkBH,GAC5G,CAEAI,QACE/Z,KAAKga,wBAAwBha,KAAK6F,SAAU,YAC5C7F,KAAKga,wBAAwBha,KAAK6F,SA/Bb,iBAgCrB7F,KAAKga,wBAAwBd,uBAhCR,iBAiCrBlZ,KAAKga,wBAlCuB,cAER,eAiCtB,CAEAC,gBACE,OAAOja,KAAKuZ,WAAa,CAC3B,CAGAK,mBACE5Z,KAAKka,sBAAsBla,KAAK6F,SAAU,YAC1C7F,KAAK6F,SAAS+M,MAAMuH,SAAW,QACjC,CAEAN,sBAAsBliB,EAAUyiB,EAAepe,GAC7C,MAAMqe,EAAiBra,KAAKuZ,WAW5BvZ,KAAKsa,2BAA2B3iB,GAVHlB,IAC3B,GAAIA,IAAYuJ,KAAK6F,UAAYjO,OAAO8hB,WAAajjB,EAAQgjB,YAAcY,EACzE,OAGFra,KAAKka,sBAAsBzjB,EAAS2jB,GACpC,MAAMN,EAAkBliB,OAAOuB,iBAAiB1C,GAAS4D,iBAAiB+f,GAC1E3jB,EAAQmc,MAAM2H,YAAYH,EAAgB,GAAEpe,EAAS3C,OAAOC,WAAWwgB,QAAsB,GAIjG,CAEAI,sBAAsBzjB,EAAS2jB,GAC7B,MAAMI,EAAc/jB,EAAQmc,MAAMvY,iBAAiB+f,GAC/CI,GACF9W,YAAYC,iBAAiBlN,EAAS2jB,EAAeI,EAEzD,CAEAR,wBAAwBriB,EAAUyiB,GAahCpa,KAAKsa,2BAA2B3iB,GAZHlB,IAC3B,MAAMuM,EAAQU,YAAYY,iBAAiB7N,EAAS2jB,GAEtC,OAAVpX,GAKJU,YAAYG,oBAAoBpN,EAAS2jB,GACzC3jB,EAAQmc,MAAM2H,YAAYH,EAAepX,IALvCvM,EAAQmc,MAAM6H,eAAeL,EAKgB,GAInD,CAEAE,2BAA2B3iB,EAAU+iB,GACnC,GAAI9gB,UAAUjC,GACZ+iB,EAAS/iB,QAIX,IAAK,MAAMgjB,KAAO/T,eAAerG,KAAK5I,EAAUqI,KAAK6F,UACnD6U,EAASC,EAEb,EC1FF,MAAMje,OAAO,QACPqJ,WAAW,WACXE,YAAa,YACbgD,eAAe,YACfkK,aAAa,SAEbnC,aAAc,gBACd4J,uBAAwB,yBACxB3J,eAAgB,kBAChBH,aAAc,gBACdC,cAAe,iBACf8J,eAAgB,kBAChBC,oBAAuB,yBACvBC,wBAA2B,6BAC3BC,wBAAyB,2BACzB5R,uBAAwB,0BAExB6R,gBAAkB,aAClBxS,kBAAkB,OAClBC,kBAAkB,OAClBwS,kBAAoB,eAEpBC,gBAAgB,cAChBC,gBAAkB,gBAClBC,oBAAsB,cACtBlS,uBAAuB,2BAEvB3E,UAAU,CACdwT,UAAU,EACVvC,OAAO,EACPlI,UAAU,GAGN9I,cAAc,CAClBuT,SAAU,mBACVvC,MAAO,UACPlI,SAAU,WAOZ,MAAM+N,cAAc3V,cAClBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAKub,QAAU3U,eAAeG,QAxBV,gBAwBmC/G,KAAK6F,UAC5D7F,KAAKwb,UAAYxb,KAAKyb,sBACtBzb,KAAK0b,WAAa1b,KAAK2b,uBACvB3b,KAAKoS,UAAW,EAChBpS,KAAK4R,kBAAmB,EACxB5R,KAAK4b,WAAa,IAAItC,gBAEtBtZ,KAAKmO,oBACP,CAGA,kBAAW3J,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4M,OAAOtI,GACL,OAAOhB,KAAKoS,SAAWpS,KAAKqS,OAASrS,KAAKsS,KAAKtR,EACjD,CAEAsR,KAAKtR,GACChB,KAAKoS,UAAYpS,KAAK4R,kBAIRnS,aAAa0C,QAAQnC,KAAK6F,SAAUiL,aAAY,CAChE9P,kBAGYuB,mBAIdvC,KAAKoS,UAAW,EAChBpS,KAAK4R,kBAAmB,EAExB5R,KAAK4b,WAAWvJ,OAEhBvZ,SAAS+C,KAAKhB,UAAUuQ,IA5EJ,cA8EpBpL,KAAK6b,gBAEL7b,KAAKwb,UAAUlJ,MAAK,IAAMtS,KAAK8b,aAAa9a,KAC9C,CAEAqR,OACOrS,KAAKoS,WAAYpS,KAAK4R,mBAITnS,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cAExCzO,mBAIdvC,KAAKoS,UAAW,EAChBpS,KAAK4R,kBAAmB,EACxB5R,KAAK0b,WAAW3C,aAEhB/Y,KAAK6F,SAAShL,UAAUxD,OAhGJ,QAkGpB2I,KAAKoG,gBAAe,IAAMpG,KAAK+b,cAAc/b,KAAK6F,SAAU7F,KAAKyQ,gBACnE,CAEAzK,UACEvG,aAAaC,IAAI9H,OAvHF,aAwHf6H,aAAaC,IAAIM,KAAKub,QAxHP,aA0Hfvb,KAAKwb,UAAUxV,UACfhG,KAAK0b,WAAW3C,aAEhBnT,MAAMI,SACR,CAEAgW,eACEhc,KAAK6b,eACP,CAGAJ,sBACE,OAAO,IAAI9D,SAAS,CAClBzd,UAAWkH,QAAQpB,KAAK8F,QAAQkS,UAChC3R,WAAYrG,KAAKyQ,eAErB,CAEAkL,uBACE,OAAO,IAAIlD,UAAU,CACnBD,YAAaxY,KAAK6F,UAEtB,CAEAiW,aAAa9a,GAENlI,SAAS+C,KAAKf,SAASkF,KAAK6F,WAC/B/M,SAAS+C,KAAKqc,OAAOlY,KAAK6F,UAG5B7F,KAAK6F,SAAS+M,MAAMkC,QAAU,QAC9B9U,KAAK6F,SAAS/B,gBAAgB,eAC9B9D,KAAK6F,SAASjC,aAAa,cAAc,GACzC5D,KAAK6F,SAASjC,aAAa,OAAQ,UACnC5D,KAAK6F,SAASoW,UAAY,EAE1B,MAAMC,EAAYtV,eAAeG,QAxIT,cAwIsC/G,KAAKub,SAC/DW,IACFA,EAAUD,UAAY,GAGxBxgB,OAAOuE,KAAK6F,UAEZ7F,KAAK6F,SAAShL,UAAUuQ,IApJJ,QAiKpBpL,KAAKoG,gBAXsB+V,KACrBnc,KAAK8F,QAAQ2P,OACfzV,KAAK0b,WAAW9C,WAGlB5Y,KAAK4R,kBAAmB,EACxBnS,aAAa0C,QAAQnC,KAAK6F,SAAUkL,cAAa,CAC/C/P,iBACA,GAGoChB,KAAKub,QAASvb,KAAKyQ,cAC7D,CAEAtC,qBACE1O,aAAakC,GAAG3B,KAAK6F,SAAUmV,yBAAuB3b,IApLvC,WAqLTA,EAAM3I,MAINsJ,KAAK8F,QAAQyH,SACfvN,KAAKqS,OAIPrS,KAAKoc,6BAA4B,IAGnC3c,aAAakC,GAAG/J,OAAQijB,gBAAc,KAChC7a,KAAKoS,WAAapS,KAAK4R,kBACzB5R,KAAK6b,eACP,IAGFpc,aAAakC,GAAG3B,KAAK6F,SAAUkV,yBAAyB1b,IAEtDI,aAAamC,IAAI5B,KAAK6F,SAAUiV,qBAAqBuB,IAC/Crc,KAAK6F,WAAaxG,EAAM3B,QAAUsC,KAAK6F,WAAawW,EAAO3e,SAIjC,WAA1BsC,KAAK8F,QAAQkS,SAKbhY,KAAK8F,QAAQkS,UACfhY,KAAKqS,OALLrS,KAAKoc,6BAMP,GACA,GAEN,CAEAL,aACE/b,KAAK6F,SAAS+M,MAAMkC,QAAU,OAC9B9U,KAAK6F,SAASjC,aAAa,eAAe,GAC1C5D,KAAK6F,SAAS/B,gBAAgB,cAC9B9D,KAAK6F,SAAS/B,gBAAgB,QAC9B9D,KAAK4R,kBAAmB,EAExB5R,KAAKwb,UAAUnJ,MAAK,KAClBvZ,SAAS+C,KAAKhB,UAAUxD,OArNN,cAsNlB2I,KAAKsc,oBACLtc,KAAK4b,WAAW7B,QAChBta,aAAa0C,QAAQnC,KAAK6F,SAAUoL,eAAa,GAErD,CAEAR,cACE,OAAOzQ,KAAK6F,SAAShL,UAAUC,SA5NX,OA6NtB,CAEAshB,6BAEE,GADkB3c,aAAa0C,QAAQnC,KAAK6F,SAAU+U,wBACxCrY,iBACZ,OAGF,MAAMga,EAAqBvc,KAAK6F,SAAS2W,aAAe1jB,SAASqC,gBAAgBshB,aAC3EC,EAAmB1c,KAAK6F,SAAS+M,MAAM+J,UAEpB,WAArBD,GAAiC1c,KAAK6F,SAAShL,UAAUC,SAtOvC,kBA0OjByhB,IACHvc,KAAK6F,SAAS+M,MAAM+J,UAAY,UAGlC3c,KAAK6F,SAAShL,UAAUuQ,IA9OF,gBA+OtBpL,KAAKoG,gBAAe,KAClBpG,KAAK6F,SAAShL,UAAUxD,OAhPJ,gBAiPpB2I,KAAKoG,gBAAe,KAClBpG,KAAK6F,SAAS+M,MAAM+J,UAAYD,CAAgB,GAC/C1c,KAAKub,QAAQ,GACfvb,KAAKub,SAERvb,KAAK6F,SAAS4P,QAChB,CAMAoG,gBACE,MAAMU,EAAqBvc,KAAK6F,SAAS2W,aAAe1jB,SAASqC,gBAAgBshB,aAC3EpC,EAAiBra,KAAK4b,WAAWrC,WACjCqD,EAAoBvC,EAAiB,EAE3C,GAAIuC,IAAsBL,EAAoB,CAC5C,MAAMpX,EAAW/I,QAAU,cAAgB,eAC3C4D,KAAK6F,SAAS+M,MAAMzN,GAAa,GAAEkV,KACrC,CAEA,IAAKuC,GAAqBL,EAAoB,CAC5C,MAAMpX,EAAW/I,QAAU,eAAiB,cAC5C4D,KAAK6F,SAAS+M,MAAMzN,GAAa,GAAEkV,KACrC,CACF,CAEAiC,oBACEtc,KAAK6F,SAAS+M,MAAMiK,YAAc,GAClC7c,KAAK6F,SAAS+M,MAAMkK,aAAe,EACrC,CAGA,sBAAOjgB,CAAgB+H,EAAQ5D,GAC7B,OAAOhB,KAAK8I,MAAK,WACf,MAAMC,EAAOuS,MAAM/U,oBAAoBvG,KAAM4E,GAE7C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5D,EANb,CAOF,GACF,EAOFvB,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,GAC9E,MAAM3B,EAASkJ,eAAeoB,uBAAuBhI,MAEjD,CAAC,IAAK,QAAQ0B,SAAS1B,KAAKsI,UAC9BjJ,EAAMwD,iBAGRpD,aAAamC,IAAIlE,EAAQoT,cAAYiM,IAC/BA,EAAUxa,kBAKd9C,aAAamC,IAAIlE,EAAQuT,gBAAc,KACjC/W,UAAU8F,OACZA,KAAKyV,OACP,GACA,IAIJ,MAAMuH,EAAcpW,eAAeG,QA3Tf,eA4ThBiW,GACF1B,MAAMhV,YAAY0W,GAAa3K,OAGpBiJ,MAAM/U,oBAAoB7I,GAElC4L,OAAOtJ,KACd,IAEAkI,qBAAqBoT,OAMrBhf,mBAAmBgf,OC7VnB,MAAM5e,OAAO,YACPqJ,WAAW,eACXE,YAAa,IAAGF,aAChBkD,eAAe,YACfoD,sBAAuB,OAAMpG,uBAC7BkN,WAAa,SAEbzK,kBAAkB,OAClBuU,qBAAqB,UACrBC,kBAAoB,SACpBC,oBAAsB,qBACtBhC,cAAgB,kBAEhBrK,aAAc,OAAM7K,cACpB8K,cAAe,QAAO9K,cACtB+K,aAAc,OAAM/K,cACpB2U,qBAAwB,gBAAe3U,cACvCgL,eAAgB,SAAQhL,cACxB4U,aAAgB,SAAQ5U,cACxBmD,uBAAwB,QAAOnD,uBAC/B+U,sBAAyB,kBAAiB/U,cAE1CkD,uBAAuB,+BAEvB3E,UAAU,CACdwT,UAAU,EACVzK,UAAU,EACV6P,QAAQ,GAGJ3Y,cAAc,CAClBuT,SAAU,mBACVzK,SAAU,UACV6P,OAAQ,WAOV,MAAMC,kBAAkB1X,cACtBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAKoS,UAAW,EAChBpS,KAAKwb,UAAYxb,KAAKyb,sBACtBzb,KAAK0b,WAAa1b,KAAK2b,uBACvB3b,KAAKmO,oBACP,CAGA,kBAAW3J,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4M,OAAOtI,GACL,OAAOhB,KAAKoS,SAAWpS,KAAKqS,OAASrS,KAAKsS,KAAKtR,EACjD,CAEAsR,KAAKtR,GACChB,KAAKoS,UAIS3S,aAAa0C,QAAQnC,KAAK6F,SAAUiL,aAAY,CAAE9P,kBAEtDuB,mBAIdvC,KAAKoS,UAAW,EAChBpS,KAAKwb,UAAUlJ,OAEVtS,KAAK8F,QAAQsX,SAChB,IAAI9D,iBAAkBjH,OAGxBrS,KAAK6F,SAASjC,aAAa,cAAc,GACzC5D,KAAK6F,SAASjC,aAAa,OAAQ,UACnC5D,KAAK6F,SAAShL,UAAUuQ,IAhFD,WA4FvBpL,KAAKoG,gBAVoBoK,KAClBxQ,KAAK8F,QAAQsX,SAAUpd,KAAK8F,QAAQkS,UACvChY,KAAK0b,WAAW9C,WAGlB5Y,KAAK6F,SAAShL,UAAUuQ,IAxFN,QAyFlBpL,KAAK6F,SAAShL,UAAUxD,OAxFH,WAyFrBoI,aAAa0C,QAAQnC,KAAK6F,SAAUkL,cAAa,CAAE/P,iBAAgB,GAG/BhB,KAAK6F,UAAU,GACvD,CAEAwM,OACOrS,KAAKoS,WAIQ3S,aAAa0C,QAAQnC,KAAK6F,SAAUmL,cAExCzO,mBAIdvC,KAAK0b,WAAW3C,aAChB/Y,KAAK6F,SAASyX,OACdtd,KAAKoS,UAAW,EAChBpS,KAAK6F,SAAShL,UAAUuQ,IA5GF,UA6GtBpL,KAAKwb,UAAUnJ,OAcfrS,KAAKoG,gBAZoBmX,KACvBvd,KAAK6F,SAAShL,UAAUxD,OAlHN,OAEE,UAiHpB2I,KAAK6F,SAAS/B,gBAAgB,cAC9B9D,KAAK6F,SAAS/B,gBAAgB,QAEzB9D,KAAK8F,QAAQsX,SAChB,IAAI9D,iBAAkBS,QAGxBta,aAAa0C,QAAQnC,KAAK6F,SAAUoL,eAAa,GAGbjR,KAAK6F,UAAU,IACvD,CAEAG,UACEhG,KAAKwb,UAAUxV,UACfhG,KAAK0b,WAAW3C,aAChBnT,MAAMI,SACR,CAGAyV,sBACE,MAUMvhB,EAAYkH,QAAQpB,KAAK8F,QAAQkS,UAEvC,OAAO,IAAIL,SAAS,CAClBH,UAAW2F,oBACXjjB,YACAmM,YAAY,EACZqR,YAAa1X,KAAK6F,SAASpL,WAC3Bgd,cAAevd,EAjBKud,KACU,WAA1BzX,KAAK8F,QAAQkS,SAKjBhY,KAAKqS,OAJH5S,aAAa0C,QAAQnC,KAAK6F,SAAU+U,qBAI3B,EAWgC,MAE/C,CAEAe,uBACE,OAAO,IAAIlD,UAAU,CACnBD,YAAaxY,KAAK6F,UAEtB,CAEAsI,qBACE1O,aAAakC,GAAG3B,KAAK6F,SAAUmV,uBAAuB3b,IAtKvC,WAuKTA,EAAM3I,MAINsJ,KAAK8F,QAAQyH,SACfvN,KAAKqS,OAIP5S,aAAa0C,QAAQnC,KAAK6F,SAAU+U,sBAAqB,GAE7D,CAGA,sBAAO/d,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOsU,UAAU9W,oBAAoBvG,KAAM4E,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5E,KANb,CAOF,GACF,EAOFP,aAAakC,GAAG7I,SAAUsQ,uBAAsBD,wBAAsB,SAAU9J,GAC9E,MAAM3B,EAASkJ,eAAeoB,uBAAuBhI,MAMrD,GAJI,CAAC,IAAK,QAAQ0B,SAAS1B,KAAKsI,UAC9BjJ,EAAMwD,iBAGJnI,WAAWsF,MACb,OAGFP,aAAamC,IAAIlE,EAAQuT,gBAAc,KAEjC/W,UAAU8F,OACZA,KAAKyV,OACP,IAIF,MAAMuH,EAAcpW,eAAeG,QAAQoU,eACvC6B,GAAeA,IAAgBtf,GACjC2f,UAAU/W,YAAY0W,GAAa3K,OAGxBgL,UAAU9W,oBAAoB7I,GACtC4L,OAAOtJ,KACd,IAEAP,aAAakC,GAAG/J,OAAQyU,uBAAqB,KAC3C,IAAK,MAAM1U,KAAYiP,eAAerG,KAAK4a,eACzCkC,UAAU9W,oBAAoB5O,GAAU2a,MAC1C,IAGF7S,aAAakC,GAAG/J,OAAQijB,cAAc,KACpC,IAAK,MAAMpkB,KAAWmQ,eAAerG,KAAK,gDACG,UAAvCpH,iBAAiB1C,GAAS+mB,UAC5BH,UAAU9W,oBAAoB9P,GAAS4b,MAE3C,IAGFnK,qBAAqBmV,WAMrB/gB,mBAAmB+gB,WC/QnB,MAAMI,uBAAyB,iBAElBC,iBAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQD,wBAC5CE,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHpP,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDqP,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,IAIAC,cAAgB,IAAIvgB,IAAI,CAC5B,aACA,OACA,OACA,WACA,WACA,SACA,MACA,eAUIwgB,iBAAmB,0DAEnBC,iBAAmBA,CAACC,EAAWC,KACnC,MAAMC,EAAgBF,EAAUG,SAASrnB,cAEzC,OAAImnB,EAAqBje,SAASke,IAC5BL,cAAc3oB,IAAIgpB,IACbxe,QAAQoe,iBAAiBja,KAAKma,EAAUI,YAO5CH,EAAqBxb,QAAO4b,GAAkBA,aAA0Bza,SAC5E0a,MAAKC,GAASA,EAAM1a,KAAKqa,IAAe,EAGtC,SAASM,aAAaC,EAAYC,EAAWC,GAClD,IAAKF,EAAWnmB,OACd,OAAOmmB,EAGT,GAAIE,GAAgD,mBAArBA,EAC7B,OAAOA,EAAiBF,GAG1B,MACMG,GADY,IAAI1oB,OAAO2oB,WACKC,gBAAgBL,EAAY,aACxDnH,EAAW,GAAGnS,UAAUyZ,EAAgBzkB,KAAKkE,iBAAiB,MAEpE,IAAK,MAAMtJ,KAAWuiB,EAAU,CAC9B,MAAMyH,EAAchqB,EAAQopB,SAASrnB,cAErC,IAAKJ,OAAOhB,KAAKgpB,GAAW1e,SAAS+e,GAAc,CACjDhqB,EAAQY,SACR,QACF,CAEA,MAAMqpB,EAAgB,GAAG7Z,UAAUpQ,EAAQuN,YACrC2c,EAAoB,GAAG9Z,OAAOuZ,EAAU,MAAQ,GAAIA,EAAUK,IAAgB,IAEpF,IAAK,MAAMf,KAAagB,EACjBjB,iBAAiBC,EAAWiB,IAC/BlqB,EAAQqN,gBAAgB4b,EAAUG,SAGxC,CAEA,OAAOS,EAAgBzkB,KAAK+kB,SAC9B,CCjGA,MAAMlkB,OAAO,kBAEP8H,UAAU,CACd4b,UAAW1C,iBACXmD,QAAS,GACTC,WAAY,GACZC,MAAM,EACNC,UAAU,EACVC,WAAY,KACZC,SAAU,eAGNzc,cAAc,CAClB2b,UAAW,SACXS,QAAS,SACTC,WAAY,oBACZC,KAAM,UACNC,SAAU,UACVC,WAAY,kBACZC,SAAU,UAGNC,mBAAqB,CACzBC,MAAO,iCACPzpB,SAAU,oBAOZ,MAAM0pB,wBAAwB9c,OAC5BU,YAAYL,GACVgB,QACA5F,KAAK8F,QAAU9F,KAAK2E,WAAWC,EACjC,CAGA,kBAAWJ,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4kB,aACE,OAAOlpB,OAAOkI,OAAON,KAAK8F,QAAQ+a,SAC/BjZ,KAAIhD,GAAU5E,KAAKuhB,yBAAyB3c,KAC5CT,OAAO/C,QACZ,CAEAogB,aACE,OAAOxhB,KAAKshB,aAAatnB,OAAS,CACpC,CAEAynB,cAAcZ,GAGZ,OAFA7gB,KAAK0hB,cAAcb,GACnB7gB,KAAK8F,QAAQ+a,QAAU,IAAK7gB,KAAK8F,QAAQ+a,WAAYA,GAC9C7gB,IACT,CAEA2hB,SACE,MAAMC,EAAkB9oB,SAASmf,cAAc,OAC/C2J,EAAgBhB,UAAY5gB,KAAK6hB,eAAe7hB,KAAK8F,QAAQob,UAE7D,IAAK,MAAOvpB,EAAUmqB,KAAS1pB,OAAOqJ,QAAQzB,KAAK8F,QAAQ+a,SACzD7gB,KAAK+hB,YAAYH,EAAiBE,EAAMnqB,GAG1C,MAAMupB,EAAWU,EAAgB5a,SAAS,GACpC8Z,EAAa9gB,KAAKuhB,yBAAyBvhB,KAAK8F,QAAQgb,YAM9D,OAJIA,GACFI,EAASrmB,UAAUuQ,OAAO0V,EAAWtnB,MAAM,MAGtC0nB,CACT,CAGAnc,iBAAiBH,GACfgB,MAAMb,iBAAiBH,GACvB5E,KAAK0hB,cAAc9c,EAAOic,QAC5B,CAEAa,cAAcM,GACZ,IAAK,MAAOrqB,EAAUkpB,KAAYzoB,OAAOqJ,QAAQugB,GAC/Cpc,MAAMb,iBAAiB,CAAEpN,WAAUypB,MAAOP,GAAWM,mBAEzD,CAEAY,YAAYb,EAAUL,EAASlpB,GAC7B,MAAMsqB,EAAkBrb,eAAeG,QAAQpP,EAAUupB,GAEpDe,KAILpB,EAAU7gB,KAAKuhB,yBAAyBV,IAOpCjnB,UAAUinB,GACZ7gB,KAAKkiB,sBAAsBnoB,WAAW8mB,GAAUoB,GAI9CjiB,KAAK8F,QAAQib,KACfkB,EAAgBrB,UAAY5gB,KAAK6hB,eAAehB,GAIlDoB,EAAgBE,YAActB,EAd5BoB,EAAgB5qB,SAepB,CAEAwqB,eAAeG,GACb,OAAOhiB,KAAK8F,QAAQkb,SAAWd,aAAa8B,EAAKhiB,KAAK8F,QAAQsa,UAAWpgB,KAAK8F,QAAQmb,YAAce,CACtG,CAEAT,yBAAyBS,GACvB,OAAOhlB,QAAQglB,EAAK,CAAChiB,MACvB,CAEAkiB,sBAAsBzrB,EAASwrB,GAC7B,GAAIjiB,KAAK8F,QAAQib,KAGf,OAFAkB,EAAgBrB,UAAY,QAC5BqB,EAAgB/J,OAAOzhB,GAIzBwrB,EAAgBE,YAAc1rB,EAAQ0rB,WACxC,ECzIF,MAAMzlB,OAAO,UACP0lB,sBAAwB,IAAIpjB,IAAI,CAAC,WAAY,YAAa,eAE1DyJ,kBAAkB,OAClB4Z,iBAAmB,QACnB3Z,kBAAkB,OAElB4Z,uBAAyB,iBACzBC,eAAkB,SAElBC,iBAAmB,gBAEnBC,cAAgB,QAChBC,cAAgB,QAChBC,cAAgB,QAChBC,eAAiB,SAEjB5R,aAAa,OACbC,eAAe,SACfH,aAAa,OACbC,cAAc,QACd8R,eAAiB,WACjBC,cAAc,QACd3K,gBAAgB,UAChB4K,iBAAiB,WACjB7W,iBAAmB,aACnBC,iBAAmB,aAEnB6W,cAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAO/mB,QAAU,OAAS,QAC1BgnB,OAAQ,SACRC,KAAMjnB,QAAU,QAAU,QAGtBoI,UAAU,CACd4b,UAAW1C,iBACX4F,WAAW,EACXzO,SAAU,kBACV0O,WAAW,EACXC,YAAa,GACbC,MAAO,EACPC,mBAAoB,CAAC,MAAO,QAAS,SAAU,QAC/C3C,MAAM,EACNhM,OAAQ,CAAC,EAAG,GACZwB,UAAW,MACXvB,aAAc,KACdgM,UAAU,EACVC,WAAY,KACZtpB,UAAU,EACVupB,SAAU,+GAIVyC,MAAO,GACPxhB,QAAS,eAGLsC,cAAc,CAClB2b,UAAW,SACXkD,UAAW,UACXzO,SAAU,mBACV0O,UAAW,2BACXC,YAAa,oBACbC,MAAO,kBACPC,mBAAoB,QACpB3C,KAAM,UACNhM,OAAQ,0BACRwB,UAAW,oBACXvB,aAAc,yBACdgM,SAAU,UACVC,WAAY,kBACZtpB,SAAU,mBACVupB,SAAU,SACVyC,MAAO,4BACPxhB,QAAS,UAOX,MAAMyhB,gBAAgBje,cACpBV,YAAYxO,EAASmO,GACnB,QAAsB,IAAXiR,OACT,MAAM,IAAIrQ,UAAU,+DAGtBI,MAAMnP,EAASmO,GAGf5E,KAAK6jB,YAAa,EAClB7jB,KAAK8jB,SAAW,EAChB9jB,KAAK+jB,WAAa,KAClB/jB,KAAKgkB,eAAiB,GACtBhkB,KAAKmV,QAAU,KACfnV,KAAKikB,iBAAmB,KACxBjkB,KAAKkkB,YAAc,KAGnBlkB,KAAKmkB,IAAM,KAEXnkB,KAAKokB,gBAEApkB,KAAK8F,QAAQnO,UAChBqI,KAAKqkB,WAET,CAGA,kBAAW7f,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGA4nB,SACEtkB,KAAK6jB,YAAa,CACpB,CAEAU,UACEvkB,KAAK6jB,YAAa,CACpB,CAEAW,gBACExkB,KAAK6jB,YAAc7jB,KAAK6jB,UAC1B,CAEAva,SACOtJ,KAAK6jB,aAIV7jB,KAAKgkB,eAAeS,OAASzkB,KAAKgkB,eAAeS,MAC7CzkB,KAAKoS,WACPpS,KAAK0kB,SAIP1kB,KAAK2kB,SACP,CAEA3e,UACE0J,aAAa1P,KAAK8jB,UAElBrkB,aAAaC,IAAIM,KAAK6F,SAAStL,QAjJX,UAEC,gBA+IqDyF,KAAK4kB,mBAE3E5kB,KAAK6F,SAAS5K,aAAa,2BAC7B+E,KAAK6F,SAASjC,aAAa,QAAS5D,KAAK6F,SAAS5K,aAAa,2BAGjE+E,KAAK6kB,iBACLjf,MAAMI,SACR,CAEAsM,OACE,GAAoC,SAAhCtS,KAAK6F,SAAS+M,MAAMkC,QACtB,MAAM,IAAIpQ,MAAM,uCAGlB,IAAM1E,KAAK8kB,mBAAoB9kB,KAAK6jB,WAClC,OAGF,MAAM9G,EAAYtd,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYuB,UAzJxD,SA2JTue,GADa7pB,eAAe8E,KAAK6F,WACL7F,KAAK6F,SAASmf,cAAc7pB,iBAAiBL,SAASkF,KAAK6F,UAE7F,GAAIkX,EAAUxa,mBAAqBwiB,EACjC,OAIF/kB,KAAK6kB,iBAEL,MAAMV,EAAMnkB,KAAKilB,iBAEjBjlB,KAAK6F,SAASjC,aAAa,mBAAoBugB,EAAIlpB,aAAa,OAEhE,MAAMsoB,UAAEA,GAAcvjB,KAAK8F,QAe3B,GAbK9F,KAAK6F,SAASmf,cAAc7pB,gBAAgBL,SAASkF,KAAKmkB,OAC7DZ,EAAUrL,OAAOiM,GACjB1kB,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYuB,UA1KpC,cA6KnBxG,KAAKmV,QAAUnV,KAAKwV,cAAc2O,GAElCA,EAAItpB,UAAUuQ,IA/LM,QAqMhB,iBAAkBtS,SAASqC,gBAC7B,IAAK,MAAM1E,IAAW,GAAGoQ,UAAU/N,SAAS+C,KAAKmL,UAC/CvH,aAAakC,GAAGlL,EAAS,YAAa+E,MAc1CwE,KAAKoG,gBAVY0M,KACfrT,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYuB,UA7LvC,WA+LU,IAApBxG,KAAK+jB,YACP/jB,KAAK0kB,SAGP1kB,KAAK+jB,YAAa,CAAK,GAGK/jB,KAAKmkB,IAAKnkB,KAAKyQ,cAC/C,CAEA4B,OACE,GAAKrS,KAAKoS,aAIQ3S,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYuB,UAjNxD,SAkNDjE,iBAAd,CASA,GALYvC,KAAKilB,iBACbpqB,UAAUxD,OAnOM,QAuOhB,iBAAkByB,SAASqC,gBAC7B,IAAK,MAAM1E,IAAW,GAAGoQ,UAAU/N,SAAS+C,KAAKmL,UAC/CvH,aAAaC,IAAIjJ,EAAS,YAAa+E,MAI3CwE,KAAKgkB,eAA4B,OAAI,EACrChkB,KAAKgkB,eAA4B,OAAI,EACrChkB,KAAKgkB,eAA4B,OAAI,EACrChkB,KAAK+jB,WAAa,KAelB/jB,KAAKoG,gBAbY0M,KACX9S,KAAKklB,yBAIJllB,KAAK+jB,YACR/jB,KAAK6kB,iBAGP7kB,KAAK6F,SAAS/B,gBAAgB,oBAC9BrE,aAAa0C,QAAQnC,KAAK6F,SAAU7F,KAAKiF,YAAYuB,UA/OtC,WA+O8D,GAGjDxG,KAAKmkB,IAAKnkB,KAAKyQ,cA/B7C,CAgCF,CAEAmF,SACM5V,KAAKmV,SACPnV,KAAKmV,QAAQS,QAEjB,CAGAkP,iBACE,OAAO1jB,QAAQpB,KAAKmlB,YACtB,CAEAF,iBAKE,OAJKjlB,KAAKmkB,MACRnkB,KAAKmkB,IAAMnkB,KAAKolB,kBAAkBplB,KAAKkkB,aAAelkB,KAAKqlB,2BAGtDrlB,KAAKmkB,GACd,CAEAiB,kBAAkBvE,GAChB,MAAMsD,EAAMnkB,KAAKslB,oBAAoBzE,GAASc,SAG9C,IAAKwC,EACH,OAAO,KAGTA,EAAItpB,UAAUxD,OA/RM,OAEA,QA+RpB8sB,EAAItpB,UAAUuQ,IAAK,MAAKpL,KAAKiF,YAAYvI,aAEzC,MAAM6oB,EAAQ9sB,OAAOuH,KAAKiF,YAAYvI,MAAMpE,WAQ5C,OANA6rB,EAAIvgB,aAAa,KAAM2hB,GAEnBvlB,KAAKyQ,eACP0T,EAAItpB,UAAUuQ,IAxSI,QA2Sb+Y,CACT,CAEAqB,WAAW3E,GACT7gB,KAAKkkB,YAAcrD,EACf7gB,KAAKoS,aACPpS,KAAK6kB,iBACL7kB,KAAKsS,OAET,CAEAgT,oBAAoBzE,GAalB,OAZI7gB,KAAKikB,iBACPjkB,KAAKikB,iBAAiBxC,cAAcZ,GAEpC7gB,KAAKikB,iBAAmB,IAAI5C,gBAAgB,IACvCrhB,KAAK8F,QAGR+a,UACAC,WAAY9gB,KAAKuhB,yBAAyBvhB,KAAK8F,QAAQ0d,eAIpDxjB,KAAKikB,gBACd,CAEAoB,yBACE,MAAO,CACL,iBAA0BrlB,KAAKmlB,YAEnC,CAEAA,YACE,OAAOnlB,KAAKuhB,yBAAyBvhB,KAAK8F,QAAQ6d,QAAU3jB,KAAK6F,SAAS5K,aAAa,yBACzF,CAGAwqB,6BAA6BpmB,GAC3B,OAAOW,KAAKiF,YAAYsB,oBAAoBlH,EAAME,eAAgBS,KAAK0lB,qBACzE,CAEAjV,cACE,OAAOzQ,KAAK8F,QAAQwd,WAActjB,KAAKmkB,KAAOnkB,KAAKmkB,IAAItpB,UAAUC,SAtV7C,OAuVtB,CAEAsX,WACE,OAAOpS,KAAKmkB,KAAOnkB,KAAKmkB,IAAItpB,UAAUC,SAxVlB,OAyVtB,CAEA0a,cAAc2O,GACZ,MAAM5N,EAAYvZ,QAAQgD,KAAK8F,QAAQyQ,UAAW,CAACvW,KAAMmkB,EAAKnkB,KAAK6F,WAC7D8f,EAAa3C,cAAczM,EAAU9Q,eAC3C,OAAOoQ,OAAOG,aAAahW,KAAK6F,SAAUse,EAAKnkB,KAAK+V,iBAAiB4P,GACvE,CAEAvP,aACE,MAAMrB,OAAEA,GAAW/U,KAAK8F,QAExB,MAAsB,iBAAXiP,EACFA,EAAOvb,MAAM,KAAKoO,KAAI5E,GAAS3J,OAAO0W,SAAS/M,EAAO,MAGzC,mBAAX+R,EACFsB,GAActB,EAAOsB,EAAYrW,KAAK6F,UAGxCkP,CACT,CAEAwM,yBAAyBS,GACvB,OAAOhlB,QAAQglB,EAAK,CAAChiB,KAAK6F,UAC5B,CAEAkQ,iBAAiB4P,GACf,MAAMrP,EAAwB,CAC5BC,UAAWoP,EACXnP,UAAW,CACT,CACE/Z,KAAM,OACNga,QAAS,CACPiN,mBAAoB1jB,KAAK8F,QAAQ4d,qBAGrC,CACEjnB,KAAM,SACNga,QAAS,CACP1B,OAAQ/U,KAAKoW,eAGjB,CACE3Z,KAAM,kBACNga,QAAS,CACP5B,SAAU7U,KAAK8F,QAAQ+O,WAG3B,CACEpY,KAAM,QACNga,QAAS,CACPhgB,QAAU,IAAGuJ,KAAKiF,YAAYvI,eAGlC,CACED,KAAM,kBACNia,SAAS,EACTkP,MAAO,aACPhpB,GAAImM,IAGF/I,KAAKilB,iBAAiBrhB,aAAa,wBAAyBmF,EAAK8c,MAAMtP,UAAU,KAMzF,MAAO,IACFD,KACAtZ,QAAQgD,KAAK8F,QAAQkP,aAAc,CAACsB,IAE3C,CAEA8N,gBACE,MAAM0B,EAAW9lB,KAAK8F,QAAQ3D,QAAQ3I,MAAM,KAE5C,IAAK,MAAM2I,KAAW2jB,EACpB,GAAgB,UAAZ3jB,EACF1C,aAAakC,GAAG3B,KAAK6F,SAAU7F,KAAKiF,YAAYuB,UAtZpC,SAsZ4DxG,KAAK8F,QAAQnO,UAAU0H,IAC7EW,KAAKylB,6BAA6BpmB,GAC1CiK,QAAQ,SAEb,GAjaU,WAiaNnH,EAA4B,CACrC,MAAM4jB,EAraQ,UAqaE5jB,EACdnC,KAAKiF,YAAYuB,UAzZF,cA0ZfxG,KAAKiF,YAAYuB,UA5ZL,WA6ZRwf,EAxaQ,UAwaG7jB,EACfnC,KAAKiF,YAAYuB,UA3ZF,cA4ZfxG,KAAKiF,YAAYuB,UA9ZJ,YAgaf/G,aAAakC,GAAG3B,KAAK6F,SAAUkgB,EAAS/lB,KAAK8F,QAAQnO,UAAU0H,IAC7D,MAAMyX,EAAU9W,KAAKylB,6BAA6BpmB,GAClDyX,EAAQkN,eAA8B,YAAf3kB,EAAMM,KA7ajB,QADA,UA8auE,EACnFmX,EAAQ6N,QAAQ,IAElBllB,aAAakC,GAAG3B,KAAK6F,SAAUmgB,EAAUhmB,KAAK8F,QAAQnO,UAAU0H,IAC9D,MAAMyX,EAAU9W,KAAKylB,6BAA6BpmB,GAClDyX,EAAQkN,eAA8B,aAAf3kB,EAAMM,KAlbjB,QADA,SAobVmX,EAAQjR,SAAS/K,SAASuE,EAAM2B,eAElC8V,EAAQ4N,QAAQ,GAEpB,CAGF1kB,KAAK4kB,kBAAoB,KACnB5kB,KAAK6F,UACP7F,KAAKqS,MACP,EAGF5S,aAAakC,GAAG3B,KAAK6F,SAAStL,QArcV,UAEC,gBAmcoDyF,KAAK4kB,kBAChF,CAEAP,YACE,MAAMV,EAAQ3jB,KAAK6F,SAAS5K,aAAa,SAEpC0oB,IAIA3jB,KAAK6F,SAAS5K,aAAa,eAAkB+E,KAAK6F,SAASsc,YAAYxb,QAC1E3G,KAAK6F,SAASjC,aAAa,aAAc+f,GAG3C3jB,KAAK6F,SAASjC,aAAa,yBAA0B+f,GACrD3jB,KAAK6F,SAAS/B,gBAAgB,SAChC,CAEA6gB,SACM3kB,KAAKoS,YAAcpS,KAAK+jB,WAC1B/jB,KAAK+jB,YAAa,GAIpB/jB,KAAK+jB,YAAa,EAElB/jB,KAAKimB,aAAY,KACXjmB,KAAK+jB,YACP/jB,KAAKsS,MACP,GACCtS,KAAK8F,QAAQ2d,MAAMnR,MACxB,CAEAoS,SACM1kB,KAAKklB,yBAITllB,KAAK+jB,YAAa,EAElB/jB,KAAKimB,aAAY,KACVjmB,KAAK+jB,YACR/jB,KAAKqS,MACP,GACCrS,KAAK8F,QAAQ2d,MAAMpR,MACxB,CAEA4T,YAAYxoB,EAASyoB,GACnBxW,aAAa1P,KAAK8jB,UAClB9jB,KAAK8jB,SAAWlmB,WAAWH,EAASyoB,EACtC,CAEAhB,uBACE,OAAO9sB,OAAOkI,OAAON,KAAKgkB,gBAAgBtiB,UAAS,EACrD,CAEAiD,WAAWC,GACT,MAAMuhB,EAAiBziB,YAAYK,kBAAkB/D,KAAK6F,UAE1D,IAAK,MAAMugB,KAAiBhuB,OAAOhB,KAAK+uB,GAClC/D,sBAAsBxrB,IAAIwvB,WACrBD,EAAeC,GAW1B,OAPAxhB,EAAS,IACJuhB,KACmB,iBAAXvhB,GAAuBA,EAASA,EAAS,IAEtDA,EAAS5E,KAAK6E,gBAAgBD,GAC9BA,EAAS5E,KAAK8E,kBAAkBF,GAChC5E,KAAK+E,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAkBhB,OAjBAA,EAAO2e,WAAiC,IAArB3e,EAAO2e,UAAsBzqB,SAAS+C,KAAO9B,WAAW6K,EAAO2e,WAEtD,iBAAjB3e,EAAO6e,QAChB7e,EAAO6e,MAAQ,CACbnR,KAAM1N,EAAO6e,MACbpR,KAAMzN,EAAO6e,QAIW,iBAAjB7e,EAAO+e,QAChB/e,EAAO+e,MAAQ/e,EAAO+e,MAAMrrB,YAGA,iBAAnBsM,EAAOic,UAChBjc,EAAOic,QAAUjc,EAAOic,QAAQvoB,YAG3BsM,CACT,CAEA8gB,qBACE,MAAM9gB,EAAS,GAEf,IAAK,MAAOlO,EAAKsM,KAAU5K,OAAOqJ,QAAQzB,KAAK8F,SACzC9F,KAAKiF,YAAYT,QAAQ9N,KAASsM,IACpC4B,EAAOlO,GAAOsM,GAUlB,OANA4B,EAAOjN,UAAW,EAClBiN,EAAOzC,QAAU,SAKVyC,CACT,CAEAigB,iBACM7kB,KAAKmV,UACPnV,KAAKmV,QAAQQ,UACb3V,KAAKmV,QAAU,MAGbnV,KAAKmkB,MACPnkB,KAAKmkB,IAAI9sB,SACT2I,KAAKmkB,IAAM,KAEf,CAGA,sBAAOtnB,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAO6a,QAAQrd,oBAAoBvG,KAAM4E,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFtI,mBAAmBsnB,SCtmBnB,MAAMlnB,OAAO,UAEP2pB,eAAiB,kBACjBC,iBAAmB,gBAEnB9hB,UAAU,IACXof,QAAQpf,QACXqc,QAAS,GACT9L,OAAQ,CAAC,EAAG,GACZwB,UAAW,QACX2K,SAAU,8IAKV/e,QAAS,SAGLsC,cAAc,IACfmf,QAAQnf,YACXoc,QAAS,kCAOX,MAAM0F,gBAAgB3C,QAEpB,kBAAWpf,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGAooB,iBACE,OAAO9kB,KAAKmlB,aAAenlB,KAAKwmB,aAClC,CAGAnB,yBACE,MAAO,CACLgB,CAACA,gBAAiBrmB,KAAKmlB,YACvB,gBAAoBnlB,KAAKwmB,cAE7B,CAEAA,cACE,OAAOxmB,KAAKuhB,yBAAyBvhB,KAAK8F,QAAQ+a,QACpD,CAGA,sBAAOhkB,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOwd,QAAQhgB,oBAAoBvG,KAAM4E,GAE/C,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFtI,mBAAmBiqB,SC9EnB,MAAM7pB,OAAO,YACPqJ,WAAW,eACXE,YAAa,IAAGF,aAChBkD,aAAe,YAEfwd,eAAkB,WAAUxgB,cAC5B6c,YAAe,QAAO7c,cACtBoG,sBAAuB,OAAMpG,uBAE7BygB,yBAA2B,gBAC3Bxd,oBAAoB,SAEpByd,kBAAoB,yBACpBC,sBAAwB,SACxBC,wBAA0B,oBAC1BC,mBAAqB,YACrBC,mBAAqB,YACrBC,oBAAsB,mBACtBC,oBAAuB,qDACvBC,kBAAoB,YACpBC,2BAA2B,mBAE3B3iB,UAAU,CACduQ,OAAQ,KACRqS,WAAY,eACZC,cAAc,EACd3pB,OAAQ,KACR4pB,UAAW,CAAC,GAAK,GAAK,IAGlB7iB,cAAc,CAClBsQ,OAAQ,gBACRqS,WAAY,SACZC,aAAc,UACd3pB,OAAQ,UACR4pB,UAAW,SAOb,MAAMC,kBAAkB5hB,cACtBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAGf5E,KAAKwnB,aAAe,IAAIlxB,IACxB0J,KAAKynB,oBAAsB,IAAInxB,IAC/B0J,KAAK0nB,aAA6D,YAA9CvuB,iBAAiB6G,KAAK6F,UAAU8W,UAA0B,KAAO3c,KAAK6F,SAC1F7F,KAAK2nB,cAAgB,KACrB3nB,KAAK4nB,UAAY,KACjB5nB,KAAK6nB,oBAAsB,CACzBC,gBAAiB,EACjBC,gBAAiB,GAEnB/nB,KAAKgoB,SACP,CAGA,kBAAWxjB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAW/H,GACT,OAAOA,MACT,CAGAsrB,UACEhoB,KAAKioB,mCACLjoB,KAAKkoB,2BAEDloB,KAAK4nB,UACP5nB,KAAK4nB,UAAUO,aAEfnoB,KAAK4nB,UAAY5nB,KAAKooB,kBAGxB,IAAK,MAAMC,KAAWroB,KAAKynB,oBAAoBnnB,SAC7CN,KAAK4nB,UAAUU,QAAQD,EAE3B,CAEAriB,UACEhG,KAAK4nB,UAAUO,aACfviB,MAAMI,SACR,CAGAlB,kBAAkBF,GAWhB,OATAA,EAAOlH,OAAS3D,WAAW6K,EAAOlH,SAAW5E,SAAS+C,KAGtD+I,EAAOwiB,WAAaxiB,EAAOmQ,OAAU,GAAEnQ,EAAOmQ,oBAAsBnQ,EAAOwiB,WAE3C,iBAArBxiB,EAAO0iB,YAChB1iB,EAAO0iB,UAAY1iB,EAAO0iB,UAAU9tB,MAAM,KAAKoO,KAAI5E,GAAS3J,OAAOC,WAAW0J,MAGzE4B,CACT,CAEAsjB,2BACOloB,KAAK8F,QAAQuhB,eAKlB5nB,aAAaC,IAAIM,KAAK8F,QAAQpI,OAAQolB,aAEtCrjB,aAAakC,GAAG3B,KAAK8F,QAAQpI,OAAQolB,YAvGX,UAuG+CzjB,IACvE,MAAMkpB,EAAoBvoB,KAAKynB,oBAAoB3wB,IAAIuI,EAAM3B,OAAO8qB,MACpE,GAAID,EAAmB,CACrBlpB,EAAMwD,iBACN,MAAMvH,EAAO0E,KAAK0nB,cAAgB9vB,OAC5B6wB,EAASF,EAAkBG,UAAY1oB,KAAK6F,SAAS6iB,UAC3D,GAAIptB,EAAKqtB,SAEP,YADArtB,EAAKqtB,SAAS,CAAEC,IAAKH,EAAQI,SAAU,WAKzCvtB,EAAK2gB,UAAYwM,CACnB,KAEJ,CAEAL,kBACE,MAAM3R,EAAU,CACdnb,KAAM0E,KAAK0nB,aACXJ,UAAWtnB,KAAK8F,QAAQwhB,UACxBF,WAAYpnB,KAAK8F,QAAQshB,YAG3B,OAAO,IAAI0B,sBAAqBrnB,GAAWzB,KAAK+oB,kBAAkBtnB,IAAUgV,EAC9E,CAGAsS,kBAAkBtnB,GAChB,MAAMunB,EAAgB5H,GAASphB,KAAKwnB,aAAa1wB,IAAK,IAAGsqB,EAAM1jB,OAAOzF,MAChE2gB,EAAWwI,IACfphB,KAAK6nB,oBAAoBC,gBAAkB1G,EAAM1jB,OAAOgrB,UACxD1oB,KAAKipB,SAASD,EAAc5H,GAAO,EAG/B2G,GAAmB/nB,KAAK0nB,cAAgB5uB,SAASqC,iBAAiB8gB,UAClEiN,EAAkBnB,GAAmB/nB,KAAK6nB,oBAAoBE,gBACpE/nB,KAAK6nB,oBAAoBE,gBAAkBA,EAE3C,IAAK,MAAM3G,KAAS3f,EAAS,CAC3B,IAAK2f,EAAM+H,eAAgB,CACzBnpB,KAAK2nB,cAAgB,KACrB3nB,KAAKopB,kBAAkBJ,EAAc5H,IAErC,QACF,CAEA,MAAMiI,EAA2BjI,EAAM1jB,OAAOgrB,WAAa1oB,KAAK6nB,oBAAoBC,gBAEpF,GAAIoB,GAAmBG,GAGrB,GAFAzQ,EAASwI,IAEJ2G,EACH,YAOCmB,GAAoBG,GACvBzQ,EAASwI,EAEb,CACF,CAEA6G,mCACEjoB,KAAKwnB,aAAe,IAAIlxB,IACxB0J,KAAKynB,oBAAsB,IAAInxB,IAE/B,MAAMgzB,EAAc1iB,eAAerG,KA7KT,SA6KqCP,KAAK8F,QAAQpI,QAE5E,IAAK,MAAM6rB,KAAUD,EAAa,CAEhC,IAAKC,EAAOf,MAAQ9tB,WAAW6uB,GAC7B,SAGF,MAAMhB,EAAoB3hB,eAAeG,QAAQyiB,UAAUD,EAAOf,MAAOxoB,KAAK6F,UAG1E3L,UAAUquB,KACZvoB,KAAKwnB,aAAahxB,IAAIgzB,UAAUD,EAAOf,MAAOe,GAC9CvpB,KAAKynB,oBAAoBjxB,IAAI+yB,EAAOf,KAAMD,GAE9C,CACF,CAEAU,SAASvrB,GACHsC,KAAK2nB,gBAAkBjqB,IAI3BsC,KAAKopB,kBAAkBppB,KAAK8F,QAAQpI,QACpCsC,KAAK2nB,cAAgBjqB,EACrBA,EAAO7C,UAAUuQ,IAzMK,UA0MtBpL,KAAKypB,iBAAiB/rB,GAEtB+B,aAAa0C,QAAQnC,KAAK6F,SAAU4gB,eAAgB,CAAEzlB,cAAetD,IACvE,CAEA+rB,iBAAiB/rB,GAEf,GAAIA,EAAO7C,UAAUC,SAlNQ,iBAmN3B8L,eAAeG,QAxMY,mBAwMsBrJ,EAAOnD,QAzMpC,cA0MjBM,UAAUuQ,IAnNO,eAuNtB,IAAK,MAAMse,KAAa9iB,eAAeO,QAAQzJ,EAnNnB,qBAsN1B,IAAK,MAAMisB,KAAQ/iB,eAAeS,KAAKqiB,EAAWzC,qBAChD0C,EAAK9uB,UAAUuQ,IA3NG,SA8NxB,CAEAge,kBAAkB1X,GAChBA,EAAO7W,UAAUxD,OAjOK,UAmOtB,MAAMuyB,EAAchjB,eAAerG,KAAM,gBAAgDmR,GACzF,IAAK,MAAMmY,KAAQD,EACjBC,EAAKhvB,UAAUxD,OArOK,SAuOxB,CAGA,sBAAOwF,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOwe,UAAUhhB,oBAAoBvG,KAAM4E,GAEjD,GAAsB,iBAAXA,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFnF,aAAakC,GAAG/J,OAAQyU,uBAAqB,KAC3C,IAAK,MAAMyd,KAAOljB,eAAerG,KAAKomB,mBACpCY,UAAUhhB,oBAAoBujB,EAChC,IAOFxtB,mBAAmBirB,WCnRnB,MAAM7qB,OAAO,MACPqJ,WAAW,SACXE,YAAa,UAEb+K,aAAc,cACdC,eAAgB,gBAChBH,aAAc,cACdC,cAAe,eACf3H,qBAAwB,eACxB6C,cAAiB,iBACjBI,oBAAuB,cAEvBb,eAAiB,YACjBC,gBAAkB,aAClB4H,aAAe,UACfC,eAAiB,YACjByW,SAAW,OACXC,QAAU,MAEV9gB,kBAAoB,SACpBT,kBAAkB,OAClBC,kBAAkB,OAClBuhB,eAAiB,WAEjB9C,yBAA2B,mBAC3B+C,uBAAyB,iBACzBC,6BAAgC,yBAEhCC,mBAAqB,sCACrBC,eAAiB,8BACjBC,eAAkB,8GAClBnhB,qBAAuB,2EACvBohB,oBAAuB,GAAED,mBAAmBnhB,uBAE5CqhB,4BAA+B,gGAMrC,MAAMC,YAAY9kB,cAChBV,YAAYxO,GACVmP,MAAMnP,GACNuJ,KAAKoV,QAAUpV,KAAK6F,SAAStL,QAAQ6vB,oBAEhCpqB,KAAKoV,UAOVpV,KAAK0qB,sBAAsB1qB,KAAKoV,QAASpV,KAAK2qB,gBAE9ClrB,aAAakC,GAAG3B,KAAK6F,SAAUoG,eAAe5M,GAASW,KAAKoP,SAAS/P,KACvE,CAGA,eAAW3C,GACT,MA3DS,KA4DX,CAGA4V,OACE,MAAMsY,EAAY5qB,KAAK6F,SACvB,GAAI7F,KAAK6qB,cAAcD,GACrB,OAIF,MAAME,EAAS9qB,KAAK+qB,iBAEdC,EAAYF,EAChBrrB,aAAa0C,QAAQ2oB,EAAQ9Z,aAAY,CAAEhQ,cAAe4pB,IAC1D,KAEgBnrB,aAAa0C,QAAQyoB,EAAW9Z,aAAY,CAAE9P,cAAe8pB,IAEjEvoB,kBAAqByoB,GAAaA,EAAUzoB,mBAI1DvC,KAAKirB,YAAYH,EAAQF,GACzB5qB,KAAKkrB,UAAUN,EAAWE,GAC5B,CAGAI,UAAUz0B,EAAS00B,GACZ10B,IAILA,EAAQoE,UAAUuQ,IAzEI,UA2EtBpL,KAAKkrB,UAAUtkB,eAAeoB,uBAAuBvR,IAgBrDuJ,KAAKoG,gBAdY0M,KACsB,QAAjCrc,EAAQwE,aAAa,SAKzBxE,EAAQqN,gBAAgB,YACxBrN,EAAQmN,aAAa,iBAAiB,GACtC5D,KAAKorB,gBAAgB30B,GAAS,GAC9BgJ,aAAa0C,QAAQ1L,EAASsa,cAAa,CACzC/P,cAAemqB,KARf10B,EAAQoE,UAAUuQ,IA7EF,OAsFhB,GAG0B3U,EAASA,EAAQoE,UAAUC,SA1FrC,SA2FtB,CAEAmwB,YAAYx0B,EAAS00B,GACd10B,IAILA,EAAQoE,UAAUxD,OAnGI,UAoGtBZ,EAAQ6mB,OAERtd,KAAKirB,YAAYrkB,eAAeoB,uBAAuBvR,IAcvDuJ,KAAKoG,gBAZY0M,KACsB,QAAjCrc,EAAQwE,aAAa,SAKzBxE,EAAQmN,aAAa,iBAAiB,GACtCnN,EAAQmN,aAAa,WAAY,MACjC5D,KAAKorB,gBAAgB30B,GAAS,GAC9BgJ,aAAa0C,QAAQ1L,EAASwa,eAAc,CAAEjQ,cAAemqB,KAP3D10B,EAAQoE,UAAUxD,OAxGF,OA+GyD,GAG/CZ,EAASA,EAAQoE,UAAUC,SAnHrC,SAoHtB,CAEAsU,SAAS/P,GACP,IAAM,CAACmM,eAAgBC,gBAAiB4H,aAAcC,eAAgByW,SAAUC,SAAStoB,SAASrC,EAAM3I,KACtG,OAGF2I,EAAMiY,kBACNjY,EAAMwD,iBAEN,MAAMmE,EAAWhH,KAAK2qB,eAAexmB,QAAO1N,IAAYiE,WAAWjE,KACnE,IAAI40B,EAEJ,GAAI,CAACtB,SAAUC,SAAStoB,SAASrC,EAAM3I,KACrC20B,EAAoBrkB,EAAS3H,EAAM3I,MAAQqzB,SAAW,EAAI/iB,EAAShN,OAAS,OACvE,CACL,MAAMgW,EAAS,CAACvE,gBAAiB6H,gBAAgB5R,SAASrC,EAAM3I,KAChE20B,EAAoBxtB,qBAAqBmJ,EAAU3H,EAAM3B,OAAQsS,GAAQ,EAC3E,CAEIqb,IACFA,EAAkB5V,MAAM,CAAE6V,eAAe,IACzCb,IAAIlkB,oBAAoB8kB,GAAmB/Y,OAE/C,CAEAqY,eACE,OAAO/jB,eAAerG,KAAKgqB,oBAAqBvqB,KAAKoV,QACvD,CAEA2V,iBACE,OAAO/qB,KAAK2qB,eAAepqB,MAAK0G,GAASjH,KAAK6qB,cAAc5jB,MAAW,IACzE,CAEAyjB,sBAAsBhZ,EAAQ1K,GAC5BhH,KAAKurB,yBAAyB7Z,EAAQ,OAAQ,WAE9C,IAAK,MAAMzK,KAASD,EAClBhH,KAAKwrB,6BAA6BvkB,EAEtC,CAEAukB,6BAA6BvkB,GAC3BA,EAAQjH,KAAKyrB,iBAAiBxkB,GAC9B,MAAMykB,EAAW1rB,KAAK6qB,cAAc5jB,GAC9B0kB,EAAY3rB,KAAK4rB,iBAAiB3kB,GACxCA,EAAMrD,aAAa,gBAAiB8nB,GAEhCC,IAAc1kB,GAChBjH,KAAKurB,yBAAyBI,EAAW,OAAQ,gBAG9CD,GACHzkB,EAAMrD,aAAa,WAAY,MAGjC5D,KAAKurB,yBAAyBtkB,EAAO,OAAQ,OAG7CjH,KAAK6rB,mCAAmC5kB,EAC1C,CAEA4kB,mCAAmC5kB,GACjC,MAAMvJ,EAASkJ,eAAeoB,uBAAuBf,GAEhDvJ,IAILsC,KAAKurB,yBAAyB7tB,EAAQ,OAAQ,YAE1CuJ,EAAMhP,IACR+H,KAAKurB,yBAAyB7tB,EAAQ,kBAAoB,GAAEuJ,EAAMhP,MAEtE,CAEAmzB,gBAAgB30B,EAASq1B,GACvB,MAAMH,EAAY3rB,KAAK4rB,iBAAiBn1B,GACxC,IAAKk1B,EAAU9wB,UAAUC,SAhMN,YAiMjB,OAGF,MAAMwO,EAASA,CAAC3R,EAAU6f,KACxB,MAAM/gB,EAAUmQ,eAAeG,QAAQpP,EAAUg0B,GAC7Cl1B,GACFA,EAAQoE,UAAUyO,OAAOkO,EAAWsU,EACtC,EAGFxiB,EAzM6B,mBALP,UA+MtBA,EAzM2B,iBAJP,QA8MpBqiB,EAAU/nB,aAAa,gBAAiBkoB,EAC1C,CAEAP,yBAAyB90B,EAASipB,EAAW1c,GACtCvM,EAAQuE,aAAa0kB,IACxBjpB,EAAQmN,aAAa8b,EAAW1c,EAEpC,CAEA6nB,cAAc9Y,GACZ,OAAOA,EAAKlX,UAAUC,SA1NA,SA2NxB,CAGA2wB,iBAAiB1Z,GACf,OAAOA,EAAK7K,QAAQqjB,qBAAuBxY,EAAOnL,eAAeG,QAAQwjB,oBAAqBxY,EAChG,CAGA6Z,iBAAiB7Z,GACf,OAAOA,EAAKxX,QAAQ8vB,iBAAmBtY,CACzC,CAGA,sBAAOlV,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAO0hB,IAAIlkB,oBAAoBvG,MAErC,GAAsB,iBAAX4E,EAAX,CAIA,QAAqBoE,IAAjBD,EAAKnE,IAAyBA,EAAO7C,WAAW,MAAmB,gBAAX6C,EAC1D,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,IANL,CAOF,GACF,EAOFnF,aAAakC,GAAG7I,SAxQc,eAwQkBqQ,sBAAsB,SAAU9J,GAC1E,CAAC,IAAK,QAAQqC,SAAS1B,KAAKsI,UAC9BjJ,EAAMwD,iBAGJnI,WAAWsF,OAIfyqB,IAAIlkB,oBAAoBvG,MAAMsS,MAChC,IAKA7S,aAAakC,GAAG/J,OArRa,eAqRgB,KAC3C,IAAK,MAAMnB,KAAWmQ,eAAerG,KAAKiqB,6BACxCC,IAAIlkB,oBAAoB9P,EAC1B,IAMF6F,mBAAmBmuB,KCxSnB,MAAM/tB,KAAO,QACPqJ,SAAW,WACXE,UAAa,IAAGF,WAEhBgmB,gBAAmB,YAAW9lB,YAC9B+lB,eAAkB,WAAU/lB,YAC5BkS,cAAiB,UAASlS,YAC1B8c,eAAkB,WAAU9c,YAC5B+K,WAAc,OAAM/K,YACpBgL,aAAgB,SAAQhL,YACxB6K,WAAc,OAAM7K,YACpB8K,YAAe,QAAO9K,YAEtBwC,gBAAkB,OAClBwjB,gBAAkB,OAClBvjB,gBAAkB,OAClBuU,mBAAqB,UAErBxY,YAAc,CAClB6e,UAAW,UACX4I,SAAU,UACVzI,MAAO,UAGHjf,QAAU,CACd8e,WAAW,EACX4I,UAAU,EACVzI,MAAO,KAOT,MAAM0I,cAAcxmB,cAClBV,YAAYxO,EAASmO,GACnBgB,MAAMnP,EAASmO,GAEf5E,KAAK8jB,SAAW,KAChB9jB,KAAKosB,sBAAuB,EAC5BpsB,KAAKqsB,yBAA0B,EAC/BrsB,KAAKokB,eACP,CAGA,kBAAW5f,GACT,OAAOA,OACT,CAEA,sBAAWC,GACT,OAAOA,WACT,CAEA,eAAW/H,GACT,OAAOA,IACT,CAGA4V,OACoB7S,aAAa0C,QAAQnC,KAAK6F,SAAUiL,YAExCvO,mBAIdvC,KAAKssB,gBAEDtsB,KAAK8F,QAAQwd,WACftjB,KAAK6F,SAAShL,UAAUuQ,IAvDN,QAiEpBpL,KAAK6F,SAAShL,UAAUxD,OAhEJ,QAiEpBoE,OAAOuE,KAAK6F,UACZ7F,KAAK6F,SAAShL,UAAUuQ,IAjEJ,OACG,WAkEvBpL,KAAKoG,gBAXY0M,KACf9S,KAAK6F,SAAShL,UAAUxD,OAxDH,WAyDrBoI,aAAa0C,QAAQnC,KAAK6F,SAAUkL,aAEpC/Q,KAAKusB,oBAAoB,GAOGvsB,KAAK6F,SAAU7F,KAAK8F,QAAQwd,WAC5D,CAEAjR,OACOrS,KAAKwsB,YAIQ/sB,aAAa0C,QAAQnC,KAAK6F,SAAUmL,YAExCzO,mBAUdvC,KAAK6F,SAAShL,UAAUuQ,IAtFD,WAuFvBpL,KAAKoG,gBAPY0M,KACf9S,KAAK6F,SAAShL,UAAUuQ,IAnFN,QAoFlBpL,KAAK6F,SAAShL,UAAUxD,OAlFH,UADH,QAoFlBoI,aAAa0C,QAAQnC,KAAK6F,SAAUoL,aAAa,GAIrBjR,KAAK6F,SAAU7F,KAAK8F,QAAQwd,YAC5D,CAEAtd,UACEhG,KAAKssB,gBAEDtsB,KAAKwsB,WACPxsB,KAAK6F,SAAShL,UAAUxD,OA/FN,QAkGpBuO,MAAMI,SACR,CAEAwmB,UACE,OAAOxsB,KAAK6F,SAAShL,UAAUC,SAtGX,OAuGtB,CAIAyxB,qBACOvsB,KAAK8F,QAAQomB,WAIdlsB,KAAKosB,sBAAwBpsB,KAAKqsB,0BAItCrsB,KAAK8jB,SAAWlmB,YAAW,KACzBoC,KAAKqS,MAAM,GACVrS,KAAK8F,QAAQ2d,QAClB,CAEAgJ,eAAeptB,EAAOqtB,GACpB,OAAQrtB,EAAMM,MACZ,IAAK,YACL,IAAK,WACHK,KAAKosB,qBAAuBM,EAC5B,MAGF,IAAK,UACL,IAAK,WACH1sB,KAAKqsB,wBAA0BK,EASnC,GAAIA,EAEF,YADA1sB,KAAKssB,gBAIP,MAAMrc,EAAc5Q,EAAM2B,cACtBhB,KAAK6F,WAAaoK,GAAejQ,KAAK6F,SAAS/K,SAASmV,IAI5DjQ,KAAKusB,oBACP,CAEAnI,gBACE3kB,aAAakC,GAAG3B,KAAK6F,SAAUkmB,iBAAiB1sB,GAASW,KAAKysB,eAAeptB,GAAO,KACpFI,aAAakC,GAAG3B,KAAK6F,SAAUmmB,gBAAgB3sB,GAASW,KAAKysB,eAAeptB,GAAO,KACnFI,aAAakC,GAAG3B,KAAK6F,SAAUsS,eAAe9Y,GAASW,KAAKysB,eAAeptB,GAAO,KAClFI,aAAakC,GAAG3B,KAAK6F,SAAUkd,gBAAgB1jB,GAASW,KAAKysB,eAAeptB,GAAO,IACrF,CAEAitB,gBACE5c,aAAa1P,KAAK8jB,UAClB9jB,KAAK8jB,SAAW,IAClB,CAGA,sBAAOjnB,CAAgB+H,GACrB,OAAO5E,KAAK8I,MAAK,WACf,MAAMC,EAAOojB,MAAM5lB,oBAAoBvG,KAAM4E,GAE7C,GAAsB,iBAAXA,EAAqB,CAC9B,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAW,oBAAmBZ,MAG1CmE,EAAKnE,GAAQ5E,KACf,CACF,GACF,EAOFkI,qBAAqBikB,OAMrB7vB,mBAAmB6vB,c"}