sevatech-library 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/README.md +655 -0
  2. package/dist/cjs/index.js +3565 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/types/components/avatar/avatar-group.component.d.ts +20 -0
  5. package/dist/cjs/types/components/avatar/avatar-group.component.d.ts.map +1 -0
  6. package/dist/cjs/types/components/avatar/avatar-label-group.component.d.ts +11 -0
  7. package/dist/cjs/types/components/avatar/avatar-label-group.component.d.ts.map +1 -0
  8. package/dist/cjs/types/components/avatar/avatar-profile.component.d.ts +5 -0
  9. package/dist/cjs/types/components/avatar/avatar-profile.component.d.ts.map +1 -0
  10. package/dist/cjs/types/components/avatar/avatar-user.component.d.ts +14 -0
  11. package/dist/cjs/types/components/avatar/avatar-user.component.d.ts.map +1 -0
  12. package/dist/cjs/types/components/avatar/avatar.component.d.ts +20 -0
  13. package/dist/cjs/types/components/avatar/avatar.component.d.ts.map +1 -0
  14. package/dist/cjs/types/components/avatar/avatar.constant.d.ts +35 -0
  15. package/dist/cjs/types/components/avatar/avatar.constant.d.ts.map +1 -0
  16. package/dist/cjs/types/components/avatar/avatar.interface.d.ts +28 -0
  17. package/dist/cjs/types/components/avatar/avatar.interface.d.ts.map +1 -0
  18. package/dist/cjs/types/components/avatar/index.d.ts +8 -0
  19. package/dist/cjs/types/components/avatar/index.d.ts.map +1 -0
  20. package/dist/cjs/types/components/bread-cumbs/bread-crumbs.component.d.ts +21 -0
  21. package/dist/cjs/types/components/bread-cumbs/bread-crumbs.component.d.ts.map +1 -0
  22. package/dist/cjs/types/components/button/button.component.d.ts +37 -0
  23. package/dist/cjs/types/components/button/button.component.d.ts.map +1 -0
  24. package/dist/cjs/types/components/button/button.constants.d.ts +33 -0
  25. package/dist/cjs/types/components/button/button.constants.d.ts.map +1 -0
  26. package/dist/cjs/types/components/button-bar/button-bar.component.d.ts +15 -0
  27. package/dist/cjs/types/components/button-bar/button-bar.component.d.ts.map +1 -0
  28. package/dist/cjs/types/components/checkbox/checkbox-content.component.d.ts +19 -0
  29. package/dist/cjs/types/components/checkbox/checkbox-content.component.d.ts.map +1 -0
  30. package/dist/cjs/types/components/checkbox/checkbox.component.d.ts +23 -0
  31. package/dist/cjs/types/components/checkbox/checkbox.component.d.ts.map +1 -0
  32. package/dist/cjs/types/components/checkbox/checkbox.constant.d.ts +26 -0
  33. package/dist/cjs/types/components/checkbox/checkbox.constant.d.ts.map +1 -0
  34. package/dist/cjs/types/components/chip/chip.component.d.ts +16 -0
  35. package/dist/cjs/types/components/chip/chip.component.d.ts.map +1 -0
  36. package/dist/cjs/types/components/chip/chip.constant.d.ts +16 -0
  37. package/dist/cjs/types/components/chip/chip.constant.d.ts.map +1 -0
  38. package/dist/cjs/types/components/date-field/date-field.component.d.ts +23 -0
  39. package/dist/cjs/types/components/date-field/date-field.component.d.ts.map +1 -0
  40. package/dist/cjs/types/components/date-range-picker/date-range-picker.component.d.ts +25 -0
  41. package/dist/cjs/types/components/date-range-picker/date-range-picker.component.d.ts.map +1 -0
  42. package/dist/cjs/types/components/dropdown-field/dropdown-field.component.d.ts +28 -0
  43. package/dist/cjs/types/components/dropdown-field/dropdown-field.component.d.ts.map +1 -0
  44. package/dist/cjs/types/components/grid/grid.component.d.ts +11 -0
  45. package/dist/cjs/types/components/grid/grid.component.d.ts.map +1 -0
  46. package/dist/cjs/types/components/icon/icon.element.d.ts +12 -0
  47. package/dist/cjs/types/components/icon/icon.element.d.ts.map +1 -0
  48. package/dist/cjs/types/components/icon/index.d.ts +2 -0
  49. package/dist/cjs/types/components/icon/index.d.ts.map +1 -0
  50. package/dist/cjs/types/components/image/image.element.d.ts +13 -0
  51. package/dist/cjs/types/components/image/image.element.d.ts.map +1 -0
  52. package/dist/cjs/types/components/image/image.enum.d.ts +6 -0
  53. package/dist/cjs/types/components/image/image.enum.d.ts.map +1 -0
  54. package/dist/cjs/types/components/image/index.d.ts +3 -0
  55. package/dist/cjs/types/components/image/index.d.ts.map +1 -0
  56. package/dist/cjs/types/components/index.d.ts +48 -0
  57. package/dist/cjs/types/components/index.d.ts.map +1 -0
  58. package/dist/cjs/types/components/input-stepper/input-stepper-skeleton.d.ts +9 -0
  59. package/dist/cjs/types/components/input-stepper/input-stepper-skeleton.d.ts.map +1 -0
  60. package/dist/cjs/types/components/input-stepper/input-stepper.component.d.ts +38 -0
  61. package/dist/cjs/types/components/input-stepper/input-stepper.component.d.ts.map +1 -0
  62. package/dist/cjs/types/components/input-stepper/input-stepper.constant.d.ts +32 -0
  63. package/dist/cjs/types/components/input-stepper/input-stepper.constant.d.ts.map +1 -0
  64. package/dist/cjs/types/components/link/index.d.ts +3 -0
  65. package/dist/cjs/types/components/link/index.d.ts.map +1 -0
  66. package/dist/cjs/types/components/link/link-internal.element.d.ts +9 -0
  67. package/dist/cjs/types/components/link/link-internal.element.d.ts.map +1 -0
  68. package/dist/cjs/types/components/link/link.element.d.ts +8 -0
  69. package/dist/cjs/types/components/link/link.element.d.ts.map +1 -0
  70. package/dist/cjs/types/components/link-field/link-field.component.d.ts +23 -0
  71. package/dist/cjs/types/components/link-field/link-field.component.d.ts.map +1 -0
  72. package/dist/cjs/types/components/modal/index.d.ts +5 -0
  73. package/dist/cjs/types/components/modal/index.d.ts.map +1 -0
  74. package/dist/cjs/types/components/modal/modal-card.component.d.ts +15 -0
  75. package/dist/cjs/types/components/modal/modal-card.component.d.ts.map +1 -0
  76. package/dist/cjs/types/components/modal/modal-content.component.d.ts +16 -0
  77. package/dist/cjs/types/components/modal/modal-content.component.d.ts.map +1 -0
  78. package/dist/cjs/types/components/modal/modal.component.d.ts +11 -0
  79. package/dist/cjs/types/components/modal/modal.component.d.ts.map +1 -0
  80. package/dist/cjs/types/components/modal/modal.interface.d.ts +20 -0
  81. package/dist/cjs/types/components/modal/modal.interface.d.ts.map +1 -0
  82. package/dist/cjs/types/components/money-field/money-field.component.d.ts +24 -0
  83. package/dist/cjs/types/components/money-field/money-field.component.d.ts.map +1 -0
  84. package/dist/cjs/types/components/phone-number-field/phone-number-field.component.d.ts +28 -0
  85. package/dist/cjs/types/components/phone-number-field/phone-number-field.component.d.ts.map +1 -0
  86. package/dist/cjs/types/components/pin/pin.component.d.ts +23 -0
  87. package/dist/cjs/types/components/pin/pin.component.d.ts.map +1 -0
  88. package/dist/cjs/types/components/pin/pin.constant.d.ts +25 -0
  89. package/dist/cjs/types/components/pin/pin.constant.d.ts.map +1 -0
  90. package/dist/cjs/types/components/search-dropdown/search-dropdown.component.d.ts +30 -0
  91. package/dist/cjs/types/components/search-dropdown/search-dropdown.component.d.ts.map +1 -0
  92. package/dist/cjs/types/components/search-field/search-field.component.d.ts +14 -0
  93. package/dist/cjs/types/components/search-field/search-field.component.d.ts.map +1 -0
  94. package/dist/cjs/types/components/switch/switch-content.component.d.ts +14 -0
  95. package/dist/cjs/types/components/switch/switch-content.component.d.ts.map +1 -0
  96. package/dist/cjs/types/components/switch/switch.component.d.ts +12 -0
  97. package/dist/cjs/types/components/switch/switch.component.d.ts.map +1 -0
  98. package/dist/cjs/types/components/tab/tab.component.d.ts +23 -0
  99. package/dist/cjs/types/components/tab/tab.component.d.ts.map +1 -0
  100. package/dist/cjs/types/components/tab/tab.constant.d.ts +15 -0
  101. package/dist/cjs/types/components/tab/tab.constant.d.ts.map +1 -0
  102. package/dist/cjs/types/components/text-area/text-area.component.d.ts +22 -0
  103. package/dist/cjs/types/components/text-area/text-area.component.d.ts.map +1 -0
  104. package/dist/cjs/types/components/text-field/text-field.component.d.ts +21 -0
  105. package/dist/cjs/types/components/text-field/text-field.component.d.ts.map +1 -0
  106. package/dist/cjs/types/components/typography/index.d.ts +2 -0
  107. package/dist/cjs/types/components/typography/index.d.ts.map +1 -0
  108. package/dist/cjs/types/components/typography/typography-limit-one-line.component.d.ts +9 -0
  109. package/dist/cjs/types/components/typography/typography-limit-one-line.component.d.ts.map +1 -0
  110. package/dist/cjs/types/components/uploader/uploader-item.component.d.ts +18 -0
  111. package/dist/cjs/types/components/uploader/uploader-item.component.d.ts.map +1 -0
  112. package/dist/cjs/types/components/uploader/uploader-item.styles.d.ts +53 -0
  113. package/dist/cjs/types/components/uploader/uploader-item.styles.d.ts.map +1 -0
  114. package/dist/cjs/types/components/uploader/uploader.component.d.ts +48 -0
  115. package/dist/cjs/types/components/uploader/uploader.component.d.ts.map +1 -0
  116. package/dist/cjs/types/constants/apps.data.d.ts +7 -0
  117. package/dist/cjs/types/constants/apps.data.d.ts.map +1 -0
  118. package/dist/cjs/types/constants/color.constant.d.ts +105 -0
  119. package/dist/cjs/types/constants/color.constant.d.ts.map +1 -0
  120. package/dist/cjs/types/constants/index.d.ts +5 -0
  121. package/dist/cjs/types/constants/index.d.ts.map +1 -0
  122. package/dist/cjs/types/constants/style.constant.d.ts +58 -0
  123. package/dist/cjs/types/constants/style.constant.d.ts.map +1 -0
  124. package/dist/cjs/types/constants/typography.constant.d.ts +710 -0
  125. package/dist/cjs/types/constants/typography.constant.d.ts.map +1 -0
  126. package/dist/cjs/types/index.d.ts +5 -0
  127. package/dist/cjs/types/index.d.ts.map +1 -0
  128. package/dist/cjs/types/styles/index.d.ts +2 -0
  129. package/dist/cjs/types/styles/index.d.ts.map +1 -0
  130. package/dist/cjs/types/styles/stack.style.d.ts +54 -0
  131. package/dist/cjs/types/styles/stack.style.d.ts.map +1 -0
  132. package/dist/cjs/types/types/index.d.ts +1 -0
  133. package/dist/cjs/types/types/index.d.ts.map +1 -0
  134. package/dist/cjs/types/utils/index.d.ts +2 -0
  135. package/dist/cjs/types/utils/index.d.ts.map +1 -0
  136. package/dist/esm/index.js +3500 -0
  137. package/dist/esm/index.js.map +1 -0
  138. package/dist/esm/types/components/avatar/avatar-group.component.d.ts +20 -0
  139. package/dist/esm/types/components/avatar/avatar-group.component.d.ts.map +1 -0
  140. package/dist/esm/types/components/avatar/avatar-label-group.component.d.ts +11 -0
  141. package/dist/esm/types/components/avatar/avatar-label-group.component.d.ts.map +1 -0
  142. package/dist/esm/types/components/avatar/avatar-profile.component.d.ts +5 -0
  143. package/dist/esm/types/components/avatar/avatar-profile.component.d.ts.map +1 -0
  144. package/dist/esm/types/components/avatar/avatar-user.component.d.ts +14 -0
  145. package/dist/esm/types/components/avatar/avatar-user.component.d.ts.map +1 -0
  146. package/dist/esm/types/components/avatar/avatar.component.d.ts +20 -0
  147. package/dist/esm/types/components/avatar/avatar.component.d.ts.map +1 -0
  148. package/dist/esm/types/components/avatar/avatar.constant.d.ts +35 -0
  149. package/dist/esm/types/components/avatar/avatar.constant.d.ts.map +1 -0
  150. package/dist/esm/types/components/avatar/avatar.interface.d.ts +28 -0
  151. package/dist/esm/types/components/avatar/avatar.interface.d.ts.map +1 -0
  152. package/dist/esm/types/components/avatar/index.d.ts +8 -0
  153. package/dist/esm/types/components/avatar/index.d.ts.map +1 -0
  154. package/dist/esm/types/components/bread-cumbs/bread-crumbs.component.d.ts +21 -0
  155. package/dist/esm/types/components/bread-cumbs/bread-crumbs.component.d.ts.map +1 -0
  156. package/dist/esm/types/components/button/button.component.d.ts +37 -0
  157. package/dist/esm/types/components/button/button.component.d.ts.map +1 -0
  158. package/dist/esm/types/components/button/button.constants.d.ts +33 -0
  159. package/dist/esm/types/components/button/button.constants.d.ts.map +1 -0
  160. package/dist/esm/types/components/button-bar/button-bar.component.d.ts +15 -0
  161. package/dist/esm/types/components/button-bar/button-bar.component.d.ts.map +1 -0
  162. package/dist/esm/types/components/checkbox/checkbox-content.component.d.ts +19 -0
  163. package/dist/esm/types/components/checkbox/checkbox-content.component.d.ts.map +1 -0
  164. package/dist/esm/types/components/checkbox/checkbox.component.d.ts +23 -0
  165. package/dist/esm/types/components/checkbox/checkbox.component.d.ts.map +1 -0
  166. package/dist/esm/types/components/checkbox/checkbox.constant.d.ts +26 -0
  167. package/dist/esm/types/components/checkbox/checkbox.constant.d.ts.map +1 -0
  168. package/dist/esm/types/components/chip/chip.component.d.ts +16 -0
  169. package/dist/esm/types/components/chip/chip.component.d.ts.map +1 -0
  170. package/dist/esm/types/components/chip/chip.constant.d.ts +16 -0
  171. package/dist/esm/types/components/chip/chip.constant.d.ts.map +1 -0
  172. package/dist/esm/types/components/date-field/date-field.component.d.ts +23 -0
  173. package/dist/esm/types/components/date-field/date-field.component.d.ts.map +1 -0
  174. package/dist/esm/types/components/date-range-picker/date-range-picker.component.d.ts +25 -0
  175. package/dist/esm/types/components/date-range-picker/date-range-picker.component.d.ts.map +1 -0
  176. package/dist/esm/types/components/dropdown-field/dropdown-field.component.d.ts +28 -0
  177. package/dist/esm/types/components/dropdown-field/dropdown-field.component.d.ts.map +1 -0
  178. package/dist/esm/types/components/grid/grid.component.d.ts +11 -0
  179. package/dist/esm/types/components/grid/grid.component.d.ts.map +1 -0
  180. package/dist/esm/types/components/icon/icon.element.d.ts +12 -0
  181. package/dist/esm/types/components/icon/icon.element.d.ts.map +1 -0
  182. package/dist/esm/types/components/icon/index.d.ts +2 -0
  183. package/dist/esm/types/components/icon/index.d.ts.map +1 -0
  184. package/dist/esm/types/components/image/image.element.d.ts +13 -0
  185. package/dist/esm/types/components/image/image.element.d.ts.map +1 -0
  186. package/dist/esm/types/components/image/image.enum.d.ts +6 -0
  187. package/dist/esm/types/components/image/image.enum.d.ts.map +1 -0
  188. package/dist/esm/types/components/image/index.d.ts +3 -0
  189. package/dist/esm/types/components/image/index.d.ts.map +1 -0
  190. package/dist/esm/types/components/index.d.ts +48 -0
  191. package/dist/esm/types/components/index.d.ts.map +1 -0
  192. package/dist/esm/types/components/input-stepper/input-stepper-skeleton.d.ts +9 -0
  193. package/dist/esm/types/components/input-stepper/input-stepper-skeleton.d.ts.map +1 -0
  194. package/dist/esm/types/components/input-stepper/input-stepper.component.d.ts +38 -0
  195. package/dist/esm/types/components/input-stepper/input-stepper.component.d.ts.map +1 -0
  196. package/dist/esm/types/components/input-stepper/input-stepper.constant.d.ts +32 -0
  197. package/dist/esm/types/components/input-stepper/input-stepper.constant.d.ts.map +1 -0
  198. package/dist/esm/types/components/link/index.d.ts +3 -0
  199. package/dist/esm/types/components/link/index.d.ts.map +1 -0
  200. package/dist/esm/types/components/link/link-internal.element.d.ts +9 -0
  201. package/dist/esm/types/components/link/link-internal.element.d.ts.map +1 -0
  202. package/dist/esm/types/components/link/link.element.d.ts +8 -0
  203. package/dist/esm/types/components/link/link.element.d.ts.map +1 -0
  204. package/dist/esm/types/components/link-field/link-field.component.d.ts +23 -0
  205. package/dist/esm/types/components/link-field/link-field.component.d.ts.map +1 -0
  206. package/dist/esm/types/components/modal/index.d.ts +5 -0
  207. package/dist/esm/types/components/modal/index.d.ts.map +1 -0
  208. package/dist/esm/types/components/modal/modal-card.component.d.ts +15 -0
  209. package/dist/esm/types/components/modal/modal-card.component.d.ts.map +1 -0
  210. package/dist/esm/types/components/modal/modal-content.component.d.ts +16 -0
  211. package/dist/esm/types/components/modal/modal-content.component.d.ts.map +1 -0
  212. package/dist/esm/types/components/modal/modal.component.d.ts +11 -0
  213. package/dist/esm/types/components/modal/modal.component.d.ts.map +1 -0
  214. package/dist/esm/types/components/modal/modal.interface.d.ts +20 -0
  215. package/dist/esm/types/components/modal/modal.interface.d.ts.map +1 -0
  216. package/dist/esm/types/components/money-field/money-field.component.d.ts +24 -0
  217. package/dist/esm/types/components/money-field/money-field.component.d.ts.map +1 -0
  218. package/dist/esm/types/components/phone-number-field/phone-number-field.component.d.ts +28 -0
  219. package/dist/esm/types/components/phone-number-field/phone-number-field.component.d.ts.map +1 -0
  220. package/dist/esm/types/components/pin/pin.component.d.ts +23 -0
  221. package/dist/esm/types/components/pin/pin.component.d.ts.map +1 -0
  222. package/dist/esm/types/components/pin/pin.constant.d.ts +25 -0
  223. package/dist/esm/types/components/pin/pin.constant.d.ts.map +1 -0
  224. package/dist/esm/types/components/search-dropdown/search-dropdown.component.d.ts +30 -0
  225. package/dist/esm/types/components/search-dropdown/search-dropdown.component.d.ts.map +1 -0
  226. package/dist/esm/types/components/search-field/search-field.component.d.ts +14 -0
  227. package/dist/esm/types/components/search-field/search-field.component.d.ts.map +1 -0
  228. package/dist/esm/types/components/switch/switch-content.component.d.ts +14 -0
  229. package/dist/esm/types/components/switch/switch-content.component.d.ts.map +1 -0
  230. package/dist/esm/types/components/switch/switch.component.d.ts +12 -0
  231. package/dist/esm/types/components/switch/switch.component.d.ts.map +1 -0
  232. package/dist/esm/types/components/tab/tab.component.d.ts +23 -0
  233. package/dist/esm/types/components/tab/tab.component.d.ts.map +1 -0
  234. package/dist/esm/types/components/tab/tab.constant.d.ts +15 -0
  235. package/dist/esm/types/components/tab/tab.constant.d.ts.map +1 -0
  236. package/dist/esm/types/components/text-area/text-area.component.d.ts +22 -0
  237. package/dist/esm/types/components/text-area/text-area.component.d.ts.map +1 -0
  238. package/dist/esm/types/components/text-field/text-field.component.d.ts +21 -0
  239. package/dist/esm/types/components/text-field/text-field.component.d.ts.map +1 -0
  240. package/dist/esm/types/components/typography/index.d.ts +2 -0
  241. package/dist/esm/types/components/typography/index.d.ts.map +1 -0
  242. package/dist/esm/types/components/typography/typography-limit-one-line.component.d.ts +9 -0
  243. package/dist/esm/types/components/typography/typography-limit-one-line.component.d.ts.map +1 -0
  244. package/dist/esm/types/components/uploader/uploader-item.component.d.ts +18 -0
  245. package/dist/esm/types/components/uploader/uploader-item.component.d.ts.map +1 -0
  246. package/dist/esm/types/components/uploader/uploader-item.styles.d.ts +53 -0
  247. package/dist/esm/types/components/uploader/uploader-item.styles.d.ts.map +1 -0
  248. package/dist/esm/types/components/uploader/uploader.component.d.ts +48 -0
  249. package/dist/esm/types/components/uploader/uploader.component.d.ts.map +1 -0
  250. package/dist/esm/types/constants/apps.data.d.ts +7 -0
  251. package/dist/esm/types/constants/apps.data.d.ts.map +1 -0
  252. package/dist/esm/types/constants/color.constant.d.ts +105 -0
  253. package/dist/esm/types/constants/color.constant.d.ts.map +1 -0
  254. package/dist/esm/types/constants/index.d.ts +5 -0
  255. package/dist/esm/types/constants/index.d.ts.map +1 -0
  256. package/dist/esm/types/constants/style.constant.d.ts +58 -0
  257. package/dist/esm/types/constants/style.constant.d.ts.map +1 -0
  258. package/dist/esm/types/constants/typography.constant.d.ts +710 -0
  259. package/dist/esm/types/constants/typography.constant.d.ts.map +1 -0
  260. package/dist/esm/types/index.d.ts +5 -0
  261. package/dist/esm/types/index.d.ts.map +1 -0
  262. package/dist/esm/types/styles/index.d.ts +2 -0
  263. package/dist/esm/types/styles/index.d.ts.map +1 -0
  264. package/dist/esm/types/styles/stack.style.d.ts +54 -0
  265. package/dist/esm/types/styles/stack.style.d.ts.map +1 -0
  266. package/dist/esm/types/types/index.d.ts +1 -0
  267. package/dist/esm/types/types/index.d.ts.map +1 -0
  268. package/dist/esm/types/utils/index.d.ts +2 -0
  269. package/dist/esm/types/utils/index.d.ts.map +1 -0
  270. package/dist/types/components/avatar/avatar-group.component.d.ts +20 -0
  271. package/dist/types/components/avatar/avatar-group.component.d.ts.map +1 -0
  272. package/dist/types/components/avatar/avatar-label-group.component.d.ts +11 -0
  273. package/dist/types/components/avatar/avatar-label-group.component.d.ts.map +1 -0
  274. package/dist/types/components/avatar/avatar-profile.component.d.ts +4 -0
  275. package/dist/types/components/avatar/avatar-profile.component.d.ts.map +1 -0
  276. package/dist/types/components/avatar/avatar-user.component.d.ts +14 -0
  277. package/dist/types/components/avatar/avatar-user.component.d.ts.map +1 -0
  278. package/dist/types/components/avatar/avatar.component.d.ts +20 -0
  279. package/dist/types/components/avatar/avatar.component.d.ts.map +1 -0
  280. package/dist/types/components/avatar/avatar.constant.d.ts +35 -0
  281. package/dist/types/components/avatar/avatar.constant.d.ts.map +1 -0
  282. package/dist/types/components/avatar/avatar.interface.d.ts +28 -0
  283. package/dist/types/components/avatar/avatar.interface.d.ts.map +1 -0
  284. package/dist/types/components/bread-cumbs/bread-crumbs.component.d.ts +21 -0
  285. package/dist/types/components/bread-cumbs/bread-crumbs.component.d.ts.map +1 -0
  286. package/dist/types/components/button/button.component.d.ts +38 -0
  287. package/dist/types/components/button/button.component.d.ts.map +1 -0
  288. package/dist/types/components/button/button.constants.d.ts +33 -0
  289. package/dist/types/components/button/button.constants.d.ts.map +1 -0
  290. package/dist/types/components/button-bar/button-bar.component.d.ts +15 -0
  291. package/dist/types/components/button-bar/button-bar.component.d.ts.map +1 -0
  292. package/dist/types/components/checkbox/checkbox-content.component.d.ts +19 -0
  293. package/dist/types/components/checkbox/checkbox-content.component.d.ts.map +1 -0
  294. package/dist/types/components/checkbox/checkbox.component.d.ts +22 -0
  295. package/dist/types/components/checkbox/checkbox.component.d.ts.map +1 -0
  296. package/dist/types/components/checkbox/checkbox.constant.d.ts +26 -0
  297. package/dist/types/components/checkbox/checkbox.constant.d.ts.map +1 -0
  298. package/dist/types/components/chip/chip.component.d.ts +15 -0
  299. package/dist/types/components/chip/chip.component.d.ts.map +1 -0
  300. package/dist/types/components/chip/chip.constant.d.ts +16 -0
  301. package/dist/types/components/chip/chip.constant.d.ts.map +1 -0
  302. package/dist/types/components/date-field/date-field.component.d.ts +23 -0
  303. package/dist/types/components/date-field/date-field.component.d.ts.map +1 -0
  304. package/dist/types/components/date-range-picker/date-range-picker.component.d.ts +25 -0
  305. package/dist/types/components/date-range-picker/date-range-picker.component.d.ts.map +1 -0
  306. package/dist/types/components/dropdown-field/dropdown-field.component.d.ts +28 -0
  307. package/dist/types/components/dropdown-field/dropdown-field.component.d.ts.map +1 -0
  308. package/dist/types/components/grid/grid.component.d.ts +11 -0
  309. package/dist/types/components/grid/grid.component.d.ts.map +1 -0
  310. package/dist/types/components/icon/icon.element.d.ts +12 -0
  311. package/dist/types/components/icon/icon.element.d.ts.map +1 -0
  312. package/dist/types/components/icon/index.d.ts +2 -0
  313. package/dist/types/components/icon/index.d.ts.map +1 -0
  314. package/dist/types/components/image/image.element.d.ts +13 -0
  315. package/dist/types/components/image/image.element.d.ts.map +1 -0
  316. package/dist/types/components/image/image.enum.d.ts +6 -0
  317. package/dist/types/components/image/image.enum.d.ts.map +1 -0
  318. package/dist/types/components/image/index.d.ts +3 -0
  319. package/dist/types/components/image/index.d.ts.map +1 -0
  320. package/dist/types/components/index.d.ts +28 -0
  321. package/dist/types/components/index.d.ts.map +1 -0
  322. package/dist/types/components/input-stepper/input-stepper-skeleton.d.ts +9 -0
  323. package/dist/types/components/input-stepper/input-stepper-skeleton.d.ts.map +1 -0
  324. package/dist/types/components/input-stepper/input-stepper.component.d.ts +37 -0
  325. package/dist/types/components/input-stepper/input-stepper.component.d.ts.map +1 -0
  326. package/dist/types/components/input-stepper/input-stepper.constant.d.ts +32 -0
  327. package/dist/types/components/input-stepper/input-stepper.constant.d.ts.map +1 -0
  328. package/dist/types/components/link/index.d.ts +3 -0
  329. package/dist/types/components/link/index.d.ts.map +1 -0
  330. package/dist/types/components/link/link-internal.element.d.ts +9 -0
  331. package/dist/types/components/link/link-internal.element.d.ts.map +1 -0
  332. package/dist/types/components/link/link.element.d.ts +8 -0
  333. package/dist/types/components/link/link.element.d.ts.map +1 -0
  334. package/dist/types/components/link-field/link-field.component.d.ts +23 -0
  335. package/dist/types/components/link-field/link-field.component.d.ts.map +1 -0
  336. package/dist/types/components/modal/modal-card.component.d.ts +15 -0
  337. package/dist/types/components/modal/modal-card.component.d.ts.map +1 -0
  338. package/dist/types/components/modal/modal-content.component.d.ts +16 -0
  339. package/dist/types/components/modal/modal-content.component.d.ts.map +1 -0
  340. package/dist/types/components/modal/modal.component.d.ts +11 -0
  341. package/dist/types/components/modal/modal.component.d.ts.map +1 -0
  342. package/dist/types/components/modal/modal.interface.d.ts +20 -0
  343. package/dist/types/components/modal/modal.interface.d.ts.map +1 -0
  344. package/dist/types/components/money-field/money-field.component.d.ts +24 -0
  345. package/dist/types/components/money-field/money-field.component.d.ts.map +1 -0
  346. package/dist/types/components/phone-number-field/phone-number-field.component.d.ts +28 -0
  347. package/dist/types/components/phone-number-field/phone-number-field.component.d.ts.map +1 -0
  348. package/dist/types/components/pin/pin.component.d.ts +23 -0
  349. package/dist/types/components/pin/pin.component.d.ts.map +1 -0
  350. package/dist/types/components/pin/pin.constant.d.ts +25 -0
  351. package/dist/types/components/pin/pin.constant.d.ts.map +1 -0
  352. package/dist/types/components/search-dropdown/search-dropdown.component.d.ts +30 -0
  353. package/dist/types/components/search-dropdown/search-dropdown.component.d.ts.map +1 -0
  354. package/dist/types/components/search-field/search-field.component.d.ts +14 -0
  355. package/dist/types/components/search-field/search-field.component.d.ts.map +1 -0
  356. package/dist/types/components/switch/switch-content.component.d.ts +13 -0
  357. package/dist/types/components/switch/switch-content.component.d.ts.map +1 -0
  358. package/dist/types/components/switch/switch.component.d.ts +12 -0
  359. package/dist/types/components/switch/switch.component.d.ts.map +1 -0
  360. package/dist/types/components/tab/tab.component.d.ts +22 -0
  361. package/dist/types/components/tab/tab.component.d.ts.map +1 -0
  362. package/dist/types/components/tab/tab.constant.d.ts +15 -0
  363. package/dist/types/components/tab/tab.constant.d.ts.map +1 -0
  364. package/dist/types/components/text-area/text-area.component.d.ts +22 -0
  365. package/dist/types/components/text-area/text-area.component.d.ts.map +1 -0
  366. package/dist/types/components/text-field/text-field.component.d.ts +21 -0
  367. package/dist/types/components/text-field/text-field.component.d.ts.map +1 -0
  368. package/dist/types/components/typography/index.d.ts +2 -0
  369. package/dist/types/components/typography/index.d.ts.map +1 -0
  370. package/dist/types/components/typography/typography-limit-one-line.component.d.ts +9 -0
  371. package/dist/types/components/typography/typography-limit-one-line.component.d.ts.map +1 -0
  372. package/dist/types/components/uploader/uploader-item.component.d.ts +17 -0
  373. package/dist/types/components/uploader/uploader-item.component.d.ts.map +1 -0
  374. package/dist/types/components/uploader/uploader-item.styles.d.ts +53 -0
  375. package/dist/types/components/uploader/uploader-item.styles.d.ts.map +1 -0
  376. package/dist/types/components/uploader/uploader.component.d.ts +48 -0
  377. package/dist/types/components/uploader/uploader.component.d.ts.map +1 -0
  378. package/dist/types/constants/apps.data.d.ts +7 -0
  379. package/dist/types/constants/apps.data.d.ts.map +1 -0
  380. package/dist/types/constants/color.constant.d.ts +105 -0
  381. package/dist/types/constants/color.constant.d.ts.map +1 -0
  382. package/dist/types/constants/index.d.ts +5 -0
  383. package/dist/types/constants/index.d.ts.map +1 -0
  384. package/dist/types/constants/style.constant.d.ts +58 -0
  385. package/dist/types/constants/style.constant.d.ts.map +1 -0
  386. package/dist/types/constants/typography.constant.d.ts +710 -0
  387. package/dist/types/constants/typography.constant.d.ts.map +1 -0
  388. package/dist/types/index.d.ts +5 -0
  389. package/dist/types/index.d.ts.map +1 -0
  390. package/dist/types/styles/index.d.ts +2 -0
  391. package/dist/types/styles/index.d.ts.map +1 -0
  392. package/dist/types/styles/stack.style.d.ts +54 -0
  393. package/dist/types/styles/stack.style.d.ts.map +1 -0
  394. package/dist/types/types/index.d.ts +1 -0
  395. package/dist/types/types/index.d.ts.map +1 -0
  396. package/dist/types/utils/index.d.ts +2 -0
  397. package/dist/types/utils/index.d.ts.map +1 -0
  398. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/components/avatar/avatar.constant.tsx","../../src/constants/apps.data.ts","../../src/constants/color.constant.ts","../../src/constants/style.constant.ts","../../src/constants/typography.constant.ts","../../src/styles/stack.style.tsx","../../src/components/image/image.enum.tsx","../../src/components/image/image.element.tsx","../../src/components/avatar/avatar-profile.component.tsx","../../src/components/avatar/avatar.component.tsx","../../src/components/icon/icon.element.tsx","../../src/components/avatar/avatar-group.component.tsx","../../src/components/avatar/avatar-label-group.component.tsx","../../src/components/typography/typography-limit-one-line.component.tsx","../../src/components/avatar/avatar-user.component.tsx","../../src/components/bread-cumbs/bread-crumbs.component.tsx","../../src/components/button/button.constants.ts","../../src/components/button/button.component.tsx","../../src/components/button-bar/button-bar.component.tsx","../../src/components/checkbox/checkbox.constant.tsx","../../src/components/checkbox/checkbox.component.tsx","../../src/components/chip/chip.constant.tsx","../../src/components/chip/chip.component.tsx","../../src/components/date-field/date-field.component.tsx","../../src/components/date-range-picker/date-range-picker.component.tsx","../../src/components/dropdown-field/dropdown-field.component.tsx","../../src/components/grid/grid.component.tsx","../../src/components/input-stepper/input-stepper.constant.tsx","../../src/components/input-stepper/input-stepper-skeleton.tsx","../../src/components/input-stepper/input-stepper.component.tsx","../../src/components/link/link-internal.element.tsx","../../src/components/link/link.element.tsx","../../src/components/link-field/link-field.component.tsx","../../src/components/modal/modal-content.component.tsx","../../src/components/modal/modal.component.tsx","../../src/components/modal/modal-card.component.tsx","../../src/components/money-field/money-field.component.tsx","../../src/components/phone-number-field/phone-number-field.component.tsx","../../src/components/pin/pin.constant.tsx","../../src/components/pin/pin.component.tsx","../../src/components/search-dropdown/search-dropdown.component.tsx","../../src/components/search-field/search-field.component.tsx","../../src/components/switch/switch.component.tsx","../../src/components/tab/tab.constant.tsx","../../src/components/tab/tab.component.tsx","../../src/components/text-area/text-area.component.tsx","../../src/components/text-field/text-field.component.tsx","../../src/components/uploader/uploader-item.styles.ts","../../src/components/uploader/uploader-item.component.tsx","../../src/components/uploader/uploader.component.tsx"],"sourcesContent":["import { BadgePositionStyles } from './avatar.interface';\r\n\r\nexport const AVATAR_SIZES = {\r\n xs: 24,\r\n sm: 32,\r\n md: 40,\r\n lg: 48,\r\n xl: 56,\r\n '2xl': 64,\r\n};\r\nexport const BADGE_SIZES = {\r\n xs: 8,\r\n sm: 10,\r\n md: 12,\r\n lg: 14,\r\n xl: 16,\r\n '2xl': 18,\r\n};\r\n\r\nexport const BADGE_FONT_SIZES = {\r\n xs: 4,\r\n sm: 5,\r\n md: 6,\r\n lg: 7,\r\n xl: 8,\r\n '2xl': 9,\r\n};\r\n\r\nexport type AvatarSize = keyof typeof AVATAR_SIZES;\r\n\r\nexport type BadgePosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\r\n\r\nexport const getBadgePosition = (position: BadgePosition): BadgePositionStyles => {\r\n const positions: Record<BadgePosition, BadgePositionStyles> = {\r\n 'top-left': { top: 0, left: 0 },\r\n 'top-right': { top: 0, right: 0 },\r\n 'top-center': { top: 0, left: '50%', transform: 'translateX(-50%)' },\r\n 'bottom-left': { bottom: 0, left: 0 },\r\n 'bottom-right': { bottom: 0, right: 0 },\r\n 'bottom-center': { bottom: 0, left: '50%', transform: 'translateX(-50%)' },\r\n };\r\n return positions[position];\r\n};\r\nexport enum AvatarColor {\r\n BACKGROUND_COLOR_BADGE = '#000000',\r\n COLOR_BADGE = '#FFFFFF',\r\n COLOR_TITLE = '#414651',\r\n COLOR_DESCRIPTION = '#535862',\r\n}\r\n","\r\nconst SIZE_LARGE = 32;\r\nconst SIZE_MEDIUM = 26;\r\nconst SIZE_SMALL = 18;\r\nconst SIZE_EXTRA_SMALL = 20;\r\nconst SIZE_AVATAR_GROUP = 80;\r\nexport const SIZE_EXTRA_LARGE = 36;\r\n\r\nexport type SizeProps = 'extra_small' | 'small' | 'medium' | 'large' | 'extra_large' | 'avatar_group';\r\n\r\nexport const MAP_SIZE: Record<string, { width: number; height: number }> = {\r\n large: { width: SIZE_LARGE, height: SIZE_LARGE },\r\n medium: { width: SIZE_MEDIUM, height: SIZE_MEDIUM },\r\n small: { width: SIZE_SMALL, height: SIZE_SMALL },\r\n extra_small: { width: SIZE_EXTRA_SMALL, height: SIZE_EXTRA_SMALL },\r\n extra_large: { width: SIZE_EXTRA_LARGE, height: SIZE_EXTRA_LARGE },\r\n avatar_group: { width: SIZE_AVATAR_GROUP, height: SIZE_AVATAR_GROUP },\r\n};\r\n","\r\n// Brand Colors\r\nexport const COLOR_BRAND = {\r\n 50: '#EDFFFA',\r\n 100: '#C3FFF2',\r\n 200: '#87FFEB',\r\n 300: '#42FFDC',\r\n 400: '#0CF5CA',\r\n 500: '#00D8B2',\r\n 600: '#00AF93',\r\n 700: '#008A77',\r\n 800: '#026D60',\r\n 900: '#07554B',\r\n 950: '#003733',\r\n};\r\n\r\n// Neutral Colors\r\nexport const COLOR_NEUTRAL = {\r\n 50: '#FAFAFA',\r\n 100: '#F5F5F5',\r\n 200: '#E5E5E5',\r\n 300: '#D4D4D4',\r\n 400: '#A3A3A3',\r\n 500: '#737373',\r\n 600: '#525252',\r\n 700: '#404040',\r\n 800: '#202626',\r\n 900: '#171717',\r\n 950: '#0A0A0A',\r\n};\r\n\r\n// Gray Colors\r\nexport const COLOR_GRAY = {\r\n 50: '#F9AFAB',\r\n 100: '#F3F4F6',\r\n 200: '#E5E7EB',\r\n 300: '#DDD5DB',\r\n 400: '#9CA3AF',\r\n 500: '#6B7280',\r\n 600: '#4B5563',\r\n 700: '#374151',\r\n 800: '#1F2937',\r\n 900: '#111827',\r\n 950: '#030712',\r\n};\r\n\r\n// Error Colors\r\nexport const COLOR_ERROR = {\r\n 50: '#FEF2F2',\r\n 100: '#FEE2E2',\r\n 200: '#FECACA',\r\n 300: '#FCASA5',\r\n 400: '#F87171',\r\n 500: '#EF4444',\r\n 600: '#DC2626',\r\n 700: '#B91C1C',\r\n 800: '#991B1B',\r\n 900: '#7F1D1D',\r\n 950: '#450A0A',\r\n};\r\n\r\n// Warning Colors\r\nexport const COLOR_WARNING = {\r\n 50: '#FFEEB8',\r\n 100: '#FFDD93',\r\n 200: '#FFD08A',\r\n 300: '#FDE047',\r\n 400: '#FACC15',\r\n 500: '#EAB308',\r\n 600: '#CA8A04',\r\n 700: '#A16207',\r\n 800: '#854D0E',\r\n 900: '#713F12',\r\n 950: '#422006',\r\n};\r\n\r\n// Success Colors\r\nexport const COLOR_SUCCESS = {\r\n 50: '#F0FDF4',\r\n 100: '#DCFCE7',\r\n 200: '#BBF7D0',\r\n 300: '#A6E96C',\r\n 400: '#4ADE80',\r\n 500: '#22C55E',\r\n 600: '#16A34A',\r\n 700: '#15803D',\r\n 800: '#166534',\r\n 900: '#14532D',\r\n 950: '#052E16',\r\n};\r\n\r\n// Info Colors\r\nexport const COLOR_INFO = {\r\n 50: '#EFF8FF',\r\n 100: '#0B8AFF',\r\n 200: '#BFD8FE',\r\n 300: '#93C5FD',\r\n 400: '#60A5FA',\r\n 500: '#3B82F6',\r\n 600: '#2563EB',\r\n 700: '#1D4ED8',\r\n 800: '#1E40AF',\r\n 900: '#1E3A8A',\r\n 950: '#172554',\r\n};\r\n\r\n// Accent Colors\r\nexport const COLOR_ACCENT = {\r\n 50: '#F3F3FF',\r\n 100: '#F9F9FF',\r\n 200: '#DDD6FE',\r\n 300: '#C4B5FD',\r\n 400: '#A78BFA',\r\n 500: '#8B5CF6',\r\n 600: '#7C3AED',\r\n 700: '#6D28D9',\r\n 800: '#5B21B6',\r\n 900: '#4C1D95',\r\n 950: '#2E1065',\r\n};\r\n","// CÁC THÔNG SỐ CÙNG GROUP CÓ TỶ LỆ VỚI NHAU\r\n\r\nimport { TypographyVariant } from '@mui/material/styles';\r\n\r\n//\r\n\r\nexport const ANIMATION_TIME = 300;\r\n\r\nexport const SCALE_VALUE = 'scale(1.05)';\r\n\r\nexport const TRANSITION_TIME = '0.2s';\r\n\r\n//\r\n\r\nexport const WIDTH_LAYOUT_DESKTOP = `1200px`;\r\n\r\nexport const HEIGHT_LOGO_DEFAULT = '40px';\r\n\r\nexport const HEIGHT_IMAGE_DEFAULT = '40px';\r\n\r\n//\r\n\r\nexport const PADDING_GAP_TAB = '24px';\r\n\r\nexport const PADDING_GAP_LAYOUT = '16px';\r\n\r\nexport const PADDING_GAP_BUTTON = '12px';\r\n\r\nexport const PADDING_LAYOUT_HEADER = '8px 12px';\r\n\r\nexport const PADDING_GAP_ITEM = '8px';\r\n\r\nexport const PADDING_GAP_ITEM_SMALL = '6px';\r\n\r\n//\r\n\r\nexport const HEIGHT_ELEMENT_OTHER = '36px';\r\n\r\n//\r\n\r\nexport const BORDER_RADIUS_ELEMENT_ACTION = '24px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_WRAPPER = '12px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT = '10px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_SMALL = '6px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_MIDDLE = '8px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_TAG = '3px';\r\n\r\nexport const HEIGHT_DEFAULT_TEXT_FIELD_BUTTON = '37.13px';\r\n\r\n//\r\n\r\nexport const TEXT_FIELD = {\r\n FONT_SIZE_LABEL: 15,\r\n FONT_SIZE_TITLE: 18,\r\n FONT_SIZE_CAPTION: 10,\r\n};\r\n\r\nexport const FONT_SIZE_ICON = {\r\n large: '22px',\r\n xl: '20px',\r\n medium: '19px',\r\n small: '12px',\r\n};\r\n\r\nexport const FONT_SIZE_LOADING = {\r\n large: 40,\r\n medium: 22.5,\r\n small: 16,\r\n};\r\n\r\nexport const VARIANT_BY_SIZE: { [key: string]: TypographyVariant } = {\r\n large: 'h6',\r\n medium: 'subtitle1',\r\n small: 'caption',\r\n};\r\n\r\nexport const GAP_ICON_CONTENT_BY_SIZE = {\r\n large: '12px',\r\n medium: '8px',\r\n small: '4px',\r\n};\r\n\r\nexport const BORDER_COLOR_CARD = 'rgba(0, 0, 0, 0.12)';\r\n\r\nexport const BORDER_COLOR_LAYOUT = '#E4E6E6';\r\n\r\nexport const HEIGHT_HEADER = 57;\r\nexport const WIDTH_COLLAPSE = 55;\r\nexport const WIDTH_SIDEBAR = 224;\r\nexport const WIDTH_SIDEBAR_EXPAND = 200;\r\n\r\nexport const BACKGROUND_SYSTEM = '#F2F2F2';\r\n\r\nexport const WIDTH_TEXT_FIELD = {\r\n large: 300,\r\n medium: 200,\r\n small: 100,\r\n};\r\n","export const FONT_FAMILY = {\r\n primary: 'Inter, sans-serif',\r\n};\r\n\r\nexport const FONT_SIZE = {\r\n '5xl': '48px',\r\n '4xl': '32px',\r\n '3xl': '28px',\r\n '2xl': '24px',\r\n xl: '20px',\r\n lg: '18px',\r\n md: '16px',\r\n base: '14px',\r\n sm: '12px',\r\n xs: '10px',\r\n} as const;\r\n\r\nexport const FONT_WEIGHT = {\r\n bold: 700,\r\n semiBold: 600,\r\n medium: 500,\r\n regular: 400,\r\n} as const;\r\n\r\nexport const LINE_HEIGHT = {\r\n tight: 1.2,\r\n normal: 1.5,\r\n relaxed: 1.75,\r\n loose: 2,\r\n} as const;\r\n\r\nexport const FONT_STYLE = {\r\n normal: 'normal',\r\n underline: 'underline',\r\n strikethrough: 'line-through',\r\n} as const;\r\n\r\n// Helper function to combine typography styles\r\nexport const createTypography = (\r\n fontSize: string | number,\r\n fontWeight?: number,\r\n lineHeight?: number,\r\n fontStyle?: string,\r\n) => ({\r\n fontFamily: FONT_FAMILY.primary,\r\n fontSize: typeof fontSize === 'number' ? `${fontSize}px` : fontSize,\r\n fontWeight: fontWeight ?? FONT_WEIGHT.regular,\r\n lineHeight: lineHeight ?? LINE_HEIGHT.normal,\r\n fontStyle: fontStyle ?? FONT_STYLE.normal,\r\n});\r\n\r\n// Preset typography styles\r\nexport const TYPOGRAPHY = {\r\n h1: createTypography(FONT_SIZE['5xl'], FONT_WEIGHT.bold),\r\n h2: createTypography(FONT_SIZE['4xl'], FONT_WEIGHT.bold),\r\n h3: createTypography(FONT_SIZE['3xl'], FONT_WEIGHT.bold),\r\n h4: createTypography(FONT_SIZE['2xl'], FONT_WEIGHT.bold),\r\n h5: createTypography(FONT_SIZE['xl'], FONT_WEIGHT.bold),\r\n h6: createTypography(FONT_SIZE['lg'], FONT_WEIGHT.bold),\r\n body: createTypography(FONT_SIZE['md'], FONT_WEIGHT.regular),\r\n caption: createTypography(FONT_SIZE['sm'], FONT_WEIGHT.regular),\r\n\r\n // 14px combinations\r\n text14Medium: createTypography(FONT_SIZE.base, FONT_WEIGHT.medium),\r\n text14Regular: createTypography(FONT_SIZE.base, FONT_WEIGHT.regular),\r\n text14SemiBold: createTypography(FONT_SIZE.base, FONT_WEIGHT.semiBold),\r\n text14Bold: createTypography(FONT_SIZE.base, FONT_WEIGHT.bold),\r\n\r\n // 12px combinations\r\n text12Medium: createTypography(FONT_SIZE.sm, FONT_WEIGHT.medium),\r\n text12Regular: createTypography(FONT_SIZE.sm, FONT_WEIGHT.regular),\r\n text12SemiBold: createTypography(FONT_SIZE.sm, FONT_WEIGHT.semiBold),\r\n text12Bold: createTypography(FONT_SIZE.sm, FONT_WEIGHT.bold),\r\n\r\n // 10px combinations\r\n text10Medium: createTypography(FONT_SIZE.xs, FONT_WEIGHT.medium),\r\n text10Regular: createTypography(FONT_SIZE.xs, FONT_WEIGHT.regular),\r\n text10SemiBold: createTypography(FONT_SIZE.xs, FONT_WEIGHT.semiBold),\r\n text10Bold: createTypography(FONT_SIZE.xs, FONT_WEIGHT.bold),\r\n\r\n // Custom TextField variants\r\n textFieldLabel: createTypography(FONT_SIZE.base, FONT_WEIGHT.medium, LINE_HEIGHT.relaxed),\r\n textFieldHelper: createTypography(FONT_SIZE.sm, FONT_WEIGHT.regular, LINE_HEIGHT.relaxed),\r\n} as const;\r\n\r\n/**\r\n * ============================================\r\n * CÁCH SỬ DỤNG TYPOGRAPHY\r\n * ============================================\r\n *\r\n * 1. Sử dụng TYPOGRAPHY presets trực tiếp:\r\n * ----\r\n * import { TYPOGRAPHY } from '@/common/constant/typography.constant';\r\n *\r\n * <Text style={TYPOGRAPHY.h1}>Heading 1</Text>\r\n * <Text style={TYPOGRAPHY.text14Medium}>14px Medium</Text>\r\n * <Text style={TYPOGRAPHY.text12Bold}>12px Bold</Text>\r\n *\r\n * 2. Kết hợp với các styles khác (CSS-in-JS):\r\n * ----\r\n * const styles = {\r\n * title: {\r\n * ...TYPOGRAPHY.h2,\r\n * color: '#07554B',\r\n * marginBottom: '16px',\r\n * }\r\n * };\r\n *\r\n * 3. Sử dụng hàm createTypography để tạo custom style:\r\n * ----\r\n * import { createTypography, FONT_SIZE, FONT_WEIGHT, LINE_HEIGHT } from '@/common/constant/typography.constant';\r\n *\r\n * const customStyle = createTypography(\r\n * FONT_SIZE.lg, // 18px\r\n * FONT_WEIGHT.semiBold, // 600\r\n * LINE_HEIGHT.relaxed, // 1.75\r\n * 'underline' // style\r\n * );\r\n * <Text style={customStyle}>Custom Text</Text>\r\n *\r\n * 4. Sử dụng từng hằng số riêng lẻ:\r\n * ----\r\n * import { FONT_SIZE, FONT_WEIGHT, LINE_HEIGHT } from '@/common/constant/typography.constant';\r\n *\r\n * <Text style={{\r\n * fontSize: FONT_SIZE.md,\r\n * fontWeight: FONT_WEIGHT.bold,\r\n * lineHeight: LINE_HEIGHT.loose,\r\n * }}>\r\n * Custom Combination\r\n * </Text>\r\n *\r\n * 5. Dùng trong Styled Components / Emotion:\r\n * ----\r\n * import styled from 'styled-components';\r\n * import { TYPOGRAPHY } from '@/common/constant/typography.constant';\r\n *\r\n * const Title = styled.h1`\r\n * ${TYPOGRAPHY.h1}\r\n * color: #07554B;\r\n * `;\r\n */\r\nexport const TYPOGRAPHY_STYLES = {\r\n '2xl': {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n xl: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n lg: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n md: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n sm: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n xs: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textXl: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textLg: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textMd: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textSm: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textXs: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textSmall: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: 0.1,\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: 0.1,\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: 0.1,\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n};\r\n","import { STYLE } from '@/constants';\r\nimport { LinearProgress, linearProgressClasses, Stack, TableCell, tableCellClasses } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\nexport const StackRow = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n}));\r\n\r\nexport const StackWrap = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n}));\r\n\r\nexport const StackRowAlignCenter = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n}));\r\n\r\nexport const StackRowAlignEnd = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n}));\r\n\r\nexport const StackRowJustCenter = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n}));\r\n\r\nexport const StackRowJustAround = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'space-around',\r\n}));\r\n\r\nexport const StackRowAlignJustCenter = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n}));\r\n\r\nexport const StackRowAlignCenterJustEnd = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n}));\r\n\r\nexport const StackRowJustEnd = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'flex-end',\r\n}));\r\n\r\nexport const StackRowJustBetween = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n}));\r\n\r\nexport const StackRowAlignCenterJustBetween = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n}));\r\n\r\nexport const StackRowAlignStartJustBetween = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n}));\r\n\r\nexport const StackBgDefaultBorRadLayCol = styled(Stack)(({ theme }) => ({\r\n backgroundColor: theme.palette.background.default,\r\n padding: STYLE.PADDING_GAP_LAYOUT,\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT,\r\n}));\r\n\r\nexport const StackBgPaperBorRadLayCol = styled(Stack)(({ theme }) => ({\r\n backgroundColor: theme.palette.background.paper,\r\n padding: STYLE.PADDING_GAP_LAYOUT,\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT,\r\n}));\r\n\r\nexport const StackLabel = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n marginRight: STYLE.PADDING_GAP_ITEM_SMALL,\r\n gap: STYLE.PADDING_GAP_ITEM_SMALL,\r\n}));\r\n\r\nexport const SmallIcon = styled(Stack)(({ theme }) => ({\r\n border: `1px solid ${theme.palette.common.white}`,\r\n borderRadius: '50%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n background: theme.palette.background.paper,\r\n width: 16,\r\n height: 16,\r\n}));\r\n\r\nexport const StackTabs = styled(Stack)(({ theme }) => ({\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT_TAG,\r\n // padding: '6px',\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: theme.shadows[1],\r\n width: 'fit-content',\r\n gap: 'unset',\r\n}));\r\n\r\nexport const StyledTableCell = styled(TableCell)(({ theme }) => ({\r\n [`&.${tableCellClasses.head}`]: {\r\n backgroundColor: '#008A77',\r\n color: theme.palette.common.white,\r\n fontWeight: 600,\r\n },\r\n [`&.${tableCellClasses.body}`]: {\r\n fontSize: 14,\r\n },\r\n '&:first-of-type': {\r\n borderBottomLeftRadius: '0 !important',\r\n },\r\n '&:last-child': {\r\n borderBottomRightRadius: '0 !important',\r\n },\r\n}));\r\n\r\nexport const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({\r\n height: 10,\r\n borderRadius: 5,\r\n [`&.${linearProgressClasses.colorPrimary}`]: {\r\n backgroundColor: theme.palette.grey[200],\r\n ...theme.applyStyles('dark', {\r\n backgroundColor: theme.palette.grey[800],\r\n }),\r\n },\r\n [`& .${linearProgressClasses.bar}`]: {\r\n borderRadius: 5,\r\n backgroundColor: theme.palette.primary,\r\n },\r\n}));\r\n","export enum ImageSizeType {\r\n CIRCLE = 'CIRCLE',\r\n SQUARE = 'SQUARE',\r\n FULL_WIDTH = 'FULL_WIDTH',\r\n}\r\n","import { Box, type BoxProps, Skeleton, useTheme } from '@mui/material';\r\nimport React, { type ReactNode, useState } from 'react';\r\nimport { StackRow } from '../../styles/stack.style';\r\nimport { ImageSizeType } from './image.enum';\r\nimport { SizeProps, STYLE, MAP_SIZE } from '@/constants';\r\n\r\nexport interface ImageElementProps extends BoxProps {\r\n url: string;\r\n isBorder?: boolean;\r\n isWrap?: boolean;\r\n sizeType?: ImageSizeType;\r\n size?: SizeProps;\r\n}\r\n\r\nconst ImageWrapper: React.FC<{ isWrap: boolean; children: ReactNode }> = ({ isWrap = false, children }) => {\r\n return isWrap ? (\r\n <StackRow alignItems=\"center\" className=\"jsdsdj\">\r\n {children}\r\n </StackRow>\r\n ) : (\r\n <>{children}</>\r\n );\r\n};\r\n\r\nexport const ImageElement: React.FC<ImageElementProps> = ({\r\n url,\r\n onClick,\r\n sx = {},\r\n isBorder = false,\r\n isWrap = false,\r\n sizeType = ImageSizeType.CIRCLE,\r\n size = 'medium',\r\n ...rest\r\n}) => {\r\n const { palette } = useTheme();\r\n const [loaded, setLoaded] = useState(false);\r\n\r\n if (onClick) sx = { ...sx, cursor: 'pointer' };\r\n\r\n const borderRadius =\r\n sizeType === ImageSizeType.CIRCLE\r\n ? '50%'\r\n : sizeType === ImageSizeType.SQUARE\r\n ? STYLE.BORDER_RADIUS_ELEMENT_SMALL\r\n : 0;\r\n\r\n return (\r\n <ImageWrapper isWrap={isWrap}>\r\n {!loaded && (\r\n <Skeleton\r\n variant=\"rectangular\"\r\n sx={{\r\n ...MAP_SIZE[size],\r\n borderRadius,\r\n }}\r\n />\r\n )}\r\n <Box\r\n {...rest}\r\n component=\"img\"\r\n src={url as string}\r\n onClick={onClick}\r\n onLoad={() => setLoaded(true)}\r\n onError={(e) => {\r\n (e.currentTarget as HTMLImageElement).src = '/images/diamond.png';\r\n }}\r\n sx={{\r\n display: loaded ? 'block' : 'none',\r\n ...MAP_SIZE[size],\r\n objectFit: 'cover',\r\n borderRadius,\r\n border: isBorder ? `1px solid ${palette.divider}` : 'none',\r\n ...sx,\r\n }}\r\n />\r\n </ImageWrapper>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box } from '@mui/material';\r\nimport { AVATAR_SIZES } from './avatar.constant';\r\nimport { AvatarComponentProps } from './avatar.interface';\r\nimport { ImageElement } from '../image';\r\n\r\nconst AvatarProfileComponent: React.FC<AvatarComponentProps> = ({\r\n url,\r\n size = 'md',\r\n border = false,\r\n borderColor = '#C3FFF2',\r\n borderWidth = 4,\r\n onClick,\r\n sx = {},\r\n children,\r\n ...rest\r\n}) => {\r\n return (\r\n <Box\r\n sx={{\r\n width: AVATAR_SIZES[size],\r\n height: AVATAR_SIZES[size],\r\n borderRadius: '50%',\r\n ...(border && {\r\n border: `${borderWidth}px solid ${borderColor}`,\r\n }),\r\n ...sx,\r\n }}\r\n >\r\n <ImageElement\r\n {...rest}\r\n url={url || '/images/avatarDefault.png'}\r\n onClick={onClick}\r\n sx={{\r\n width: '100%',\r\n height: '100%',\r\n ...(onClick && { cursor: 'pointer' }),\r\n }}\r\n >\r\n {children}\r\n </ImageElement>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default AvatarProfileComponent;\r\n","import { Box, useTheme } from '@mui/material';\r\nimport React from 'react';\r\nimport {\r\n AVATAR_SIZES,\r\n AvatarColor,\r\n AvatarSize,\r\n BADGE_FONT_SIZES,\r\n BADGE_SIZES,\r\n getBadgePosition,\r\n} from './avatar.constant';\r\nimport { AvatarComponentProps } from './avatar.interface';\r\nimport AvatarProfileComponent from './avatar-profile.component';\r\n\r\nexport const BadgeLive = ({ text = 'LIVE', size = 'md' }: { text?: string; size?: AvatarSize }) => {\r\n const { typography } = useTheme();\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: AvatarColor.BACKGROUND_COLOR_BADGE,\r\n color: AvatarColor.COLOR_BADGE,\r\n borderRadius: '12px',\r\n padding: '3px 6px',\r\n fontSize: BADGE_FONT_SIZES[size],\r\n fontWeight: typography.body2.fontWeight,\r\n }}\r\n >\r\n {text}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const BadgeNumber = ({ number, size = 'md' }: { number: number; size?: AvatarSize }) => {\r\n const { typography } = useTheme();\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: AvatarColor.BACKGROUND_COLOR_BADGE,\r\n color: AvatarColor.COLOR_BADGE,\r\n borderRadius: '50%',\r\n width: BADGE_SIZES[size],\r\n height: BADGE_SIZES[size],\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: BADGE_FONT_SIZES[size],\r\n fontWeight: typography.h2.fontWeight,\r\n }}\r\n >\r\n {number}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const BadgeOnline = ({ size = 'md' }: { size?: AvatarSize }) => (\r\n <Box\r\n sx={{\r\n width: BADGE_SIZES[size],\r\n height: BADGE_SIZES[size],\r\n borderRadius: '50%',\r\n bgcolor: '#4CAF50',\r\n border: '2px solid white',\r\n }}\r\n />\r\n);\r\n\r\nexport const BadgeImage = ({ url, size = 'md' }: { url: string; size?: AvatarSize }) => (\r\n <Box\r\n component=\"img\"\r\n src={url}\r\n alt=\"badge\"\r\n sx={{\r\n width: BADGE_SIZES[size],\r\n height: BADGE_SIZES[size],\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n />\r\n);\r\n\r\nexport const AvatarComponent: React.FC<AvatarComponentProps> = ({\r\n url,\r\n size = 'md',\r\n border = false,\r\n borderColor = '#C3FFF2',\r\n borderWidth = 4,\r\n badge,\r\n badgePosition = 'bottom-right',\r\n onClick,\r\n sx = {},\r\n sxProfile = {},\r\n children,\r\n ...rest\r\n}) => {\r\n // Tự động inject size vào badge\r\n const badgeWithSize = badge && React.isValidElement(badge) ? React.cloneElement(badge, { size } as any) : badge;\r\n return (\r\n <Box\r\n sx={{\r\n position: 'relative',\r\n display: 'inline-flex',\r\n width: AVATAR_SIZES[size],\r\n height: AVATAR_SIZES[size],\r\n ...sx,\r\n }}\r\n >\r\n <AvatarProfileComponent\r\n url={url}\r\n size={size}\r\n border={border}\r\n borderWidth={borderWidth}\r\n borderColor={borderColor}\r\n onClick={onClick}\r\n sx={sxProfile}\r\n {...rest}\r\n >\r\n {children}\r\n </AvatarProfileComponent>\r\n {badgeWithSize && (\r\n <Box\r\n sx={{\r\n position: 'absolute',\r\n ...getBadgePosition(badgePosition),\r\n }}\r\n >\r\n {badgeWithSize}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\n","import { STYLE } from '@/constants';\r\nimport { Icon, type IconProps, type SxProps, type Theme, useTheme } from '@mui/material';\r\nimport React from 'react';\r\nexport interface IconElementProps extends IconProps {\r\n icon?: any;\r\n size?: 'large' | 'small' | 'medium';\r\n disabled?: boolean;\r\n fill?: 0 | 1;\r\n sx?: SxProps<Theme>;\r\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nexport const IconElement: React.FC<IconElementProps> = ({\r\n icon,\r\n size = 'medium',\r\n color,\r\n disabled,\r\n onClick,\r\n sx,\r\n fill = 0,\r\n}) => {\r\n const { palette } = useTheme();\r\n\r\n if (disabled) {\r\n onClick = undefined;\r\n color = 'disabled';\r\n }\r\n\r\n if (onClick)\r\n sx = {\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: color ? 'none' : palette.primary.main,\r\n },\r\n ...sx,\r\n };\r\n\r\n return (\r\n <Icon\r\n onClick={onClick}\r\n color={color}\r\n sx={{\r\n cursor: 'inherit',\r\n fontSize: STYLE.FONT_SIZE_ICON[size],\r\n fontVariationSettings: `'FILL' ${fill}, 'wght' 100, 'GRAD' 200, 'opsz' 24`,\r\n ...sx,\r\n }}\r\n component={'span'}\r\n className=\"material-symbols-rounded\"\r\n >\r\n {icon}\r\n </Icon>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box, SxProps, Theme } from '@mui/material';\r\nimport { AVATAR_SIZES, AvatarSize } from './avatar.constant';\r\nimport { AvatarComponent } from './avatar.component';\r\nimport { AvatarData } from './avatar.interface';\r\nimport { TYPOGRAPHY_STYLES } from '@/constants/typography.constant';\r\nimport { StackRowAlignCenter } from '@/styles/stack.style';\r\nimport { IconElement } from '../icon';\r\n\r\ninterface AvatarGroupProps {\r\n avatars: AvatarData[];\r\n maxDisplay?: number;\r\n size?: AvatarSize;\r\n border?: boolean;\r\n borderColor?: string;\r\n borderWidth?: number;\r\n onAddClick?: () => void;\r\n overlap?: number;\r\n icon?: string;\r\n sxAvatar?: SxProps<Theme>;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst AvatarGroupComponent: React.FC<AvatarGroupProps> = ({\r\n avatars = [],\r\n maxDisplay = 10,\r\n size = 'md',\r\n border = true,\r\n borderColor = '#FFFFFF',\r\n borderWidth = 2,\r\n onAddClick,\r\n overlap = 8,\r\n icon,\r\n sxAvatar,\r\n sx,\r\n}) => {\r\n const displayAvatars = avatars.slice(0, maxDisplay);\r\n const remainingCount = avatars.length - maxDisplay;\r\n\r\n return (\r\n <StackRowAlignCenter sx={{ gap: 1, ...sx }}>\r\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\r\n {displayAvatars.map((avatar, index) => (\r\n <Box\r\n key={avatar.id || index}\r\n sx={{\r\n marginLeft: index > 0 ? `-${overlap}px` : 0,\r\n position: 'relative',\r\n }}\r\n >\r\n <AvatarComponent\r\n url={avatar.url}\r\n size={size}\r\n border={border}\r\n borderColor={borderColor}\r\n borderWidth={borderWidth}\r\n sx={sxAvatar}\r\n />\r\n </Box>\r\n ))}\r\n\r\n {remainingCount > 0 && (\r\n <Box\r\n sx={{\r\n marginLeft: `-${overlap}px`,\r\n position: 'relative',\r\n color: '#07554B',\r\n backgroundColor: '#EDFFFA',\r\n width: AVATAR_SIZES[size],\r\n height: AVATAR_SIZES[size],\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n border: '2px solid #ffffff',\r\n borderRadius: '50%',\r\n ...TYPOGRAPHY_STYLES.textMd.medium,\r\n }}\r\n >\r\n +{remainingCount}\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n {icon && (\r\n <Box\r\n sx={{\r\n width: AVATAR_SIZES[size],\r\n height: AVATAR_SIZES[size],\r\n borderRadius: '50%',\r\n border: `2px dashed #D1D5DB`,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n transition: 'all 0.2s',\r\n '&:hover': {\r\n borderColor: 'primary.main',\r\n },\r\n }}\r\n onClick={onAddClick}\r\n >\r\n <IconElement\r\n icon={icon}\r\n sx={{\r\n color: 'primary.main',\r\n }}\r\n />\r\n </Box>\r\n )}\r\n </StackRowAlignCenter>\r\n );\r\n};\r\n\r\nexport default AvatarGroupComponent;\r\n","import React from 'react';\r\nimport { Stack, Typography, SxProps, Theme } from '@mui/material';\r\nimport { BORDER_RADIUS_ELEMENT } from '../../constants/style.constant';\r\nimport { TYPOGRAPHY_STYLES } from '../../constants/typography.constant';\r\nimport { AvatarComponentProps } from './avatar.interface';\r\nimport { AvatarComponent } from './avatar.component';\r\nimport { AvatarColor } from './avatar.constant';\r\ninterface AvatarLabelGroupProps extends AvatarComponentProps {\r\n title?: string;\r\n description?: string;\r\n sxAvatar?: SxProps<Theme>;\r\n}\r\n\r\nconst AvatarLabelGroupComponent: React.FC<AvatarLabelGroupProps> = ({\r\n title,\r\n description,\r\n url,\r\n size = 'md',\r\n border,\r\n borderColor,\r\n borderWidth,\r\n badge,\r\n badgePosition,\r\n onClick,\r\n sx,\r\n sxAvatar,\r\n children,\r\n ...rest\r\n}) => {\r\n return (\r\n <Stack direction=\"row\" alignItems=\"center\" sx={{ gap: BORDER_RADIUS_ELEMENT, ...sx }}>\r\n <AvatarComponent\r\n url={url}\r\n size={size}\r\n border={border}\r\n borderColor={borderColor}\r\n borderWidth={borderWidth}\r\n badge={badge}\r\n badgePosition={badgePosition}\r\n onClick={onClick}\r\n sx={sxAvatar}\r\n {...rest}\r\n >\r\n {children}\r\n </AvatarComponent>\r\n <Stack sx={{ gap: 0 }}>\r\n <Typography\r\n noWrap\r\n sx={{ ...TYPOGRAPHY_STYLES.textSm.semiBold, color: AvatarColor.COLOR_TITLE }}\r\n >\r\n {title}\r\n </Typography>\r\n <Typography\r\n noWrap\r\n sx={{ ...TYPOGRAPHY_STYLES.textXs.regular, color: AvatarColor.COLOR_DESCRIPTION }}\r\n >\r\n {description}\r\n </Typography>\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default AvatarLabelGroupComponent;\r\n","import { SxProps, Theme, Typography, TypographyProps } from '@mui/material';\r\nimport React from 'react';\r\ninterface TypographyOneLineProps extends TypographyProps {\r\n sx?: SxProps<Theme>;\r\n content: any;\r\n}\r\n\r\nconst getLimitLineCss = (line: number): any => ({\r\n display: '-webkit-box',\r\n overflow: 'hidden',\r\n WebkitBoxOrient: 'vertical',\r\n WebkitLineClamp: line,\r\n // textOverflow: 'ellipsis',\r\n});\r\n\r\nexport const TypographyOneLine: React.FC<TypographyOneLineProps> = ({ content, sx = {}, ...rest }) => {\r\n return (\r\n <Typography\r\n sx={{\r\n ...getLimitLineCss(1),\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {content}\r\n </Typography>\r\n );\r\n};\r\n\r\nexport default TypographyOneLine;","import React from 'react';\r\nimport { Stack, Link, AvatarProps } from '@mui/material';\r\nimport LinkIcon from '@mui/icons-material/Link';\r\nimport { ImageElement, ImageSizeType } from '../image';\r\nimport { TypographyOneLine } from '../typography';\r\nimport { TYPOGRAPHY_STYLES } from '@/constants/typography.constant';\r\n\r\ninterface AvatarUserProps extends Omit<AvatarProps, 'children'> {\r\n title?: string;\r\n description?: string;\r\n descriptionHref?: string;\r\n onDescriptionClick?: () => void;\r\n titleColor?: string;\r\n descriptionColor?: string;\r\n url?: string;\r\n}\r\n\r\nconst AvatarUserComponent: React.FC<AvatarUserProps> = ({\r\n title,\r\n description,\r\n descriptionHref,\r\n onDescriptionClick,\r\n titleColor = '#414651',\r\n descriptionColor = '#535862',\r\n url,\r\n onClick,\r\n sx,\r\n}) => {\r\n return (\r\n <Stack sx={{ gap: 1, ...sx }}>\r\n <ImageElement\r\n sx={{\r\n width: 160,\r\n height: 160,\r\n ...(onClick && { cursor: 'pointer' }),\r\n }}\r\n url={url || '/images/avatarDefault.png'}\r\n sizeType={ImageSizeType.SQUARE}\r\n />\r\n <Stack sx={{ gap: 0 }}>\r\n <TypographyOneLine sx={{ ...TYPOGRAPHY_STYLES.textLg.semiBold, color: titleColor }} content={title} />\r\n {description && (\r\n <Link\r\n href={descriptionHref}\r\n onClick={onDescriptionClick}\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 0.5,\r\n textDecoration: 'underline',\r\n color: descriptionColor,\r\n ...TYPOGRAPHY_STYLES.textSm.regular,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n opacity: 0.8,\r\n },\r\n }}\r\n >\r\n <LinkIcon sx={{ fontSize: 16, color: descriptionColor }} />\r\n {description}\r\n </Link>\r\n )}\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default AvatarUserComponent;\r\n","import React, { useState } from 'react';\r\nimport { Breadcrumbs, Link, Menu, MenuItem, IconButton } from '@mui/material';\r\nimport { SxProps, Theme } from '@mui/material';\r\nimport { GAP_ICON_CONTENT_BY_SIZE } from '@/constants/style.constant';\r\nimport { TYPOGRAPHY_STYLES } from '@/constants';\r\nimport { IconElement } from '../icon';\r\nimport { ImageElement } from '../image';\r\nimport { StackRowAlignCenter } from '@/styles/stack.style';\r\n\r\nconst SEPARATOR_URLS = {\r\n '>': '/images/icon/chevron-right.svg',\r\n '/': '/images/icon/slash-separator.svg',\r\n};\r\n\r\ninterface BreadcrumbItem {\r\n id: string;\r\n icon?: string;\r\n label: string;\r\n href?: string;\r\n onClick?: () => void;\r\n}\r\n\r\ninterface BreadcrumbsComponentProps {\r\n items: BreadcrumbItem[];\r\n separator?: '>' | '/';\r\n maxItems?: number;\r\n idSelect?: string;\r\n sx?: SxProps<Theme>;\r\n sxItem?: SxProps<Theme>;\r\n onChange?: (id: string) => void;\r\n}\r\n\r\nconst BreadcrumbsComponent: React.FC<BreadcrumbsComponentProps> = ({\r\n items,\r\n separator = '>',\r\n maxItems = 5,\r\n idSelect,\r\n sx,\r\n sxItem,\r\n onChange,\r\n}) => {\r\n // state\r\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\r\n const showCollapsed = items.length > maxItems;\r\n const visibleItems = showCollapsed ? [items[0], ...items.slice(-2)] : items;\r\n const collapsedItems = showCollapsed ? items.slice(1, -2) : [];\r\n\r\n // function\r\n const handleMenuOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const renderItem = (item: BreadcrumbItem) => {\r\n const isActive = item.id === idSelect;\r\n\r\n return (\r\n <Link\r\n key={item.id}\r\n href={item.href}\r\n onClick={(e) => {\r\n if (item.onClick) {\r\n e.preventDefault();\r\n item.onClick();\r\n }\r\n if (onChange) {\r\n onChange(item.id);\r\n }\r\n }}\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: GAP_ICON_CONTENT_BY_SIZE.medium,\r\n ...TYPOGRAPHY_STYLES.textSm.semiBold,\r\n color: isActive ? '#000000' : '#676E76',\r\n cursor: 'pointer',\r\n textDecoration: 'none',\r\n ...sxItem,\r\n }}\r\n >\r\n {item.icon && <IconElement icon={item.icon} />}\r\n {item.label}\r\n </Link>\r\n );\r\n };\r\n\r\n const renderSeparator = () => <ImageElement sx={{ width: 14, height: 14 }} url={SEPARATOR_URLS[separator]} />;\r\n\r\n return (\r\n <React.Fragment>\r\n <Breadcrumbs aria-label=\"breadcrumb\" sx={{ ...sx }}>\r\n {showCollapsed ? (\r\n <StackRowAlignCenter sx={{ gap: GAP_ICON_CONTENT_BY_SIZE.small }}>\r\n {renderItem(items[0])}\r\n {renderSeparator()}\r\n\r\n <IconButton size=\"small\" onClick={handleMenuOpen} sx={{ p: 0, mt: 'auto' }}>\r\n <IconElement icon=\"more_horiz\" />\r\n </IconButton>\r\n {renderSeparator()}\r\n\r\n {visibleItems.slice(1).map((item, idx) => (\r\n <React.Fragment key={item.id}>\r\n {idx > 0 && renderSeparator()}\r\n {renderItem(item)}\r\n </React.Fragment>\r\n ))}\r\n </StackRowAlignCenter>\r\n ) : (\r\n items.map((item) => renderItem(item))\r\n )}\r\n </Breadcrumbs>\r\n\r\n <Menu anchorEl={anchorEl} open={Boolean(anchorEl)} onClose={handleMenuClose} disableScrollLock>\r\n {collapsedItems.map((item) => {\r\n const isActive = item.id === idSelect;\r\n return (\r\n <MenuItem\r\n key={item.id}\r\n onClick={() => {\r\n if (item.onClick) {\r\n item.onClick();\r\n }\r\n handleMenuClose();\r\n }}\r\n sx={{\r\n gap: GAP_ICON_CONTENT_BY_SIZE.medium,\r\n color: isActive ? '#0F766E' : '#111827',\r\n bgcolor: isActive ? '#E0F2FE' : 'transparent',\r\n }}\r\n >\r\n {item.icon && <IconElement icon={item.icon} />}\r\n {item.label}\r\n </MenuItem>\r\n );\r\n })}\r\n </Menu>\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default BreadcrumbsComponent;\r\n","import { COLOR_ACCENT, COLOR_BRAND, COLOR_ERROR, COLOR_INFO, COLOR_NEUTRAL, COLOR_SUCCESS, COLOR_WARNING } from \"@/constants\";\r\n\r\n\r\n/** Button component type definitions */\r\nexport type Variant = 'solid' | 'outline' | 'ghost' | 'text';\r\nexport type Color = 'brand' | 'neutral' | 'error' | 'warning' | 'success' | 'accent' | 'info';\r\nexport type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\nexport type ShadeType = 'light' | 'main' | 'dark';\r\n\r\n/** Shade values mapping */\r\nexport const SHADE_VALUES: Record<ShadeType, number> = {\r\n light: 100,\r\n main: 500,\r\n dark: 700,\r\n} as const;\r\n\r\n/** Button size configuration */\r\nexport const SIZES: Record<Size, { padding: string; fontSize: string; height: string; width?: string }> = {\r\n xs: { padding: '6px 12px', fontSize: '10px', height: '28px' },\r\n sm: { padding: '8px 16px', fontSize: '12px', height: '32px' },\r\n md: { padding: '16px 28px', fontSize: '14px', height: '60px', width: '192px' },\r\n lg: { padding: '12px 24px', fontSize: '16px', height: '44px' },\r\n xl: { padding: '14px 32px', fontSize: '18px', height: '48px' },\r\n} as const;\r\n\r\n/** Color palette mapping */\r\nexport const COLORS: Record<Color, Record<number, string>> = {\r\n brand: COLOR_BRAND,\r\n neutral: COLOR_NEUTRAL,\r\n error: COLOR_ERROR,\r\n warning: COLOR_WARNING,\r\n success: COLOR_SUCCESS,\r\n accent: COLOR_ACCENT,\r\n info: COLOR_INFO,\r\n};\r\n\r\n/** Button UI constants */\r\nexport const BUTTON_CONSTANTS = {\r\n ACTIVE_DOT_SIZE: 8,\r\n ACTIVE_DOT_MARGIN_RIGHT: 8,\r\n SPINNER_SIZE: 16,\r\n GAP: 12,\r\n BORDER_RADIUS: 8,\r\n TRANSITION_DURATION: '0.3s',\r\n} as const;\r\n\r\n/** Accessibility constants */\r\nexport const ACCESSIBILITY = {\r\n HOVER_TRANSLATE_Y: '-2px',\r\n ACTIVE_TRANSLATE_Y: '0',\r\n BOX_SHADOW: '0 4px 12px rgba(0, 0, 0, 0.15)',\r\n FOCUS_OFFSET: '2px',\r\n} as const;\r\n","import React, { ReactNode, CSSProperties } from 'react';\r\nimport { Button as MuiButton, ButtonProps as MuiButtonProps, CircularProgress } from '@mui/material';\r\nimport {\r\n Variant,\r\n Color,\r\n ShadeType,\r\n Size,\r\n SHADE_VALUES,\r\n SIZES,\r\n COLORS,\r\n BUTTON_CONSTANTS,\r\n ACCESSIBILITY,\r\n} from './button.constants';\r\nimport { TYPOGRAPHY, COLOR_NEUTRAL } from '@/constants';\r\nimport { IconElement } from '../icon';\r\n\r\nconst getButtonSx = (variant: Variant, color: Color, shade: ShadeType | number, size: Size, fullWidth: boolean) => {\r\n const colors = COLORS[color];\r\n const sizeConf = SIZES[size] || SIZES.md;\r\n\r\n // Xác định màu sắc theo shade\r\n let colorValue: string;\r\n if (typeof shade === 'number') {\r\n colorValue = colors[shade] || colors[700];\r\n } else {\r\n const shadeNum = SHADE_VALUES[shade] || 700;\r\n colorValue = colors[shadeNum];\r\n }\r\n\r\n const lightColor = colors[100];\r\n\r\n const base = {\r\n padding: sizeConf.padding,\r\n height: sizeConf.height,\r\n fontSize: sizeConf.fontSize,\r\n width: fullWidth ? '100%' : sizeConf.width || 'auto',\r\n fontFamily: TYPOGRAPHY.body.fontFamily,\r\n fontWeight: TYPOGRAPHY.body.fontWeight,\r\n borderRadius: `${BUTTON_CONSTANTS.BORDER_RADIUS}px`,\r\n gap: `${BUTTON_CONSTANTS.GAP}px`,\r\n textTransform: 'none' as const,\r\n transition: `all ${BUTTON_CONSTANTS.TRANSITION_DURATION} ease`,\r\n '&:hover': {\r\n transform: `translateY(${ACCESSIBILITY.HOVER_TRANSLATE_Y})`,\r\n boxShadow: ACCESSIBILITY.BOX_SHADOW,\r\n },\r\n '&:active': {\r\n transform: `translateY(${ACCESSIBILITY.ACTIVE_TRANSLATE_Y})`,\r\n },\r\n '&:focus-visible': {\r\n outline: `2px solid ${colorValue}`,\r\n outlineOffset: ACCESSIBILITY.FOCUS_OFFSET,\r\n },\r\n };\r\n\r\n const variants = {\r\n solid: {\r\n backgroundColor: colorValue,\r\n color: '#ffffff',\r\n '&:hover': { ...base['&:hover'], backgroundColor: colorValue },\r\n '&:focus-visible': { ...base['&:focus-visible'], outline: '2px solid #ffffff' },\r\n },\r\n outline: {\r\n backgroundColor: 'transparent',\r\n color: colorValue,\r\n border: `2px solid ${colorValue}`,\r\n '&:hover': { ...base['&:hover'], backgroundColor: 'transparent', border: `2px solid ${colorValue}` },\r\n },\r\n ghost: {\r\n backgroundColor: lightColor,\r\n color: colorValue,\r\n '&:hover': { ...base['&:hover'], backgroundColor: lightColor },\r\n },\r\n text: {\r\n backgroundColor: 'transparent',\r\n color: colorValue,\r\n border: 'none',\r\n '&:hover': { ...base['&:hover'], backgroundColor: 'transparent' },\r\n },\r\n };\r\n\r\n return { ...base, ...variants[variant] };\r\n};\r\n\r\nexport interface ButtonProps extends Omit<MuiButtonProps, 'variant' | 'color' | 'size' | 'prefix' | 'suffix'> {\r\n /** Kiểu hiển thị: solid (đầy), outline (viền), ghost (nền nhạt), text (chỉ chữ) */\r\n variant?: Variant;\r\n /** Màu sắc: brand, neutral, error, warning, success, accent, info */\r\n color?: Color;\r\n /** Shade của màu: light (100), main (500), dark (700) hoặc number (50-950) */\r\n shade?: 'light' | 'main' | 'dark' | number;\r\n /** Kích cỡ: xs, sm, md, lg, xl */\r\n size?: Size;\r\n /** Icon hoặc element hiển thị trước nội dung (ReactNode) */\r\n prefix?: ReactNode;\r\n /** Icon hoặc element hiển thị sau nội dung (ReactNode) */\r\n suffix?: ReactNode;\r\n /** Tên icon Material hiển thị trước (string) - ưu tiên hơn prefix */\r\n prefixIcon?: string;\r\n /** Tên icon Material hiển thị sau (string) - ưu tiên hơn suffix */\r\n suffixIcon?: string;\r\n /** Style CSS cho icon (áp dụng cho prefixIcon/suffixIcon) */\r\n iconStyle?: CSSProperties;\r\n /** Trạng thái loading - hiển thị spinner */\r\n loading?: boolean;\r\n /** Nội dung button */\r\n children?: ReactNode;\r\n /** Button chiếm full width container */\r\n fullWidth?: boolean;\r\n /** Vô hiệu hóa button */\r\n disabled?: boolean;\r\n /** Hiển thị dot nhỏ trước text để đánh dấu trạng thái active */\r\n active?: boolean;\r\n /** Màu của dot khi active (mặc định: #10b981 - xanh lá) */\r\n activeDotColor?: string;\r\n}\r\nexport const ButtonComponent: React.FC<ButtonProps> = ({\r\n variant = 'solid',\r\n color = 'brand',\r\n shade = 'dark',\r\n size = 'md',\r\n prefix,\r\n suffix,\r\n prefixIcon,\r\n suffixIcon,\r\n iconStyle,\r\n loading = false,\r\n children,\r\n fullWidth = false,\r\n disabled = false,\r\n active = false,\r\n activeDotColor = '#10b981',\r\n sx,\r\n ...props\r\n}) => {\r\n // Memoize style calculation\r\n const buttonSx = getButtonSx(variant, color, shade, size, fullWidth);\r\n\r\n // Render prefix element\r\n const renderPrefix = () => {\r\n if (prefixIcon) return <IconElement icon={prefixIcon} sx={iconStyle} />;\r\n if (prefix) return prefix;\r\n return null;\r\n };\r\n\r\n // Render suffix element\r\n const renderSuffix = () => {\r\n if (suffixIcon) return <IconElement icon={suffixIcon} sx={iconStyle} />;\r\n if (suffix) return suffix;\r\n return null;\r\n };\r\n\r\n const prefixContent = loading ? (\r\n <CircularProgress size={BUTTON_CONSTANTS.SPINNER_SIZE} sx={{ color: COLOR_NEUTRAL[50] }} />\r\n ) : (\r\n renderPrefix()\r\n );\r\n const suffixContent = renderSuffix();\r\n\r\n // Nếu chỉ có icon mà không có children, render icon giữa button\r\n const isIconOnly = !children && !active && (prefixContent || suffixContent);\r\n\r\n // Active dot element\r\n const activeDot = active ? (\r\n <span\r\n style={{\r\n width: `${BUTTON_CONSTANTS.ACTIVE_DOT_SIZE}px`,\r\n height: `${BUTTON_CONSTANTS.ACTIVE_DOT_SIZE}px`,\r\n borderRadius: '50%',\r\n backgroundColor: activeDotColor,\r\n display: 'inline-block',\r\n flexShrink: 0,\r\n marginRight: `${BUTTON_CONSTANTS.ACTIVE_DOT_MARGIN_RIGHT}px`,\r\n }}\r\n />\r\n ) : null;\r\n\r\n return (\r\n <MuiButton\r\n sx={{ ...buttonSx, ...sx }}\r\n disabled={disabled || loading}\r\n fullWidth={fullWidth}\r\n startIcon={!isIconOnly ? prefixContent : undefined}\r\n endIcon={!isIconOnly ? suffixContent : undefined}\r\n {...props}\r\n >\r\n {isIconOnly ? (\r\n <>\r\n {prefixContent}\r\n {suffixContent}\r\n </>\r\n ) : (\r\n <>\r\n {activeDot}\r\n {children}\r\n </>\r\n )}\r\n </MuiButton>\r\n );\r\n};\r\n","import React, { ReactNode, CSSProperties } from 'react';\r\n\r\ntype Layout = 'horizontal' | 'vertical';\r\n\r\ninterface ButtonBarProps {\r\n /** Layout: 'horizontal' (ngang) hoặc 'vertical' (dọc) */\r\n layout: Layout;\r\n /** Các button bên trong */\r\n children: ReactNode;\r\n /** Gap giữa các button (px) */\r\n gap?: number;\r\n /** Custom style cho container */\r\n style?: CSSProperties;\r\n}\r\n\r\nconst ButtonBarComponent: React.FC<ButtonBarProps> = ({ layout, children, gap = 12, style }) => {\r\n const containerStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: layout === 'horizontal' ? 'row' : 'column',\r\n gap: `${gap}px`,\r\n alignItems: layout === 'horizontal' ? 'center' : 'stretch',\r\n ...style,\r\n };\r\n\r\n return <div style={containerStyle}>{children}</div>;\r\n};\r\n\r\nexport default ButtonBarComponent;\r\n","import { CheckboxSize } from './checkbox.component';\r\n\r\nexport const CHECKBOX_COLORS = {\r\n default: {\r\n border: '#D0D5DD',\r\n background: '#FFFFFF',\r\n hoverBg: '#F0FDF9',\r\n },\r\n checked: {\r\n border: '#07554B',\r\n filledBg: '#07554B',\r\n outlinedBg: '#FFFFFF',\r\n icon: '#FFFFFF',\r\n },\r\n disabled: {\r\n border: '#E4E7EC',\r\n background: '#F2F4F7',\r\n icon: '#98A2B3',\r\n },\r\n} as const;\r\n\r\nexport const CHECKBOX_SIZE: Record<\r\n CheckboxSize,\r\n {\r\n boxSize: number;\r\n iconSize: number;\r\n titleFontSize: number;\r\n titleFontWeight: number;\r\n }\r\n> = {\r\n small: {\r\n boxSize: 16,\r\n iconSize: 14,\r\n titleFontSize: 14,\r\n titleFontWeight: 500,\r\n },\r\n medium: {\r\n boxSize: 20,\r\n iconSize: 16,\r\n titleFontSize: 16,\r\n titleFontWeight: 600,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { Box, Typography, SxProps, Theme } from '@mui/material';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport RemoveIcon from '@mui/icons-material/Remove';\r\nimport FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';\r\n\r\nimport { CHECKBOX_COLORS, CHECKBOX_SIZE } from './checkbox.constant';\r\n\r\nexport type CheckboxShape = 'square' | 'circle';\r\nexport type CheckboxSize = 'small' | 'medium';\r\nexport type CheckboxVariant = 'filled' | 'outlined';\r\nexport type CheckboxIconType = 'check' | 'minus' | 'dot' | 'custom';\r\n\r\ninterface CheckboxProps {\r\n checked?: boolean;\r\n disabled?: boolean;\r\n\r\n shape?: CheckboxShape;\r\n size?: CheckboxSize;\r\n variant?: CheckboxVariant;\r\n iconType?: CheckboxIconType;\r\n\r\n title?: string;\r\n children?: React.ReactNode;\r\n\r\n onChange?: (checked: boolean) => void;\r\n\r\n sxCheckbox?: SxProps<Theme>;\r\n sxLabel?: SxProps<Theme>;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst CheckboxComponent: React.FC<CheckboxProps> = ({\r\n checked = false,\r\n disabled = false,\r\n\r\n shape = 'square',\r\n size = 'medium',\r\n variant = 'filled',\r\n iconType = 'check',\r\n\r\n title,\r\n children,\r\n onChange,\r\n\r\n sxCheckbox,\r\n sxLabel,\r\n sx,\r\n}) => {\r\n const checkboxStyle = CHECKBOX_SIZE[size];\r\n const isFilled = variant === 'filled';\r\n\r\n const handleToggle = () => {\r\n if (!disabled) {\r\n onChange?.(!checked);\r\n }\r\n };\r\n\r\n const backgroundColor = disabled\r\n ? CHECKBOX_COLORS.disabled.background\r\n : checked\r\n ? isFilled\r\n ? (sxCheckbox as any)?.backgroundColor || CHECKBOX_COLORS.checked.filledBg\r\n : CHECKBOX_COLORS.checked.outlinedBg\r\n : CHECKBOX_COLORS.default.background;\r\n\r\n const borderColor = disabled\r\n ? CHECKBOX_COLORS.disabled.border\r\n : checked\r\n ? (sxCheckbox as any)?.borderColor || CHECKBOX_COLORS.checked.border\r\n : CHECKBOX_COLORS.default.border;\r\n\r\n const iconColor = disabled\r\n ? CHECKBOX_COLORS.disabled.icon\r\n : isFilled\r\n ? CHECKBOX_COLORS.checked.icon\r\n : CHECKBOX_COLORS.checked.border;\r\n\r\n const renderIcon = () => {\r\n if (!checked) return null;\r\n\r\n const iconSx: SxProps<Theme> = {\r\n width: checkboxStyle.iconSize,\r\n height: checkboxStyle.iconSize,\r\n color: iconColor,\r\n };\r\n\r\n switch (iconType) {\r\n case 'check':\r\n return <CheckIcon sx={iconSx} />;\r\n case 'minus':\r\n return <RemoveIcon sx={iconSx} />;\r\n case 'dot':\r\n return (\r\n <FiberManualRecordIcon\r\n sx={{ ...iconSx, width: checkboxStyle.iconSize - 3, height: checkboxStyle.iconSize - 3 }}\r\n />\r\n );\r\n case 'custom':\r\n return children;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const checkbox = (\r\n <Box\r\n role=\"checkbox\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-checked={checked}\r\n onClick={handleToggle}\r\n onKeyDown={(e) => {\r\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\r\n e.preventDefault();\r\n handleToggle();\r\n }\r\n }}\r\n sx={{\r\n width: checkboxStyle.boxSize,\r\n height: checkboxStyle.boxSize,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none',\r\n borderRadius: shape === 'circle' ? '50%' : '4px',\r\n border: `1px solid ${borderColor}`,\r\n backgroundColor,\r\n transition: 'all 0.2s ease',\r\n\r\n ...(!disabled &&\r\n (!checked || !isFilled) && {\r\n '&:hover': {\r\n borderColor: (sxCheckbox as any)?.backgroundColor || CHECKBOX_COLORS.checked.border,\r\n backgroundColor: CHECKBOX_COLORS.default.hoverBg,\r\n },\r\n }),\r\n\r\n '&:focus-visible': {\r\n outline: 'none',\r\n boxShadow: '0 0 0 3px rgba(14, 147, 132, 0.25)',\r\n },\r\n\r\n ...(disabled && { opacity: 0.4 }),\r\n }}\r\n >\r\n {renderIcon()}\r\n </Box>\r\n );\r\n\r\n if (!title) return checkbox;\r\n\r\n return (\r\n <Box\r\n onClick={handleToggle}\r\n sx={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n ...sx,\r\n }}\r\n >\r\n {checkbox}\r\n <Typography\r\n fontSize={checkboxStyle.titleFontSize}\r\n fontWeight={checkboxStyle.titleFontWeight}\r\n color={disabled ? '#D0D5DD' : '#344054'}\r\n sx={{\r\n userSelect: 'none',\r\n ...sxLabel,\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default CheckboxComponent;\r\n","export type ChipSize = 'small' | 'medium' | 'large';\r\nexport type IconPosition = 'left' | 'right';\r\n\r\nexport type ChipIconSize = '16px' | '18px' | '22px';\r\n\r\nexport const CHIP_ICON_SIZE: Record<ChipSize, ChipIconSize> = {\r\n small: '16px',\r\n medium: '18px',\r\n large: '22px',\r\n};\r\n\r\nexport const CHIP_LABEL_PADDING = {\r\n WITH_ICON_LEFT: '4px 8px 4px 4px',\r\n WITH_ICON_RIGHT: '4px 4px 4px 8px',\r\n NO_ICON: '4px 8px',\r\n} as const;\r\n\r\nexport const CHIP_SIZE_CONFIG: Record<\r\n ChipSize,\r\n {\r\n height: number;\r\n fontSize: string;\r\n borderRadius: string;\r\n iconSize: ChipIconSize;\r\n }\r\n> = {\r\n small: {\r\n height: 24,\r\n fontSize: '12px',\r\n borderRadius: '12px',\r\n iconSize: '16px',\r\n },\r\n medium: {\r\n height: 32,\r\n fontSize: '14px',\r\n borderRadius: '16px',\r\n iconSize: '18px',\r\n },\r\n large: {\r\n height: 40,\r\n fontSize: '16px',\r\n borderRadius: '20px',\r\n iconSize: '22px',\r\n },\r\n};\r\n","import React, { ReactElement } from 'react';\r\nimport { Chip, Box, SxProps, Theme } from '@mui/material';\r\n\r\nimport { IconPosition, CHIP_SIZE_CONFIG, CHIP_LABEL_PADDING } from './chip.constant';\r\nimport { StackRowAlignCenter } from '@/styles/stack.style';\r\n\r\nconst getLabelPadding = (hasIcon: boolean, position: IconPosition) => {\r\n if (!hasIcon) return CHIP_LABEL_PADDING.NO_ICON;\r\n return position === 'left' ? CHIP_LABEL_PADDING.WITH_ICON_LEFT : CHIP_LABEL_PADDING.WITH_ICON_RIGHT;\r\n};\r\n\r\nconst ChipIcon: React.FC<{\r\n icon: ReactElement;\r\n size: string;\r\n sxIcon?: SxProps<Theme>;\r\n}> = ({ icon, size, sxIcon }) => (\r\n <Box\r\n sx={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '50%',\r\n padding: '2px',\r\n\r\n '& svg': {\r\n width: size,\r\n height: size,\r\n display: 'block',\r\n },\r\n\r\n ...sxIcon,\r\n }}\r\n >\r\n {icon}\r\n </Box>\r\n);\r\n\r\ninterface ChipProps {\r\n label: string | React.ReactNode;\r\n onAction?: () => void;\r\n icon?: ReactElement;\r\n disabled?: boolean;\r\n clickable?: boolean;\r\n sx?: SxProps<Theme>;\r\n sxIcon?: SxProps<Theme>;\r\n iconPosition?: 'left' | 'right';\r\n size?: 'small' | 'medium' | 'large';\r\n}\r\n\r\nconst ChipComponent: React.FC<ChipProps> = ({\r\n label,\r\n onAction,\r\n icon,\r\n disabled = false,\r\n clickable = true,\r\n sx,\r\n sxIcon,\r\n iconPosition = 'right',\r\n size = 'medium',\r\n}) => {\r\n const sizeConfig = CHIP_SIZE_CONFIG[size];\r\n const hasIcon = Boolean(icon);\r\n\r\n return (\r\n <Chip\r\n disabled={disabled}\r\n clickable={clickable}\r\n onClick={onAction}\r\n label={\r\n <StackRowAlignCenter sx={{ gap: '8px' }}>\r\n {hasIcon && iconPosition === 'left' && <ChipIcon icon={icon!} size={sizeConfig.iconSize} sxIcon={sxIcon} />}\r\n <Box component=\"span\">{label}</Box>\r\n {hasIcon && iconPosition === 'right' && <ChipIcon icon={icon!} size={sizeConfig.iconSize} sxIcon={sxIcon} />}\r\n </StackRowAlignCenter>\r\n }\r\n sx={{\r\n height: sizeConfig.height,\r\n fontSize: sizeConfig.fontSize,\r\n borderRadius: sizeConfig.borderRadius,\r\n cursor: clickable ? 'pointer' : 'default',\r\n backgroundColor: 'transparent',\r\n border: '1px solid #D1D5DB',\r\n '& .MuiChip-label': {\r\n padding: getLabelPadding(hasIcon, iconPosition),\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n '& .MuiChip-label svg': {\r\n flexShrink: 0,\r\n color: '#4B5563',\r\n },\r\n\r\n '&.Mui-disabled': {\r\n opacity: 0.5,\r\n color: '#9E9E9E',\r\n },\r\n\r\n ...sx,\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ChipComponent;\r\n","import { Box, SxProps, Theme, Typography } from '@mui/material';\r\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { ReactNode } from 'react';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { TYPOGRAPHY, COLOR_GRAY, COLOR_NEUTRAL, COLOR_SUCCESS, COLOR_ERROR } from '@/constants';\r\nimport { IconElement } from '../icon';\r\n\r\ninterface DateFieldProps {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string | Dayjs | null;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (date: Dayjs | null) => void;\r\n helperText?: string;\r\n locale?: string; // 'vi', 'en', etc.\r\n format?: string;\r\n sx?: SxProps<Theme>;\r\n disablePastDates?: boolean;\r\n}\r\n\r\nconst DateFieldComponent = ({\r\n label = 'Label',\r\n placeholder = 'DD/MM/YYYY',\r\n value,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n helperText = '',\r\n onChange,\r\n locale = 'vi',\r\n format = 'DD/MM/YYYY',\r\n sx,\r\n disablePastDates = false,\r\n ...props\r\n}: DateFieldProps) => {\r\n // Convert string to Dayjs if needed\r\n const dayjsValue = value && typeof value === 'string' ? dayjs(value, format) : value instanceof dayjs ? value : null;\r\n\r\n const handleDateChange = (date: Dayjs | null) => {\r\n onChange?.(date);\r\n };\r\n\r\n // Disable past dates function\r\n const shouldDisableDate = (date: Dayjs) => {\r\n if (!disablePastDates) return false;\r\n return date.isBefore(dayjs(), 'day');\r\n };\r\n\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={locale}>\r\n <DatePicker\r\n value={dayjsValue}\r\n onChange={handleDateChange}\r\n disabled={disabled}\r\n format={format}\r\n shouldDisableDate={shouldDisableDate}\r\n slotProps={{\r\n textField: {\r\n placeholder,\r\n error: error || false,\r\n helperText: error ? errorMessage : helperText,\r\n size: 'small',\r\n fullWidth: true,\r\n disabled: disabled,\r\n },\r\n openPickerButton: {\r\n size: 'small',\r\n },\r\n }}\r\n slots={{\r\n openPickerIcon: (props) => <IconElement icon=\"calendar_today\" {...props} />,\r\n }}\r\n sx={{\r\n width: '100%',\r\n '& .MuiPickersInputBase-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[300] },\r\n '&:hover fieldset': { borderColor: COLOR_NEUTRAL[400] },\r\n '&.Mui-focused fieldset': { borderColor: COLOR_NEUTRAL[300], borderWidth: '2px' },\r\n '&.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px #FEE4E2',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[200] },\r\n '& input': { color: COLOR_NEUTRAL[400], WebkitTextFillColor: COLOR_NEUTRAL[400] },\r\n },\r\n '&.Mui-error fieldset': { borderColor: COLOR_ERROR[500] },\r\n '&.Mui-error.Mui-focused fieldset': { borderColor: COLOR_ERROR[500], borderWidth: '2px' },\r\n '&.Mui-error.Mui-focused': {\r\n boxShadow: `0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px rgba(255, 66, 79, 0.15)`,\r\n },\r\n ...(success && {\r\n '&.Mui-focused': {\r\n boxShadow: `0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px ${COLOR_SUCCESS[100]}`,\r\n },\r\n }),\r\n },\r\n '& .MuiInputBase-input': {\r\n ...TYPOGRAPHY.text14Regular,\r\n padding: '12px 8px',\r\n color: COLOR_GRAY[900],\r\n '&::placeholder': { color: COLOR_NEUTRAL[400], opacity: 0.7 },\r\n },\r\n }}\r\n {...props}\r\n />\r\n </LocalizationProvider>\r\n {success && !error && successMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_SUCCESS[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default DateFieldComponent;\r\n","import { TYPOGRAPHY, COLOR_GRAY, COLOR_NEUTRAL, COLOR_ERROR, COLOR_SUCCESS } from '@/constants';\r\nimport { Box, SxProps, Theme, Typography } from '@mui/material';\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { ReactNode, useRef, useState } from 'react';\r\nimport { IconElement } from '../icon';\r\n\r\ninterface DateRangePickerProps {\r\n label?: string;\r\n fromDate?: string | Dayjs | null;\r\n toDate?: string | Dayjs | null;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (dates: [Dayjs | null, Dayjs | null]) => void;\r\n helperText?: string;\r\n locale?: string; // 'vi', 'en', etc.\r\n format?: string;\r\n minDate?: Dayjs;\r\n maxDate?: Dayjs;\r\n sx?: SxProps<Theme>;\r\n disablePastDates?: boolean;\r\n}\r\n\r\nconst DateRangePickerComponent = ({\r\n label = 'Date Range',\r\n fromDate,\r\n toDate,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n helperText = '',\r\n onChange,\r\n locale = 'vi',\r\n format = 'DD/MM/YYYY',\r\n minDate,\r\n maxDate,\r\n sx,\r\n disablePastDates = false,\r\n ...props\r\n}: DateRangePickerProps) => {\r\n // Convert string to Dayjs if needed\r\n const dayjsFromDate =\r\n fromDate && typeof fromDate === 'string' ? dayjs(fromDate, format) : fromDate instanceof dayjs ? fromDate : null;\r\n\r\n const dayjsToDate =\r\n toDate && typeof toDate === 'string' ? dayjs(toDate, format) : toDate instanceof dayjs ? toDate : null;\r\n\r\n // State for picker\r\n const [pickerOpen, setPickerOpen] = useState(false);\r\n const [selectingPhase, setSelectingPhase] = useState<'from' | 'to'>('from');\r\n const inputRef = useRef<HTMLDivElement>(null);\r\n\r\n // Disable past dates function\r\n const shouldDisableDate = (date: Dayjs) => {\r\n if (!disablePastDates) return false;\r\n return date.isBefore(dayjs(), 'day');\r\n };\r\n\r\n const handleInputClick = () => {\r\n setPickerOpen(true);\r\n // Only reset to 'from' if both dates are empty (fresh start)\r\n if (!dayjsFromDate && !dayjsToDate) {\r\n setSelectingPhase('from');\r\n }\r\n };\r\n\r\n const handleDateChange = (date: Dayjs | null) => {\r\n if (selectingPhase === 'from') {\r\n onChange?.([date, dayjsToDate]);\r\n if (date) {\r\n // Auto switch to toDate selection\r\n setSelectingPhase('to');\r\n }\r\n } else {\r\n onChange?.([dayjsFromDate, date]);\r\n // Keep picker open for user to potentially change toDate\r\n }\r\n };\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={locale}>\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n\r\n {/* Single input field showing range */}\r\n <Box\r\n ref={inputRef}\r\n onClick={!disabled ? handleInputClick : undefined}\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n padding: '12px 8px',\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n border: `1px solid ${error ? COLOR_ERROR[500] : COLOR_NEUTRAL[300]}`,\r\n backgroundColor: disabled ? COLOR_NEUTRAL[100] : 'white',\r\n cursor: disabled ? 'default' : 'pointer',\r\n transition: 'all 0.2s ease',\r\n ...(disabled\r\n ? {}\r\n : {\r\n '&:hover': {\r\n borderColor: error ? COLOR_ERROR[500] : COLOR_NEUTRAL[400],\r\n },\r\n }),\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n flex: 1,\r\n ...TYPOGRAPHY.text14Regular,\r\n color: dayjsFromDate || dayjsToDate ? COLOR_GRAY[900] : COLOR_NEUTRAL[400],\r\n }}\r\n >\r\n {dayjsFromDate ? dayjsFromDate.format(format) : format} →{' '}\r\n {dayjsToDate ? dayjsToDate.format(format) : format}\r\n </Typography>\r\n\r\n {/* Calendar icon */}\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '24px',\r\n height: '24px',\r\n color: COLOR_NEUTRAL[400],\r\n }}\r\n >\r\n <IconElement icon=\"calendar_today\" />\r\n </Box>\r\n </Box>\r\n\r\n {/* Hidden DatePicker for picking dates */}\r\n <DatePicker\r\n open={pickerOpen}\r\n onOpen={() => setPickerOpen(true)}\r\n onClose={() => setPickerOpen(false)}\r\n value={selectingPhase === 'from' ? dayjsFromDate : dayjsToDate}\r\n onChange={handleDateChange}\r\n disabled={disabled}\r\n format={format}\r\n minDate={selectingPhase === 'from' ? minDate : dayjsFromDate || minDate}\r\n maxDate={selectingPhase === 'to' ? maxDate : dayjsToDate || maxDate}\r\n shouldDisableDate={shouldDisableDate}\r\n slotProps={{\r\n textField: {\r\n hidden: true,\r\n size: 'small',\r\n sx: {\r\n display: 'none',\r\n },\r\n },\r\n popper: {\r\n anchorEl: inputRef.current,\r\n placement: 'bottom-start',\r\n },\r\n }}\r\n />\r\n\r\n {/* Helper text */}\r\n {helperText && !error && !success && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_NEUTRAL[400],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {helperText}\r\n </Typography>\r\n )}\r\n\r\n {/* Error message */}\r\n {error && errorMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_ERROR[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {errorMessage}\r\n </Typography>\r\n )}\r\n\r\n {/* Success message */}\r\n {success && !error && successMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_SUCCESS[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Typography>\r\n )}\r\n </Box>\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default DateRangePickerComponent;\r\n","import { COLOR_ACCENT, COLOR_NEUTRAL, COLOR_GRAY, TYPOGRAPHY, COLOR_SUCCESS, COLOR_ERROR } from '@/constants';\r\nimport { Avatar, Box, MenuItem, Select, SxProps, Theme, Typography } from '@mui/material';\r\nimport { ReactNode, useCallback, useMemo } from 'react';\r\nimport { IconElement } from '../icon';\r\n\r\ninterface SelectOption {\r\n label: string;\r\n value: string | number;\r\n icon?: string;\r\n avatar?: string;\r\n statusIndicator?: boolean;\r\n}\r\n\r\ninterface SelectFieldProps {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string | number | null;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (value: string | number) => void;\r\n helperText?: string;\r\n options: SelectOption[];\r\n checkIconColor?: string;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst DropdownFieldComponent = ({\r\n label = '',\r\n placeholder = 'Select option',\r\n value = null,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n onChange,\r\n helperText = '',\r\n options = [],\r\n checkIconColor = COLOR_ACCENT[900],\r\n sx,\r\n}: SelectFieldProps) => {\r\n const borderRadiusValue = borderRadius === 'max' ? '100px' : `${borderRadius}px`;\r\n\r\n const selectedOption = useMemo(() => options.find((opt) => opt.value === value), [options, value]);\r\n\r\n const getHelperText = useCallback(() => {\r\n if (error && errorMessage) return errorMessage;\r\n if (success && successMessage) return successMessage;\r\n if (helperText) return helperText;\r\n return '';\r\n }, [error, errorMessage, success, successMessage, helperText]);\r\n\r\n const getHelperTextColor = useCallback(() => {\r\n if (error) return COLOR_ERROR[500];\r\n if (success) return COLOR_SUCCESS[500];\r\n return COLOR_NEUTRAL[400];\r\n }, [error, success]);\r\n\r\n const getBorderColor = useCallback(() => {\r\n if (error) return COLOR_ERROR[500];\r\n if (success) return COLOR_SUCCESS[500];\r\n return COLOR_NEUTRAL[300];\r\n }, [error, success]);\r\n\r\n const selectSx = useMemo(\r\n () => ({\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadiusValue,\r\n backgroundColor: disabled ? COLOR_NEUTRAL[100] : 'white',\r\n transition: 'all 0.2s ease',\r\n '& fieldset': {\r\n borderColor: getBorderColor(),\r\n },\r\n '&:hover fieldset': {\r\n borderColor: disabled ? getBorderColor() : error ? COLOR_ERROR[500] : COLOR_NEUTRAL[400],\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: error ? COLOR_ERROR[500] : COLOR_NEUTRAL[400],\r\n borderWidth: '1.5px',\r\n },\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n padding: '12px 14px',\r\n color: COLOR_GRAY[900],\r\n '&::placeholder': {\r\n color: COLOR_NEUTRAL[400],\r\n opacity: 1,\r\n },\r\n },\r\n }),\r\n [borderRadiusValue, disabled, error, getBorderColor],\r\n );\r\n\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n\r\n <Select\r\n fullWidth\r\n value={value || ''}\r\n onChange={(e) => {\r\n const selectedValue = e.target.value;\r\n const matchedOption = options.find((opt) => String(opt.value) === String(selectedValue));\r\n if (matchedOption) {\r\n onChange?.(matchedOption.value);\r\n }\r\n }}\r\n disabled={disabled}\r\n displayEmpty\r\n MenuProps={{\r\n disableScrollLock: true,\r\n }}\r\n renderValue={() => {\r\n if (!value) {\r\n return (\r\n <Box sx={{ color: COLOR_NEUTRAL[400], display: 'flex', alignItems: 'center', gap: '8px' }}>\r\n {placeholder}\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\r\n {selectedOption?.statusIndicator && (\r\n <Box\r\n sx={{\r\n width: '8px',\r\n height: '8px',\r\n borderRadius: '50%',\r\n backgroundColor: '#4CAF50',\r\n }}\r\n />\r\n )}\r\n {selectedOption?.avatar && (\r\n <Avatar\r\n src={selectedOption.avatar}\r\n sx={{\r\n width: '24px',\r\n height: '24px',\r\n fontSize: '12px',\r\n }}\r\n />\r\n )}\r\n {selectedOption?.icon && <IconElement icon={selectedOption.icon} />}\r\n <Typography sx={{ color: COLOR_GRAY[900], ...TYPOGRAPHY.text14Regular }}>\r\n {selectedOption?.label}\r\n </Typography>\r\n </Box>\r\n );\r\n }}\r\n sx={selectSx}\r\n >\r\n {options.map((option) => (\r\n <MenuItem key={option.value} value={option.value}>\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: '8px', width: '100%' }}>\r\n {option.statusIndicator && (\r\n <Box\r\n sx={{\r\n width: '8px',\r\n height: '8px',\r\n borderRadius: '50%',\r\n backgroundColor: '#4CAF50',\r\n }}\r\n />\r\n )}\r\n {option.avatar && (\r\n <Avatar\r\n src={option.avatar}\r\n sx={{\r\n width: '24px',\r\n height: '24px',\r\n fontSize: '12px',\r\n }}\r\n />\r\n )}\r\n {option.icon && <IconElement icon={option.icon} />}\r\n <Typography sx={{ color: COLOR_GRAY[900], ...TYPOGRAPHY.text14Regular }}>{option.label}</Typography>\r\n {value === option.value && (\r\n <Box sx={{ marginLeft: 'auto', display: 'flex', alignItems: 'center' }}>\r\n <IconElement icon=\"check\" sx={{ color: checkIconColor }} />\r\n </Box>\r\n )}\r\n </Box>\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n\r\n {/* Helper, Error, or Success text */}\r\n {getHelperText() && (\r\n <Box\r\n sx={{\r\n color: getHelperTextColor(),\r\n marginTop: '4px',\r\n ...TYPOGRAPHY.textFieldHelper,\r\n }}\r\n >\r\n {getHelperText()}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default DropdownFieldComponent;\r\n","import React from 'react';\r\nimport { Container, Stack, Typography } from '@mui/material';\r\nimport { SxProps, Theme } from '@mui/material';\r\nimport { TYPOGRAPHY_STYLES } from '@/constants';\r\n\r\nconst BACKGROUND_COLOR_GRID = '#FFFFFF';\r\nconst COLOR_CONTENT_GRID = '#27272A';\r\nconst BORDER_RADIUS_GRID_CONTAINER = 8;\r\nconst BORDER_RADIUS_GRID = 4;\r\n\r\ninterface GridComponentProps {\r\n content?: string;\r\n sxContainer?: SxProps<Theme>;\r\n sx?: SxProps<Theme>;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst GridComponent: React.FC<GridComponentProps> = ({\r\n sx = {},\r\n sxContainer = {},\r\n content = 'Grids',\r\n children,\r\n}) => {\r\n return (\r\n <Stack\r\n sx={{\r\n bgcolor: BACKGROUND_COLOR_GRID,\r\n p: BORDER_RADIUS_GRID_CONTAINER,\r\n borderRadius: BORDER_RADIUS_GRID_CONTAINER,\r\n gap: BORDER_RADIUS_GRID,\r\n ...sx,\r\n }}\r\n >\r\n {content && (\r\n <Typography\r\n sx={{\r\n color: COLOR_CONTENT_GRID,\r\n ...TYPOGRAPHY_STYLES.lg.bold,\r\n }}\r\n >\r\n {content}\r\n </Typography>\r\n )}\r\n <Container\r\n maxWidth={false}\r\n sx={{\r\n bgcolor: BACKGROUND_COLOR_GRID,\r\n borderRadius: BORDER_RADIUS_GRID,\r\n minHeight: 400,\r\n boxShadow: '0 0 8px -4px rgba(16, 24, 40, 0.3)',\r\n ...sxContainer,\r\n }}\r\n >\r\n {children}\r\n </Container>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default GridComponent;\r\n","export enum BorderRadius {\r\n SQUARE = '4px',\r\n CIRCLE = '20px',\r\n}\r\n\r\nexport enum ShapeType {\r\n SQUARE = 'square',\r\n CIRCLE = 'circle',\r\n}\r\n\r\nexport enum Orientation {\r\n HORIZONTAL = 'horizontal',\r\n VERTICAL = 'vertical',\r\n}\r\n\r\nexport enum ButtonSize {\r\n SMALL = 32,\r\n MEDIUM = 40,\r\n}\r\n\r\nexport const Colors = {\r\n BORDER_COLOR_BUTTON: '#07554B',\r\n BORDER_COLOR_DISABLE: '#0000000D',\r\n HOVER_BG_COLOR: 'rgba(7, 85, 75, 0.04)',\r\n BACKGROUND_COLOR: '#FFFFFF',\r\n TEXT_COLOR_READONLY: '#27272A',\r\n};\r\n\r\nexport const FONT_SIZE_LOADING = {\r\n large: 40,\r\n};\r\n\r\nexport const BORDER_TEXT_FIELD_LOADING = 20;\r\n\r\nexport const FONT_SIZE_ICON = {\r\n small: 12,\r\n xl: 20,\r\n};\r\n","import React from 'react';\r\nimport { Box, Skeleton } from '@mui/material';\r\nimport {\r\n FONT_SIZE_LOADING,\r\n BorderRadius,\r\n BORDER_TEXT_FIELD_LOADING,\r\n ShapeType,\r\n Orientation,\r\n} from './input-stepper.constant';\r\n\r\ninterface InputStepperSkeletonProps {\r\n orientation: Orientation;\r\n buttonShape: ShapeType;\r\n}\r\n\r\nconst InputStepperSkeleton: React.FC<InputStepperSkeletonProps> = ({ orientation, buttonShape }) => {\r\n return (\r\n <Box\r\n display=\"inline-flex\"\r\n flexDirection={orientation === Orientation.HORIZONTAL ? 'row' : 'column'}\r\n alignItems=\"center\"\r\n gap={1}\r\n >\r\n <Skeleton\r\n variant={buttonShape === ShapeType.CIRCLE ? 'circular' : 'rectangular'}\r\n width={FONT_SIZE_LOADING.large}\r\n height={FONT_SIZE_LOADING.large}\r\n sx={{\r\n borderRadius: buttonShape === ShapeType.CIRCLE ? BorderRadius.CIRCLE : BorderRadius.SQUARE,\r\n maxHeight: FONT_SIZE_LOADING.large,\r\n }}\r\n />\r\n <Skeleton\r\n width={FONT_SIZE_LOADING.large}\r\n sx={{\r\n borderRadius: `${BORDER_TEXT_FIELD_LOADING}px`,\r\n }}\r\n />\r\n <Skeleton\r\n variant={buttonShape === ShapeType.CIRCLE ? 'circular' : 'rectangular'}\r\n width={FONT_SIZE_LOADING.large}\r\n height={FONT_SIZE_LOADING.large}\r\n sx={{\r\n borderRadius: buttonShape === ShapeType.CIRCLE ? BorderRadius.CIRCLE : BorderRadius.SQUARE,\r\n maxHeight: FONT_SIZE_LOADING.large,\r\n }}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default InputStepperSkeleton;","import React, { useState } from 'react';\r\nimport { TextField, IconButton, Box } from '@mui/material';\r\nimport RemoveIcon from '@mui/icons-material/Remove';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport { BorderRadius, ButtonSize, Colors, Orientation, ShapeType } from './input-stepper.constant';\r\nimport { SxProps, Theme } from '@mui/material';\r\nimport { PADDING_GAP_ITEM } from '@/constants/style.constant';\r\nimport InputStepperSkeleton from './input-stepper-skeleton';\r\n\r\n// style của input text field\r\nexport interface InputStepperTextFieldStyle {\r\n width?: number | string;\r\n height?: number | string;\r\n padding?: string;\r\n textAlign?: 'left' | 'center' | 'right';\r\n fontSize?: string | number;\r\n fontWeight?: number | string;\r\n color?: string;\r\n\r\n backgroundColor?: string;\r\n\r\n borderColor?: string;\r\n borderColorHover?: string;\r\n borderColorFocused?: string;\r\n}\r\n\r\nexport interface InputStepperProps {\r\n value: number;\r\n onChange?: (value: number) => void;\r\n min: number;\r\n max: number;\r\n step?: number;\r\n disabled?: boolean;\r\n readOnly?: boolean;\r\n orientation?: Orientation;\r\n loading?: boolean;\r\n sx?: SxProps<Theme>;\r\n sxTextField?: InputStepperTextFieldStyle;\r\n sxButton?: SxProps<Theme>;\r\n buttonColor?: string;\r\n buttonShape?: ShapeType;\r\n textFieldShape?: ShapeType;\r\n decrementIcon?: React.ReactNode;\r\n incrementIcon?: React.ReactNode;\r\n}\r\n\r\nconst InputStepperComponent: React.FC<InputStepperProps> = ({\r\n value: controlledValue,\r\n onChange,\r\n min,\r\n max,\r\n step = 1,\r\n disabled = false,\r\n readOnly = false,\r\n orientation = Orientation.HORIZONTAL,\r\n loading = false,\r\n sx = {},\r\n sxTextField = {}, // style cho input chứa value\r\n sxButton = {}, // style cho 2 button\r\n buttonShape = ShapeType.SQUARE,\r\n buttonColor,\r\n\r\n textFieldShape = ShapeType.SQUARE,\r\n decrementIcon = <RemoveIcon />,\r\n incrementIcon = <AddIcon />,\r\n}) => {\r\n const [internalValue, setInternalValue] = useState<number>(controlledValue ?? min ?? 0);\r\n const value = controlledValue !== undefined ? controlledValue : internalValue;\r\n\r\n const updateValue = (newValue: number) => {\r\n let finalValue = newValue;\r\n if (min !== undefined && newValue < min) finalValue = min;\r\n if (max !== undefined && newValue > max) finalValue = max;\r\n\r\n if (controlledValue === undefined) {\r\n setInternalValue(finalValue);\r\n }\r\n\r\n onChange?.(finalValue);\r\n };\r\n\r\n const handleIncrement = () => {\r\n updateValue(Number(value) + step);\r\n };\r\n\r\n const handleDecrement = () => {\r\n updateValue(Number(value) - step);\r\n };\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!readOnly) {\r\n const newValue = event.target.value === '' ? min || 0 : Number(event.target.value);\r\n if (!isNaN(newValue)) {\r\n updateValue(newValue);\r\n }\r\n }\r\n };\r\n\r\n const isDecrementDisabled = disabled || (min !== undefined && Number(value) <= min);\r\n const isIncrementDisabled = disabled || (max !== undefined && Number(value) >= max);\r\n\r\n const buttonSize = ButtonSize.MEDIUM;\r\n\r\n if (loading) {\r\n return <InputStepperSkeleton orientation={orientation} buttonShape={buttonShape} />;\r\n }\r\n\r\n return (\r\n <Box\r\n display=\"inline-flex\"\r\n flexDirection={orientation === 'horizontal' ? 'row' : 'column'}\r\n alignItems=\"center\"\r\n gap={PADDING_GAP_ITEM}\r\n sx={{\r\n opacity: disabled ? 0.5 : 1,\r\n pointerEvents: disabled ? 'none' : 'auto',\r\n ...sx,\r\n }}\r\n >\r\n <IconButton\r\n onClick={handleDecrement}\r\n disabled={isDecrementDisabled}\r\n sx={{\r\n borderRadius: buttonShape === 'circle' ? BorderRadius.CIRCLE : BorderRadius.SQUARE,\r\n width: buttonSize,\r\n height: buttonSize,\r\n padding: PADDING_GAP_ITEM,\r\n border: isDecrementDisabled\r\n ? `1px solid ${Colors.BORDER_COLOR_DISABLE}`\r\n : `1px solid ${Colors.BORDER_COLOR_BUTTON}`,\r\n backgroundColor: Colors.BACKGROUND_COLOR,\r\n color: buttonColor || Colors.BORDER_COLOR_BUTTON,\r\n '&:hover': {\r\n backgroundColor: Colors.HOVER_BG_COLOR,\r\n },\r\n ...(isDecrementDisabled ? {} : sxButton),\r\n }}\r\n >\r\n {decrementIcon}\r\n </IconButton>\r\n\r\n <TextField\r\n value={value}\r\n onChange={handleInputChange}\r\n disabled={disabled}\r\n inputProps={{\r\n min,\r\n max,\r\n step,\r\n readOnly,\r\n }}\r\n type=\"number\"\r\n sx={{\r\n minWidth: buttonSize,\r\n width: sxTextField?.width || buttonSize,\r\n minHeight: buttonSize,\r\n height: sxTextField?.height || buttonSize,\r\n overflow: 'hidden',\r\n borderRadius: textFieldShape === 'circle' ? BorderRadius.CIRCLE : BorderRadius.SQUARE,\r\n color: readOnly ? Colors.TEXT_COLOR_READONLY : '',\r\n backgroundColor: readOnly ? 'transparent !important' : sxTextField?.backgroundColor,\r\n '& .MuiOutlinedInput-root': {\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: 'inherit',\r\n\r\n '& fieldset': {\r\n borderColor:\r\n readOnly || disabled ? 'transparent' : sxTextField?.borderColor || Colors.BORDER_COLOR_BUTTON,\r\n borderWidth: readOnly || disabled ? 0 : 1,\r\n borderRadius: textFieldShape === 'circle' ? BorderRadius.CIRCLE : BorderRadius.SQUARE,\r\n },\r\n '&:hover fieldset':\r\n readOnly || disabled\r\n ? {}\r\n : {\r\n borderColor: sxTextField?.borderColorHover || Colors.BORDER_COLOR_BUTTON,\r\n },\r\n '&.Mui-focused fieldset': readOnly\r\n ? {\r\n borderColor: 'transparent',\r\n borderWidth: 0,\r\n }\r\n : {\r\n borderColor: sxTextField?.borderColorFocused || Colors.BORDER_COLOR_BUTTON,\r\n borderWidth: 1,\r\n },\r\n '&.Mui-disabled fieldset': {\r\n borderColor: Colors.BORDER_COLOR_DISABLE,\r\n backgroundColor: readOnly ? 'transparent' : Colors.BORDER_COLOR_DISABLE,\r\n },\r\n },\r\n\r\n '& input[type=number]::-webkit-outer-spin-button, & input[type=number]::-webkit-inner-spin-button': {\r\n WebkitAppearance: 'none',\r\n margin: 0,\r\n },\r\n '& input[type=number]': {\r\n MozAppearance: 'textfield',\r\n },\r\n\r\n '& .MuiInputBase-input': {\r\n textAlign: sxTextField?.textAlign || 'center',\r\n padding: sxTextField?.padding || '4px 8px',\r\n fontSize: readOnly ? '16px' : sxTextField?.fontSize || '1rem',\r\n cursor: readOnly ? 'not-allowed' : 'text',\r\n borderRadius: 'inherit',\r\n backgroundColor: readOnly ? 'transparent' : sxTextField?.backgroundColor || 'transparent',\r\n color: readOnly ? Colors.TEXT_COLOR_READONLY : sxTextField?.color || 'inherit',\r\n fontWeight: sxTextField?.fontWeight || (readOnly ? 700 : 'normal'),\r\n },\r\n }}\r\n />\r\n\r\n <IconButton\r\n onClick={handleIncrement}\r\n disabled={isIncrementDisabled}\r\n sx={{\r\n borderRadius: buttonShape === 'circle' ? BorderRadius.CIRCLE : BorderRadius.SQUARE,\r\n width: buttonSize,\r\n height: buttonSize,\r\n padding: PADDING_GAP_ITEM,\r\n border: isIncrementDisabled\r\n ? `1px solid ${Colors.BORDER_COLOR_DISABLE}`\r\n : `1px solid ${Colors.BORDER_COLOR_BUTTON}`,\r\n backgroundColor: Colors.BACKGROUND_COLOR,\r\n color: buttonColor || Colors.BORDER_COLOR_BUTTON,\r\n '&:hover': {\r\n backgroundColor: Colors.HOVER_BG_COLOR,\r\n },\r\n ...(isIncrementDisabled ? {} : sxButton),\r\n }}\r\n >\r\n {incrementIcon}\r\n </IconButton>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default InputStepperComponent;\r\n","import { Typography } from '@mui/material';\r\nimport { SxProps, Theme } from '@mui/material';\r\nimport React from 'react';\r\n\r\nexport interface LinkInternalElementProps {\r\n content: string;\r\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nexport const LinkInternalElement: React.FC<LinkInternalElementProps> = ({ content, onClick, sx = {} }) => {\r\n return (\r\n <Typography\r\n onClick={onClick}\r\n sx={{\r\n color: 'inherit',\r\n textDecorationColor: 'inherit',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n },\r\n ...sx,\r\n }}\r\n >\r\n {content}\r\n </Typography>\r\n );\r\n};\r\n","import { Link, LinkProps } from '@mui/material';\r\nimport React from 'react';\r\n\r\nexport interface LinkElementProps extends LinkProps {\r\n onClick?: () => void;\r\n target?: string;\r\n}\r\n\r\nexport const LinkElement: React.FC<LinkElementProps> = ({ onClick, sx = {}, target = '_self', ...rest }) => {\r\n return (\r\n <Link\r\n target={target}\r\n rel=\"noopener\"\r\n sx={{ textDecoration: 'none', color: 'unset', ...sx }}\r\n onClick={(event) => {\r\n if (onClick) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n }}\r\n {...rest}\r\n />\r\n );\r\n};\r\n","import { COLOR_NEUTRAL, TYPOGRAPHY, COLOR_GRAY, COLOR_ERROR, COLOR_SUCCESS } from '@/constants';\r\nimport { Box, InputAdornment, Typography } from '@mui/material';\r\nimport { styled, SxProps, Theme } from '@mui/material/styles';\r\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField';\r\nimport { ReactNode, useState } from 'react';\r\nimport { IconElement } from '../icon';\r\ninterface LinkFieldProps extends Omit<MuiTextFieldProps, 'variant'> {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n protocol?: string;\r\n helperText?: string;\r\n iconBefore?: ReactNode;\r\n iconAfter?: ReactNode;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst StyledTextField = styled(MuiTextField)(({ theme }) => {\r\n return {\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[300] },\r\n '&:hover fieldset': { borderColor: COLOR_NEUTRAL[400] },\r\n '&.Mui-focused fieldset': { borderColor: COLOR_NEUTRAL[300], borderWidth: '2px' },\r\n '&.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px #FEE4E2',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[200] },\r\n '& input': { color: COLOR_NEUTRAL[400], WebkitTextFillColor: COLOR_NEUTRAL[400] },\r\n },\r\n '&.Mui-error fieldset': { borderColor: COLOR_ERROR[600], borderWidth: '1px' },\r\n '&.Mui-error:hover fieldset': { borderColor: COLOR_ERROR[600] },\r\n '&.Mui-error.Mui-focused fieldset': { borderColor: COLOR_ERROR[600], borderWidth: '2px' },\r\n '&.Mui-error.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px rgba(255, 66, 79, 0.15)',\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n ...TYPOGRAPHY.text14Regular,\r\n padding: '12px 8px',\r\n color: COLOR_GRAY[900],\r\n '&::placeholder': { color: COLOR_NEUTRAL[400], opacity: 0.7 },\r\n '&:focus': { outline: 'none' },\r\n },\r\n '& .MuiInputLabel-root': {\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n transform: 'translate(14px, -9px) scale(0.75)',\r\n '&.Mui-focused': { color: COLOR_NEUTRAL[500] },\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n '& .MuiFormHelperText-root': {\r\n ...TYPOGRAPHY.textFieldHelper,\r\n margin: '4px 0 0 0',\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n };\r\n});\r\n\r\nconst LinkFieldComponent = ({\r\n label = 'Website',\r\n placeholder = 'www.untitledui.com',\r\n value,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n helperText = 'This is a hint text to help user.',\r\n onChange,\r\n protocol = 'http://',\r\n iconAfter,\r\n sx,\r\n ...props\r\n}: LinkFieldProps) => {\r\n const [validationError, setValidationError] = useState(false);\r\n\r\n const isValidLink = (url: string): boolean => {\r\n if (!url) return true; // Empty is valid (optional field)\r\n try {\r\n const urlToTest = url.includes('://') ? url : `${protocol}${url}`;\r\n new URL(urlToTest);\r\n\r\n // Kiểm tra domain phải có dấu chấm (ít nhất là có TLD)\r\n const hostname = new URL(urlToTest).hostname;\r\n if (!hostname || !hostname.includes('.')) {\r\n return false;\r\n }\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n };\r\n\r\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\r\n const inputValue = event.target.value;\r\n if (inputValue && !isValidLink(inputValue)) {\r\n setValidationError(true);\r\n } else {\r\n setValidationError(false);\r\n }\r\n };\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n <StyledTextField\r\n placeholder={placeholder}\r\n value={value}\r\n disabled={disabled}\r\n error={error || validationError}\r\n helperText={error || validationError ? (error ? errorMessage : 'đây không phải link') : ''}\r\n size=\"small\"\r\n fullWidth\r\n onChange={onChange}\r\n onBlur={handleBlur}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <Typography sx={{ color: COLOR_NEUTRAL[300], ...TYPOGRAPHY.text14Regular }}>{protocol}</Typography>\r\n </InputAdornment>\r\n ),\r\n endAdornment: (success || error || validationError) && (\r\n <InputAdornment position=\"end\">\r\n {iconAfter ? (\r\n iconAfter\r\n ) : (\r\n <IconElement\r\n icon={error || validationError ? 'info' : 'check_circle'}\r\n sx={{ color: error || validationError ? COLOR_ERROR[500] : COLOR_SUCCESS[500] }}\r\n />\r\n )}\r\n </InputAdornment>\r\n ),\r\n }}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n ...(success && {\r\n '&.Mui-focused': {\r\n boxShadow: `0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px ${COLOR_SUCCESS[100]}`,\r\n },\r\n }),\r\n },\r\n }}\r\n />\r\n {success && !error && successMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_SUCCESS[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default LinkFieldComponent;\r\n","import React, { ReactNode } from 'react';\r\nimport { Box, Typography } from '@mui/material';\r\nimport { Form } from 'formik';\r\nimport { TYPOGRAPHY_STYLES } from '@/constants';\r\nimport { IconElement } from '../icon';\r\n\r\nconst MODAL_ICON_COLORS = {\r\n check_circle: '#10B981',\r\n warning: '#F59E0B',\r\n error: '#EF4444',\r\n info: '#3B82F6',\r\n};\r\n\r\nexport const ModalTitle: React.FC<{ content: string }> = ({ content }) => {\r\n return <Typography sx={{ ...TYPOGRAPHY_STYLES.textLg.semiBold, color: '#101828' }}>{content}</Typography>;\r\n};\r\n\r\nexport const ModalDescription: React.FC<{ content: string }> = ({ content }) => {\r\n return (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY_STYLES.textSm.regular,\r\n color: '#667085',\r\n }}\r\n >\r\n {content}\r\n </Typography>\r\n );\r\n};\r\n\r\nexport const ModalIcon: React.FC<{ type: 'check_circle' | 'warning' | 'error' | 'info'; size?: number }> = ({\r\n type,\r\n size = 48,\r\n}) => {\r\n return (\r\n <Box\r\n sx={{\r\n width: size,\r\n height: size,\r\n borderRadius: '28px',\r\n bgcolor: `${MODAL_ICON_COLORS[type]}20`,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <IconElement\r\n icon={type}\r\n sx={{\r\n fontSize: size * 0.6,\r\n color: MODAL_ICON_COLORS[type],\r\n flex: 1,\r\n }}\r\n />\r\n </Box>\r\n );\r\n};\r\n\r\nexport const DialogWrapper: React.FC<{ isForm: boolean; children: ReactNode }> = ({ isForm = false, children }) => {\r\n return isForm ? <Form noValidate>{children}</Form> : <React.Fragment>{children}</React.Fragment>;\r\n};\r\n","import React from 'react';\r\nimport { Dialog, DialogContent, Stack, Box, DialogActions } from '@mui/material';\r\nimport { ModalTitle, ModalIcon, DialogWrapper } from './modal-content.component';\r\nimport { ModalBaseProps } from './modal.interface';\r\nimport { AvatarData } from '../avatar/avatar.interface';\r\nimport { BORDER_RADIUS_ELEMENT_WRAPPER, PADDING_GAP_LAYOUT, GAP_ICON_CONTENT_BY_SIZE } from '@/constants/style.constant';\r\nimport { StackRowAlignCenter, StackRow } from '@/styles/stack.style';\r\nimport AvatarGroupComponent from '../avatar/avatar-group.component';\r\nimport { ButtonComponent } from '../button/button.component';\r\n\r\ninterface ModalComponentProps extends ModalBaseProps {\r\n title: string;\r\n icon?: 'check_circle' | 'warning' | 'error' | 'info';\r\n avatars?: AvatarData[];\r\n}\r\n\r\nconst ModalComponent: React.FC<ModalComponentProps> = ({\r\n open,\r\n isForm = false,\r\n onClose,\r\n icon,\r\n avatars,\r\n title,\r\n nodeDescription,\r\n nodeContent,\r\n buttonLeft,\r\n buttonCenter,\r\n buttonRight,\r\n nodeBottomLeft,\r\n align = 'flex-start',\r\n direction = 'column',\r\n sx,\r\n sxContent,\r\n sxBottom,\r\n}) => {\r\n const hasActions = buttonLeft || buttonCenter || buttonRight || nodeBottomLeft;\r\n\r\n return (\r\n <Dialog\r\n open={open}\r\n disableScrollLock\r\n onClose={onClose}\r\n maxWidth={false}\r\n PaperProps={{\r\n sx: {\r\n borderRadius: BORDER_RADIUS_ELEMENT_WRAPPER,\r\n p: `calc(${PADDING_GAP_LAYOUT} + 8px)`,\r\n minWidth: 350,\r\n width: 'auto',\r\n ...sx,\r\n },\r\n }}\r\n >\r\n <DialogWrapper isForm={isForm}>\r\n <DialogContent sx={{ p: 0, ...sxContent }}>\r\n <Stack sx={{ gap: 0, alignItems: 'center' }}>\r\n <Stack\r\n direction={direction}\r\n sx={{\r\n justifyContent: direction === 'row' ? 'flex-start' : align,\r\n gap: PADDING_GAP_LAYOUT,\r\n alignItems: direction === 'row' ? (nodeDescription ? 'flex-start' : 'center') : align,\r\n width: '100%',\r\n }}\r\n >\r\n {icon && <ModalIcon type={icon} />}\r\n {avatars && <AvatarGroupComponent avatars={avatars} />}\r\n\r\n {(title || nodeDescription) && (\r\n <Stack\r\n sx={{\r\n gap: GAP_ICON_CONTENT_BY_SIZE.medium,\r\n alignItems: direction === 'row' ? 'flex-start' : align,\r\n width: '100%',\r\n }}\r\n >\r\n {title && <ModalTitle content={title} />}\r\n {nodeDescription}\r\n </Stack>\r\n )}\r\n </Stack>\r\n {nodeContent && <Box sx={{ width: '100%' }}>{nodeContent}</Box>}\r\n\r\n {/* Actions */}\r\n {hasActions && (\r\n <DialogActions\r\n sx={{\r\n width: '100%',\r\n mt: `calc(${PADDING_GAP_LAYOUT} + 8px)`,\r\n gap: GAP_ICON_CONTENT_BY_SIZE.large,\r\n ...sxBottom,\r\n }}\r\n >\r\n <StackRowAlignCenter sx={{ width: '100%' }}>\r\n {nodeBottomLeft && <Box sx={{ width: '100%' }}>{nodeBottomLeft}</Box>}\r\n\r\n {(buttonLeft || buttonCenter || buttonRight) && (\r\n <StackRow sx={{ width: '100%', gap: PADDING_GAP_LAYOUT }}>\r\n {buttonLeft && (\r\n <Box sx={{ flex: 1 }}>\r\n <ButtonComponent {...buttonLeft} fullWidth />\r\n </Box>\r\n )}\r\n {buttonCenter && (\r\n <Box sx={{ flex: 1 }}>\r\n <ButtonComponent {...buttonCenter} fullWidth />\r\n </Box>\r\n )}\r\n {buttonRight && (\r\n <Box sx={{ flex: 1 }}>\r\n <ButtonComponent {...buttonRight} fullWidth />\r\n </Box>\r\n )}\r\n </StackRow>\r\n )}\r\n </StackRowAlignCenter>\r\n </DialogActions>\r\n )}\r\n </Stack>\r\n </DialogContent>\r\n </DialogWrapper>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default ModalComponent;\r\n","import React from 'react';\r\nimport { Dialog, DialogContent, Stack, Box, DialogActions } from '@mui/material';\r\nimport Slider from 'react-slick';\r\nimport 'slick-carousel/slick/slick.css';\r\nimport 'slick-carousel/slick/slick-theme.css';\r\nimport { ModalTitle, ModalDescription, DialogWrapper } from './modal-content.component';\r\nimport { ModalBaseProps } from './modal.interface';\r\nimport { ImageElement } from '../image';\r\nimport { BORDER_RADIUS_ELEMENT_MIDDLE, BORDER_RADIUS_ELEMENT_WRAPPER, PADDING_GAP_LAYOUT, GAP_ICON_CONTENT_BY_SIZE } from '@/constants/style.constant';\r\nimport { StackRowAlignCenter, StackRow } from '@/styles/stack.style';\r\nimport { ButtonComponent } from '../button/button.component';\r\n\r\ninterface ModalCardItem {\r\n image: string;\r\n title: string;\r\n description: string;\r\n}\r\n\r\ninterface ModalCardComponentProps extends ModalBaseProps {\r\n items: ModalCardItem[] | ModalCardItem;\r\n}\r\n\r\nconst ModalCardComponent: React.FC<ModalCardComponentProps> = ({\r\n open,\r\n isForm = false,\r\n onClose,\r\n items,\r\n nodeContent,\r\n buttonLeft,\r\n buttonCenter,\r\n buttonRight,\r\n nodeBottomLeft,\r\n sx,\r\n sxContent,\r\n sxBottom,\r\n}) => {\r\n const itemsArray = Array.isArray(items) ? items : [items];\r\n const showSlider = itemsArray.length > 1;\r\n const hasActions = buttonLeft || buttonCenter || buttonRight || nodeBottomLeft;\r\n\r\n const sliderSettings = {\r\n dots: true,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n arrows: false,\r\n };\r\n\r\n const renderCard = (item: ModalCardItem) => (\r\n <Stack sx={{ gap: '20px', alignItems: 'center', textAlign: 'center' }}>\r\n <ImageElement\r\n url={item?.image}\r\n sx={{\r\n borderRadius: BORDER_RADIUS_ELEMENT_MIDDLE,\r\n width: '100%',\r\n aspectRatio: 352 / 200,\r\n objectFit: 'cover',\r\n height: 'auto',\r\n }}\r\n />\r\n <Stack sx={{ gap: 1 }}>\r\n <ModalTitle content={item?.title} />\r\n <ModalDescription content={item?.description} />\r\n </Stack>\r\n </Stack>\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={open}\r\n onClose={onClose}\r\n PaperProps={{\r\n sx: {\r\n borderRadius: BORDER_RADIUS_ELEMENT_WRAPPER,\r\n p: `calc(${PADDING_GAP_LAYOUT} + 8px)`,\r\n minWidth: 350,\r\n width: 'auto',\r\n ...sx,\r\n },\r\n }}\r\n >\r\n <DialogWrapper isForm={isForm}>\r\n <DialogContent sx={{ p: 0, ...sxContent }}>\r\n <Stack sx={{ gap: `calc(${PADDING_GAP_LAYOUT} + 8px)` }}>\r\n {showSlider ? (\r\n <Box\r\n sx={{\r\n '& .slick-slider': {\r\n position: 'relative',\r\n paddingBottom: '40px',\r\n },\r\n '& .slick-dots': {\r\n bottom: '0px',\r\n position: 'absolute',\r\n },\r\n '& .slick-list': {\r\n overflow: 'hidden',\r\n },\r\n }}\r\n >\r\n <Slider {...sliderSettings}>\r\n {itemsArray.map((item, index) => (\r\n <div key={index}>{renderCard(item)}</div>\r\n ))}\r\n </Slider>\r\n </Box>\r\n ) : (\r\n renderCard(itemsArray[0])\r\n )}\r\n\r\n {nodeContent && <Box sx={{ width: '100%' }}>{nodeContent}</Box>}\r\n </Stack>\r\n </DialogContent>\r\n\r\n {/* actions */}\r\n {hasActions && (\r\n <DialogActions\r\n sx={{\r\n width: '100%',\r\n mt: `calc(${PADDING_GAP_LAYOUT} + 8px)`,\r\n gap: GAP_ICON_CONTENT_BY_SIZE.large,\r\n ...sxBottom,\r\n }}\r\n >\r\n <StackRowAlignCenter sx={{ width: '100%' }}>\r\n {nodeBottomLeft && <Box sx={{ width: '100%' }}>{nodeBottomLeft}</Box>}\r\n\r\n {(buttonLeft || buttonCenter || buttonRight) && (\r\n <StackRow sx={{ width: '100%', gap: PADDING_GAP_LAYOUT }}>\r\n {buttonLeft && (\r\n <Box sx={{ flex: 1 }}>\r\n <ButtonComponent {...buttonLeft} fullWidth />\r\n </Box>\r\n )}\r\n {buttonCenter && (\r\n <Box sx={{ flex: 1 }}>\r\n <ButtonComponent {...buttonCenter} fullWidth />\r\n </Box>\r\n )}\r\n {buttonRight && (\r\n <Box sx={{ flex: 1 }}>\r\n <ButtonComponent {...buttonRight} fullWidth />\r\n </Box>\r\n )}\r\n </StackRow>\r\n )}\r\n </StackRowAlignCenter>\r\n </DialogActions>\r\n )}\r\n </DialogWrapper>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default ModalCardComponent;\r\n","import { styled, SxProps, Theme } from '@mui/material/styles';\r\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField';\r\nimport { Box, Typography, InputAdornment, Select, MenuItem } from '@mui/material';\r\nimport AttachMoneyIcon from '@mui/icons-material/AttachMoney';\r\nimport { ReactNode, useState } from 'react';\r\nimport { COLOR_NEUTRAL, TYPOGRAPHY, COLOR_GRAY, COLOR_ERROR, COLOR_SUCCESS } from '@/constants';\r\nimport { IconElement } from '../icon';\r\n\r\ninterface MoneyFieldProps extends Omit<MuiTextFieldProps, 'variant'> {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n currency?: string;\r\n onCurrencyChange?: (currency: string) => void;\r\n helperText?: string;\r\n iconBefore?: ReactNode;\r\n optionCurrencies?: string[];\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst CURRENCIES = ['USD', 'EUR', 'GBP', 'JPY', 'AUD', 'CAD', 'CHF', 'CNY', 'VND', 'INR'];\r\n\r\n// Format number with thousand separators\r\nconst formatMoneyDisplay = (value: string | undefined): string => {\r\n if (!value) return '';\r\n const numericOnly = value.replace(/\\D/g, '');\r\n return numericOnly.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n};\r\n\r\nconst StyledTextField = styled(MuiTextField)(({ theme }) => {\r\n return {\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[300] },\r\n '&:hover fieldset': { borderColor: COLOR_NEUTRAL[400] },\r\n '&.Mui-focused fieldset': { borderColor: COLOR_NEUTRAL[300], borderWidth: '2px' },\r\n '&.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px #FEE4E2',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[200] },\r\n '& input': { color: COLOR_NEUTRAL[400], WebkitTextFillColor: COLOR_NEUTRAL[400] },\r\n },\r\n '&.Mui-error fieldset': { borderColor: COLOR_ERROR[600], borderWidth: '1px' },\r\n '&.Mui-error:hover fieldset': { borderColor: COLOR_ERROR[600] },\r\n '&.Mui-error.Mui-focused fieldset': { borderColor: COLOR_ERROR[600], borderWidth: '2px' },\r\n '&.Mui-error.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px rgba(255, 66, 79, 0.15)',\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n ...TYPOGRAPHY.text14Regular,\r\n padding: '12px 8px',\r\n color: COLOR_GRAY[900],\r\n '&::placeholder': { color: COLOR_NEUTRAL[400], opacity: 0.7 },\r\n '&:focus': { outline: 'none' },\r\n },\r\n '& .MuiInputLabel-root': {\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n transform: 'translate(14px, -9px) scale(0.75)',\r\n '&.Mui-focused': { color: COLOR_NEUTRAL[500] },\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n '& .MuiFormHelperText-root': {\r\n ...TYPOGRAPHY.textFieldHelper,\r\n margin: '4px 0 0 0',\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n };\r\n});\r\n\r\nconst MoneyFieldComponent = ({\r\n label = 'Sale amount',\r\n placeholder = '1,000.00',\r\n value,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n helperText = 'This is a hint text to help user.',\r\n onChange,\r\n currency = 'USD',\r\n onCurrencyChange,\r\n iconBefore,\r\n optionCurrencies = CURRENCIES,\r\n sx,\r\n ...props\r\n}: MoneyFieldProps) => {\r\n const [selectedCurrency, setSelectedCurrency] = useState(currency);\r\n\r\n const handleCurrencyChange = (e: any) => {\r\n const newCurrency = e.target.value;\r\n setSelectedCurrency(newCurrency);\r\n onCurrencyChange?.(newCurrency);\r\n };\r\n\r\n const handleMoneyChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const rawValue = e.target.value.replace(/,/g, '');\r\n onChange?.({ ...e, target: { ...e.target, value: rawValue } } as any);\r\n };\r\n\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n <StyledTextField\r\n placeholder={placeholder}\r\n value={formatMoneyDisplay(value)}\r\n disabled={disabled}\r\n error={error}\r\n helperText={error ? errorMessage : helperText}\r\n size=\"small\"\r\n fullWidth\r\n onChange={handleMoneyChange}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n {iconBefore ? iconBefore : <AttachMoneyIcon sx={{ fontSize: '18px', color: COLOR_GRAY[400], mr: 0.5 }} />}\r\n </InputAdornment>\r\n ),\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {(success || error) && (\r\n <IconElement\r\n icon={error ? 'info' : 'check_circle'}\r\n sx={{ color: error ? COLOR_ERROR[500] : COLOR_SUCCESS[500] }}\r\n />\r\n )}\r\n <Select\r\n value={selectedCurrency}\r\n onChange={handleCurrencyChange}\r\n disabled={disabled}\r\n variant=\"standard\"\r\n sx={{\r\n border: 'none',\r\n outline: 'none',\r\n '& .MuiSelect-standard': { border: 'none' },\r\n '&.MuiInput-underline:before': { borderBottom: 'none' },\r\n '&.MuiInput-underline:hover:before': { borderBottom: 'none' },\r\n '&.MuiInput-underline:after': { borderBottom: 'none' },\r\n minWidth: '70px',\r\n fontSize: '14px',\r\n color: COLOR_GRAY[500],\r\n }}\r\n >\r\n {optionCurrencies.map((curr) => (\r\n <MenuItem key={curr} value={curr}>\r\n {curr}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </Box>\r\n </InputAdornment>\r\n ),\r\n }}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n ...(success && {\r\n '&.Mui-focused': {\r\n boxShadow: `0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px ${COLOR_SUCCESS[100]}`,\r\n },\r\n }),\r\n },\r\n }}\r\n />\r\n {success && !error && successMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_SUCCESS[600],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default MoneyFieldComponent;\r\n","import { COLOR_NEUTRAL, TYPOGRAPHY, COLOR_GRAY, COLOR_ERROR, COLOR_SUCCESS } from '@/constants';\r\nimport { Box, InputAdornment, MenuItem, Select, Typography } from '@mui/material';\r\nimport { styled, SxProps, Theme } from '@mui/material/styles';\r\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField';\r\nimport { ReactNode } from 'react';\r\nimport { IconElement } from '../icon';\r\ninterface PhoneNumberFieldProps extends Omit<MuiTextFieldProps, 'variant'> {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n countryCode?: string;\r\n onCountryCodeChange?: (countryCode: string) => void;\r\n helperText?: string;\r\n countries?: Array<{ code: string; name: string; flag: string; value: string }>;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst COUNTRY_CODES = [\r\n { code: 'US', name: 'United States', flag: '🇺🇸', value: '+1' },\r\n { code: 'GB', name: 'United Kingdom', flag: '🇬🇧', value: '+44' },\r\n { code: 'CA', name: 'Canada', flag: '🇨🇦', value: '+1' },\r\n { code: 'AU', name: 'Australia', flag: '🇦🇺', value: '+61' },\r\n { code: 'VN', name: 'Vietnam', flag: '🇻🇳', value: '+84' },\r\n { code: 'JP', name: 'Japan', flag: '🇯🇵', value: '+81' },\r\n { code: 'CN', name: 'China', flag: '🇨🇳', value: '+86' },\r\n { code: 'IN', name: 'India', flag: '🇮🇳', value: '+91' },\r\n { code: 'DE', name: 'Germany', flag: '🇩🇪', value: '+49' },\r\n { code: 'FR', name: 'France', flag: '🇫🇷', value: '+33' },\r\n];\r\n\r\nconst StyledTextField = styled(MuiTextField)(({ theme }) => {\r\n return {\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[300] },\r\n '&:hover fieldset': { borderColor: COLOR_NEUTRAL[400] },\r\n '&.Mui-focused fieldset': { borderColor: COLOR_NEUTRAL[300], borderWidth: '2px' },\r\n '&.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px #FEE4E2',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[200] },\r\n '& input': { color: COLOR_NEUTRAL[400], WebkitTextFillColor: COLOR_NEUTRAL[400] },\r\n },\r\n '&.Mui-error fieldset': { borderColor: COLOR_ERROR[600], borderWidth: '1px' },\r\n '&.Mui-error:hover fieldset': { borderColor: COLOR_ERROR[600] },\r\n '&.Mui-error.Mui-focused fieldset': { borderColor: COLOR_ERROR[600], borderWidth: '2px' },\r\n '&.Mui-error.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px rgba(255, 66, 79, 0.15)',\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n ...TYPOGRAPHY.text14Regular,\r\n padding: '12px 8px',\r\n color: COLOR_GRAY[900],\r\n '&::placeholder': { color: COLOR_NEUTRAL[400], opacity: 0.7 },\r\n '&:focus': { outline: 'none' },\r\n },\r\n '& .MuiInputLabel-root': {\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n transform: 'translate(14px, -9px) scale(0.75)',\r\n '&.Mui-focused': { color: COLOR_NEUTRAL[500] },\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n '& .MuiFormHelperText-root': {\r\n ...TYPOGRAPHY.textFieldHelper,\r\n margin: '4px 0 0 0',\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n };\r\n});\r\n\r\nconst PhoneNumberFieldComponent = ({\r\n label = 'Số điện thoại',\r\n placeholder = '0123 456 789',\r\n value,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n helperText,\r\n onChange,\r\n countryCode = 'US',\r\n onCountryCodeChange,\r\n countries = COUNTRY_CODES,\r\n sx,\r\n ...props\r\n}: PhoneNumberFieldProps) => {\r\n const handleCountryChange = (e: any) => {\r\n const newCode = e.target.value;\r\n onCountryCodeChange?.(newCode);\r\n };\r\n\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n <StyledTextField\r\n placeholder={placeholder}\r\n value={value}\r\n disabled={disabled}\r\n error={error}\r\n helperText={error ? errorMessage : helperText}\r\n size=\"small\"\r\n fullWidth\r\n onChange={onChange}\r\n InputProps={{\r\n startAdornment: (\r\n <InputAdornment position=\"start\" sx={{ mr: 0 }}>\r\n <Select\r\n value={countryCode}\r\n onChange={handleCountryChange}\r\n disabled={disabled}\r\n variant=\"standard\"\r\n sx={{\r\n border: 'none',\r\n outline: 'none',\r\n '& .MuiSelect-standard': { border: 'none' },\r\n '&.MuiInput-underline:before': { borderBottom: 'none' },\r\n '&.MuiInput-underline:hover:before': { borderBottom: 'none' },\r\n '&.MuiInput-underline:after': { borderBottom: 'none' },\r\n minWidth: '50px',\r\n fontSize: '14px',\r\n color: COLOR_GRAY[500],\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 0.5,\r\n }}\r\n >\r\n {countries.map((c) => (\r\n <MenuItem key={c.code} value={c.code}>\r\n {/* {c.name} ({c.value}) */}\r\n {c.code}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n </InputAdornment>\r\n ),\r\n endAdornment: (success || error) && (\r\n <InputAdornment position=\"end\">\r\n <IconElement\r\n icon={error ? 'info' : 'check_circle'}\r\n sx={{ color: error ? COLOR_ERROR[500] : COLOR_SUCCESS[500] }}\r\n />\r\n </InputAdornment>\r\n ),\r\n }}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n ...(success && {\r\n '&.Mui-focused': {\r\n boxShadow: `0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px ${COLOR_SUCCESS[100]}`,\r\n },\r\n }),\r\n },\r\n }}\r\n />\r\n {success && !error && successMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_SUCCESS[600],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default PhoneNumberFieldComponent;\r\n","export const PIN_SIZES = {\r\n sm: { width: 40, height: 40, fontSize: 18 },\r\n md: { width: 48, height: 48, fontSize: 20 },\r\n lg: { width: 56, height: 56, fontSize: 24 },\r\n} as const satisfies Record<\r\n string,\r\n {\r\n width: number;\r\n height: number;\r\n fontSize: number;\r\n }\r\n>;\r\n\r\nexport const PIN_SPACING = {\r\n sm: 8,\r\n md: 12,\r\n lg: 16,\r\n} as const satisfies Record<string, number>;\r\n\r\nexport type PINSize = keyof typeof PIN_SIZES;\r\nexport type PINSpacing = keyof typeof PIN_SPACING;\r\n","import React, { useRef, useEffect } from 'react';\r\nimport { Box, SxProps, TextField, Theme, useTheme } from '@mui/material';\r\nimport { PIN_SIZES, PIN_SPACING } from './pin.constant';\r\nimport { COLOR_GRAY } from '@/constants';\r\ninterface PINInputProps {\r\n length?: number;\r\n value: string;\r\n onChange: (value: string) => void;\r\n label?: string;\r\n error?: boolean;\r\n errorMessage?: string;\r\n type?: 'text' | 'bullet' | 'circle';\r\n disabled?: boolean;\r\n autoFocus?: boolean;\r\n onComplete?: (value: string) => void;\r\n align?: 'left' | 'center' | 'right';\r\n spacing?: 'sm' | 'md' | 'lg';\r\n size?: 'sm' | 'md' | 'lg';\r\n masked?: boolean; // Ẩn value thành dấu ● khi nhập\r\n borderFocusColor?: string;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst PINComponent: React.FC<PINInputProps> = ({\r\n length = 6,\r\n value,\r\n onChange,\r\n label,\r\n error = false,\r\n errorMessage,\r\n type = 'text',\r\n disabled = false,\r\n autoFocus = false,\r\n onComplete,\r\n align = 'left',\r\n spacing = 'md',\r\n size = 'md',\r\n masked = false,\r\n borderFocusColor,\r\n sx,\r\n}) => {\r\n const { palette } = useTheme();\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n if (autoFocus && inputRefs.current[0]) {\r\n inputRefs.current[0].focus();\r\n }\r\n }, [autoFocus]);\r\n\r\n const handleChange = (index: number, val: string) => {\r\n if (!/^\\d*$/.test(val)) return;\r\n\r\n const newValue = value.split('');\r\n newValue[index] = val;\r\n const updatedValue = newValue.join('').slice(0, length);\r\n onChange(updatedValue);\r\n\r\n if (val && index < length - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n\r\n if (updatedValue.length === length) {\r\n onComplete?.(updatedValue);\r\n }\r\n };\r\n\r\n const handleKeyDown = (index: number, e: React.KeyboardEvent) => {\r\n if (e.key === 'Backspace' && !value[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n }\r\n };\r\n\r\n const renderPINDisplay = (index: number) => {\r\n const inputValue = value[index] || '';\r\n const isFilled = !!inputValue;\r\n const sizeStyle = PIN_SIZES[size];\r\n const borderColor = error ? palette.error.main : COLOR_GRAY[200];\r\n const borderFocusColorValue = borderFocusColor || (error ? palette.error.main : COLOR_GRAY[900]);\r\n\r\n if (type === 'bullet') {\r\n return (\r\n <Box sx={{ position: 'relative', width: sizeStyle.width, height: sizeStyle.height }}>\r\n <TextField\r\n ref={(el) => {\r\n const input = el?.querySelector('input');\r\n if (input) {\r\n inputRefs.current[index] = input;\r\n }\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n value={inputValue}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n disabled={disabled}\r\n error={error}\r\n sx={{\r\n width: '100%',\r\n height: '100%',\r\n '& .MuiOutlinedInput-root': {\r\n height: '100%',\r\n padding: 0,\r\n '& input': {\r\n textAlign: 'center',\r\n fontSize: sizeStyle.fontSize,\r\n fontWeight: 600,\r\n padding: 0,\r\n color: masked && isFilled ? 'transparent' : 'inherit',\r\n WebkitTextFillColor: masked && isFilled ? 'transparent' : 'unset',\r\n caretColor: palette.primary.main,\r\n '&::placeholder': {\r\n color: palette.action.disabled,\r\n opacity: 1,\r\n },\r\n },\r\n '& fieldset': {\r\n borderColor: borderColor,\r\n borderRadius: '8px',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: error ? palette.error.main : borderFocusColorValue,\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: borderFocusColorValue,\r\n borderWidth: 1,\r\n },\r\n },\r\n '& input': {\r\n maxLength: 1,\r\n },\r\n }}\r\n placeholder=\"-\"\r\n />\r\n {masked && isFilled && (\r\n <Box\r\n sx={{\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n fontSize: sizeStyle.fontSize,\r\n fontWeight: 600,\r\n color: error ? palette.error.main : palette.text.primary,\r\n pointerEvents: 'none',\r\n }}\r\n >\r\n ●\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n if (type === 'circle') {\r\n return (\r\n <Box sx={{ position: 'relative', width: sizeStyle.width, height: sizeStyle.height }}>\r\n <TextField\r\n ref={(el) => {\r\n const input = el?.querySelector('input');\r\n if (input) {\r\n inputRefs.current[index] = input;\r\n }\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n value={inputValue}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n disabled={disabled}\r\n error={error}\r\n sx={{\r\n width: '100%',\r\n height: '100%',\r\n '& .MuiOutlinedInput-root': {\r\n height: '100%',\r\n padding: 0,\r\n borderRadius: '50%',\r\n '& input': {\r\n textAlign: 'center',\r\n fontSize: sizeStyle.fontSize,\r\n fontWeight: 600,\r\n padding: 0,\r\n color: masked && isFilled ? 'transparent' : 'inherit',\r\n WebkitTextFillColor: masked && isFilled ? 'transparent' : 'unset',\r\n caretColor: palette.primary.main,\r\n '&::placeholder': {\r\n color: palette.action.disabled,\r\n opacity: 1,\r\n },\r\n },\r\n '& fieldset': {\r\n borderColor: borderColor,\r\n borderRadius: '50%',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: error ? palette.error.main : borderFocusColorValue,\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: borderFocusColorValue,\r\n borderWidth: 1,\r\n },\r\n },\r\n '& input': {\r\n maxLength: 1,\r\n },\r\n }}\r\n placeholder=\"-\"\r\n />\r\n {masked && isFilled && (\r\n <Box\r\n sx={{\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n fontSize: sizeStyle.fontSize,\r\n fontWeight: 600,\r\n color: error ? palette.error.main : palette.text.primary,\r\n pointerEvents: 'none',\r\n }}\r\n >\r\n ●\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n\r\n // Default text type\r\n return (\r\n <TextField\r\n ref={(el) => {\r\n const input = el?.querySelector('input');\r\n if (input) {\r\n inputRefs.current[index] = input;\r\n }\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n value={inputValue}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n disabled={disabled}\r\n error={error}\r\n sx={{\r\n width: sizeStyle.width,\r\n '& .MuiOutlinedInput-root': {\r\n height: sizeStyle.height,\r\n padding: 0,\r\n '& input': {\r\n textAlign: 'center',\r\n fontSize: sizeStyle.fontSize,\r\n fontWeight: 600,\r\n padding: 0,\r\n '&::placeholder': {\r\n color: palette.action.disabled,\r\n opacity: 1,\r\n },\r\n },\r\n '& fieldset': {\r\n borderColor: borderColor,\r\n },\r\n '&:hover fieldset': {\r\n borderColor: error ? palette.error.main : borderFocusColorValue,\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: borderFocusColorValue,\r\n borderWidth: 1,\r\n },\r\n },\r\n '& input': {\r\n maxLength: 1,\r\n },\r\n }}\r\n placeholder=\"-\"\r\n />\r\n );\r\n };\r\n\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Box\r\n sx={{\r\n mb: 1,\r\n fontSize: 14,\r\n fontWeight: 500,\r\n color: palette.text.primary,\r\n }}\r\n >\r\n {label}\r\n </Box>\r\n )}\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n gap: `${PIN_SPACING[spacing]}px`,\r\n justifyContent: align === 'center' ? 'center' : align === 'right' ? 'flex-end' : 'flex-start',\r\n }}\r\n >\r\n {Array.from({ length }).map((_, index) => (\r\n <Box key={index}>{renderPINDisplay(index)}</Box>\r\n ))}\r\n </Box>\r\n {error && errorMessage && (\r\n <Box\r\n sx={{\r\n mt: 1,\r\n fontSize: 12,\r\n color: palette.error.main,\r\n textAlign: align,\r\n }}\r\n >\r\n {errorMessage}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default PINComponent;\r\n","import { COLOR_NEUTRAL, COLOR_ACCENT, COLOR_GRAY, COLOR_ERROR, COLOR_SUCCESS } from '@/constants';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport { Autocomplete, Box, Chip, InputAdornment, Typography, styled, TextField, SxProps, Theme } from '@mui/material';\r\nimport { ReactNode, useEffect, useMemo, useRef, useState } from 'react';\r\ninterface SearchDropdownOption {\r\n label: string;\r\n value: string | number;\r\n [key: string]: any;\r\n}\r\n\r\ninterface SearchDropdownProps {\r\n borderRadius?: number | 'max';\r\n placeholder?: string;\r\n value?: (string | number | SearchDropdownOption)[] | string | number | SearchDropdownOption | null;\r\n onClear?: () => void;\r\n onChange?: (value: SearchDropdownOption | SearchDropdownOption[] | null) => void;\r\n onInputChange?: (inputValue: string) => void;\r\n onSearch?: (searchText: string) => Promise<SearchDropdownOption[]>;\r\n disabled?: boolean;\r\n multiple?: boolean;\r\n label?: string;\r\n error?: boolean;\r\n errorMessage?: ReactNode;\r\n success?: boolean;\r\n successMessage?: ReactNode;\r\n helperText?: string;\r\n options?: SearchDropdownOption[];\r\n loading?: boolean;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst StyledAutocomplete = styled(Autocomplete)(({ theme }) => ({\r\n '& .MuiOutlinedInput-root': {\r\n padding: '8px !important',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '4px',\r\n minHeight: '44px',\r\n\r\n '& fieldset': {\r\n borderColor: COLOR_NEUTRAL[300],\r\n },\r\n\r\n '&:hover fieldset': {\r\n borderColor: COLOR_NEUTRAL[400],\r\n },\r\n\r\n '&.Mui-focused fieldset': {\r\n borderColor: COLOR_NEUTRAL[300] + ' !important',\r\n borderWidth: '1.5px',\r\n },\r\n\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n\r\n '& fieldset': {\r\n borderColor: COLOR_NEUTRAL[200],\r\n },\r\n },\r\n\r\n '&.Mui-error fieldset': {\r\n borderColor: COLOR_ERROR[500],\r\n },\r\n\r\n '&.Mui-success fieldset': {\r\n borderColor: COLOR_SUCCESS[500],\r\n },\r\n },\r\n\r\n '& .MuiInputBase-input': {\r\n padding: '4px 4px !important',\r\n fontSize: '14px',\r\n flex: 1,\r\n minWidth: '60px',\r\n\r\n '&::placeholder': {\r\n color: COLOR_NEUTRAL[400],\r\n opacity: 1,\r\n },\r\n\r\n '&.Mui-disabled': {\r\n color: COLOR_NEUTRAL[400],\r\n WebkitTextFillColor: COLOR_NEUTRAL[400],\r\n },\r\n },\r\n\r\n '& .MuiAutocomplete-endAdornment': {\r\n paddingRight: '4px',\r\n },\r\n\r\n '& .MuiAutocomplete-tag': {\r\n backgroundColor: COLOR_ACCENT[50],\r\n border: `1px solid ${COLOR_ACCENT[200]}`,\r\n color: COLOR_ACCENT[900],\r\n fontSize: '12px',\r\n margin: '2px',\r\n\r\n '& .MuiChip-deleteIcon': {\r\n color: COLOR_ACCENT[400],\r\n\r\n '&:hover': {\r\n color: COLOR_ACCENT[600],\r\n },\r\n },\r\n },\r\n}));\r\n\r\nconst SearchDropdownComponent = ({\r\n value,\r\n onChange,\r\n onClear,\r\n onInputChange,\r\n onSearch,\r\n borderRadius = 6,\r\n disabled = false,\r\n multiple = false,\r\n label = '',\r\n placeholder = 'Search...',\r\n error = false,\r\n errorMessage,\r\n success = false,\r\n successMessage,\r\n helperText = '',\r\n options = [],\r\n loading = false,\r\n sx,\r\n}: SearchDropdownProps) => {\r\n const DEBOUNCE_DELAY = 500;\r\n const [inputValue, setInputValue] = useState('');\r\n const [filteredOptions, setFilteredOptions] = useState<SearchDropdownOption[]>(options);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const debounceTimerRef = useRef<number | null>(null);\r\n const onSearchRef = useRef(onSearch);\r\n const onInputChangeRef = useRef(onInputChange);\r\n const optionsRef = useRef(options);\r\n\r\n // Update refs when props change\r\n useEffect(() => {\r\n onSearchRef.current = onSearch;\r\n onInputChangeRef.current = onInputChange;\r\n optionsRef.current = options;\r\n }, [onSearch, onInputChange, options]);\r\n\r\n // Normalize value to array for internal state\r\n const selectedValues = useMemo(() => {\r\n if (!value) return [];\r\n const values = Array.isArray(value) ? value : [value];\r\n return values.map((v) => (typeof v === 'object' ? v : { label: String(v), value: v }));\r\n }, [value]);\r\n\r\n // Search logic with debounce\r\n useEffect(() => {\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n\r\n // Reset to original options when input is empty\r\n if (!inputValue.trim()) {\r\n setFilteredOptions(optionsRef.current);\r\n return;\r\n }\r\n\r\n debounceTimerRef.current = setTimeout(async () => {\r\n const searchFn = onSearchRef.current;\r\n\r\n if (searchFn) {\r\n // Async search\r\n setIsLoading(true);\r\n try {\r\n const results = await searchFn(inputValue);\r\n setFilteredOptions(results);\r\n } catch (error) {\r\n console.error('Search error:', error);\r\n setFilteredOptions([]);\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n } else {\r\n // Local filtering\r\n const filtered = optionsRef.current.filter((opt) => opt.label.toLowerCase().includes(inputValue.toLowerCase()));\r\n setFilteredOptions(filtered);\r\n }\r\n\r\n onInputChangeRef.current?.(inputValue);\r\n }, DEBOUNCE_DELAY);\r\n\r\n return () => {\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n };\r\n }, [inputValue]);\r\n\r\n const handleInputChange = (event: React.SyntheticEvent, newInputValue: string) => {\r\n setInputValue(newInputValue);\r\n };\r\n\r\n const handleChange = (event: React.SyntheticEvent, newValue: any) => {\r\n if (multiple) {\r\n const result = Array.isArray(newValue) ? newValue : newValue ? [newValue] : [];\r\n onChange?.(result.length > 0 ? result : null);\r\n } else {\r\n onChange?.(newValue || null);\r\n }\r\n };\r\n\r\n const handleClear = () => {\r\n setInputValue('');\r\n setFilteredOptions(optionsRef.current);\r\n onClear?.();\r\n };\r\n\r\n return (\r\n <Box sx={{ width: '100%', ...sx }}>\r\n {label && (\r\n <Typography\r\n variant=\"subtitle2\"\r\n sx={{\r\n fontWeight: 500,\r\n color: COLOR_GRAY[900],\r\n marginBottom: '6px',\r\n display: 'block',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n\r\n <StyledAutocomplete\r\n multiple={multiple}\r\n freeSolo\r\n options={filteredOptions}\r\n getOptionLabel={(option: any) => {\r\n if (!option) return '';\r\n if (typeof option === 'object' && 'label' in option) return option.label;\r\n return String(option);\r\n }}\r\n isOptionEqualToValue={(option, val) => {\r\n if (!option || !val) return false;\r\n if (typeof option === 'object' && typeof val === 'object' && 'value' in option && 'value' in val) {\r\n return option.value === val.value;\r\n }\r\n return false;\r\n }}\r\n value={multiple ? selectedValues : selectedValues[0] || null}\r\n inputValue={inputValue}\r\n onInputChange={handleInputChange}\r\n onChange={handleChange}\r\n disabled={disabled || loading}\r\n loading={isLoading || loading}\r\n noOptionsText={inputValue ? 'No results found' : 'Type to search'}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n borderColor: error ? COLOR_ERROR[500] : success ? COLOR_SUCCESS[500] : undefined,\r\n },\r\n }}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n placeholder={placeholder}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n error={error}\r\n InputProps={{\r\n ...params.InputProps,\r\n startAdornment: (\r\n <>\r\n <InputAdornment position=\"start\" sx={{ marginLeft: '4px', marginRight: '0px' }}>\r\n <SearchIcon sx={{ color: '#999', fontSize: '18px' }} />\r\n </InputAdornment>\r\n {params.InputProps?.startAdornment}\r\n </>\r\n ),\r\n }}\r\n />\r\n )}\r\n renderTags={(value, getTagProps) =>\r\n value.map((option: any, index) => {\r\n const label = typeof option === 'object' && option && 'label' in option ? option.label : String(option);\r\n return <Chip {...getTagProps({ index })} label={label as string} size=\"small\" />;\r\n })\r\n }\r\n renderOption={(props, option) => {\r\n const { key, ...otherProps } = props;\r\n const label = (option as SearchDropdownOption)?.label || '';\r\n return (\r\n <Box key={key} {...otherProps} component=\"li\">\r\n {label}\r\n </Box>\r\n );\r\n }}\r\n componentsProps={{\r\n clearIndicator: {\r\n onClick: handleClear,\r\n },\r\n }}\r\n />\r\n\r\n {error && errorMessage && (\r\n <Box\r\n sx={{\r\n fontSize: '12px',\r\n color: COLOR_ERROR[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {errorMessage}\r\n </Box>\r\n )}\r\n\r\n {success && successMessage && (\r\n <Box\r\n sx={{\r\n fontSize: '12px',\r\n color: COLOR_SUCCESS[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Box>\r\n )}\r\n\r\n {helperText && !error && !success && (\r\n <Box\r\n sx={{\r\n fontSize: '12px',\r\n color: COLOR_NEUTRAL[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {helperText}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default SearchDropdownComponent;\r\n","import { COLOR_NEUTRAL } from '@/constants';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport { Autocomplete, InputAdornment, styled, SxProps, TextField, Theme } from '@mui/material';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\ninterface SearchFieldProps {\r\n borderRadius?: number | 'max';\r\n placeholder?: string;\r\n value?: string;\r\n onClear?: () => void;\r\n onChange?: (event: React.SyntheticEvent, value: unknown) => void;\r\n onInputChange?: (event: React.SyntheticEvent, value: string, reason: string) => void;\r\n disabled?: boolean;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst StyledAutocomplete = styled(Autocomplete)(({ theme }) => ({\r\n '& .MuiOutlinedInput-root': {\r\n padding: '0 !important',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n\r\n '& fieldset': {\r\n borderColor: COLOR_NEUTRAL[300],\r\n },\r\n\r\n '&:hover fieldset': {\r\n borderColor: COLOR_NEUTRAL[400],\r\n },\r\n\r\n '&.Mui-focused fieldset': {\r\n borderColor: COLOR_NEUTRAL[300] + ' !important',\r\n },\r\n\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n\r\n '& fieldset': {\r\n borderColor: COLOR_NEUTRAL[200],\r\n },\r\n },\r\n },\r\n\r\n '& .MuiInputBase-input': {\r\n padding: '8px 8px 8px 0 !important',\r\n fontSize: '14px',\r\n flex: 1,\r\n\r\n '&::placeholder': {\r\n color: COLOR_NEUTRAL[400],\r\n opacity: 1,\r\n },\r\n\r\n '&.Mui-disabled': {\r\n color: COLOR_NEUTRAL[400],\r\n WebkitTextFillColor: COLOR_NEUTRAL[400],\r\n },\r\n },\r\n\r\n '& .MuiAutocomplete-endAdornment': {\r\n paddingRight: '8px',\r\n },\r\n}));\r\n\r\nconst SearchFieldComponent = ({\r\n value,\r\n onChange,\r\n onClear,\r\n onInputChange,\r\n borderRadius = 6,\r\n disabled = false,\r\n placeholder = 'Placeholder',\r\n sx,\r\n}: SearchFieldProps) => {\r\n const DEBOUNCE_DELAY = 1000;\r\n const [inputValue, setInputValue] = useState('');\r\n const debounceTimer = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n if (debounceTimer.current) {\r\n clearTimeout(debounceTimer.current);\r\n }\r\n\r\n debounceTimer.current = setTimeout(() => {\r\n onInputChange?.(new Event('debounce') as any, inputValue, 'debounce');\r\n }, DEBOUNCE_DELAY);\r\n\r\n return () => {\r\n if (debounceTimer.current) {\r\n clearTimeout(debounceTimer.current);\r\n }\r\n };\r\n }, [inputValue, onInputChange]);\r\n\r\n const handleInputChange = useCallback((event: React.SyntheticEvent, value: string) => {\r\n setInputValue(value);\r\n }, []);\r\n\r\n const handleClear = useCallback(() => {\r\n setInputValue('');\r\n onClear?.();\r\n onInputChange?.(new Event('clear') as any, '', 'clear');\r\n }, [onClear, onInputChange]);\r\n\r\n return (\r\n <StyledAutocomplete\r\n freeSolo\r\n options={[]}\r\n inputValue={inputValue}\r\n onInputChange={handleInputChange}\r\n disabled={disabled}\r\n onChange={onChange as any}\r\n noOptionsText={null}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n },\r\n ...sx,\r\n }}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n placeholder={placeholder}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n InputProps={{\r\n ...params.InputProps,\r\n startAdornment: (\r\n <InputAdornment position=\"start\" sx={{ marginLeft: '8px' }}>\r\n <SearchIcon sx={{ color: '#999', fontSize: '20px' }} />\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n )}\r\n componentsProps={{\r\n clearIndicator: {\r\n onClick: handleClear,\r\n },\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default SearchFieldComponent;\r\n","import React from 'react';\r\nimport { Switch, styled } from '@mui/material';\r\nimport { StackRowAlignCenterJustEnd } from '@/styles/stack.style';\r\n\r\nconst SWITCH_SIZE = {\r\n small: { width: '36px', height: '20px', thumbSize: '16px' },\r\n medium: { width: '44px', height: '24px', thumbSize: '20px' },\r\n};\r\n\r\nconst SWITCH_COLORS = {\r\n dark: {\r\n trackBackgroundColor: '#F2F4F7',\r\n trackHoverColor: '#EAECF0',\r\n trackCheckedColor: '#07554B',\r\n thumbFocusColor: '#F4EBFF',\r\n },\r\n light: {\r\n trackBackgroundColor: '#F9F5FF',\r\n trackHoverColor: '#F4EBFF',\r\n trackCheckedColor: '#E9D7FE',\r\n thumbFocusColor: '#F4EBFF',\r\n },\r\n} as const;\r\n\r\ninterface SwitchComponentProps {\r\n checked?: boolean;\r\n disabled?: boolean;\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean) => void;\r\n sx?: object;\r\n size?: 'small' | 'medium';\r\n title?: string;\r\n}\r\n\r\nconst StyledSwitch = styled(Switch, {\r\n shouldForwardProp: (prop) => prop !== 'size',\r\n})<{ size?: 'small' | 'medium' }>(({ theme, size = 'medium' }) => {\r\n const mode = theme.palette.mode as 'light' | 'dark';\r\n const { width, height, thumbSize } = SWITCH_SIZE[size];\r\n\r\n const { trackBackgroundColor, trackHoverColor, trackCheckedColor, thumbFocusColor } =\r\n SWITCH_COLORS[mode] || SWITCH_COLORS.light;\r\n\r\n return {\r\n width,\r\n height,\r\n padding: 0,\r\n\r\n '& .MuiSwitch-switchBase': {\r\n padding: 0,\r\n margin: 2,\r\n transitionDuration: '300ms',\r\n\r\n '&.Mui-checked': {\r\n transform: `translateX(${size === 'small' ? '16px' : '20px'})`,\r\n color: '#FFFFFF',\r\n\r\n '& + .MuiSwitch-track': {\r\n backgroundColor: trackCheckedColor,\r\n opacity: 1,\r\n border: 0,\r\n },\r\n },\r\n\r\n '&.Mui-focusVisible .MuiSwitch-thumb': {\r\n color: thumbFocusColor,\r\n border: '6px solid #fff',\r\n boxShadow: '0 0 0 4px #F4EBFF',\r\n },\r\n\r\n '&.Mui-disabled .MuiSwitch-thumb': {\r\n color: '#FFFFFF',\r\n },\r\n\r\n '&.Mui-disabled + .MuiSwitch-track': {\r\n backgroundColor: trackBackgroundColor,\r\n },\r\n },\r\n\r\n '& .MuiSwitch-thumb': {\r\n boxSizing: 'border-box',\r\n width: thumbSize,\r\n height: thumbSize,\r\n },\r\n\r\n '& .MuiSwitch-track': {\r\n borderRadius: 26 / 2,\r\n backgroundColor: trackBackgroundColor,\r\n opacity: 1,\r\n transition: theme.transitions.create(['background-color'], {\r\n duration: 500,\r\n }),\r\n\r\n '&:hover': {\r\n backgroundColor: trackHoverColor,\r\n },\r\n },\r\n };\r\n});\r\n\r\nconst SwitchComponent: React.FC<SwitchComponentProps> = ({ title, sx, ...switchProps }) => {\r\n if (!title) {\r\n return <StyledSwitch disableRipple {...switchProps} />;\r\n }\r\n\r\n return (\r\n <StackRowAlignCenterJustEnd\r\n sx={{\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '12px',\r\n ...sx,\r\n }}\r\n >\r\n <StyledSwitch disableRipple {...switchProps} />\r\n {title}\r\n </StackRowAlignCenterJustEnd>\r\n );\r\n};\r\n\r\nexport default SwitchComponent;\r\n","import { SxProps, Theme } from '@mui/material';\r\n\r\nexport const TAB_STYLES: SxProps<Theme> = {\r\n position: 'relative',\r\n padding: '18px 16px',\r\n cursor: 'pointer',\r\n minHeight: 44,\r\n '&:hover': {\r\n bgcolor: '#F3F4F6',\r\n },\r\n};\r\n\r\nexport const TAB_BACKGROUND_STYLES: SxProps<Theme> = {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n borderRadius: 1,\r\n};\r\n\r\nexport const TAB_UNDERLINE_STYLES: SxProps<Theme> = {\r\n width: '1px',\r\n alignSelf: 'stretch',\r\n bgcolor: '#E5E7EB',\r\n};\r\n\r\nexport const TABS_CONTAINER_HORIZONTAL: SxProps<Theme> = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n borderBottom: '2px solid #E5E7EB',\r\n};\r\n\r\nexport const TAB_ACTIVE_BACKGROUND_HORIZONTAL: SxProps<Theme> = {\r\n position: 'absolute',\r\n bottom: -2,\r\n left: 0,\r\n right: 0,\r\n height: '2px',\r\n bgcolor: '#0F766E',\r\n};\r\n\r\nexport const TABS_CONTAINER_VERTICAL: SxProps<Theme> = {\r\n position: 'relative',\r\n padding: '10px',\r\n cursor: 'pointer',\r\n minHeight: 40,\r\n '&:hover': {\r\n bgcolor: '#F3F4F6',\r\n },\r\n width: '100%',\r\n};\r\n\r\nexport const TAB_ACTIVE_BACKGROUND_VERTICAL: SxProps<Theme> = {\r\n position: 'absolute',\r\n inset: 0,\r\n bgcolor: '#E6EEED',\r\n borderRadius: 1,\r\n};\r\n\r\nexport enum TabColors {\r\n ACTIVE_TEXT = '#0F766E',\r\n INACTIVE_TEXT = '#6B7280',\r\n HOVER_BACKGROUND = '#F3F4F6',\r\n MENU_ACTIVE_BACKGROUND = '#E0F2FE',\r\n}\r\n","import { useEffect, useId, useState } from 'react';\r\nimport { LayoutGroup, motion } from 'framer-motion';\r\nimport { Stack, Box, Menu, MenuItem } from '@mui/material';\r\nimport React from 'react';\r\nimport { SxProps, Theme } from '@mui/material';\r\nimport {\r\n TAB_ACTIVE_BACKGROUND_HORIZONTAL,\r\n TAB_ACTIVE_BACKGROUND_VERTICAL,\r\n TAB_STYLES,\r\n TAB_UNDERLINE_STYLES,\r\n TabColors,\r\n TABS_CONTAINER_HORIZONTAL,\r\n TABS_CONTAINER_VERTICAL,\r\n} from './tab.constant';\r\nimport { TYPOGRAPHY_STYLES } from '@/constants';\r\nimport { PADDING_GAP_ITEM_SMALL } from '@/constants/style.constant';\r\nimport { IconElement } from '../icon';\r\nimport { LinkElement } from '../link';\r\nexport interface TabComponent {\r\n id: string;\r\n icon?: string;\r\n name: string;\r\n onClick?: () => void;\r\n href?: string;\r\n}\r\n\r\nexport interface TabsComponentProps {\r\n idSelect?: string;\r\n tabs: TabComponent[];\r\n size?: 'large' | 'small' | 'medium';\r\n direction?: 'column' | 'row';\r\n maxDisplay?: number;\r\n onChange?: (newValue: string) => void;\r\n sx?: SxProps<Theme>;\r\n sxTabs?: SxProps<Theme>;\r\n sxWrapper?: SxProps<Theme>;\r\n}\r\n\r\nconst TabsComponent: React.FC<TabsComponentProps> = ({\r\n idSelect,\r\n tabs,\r\n size,\r\n direction = 'row',\r\n maxDisplay,\r\n onChange,\r\n sx,\r\n sxTabs,\r\n sxWrapper,\r\n}) => {\r\n // state\r\n const [selected, setSelected] = useState(idSelect);\r\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n const layoutGroupId = useId();\r\n\r\n useEffect(() => {\r\n setSelected(idSelect);\r\n }, [idSelect]);\r\n\r\n const isVertical = direction === 'column';\r\n const showOverflow = !isVertical && maxDisplay && tabs.length > maxDisplay;\r\n const visibleTabs = showOverflow ? tabs.slice(0, maxDisplay) : tabs;\r\n const overflowTabs = showOverflow ? tabs.slice(maxDisplay) : [];\r\n\r\n // function\r\n const handleOpenDropdown = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleTabClick = (tab: (typeof tabs)[0]) => {\r\n setSelected(tab.id);\r\n onChange?.(tab.id);\r\n if (tab.onClick) {\r\n tab.onClick();\r\n }\r\n };\r\n\r\n const handleOverflowItemClick = (tab: (typeof tabs)[0]) => {\r\n handleTabClick(tab);\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {isVertical ? (\r\n <LayoutGroup id={layoutGroupId}>\r\n <Stack direction=\"column\" sx={{ width: 'fit-content', gap: PADDING_GAP_ITEM_SMALL, ...sxWrapper }}>\r\n {tabs.map((tab) => {\r\n const isActive = tab.id === selected;\r\n\r\n return (\r\n <LinkElement href={tab.href} onClick={tab.onClick} key={tab.id} id={tab.id}>\r\n <Box sx={{ position: 'relative' }}>\r\n <Stack\r\n component={motion.div}\r\n sx={{\r\n ...TABS_CONTAINER_VERTICAL,\r\n color: isActive ? TabColors.ACTIVE_TEXT : TabColors.INACTIVE_TEXT,\r\n }}\r\n onTap={() => handleTabClick(tab)}\r\n >\r\n <Box\r\n sx={{\r\n ...TYPOGRAPHY_STYLES.textMd.medium,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: tab.icon ? 0.5 : 0,\r\n position: 'relative',\r\n zIndex: 1,\r\n ...sx,\r\n }}\r\n >\r\n {tab.icon && <IconElement size={size} icon={tab.icon} />}\r\n {tab.name}\r\n </Box>\r\n </Stack>\r\n\r\n {isActive && (\r\n <Box\r\n component={motion.div}\r\n sx={{ ...TAB_ACTIVE_BACKGROUND_VERTICAL }}\r\n layoutId={`${layoutGroupId}-background`}\r\n />\r\n )}\r\n </Box>\r\n </LinkElement>\r\n );\r\n })}\r\n </Stack>\r\n </LayoutGroup>\r\n ) : (\r\n <LayoutGroup id={layoutGroupId}>\r\n <Box sx={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\r\n <Box sx={{ ...TABS_CONTAINER_HORIZONTAL }}>\r\n {visibleTabs.map((tab) => {\r\n const isActive = tab.id === selected;\r\n return (\r\n <LinkElement href={tab.href} onClick={tab.onClick} key={tab.id} id={tab.id}>\r\n <Stack\r\n component={motion.div}\r\n sx={{\r\n color: isActive ? TabColors.ACTIVE_TEXT : TabColors.INACTIVE_TEXT,\r\n position: 'relative',\r\n padding: '18px 16px',\r\n cursor: 'pointer',\r\n minHeight: 40,\r\n '&:hover': {\r\n bgcolor: TabColors.HOVER_BACKGROUND,\r\n },\r\n ...sxTabs,\r\n }}\r\n onTap={() => handleTabClick(tab)}\r\n >\r\n <Box\r\n sx={{\r\n ...TYPOGRAPHY_STYLES.textMd.medium,\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: tab.icon ? 0.5 : 0,\r\n ...sx,\r\n }}\r\n >\r\n {tab.icon && <IconElement size={size} icon={tab.icon} />}\r\n {tab.name}\r\n </Box>\r\n\r\n {isActive && (\r\n <Box\r\n component={motion.div}\r\n sx={{ ...TAB_ACTIVE_BACKGROUND_HORIZONTAL }}\r\n layoutId={`${layoutGroupId}-underline`}\r\n />\r\n )}\r\n </Stack>\r\n </LinkElement>\r\n );\r\n })}\r\n\r\n {showOverflow && (\r\n <React.Fragment>\r\n <Box sx={{ ...TAB_UNDERLINE_STYLES }} />\r\n <Stack\r\n sx={{\r\n ...TAB_STYLES,\r\n }}\r\n onClick={handleOpenDropdown}\r\n >\r\n <IconElement icon=\"more_horiz\" size={size} />\r\n </Stack>\r\n </React.Fragment>\r\n )}\r\n </Box>\r\n\r\n <Menu\r\n disableScrollLock\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={() => setAnchorEl(null)}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'left',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'left',\r\n }}\r\n >\r\n {overflowTabs.map((tab) => {\r\n const isActive = tab.id === selected;\r\n\r\n return (\r\n <MenuItem\r\n key={tab.id}\r\n onClick={() => handleOverflowItemClick(tab)}\r\n sx={{\r\n color: isActive ? TabColors.ACTIVE_TEXT : TabColors.INACTIVE_TEXT,\r\n bgcolor: isActive ? TabColors.MENU_ACTIVE_BACKGROUND : 'transparent',\r\n '&:hover': {\r\n bgcolor: isActive ? TabColors.MENU_ACTIVE_BACKGROUND : TabColors.HOVER_BACKGROUND,\r\n },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: tab.icon ? 0.5 : 0,\r\n }}\r\n >\r\n {tab.icon && <IconElement size={size} icon={tab.icon} />}\r\n {tab.name}\r\n </Box>\r\n </MenuItem>\r\n );\r\n })}\r\n </Menu>\r\n </Box>\r\n </LayoutGroup>\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default TabsComponent;\r\n","import { COLOR_ERROR, COLOR_GRAY, COLOR_NEUTRAL, COLOR_SUCCESS, TYPOGRAPHY } from '@/constants';\r\nimport { Box, SxProps, TextField, Theme, Typography } from '@mui/material';\r\nimport { ReactNode } from 'react';\r\ninterface TextAreaProps {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (value: string) => void;\r\n onBlur?: (value: string) => void;\r\n helperText?: string;\r\n rows?: number;\r\n maxLength?: number;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst TextAreaComponent = ({\r\n label = '',\r\n placeholder = '',\r\n value = '',\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n onChange,\r\n onBlur,\r\n helperText = '',\r\n rows = 4,\r\n maxLength,\r\n sx,\r\n}: TextAreaProps) => {\r\n const borderRadiusValue = borderRadius === 'max' ? '100px' : `${borderRadius}px`;\r\n\r\n const getHelperText = () => {\r\n if (error && errorMessage) return errorMessage;\r\n if (success && successMessage) return successMessage;\r\n if (helperText) return helperText;\r\n return '';\r\n };\r\n\r\n const getHelperTextColor = () => {\r\n if (error) return COLOR_ERROR[500];\r\n if (success) return COLOR_SUCCESS[500];\r\n return COLOR_NEUTRAL[400];\r\n };\r\n\r\n const getBorderColor = () => {\r\n if (error) return COLOR_ERROR[500];\r\n if (success) return COLOR_SUCCESS[500];\r\n return COLOR_NEUTRAL[300];\r\n };\r\n\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n\r\n <Box sx={{ position: 'relative' }}>\r\n <TextField\r\n fullWidth\r\n multiline\r\n rows={rows}\r\n placeholder={placeholder}\r\n value={value}\r\n disabled={disabled}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n onBlur={(e) => onBlur?.(e.target.value)}\r\n inputProps={{\r\n maxLength: maxLength,\r\n style: {\r\n ...TYPOGRAPHY.text14Regular,\r\n paddingBottom: maxLength ? '24px' : '0px',\r\n },\r\n }}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadiusValue,\r\n backgroundColor: disabled ? COLOR_NEUTRAL[100] : 'white',\r\n transition: 'all 0.2s ease',\r\n '& fieldset': {\r\n borderColor: getBorderColor(),\r\n },\r\n '&:hover fieldset': {\r\n borderColor: disabled ? getBorderColor() : error ? COLOR_ERROR[500] : COLOR_NEUTRAL[400],\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: error ? COLOR_ERROR[500] : COLOR_NEUTRAL[400],\r\n borderWidth: '1.5px',\r\n },\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: value ? COLOR_GRAY[900] : COLOR_NEUTRAL[400],\r\n '&::placeholder': {\r\n color: COLOR_NEUTRAL[400],\r\n opacity: 1,\r\n },\r\n '&:disabled': {\r\n color: COLOR_NEUTRAL[400],\r\n WebkitTextFillColor: COLOR_NEUTRAL[400],\r\n },\r\n },\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n borderColor: getBorderColor(),\r\n },\r\n }}\r\n />\r\n\r\n {/* Character counter inside textarea */}\r\n {maxLength && (\r\n <Box\r\n sx={{\r\n position: 'absolute',\r\n bottom: '8px',\r\n right: '12px',\r\n fontSize: '12px',\r\n color: COLOR_NEUTRAL[400],\r\n pointerEvents: 'none',\r\n }}\r\n >\r\n ({value?.length}/{maxLength})\r\n </Box>\r\n )}\r\n </Box>\r\n\r\n {/* Helper, Error, or Success text */}\r\n {getHelperText() && (\r\n <Box\r\n sx={{\r\n color: getHelperTextColor(),\r\n marginTop: '4px',\r\n ...TYPOGRAPHY.textFieldHelper,\r\n }}\r\n >\r\n {getHelperText()}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default TextAreaComponent;\r\n","import { styled, SxProps, Theme } from '@mui/material/styles';\r\nimport MuiTextField, { TextFieldProps as MuiTextFieldProps } from '@mui/material/TextField';\r\nimport { Box, Typography, InputAdornment } from '@mui/material';\r\nimport { ReactNode } from 'react';\r\nimport { COLOR_NEUTRAL, TYPOGRAPHY, COLOR_GRAY, COLOR_ERROR, COLOR_SUCCESS } from '@/constants';\r\ninterface TextFieldProps extends Omit<MuiTextFieldProps, 'variant'> {\r\n label?: string;\r\n placeholder?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n success?: boolean;\r\n errorMessage?: ReactNode;\r\n successMessage?: ReactNode;\r\n borderRadius?: number | 'max';\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n iconBefore?: ReactNode;\r\n iconAfter?: ReactNode;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst StyledTextField = styled(MuiTextField)(({ theme }) => {\r\n return {\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[300] },\r\n '&:hover fieldset': { borderColor: COLOR_NEUTRAL[400] },\r\n '&.Mui-focused fieldset': { borderColor: COLOR_NEUTRAL[300], borderWidth: '2px' },\r\n '&.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px #FEE4E2',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: COLOR_NEUTRAL[100],\r\n '& fieldset': { borderColor: COLOR_NEUTRAL[200] },\r\n '& input': { color: COLOR_NEUTRAL[400], WebkitTextFillColor: COLOR_NEUTRAL[400] },\r\n },\r\n '&.Mui-error fieldset': { borderColor: COLOR_ERROR[500], borderWidth: '1px' },\r\n '&.Mui-error:hover fieldset': { borderColor: COLOR_ERROR[500] },\r\n '&.Mui-error.Mui-focused fieldset': { borderColor: COLOR_ERROR[500], borderWidth: '2px' },\r\n '&.Mui-error.Mui-focused': {\r\n boxShadow: '0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px rgba(255, 66, 79, 0.15)',\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n ...TYPOGRAPHY.text14Regular,\r\n padding: '12px 16px',\r\n color: COLOR_GRAY[900],\r\n '&::placeholder': { color: COLOR_NEUTRAL[400], opacity: 0.7 },\r\n '&:focus': { outline: 'none' },\r\n },\r\n '& .MuiInputLabel-root': {\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n transform: 'translate(14px, -9px) scale(0.75)',\r\n '&.Mui-focused': { color: COLOR_NEUTRAL[500] },\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n '& .MuiFormHelperText-root': {\r\n ...TYPOGRAPHY.textFieldHelper,\r\n margin: '4px 0 0 0',\r\n '&.Mui-error': { color: COLOR_ERROR[600] },\r\n },\r\n };\r\n});\r\n\r\nconst TextFieldComponent = ({\r\n label,\r\n placeholder = 'Placeholder',\r\n value,\r\n disabled = false,\r\n error = false,\r\n success = false,\r\n errorMessage,\r\n successMessage,\r\n borderRadius = 6,\r\n helperText,\r\n onChange,\r\n iconBefore,\r\n iconAfter,\r\n sx,\r\n ...props\r\n}: TextFieldProps) => {\r\n return (\r\n <Box sx={{ ...sx }}>\r\n {label && (\r\n <Typography\r\n sx={{\r\n display: 'block',\r\n ...TYPOGRAPHY.textFieldLabel,\r\n color: COLOR_GRAY[800],\r\n marginBottom: '4px',\r\n }}\r\n >\r\n {label}\r\n </Typography>\r\n )}\r\n <StyledTextField\r\n placeholder={placeholder}\r\n value={value}\r\n disabled={disabled}\r\n error={error}\r\n helperText={error ? errorMessage : helperText}\r\n size=\"small\"\r\n fullWidth\r\n onChange={onChange}\r\n InputProps={{\r\n startAdornment: iconBefore ? <InputAdornment position=\"start\">{iconBefore}</InputAdornment> : undefined,\r\n endAdornment: iconAfter ? <InputAdornment position=\"end\">{iconAfter}</InputAdornment> : undefined,\r\n }}\r\n sx={{\r\n '& .MuiOutlinedInput-root': {\r\n borderRadius: borderRadius === 'max' ? '100px' : `${borderRadius}px`,\r\n ...(success && {\r\n '&.Mui-focused': {\r\n boxShadow: `0 1px 2px 0 rgba(10, 13, 18, 0.05), 0 0 0 4px ${COLOR_SUCCESS[100]}`,\r\n },\r\n }),\r\n },\r\n }}\r\n {...props}\r\n />\r\n {success && !error && successMessage && (\r\n <Typography\r\n sx={{\r\n ...TYPOGRAPHY.textFieldHelper,\r\n color: COLOR_SUCCESS[500],\r\n marginTop: '4px',\r\n }}\r\n >\r\n {successMessage}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default TextFieldComponent;\r\n","import { COLOR_GRAY } from \"@/constants\";\r\n\r\nexport const SX_STYLES = {\r\n progressBar: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n backgroundColor: COLOR_GRAY[200],\r\n opacity: 0.8,\r\n transition: 'width 0.3s ease, opacity 0.3s ease',\r\n animation: 'wave 1.5s linear infinite',\r\n '@keyframes wave': {\r\n '0%': { backgroundPosition: '0% 0%' },\r\n '50%': { backgroundPosition: '100% 0%' },\r\n '100%': { backgroundPosition: '0% 0%' },\r\n },\r\n },\r\n imageIcon: {\r\n width: '40px',\r\n height: '40px',\r\n flexShrink: 0,\r\n position: 'relative',\r\n zIndex: 1,\r\n },\r\n contentBox: {\r\n flexGrow: 1,\r\n minWidth: 0,\r\n position: 'relative',\r\n zIndex: 1,\r\n },\r\n textBox: {\r\n minWidth: 0,\r\n flexGrow: 1,\r\n mr: 2,\r\n },\r\n actionBox: {\r\n flexShrink: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n position: 'relative',\r\n zIndex: 1,\r\n },\r\n linearProgress: {\r\n mt: 1,\r\n width: '100%',\r\n },\r\n};\r\n","import CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\nimport RefreshIcon from '@mui/icons-material/Refresh';\r\nimport { Box, CircularProgress, IconButton, LinearProgress, SxProps, Theme, Typography } from '@mui/material';\r\nimport { useMemo } from 'react';\r\nimport { SX_STYLES } from './uploader-item.styles';\r\nimport { COLOR_ERROR, TYPOGRAPHY } from '@/constants';\r\nimport { StackRowAlignCenterJustBetween } from '@/styles/stack.style';\r\nimport { IconElement } from '../icon';\r\n\r\nconst VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'wmv', 'flv', 'mkv', 'webm'];\r\n\r\nconst ICON_PATH = {\r\n VIDEO: '/images/icon/film.svg',\r\n FILE: '/images/icon/file.svg',\r\n};\r\n// ============================================================================\r\n// Types & Interfaces\r\n// ============================================================================\r\ninterface UploaderItemProps {\r\n file: File | { name: string; size: number };\r\n progress?: number;\r\n status?: 'pending' | 'uploading' | 'success' | 'failed';\r\n onDelete?: () => void;\r\n onRetry?: () => void;\r\n isProcess?: boolean;\r\n borderSuccess?: string;\r\n borderError?: string;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\n// ============================================================================\r\n// Helper Functions\r\n// ============================================================================\r\n\r\nconst formatFileSize = (bytes: number): string => {\r\n if (bytes === 0) return '0 Bytes';\r\n const k = 1024;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\r\n};\r\n\r\nconst getFileIcon = (fileName: string): string => {\r\n const ext = fileName.split('.').pop()?.toLowerCase();\r\n return ext && VIDEO_EXTENSIONS.includes(ext) ? ICON_PATH.VIDEO : ICON_PATH.FILE;\r\n};\r\n\r\n// ============================================================================\r\n// Component\r\n// ============================================================================\r\n\r\n const UploaderItemComponent: React.FC<UploaderItemProps> = ({\r\n file,\r\n progress = 0,\r\n status = 'pending',\r\n onDelete,\r\n onRetry,\r\n isProcess = true,\r\n borderSuccess,\r\n borderError = COLOR_ERROR[600],\r\n sx,\r\n}) => {\r\n // Memoize\r\n const iconSrc = useMemo(() => getFileIcon(file.name), [file.name]);\r\n\r\n // Status flags\r\n const isCompleted = status === 'success';\r\n const isFailed = status === 'failed';\r\n const isUploading = status === 'uploading';\r\n\r\n // Determine colors based on status\r\n const borderColor: string = isFailed\r\n ? String(borderError)\r\n : isCompleted && borderSuccess\r\n ? String(borderSuccess)\r\n : '#e0e0e0';\r\n const textColor: string = isFailed ? String(borderError) : '#737373';\r\n const subtitleColor: string = isFailed ? String(borderError) : '#a3a3a3';\r\n\r\n // Render progress info\r\n const renderProgressInfo = () => {\r\n if (isUploading && !isCompleted) return ` • ${Math.round(progress)}% uploaded`;\r\n if (isFailed) return ' • Upload failed';\r\n return '';\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n padding: '16px',\r\n border: '1px solid',\r\n borderColor: borderColor,\r\n borderRadius: '8px',\r\n gap: '16px',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n transition: 'background-color 0.3s ease',\r\n backgroundColor: 'background.paper',\r\n ...sx,\r\n }}\r\n >\r\n {/* Progress background fill - only when isProcess is false and uploading */}\r\n {!isProcess && isUploading && !isCompleted && !isFailed && (\r\n <Box sx={{ ...SX_STYLES.progressBar, width: `${progress}%` }} />\r\n )}\r\n\r\n {/* File Icon */}\r\n <Box component=\"img\" src={iconSrc} alt=\"file icon\" sx={SX_STYLES.imageIcon} />\r\n\r\n {/* Content */}\r\n <Box sx={SX_STYLES.contentBox}>\r\n <StackRowAlignCenterJustBetween>\r\n {/* File Info */}\r\n <Box sx={SX_STYLES.textBox}>\r\n <Typography noWrap title={file.name} sx={{ ...TYPOGRAPHY.text14Medium, color: textColor }}>\r\n {file.name}\r\n </Typography>\r\n <Typography sx={{ ...TYPOGRAPHY.text14Regular, color: subtitleColor }}>\r\n {formatFileSize(file.size)}\r\n {renderProgressInfo()}\r\n </Typography>\r\n </Box>\r\n\r\n {/* Actions */}\r\n <Box sx={SX_STYLES.actionBox}>\r\n {/* Circular Progress */}\r\n {!isProcess && isUploading && !isCompleted && (\r\n <Box sx={{ position: 'relative', display: 'inline-flex', mr: 1 }}>\r\n <CircularProgress variant=\"determinate\" value={progress} color=\"success\" size={24} />\r\n </Box>\r\n )}\r\n\r\n {/* Success Icon */}\r\n {isCompleted && <CheckCircleIcon color=\"success\" sx={{ mr: 1 }} />}\r\n\r\n {/* Retry Button */}\r\n {isFailed && onRetry && (\r\n <IconButton size=\"small\" onClick={onRetry} title=\"Retry upload\">\r\n <RefreshIcon fontSize=\"small\" sx={{ color: borderError }} />\r\n </IconButton>\r\n )}\r\n\r\n {/* Delete Button */}\r\n {!isFailed && onDelete && (\r\n <IconButton size=\"small\" onClick={onDelete}>\r\n <IconElement icon=\"delete\" />\r\n </IconButton>\r\n )}\r\n </Box>\r\n </StackRowAlignCenterJustBetween>\r\n\r\n {/* Linear Progress Bar */}\r\n {isProcess && isUploading && (\r\n <Box sx={SX_STYLES.linearProgress}>\r\n <LinearProgress\r\n variant=\"determinate\"\r\n value={progress}\r\n color=\"success\"\r\n sx={{ height: 8, borderRadius: 4 }}\r\n />\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default UploaderItemComponent;","import { Box, SxProps, Theme } from '@mui/material';\r\nimport React, { ReactNode, useRef, useState } from 'react';\r\nimport UploaderItemComponent from './uploader-item.component';\r\n\r\ninterface UploaderProps {\r\n /** Callback khi có file được chọn */\r\n onFilesSelected: (files: File[]) => void;\r\n /** Loại file chấp nhận (e.g., '.pdf,.doc') */\r\n accept?: string;\r\n /** Cho phép multiple files */\r\n multiple?: boolean;\r\n /** Content/label hiển thị bên trong box */\r\n children?: ReactNode;\r\n /** CSS cho container (MUI sx) */\r\n sx?: SxProps<Theme>;\r\n /** CSS cho text \"click to upload\" */\r\n labelSx?: SxProps<Theme>;\r\n /** Text \"click to upload\" */\r\n uploadLabel?: string;\r\n /** Tùy chỉnh màu sắc giao diện */\r\n appearance?: {\r\n background?: string;\r\n borderColor?: string;\r\n borderColorHover?: string;\r\n borderSuccess?: string;\r\n };\r\n /** Danh sách file để hiển thị (kèm progress) */\r\n files?: Array<{\r\n file: File | { name: string; size: number };\r\n progress?: number;\r\n isProcess?: boolean; // true horizontal (linear), false circular\r\n status?: 'pending' | 'uploading' | 'success' | 'failed';\r\n id?: string | number;\r\n }>;\r\n /** Callback xoá file */\r\n onDeleteFile?: (file: File | { name: string; size: number }) => void;\r\n /** Callback retry file */\r\n onRetryFile?: (fileId: string | number | undefined) => void;\r\n /** Border color for error state */\r\n borderError?: string;\r\n}\r\n\r\nconst UploaderComponent: React.FC<UploaderProps> = ({\r\n onFilesSelected,\r\n accept = '*',\r\n multiple = true,\r\n children,\r\n sx,\r\n labelSx,\r\n uploadLabel = 'Click to upload',\r\n appearance,\r\n files: externalFiles,\r\n onDeleteFile,\r\n onRetryFile,\r\n borderError,\r\n}) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n // Sử dụng external files nếu có, nếu không hiển thị rỗng\r\n const displayFiles = externalFiles || [];\r\n\r\n const handleClick = () => {\r\n fileInputRef.current?.click();\r\n };\r\n\r\n const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const selectedFiles = event.target.files;\r\n if (selectedFiles) {\r\n const fileArray = Array.from(selectedFiles);\r\n onFilesSelected(fileArray);\r\n }\r\n event.target.value = '';\r\n };\r\n\r\n const handleDeleteFile = (file: File | { name: string; size: number }) => {\r\n if (onDeleteFile) {\r\n onDeleteFile(file);\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsDragging(false);\r\n\r\n const files = e.dataTransfer.files;\r\n if (files) {\r\n onFilesSelected(Array.from(files));\r\n }\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n border: '2px solid',\r\n borderColor: appearance?.borderColor || 'action.selected',\r\n borderRadius: '8px',\r\n padding: '32px 24px',\r\n textAlign: 'center',\r\n cursor: 'pointer',\r\n transition: 'all 0.3s ease',\r\n backgroundColor: isDragging ? 'action.selected' : appearance?.background || 'background.paper',\r\n '&:hover': {\r\n borderColor: appearance?.borderColorHover || appearance?.borderColor || 'primary.main',\r\n filter: 'brightness(0.92)',\r\n },\r\n ...sx,\r\n }}\r\n onClick={handleClick}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n >\r\n <input\r\n ref={fileInputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n style={{ display: 'none' }}\r\n />\r\n\r\n {displayFiles.length === 0 && (\r\n <>\r\n {children ? (\r\n <Box>\r\n {children}\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n color: 'primary.main',\r\n textDecoration: 'underline',\r\n fontWeight: 500,\r\n fontSize: '14px',\r\n marginTop: '12px',\r\n margin: '12px 0 0 0',\r\n ...labelSx,\r\n }}\r\n >\r\n {uploadLabel} or drag and drop\r\n </Box>\r\n </Box>\r\n ) : (\r\n <Box>\r\n <Box\r\n component=\"img\"\r\n src=\"/images/icon/uploader.svg\"\r\n alt=\"Upload icon\"\r\n sx={{\r\n width: '46px',\r\n height: '46px',\r\n marginBottom: '12px',\r\n }}\r\n />\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n color: 'primary.main',\r\n textDecoration: 'underline',\r\n fontWeight: 500,\r\n fontSize: '14px',\r\n margin: 0,\r\n ...labelSx,\r\n }}\r\n >\r\n {uploadLabel} or drag and drop\r\n </Box>\r\n </Box>\r\n )}\r\n </>\r\n )}\r\n\r\n {/* File List Display */}\r\n {displayFiles && displayFiles.length > 0 && (\r\n <Box\r\n sx={{\r\n marginTop: '24px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '12px',\r\n textAlign: 'left',\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n {displayFiles.map((item, index) => (\r\n <UploaderItemComponent\r\n key={item.id || index}\r\n file={item.file}\r\n progress={item.progress}\r\n status={item.status}\r\n isProcess={item.isProcess ?? true}\r\n onDelete={() => handleDeleteFile(item.file)}\r\n onRetry={() => onRetryFile?.(item.id)}\r\n borderSuccess={appearance?.borderSuccess}\r\n borderError={borderError}\r\n />\r\n ))}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport default UploaderComponent;\r\n"],"names":["AvatarColor","FONT_SIZE_LOADING","styled","Stack","STYLE.PADDING_GAP_LAYOUT","STYLE.BORDER_RADIUS_ELEMENT","STYLE.PADDING_GAP_ITEM_SMALL","STYLE.BORDER_RADIUS_ELEMENT_TAG","TableCell","tableCellClasses","LinearProgress","linearProgressClasses","ImageSizeType","_jsx","_Fragment","useTheme","useState","STYLE.BORDER_RADIUS_ELEMENT_SMALL","_jsxs","Skeleton","Box","Icon","STYLE.FONT_SIZE_ICON","Typography","Link","Breadcrumbs","IconButton","Menu","MenuItem","CircularProgress","MuiButton","Chip","LocalizationProvider","AdapterDayjs","DatePicker","useRef","useMemo","useCallback","Select","Avatar","Container","TextField","StyledTextField","InputAdornment","Form","Dialog","DialogContent","DialogActions","useEffect","StyledAutocomplete","Autocomplete","Switch","useId","LayoutGroup","motion"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,YAAY,GAAG;AAC1B,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,KAAK,EAAE,EAAE;;AAEJ,MAAM,WAAW,GAAG;AACzB,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,KAAK,EAAE,EAAE;;AAGJ,MAAM,gBAAgB,GAAG;AAC9B,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,KAAK,EAAE,CAAC;;AAOH,MAAM,gBAAgB,GAAG,CAAC,QAAuB,KAAyB;AAC/E,IAAA,MAAM,SAAS,GAA+C;QAC5D,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;QAC/B,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AACjC,QAAA,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE;QACpE,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;QACrC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AACvC,QAAA,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE;KAC3E;AACD,IAAA,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC5B;AACYA;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,wBAAA,CAAA,GAAA,SAAkC;AAClC,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,SAAuB;AACvB,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,SAAuB;AACvB,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,SAA6B;AAC/B,CAAC,EALWA,mBAAW,KAAXA,mBAAW,GAAA,EAAA,CAAA,CAAA;;AC1CvB,MAAM,UAAU,GAAG,EAAE;AACrB,MAAM,WAAW,GAAG,EAAE;AACtB,MAAM,UAAU,GAAG,EAAE;AACrB,MAAM,gBAAgB,GAAG,EAAE;AAC3B,MAAM,iBAAiB,GAAG,EAAE;AACrB,MAAM,gBAAgB,GAAG;AAIzB,MAAM,QAAQ,GAAsD;IACzE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;IAChD,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;IACnD,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;IAChD,WAAW,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAClE,WAAW,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAClE,YAAY,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE;;;ACfvE;AACO,MAAM,WAAW,GAAG;AACzB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,aAAa,GAAG;AAC3B,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,UAAU,GAAG;AACxB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,WAAW,GAAG;AACzB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,aAAa,GAAG;AAC3B,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,aAAa,GAAG;AAC3B,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,UAAU,GAAG;AACxB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;AAGhB;AACO,MAAM,YAAY,GAAG;AAC1B,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;;;ACtHhB;AAIA;AAEO,MAAM,cAAc,GAAG,GAAG;AAE1B,MAAM,WAAW,GAAG,aAAa;AAEjC,MAAM,eAAe,GAAG,MAAM;AAErC;AAEO,MAAM,oBAAoB,GAAG,QAAQ;AAErC,MAAM,mBAAmB,GAAG,MAAM;AAElC,MAAM,oBAAoB,GAAG,MAAM;AAE1C;AAEO,MAAM,eAAe,GAAG,MAAM;AAE9B,MAAM,kBAAkB,GAAG,MAAM;AAEjC,MAAM,kBAAkB,GAAG,MAAM;AAEjC,MAAM,qBAAqB,GAAG,UAAU;AAExC,MAAM,gBAAgB,GAAG,KAAK;AAE9B,MAAM,sBAAsB,GAAG,KAAK;AAE3C;AAEO,MAAM,oBAAoB,GAAG,MAAM;AAE1C;AAEO,MAAM,4BAA4B,GAAG,MAAM;AAE3C,MAAM,6BAA6B,GAAG,MAAM;AAE5C,MAAM,qBAAqB,GAAG,MAAM;AAEpC,MAAM,2BAA2B,GAAG,KAAK;AAEzC,MAAM,4BAA4B,GAAG,KAAK;AAE1C,MAAM,yBAAyB,GAAG,KAAK;AAEvC,MAAM,gCAAgC,GAAG,SAAS;AAEzD;AAEO,MAAM,UAAU,GAAG;AACxB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,iBAAiB,EAAE,EAAE;CACtB;AAEM,MAAM,cAAc,GAAG;AAC5B,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,KAAK,EAAE,MAAM;CACd;AAEM,MAAMC,mBAAiB,GAAG;AAC/B,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,KAAK,EAAE,EAAE;CACV;AAEM,MAAM,eAAe,GAAyC;AACnE,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,MAAM,EAAE,WAAW;AACnB,IAAA,KAAK,EAAE,SAAS;CACjB;AAEM,MAAM,wBAAwB,GAAG;AACtC,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,KAAK;CACb;AAEM,MAAM,iBAAiB,GAAG,qBAAqB;AAE/C,MAAM,mBAAmB,GAAG,SAAS;AAErC,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,cAAc,GAAG,EAAE;AACzB,MAAM,aAAa,GAAG,GAAG;AACzB,MAAM,oBAAoB,GAAG,GAAG;AAEhC,MAAM,iBAAiB,GAAG,SAAS;AAEnC,MAAM,gBAAgB,GAAG;AAC9B,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,KAAK,EAAE,GAAG;CACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtGM,MAAM,WAAW,GAAG;AACzB,IAAA,OAAO,EAAE,mBAAmB;;AAGvB,MAAM,SAAS,GAAG;AACvB,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;;AAGL,MAAM,WAAW,GAAG;AACzB,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,OAAO,EAAE,GAAG;;AAGP,MAAM,WAAW,GAAG;AACzB,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,CAAC;;AAGH,MAAM,UAAU,GAAG;AACxB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,aAAa,EAAE,cAAc;;AAG/B;AACO,MAAM,gBAAgB,GAAG,CAC9B,QAAyB,EACzB,UAAmB,EACnB,UAAmB,EACnB,SAAkB,MACd;IACJ,UAAU,EAAE,WAAW,CAAC,OAAO;AAC/B,IAAA,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI,GAAG,QAAQ;AACnE,IAAA,UAAU,EAAE,UAAU,IAAI,WAAW,CAAC,OAAO;AAC7C,IAAA,UAAU,EAAE,UAAU,IAAI,WAAW,CAAC,MAAM;AAC5C,IAAA,SAAS,EAAE,SAAS,IAAI,UAAU,CAAC,MAAM;AAC1C,CAAA;AAED;AACO,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC;IACxD,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC;IACxD,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC;IACxD,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC;IACxD,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC;IACvD,EAAE,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC;IACvD,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5D,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC;;IAG/D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;IAClE,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;IACpE,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;IACtE,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;;IAG9D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC;IAChE,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC;IAClE,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC;IACpE,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC;;IAG5D,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC;IAChE,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC;IAClE,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC;IACpE,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC;;AAG5D,IAAA,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;AACzF,IAAA,eAAe,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;;AAG3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDG;AACI,MAAM,iBAAiB,GAAG;AAC/B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,GAAG;AAClB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,GAAG;AAClB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,aAAa,EAAE,GAAG;AAClB,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;;;ACjlBI,MAAM,QAAQ,GAAGC,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAC3C,IAAA,aAAa,EAAE,KAAK;AACrB,CAAA,CAAC,CAAC;AAEsBD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAC5C,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,QAAQ,EAAE,MAAM;AACjB,CAAA,CAAC;AAEK,MAAM,mBAAmB,GAAGD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AACtD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,QAAQ;AACrB,CAAA,CAAC,CAAC;AAE6BD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AACnD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,UAAU;AACvB,CAAA,CAAC;AAEgCD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AACrD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,cAAc,EAAE,QAAQ;AACzB,CAAA,CAAC;AAEgCD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AACrD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,cAAc,EAAE,cAAc;AAC/B,CAAA,CAAC;AAEqCD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAC1D,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,QAAQ;AACzB,CAAA,CAAC;AAEK,MAAM,0BAA0B,GAAGD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAC7D,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,UAAU;AAC3B,CAAA,CAAC,CAAC;AAE4BD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAClD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,cAAc,EAAE,UAAU;AAC3B,CAAA,CAAC;AAEiCD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AACtD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,cAAc,EAAE,eAAe;AAChC,CAAA,CAAC;AAEK,MAAM,8BAA8B,GAAGD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AACjE,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,eAAe;AAChC,CAAA,CAAC,CAAC;AAE0CD,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAChE,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,cAAc,EAAE,eAAe;AAChC,CAAA,CAAC;AAEwCD,aAAM,CAACC,cAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACtE,IAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;IACjD,OAAO,EAAEC,kBAAwB;IACjC,YAAY,EAAEC,qBAA2B;AAC1C,CAAA,CAAC;AAEsCH,aAAM,CAACC,cAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACpE,IAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;IAC/C,OAAO,EAAEC,kBAAwB;IACjC,YAAY,EAAEC,qBAA2B;AAC1C,CAAA,CAAC;AAEwBH,aAAM,CAACC,cAAK,CAAC,CAAC,OAAO;AAC7C,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAEG,sBAA4B;IACzC,GAAG,EAAEA,sBAA4B;AAClC,CAAA,CAAC;AAEuBJ,aAAM,CAACC,cAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IACrD,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA,CAAE;AACjD,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;AAC1C,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACX,CAAA,CAAC;AAEuBD,aAAM,CAACC,cAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IACrD,YAAY,EAAEI,yBAA+B;;AAE7C,IAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;AAC/C,IAAA,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3B,IAAA,KAAK,EAAE,aAAa;AACpB,IAAA,GAAG,EAAE,OAAO;AACb,CAAA,CAAC;AAE6BL,aAAM,CAACM,kBAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAC/D,IAAA,CAAC,KAAKC,yBAAgB,CAAC,IAAI,CAAA,CAAE,GAAG;AAC9B,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACjC,QAAA,UAAU,EAAE,GAAG;AAChB,KAAA;AACD,IAAA,CAAC,KAAKA,yBAAgB,CAAC,IAAI,CAAA,CAAE,GAAG;AAC9B,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,sBAAsB,EAAE,cAAc;AACvC,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,uBAAuB,EAAE,cAAc;AACxC,KAAA;AACF,CAAA,CAAC;AAEkCP,aAAM,CAACQ,uBAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACzE,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,CAAC,KAAKC,8BAAqB,CAAC,YAAY,CAAA,CAAE,GAAG;QAC3C,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAA,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACzC,CAAC;AACH,KAAA;AACD,IAAA,CAAC,MAAMA,8BAAqB,CAAC,GAAG,CAAA,CAAE,GAAG;AACnC,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;AACvC,KAAA;AACF,CAAA,CAAC;;ACxIUC;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EAJWA,qBAAa,KAAbA,qBAAa,GAAA,EAAA,CAAA,CAAA;;ACczB,MAAM,YAAY,GAAuD,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAI;IACxG,OAAO,MAAM,IACXC,cAAA,CAAC,QAAQ,EAAA,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAC,QAAQ,EAAA,QAAA,EAC7C,QAAQ,EAAA,CACA,KAEXA,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAI,CAChB;AACH,CAAC;AAEM,MAAM,YAAY,GAAgC,CAAC,EACxD,GAAG,EACH,OAAO,EACP,EAAE,GAAG,EAAE,EACP,QAAQ,GAAG,KAAK,EAChB,MAAM,GAAG,KAAK,EACd,QAAQ,GAAGF,qBAAa,CAAC,MAAM,EAC/B,IAAI,GAAG,QAAQ,EACf,GAAG,IAAI,EACR,KAAI;AACH,IAAA,MAAM,EAAE,OAAO,EAAE,GAAGG,iBAAQ,EAAE;IAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;AAE3C,IAAA,IAAI,OAAO;QAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;AAE9C,IAAA,MAAM,YAAY,GAChB,QAAQ,KAAKJ,qBAAa,CAAC;AACzB,UAAE;AACF,UAAE,QAAQ,KAAKA,qBAAa,CAAC;cAC3BK;cACA,CAAC;IAEP,QACEC,gBAAC,YAAY,EAAA,EAAC,MAAM,EAAE,MAAM,aACzB,CAAC,MAAM,KACNL,cAAA,CAACM,iBAAQ,EAAA,EACP,OAAO,EAAC,aAAa,EACrB,EAAE,EAAE;oBACF,GAAG,QAAQ,CAAC,IAAI,CAAC;oBACjB,YAAY;AACb,iBAAA,EAAA,CACD,CACH,EACDN,cAAA,CAACO,YAAG,OACE,IAAI,EACR,SAAS,EAAC,KAAK,EACf,GAAG,EAAE,GAAa,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,EAC7B,OAAO,EAAE,CAAC,CAAC,KAAI;AACZ,oBAAA,CAAC,CAAC,aAAkC,CAAC,GAAG,GAAG,qBAAqB;gBACnE,CAAC,EACD,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;oBAClC,GAAG,QAAQ,CAAC,IAAI,CAAC;AACjB,oBAAA,SAAS,EAAE,OAAO;oBAClB,YAAY;AACZ,oBAAA,MAAM,EAAE,QAAQ,GAAG,CAAA,UAAA,EAAa,OAAO,CAAC,OAAO,CAAA,CAAE,GAAG,MAAM;AAC1D,oBAAA,GAAG,EAAE;iBACN,EAAA,CACD,CAAA,EAAA,CACW;AAEnB;;ACvEA,MAAM,sBAAsB,GAAmC,CAAC,EAC9D,GAAG,EACH,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,KAAK,EACd,WAAW,GAAG,SAAS,EACvB,WAAW,GAAG,CAAC,EACf,OAAO,EACP,EAAE,GAAG,EAAE,EACP,QAAQ,EACR,GAAG,IAAI,EACR,KAAI;AACH,IAAA,QACEP,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;AACzB,YAAA,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;AAC1B,YAAA,YAAY,EAAE,KAAK;YACnB,IAAI,MAAM,IAAI;AACZ,gBAAA,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,SAAA,EAAY,WAAW,CAAA,CAAE;aAChD,CAAC;AACF,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,QAAA,EAEDP,eAAC,YAAY,EAAA,EAAA,GACP,IAAI,EACR,GAAG,EAAE,GAAG,IAAI,2BAA2B,EACvC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE;AACF,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,MAAM;gBACd,IAAI,OAAO,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACtC,aAAA,EAAA,QAAA,EAEA,QAAQ,EAAA,CACI,EAAA,CACX;AAEV;;AC9BO,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAwC,KAAI;AAChG,IAAA,MAAM,EAAE,UAAU,EAAE,GAAGE,iBAAQ,EAAE;AACjC,IAAA,QACEF,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;YACF,OAAO,EAAEpB,mBAAW,CAAC,sBAAsB;YAC3C,KAAK,EAAEA,mBAAW,CAAC,WAAW;AAC9B,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC;AAChC,YAAA,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU;SACxC,EAAA,QAAA,EAEA,IAAI,EAAA,CACD;AAEV;AAEO,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAyC,KAAI;AAC5F,IAAA,MAAM,EAAE,UAAU,EAAE,GAAGe,iBAAQ,EAAE;AACjC,IAAA,QACEF,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;YACF,OAAO,EAAEpB,mBAAW,CAAC,sBAAsB;YAC3C,KAAK,EAAEA,mBAAW,CAAC,WAAW;AAC9B,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;AACxB,YAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;AACzB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC;AAChC,YAAA,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU;SACrC,EAAA,QAAA,EAEA,MAAM,EAAA,CACH;AAEV;AAEO,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAyB,MAChEa,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,QAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;AACzB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE,iBAAiB;AAC1B,KAAA,EAAA,CACD;AAGG,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAsC,MACjFP,cAAA,CAACO,YAAG,EAAA,EACF,SAAS,EAAC,KAAK,EACf,GAAG,EAAE,GAAG,EACR,GAAG,EAAC,OAAO,EACX,EAAE,EAAE;AACF,QAAA,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;AACzB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,cAAc,EAAE,QAAQ;AACzB,KAAA,EAAA,CACD;MAGS,eAAe,GAAmC,CAAC,EAC9D,GAAG,EACH,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,KAAK,EACd,WAAW,GAAG,SAAS,EACvB,WAAW,GAAG,CAAC,EACf,KAAK,EACL,aAAa,GAAG,cAAc,EAC9B,OAAO,EACP,EAAE,GAAG,EAAE,EACP,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,GAAG,IAAI,EACR,KAAI;;IAEH,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAS,CAAC,GAAG,KAAK;AAC/G,IAAA,QACEF,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;AACzB,YAAA,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;AAC1B,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,QAAA,EAAA,CAEDP,eAAC,sBAAsB,EAAA,EACrB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,SAAS,KACT,IAAI,EAAA,QAAA,EAEP,QAAQ,EAAA,CACc,EACxB,aAAa,KACZA,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,QAAQ,EAAE,UAAU;oBACpB,GAAG,gBAAgB,CAAC,aAAa,CAAC;AACnC,iBAAA,EAAA,QAAA,EAEA,aAAa,EAAA,CACV,CACP,CAAA,EAAA,CACG;AAEV;;ACxHO,MAAM,WAAW,GAA+B,CAAC,EACtD,IAAI,EACJ,IAAI,GAAG,QAAQ,EACf,KAAK,EACL,QAAQ,EACR,OAAO,EACP,EAAE,EACF,IAAI,GAAG,CAAC,GACT,KAAI;AACH,IAAA,MAAM,EAAE,OAAO,EAAE,GAAGL,iBAAQ,EAAE;IAE9B,IAAI,QAAQ,EAAE;QACZ,OAAO,GAAG,SAAS;QACnB,KAAK,GAAG,UAAU;IACpB;AAEA,IAAA,IAAI,OAAO;AACT,QAAA,EAAE,GAAG;AACH,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;AAC7C,aAAA;AACD,YAAA,GAAG,EAAE;SACN;AAEH,IAAA,QACEF,cAAA,CAACQ,aAAI,EAAA,EACH,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE;AACF,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,QAAQ,EAAEC,cAAoB,CAAC,IAAI,CAAC;YACpC,qBAAqB,EAAE,CAAA,OAAA,EAAU,IAAI,CAAA,mCAAA,CAAqC;AAC1E,YAAA,GAAG,EAAE;SACN,EACD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAEnC,IAAI,EAAA,CACA;AAEX;;AC9BA,MAAM,oBAAoB,GAA+B,CAAC,EACxD,OAAO,GAAG,EAAE,EACZ,UAAU,GAAG,EAAE,EACf,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,IAAI,EACb,WAAW,GAAG,SAAS,EACvB,WAAW,GAAG,CAAC,EACf,UAAU,EACV,OAAO,GAAG,CAAC,EACX,IAAI,EACJ,QAAQ,EACR,EAAE,GACH,KAAI;IACH,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;AACnD,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU;IAElD,QACEJ,gBAAC,mBAAmB,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACxCA,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC/C,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAChCP,cAAA,CAACO,YAAG,EAAA,EAEF,EAAE,EAAE;AACF,4BAAA,UAAU,EAAE,KAAK,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,OAAO,CAAA,EAAA,CAAI,GAAG,CAAC;AAC3C,4BAAA,QAAQ,EAAE,UAAU;yBACrB,EAAA,QAAA,EAEDP,cAAA,CAAC,eAAe,EAAA,EACd,GAAG,EAAE,MAAM,CAAC,GAAG,EACf,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,EAAE,EAAE,QAAQ,EAAA,CACZ,EAAA,EAbG,MAAM,CAAC,EAAE,IAAI,KAAK,CAcnB,CACP,CAAC,EAED,cAAc,GAAG,CAAC,KACjBK,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;4BACF,UAAU,EAAE,CAAA,CAAA,EAAI,OAAO,CAAA,EAAA,CAAI;AAC3B,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,eAAe,EAAE,SAAS;AAC1B,4BAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;AACzB,4BAAA,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;AAC1B,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,cAAc,EAAE,QAAQ;AACxB,4BAAA,MAAM,EAAE,mBAAmB;AAC3B,4BAAA,YAAY,EAAE,KAAK;AACnB,4BAAA,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM;AACnC,yBAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAEC,cAAc,CAAA,EAAA,CACZ,CACP,CAAA,EAAA,CACG,EAEL,IAAI,KACHP,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;AACzB,oBAAA,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;AAC1B,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,MAAM,EAAE,CAAA,kBAAA,CAAoB;AAC5B,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,cAAc,EAAE,QAAQ;AACxB,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,SAAS,EAAE;AACT,wBAAA,WAAW,EAAE,cAAc;AAC5B,qBAAA;AACF,iBAAA,EACD,OAAO,EAAE,UAAU,EAAA,QAAA,EAEnBP,cAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,IAAI,EACV,EAAE,EAAE;AACF,wBAAA,KAAK,EAAE,cAAc;AACtB,qBAAA,EAAA,CACD,EAAA,CACE,CACP,CAAA,EAAA,CACmB;AAE1B;;AClGA,MAAM,yBAAyB,GAAoC,CAAC,EAClE,KAAK,EACL,WAAW,EACX,GAAG,EACH,IAAI,GAAG,IAAI,EACX,MAAM,EACN,WAAW,EACX,WAAW,EACX,KAAK,EACL,aAAa,EACb,OAAO,EACP,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,GAAG,IAAI,EACR,KAAI;AACH,IAAA,QACEK,eAAA,CAACf,cAAK,EAAA,EAAC,SAAS,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CAClFU,cAAA,CAAC,eAAe,EAAA,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,QAAQ,EAAA,GACR,IAAI,EAAA,QAAA,EAEP,QAAQ,EAAA,CACO,EAClBK,eAAA,CAACf,cAAK,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACnBU,cAAA,CAACU,mBAAU,EAAA,EACT,MAAM,EAAA,IAAA,EACN,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAEvB,mBAAW,CAAC,WAAW,EAAE,EAAA,QAAA,EAE3E,KAAK,EAAA,CACK,EACba,cAAA,CAACU,mBAAU,EAAA,EACT,MAAM,EAAA,IAAA,EACN,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAEvB,mBAAW,CAAC,iBAAiB,EAAE,EAAA,QAAA,EAEhF,WAAW,EAAA,CACD,CAAA,EAAA,CACP,CAAA,EAAA,CACF;AAEZ;;ACtDA,MAAM,eAAe,GAAG,CAAC,IAAY,MAAW;AAC9C,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,eAAe,EAAE,UAAU;AAC3B,IAAA,eAAe,EAAE,IAAI;;AAEtB,CAAA,CAAC;AAEK,MAAM,iBAAiB,GAAqC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,KAAI;AACnG,IAAA,QACEa,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;YACF,GAAG,eAAe,CAAC,CAAC,CAAC;AACrB,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,GACG,IAAI,EAAA,QAAA,EAEP,OAAO,EAAA,CACG;AAEjB;;ACVA,MAAM,mBAAmB,GAA8B,CAAC,EACtD,KAAK,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,UAAU,GAAG,SAAS,EACtB,gBAAgB,GAAG,SAAS,EAC5B,GAAG,EACH,OAAO,EACP,EAAE,GACH,KAAI;AACH,IAAA,QACEL,eAAA,CAACf,cAAK,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CAC1BU,eAAC,YAAY,EAAA,EACX,EAAE,EAAE;AACF,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,MAAM,EAAE,GAAG;oBACX,IAAI,OAAO,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACtC,iBAAA,EACD,GAAG,EAAE,GAAG,IAAI,2BAA2B,EACvC,QAAQ,EAAED,qBAAa,CAAC,MAAM,EAAA,CAC9B,EACFM,eAAA,CAACf,cAAK,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACnBU,cAAA,CAAC,iBAAiB,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAA,CAAI,EACrG,WAAW,KACVK,eAAA,CAACM,aAAI,EAAA,EACH,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,kBAAkB,EAC3B,EAAE,EAAE;AACF,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,GAAG,EAAE,GAAG;AACR,4BAAA,cAAc,EAAE,WAAW;AAC3B,4BAAA,KAAK,EAAE,gBAAgB;AACvB,4BAAA,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO;AACnC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,SAAS,EAAE;AACT,gCAAA,OAAO,EAAE,GAAG;AACb,6BAAA;yBACF,EAAA,QAAA,EAAA,CAEDX,cAAA,CAAC,QAAQ,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAI,EAC1D,WAAW,IACP,CACR,CAAA,EAAA,CACK,CAAA,EAAA,CACF;AAEZ;;ACxDA,MAAM,cAAc,GAAG;AACrB,IAAA,GAAG,EAAE,gCAAgC;AACrC,IAAA,GAAG,EAAE,kCAAkC;CACxC;AAoBD,MAAM,oBAAoB,GAAwC,CAAC,EACjE,KAAK,EACL,SAAS,GAAG,GAAG,EACf,QAAQ,GAAG,CAAC,EACZ,QAAQ,EACR,EAAE,EACF,MAAM,EACN,QAAQ,GACT,KAAI;;IAEH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGG,cAAQ,CAA2B,IAAI,CAAC;AACxE,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ;IAC7C,MAAM,YAAY,GAAG,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;AAC3E,IAAA,MAAM,cAAc,GAAG,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE;;AAG9D,IAAA,MAAM,cAAc,GAAG,CAAC,KAA0C,KAAI;AACpE,QAAA,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;AAClC,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;QAC3B,WAAW,CAAC,IAAI,CAAC;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAAoB,KAAI;AAC1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,KAAK,QAAQ;AAErC,QAAA,QACEE,eAAA,CAACM,aAAI,EAAA,EAEH,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,CAAC,CAAC,KAAI;AACb,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,CAAC,CAAC,cAAc,EAAE;oBAClB,IAAI,CAAC,OAAO,EAAE;gBAChB;gBACA,IAAI,QAAQ,EAAE;AACZ,oBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB;YACF,CAAC,EACD,EAAE,EAAE;AACF,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,UAAU,EAAE,QAAQ;gBACpB,GAAG,EAAE,wBAAwB,CAAC,MAAM;AACpC,gBAAA,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ;gBACpC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;AACvC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,GAAG,MAAM;aACV,EAAA,QAAA,EAAA,CAEA,IAAI,CAAC,IAAI,IAAIX,eAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAA,CAAI,EAC7C,IAAI,CAAC,KAAK,CAAA,EAAA,EAvBN,IAAI,CAAC,EAAE,CAwBP;AAEX,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAMA,cAAA,CAAC,YAAY,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,EAAA,CAAI;AAE7G,IAAA,QACEK,eAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACbL,eAACY,oBAAW,EAAA,EAAA,YAAA,EAAY,YAAY,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,YAC/C,aAAa,IACZP,eAAA,CAAC,mBAAmB,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,wBAAwB,CAAC,KAAK,EAAE,EAAA,QAAA,EAAA,CAC7D,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACpB,eAAe,EAAE,EAElBL,eAACa,mBAAU,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,YACxEb,cAAA,CAAC,WAAW,IAAC,IAAI,EAAC,YAAY,EAAA,CAAG,GACtB,EACZ,eAAe,EAAE,EAEjB,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MACnCK,gBAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACZ,GAAG,GAAG,CAAC,IAAI,eAAe,EAAE,EAC5B,UAAU,CAAC,IAAI,CAAC,CAAA,EAAA,EAFE,IAAI,CAAC,EAAE,CAGX,CAClB,CAAC,CAAA,EAAA,CACkB,KAEtB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CACtC,GACW,EAEdL,cAAA,CAACc,aAAI,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAA,IAAA,EAAA,QAAA,EAC3F,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC3B,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,KAAK,QAAQ;AACrC,oBAAA,QACET,eAAA,CAACU,iBAAQ,IAEP,OAAO,EAAE,MAAK;AACZ,4BAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gCAChB,IAAI,CAAC,OAAO,EAAE;4BAChB;AACA,4BAAA,eAAe,EAAE;wBACnB,CAAC,EACD,EAAE,EAAE;4BACF,GAAG,EAAE,wBAAwB,CAAC,MAAM;4BACpC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;4BACvC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa;yBAC9C,EAAA,QAAA,EAAA,CAEA,IAAI,CAAC,IAAI,IAAIf,eAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAA,CAAI,EAC7C,IAAI,CAAC,KAAK,CAAA,EAAA,EAdN,IAAI,CAAC,EAAE,CAeH;AAEf,gBAAA,CAAC,CAAC,EAAA,CACG,CAAA,EAAA,CACQ;AAErB;;ACrIA;AACO,MAAM,YAAY,GAA8B;AACrD,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,IAAI,EAAE,GAAG;CACD;AAEV;AACO,MAAM,KAAK,GAAwF;AACxG,IAAA,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7D,IAAA,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7D,IAAA,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;AAC9E,IAAA,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CACtD;AAEV;AACO,MAAM,MAAM,GAA0C;AAC3D,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,IAAI,EAAE,UAAU;CACjB;AAED;AACO,MAAM,gBAAgB,GAAG;AAC9B,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,uBAAuB,EAAE,CAAC;AAC1B,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,mBAAmB,EAAE,MAAM;CACnB;AAEV;AACO,MAAM,aAAa,GAAG;AAC3B,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,kBAAkB,EAAE,GAAG;AACvB,IAAA,UAAU,EAAE,gCAAgC;AAC5C,IAAA,YAAY,EAAE,KAAK;CACX;;ACpCV,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,KAAY,EAAE,KAAyB,EAAE,IAAU,EAAE,SAAkB,KAAI;AAChH,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;;AAGxC,IAAA,IAAI,UAAkB;AACtB,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;IAC3C;SAAO;QACL,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG;AAC3C,QAAA,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;AAE9B,IAAA,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC3B,QAAA,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,IAAI,MAAM;AACpD,QAAA,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU;AACtC,QAAA,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU;AACtC,QAAA,YAAY,EAAE,CAAA,EAAG,gBAAgB,CAAC,aAAa,CAAA,EAAA,CAAI;AACnD,QAAA,GAAG,EAAE,CAAA,EAAG,gBAAgB,CAAC,GAAG,CAAA,EAAA,CAAI;AAChC,QAAA,aAAa,EAAE,MAAe;AAC9B,QAAA,UAAU,EAAE,CAAA,IAAA,EAAO,gBAAgB,CAAC,mBAAmB,CAAA,KAAA,CAAO;AAC9D,QAAA,SAAS,EAAE;AACT,YAAA,SAAS,EAAE,CAAA,WAAA,EAAc,aAAa,CAAC,iBAAiB,CAAA,CAAA,CAAG;YAC3D,SAAS,EAAE,aAAa,CAAC,UAAU;AACpC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,SAAS,EAAE,CAAA,WAAA,EAAc,aAAa,CAAC,kBAAkB,CAAA,CAAA,CAAG;AAC7D,SAAA;AACD,QAAA,iBAAiB,EAAE;YACjB,OAAO,EAAE,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE;YAClC,aAAa,EAAE,aAAa,CAAC,YAAY;AAC1C,SAAA;KACF;AAED,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA,KAAK,EAAE;AACL,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE;YAC9D,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAChF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,eAAe,EAAE,aAAa;AAC9B,YAAA,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE;AACjC,YAAA,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA,UAAA,EAAa,UAAU,EAAE,EAAE;AACrG,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE;AAC/D,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,eAAe,EAAE,aAAa;AAC9B,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE;AAClE,SAAA;KACF;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1C,CAAC;AAkCO,MAAM,eAAe,GAA0B,CAAC,EACtD,OAAO,GAAG,OAAO,EACjB,KAAK,GAAG,OAAO,EACf,KAAK,GAAG,MAAM,EACd,IAAI,GAAG,IAAI,EACX,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,MAAM,GAAG,KAAK,EACd,cAAc,GAAG,SAAS,EAC1B,EAAE,EACF,GAAG,KAAK,EACT,KAAI;;AAEH,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;;IAGpE,MAAM,YAAY,GAAG,MAAK;AACxB,QAAA,IAAI,UAAU;YAAE,OAAOA,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAA,CAAI;AACvE,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AACzB,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;;IAGD,MAAM,YAAY,GAAG,MAAK;AACxB,QAAA,IAAI,UAAU;YAAE,OAAOA,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAA,CAAI;AACvE,QAAA,IAAI,MAAM;AAAE,YAAA,OAAO,MAAM;AACzB,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,OAAO,IAC3BA,cAAA,CAACgB,yBAAgB,IAAC,IAAI,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAA,CAAI,KAE3F,YAAY,EAAE,CACf;AACD,IAAA,MAAM,aAAa,GAAG,YAAY,EAAE;;AAGpC,IAAA,MAAM,UAAU,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,aAAa,CAAC;;IAG3E,MAAM,SAAS,GAAG,MAAM,IACtBhB,cAAA,CAAA,MAAA,EAAA,EACE,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,CAAA,EAAG,gBAAgB,CAAC,eAAe,CAAA,EAAA,CAAI;AAC9C,YAAA,MAAM,EAAE,CAAA,EAAG,gBAAgB,CAAC,eAAe,CAAA,EAAA,CAAI;AAC/C,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,eAAe,EAAE,cAAc;AAC/B,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,WAAW,EAAE,CAAA,EAAG,gBAAgB,CAAC,uBAAuB,CAAA,EAAA,CAAI;AAC7D,SAAA,EAAA,CACD,IACA,IAAI;AAER,IAAA,QACEA,cAAA,CAACiB,eAAS,EAAA,EACR,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,EAAE,EAC1B,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,EAClD,OAAO,EAAE,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,KAC5C,KAAK,EAAA,QAAA,EAER,UAAU,IACTZ,eAAA,CAAAJ,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,aAAa,EACb,aAAa,CAAA,EAAA,CACb,KAEHI,eAAA,CAAAJ,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,SAAS,EACT,QAAQ,CAAA,EAAA,CACR,CACJ,EAAA,CACS;AAEhB;;ACxLA,MAAM,kBAAkB,GAA6B,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,KAAI;AAC7F,IAAA,MAAM,cAAc,GAAkB;AACpC,QAAA,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,MAAM,KAAK,YAAY,GAAG,KAAK,GAAG,QAAQ;QACzD,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI;QACf,UAAU,EAAE,MAAM,KAAK,YAAY,GAAG,QAAQ,GAAG,SAAS;AAC1D,QAAA,GAAG,KAAK;KACT;AAED,IAAA,OAAOD,wBAAK,KAAK,EAAE,cAAc,EAAA,QAAA,EAAG,QAAQ,GAAO;AACrD;;ACvBO,MAAM,eAAe,GAAG;AAC7B,IAAA,OAAO,EAAE;AACP,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;CACO;AAEH,MAAM,aAAa,GAQtB;AACF,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,eAAe,EAAE,GAAG;AACrB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,eAAe,EAAE,GAAG;AACrB,KAAA;CACF;;ACVD,MAAM,iBAAiB,GAA4B,CAAC,EAClD,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAEhB,KAAK,GAAG,QAAQ,EAChB,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,QAAQ,EAClB,QAAQ,GAAG,OAAO,EAElB,KAAK,EACL,QAAQ,EACR,QAAQ,EAER,UAAU,EACV,OAAO,EACP,EAAE,GACH,KAAI;AACH,IAAA,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC;AACzC,IAAA,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ;IAErC,MAAM,YAAY,GAAG,MAAK;QACxB,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,QAAQ,GAAG,CAAC,OAAO,CAAC;QACtB;AACF,IAAA,CAAC;IAED,MAAM,eAAe,GAAG;AACtB,UAAE,eAAe,CAAC,QAAQ,CAAC;AAC3B,UAAE;AACA,cAAE;kBACG,UAAkB,EAAE,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC;AAClE,kBAAE,eAAe,CAAC,OAAO,CAAC;AAC5B,cAAE,eAAe,CAAC,OAAO,CAAC,UAAU;IAExC,MAAM,WAAW,GAAG;AAClB,UAAE,eAAe,CAAC,QAAQ,CAAC;AAC3B,UAAE;cACG,UAAkB,EAAE,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC;AAC9D,cAAE,eAAe,CAAC,OAAO,CAAC,MAAM;IAEpC,MAAM,SAAS,GAAG;AAChB,UAAE,eAAe,CAAC,QAAQ,CAAC;AAC3B,UAAE;AACA,cAAE,eAAe,CAAC,OAAO,CAAC;AAC1B,cAAE,eAAe,CAAC,OAAO,CAAC,MAAM;IAEpC,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAEzB,QAAA,MAAM,MAAM,GAAmB;YAC7B,KAAK,EAAE,aAAa,CAAC,QAAQ;YAC7B,MAAM,EAAE,aAAa,CAAC,QAAQ;AAC9B,YAAA,KAAK,EAAE,SAAS;SACjB;QAED,QAAQ,QAAQ;AACd,YAAA,KAAK,OAAO;AACV,gBAAA,OAAOA,eAAC,SAAS,EAAA,EAAC,EAAE,EAAE,MAAM,GAAI;AAClC,YAAA,KAAK,OAAO;AACV,gBAAA,OAAOA,eAAC,UAAU,EAAA,EAAC,EAAE,EAAE,MAAM,GAAI;AACnC,YAAA,KAAK,KAAK;AACR,gBAAA,QACEA,cAAA,CAAC,qBAAqB,EAAA,EACpB,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAA,CACxF;AAEN,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,IAAI;;AAEjB,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,IACZA,cAAA,CAACO,YAAG,EAAA,EACF,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAA,cAAA,EACb,OAAO,EACrB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;gBACrD,CAAC,CAAC,cAAc,EAAE;AAClB,gBAAA,YAAY,EAAE;YAChB;QACF,CAAC,EACD,EAAE,EAAE;YACF,KAAK,EAAE,aAAa,CAAC,OAAO;YAC5B,MAAM,EAAE,aAAa,CAAC,OAAO;AAC7B,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,cAAc,EAAE,QAAQ;YACxB,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS;AAC5C,YAAA,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK;YAChD,MAAM,EAAE,CAAA,UAAA,EAAa,WAAW,CAAA,CAAE;YAClC,eAAe;AACf,YAAA,UAAU,EAAE,eAAe;YAE3B,IAAI,CAAC,QAAQ;AACX,iBAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;AACzB,gBAAA,SAAS,EAAE;oBACT,WAAW,EAAG,UAAkB,EAAE,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM;AACnF,oBAAA,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO;AACjD,iBAAA;aACF,CAAC;AAEJ,YAAA,iBAAiB,EAAE;AACjB,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,SAAS,EAAE,oCAAoC;AAChD,aAAA;YAED,IAAI,QAAQ,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAClC,SAAA,EAAA,QAAA,EAEA,UAAU,EAAE,EAAA,CACT,CACP;AAED,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,QAAQ;IAE3B,QACEF,gBAACE,YAAG,EAAA,EACF,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE;AACF,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS;AAC5C,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,QAAA,EAAA,CAEA,QAAQ,EACTP,cAAA,CAACU,mBAAU,EAAA,EACT,QAAQ,EAAE,aAAa,CAAC,aAAa,EACrC,UAAU,EAAE,aAAa,CAAC,eAAe,EACzC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,EACvC,EAAE,EAAE;AACF,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,GAAG,OAAO;AACX,iBAAA,EAAA,QAAA,EAEA,KAAK,EAAA,CACK,CAAA,EAAA,CACT;AAEV;;ACtKO,MAAM,kBAAkB,GAAG;AAChC,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,OAAO,EAAE,SAAS;CACV;AAEH,MAAM,gBAAgB,GAQzB;AACF,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,QAAQ,EAAE,MAAM;AACjB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,QAAQ,EAAE,MAAM;AACjB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,QAAQ,EAAE,MAAM;AACjB,KAAA;CACF;;ACtCD,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,QAAsB,KAAI;AACnE,IAAA,IAAI,CAAC,OAAO;QAAE,OAAO,kBAAkB,CAAC,OAAO;AAC/C,IAAA,OAAO,QAAQ,KAAK,MAAM,GAAG,kBAAkB,CAAC,cAAc,GAAG,kBAAkB,CAAC,eAAe;AACrG,CAAC;AAED,MAAM,QAAQ,GAIT,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAC1BV,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,OAAO,EAAE,KAAK;AAEd,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA;AAED,QAAA,GAAG,MAAM;KACV,EAAA,QAAA,EAEA,IAAI,EAAA,CACD,CACP;AAcD,MAAM,aAAa,GAAwB,CAAC,EAC1C,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,IAAI,EAChB,EAAE,EACF,MAAM,EACN,YAAY,GAAG,OAAO,EACtB,IAAI,GAAG,QAAQ,GAChB,KAAI;AACH,IAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACzC,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAE7B,IAAA,QACEP,cAAA,CAACkB,aAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,QAAQ,EACjB,KAAK,EACHb,gBAAC,mBAAmB,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CACpC,OAAO,IAAI,YAAY,KAAK,MAAM,IAAIL,eAAC,QAAQ,EAAA,EAAC,IAAI,EAAE,IAAK,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAA,CAAI,EAC3GA,cAAA,CAACO,YAAG,IAAC,SAAS,EAAC,MAAM,EAAA,QAAA,EAAE,KAAK,GAAO,EAClC,OAAO,IAAI,YAAY,KAAK,OAAO,IAAIP,cAAA,CAAC,QAAQ,EAAA,EAAC,IAAI,EAAE,IAAK,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAI,CAAA,EAAA,CACxF,EAExB,EAAE,EAAE;YACF,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;AACzC,YAAA,eAAe,EAAE,aAAa;AAC9B,YAAA,MAAM,EAAE,mBAAmB;AAC3B,YAAA,kBAAkB,EAAE;AAClB,gBAAA,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC;AAC/C,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,UAAU,EAAE,QAAQ;AACrB,aAAA;AAED,YAAA,sBAAsB,EAAE;AACtB,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA;AAED,YAAA,gBAAgB,EAAE;AAChB,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA;AAED,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,CACD;AAEN;;AC3EA,MAAM,kBAAkB,GAAG,CAAC,EAC1B,KAAK,GAAG,OAAO,EACf,WAAW,GAAG,YAAY,EAC1B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,UAAU,GAAG,EAAE,EACf,QAAQ,EACR,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,YAAY,EACrB,EAAE,EACF,gBAAgB,GAAG,KAAK,EACxB,GAAG,KAAK,EACO,KAAI;;AAEnB,IAAA,MAAM,UAAU,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI;AAEpH,IAAA,MAAM,gBAAgB,GAAG,CAAC,IAAkB,KAAI;AAC9C,QAAA,QAAQ,GAAG,IAAI,CAAC;AAClB,IAAA,CAAC;;AAGD,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAW,KAAI;AACxC,QAAA,IAAI,CAAC,gBAAgB;AAAE,YAAA,OAAO,KAAK;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;AACtC,IAAA,CAAC;AAED,IAAA,QACEK,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;AACpB,iBAAA,EAAA,QAAA,EAEA,KAAK,EAAA,CACK,CACd,EACDV,cAAA,CAACmB,yCAAoB,EAAA,EAAC,WAAW,EAAEC,yBAAY,EAAE,aAAa,EAAE,MAAM,EAAA,QAAA,EACpEpB,cAAA,CAACqB,qBAAU,EAAA,EACT,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE;AACT,wBAAA,SAAS,EAAE;4BACT,WAAW;4BACX,KAAK,EAAE,KAAK,IAAI,KAAK;4BACrB,UAAU,EAAE,KAAK,GAAG,YAAY,GAAG,UAAU;AAC7C,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,SAAS,EAAE,IAAI;AACf,4BAAA,QAAQ,EAAE,QAAQ;AACnB,yBAAA;AACD,wBAAA,gBAAgB,EAAE;AAChB,4BAAA,IAAI,EAAE,OAAO;AACd,yBAAA;AACF,qBAAA,EACD,KAAK,EAAE;AACL,wBAAA,cAAc,EAAE,CAAC,KAAK,KAAKrB,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAA,GAAK,KAAK,EAAA,CAAI;AAC5E,qBAAA,EACD,EAAE,EAAE;AACF,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,6BAA6B,EAAE;AAC7B,4BAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;4BACpE,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;4BACjD,kBAAkB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACvD,4BAAA,wBAAwB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACjF,4BAAA,eAAe,EAAE;AACf,gCAAA,SAAS,EAAE,uDAAuD;AACnE,6BAAA;AACD,4BAAA,gBAAgB,EAAE;AAChB,gCAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;gCACnC,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACjD,gCAAA,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AAClF,6BAAA;4BACD,sBAAsB,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AACzD,4BAAA,kCAAkC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACzF,4BAAA,yBAAyB,EAAE;AACzB,gCAAA,SAAS,EAAE,CAAA,qEAAA,CAAuE;AACnF,6BAAA;4BACD,IAAI,OAAO,IAAI;AACb,gCAAA,eAAe,EAAE;AACf,oCAAA,SAAS,EAAE,CAAA,8CAAA,EAAiD,aAAa,CAAC,GAAG,CAAC,CAAA,CAAE;AACjF,iCAAA;6BACF,CAAC;AACH,yBAAA;AACD,wBAAA,uBAAuB,EAAE;4BACvB,GAAG,UAAU,CAAC,aAAa;AAC3B,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,4BAAA,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC9D,yBAAA;AACF,qBAAA,EAAA,GACG,KAAK,EAAA,CACT,EAAA,CACmB,EACtB,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,KAClCA,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;oBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACJ,CACd,CAAA,EAAA,CACG;AAEV;;ACnHA,MAAM,wBAAwB,GAAG,CAAC,EAChC,KAAK,GAAG,YAAY,EACpB,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,UAAU,GAAG,EAAE,EACf,QAAQ,EACR,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,YAAY,EACrB,OAAO,EACP,OAAO,EACP,EAAE,EACF,gBAAgB,GAAG,KAAK,EACxB,GAAG,KAAK,EACa,KAAI;;AAEzB,IAAA,MAAM,aAAa,GACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,QAAQ,YAAY,KAAK,GAAG,QAAQ,GAAG,IAAI;AAElH,IAAA,MAAM,WAAW,GACf,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,IAAI;;IAGxG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGP,cAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAgB,MAAM,CAAC;AAC3E,IAAA,MAAM,QAAQ,GAAGmB,YAAM,CAAiB,IAAI,CAAC;;AAG7C,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAW,KAAI;AACxC,QAAA,IAAI,CAAC,gBAAgB;AAAE,YAAA,OAAO,KAAK;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;AACtC,IAAA,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAK;QAC5B,aAAa,CAAC,IAAI,CAAC;;AAEnB,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE;YAClC,iBAAiB,CAAC,MAAM,CAAC;QAC3B;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,IAAkB,KAAI;AAC9C,QAAA,IAAI,cAAc,KAAK,MAAM,EAAE;YAC7B,QAAQ,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC/B,IAAI,IAAI,EAAE;;gBAER,iBAAiB,CAAC,IAAI,CAAC;YACzB;QACF;aAAO;YACL,QAAQ,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;;QAEnC;AACF,IAAA,CAAC;AAED,IAAA,QACEtB,cAAA,CAACmB,yCAAoB,EAAA,EAAC,WAAW,EAAEC,yBAAY,EAAE,aAAa,EAAE,MAAM,EAAA,QAAA,EACpEf,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,wBAAA,OAAO,EAAE,OAAO;wBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,wBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,wBAAA,YAAY,EAAE,KAAK;qBACpB,EAAA,QAAA,EAEA,KAAK,EAAA,CACK,CACd,EAGDL,eAAA,CAACE,YAAG,EAAA,EACF,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,CAAC,QAAQ,GAAG,gBAAgB,GAAG,SAAS,EACjD,EAAE,EAAE;AACF,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,UAAU,EAAE,QAAQ;AACpB,wBAAA,GAAG,EAAE,MAAM;AACX,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;AACpE,wBAAA,MAAM,EAAE,CAAA,UAAA,EAAa,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA,CAAE;AACpE,wBAAA,eAAe,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO;wBACxD,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;AACxC,wBAAA,UAAU,EAAE,eAAe;AAC3B,wBAAA,IAAI;AACF,8BAAE;AACF,8BAAE;AACE,gCAAA,SAAS,EAAE;AACT,oCAAA,WAAW,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AAC3D,iCAAA;6BACF,CAAC;AACP,qBAAA,EAAA,QAAA,EAAA,CAEDF,eAAA,CAACK,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,gCAAA,IAAI,EAAE,CAAC;gCACP,GAAG,UAAU,CAAC,aAAa;AAC3B,gCAAA,KAAK,EAAE,aAAa,IAAI,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AAC3E,6BAAA,EAAA,QAAA,EAAA,CAEA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAA,SAAA,EAAI,GAAG,EAC5D,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA,EAAA,CACvC,EAGbV,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,cAAc,EAAE,QAAQ;AACxB,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;6BAC1B,EAAA,QAAA,EAEDP,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAA,CAAG,EAAA,CACjC,CAAA,EAAA,CACF,EAGNA,cAAA,CAACqB,qBAAU,EAAA,EACT,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,EACjC,OAAO,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EACnC,KAAK,EAAE,cAAc,KAAK,MAAM,GAAG,aAAa,GAAG,WAAW,EAC9D,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,KAAK,MAAM,GAAG,OAAO,GAAG,aAAa,IAAI,OAAO,EACvE,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,GAAG,WAAW,IAAI,OAAO,EACnE,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE;AACT,wBAAA,SAAS,EAAE;AACT,4BAAA,MAAM,EAAE,IAAI;AACZ,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,EAAE,EAAE;AACF,gCAAA,OAAO,EAAE,MAAM;AAChB,6BAAA;AACF,yBAAA;AACD,wBAAA,MAAM,EAAE;4BACN,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC1B,4BAAA,SAAS,EAAE,cAAc;AAC1B,yBAAA;AACF,qBAAA,EAAA,CACD,EAGD,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,KAC/BrB,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;wBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,wBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,wBAAA,SAAS,EAAE,KAAK;AACjB,qBAAA,EAAA,QAAA,EAEA,UAAU,EAAA,CACA,CACd,EAGA,KAAK,IAAI,YAAY,KACpBV,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;wBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,wBAAA,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;AACvB,wBAAA,SAAS,EAAE,KAAK;AACjB,qBAAA,EAAA,QAAA,EAEA,YAAY,EAAA,CACF,CACd,EAGA,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,KAClCV,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;wBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,wBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,wBAAA,SAAS,EAAE,KAAK;AACjB,qBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACJ,CACd,CAAA,EAAA,CACG,EAAA,CACe;AAE3B;;AC/LA,MAAM,sBAAsB,GAAG,CAAC,EAC9B,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,eAAe,EAC7B,KAAK,GAAG,IAAI,EACZ,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,QAAQ,EACR,UAAU,GAAG,EAAE,EACf,OAAO,GAAG,EAAE,EACZ,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,EAClC,EAAE,GACe,KAAI;AACrB,IAAA,MAAM,iBAAiB,GAAG,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,IAAI;AAEhF,IAAA,MAAM,cAAc,GAAGa,aAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAElG,IAAA,MAAM,aAAa,GAAGC,iBAAW,CAAC,MAAK;QACrC,IAAI,KAAK,IAAI,YAAY;AAAE,YAAA,OAAO,YAAY;QAC9C,IAAI,OAAO,IAAI,cAAc;AAAE,YAAA,OAAO,cAAc;AACpD,QAAA,IAAI,UAAU;AAAE,YAAA,OAAO,UAAU;AACjC,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAE9D,IAAA,MAAM,kBAAkB,GAAGA,iBAAW,CAAC,MAAK;AAC1C,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AACtC,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEpB,IAAA,MAAM,cAAc,GAAGA,iBAAW,CAAC,MAAK;AACtC,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AACtC,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEpB,IAAA,MAAM,QAAQ,GAAGD,aAAO,CACtB,OAAO;AACL,QAAA,0BAA0B,EAAE;AAC1B,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,eAAe,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO;AACxD,YAAA,UAAU,EAAE,eAAe;AAC3B,YAAA,YAAY,EAAE;gBACZ,WAAW,EAAE,cAAc,EAAE;AAC9B,aAAA;AACD,YAAA,kBAAkB,EAAE;gBAClB,WAAW,EAAE,QAAQ,GAAG,cAAc,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AACzF,aAAA;AACD,YAAA,wBAAwB,EAAE;AACxB,gBAAA,WAAW,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AAC1D,gBAAA,WAAW,EAAE,OAAO;AACrB,aAAA;AACF,SAAA;AACD,QAAA,2BAA2B,EAAE;AAC3B,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,gBAAgB,EAAE;AAChB,gBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;KACF,CAAC,EACF,CAAC,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CACrD;AAED,IAAA,QACElB,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;iBACpB,EAAA,QAAA,EAEA,KAAK,GACK,CACd,EAEDV,eAACyB,eAAM,EAAA,EACL,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,CAAC,CAAC,KAAI;AACd,oBAAA,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;oBACpC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;oBACxF,IAAI,aAAa,EAAE;AACjB,wBAAA,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC;oBACjC;gBACF,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAA,IAAA,EACZ,SAAS,EAAE;AACT,oBAAA,iBAAiB,EAAE,IAAI;iBACxB,EACD,WAAW,EAAE,MAAK;oBAChB,IAAI,CAAC,KAAK,EAAE;AACV,wBAAA,QACEzB,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EACtF,WAAW,EAAA,CACR;oBAEV;AAEA,oBAAA,QACEF,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAC3D,cAAc,EAAE,eAAe,KAC9BP,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oCAAA,KAAK,EAAE,KAAK;AACZ,oCAAA,MAAM,EAAE,KAAK;AACb,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,SAAS;AAC3B,iCAAA,EAAA,CACD,CACH,EACA,cAAc,EAAE,MAAM,KACrBP,cAAA,CAAC0B,eAAM,EAAA,EACL,GAAG,EAAE,cAAc,CAAC,MAAM,EAC1B,EAAE,EAAE;AACF,oCAAA,KAAK,EAAE,MAAM;AACb,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,QAAQ,EAAE,MAAM;AACjB,iCAAA,EAAA,CACD,CACH,EACA,cAAc,EAAE,IAAI,IAAI1B,eAAC,WAAW,EAAA,EAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAI,EACnEA,cAAA,CAACU,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,aAAa,EAAE,YACpE,cAAc,EAAE,KAAK,EAAA,CACX,CAAA,EAAA,CACT;gBAEV,CAAC,EACD,EAAE,EAAE,QAAQ,EAAA,QAAA,EAEX,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAClBV,cAAA,CAACe,iBAAQ,EAAA,EAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAC9CV,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC1E,MAAM,CAAC,eAAe,KACrBP,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oCAAA,KAAK,EAAE,KAAK;AACZ,oCAAA,MAAM,EAAE,KAAK;AACb,oCAAA,YAAY,EAAE,KAAK;AACnB,oCAAA,eAAe,EAAE,SAAS;AAC3B,iCAAA,EAAA,CACD,CACH,EACA,MAAM,CAAC,MAAM,KACZP,cAAA,CAAC0B,eAAM,EAAA,EACL,GAAG,EAAE,MAAM,CAAC,MAAM,EAClB,EAAE,EAAE;AACF,oCAAA,KAAK,EAAE,MAAM;AACb,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,QAAQ,EAAE,MAAM;iCACjB,EAAA,CACD,CACH,EACA,MAAM,CAAC,IAAI,IAAI1B,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI,EAClDA,cAAA,CAACU,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,aAAa,EAAE,EAAA,QAAA,EAAG,MAAM,CAAC,KAAK,EAAA,CAAc,EACnG,KAAK,KAAK,MAAM,CAAC,KAAK,KACrBV,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EACpEP,eAAC,WAAW,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAA,CAAI,EAAA,CACvD,CACP,CAAA,EAAA,CACG,EAAA,EA7BO,MAAM,CAAC,KAAK,CA8BhB,CACZ,CAAC,EAAA,CACK,EAGR,aAAa,EAAE,KACdA,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;oBACF,KAAK,EAAE,kBAAkB,EAAE;AAC3B,oBAAA,SAAS,EAAE,KAAK;oBAChB,GAAG,UAAU,CAAC,eAAe;AAC9B,iBAAA,EAAA,QAAA,EAEA,aAAa,EAAE,EAAA,CACZ,CACP,CAAA,EAAA,CACG;AAEV;;ACpNA,MAAM,qBAAqB,GAAG,SAAS;AACvC,MAAM,kBAAkB,GAAG,SAAS;AACpC,MAAM,4BAA4B,GAAG,CAAC;AACtC,MAAM,kBAAkB,GAAG,CAAC;AAS5B,MAAM,aAAa,GAAiC,CAAC,EACnD,EAAE,GAAG,EAAE,EACP,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,OAAO,EACjB,QAAQ,GACT,KAAI;AACH,IAAA,QACEF,eAAA,CAACf,cAAK,EAAA,EACJ,EAAE,EAAE;AACF,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,CAAC,EAAE,4BAA4B;AAC/B,YAAA,YAAY,EAAE,4BAA4B;AAC1C,YAAA,GAAG,EAAE,kBAAkB;AACvB,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,QAAA,EAAA,CAEA,OAAO,KACNU,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,KAAK,EAAE,kBAAkB;AACzB,oBAAA,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI;AAC7B,iBAAA,EAAA,QAAA,EAEA,OAAO,EAAA,CACG,CACd,EACDV,cAAA,CAAC2B,kBAAS,EAAA,EACR,QAAQ,EAAE,KAAK,EACf,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,YAAY,EAAE,kBAAkB;AAChC,oBAAA,SAAS,EAAE,GAAG;AACd,oBAAA,SAAS,EAAE,oCAAoC;AAC/C,oBAAA,GAAG,WAAW;AACf,iBAAA,EAAA,QAAA,EAEA,QAAQ,EAAA,CACC,CAAA,EAAA,CACN;AAEZ;;ACzDA,IAAY,YAGX;AAHD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,KAAc;AACd,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,MAAe;AACjB,CAAC,EAHW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;AAKxB,IAAY,SAGX;AAHD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAKrB,IAAY,WAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;AAKvB,IAAY,UAGX;AAHD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAW;AACb,CAAC,EAHW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;AAKf,MAAM,MAAM,GAAG;AACpB,IAAA,mBAAmB,EAAE,SAAS;AAC9B,IAAA,oBAAoB,EAAE,WAAW;AACjC,IAAA,cAAc,EAAE,uBAAuB;AACvC,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,mBAAmB,EAAE,SAAS;CAC/B;AAEM,MAAM,iBAAiB,GAAG;AAC/B,IAAA,KAAK,EAAE,EAAE;CACV;AAEM,MAAM,yBAAyB,GAAG,EAAE;;ACjB3C,MAAM,oBAAoB,GAAwC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,KAAI;AACjG,IAAA,QACEtB,eAAA,CAACE,YAAG,EAAA,EACF,OAAO,EAAC,aAAa,EACrB,aAAa,EAAE,WAAW,KAAK,WAAW,CAAC,UAAU,GAAG,KAAK,GAAG,QAAQ,EACxE,UAAU,EAAC,QAAQ,EACnB,GAAG,EAAE,CAAC,EAAA,QAAA,EAAA,CAENP,cAAA,CAACM,iBAAQ,EAAA,EACP,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,aAAa,EACtE,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAC9B,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAC/B,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,WAAW,KAAK,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;oBAC1F,SAAS,EAAE,iBAAiB,CAAC,KAAK;iBACnC,EAAA,CACD,EACFN,cAAA,CAACM,iBAAQ,EAAA,EACP,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAC9B,EAAE,EAAE;oBACF,YAAY,EAAE,CAAA,EAAG,yBAAyB,CAAA,EAAA,CAAI;AAC/C,iBAAA,EAAA,CACD,EACFN,cAAA,CAACM,iBAAQ,EAAA,EACP,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,aAAa,EACtE,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAC9B,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAC/B,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,WAAW,KAAK,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;oBAC1F,SAAS,EAAE,iBAAiB,CAAC,KAAK;iBACnC,EAAA,CACD,CAAA,EAAA,CACE;AAEV,CAAC;;ACHD,MAAM,qBAAqB,GAAgC,CAAC,EAC1D,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,GAAG,EACH,GAAG,EACH,IAAI,GAAG,CAAC,EACR,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,WAAW,CAAC,UAAU,EACpC,OAAO,GAAG,KAAK,EACf,EAAE,GAAG,EAAE,EACP,WAAW,GAAG,EAAE;AAChB,QAAQ,GAAG,EAAE;AACb,WAAW,GAAG,SAAS,CAAC,MAAM,EAC9B,WAAW,EAEX,cAAc,GAAG,SAAS,CAAC,MAAM,EACjC,aAAa,GAAGN,cAAA,CAAC,UAAU,EAAA,EAAA,CAAG,EAC9B,aAAa,GAAGA,cAAA,CAAC,OAAO,EAAA,EAAA,CAAG,GAC5B,KAAI;AACH,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGG,cAAQ,CAAS,eAAe,IAAI,GAAG,IAAI,CAAC,CAAC;AACvF,IAAA,MAAM,KAAK,GAAG,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,aAAa;AAE7E,IAAA,MAAM,WAAW,GAAG,CAAC,QAAgB,KAAI;QACvC,IAAI,UAAU,GAAG,QAAQ;AACzB,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG;YAAE,UAAU,GAAG,GAAG;AACzD,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG;YAAE,UAAU,GAAG,GAAG;AAEzD,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;YACjC,gBAAgB,CAAC,UAAU,CAAC;QAC9B;AAEA,QAAA,QAAQ,GAAG,UAAU,CAAC;AACxB,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;QAC3B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACnC,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;QAC3B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,KAA0C,KAAI;QACvE,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAClF,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,WAAW,CAAC,QAAQ,CAAC;YACvB;QACF;AACF,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,QAAQ,KAAK,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;AACnF,IAAA,MAAM,mBAAmB,GAAG,QAAQ,KAAK,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;AAEnF,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM;IAEpC,IAAI,OAAO,EAAE;QACX,OAAOH,cAAA,CAAC,oBAAoB,EAAA,EAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAA,CAAI;IACrF;AAEA,IAAA,QACEK,eAAA,CAACE,YAAG,EAAA,EACF,OAAO,EAAC,aAAa,EACrB,aAAa,EAAE,WAAW,KAAK,YAAY,GAAG,KAAK,GAAG,QAAQ,EAC9D,UAAU,EAAC,QAAQ,EACnB,GAAG,EAAE,gBAAgB,EACrB,EAAE,EAAE;YACF,OAAO,EAAE,QAAQ,GAAG,GAAG,GAAG,CAAC;YAC3B,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM;AACzC,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,QAAA,EAAA,CAEDP,cAAA,CAACa,mBAAU,EAAA,EACT,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,mBAAmB,EAC7B,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,WAAW,KAAK,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;AAClF,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,gBAAgB;AACzB,oBAAA,MAAM,EAAE;AACN,0BAAE,CAAA,UAAA,EAAa,MAAM,CAAC,oBAAoB,CAAA;AAC1C,0BAAE,CAAA,UAAA,EAAa,MAAM,CAAC,mBAAmB,CAAA,CAAE;oBAC7C,eAAe,EAAE,MAAM,CAAC,gBAAgB;AACxC,oBAAA,KAAK,EAAE,WAAW,IAAI,MAAM,CAAC,mBAAmB;AAChD,oBAAA,SAAS,EAAE;wBACT,eAAe,EAAE,MAAM,CAAC,cAAc;AACvC,qBAAA;oBACD,IAAI,mBAAmB,GAAG,EAAE,GAAG,QAAQ,CAAC;AACzC,iBAAA,EAAA,QAAA,EAEA,aAAa,EAAA,CACH,EAEbb,eAAC4B,kBAAS,EAAA,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE;oBACV,GAAG;oBACH,GAAG;oBACH,IAAI;oBACJ,QAAQ;AACT,iBAAA,EACD,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,UAAU;AACvC,oBAAA,SAAS,EAAE,UAAU;AACrB,oBAAA,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,UAAU;AACzC,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,YAAY,EAAE,cAAc,KAAK,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;oBACrF,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,mBAAmB,GAAG,EAAE;oBACjD,eAAe,EAAE,QAAQ,GAAG,wBAAwB,GAAG,WAAW,EAAE,eAAe;AACnF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,YAAY,EAAE,SAAS;AAEvB,wBAAA,YAAY,EAAE;AACZ,4BAAA,WAAW,EACT,QAAQ,IAAI,QAAQ,GAAG,aAAa,GAAG,WAAW,EAAE,WAAW,IAAI,MAAM,CAAC,mBAAmB;4BAC/F,WAAW,EAAE,QAAQ,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC;AACzC,4BAAA,YAAY,EAAE,cAAc,KAAK,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;AACtF,yBAAA;wBACD,kBAAkB,EAChB,QAAQ,IAAI;AACV,8BAAE;AACF,8BAAE;AACE,gCAAA,WAAW,EAAE,WAAW,EAAE,gBAAgB,IAAI,MAAM,CAAC,mBAAmB;AACzE,6BAAA;AACP,wBAAA,wBAAwB,EAAE;AACxB,8BAAE;AACE,gCAAA,WAAW,EAAE,aAAa;AAC1B,gCAAA,WAAW,EAAE,CAAC;AACf;AACH,8BAAE;AACE,gCAAA,WAAW,EAAE,WAAW,EAAE,kBAAkB,IAAI,MAAM,CAAC,mBAAmB;AAC1E,gCAAA,WAAW,EAAE,CAAC;AACf,6BAAA;AACL,wBAAA,yBAAyB,EAAE;4BACzB,WAAW,EAAE,MAAM,CAAC,oBAAoB;4BACxC,eAAe,EAAE,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC,oBAAoB;AACxE,yBAAA;AACF,qBAAA;AAED,oBAAA,kGAAkG,EAAE;AAClG,wBAAA,gBAAgB,EAAE,MAAM;AACxB,wBAAA,MAAM,EAAE,CAAC;AACV,qBAAA;AACD,oBAAA,sBAAsB,EAAE;AACtB,wBAAA,aAAa,EAAE,WAAW;AAC3B,qBAAA;AAED,oBAAA,uBAAuB,EAAE;AACvB,wBAAA,SAAS,EAAE,WAAW,EAAE,SAAS,IAAI,QAAQ;AAC7C,wBAAA,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,SAAS;AAC1C,wBAAA,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,EAAE,QAAQ,IAAI,MAAM;wBAC7D,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,MAAM;AACzC,wBAAA,YAAY,EAAE,SAAS;AACvB,wBAAA,eAAe,EAAE,QAAQ,GAAG,aAAa,GAAG,WAAW,EAAE,eAAe,IAAI,aAAa;AACzF,wBAAA,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,mBAAmB,GAAG,WAAW,EAAE,KAAK,IAAI,SAAS;AAC9E,wBAAA,UAAU,EAAE,WAAW,EAAE,UAAU,KAAK,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AACnE,qBAAA;AACF,iBAAA,EAAA,CACD,EAEF5B,cAAA,CAACa,mBAAU,EAAA,EACT,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,mBAAmB,EAC7B,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,WAAW,KAAK,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;AAClF,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,gBAAgB;AACzB,oBAAA,MAAM,EAAE;AACN,0BAAE,CAAA,UAAA,EAAa,MAAM,CAAC,oBAAoB,CAAA;AAC1C,0BAAE,CAAA,UAAA,EAAa,MAAM,CAAC,mBAAmB,CAAA,CAAE;oBAC7C,eAAe,EAAE,MAAM,CAAC,gBAAgB;AACxC,oBAAA,KAAK,EAAE,WAAW,IAAI,MAAM,CAAC,mBAAmB;AAChD,oBAAA,SAAS,EAAE;wBACT,eAAe,EAAE,MAAM,CAAC,cAAc;AACvC,qBAAA;oBACD,IAAI,mBAAmB,GAAG,EAAE,GAAG,QAAQ,CAAC;AACzC,iBAAA,EAAA,QAAA,EAEA,aAAa,EAAA,CACH,CAAA,EAAA,CACT;AAEV;;ACnOO,MAAM,mBAAmB,GAAuC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,KAAI;IACvG,QACEb,eAACU,mBAAU,EAAA,EACT,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,mBAAmB,EAAE,SAAS;AAC9B,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,SAAS,EAAE;AACT,gBAAA,cAAc,EAAE,WAAW;AAC5B,aAAA;AACD,YAAA,GAAG,EAAE;SACN,EAAA,QAAA,EAEA,OAAO,EAAA,CACG;AAEjB;;MCnBa,WAAW,GAA+B,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,KAAI;AACzG,IAAA,QACEV,cAAA,CAACW,aAAI,EAAA,EACH,MAAM,EAAE,MAAM,EACd,GAAG,EAAC,UAAU,EACd,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EACrD,OAAO,EAAE,CAAC,KAAK,KAAI;YACjB,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,OAAO,EAAE;YACX;AACF,QAAA,CAAC,EAAA,GACG,IAAI,EAAA,CACR;AAEN;;ACCA,MAAMkB,iBAAe,GAAGxC,aAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;IACzD,OAAO;AACL,QAAA,0BAA0B,EAAE;YAC1B,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YACjD,kBAAkB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACvD,YAAA,wBAAwB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACjF,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,uDAAuD;AACnE,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;gBACnC,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AAClF,aAAA;AACD,YAAA,sBAAsB,EAAE,EAAE,WAAW,EAAG,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;YAC9E,4BAA4B,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,kCAAkC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACzF,YAAA,yBAAyB,EAAE;AACzB,gBAAA,SAAS,EAAE,uEAAuE;AACnF,aAAA;AACF,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,aAAa;AAC3B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC7D,YAAA,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/B,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,cAAc;AAC5B,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,SAAS,EAAE,mCAAmC;YAC9C,eAAe,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YAC9C,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;AACD,QAAA,2BAA2B,EAAE;YAC3B,GAAG,UAAU,CAAC,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;KACF;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,KAAK,GAAG,SAAS,EACjB,WAAW,GAAG,oBAAoB,EAClC,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,UAAU,GAAG,mCAAmC,EAChD,QAAQ,EACR,QAAQ,GAAG,SAAS,EACpB,SAAS,EACT,EAAE,EACF,GAAG,KAAK,EACO,KAAI;IACnB,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGc,cAAQ,CAAC,KAAK,CAAC;AAE7D,IAAA,MAAM,WAAW,GAAG,CAAC,GAAW,KAAa;AAC3C,QAAA,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;AACtB,QAAA,IAAI;YACF,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,EAAG,GAAG,EAAE;AACjE,YAAA,IAAI,GAAG,CAAC,SAAS,CAAC;;YAGlB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ;YAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxC,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,OAAO,IAAI;QACb;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,KAAK;QACd;AACF,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,KAAyC,KAAI;AAC/D,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QACrC,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;YAC1C,kBAAkB,CAAC,IAAI,CAAC;QAC1B;aAAO;YACL,kBAAkB,CAAC,KAAK,CAAC;QAC3B;AACF,IAAA,CAAC;AACD,IAAA,QACEE,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;AACpB,iBAAA,EAAA,QAAA,EAEA,KAAK,EAAA,CACK,CACd,EACDV,cAAA,CAAC6B,iBAAe,EAAA,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,IAAI,eAAe,EAC/B,UAAU,EAAE,KAAK,IAAI,eAAe,IAAI,KAAK,GAAG,YAAY,GAAG,qBAAqB,IAAI,EAAE,EAC1F,IAAI,EAAC,OAAO,EACZ,SAAS,EAAA,IAAA,EACT,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE;AACV,oBAAA,cAAc,GACZ7B,cAAA,CAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAA,QAAA,EAC9B9B,cAAA,CAACU,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,aAAa,EAAE,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAc,GACpF,CAClB;AACD,oBAAA,YAAY,EAAE,CAAC,OAAO,IAAI,KAAK,IAAI,eAAe,MAChDV,cAAA,CAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,KAAK,EAAA,QAAA,EAC3B,SAAS,IACR,SAAS,KAET9B,cAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,KAAK,IAAI,eAAe,GAAG,MAAM,GAAG,cAAc,EACxD,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,EAAA,CAC/E,CACH,GACc,CAClB;AACF,iBAAA,EACD,EAAE,EAAE;AACF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;wBACpE,IAAI,OAAO,IAAI;AACb,4BAAA,eAAe,EAAE;AACf,gCAAA,SAAS,EAAE,CAAA,8CAAA,EAAiD,aAAa,CAAC,GAAG,CAAC,CAAA,CAAE;AACjF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACF,iBAAA,EAAA,CACD,EACD,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,KAClCA,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;oBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACJ,CACd,CAAA,EAAA,CACG;AAEV;;AC5KA,MAAM,iBAAiB,GAAG;AACxB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,SAAS;CAChB;MAEY,UAAU,GAAkC,CAAC,EAAE,OAAO,EAAE,KAAI;IACvE,OAAOV,cAAA,CAACU,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EAAG,OAAO,GAAc;AAC3G;MAEa,gBAAgB,GAAkC,CAAC,EAAE,OAAO,EAAE,KAAI;AAC7E,IAAA,QACEV,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,YAAA,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO;AACnC,YAAA,KAAK,EAAE,SAAS;SACjB,EAAA,QAAA,EAEA,OAAO,EAAA,CACG;AAEjB;AAEO,MAAM,SAAS,GAAqF,CAAC,EAC1G,IAAI,EACJ,IAAI,GAAG,EAAE,GACV,KAAI;AACH,IAAA,QACEV,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,OAAO,EAAE,CAAA,EAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;AACvC,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,cAAc,EAAE,QAAQ;SACzB,EAAA,QAAA,EAEDP,cAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,IAAI,EACV,EAAE,EAAE;gBACF,QAAQ,EAAE,IAAI,GAAG,GAAG;AACpB,gBAAA,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,EAAE,CAAC;aACR,EAAA,CACD,EAAA,CACE;AAEV;AAEO,MAAM,aAAa,GAAuD,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAI;IAChH,OAAO,MAAM,GAAGA,eAAC+B,WAAI,EAAA,EAAC,UAAU,EAAA,IAAA,EAAA,QAAA,EAAE,QAAQ,GAAQ,GAAG/B,cAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAkB;AAClG;;AC5CA,MAAM,cAAc,GAAkC,CAAC,EACrD,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,KAAK,GAAG,YAAY,EACpB,SAAS,GAAG,QAAQ,EACpB,EAAE,EACF,SAAS,EACT,QAAQ,GACT,KAAI;IACH,MAAM,UAAU,GAAG,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,cAAc;AAE9E,IAAA,QACEA,cAAA,CAACgC,eAAM,IACL,IAAI,EAAE,IAAI,EACV,iBAAiB,QACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,KAAK,EACf,UAAU,EAAE;AACV,YAAA,EAAE,EAAE;AACF,gBAAA,YAAY,EAAE,6BAA6B;gBAC3C,CAAC,EAAE,CAAA,KAAA,EAAQ,kBAAkB,CAAA,OAAA,CAAS;AACtC,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,GAAG,EAAE;AACN,aAAA;SACF,EAAA,QAAA,EAEDhC,cAAA,CAAC,aAAa,EAAA,EAAC,MAAM,EAAE,MAAM,EAAA,QAAA,EAC3BA,eAACiC,sBAAa,EAAA,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAA,QAAA,EACvC5B,eAAA,CAACf,cAAK,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACzCe,eAAA,CAACf,cAAK,EAAA,EACJ,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE;gCACF,cAAc,EAAE,SAAS,KAAK,KAAK,GAAG,YAAY,GAAG,KAAK;AAC1D,gCAAA,GAAG,EAAE,kBAAkB;gCACvB,UAAU,EAAE,SAAS,KAAK,KAAK,IAAI,eAAe,GAAG,YAAY,GAAG,QAAQ,IAAI,KAAK;AACrF,gCAAA,KAAK,EAAE,MAAM;AACd,6BAAA,EAAA,QAAA,EAAA,CAEA,IAAI,IAAIU,cAAA,CAAC,SAAS,EAAA,EAAC,IAAI,EAAE,IAAI,EAAA,CAAI,EACjC,OAAO,IAAIA,eAAC,oBAAoB,EAAA,EAAC,OAAO,EAAE,OAAO,EAAA,CAAI,EAErD,CAAC,KAAK,IAAI,eAAe,MACxBK,eAAA,CAACf,cAAK,EAAA,EACJ,EAAE,EAAE;wCACF,GAAG,EAAE,wBAAwB,CAAC,MAAM;wCACpC,UAAU,EAAE,SAAS,KAAK,KAAK,GAAG,YAAY,GAAG,KAAK;AACtD,wCAAA,KAAK,EAAE,MAAM;AACd,qCAAA,EAAA,QAAA,EAAA,CAEA,KAAK,IAAIU,cAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAE,KAAK,EAAA,CAAI,EACvC,eAAe,CAAA,EAAA,CACV,CACT,IACK,EACP,WAAW,IAAIA,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAG,WAAW,EAAA,CAAO,EAG9D,UAAU,KACTP,eAACkC,sBAAa,EAAA,EACZ,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,MAAM;gCACb,EAAE,EAAE,CAAA,KAAA,EAAQ,kBAAkB,CAAA,OAAA,CAAS;gCACvC,GAAG,EAAE,wBAAwB,CAAC,KAAK;AACnC,gCAAA,GAAG,QAAQ;AACZ,6BAAA,EAAA,QAAA,EAED7B,eAAA,CAAC,mBAAmB,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACvC,cAAc,IAAIL,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAG,cAAc,EAAA,CAAO,EAEpE,CAAC,UAAU,IAAI,YAAY,IAAI,WAAW,MACzCF,eAAA,CAAC,QAAQ,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,CACrD,UAAU,KACTL,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,QAAA,EAClBP,cAAA,CAAC,eAAe,EAAA,EAAA,GAAK,UAAU,EAAE,SAAS,EAAA,IAAA,EAAA,CAAG,EAAA,CACzC,CACP,EACA,YAAY,KACXA,cAAA,CAACO,YAAG,IAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,QAAA,EAClBP,cAAA,CAAC,eAAe,EAAA,EAAA,GAAK,YAAY,EAAE,SAAS,EAAA,IAAA,EAAA,CAAG,EAAA,CAC3C,CACP,EACA,WAAW,KACVA,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,QAAA,EAClBP,cAAA,CAAC,eAAe,EAAA,EAAA,GAAK,WAAW,EAAE,SAAS,EAAA,IAAA,EAAA,CAAG,EAAA,CAC1C,CACP,CAAA,EAAA,CACQ,CACZ,CAAA,EAAA,CACmB,EAAA,CACR,CACjB,CAAA,EAAA,CACK,EAAA,CACM,EAAA,CACF,EAAA,CACT;AAEb;;ACrGA,MAAM,kBAAkB,GAAsC,CAAC,EAC7D,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,OAAO,EACP,KAAK,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,EAAE,EACF,SAAS,EACT,QAAQ,GACT,KAAI;AACH,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AACzD,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;IACxC,MAAM,UAAU,GAAG,UAAU,IAAI,YAAY,IAAI,WAAW,IAAI,cAAc;AAE9E,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,KAAK,EAAE,GAAG;AACV,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,cAAc,EAAE,CAAC;AACjB,QAAA,MAAM,EAAE,KAAK;KACd;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAAmB,MACrCK,eAAA,CAACf,cAAK,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACnEU,cAAA,CAAC,YAAY,EAAA,EACX,GAAG,EAAE,IAAI,EAAE,KAAK,EAChB,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,4BAA4B;AAC1C,oBAAA,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,GAAG,GAAG,GAAG;AACtB,oBAAA,SAAS,EAAE,OAAO;AAClB,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,EAAA,CACD,EACFK,eAAA,CAACf,cAAK,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACnBU,cAAA,CAAC,UAAU,IAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAA,CAAI,EACpCA,cAAA,CAAC,gBAAgB,EAAA,EAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAA,CAAI,CAAA,EAAA,CAC1C,CAAA,EAAA,CACF,CACT;AAED,IAAA,QACEA,cAAA,CAACgC,eAAM,EAAA,EACL,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE;AACV,YAAA,EAAE,EAAE;AACF,gBAAA,YAAY,EAAE,6BAA6B;gBAC3C,CAAC,EAAE,CAAA,KAAA,EAAQ,kBAAkB,CAAA,OAAA,CAAS;AACtC,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,GAAG,EAAE;AACN,aAAA;AACF,SAAA,EAAA,QAAA,EAED3B,gBAAC,aAAa,EAAA,EAAC,MAAM,EAAE,MAAM,aAC3BL,cAAA,CAACiC,sBAAa,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,EAAA,QAAA,EACvC5B,gBAACf,cAAK,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA,KAAA,EAAQ,kBAAkB,CAAA,OAAA,CAAS,EAAE,aACpD,UAAU,IACTU,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oCAAA,iBAAiB,EAAE;AACjB,wCAAA,QAAQ,EAAE,UAAU;AACpB,wCAAA,aAAa,EAAE,MAAM;AACtB,qCAAA;AACD,oCAAA,eAAe,EAAE;AACf,wCAAA,MAAM,EAAE,KAAK;AACb,wCAAA,QAAQ,EAAE,UAAU;AACrB,qCAAA;AACD,oCAAA,eAAe,EAAE;AACf,wCAAA,QAAQ,EAAE,QAAQ;AACnB,qCAAA;AACF,iCAAA,EAAA,QAAA,EAEDP,cAAA,CAAC,MAAM,EAAA,EAAA,GAAK,cAAc,YACvB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAC1BA,cAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAkB,UAAU,CAAC,IAAI,CAAC,IAAxB,KAAK,CAA0B,CAC1C,CAAC,EAAA,CACK,EAAA,CACL,KAEN,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC1B,EAEA,WAAW,IAAIA,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAG,WAAW,EAAA,CAAO,IACzD,EAAA,CACM,EAGf,UAAU,KACTP,cAAA,CAACkC,sBAAa,EAAA,EACZ,EAAE,EAAE;AACF,wBAAA,KAAK,EAAE,MAAM;wBACb,EAAE,EAAE,CAAA,KAAA,EAAQ,kBAAkB,CAAA,OAAA,CAAS;wBACvC,GAAG,EAAE,wBAAwB,CAAC,KAAK;AACnC,wBAAA,GAAG,QAAQ;AACZ,qBAAA,EAAA,QAAA,EAED7B,eAAA,CAAC,mBAAmB,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACvC,cAAc,IAAIL,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAG,cAAc,EAAA,CAAO,EAEpE,CAAC,UAAU,IAAI,YAAY,IAAI,WAAW,MACzCF,eAAA,CAAC,QAAQ,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,CACrD,UAAU,KACTL,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,QAAA,EAClBP,cAAA,CAAC,eAAe,EAAA,EAAA,GAAK,UAAU,EAAE,SAAS,EAAA,IAAA,EAAA,CAAG,EAAA,CACzC,CACP,EACA,YAAY,KACXA,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,QAAA,EAClBP,cAAA,CAAC,eAAe,EAAA,EAAA,GAAK,YAAY,EAAE,SAAS,SAAG,EAAA,CAC3C,CACP,EACA,WAAW,KACVA,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,YAClBP,cAAA,CAAC,eAAe,EAAA,EAAA,GAAK,WAAW,EAAE,SAAS,EAAA,IAAA,EAAA,CAAG,EAAA,CAC1C,CACP,CAAA,EAAA,CACQ,CACZ,CAAA,EAAA,CACmB,EAAA,CACR,CACjB,CAAA,EAAA,CACa,EAAA,CACT;AAEb;;AC9HA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAEzF;AACA,MAAM,kBAAkB,GAAG,CAAC,KAAyB,KAAY;AAC/D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IACrB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5C,OAAO,WAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC;AAC1D,CAAC;AAED,MAAM6B,iBAAe,GAAGxC,aAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;IACzD,OAAO;AACL,QAAA,0BAA0B,EAAE;YAC1B,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YACjD,kBAAkB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACvD,YAAA,wBAAwB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACjF,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,uDAAuD;AACnE,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;gBACnC,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AAClF,aAAA;AACD,YAAA,sBAAsB,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;YAC7E,4BAA4B,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,kCAAkC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACzF,YAAA,yBAAyB,EAAE;AACzB,gBAAA,SAAS,EAAE,uEAAuE;AACnF,aAAA;AACF,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,aAAa;AAC3B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC7D,YAAA,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/B,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,cAAc;AAC5B,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,SAAS,EAAE,mCAAmC;YAC9C,eAAe,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YAC9C,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;AACD,QAAA,2BAA2B,EAAE;YAC3B,GAAG,UAAU,CAAC,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;KACF;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,EAC3B,KAAK,GAAG,aAAa,EACrB,WAAW,GAAG,UAAU,EACxB,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,UAAU,GAAG,mCAAmC,EAChD,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,GAAG,UAAU,EAC7B,EAAE,EACF,GAAG,KAAK,EACQ,KAAI;IACpB,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGc,cAAQ,CAAC,QAAQ,CAAC;AAElE,IAAA,MAAM,oBAAoB,GAAG,CAAC,CAAM,KAAI;AACtC,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;QAClC,mBAAmB,CAAC,WAAW,CAAC;AAChC,QAAA,gBAAgB,GAAG,WAAW,CAAC;AACjC,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,CAAsC,KAAI;AACnE,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACjD,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAS,CAAC;AACvE,IAAA,CAAC;AAED,IAAA,QACEE,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;iBACpB,EAAA,QAAA,EAEA,KAAK,GACK,CACd,EACDV,eAAC6B,iBAAe,EAAA,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAChC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,GAAG,YAAY,GAAG,UAAU,EAC7C,IAAI,EAAC,OAAO,EACZ,SAAS,EAAA,IAAA,EACT,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,EAAE;AACV,oBAAA,cAAc,GACZ7B,cAAA,CAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAA,QAAA,EAC7B,UAAU,GAAG,UAAU,GAAG9B,eAAC,eAAe,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAA,CAAI,GAC1F,CAClB;oBACD,YAAY,GACVA,cAAA,CAAC8B,uBAAc,IAAC,QAAQ,EAAC,KAAK,EAAA,QAAA,EAC5BzB,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACvD,CAAC,OAAO,IAAI,KAAK,MAChBP,cAAA,CAAC,WAAW,IACV,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,EACrC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,GAC5D,CACH,EACDA,eAACyB,eAAM,EAAA,EACL,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAC,UAAU,EAClB,EAAE,EAAE;AACF,wCAAA,MAAM,EAAE,MAAM;AACd,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3C,wCAAA,6BAA6B,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AACvD,wCAAA,mCAAmC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AAC7D,wCAAA,4BAA4B,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AACtD,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,QAAQ,EAAE,MAAM;AAChB,wCAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;qCACvB,EAAA,QAAA,EAEA,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,MACzBzB,cAAA,CAACe,iBAAQ,EAAA,EAAY,KAAK,EAAE,IAAI,EAAA,QAAA,EAC7B,IAAI,EAAA,EADQ,IAAI,CAER,CACZ,CAAC,EAAA,CACK,CAAA,EAAA,CACL,EAAA,CACS,CAClB;AACF,iBAAA,EACD,EAAE,EAAE;AACF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;wBACpE,IAAI,OAAO,IAAI;AACb,4BAAA,eAAe,EAAE;AACf,gCAAA,SAAS,EAAE,CAAA,8CAAA,EAAiD,aAAa,CAAC,GAAG,CAAC,CAAA,CAAE;AACjF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACF,iBAAA,EAAA,CACD,EACD,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,KAClCf,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;oBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACJ,CACd,CAAA,EAAA,CACG;AAEV;;AChLA,MAAM,aAAa,GAAG;AACpB,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AAChE,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAClE,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AACzD,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC7D,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3D,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AACzD,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AACzD,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AACzD,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3D,IAAA,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;CAC3D;AAED,MAAMmB,iBAAe,GAAGxC,aAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;IACzD,OAAO;AACL,QAAA,0BAA0B,EAAE;YAC1B,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YACjD,kBAAkB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACvD,YAAA,wBAAwB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACjF,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,uDAAuD;AACnE,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;gBACnC,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AAClF,aAAA;AACD,YAAA,sBAAsB,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;YAC7E,4BAA4B,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,kCAAkC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACzF,YAAA,yBAAyB,EAAE;AACzB,gBAAA,SAAS,EAAE,uEAAuE;AACnF,aAAA;AACF,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,aAAa;AAC3B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC7D,YAAA,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/B,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,cAAc;AAC5B,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,SAAS,EAAE,mCAAmC;YAC9C,eAAe,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YAC9C,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;AACD,QAAA,2BAA2B,EAAE;YAC3B,GAAG,UAAU,CAAC,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;KACF;AACH,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,EACjC,KAAK,GAAG,eAAe,EACvB,WAAW,GAAG,cAAc,EAC5B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,UAAU,EACV,QAAQ,EACR,WAAW,GAAG,IAAI,EAClB,mBAAmB,EACnB,SAAS,GAAG,aAAa,EACzB,EAAE,EACF,GAAG,KAAK,EACc,KAAI;AAC1B,IAAA,MAAM,mBAAmB,GAAG,CAAC,CAAM,KAAI;AACrC,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;AAC9B,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAChC,IAAA,CAAC;AAED,IAAA,QACEgB,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;iBACpB,EAAA,QAAA,EAEA,KAAK,GACK,CACd,EACDV,eAAC6B,iBAAe,EAAA,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,GAAG,YAAY,GAAG,UAAU,EAC7C,IAAI,EAAC,OAAO,EACZ,SAAS,EAAA,IAAA,EACT,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE;AACV,oBAAA,cAAc,GACZ7B,cAAA,CAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAA,QAAA,EAC5C9B,cAAA,CAACyB,eAAM,EAAA,EACL,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAC,UAAU,EAClB,EAAE,EAAE;AACF,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3C,gCAAA,6BAA6B,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AACvD,gCAAA,mCAAmC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AAC7D,gCAAA,4BAA4B,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AACtD,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,gCAAA,OAAO,EAAE,MAAM;AACf,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,GAAG,EAAE,GAAG;AACT,6BAAA,EAAA,QAAA,EAEA,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MACfzB,cAAA,CAACe,iBAAQ,IAAc,KAAK,EAAE,CAAC,CAAC,IAAI,EAAA,QAAA,EAEjC,CAAC,CAAC,IAAI,EAAA,EAFM,CAAC,CAAC,IAAI,CAGV,CACZ,CAAC,EAAA,CACK,GACM,CAClB;oBACD,YAAY,EAAE,CAAC,OAAO,IAAI,KAAK,MAC7Bf,cAAA,CAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,KAAK,EAAA,QAAA,EAC5B9B,cAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,EACrC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,EAAA,CAC5D,EAAA,CACa,CAClB;AACF,iBAAA,EACD,EAAE,EAAE;AACF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;wBACpE,IAAI,OAAO,IAAI;AACb,4BAAA,eAAe,EAAE;AACf,gCAAA,SAAS,EAAE,CAAA,8CAAA,EAAiD,aAAa,CAAC,GAAG,CAAC,CAAA,CAAE;AACjF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACF,iBAAA,EAAA,CACD,EACD,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,KAClCA,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;oBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACJ,CACd,CAAA,EAAA,CACG;AAEV;;AC/LO,MAAM,SAAS,GAAG;AACvB,IAAA,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC3C,IAAA,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC3C,IAAA,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;CAQ5C;AAEM,MAAM,WAAW,GAAG;AACzB,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,EAAE,EAAE,EAAE;CACmC;;ACM3C,MAAM,YAAY,GAA4B,CAAC,EAC7C,MAAM,GAAG,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,GAAG,KAAK,EACb,YAAY,EACZ,IAAI,GAAG,MAAM,EACb,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,UAAU,EACV,KAAK,GAAG,MAAM,EACd,OAAO,GAAG,IAAI,EACd,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,KAAK,EACd,gBAAgB,EAChB,EAAE,GACH,KAAI;AACH,IAAA,MAAM,EAAE,OAAO,EAAE,GAAGR,iBAAQ,EAAE;AAC9B,IAAA,MAAM,SAAS,GAAGoB,YAAM,CAA8B,EAAE,CAAC;IAEzDa,eAAS,CAAC,MAAK;QACb,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACrC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;QAC9B;AACF,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,GAAW,KAAI;AAClD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAChC,QAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG;AACrB,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;QACvD,QAAQ,CAAC,YAAY,CAAC;QAEtB,IAAI,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE;YAC7B,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;QACvC;AAEA,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE;AAClC,YAAA,UAAU,GAAG,YAAY,CAAC;QAC5B;AACF,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,CAAsB,KAAI;AAC9D,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YACvD,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;QACvC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAa,KAAI;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AACrC,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU;AAC7B,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;AACjC,QAAA,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC;QAChE,MAAM,qBAAqB,GAAG,gBAAgB,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAEhG,QAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,YAAA,QACE9B,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,EAAA,QAAA,EAAA,CACjFP,cAAA,CAAC4B,kBAAS,EAAA,EACR,GAAG,EAAE,CAAC,EAAE,KAAI;4BACV,MAAM,KAAK,GAAG,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC;4BACxC,IAAI,KAAK,EAAE;AACT,gCAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;4BAClC;wBACF,CAAC,EACD,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACpD,SAAS,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE;AACF,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,0BAA0B,EAAE;AAC1B,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE;AACT,oCAAA,SAAS,EAAE,QAAQ;oCACnB,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,oCAAA,UAAU,EAAE,GAAG;AACf,oCAAA,OAAO,EAAE,CAAC;oCACV,KAAK,EAAE,MAAM,IAAI,QAAQ,GAAG,aAAa,GAAG,SAAS;oCACrD,mBAAmB,EAAE,MAAM,IAAI,QAAQ,GAAG,aAAa,GAAG,OAAO;AACjE,oCAAA,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;AAChC,oCAAA,gBAAgB,EAAE;AAChB,wCAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9B,wCAAA,OAAO,EAAE,CAAC;AACX,qCAAA;AACF,iCAAA;AACD,gCAAA,YAAY,EAAE;AACZ,oCAAA,WAAW,EAAE,WAAW;AACxB,oCAAA,YAAY,EAAE,KAAK;AACpB,iCAAA;AACD,gCAAA,kBAAkB,EAAE;AAClB,oCAAA,WAAW,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB;AAChE,iCAAA;AACD,gCAAA,wBAAwB,EAAE;AACxB,oCAAA,WAAW,EAAE,qBAAqB;AAClC,oCAAA,WAAW,EAAE,CAAC;AACf,iCAAA;AACF,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,SAAS,EAAE,CAAC;AACb,6BAAA;AACF,yBAAA,EACD,WAAW,EAAC,GAAG,EAAA,CACf,EACD,MAAM,IAAI,QAAQ,KACjB5B,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,GAAG,EAAE,KAAK;AACV,4BAAA,IAAI,EAAE,KAAK;AACX,4BAAA,SAAS,EAAE,uBAAuB;4BAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,4BAAA,UAAU,EAAE,GAAG;AACf,4BAAA,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO;AACxD,4BAAA,aAAa,EAAE,MAAM;yBACtB,EAAA,QAAA,EAAA,QAAA,EAAA,CAGG,CACP,CAAA,EAAA,CACG;QAEV;AAEA,QAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,YAAA,QACEF,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,EAAA,QAAA,EAAA,CACjFP,cAAA,CAAC4B,kBAAS,EAAA,EACR,GAAG,EAAE,CAAC,EAAE,KAAI;4BACV,MAAM,KAAK,GAAG,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC;4BACxC,IAAI,KAAK,EAAE;AACT,gCAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;4BAClC;wBACF,CAAC,EACD,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACpD,SAAS,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE;AACF,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,0BAA0B,EAAE;AAC1B,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,SAAS,EAAE;AACT,oCAAA,SAAS,EAAE,QAAQ;oCACnB,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,oCAAA,UAAU,EAAE,GAAG;AACf,oCAAA,OAAO,EAAE,CAAC;oCACV,KAAK,EAAE,MAAM,IAAI,QAAQ,GAAG,aAAa,GAAG,SAAS;oCACrD,mBAAmB,EAAE,MAAM,IAAI,QAAQ,GAAG,aAAa,GAAG,OAAO;AACjE,oCAAA,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;AAChC,oCAAA,gBAAgB,EAAE;AAChB,wCAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9B,wCAAA,OAAO,EAAE,CAAC;AACX,qCAAA;AACF,iCAAA;AACD,gCAAA,YAAY,EAAE;AACZ,oCAAA,WAAW,EAAE,WAAW;AACxB,oCAAA,YAAY,EAAE,KAAK;AACpB,iCAAA;AACD,gCAAA,kBAAkB,EAAE;AAClB,oCAAA,WAAW,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB;AAChE,iCAAA;AACD,gCAAA,wBAAwB,EAAE;AACxB,oCAAA,WAAW,EAAE,qBAAqB;AAClC,oCAAA,WAAW,EAAE,CAAC;AACf,iCAAA;AACF,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,SAAS,EAAE,CAAC;AACb,6BAAA;AACF,yBAAA,EACD,WAAW,EAAC,GAAG,EAAA,CACf,EACD,MAAM,IAAI,QAAQ,KACjB5B,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,GAAG,EAAE,KAAK;AACV,4BAAA,IAAI,EAAE,KAAK;AACX,4BAAA,SAAS,EAAE,uBAAuB;4BAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,4BAAA,UAAU,EAAE,GAAG;AACf,4BAAA,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO;AACxD,4BAAA,aAAa,EAAE,MAAM;yBACtB,EAAA,QAAA,EAAA,QAAA,EAAA,CAGG,CACP,CAAA,EAAA,CACG;QAEV;;QAGA,QACEP,eAAC4B,kBAAS,EAAA,EACR,GAAG,EAAE,CAAC,EAAE,KAAI;gBACV,MAAM,KAAK,GAAG,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC;gBACxC,IAAI,KAAK,EAAE;AACT,oBAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;gBAClC;YACF,CAAC,EACD,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACpD,SAAS,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE;gBACF,KAAK,EAAE,SAAS,CAAC,KAAK;AACtB,gBAAA,0BAA0B,EAAE;oBAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;AACxB,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE;AACT,wBAAA,SAAS,EAAE,QAAQ;wBACnB,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,wBAAA,UAAU,EAAE,GAAG;AACf,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,gBAAgB,EAAE;AAChB,4BAAA,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;AAC9B,4BAAA,OAAO,EAAE,CAAC;AACX,yBAAA;AACF,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,WAAW,EAAE,WAAW;AACzB,qBAAA;AACD,oBAAA,kBAAkB,EAAE;AAClB,wBAAA,WAAW,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB;AAChE,qBAAA;AACD,oBAAA,wBAAwB,EAAE;AACxB,wBAAA,WAAW,EAAE,qBAAqB;AAClC,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;AACF,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,SAAS,EAAE,CAAC;AACb,iBAAA;AACF,aAAA,EACD,WAAW,EAAC,GAAG,EAAA,CACf;AAEN,IAAA,CAAC;AAED,IAAA,QACEvB,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,GAAG;AACf,oBAAA,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;iBAC5B,EAAA,QAAA,EAEA,KAAK,GACF,CACP,EACDP,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,GAAG,EAAE,CAAA,EAAG,WAAW,CAAC,OAAO,CAAC,CAAA,EAAA,CAAI;oBAChC,cAAc,EAAE,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,KAAK,KAAK,OAAO,GAAG,UAAU,GAAG,YAAY;AAC9F,iBAAA,EAAA,QAAA,EAEA,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MACnCP,cAAA,CAACO,YAAG,EAAA,EAAA,QAAA,EAAc,gBAAgB,CAAC,KAAK,CAAC,IAA/B,KAAK,CAAiC,CACjD,CAAC,EAAA,CACE,EACL,KAAK,IAAI,YAAY,KACpBP,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,YAAY,EAAA,CACT,CACP,CAAA,EAAA,CACG;AAEV;;AChSA,MAAM6B,oBAAkB,GAAG/C,eAAM,CAACgD,qBAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAC9D,IAAA,0BAA0B,EAAE;AAC1B,QAAA,OAAO,EAAE,gBAAgB;AACzB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,SAAS,EAAE,MAAM;AAEjB,QAAA,YAAY,EAAE;AACZ,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,SAAA;AAED,QAAA,kBAAkB,EAAE;AAClB,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,SAAA;AAED,QAAA,wBAAwB,EAAE;AACxB,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa;AAC/C,YAAA,WAAW,EAAE,OAAO;AACrB,SAAA;AAED,QAAA,gBAAgB,EAAE;AAChB,YAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;AAEnC,YAAA,YAAY,EAAE;AACZ,gBAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,aAAA;AACF,SAAA;AAED,QAAA,sBAAsB,EAAE;AACtB,YAAA,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC;AAC9B,SAAA;AAED,QAAA,wBAAwB,EAAE;AACxB,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,SAAA;AACF,KAAA;AAED,IAAA,uBAAuB,EAAE;AACvB,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,QAAQ,EAAE,MAAM;AAEhB,QAAA,gBAAgB,EAAE;AAChB,YAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,gBAAgB,EAAE;AAChB,YAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,YAAA,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC;AACxC,SAAA;AACF,KAAA;AAED,IAAA,iCAAiC,EAAE;AACjC,QAAA,YAAY,EAAE,KAAK;AACpB,KAAA;AAED,IAAA,wBAAwB,EAAE;AACxB,QAAA,eAAe,EAAE,YAAY,CAAC,EAAE,CAAC;AACjC,QAAA,MAAM,EAAE,CAAA,UAAA,EAAa,YAAY,CAAC,GAAG,CAAC,CAAA,CAAE;AACxC,QAAA,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;AACxB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,MAAM,EAAE,KAAK;AAEb,QAAA,uBAAuB,EAAE;AACvB,YAAA,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;AAExB,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;AACzB,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,EACR,YAAY,GAAG,CAAC,EAChB,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,WAAW,EACzB,KAAK,GAAG,KAAK,EACb,YAAY,EACZ,OAAO,GAAG,KAAK,EACf,cAAc,EACd,UAAU,GAAG,EAAE,EACf,OAAO,GAAG,EAAE,EACZ,OAAO,GAAG,KAAK,EACf,EAAE,GACkB,KAAI;IACxB,MAAM,cAAc,GAAG,GAAG;IAC1B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGlC,cAAQ,CAAC,EAAE,CAAC;IAChD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAyB,OAAO,CAAC;IACvF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,MAAM,gBAAgB,GAAGmB,YAAM,CAAgB,IAAI,CAAC;AACpD,IAAA,MAAM,WAAW,GAAGA,YAAM,CAAC,QAAQ,CAAC;AACpC,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,aAAa,CAAC;AAC9C,IAAA,MAAM,UAAU,GAAGA,YAAM,CAAC,OAAO,CAAC;;IAGlCa,eAAS,CAAC,MAAK;AACb,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ;AAC9B,QAAA,gBAAgB,CAAC,OAAO,GAAG,aAAa;AACxC,QAAA,UAAU,CAAC,OAAO,GAAG,OAAO;IAC9B,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;;AAGtC,IAAA,MAAM,cAAc,GAAGZ,aAAO,CAAC,MAAK;AAClC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;AACrB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AACrD,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACxF,IAAA,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;IAGXY,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC5B,YAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACxC;;AAGA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE;AACtB,YAAA,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC;YACtC;QACF;AAEA,QAAA,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC,YAAW;AAC/C,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO;YAEpC,IAAI,QAAQ,EAAE;;gBAEZ,YAAY,CAAC,IAAI,CAAC;AAClB,gBAAA,IAAI;AACF,oBAAA,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC;oBAC1C,kBAAkB,CAAC,OAAO,CAAC;gBAC7B;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;oBACrC,kBAAkB,CAAC,EAAE,CAAC;gBACxB;wBAAU;oBACR,YAAY,CAAC,KAAK,CAAC;gBACrB;YACF;iBAAO;;AAEL,gBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/G,kBAAkB,CAAC,QAAQ,CAAC;YAC9B;AAEA,YAAA,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC;QACxC,CAAC,EAAE,cAAc,CAAC;AAElB,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC5B,gBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACxC;AACF,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,iBAAiB,GAAG,CAAC,KAA2B,EAAE,aAAqB,KAAI;QAC/E,aAAa,CAAC,aAAa,CAAC;AAC9B,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,KAA2B,EAAE,QAAa,KAAI;QAClE,IAAI,QAAQ,EAAE;YACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC9E,YAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;QAC/C;aAAO;AACL,YAAA,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QAC9B;AACF,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,aAAa,CAAC,EAAE,CAAC;AACjB,QAAA,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC;QACtC,OAAO,IAAI;AACb,IAAA,CAAC;IAED,QACE9B,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CAC9B,KAAK,KACJP,cAAA,CAACU,mBAAU,EAAA,EACT,OAAO,EAAC,WAAW,EACnB,EAAE,EAAE;AACF,oBAAA,UAAU,EAAE,GAAG;AACf,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,OAAO,EAAE,OAAO;iBACjB,EAAA,QAAA,EAEA,KAAK,GACK,CACd,EAEDV,eAACoC,oBAAkB,EAAA,EACjB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAA,IAAA,EACR,OAAO,EAAE,eAAe,EACxB,cAAc,EAAE,CAAC,MAAW,KAAI;AAC9B,oBAAA,IAAI,CAAC,MAAM;AAAE,wBAAA,OAAO,EAAE;AACtB,oBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM;wBAAE,OAAO,MAAM,CAAC,KAAK;AACxE,oBAAA,OAAO,MAAM,CAAC,MAAM,CAAC;gBACvB,CAAC,EACD,oBAAoB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAI;AACpC,oBAAA,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK;AACjC,oBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,GAAG,EAAE;AAChG,wBAAA,OAAO,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;oBACnC;AACA,oBAAA,OAAO,KAAK;gBACd,CAAC,EACD,KAAK,EAAE,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,EAC5D,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,OAAO,EAAE,SAAS,IAAI,OAAO,EAC7B,aAAa,EAAE,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,EACjE,EAAE,EAAE;AACF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;wBACpE,WAAW,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS;AACjF,qBAAA;AACF,iBAAA,EACD,WAAW,EAAE,CAAC,MAAM,MAClBpC,cAAA,CAAC4B,kBAAS,EAAA,EAAA,GACJ,MAAM,EACV,WAAW,EAAE,WAAW,EACxB,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE;wBACV,GAAG,MAAM,CAAC,UAAU;wBACpB,cAAc,GACZvB,eAAA,CAAAJ,mBAAA,EAAA,EAAA,QAAA,EAAA,CACED,cAAA,CAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAC5E9B,eAAC,UAAU,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,CAAI,GACxC,EAChB,MAAM,CAAC,UAAU,EAAE,cAAc,CAAA,EAAA,CACjC,CACJ;qBACF,EAAA,CACD,CACH,EACD,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,KAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,KAAK,KAAI;oBAC/B,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACvG,oBAAA,OAAOA,eAACkB,aAAI,EAAA,EAAA,GAAK,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,IAAI,EAAC,OAAO,GAAG;gBAClF,CAAC,CAAC,EAEJ,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;oBAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK;AACpC,oBAAA,MAAM,KAAK,GAAI,MAA+B,EAAE,KAAK,IAAI,EAAE;AAC3D,oBAAA,QACElB,cAAA,CAACO,YAAG,EAAA,EAAA,GAAe,UAAU,EAAE,SAAS,EAAC,IAAI,YAC1C,KAAK,EAAA,EADE,GAAG,CAEP;gBAEV,CAAC,EACD,eAAe,EAAE;AACf,oBAAA,cAAc,EAAE;AACd,wBAAA,OAAO,EAAE,WAAW;AACrB,qBAAA;iBACF,EAAA,CACD,EAED,KAAK,IAAI,YAAY,KACpBP,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;AACvB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,YAAY,EAAA,CACT,CACP,EAEA,OAAO,IAAI,cAAc,KACxBP,cAAA,CAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACX,CACP,EAEA,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,KAC/BP,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,UAAU,EAAA,CACP,CACP,CAAA,EAAA,CACG;AAEV;;ACjUA,MAAM,kBAAkB,GAAGlB,eAAM,CAACgD,qBAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAC9D,IAAA,0BAA0B,EAAE;AAC1B,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,GAAG,EAAE,KAAK;AAEV,QAAA,YAAY,EAAE;AACZ,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,SAAA;AAED,QAAA,kBAAkB,EAAE;AAClB,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,SAAA;AAED,QAAA,wBAAwB,EAAE;AACxB,YAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa;AAChD,SAAA;AAED,QAAA,gBAAgB,EAAE;AAChB,YAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;AAEnC,YAAA,YAAY,EAAE;AACZ,gBAAA,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;AAChC,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,uBAAuB,EAAE;AACvB,QAAA,OAAO,EAAE,0BAA0B;AACnC,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,CAAC;AAEP,QAAA,gBAAgB,EAAE;AAChB,YAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,gBAAgB,EAAE;AAChB,YAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,YAAA,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC;AACxC,SAAA;AACF,KAAA;AAED,IAAA,iCAAiC,EAAE;AACjC,QAAA,YAAY,EAAE,KAAK;AACpB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAa,EACb,YAAY,GAAG,CAAC,EAChB,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,aAAa,EAC3B,EAAE,GACe,KAAI;IACrB,MAAM,cAAc,GAAG,IAAI;IAC3B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGlC,cAAQ,CAAC,EAAE,CAAC;AAChD,IAAA,MAAM,aAAa,GAAGmB,YAAM,CAAgB,IAAI,CAAC;IAEjDa,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,aAAa,CAAC,OAAO,EAAE;AACzB,YAAA,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;QACrC;AAEA,QAAA,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AACtC,YAAA,aAAa,GAAG,IAAI,KAAK,CAAC,UAAU,CAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;QACvE,CAAC,EAAE,cAAc,CAAC;AAElB,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,aAAa,CAAC,OAAO,EAAE;AACzB,gBAAA,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;YACrC;AACF,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAE/B,MAAM,iBAAiB,GAAGX,iBAAW,CAAC,CAAC,KAA2B,EAAE,KAAa,KAAI;QACnF,aAAa,CAAC,KAAK,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,WAAW,GAAGA,iBAAW,CAAC,MAAK;QACnC,aAAa,CAAC,EAAE,CAAC;QACjB,OAAO,IAAI;AACX,QAAA,aAAa,GAAG,IAAI,KAAK,CAAC,OAAO,CAAQ,EAAE,EAAE,EAAE,OAAO,CAAC;AACzD,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAE5B,IAAA,QACExB,cAAA,CAAC,kBAAkB,EAAA,EACjB,QAAQ,EAAA,IAAA,EACR,OAAO,EAAE,EAAE,EACX,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,iBAAiB,EAChC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAe,EACzB,aAAa,EAAE,IAAI,EACnB,EAAE,EAAE;AACF,YAAA,0BAA0B,EAAE;AAC1B,gBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;AACrE,aAAA;AACD,YAAA,GAAG,EAAE;SACN,EACD,WAAW,EAAE,CAAC,MAAM,MAClBA,cAAA,CAAC4B,kBAAS,EAAA,EAAA,GACJ,MAAM,EACV,WAAW,EAAE,WAAW,EACxB,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,OAAO,EACZ,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;AACpB,gBAAA,cAAc,GACZ5B,cAAA,CAAC8B,uBAAc,IAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAA,QAAA,EACxD9B,cAAA,CAAC,UAAU,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,CAAI,GACxC,CAClB;aACF,EAAA,CACD,CACH,EACD,eAAe,EAAE;AACf,YAAA,cAAc,EAAE;AACd,gBAAA,OAAO,EAAE,WAAW;AACrB,aAAA;AACF,SAAA,EAAA,CACD;AAEN;;AC1IA,MAAM,WAAW,GAAG;AAClB,IAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;AAC3D,IAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;CAC7D;AAED,MAAM,aAAa,GAAG;AACpB,IAAA,IAAI,EAAE;AACJ,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,eAAe,EAAE,SAAS;AAC3B,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,oBAAoB,EAAE,SAAS;AAC/B,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,eAAe,EAAE,SAAS;AAC3B,KAAA;CACO;AAWV,MAAM,YAAY,GAAGX,eAAM,CAACiD,eAAM,EAAE;IAClC,iBAAiB,EAAE,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM;CAC7C,CAAC,CAAgC,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,KAAI;AAC/D,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAwB;AACnD,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC;AAEtD,IAAA,MAAM,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,GACjF,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK;IAE5C,OAAO;QACL,KAAK;QACL,MAAM;AACN,QAAA,OAAO,EAAE,CAAC;AAEV,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,kBAAkB,EAAE,OAAO;AAE3B,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,CAAA,WAAA,EAAc,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA,CAAA,CAAG;AAC9D,gBAAA,KAAK,EAAE,SAAS;AAEhB,gBAAA,sBAAsB,EAAE;AACtB,oBAAA,eAAe,EAAE,iBAAiB;AAClC,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,MAAM,EAAE,CAAC;AACV,iBAAA;AACF,aAAA;AAED,YAAA,qCAAqC,EAAE;AACrC,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,SAAS,EAAE,mBAAmB;AAC/B,aAAA;AAED,YAAA,iCAAiC,EAAE;AACjC,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA;AAED,YAAA,mCAAmC,EAAE;AACnC,gBAAA,eAAe,EAAE,oBAAoB;AACtC,aAAA;AACF,SAAA;AAED,QAAA,oBAAoB,EAAE;AACpB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAE,SAAS;AAClB,SAAA;AAED,QAAA,oBAAoB,EAAE;YACpB,YAAY,EAAE,EAAE,GAAG,CAAC;AACpB,YAAA,eAAe,EAAE,oBAAoB;AACrC,YAAA,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,EAAE;AACzD,gBAAA,QAAQ,EAAE,GAAG;aACd,CAAC;AAEF,YAAA,SAAS,EAAE;AACT,gBAAA,eAAe,EAAE,eAAe;AACjC,aAAA;AACF,SAAA;KACF;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAmC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,KAAI;IACxF,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAOtC,eAAC,YAAY,EAAA,EAAC,aAAa,EAAA,IAAA,EAAA,GAAK,WAAW,GAAI;IACxD;AAEA,IAAA,QACEK,eAAA,CAAC,0BAA0B,EAAA,EACzB,EAAE,EAAE;AACF,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,GAAG,EAAE;SACN,EAAA,QAAA,EAAA,CAEDL,cAAA,CAAC,YAAY,EAAA,EAAC,aAAa,EAAA,IAAA,EAAA,GAAK,WAAW,EAAA,CAAI,EAC9C,KAAK,CAAA,EAAA,CACqB;AAEjC;;ACnHO,MAAM,UAAU,GAAmB;AACxC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;CACF;AAWM,MAAM,oBAAoB,GAAmB;AAClD,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,OAAO,EAAE,SAAS;CACnB;AAEM,MAAM,yBAAyB,GAAmB;AACvD,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,YAAY,EAAE,mBAAmB;CAClC;AAEM,MAAM,gCAAgC,GAAmB;AAC9D,IAAA,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,EAAE;AACV,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,OAAO,EAAE,SAAS;CACnB;AAEM,MAAM,uBAAuB,GAAmB;AACrD,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA,KAAK,EAAE,MAAM;CACd;AAEM,MAAM,8BAA8B,GAAmB;AAC5D,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,YAAY,EAAE,CAAC;CAChB;AAED,IAAY,SAKX;AALD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,SAAuB;AACvB,IAAA,SAAA,CAAA,eAAA,CAAA,GAAA,SAAyB;AACzB,IAAA,SAAA,CAAA,kBAAA,CAAA,GAAA,SAA4B;AAC5B,IAAA,SAAA,CAAA,wBAAA,CAAA,GAAA,SAAkC;AACpC,CAAC,EALW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;ACtBrB,MAAM,aAAa,GAAiC,CAAC,EACnD,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,SAAS,GAAG,KAAK,EACjB,UAAU,EACV,QAAQ,EACR,EAAE,EACF,MAAM,EACN,SAAS,GACV,KAAI;;IAEH,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGG,cAAQ,CAAC,QAAQ,CAAC;IAClD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAqB,IAAI,CAAC;AAClE,IAAA,MAAM,aAAa,GAAGoC,WAAK,EAAE;IAE7BJ,eAAS,CAAC,MAAK;QACb,WAAW,CAAC,QAAQ,CAAC;AACvB,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEd,IAAA,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ;AACzC,IAAA,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU;AAC1E,IAAA,MAAM,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI;AACnE,IAAA,MAAM,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;;AAG/D,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAoC,KAAI;AAClE,QAAA,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;AAClC,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,GAAqB,KAAI;AAC/C,QAAA,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,QAAA,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;YACf,GAAG,CAAC,OAAO,EAAE;QACf;AACF,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAAC,GAAqB,KAAI;QACxD,cAAc,CAAC,GAAG,CAAC;QACnB,WAAW,CAAC,IAAI,CAAC;AACnB,IAAA,CAAC;IAED,QACEnC,eAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EACZ,UAAU,IACTA,cAAA,CAACwC,wBAAW,IAAC,EAAE,EAAE,aAAa,EAAA,QAAA,EAC5BxC,cAAA,CAACV,cAAK,EAAA,EAAC,SAAS,EAAC,QAAQ,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAAE,YAC9F,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,oBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,KAAK,QAAQ;AAEpC,oBAAA,QACEU,cAAA,CAAC,WAAW,IAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAe,EAAE,EAAE,GAAG,CAAC,EAAE,YACxEK,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,CAC/BP,eAACV,cAAK,EAAA,EACJ,SAAS,EAAEmD,mBAAM,CAAC,GAAG,EACrB,EAAE,EAAE;AACF,wCAAA,GAAG,uBAAuB;AAC1B,wCAAA,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,aAAa;AAClE,qCAAA,EACD,KAAK,EAAE,MAAM,cAAc,CAAC,GAAG,CAAC,EAAA,QAAA,EAEhCpC,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,4CAAA,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM;AAClC,4CAAA,OAAO,EAAE,MAAM;AACf,4CAAA,UAAU,EAAE,QAAQ;4CACpB,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AACvB,4CAAA,QAAQ,EAAE,UAAU;AACpB,4CAAA,MAAM,EAAE,CAAC;AACT,4CAAA,GAAG,EAAE;yCACN,EAAA,QAAA,EAAA,CAEA,GAAG,CAAC,IAAI,IAAIP,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAA,CAAI,EACvD,GAAG,CAAC,IAAI,CAAA,EAAA,CACL,EAAA,CACA,EAEP,QAAQ,KACPA,cAAA,CAACO,YAAG,EAAA,EACF,SAAS,EAAEkC,mBAAM,CAAC,GAAG,EACrB,EAAE,EAAE,EAAE,GAAG,8BAA8B,EAAE,EACzC,QAAQ,EAAE,CAAA,EAAG,aAAa,CAAA,WAAA,CAAa,EAAA,CACvC,CACH,CAAA,EAAA,CACG,EAAA,EAjCgD,GAAG,CAAC,EAAE,CAkChD;gBAElB,CAAC,CAAC,GACI,EAAA,CACI,KAEdzC,cAAA,CAACwC,wBAAW,EAAA,EAAC,EAAE,EAAE,aAAa,EAAA,QAAA,EAC5BnC,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACtEF,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,yBAAyB,EAAE,EAAA,QAAA,EAAA,CACtC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACvB,gCAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,KAAK,QAAQ;AACpC,gCAAA,QACEP,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAe,EAAE,EAAE,GAAG,CAAC,EAAE,EAAA,QAAA,EACxEK,gBAACf,cAAK,EAAA,EACJ,SAAS,EAAEmD,mBAAM,CAAC,GAAG,EACrB,EAAE,EAAE;AACF,4CAAA,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,aAAa;AACjE,4CAAA,QAAQ,EAAE,UAAU;AACpB,4CAAA,OAAO,EAAE,WAAW;AACpB,4CAAA,MAAM,EAAE,SAAS;AACjB,4CAAA,SAAS,EAAE,EAAE;AACb,4CAAA,SAAS,EAAE;gDACT,OAAO,EAAE,SAAS,CAAC,gBAAgB;AACpC,6CAAA;AACD,4CAAA,GAAG,MAAM;AACV,yCAAA,EACD,KAAK,EAAE,MAAM,cAAc,CAAC,GAAG,CAAC,EAAA,QAAA,EAAA,CAEhCpC,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oDAAA,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM;AAClC,oDAAA,OAAO,EAAE,MAAM;AACf,oDAAA,UAAU,EAAE,QAAQ;oDACpB,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AACvB,oDAAA,GAAG,EAAE;iDACN,EAAA,QAAA,EAAA,CAEA,GAAG,CAAC,IAAI,IAAIP,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAA,CAAI,EACvD,GAAG,CAAC,IAAI,CAAA,EAAA,CACL,EAEL,QAAQ,KACPA,cAAA,CAACO,YAAG,IACF,SAAS,EAAEkC,mBAAM,CAAC,GAAG,EACrB,EAAE,EAAE,EAAE,GAAG,gCAAgC,EAAE,EAC3C,QAAQ,EAAE,CAAA,EAAG,aAAa,CAAA,UAAA,CAAY,EAAA,CACtC,CACH,CAAA,EAAA,CACK,EAAA,EApC8C,GAAG,CAAC,EAAE,CAqChD;4BAElB,CAAC,CAAC,EAED,YAAY,KACXpC,gBAAC,KAAK,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACbL,cAAA,CAACO,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,oBAAoB,EAAE,EAAA,CAAI,EACxCP,cAAA,CAACV,cAAK,EAAA,EACJ,EAAE,EAAE;AACF,4CAAA,GAAG,UAAU;yCACd,EACD,OAAO,EAAE,kBAAkB,EAAA,QAAA,EAE3BU,eAAC,WAAW,EAAA,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAE,IAAI,EAAA,CAAI,EAAA,CACvC,IACO,CAClB,CAAA,EAAA,CACG,EAENA,cAAA,CAACc,aAAI,EAAA,EACH,iBAAiB,EAAA,IAAA,EACjB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EACvB,OAAO,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,EAChC,YAAY,EAAE;AACZ,4BAAA,QAAQ,EAAE,QAAQ;AAClB,4BAAA,UAAU,EAAE,MAAM;AACnB,yBAAA,EACD,eAAe,EAAE;AACf,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,UAAU,EAAE,MAAM;AACnB,yBAAA,EAAA,QAAA,EAEA,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACxB,4BAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,KAAK,QAAQ;AAEpC,4BAAA,QACEd,cAAA,CAACe,iBAAQ,EAAA,EAEP,OAAO,EAAE,MAAM,uBAAuB,CAAC,GAAG,CAAC,EAC3C,EAAE,EAAE;AACF,oCAAA,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,aAAa;oCACjE,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC,sBAAsB,GAAG,aAAa;AACpE,oCAAA,SAAS,EAAE;AACT,wCAAA,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC,sBAAsB,GAAG,SAAS,CAAC,gBAAgB;AAClF,qCAAA;AACF,iCAAA,EAAA,QAAA,EAEDV,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,wCAAA,OAAO,EAAE,MAAM;AACf,wCAAA,UAAU,EAAE,QAAQ;wCACpB,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AACxB,qCAAA,EAAA,QAAA,EAAA,CAEA,GAAG,CAAC,IAAI,IAAIP,cAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAA,CAAI,EACvD,GAAG,CAAC,IAAI,CAAA,EAAA,CACL,EAAA,EAnBD,GAAG,CAAC,EAAE,CAoBF;AAEf,wBAAA,CAAC,CAAC,EAAA,CACG,CAAA,EAAA,CACH,GACM,CACf,EAAA,CACc;AAErB;;AC3NA,MAAM,iBAAiB,GAAG,CAAC,EACzB,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,EAAE,EAChB,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,QAAQ,EACR,MAAM,EACN,UAAU,GAAG,EAAE,EACf,IAAI,GAAG,CAAC,EACR,SAAS,EACT,EAAE,GACY,KAAI;AAClB,IAAA,MAAM,iBAAiB,GAAG,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,IAAI;IAEhF,MAAM,aAAa,GAAG,MAAK;QACzB,IAAI,KAAK,IAAI,YAAY;AAAE,YAAA,OAAO,YAAY;QAC9C,IAAI,OAAO,IAAI,cAAc;AAAE,YAAA,OAAO,cAAc;AACpD,QAAA,IAAI,UAAU;AAAE,YAAA,OAAO,UAAU;AACjC,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAK;AAC9B,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AACtC,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,OAAO;AAAE,YAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AACtC,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAC;AAED,IAAA,QACEK,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;AACpB,iBAAA,EAAA,QAAA,EAEA,KAAK,EAAA,CACK,CACd,EAEDL,gBAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,aAC/BP,cAAA,CAAC4B,kBAAS,EAAA,EACR,SAAS,EAAA,IAAA,EACT,SAAS,EAAA,IAAA,EACT,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC3C,MAAM,EAAE,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACvC,UAAU,EAAE;AACV,4BAAA,SAAS,EAAE,SAAS;AACpB,4BAAA,KAAK,EAAE;gCACL,GAAG,UAAU,CAAC,aAAa;gCAC3B,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK;AAC1C,6BAAA;AACF,yBAAA,EACD,EAAE,EAAE;AACF,4BAAA,0BAA0B,EAAE;AAC1B,gCAAA,YAAY,EAAE,iBAAiB;AAC/B,gCAAA,eAAe,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO;AACxD,gCAAA,UAAU,EAAE,eAAe;AAC3B,gCAAA,YAAY,EAAE;oCACZ,WAAW,EAAE,cAAc,EAAE;AAC9B,iCAAA;AACD,gCAAA,kBAAkB,EAAE;oCAClB,WAAW,EAAE,QAAQ,GAAG,cAAc,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AACzF,iCAAA;AACD,gCAAA,wBAAwB,EAAE;AACxB,oCAAA,WAAW,EAAE,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AAC1D,oCAAA,WAAW,EAAE,OAAO;AACrB,iCAAA;AACF,6BAAA;AACD,4BAAA,2BAA2B,EAAE;AAC3B,gCAAA,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;AACnD,gCAAA,gBAAgB,EAAE;AAChB,oCAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oCAAA,OAAO,EAAE,CAAC;AACX,iCAAA;AACD,gCAAA,YAAY,EAAE;AACZ,oCAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oCAAA,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC;AACxC,iCAAA;AACF,6BAAA;AACD,4BAAA,oCAAoC,EAAE;gCACpC,WAAW,EAAE,cAAc,EAAE;AAC9B,6BAAA;yBACF,EAAA,CACD,EAGD,SAAS,KACRvB,gBAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,MAAM,EAAE,KAAK;AACb,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,4BAAA,aAAa,EAAE,MAAM;AACtB,yBAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAEC,KAAK,EAAE,MAAM,EAAA,GAAA,EAAG,SAAS,SACvB,CACP,CAAA,EAAA,CACG,EAGL,aAAa,EAAE,KACdP,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;oBACF,KAAK,EAAE,kBAAkB,EAAE;AAC3B,oBAAA,SAAS,EAAE,KAAK;oBAChB,GAAG,UAAU,CAAC,eAAe;AAC9B,iBAAA,EAAA,QAAA,EAEA,aAAa,EAAE,EAAA,CACZ,CACP,CAAA,EAAA,CACG;AAEV;;ACtIA,MAAM,eAAe,GAAGlB,aAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;IACzD,OAAO;AACL,QAAA,0BAA0B,EAAE;YAC1B,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YACjD,kBAAkB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACvD,YAAA,wBAAwB,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACjF,YAAA,eAAe,EAAE;AACf,gBAAA,SAAS,EAAE,uDAAuD;AACnE,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC;gBACnC,YAAY,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;AAClF,aAAA;AACD,YAAA,sBAAsB,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;YAC7E,4BAA4B,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,kCAAkC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;AACzF,YAAA,yBAAyB,EAAE;AACzB,gBAAA,SAAS,EAAE,uEAAuE;AACnF,aAAA;AACF,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,aAAa;AAC3B,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,gBAAgB,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC7D,YAAA,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC/B,SAAA;AACD,QAAA,uBAAuB,EAAE;YACvB,GAAG,UAAU,CAAC,cAAc;AAC5B,YAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,YAAA,SAAS,EAAE,mCAAmC;YAC9C,eAAe,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE;YAC9C,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;AACD,QAAA,2BAA2B,EAAE;YAC3B,GAAG,UAAU,CAAC,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAA;KACF;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,KAAK,EACL,WAAW,GAAG,aAAa,EAC3B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GAAG,CAAC,EAChB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,EAAE,EACF,GAAG,KAAK,EACO,KAAI;AACnB,IAAA,QACEgB,eAAA,CAACE,YAAG,IAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAA,QAAA,EAAA,CACf,KAAK,KACJP,eAACU,mBAAU,EAAA,EACT,EAAE,EAAE;AACF,oBAAA,OAAO,EAAE,OAAO;oBAChB,GAAG,UAAU,CAAC,cAAc;AAC5B,oBAAA,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AACtB,oBAAA,YAAY,EAAE,KAAK;iBACpB,EAAA,QAAA,EAEA,KAAK,GACK,CACd,EACDV,eAAC,eAAe,EAAA,EACd,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,GAAG,YAAY,GAAG,UAAU,EAC7C,IAAI,EAAC,OAAO,EACZ,SAAS,EAAA,IAAA,EACT,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE;AACV,oBAAA,cAAc,EAAE,UAAU,GAAGA,eAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAA,QAAA,EAAE,UAAU,GAAkB,GAAG,SAAS;AACvG,oBAAA,YAAY,EAAE,SAAS,GAAG9B,eAAC8B,uBAAc,EAAA,EAAC,QAAQ,EAAC,KAAK,EAAA,QAAA,EAAE,SAAS,GAAkB,GAAG,SAAS;AAClG,iBAAA,EACD,EAAE,EAAE;AACF,oBAAA,0BAA0B,EAAE;AAC1B,wBAAA,YAAY,EAAE,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,CAAA,EAAG,YAAY,CAAA,EAAA,CAAI;wBACpE,IAAI,OAAO,IAAI;AACb,4BAAA,eAAe,EAAE;AACf,gCAAA,SAAS,EAAE,CAAA,8CAAA,EAAiD,aAAa,CAAC,GAAG,CAAC,CAAA,CAAE;AACjF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACF,iBAAA,EAAA,GACG,KAAK,EAAA,CACT,EACD,OAAO,IAAI,CAAC,KAAK,IAAI,cAAc,KAClC9B,cAAA,CAACU,mBAAU,EAAA,EACT,EAAE,EAAE;oBACF,GAAG,UAAU,CAAC,eAAe;AAC7B,oBAAA,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;AACzB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,EAAA,QAAA,EAEA,cAAc,EAAA,CACJ,CACd,CAAA,EAAA,CACG;AAEV;;ACnIO,MAAM,SAAS,GAAG;AACvB,IAAA,WAAW,EAAE;AACX,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC;AAChC,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,UAAU,EAAE,oCAAoC;AAChD,QAAA,SAAS,EAAE,2BAA2B;AACtC,QAAA,iBAAiB,EAAE;AACjB,YAAA,IAAI,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE;AACrC,YAAA,KAAK,EAAE,EAAE,kBAAkB,EAAE,SAAS,EAAE;AACxC,YAAA,MAAM,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE;AACxC,SAAA;AACF,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE,CAAC;AACV,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE,CAAC;AACV,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,EAAE,EAAE,CAAC;AACN,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE,CAAC;AACV,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;CACF;;ACtCD,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;AAE3E,MAAM,SAAS,GAAG;AAChB,IAAA,KAAK,EAAE,uBAAuB;AAC9B,IAAA,IAAI,EAAE,uBAAuB;CAC9B;AAgBD;AACA;AACA;AAEA,MAAM,cAAc,GAAG,CAAC,KAAa,KAAY;IAC/C,IAAI,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;IACjC,MAAM,CAAC,GAAG,IAAI;AACd,IAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,QAAgB,KAAY;AAC/C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE;IACpD,OAAO,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI;AACjF,CAAC;AAED;AACA;AACA;AAEC,MAAM,qBAAqB,GAAgC,CAAC,EAC3D,IAAI,EACJ,QAAQ,GAAG,CAAC,EACZ,MAAM,GAAG,SAAS,EAClB,QAAQ,EACR,OAAO,EACP,SAAS,GAAG,IAAI,EAChB,aAAa,EACb,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,EAC9B,EAAE,GACH,KAAI;;IAEH,MAAM,OAAO,GAAGa,aAAO,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGlE,IAAA,MAAM,WAAW,GAAG,MAAM,KAAK,SAAS;AACxC,IAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ;AACpC,IAAA,MAAM,WAAW,GAAG,MAAM,KAAK,WAAW;;IAG1C,MAAM,WAAW,GAAW;AAC1B,UAAE,MAAM,CAAC,WAAW;UAClB,WAAW,IAAI;AACf,cAAE,MAAM,CAAC,aAAa;cACpB,SAAS;AACf,IAAA,MAAM,SAAS,GAAW,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS;AACpE,IAAA,MAAM,aAAa,GAAW,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS;;IAGxE,MAAM,kBAAkB,GAAG,MAAK;QAC9B,IAAI,WAAW,IAAI,CAAC,WAAW;YAAE,OAAO,CAAA,GAAA,EAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY;AAC9E,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,kBAAkB;AACvC,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;AAED,IAAA,QACElB,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,eAAe,EAAE,kBAAkB;AACnC,YAAA,GAAG,EAAE;AACN,SAAA,EAAA,QAAA,EAAA,CAGA,CAAC,SAAS,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,KACrDP,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA,CAAA,CAAG,EAAE,EAAA,CAAI,CACjE,EAGDP,cAAA,CAACO,YAAG,EAAA,EAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAC,WAAW,EAAC,EAAE,EAAE,SAAS,CAAC,SAAS,EAAA,CAAI,EAG9EF,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,SAAS,CAAC,UAAU,EAAA,QAAA,EAAA,CAC3BF,eAAA,CAAC,8BAA8B,eAE7BA,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,SAAS,CAAC,OAAO,EAAA,QAAA,EAAA,CACxBP,cAAA,CAACU,mBAAU,EAAA,EAAC,MAAM,EAAA,IAAA,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAA,QAAA,EACtF,IAAI,CAAC,IAAI,EAAA,CACC,EACbL,eAAA,CAACK,mBAAU,IAAC,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,EAAA,QAAA,EAAA,CAClE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,kBAAkB,EAAE,CAAA,EAAA,CACV,CAAA,EAAA,CACT,EAGNL,gBAACE,YAAG,EAAA,EAAC,EAAE,EAAE,SAAS,CAAC,SAAS,EAAA,QAAA,EAAA,CAEzB,CAAC,SAAS,IAAI,WAAW,IAAI,CAAC,WAAW,KACxCP,cAAA,CAACO,YAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE,YAC9DP,cAAA,CAACgB,yBAAgB,EAAA,EAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAC,SAAS,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,GACjF,CACP,EAGA,WAAW,IAAIhB,eAAC,eAAe,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAA,CAAI,EAGjE,QAAQ,IAAI,OAAO,KAClBA,cAAA,CAACa,mBAAU,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,cAAc,YAC7Db,cAAA,CAAC,WAAW,EAAA,EAAC,QAAQ,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAA,CAAI,GACjD,CACd,EAGA,CAAC,QAAQ,IAAI,QAAQ,KACpBA,cAAA,CAACa,mBAAU,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAA,QAAA,EACxCb,eAAC,WAAW,EAAA,EAAC,IAAI,EAAC,QAAQ,EAAA,CAAG,EAAA,CAClB,CACd,CAAA,EAAA,CACG,IACyB,EAGhC,SAAS,IAAI,WAAW,KACvBA,cAAA,CAACO,YAAG,EAAA,EAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAA,QAAA,EAC/BP,eAACH,uBAAc,EAAA,EACb,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAC,SAAS,EACf,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAA,CAClC,EAAA,CACE,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF;AAEV,CAAC;;AC7HD,MAAM,iBAAiB,GAA4B,CAAC,EAClD,eAAe,EACf,MAAM,GAAG,GAAG,EACZ,QAAQ,GAAG,IAAI,EACf,QAAQ,EACR,EAAE,EACF,OAAO,EACP,WAAW,GAAG,iBAAiB,EAC/B,UAAU,EACV,KAAK,EAAE,aAAa,EACpB,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,KAAI;AACH,IAAA,MAAM,YAAY,GAAGyB,YAAM,CAAmB,IAAI,CAAC;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGnB,cAAQ,CAAC,KAAK,CAAC;;AAGnD,IAAA,MAAM,YAAY,GAAG,aAAa,IAAI,EAAE;IAExC,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE;AAC/B,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAA0C,KAAI;AACtE,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QACxC,IAAI,aAAa,EAAE;YACjB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3C,eAAe,CAAC,SAAS,CAAC;QAC5B;AACA,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,IAA2C,KAAI;QACvE,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC;QACpB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,CAAkB,KAAI;QAC5C,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QACnB,aAAa,CAAC,IAAI,CAAC;AACrB,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,CAAkB,KAAI;QAC7C,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QACnB,aAAa,CAAC,KAAK,CAAC;AACtB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,CAAkB,KAAI;QACxC,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QACnB,aAAa,CAAC,KAAK,CAAC;AAEpB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK;QAClC,IAAI,KAAK,EAAE;YACT,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC;AACF,IAAA,CAAC;AAED,IAAA,QACEE,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;AACF,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,WAAW,EAAE,UAAU,EAAE,WAAW,IAAI,iBAAiB;AACzD,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,UAAU,EAAE,eAAe;AAC3B,YAAA,eAAe,EAAE,UAAU,GAAG,iBAAiB,GAAG,UAAU,EAAE,UAAU,IAAI,kBAAkB;AAC9F,YAAA,SAAS,EAAE;gBACT,WAAW,EAAE,UAAU,EAAE,gBAAgB,IAAI,UAAU,EAAE,WAAW,IAAI,cAAc;AACtF,gBAAA,MAAM,EAAE,kBAAkB;AAC3B,aAAA;AACD,YAAA,GAAG,EAAE;AACN,SAAA,EACD,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,UAAU,EAAA,QAAA,EAAA,CAElBP,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAA,CAC1B,EAED,YAAY,CAAC,MAAM,KAAK,CAAC,KACxBA,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EACG,QAAQ,IACPI,eAAA,CAACE,YAAG,eACD,QAAQ,EACTF,eAAA,CAACE,YAAG,IACF,SAAS,EAAC,GAAG,EACb,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,cAAc;AACrB,gCAAA,cAAc,EAAE,WAAW;AAC3B,gCAAA,UAAU,EAAE,GAAG;AACf,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,SAAS,EAAE,MAAM;AACjB,gCAAA,MAAM,EAAE,YAAY;AACpB,gCAAA,GAAG,OAAO;6BACX,EAAA,QAAA,EAAA,CAEA,WAAW,EAAA,mBAAA,CAAA,EAAA,CACR,CAAA,EAAA,CACF,KAENF,eAAA,CAACE,YAAG,EAAA,EAAA,QAAA,EAAA,CACFP,cAAA,CAACO,YAAG,EAAA,EACF,SAAS,EAAC,KAAK,EACf,GAAG,EAAC,2BAA2B,EAC/B,GAAG,EAAC,aAAa,EACjB,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,YAAY,EAAE,MAAM;6BACrB,EAAA,CACD,EACFF,gBAACE,YAAG,EAAA,EACF,SAAS,EAAC,GAAG,EACb,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,cAAc;AACrB,gCAAA,cAAc,EAAE,WAAW;AAC3B,gCAAA,UAAU,EAAE,GAAG;AACf,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,MAAM,EAAE,CAAC;AACT,gCAAA,GAAG,OAAO;6BACX,EAAA,QAAA,EAAA,CAEA,WAAW,yBACR,CAAA,EAAA,CACF,CACP,GACA,CACJ,EAGA,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,KACtCP,eAACO,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,aAAa,EAAE,QAAQ;AACvB,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,SAAS,EAAE,MAAM;iBAClB,EACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,YAElC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAC5BP,eAAC,qBAAqB,EAAA,EAEpB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,EACjC,QAAQ,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3C,OAAO,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,EACrC,aAAa,EAAE,UAAU,EAAE,aAAa,EACxC,WAAW,EAAE,WAAW,EAAA,EARnB,IAAI,CAAC,EAAE,IAAI,KAAK,CASrB,CACH,CAAC,EAAA,CACE,CACP,CAAA,EAAA,CACG;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}