@dooboostore/dom-render 1.0.106 → 1.0.107

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 (632) hide show
  1. package/dist/cjs/DomRender.d.js +16 -0
  2. package/dist/cjs/DomRender.d.js.map +7 -0
  3. package/dist/cjs/DomRender.js +5 -0
  4. package/dist/cjs/DomRender.js.map +1 -1
  5. package/dist/cjs/DomRenderProxy.d.js +17 -0
  6. package/dist/cjs/DomRenderProxy.d.js.map +7 -0
  7. package/dist/cjs/DomRenderProxy.d.ts +0 -1
  8. package/dist/cjs/DomRenderProxy.d.ts.map +1 -1
  9. package/dist/cjs/DomRenderProxy.js +6 -4
  10. package/dist/cjs/DomRenderProxy.js.map +2 -2
  11. package/dist/cjs/components/ComponentBase.d.js +17 -0
  12. package/dist/cjs/components/ComponentBase.d.js.map +7 -0
  13. package/dist/cjs/components/ComponentBase.d.ts +0 -1
  14. package/dist/cjs/components/ComponentBase.d.ts.map +1 -1
  15. package/dist/cjs/components/ComponentBase.js +71 -54
  16. package/dist/cjs/components/ComponentBase.js.map +2 -2
  17. package/dist/cjs/components/ComponentRouterBase.d.js +16 -0
  18. package/dist/cjs/components/ComponentRouterBase.d.js.map +7 -0
  19. package/dist/cjs/components/ComponentRouterBase.js +4 -0
  20. package/dist/cjs/components/ComponentRouterBase.js.map +1 -1
  21. package/dist/cjs/components/ComponentSet.d.js +16 -0
  22. package/dist/cjs/components/ComponentSet.d.js.map +7 -0
  23. package/dist/cjs/components/ComponentSet.js +5 -0
  24. package/dist/cjs/components/ComponentSet.js.map +1 -1
  25. package/dist/cjs/components/a/A.d.js +24 -0
  26. package/dist/cjs/components/a/A.d.js.map +7 -0
  27. package/dist/cjs/components/a/A.d.ts +1 -1
  28. package/dist/cjs/components/a/A.js +40 -32
  29. package/dist/cjs/components/a/A.js.map +1 -1
  30. package/dist/cjs/components/a/index.d.js +18 -0
  31. package/dist/cjs/components/a/index.d.js.map +7 -0
  32. package/dist/cjs/components/appender/Appender.d.js +24 -0
  33. package/dist/cjs/components/appender/Appender.d.js.map +7 -0
  34. package/dist/cjs/components/appender/Appender.d.ts +1 -1
  35. package/dist/cjs/components/appender/Appender.js +6 -0
  36. package/dist/cjs/components/appender/Appender.js.map +1 -1
  37. package/dist/cjs/components/appender/index.d.js +18 -0
  38. package/dist/cjs/components/appender/index.d.js.map +7 -0
  39. package/dist/cjs/components/checkbox/CheckBox.d.js +24 -0
  40. package/dist/cjs/components/checkbox/CheckBox.d.js.map +7 -0
  41. package/dist/cjs/components/checkbox/CheckBox.d.ts +3 -3
  42. package/dist/cjs/components/checkbox/CheckBox.js +7 -4
  43. package/dist/cjs/components/checkbox/CheckBox.js.map +1 -1
  44. package/dist/cjs/components/checkbox/index.d.js +18 -0
  45. package/dist/cjs/components/checkbox/index.d.js.map +7 -0
  46. package/dist/cjs/components/choose/Choose.d.js +24 -0
  47. package/dist/cjs/components/choose/Choose.d.js.map +7 -0
  48. package/dist/cjs/components/choose/Choose.d.ts +3 -3
  49. package/dist/cjs/components/choose/Choose.js +11 -1
  50. package/dist/cjs/components/choose/Choose.js.map +1 -1
  51. package/dist/cjs/components/choose/index.d.js +18 -0
  52. package/dist/cjs/components/choose/index.d.js.map +7 -0
  53. package/dist/cjs/components/details/Details.d.js +24 -0
  54. package/dist/cjs/components/details/Details.d.js.map +7 -0
  55. package/dist/cjs/components/details/Details.d.ts +4 -4
  56. package/dist/cjs/components/details/Details.js +11 -0
  57. package/dist/cjs/components/details/Details.js.map +1 -1
  58. package/dist/cjs/components/details/index.d.js +18 -0
  59. package/dist/cjs/components/details/index.d.js.map +7 -0
  60. package/dist/cjs/components/forOf/ForOf.d.js +24 -0
  61. package/dist/cjs/components/forOf/ForOf.d.js.map +7 -0
  62. package/dist/cjs/components/forOf/ForOf.d.ts +1 -1
  63. package/dist/cjs/components/forOf/ForOf.js +6 -0
  64. package/dist/cjs/components/forOf/ForOf.js.map +1 -1
  65. package/dist/cjs/components/forOf/index.d.js +18 -0
  66. package/dist/cjs/components/forOf/index.d.js.map +7 -0
  67. package/dist/cjs/components/if/If.d.js +24 -0
  68. package/dist/cjs/components/if/If.d.js.map +7 -0
  69. package/dist/cjs/components/if/If.d.ts +1 -1
  70. package/dist/cjs/components/if/If.js +3 -1
  71. package/dist/cjs/components/if/If.js.map +1 -1
  72. package/dist/cjs/components/if/index.d.js +18 -0
  73. package/dist/cjs/components/if/index.d.js.map +7 -0
  74. package/dist/cjs/components/index.d.js +34 -0
  75. package/dist/cjs/components/index.d.js.map +7 -0
  76. package/dist/cjs/components/index.d.ts +37 -37
  77. package/dist/cjs/components/input/Input.d.js +24 -0
  78. package/dist/cjs/components/input/Input.d.js.map +7 -0
  79. package/dist/cjs/components/input/Input.d.ts +1 -1
  80. package/dist/cjs/components/input/Input.js +8 -0
  81. package/dist/cjs/components/input/Input.js.map +1 -1
  82. package/dist/cjs/components/input/index.d.js +18 -0
  83. package/dist/cjs/components/input/index.d.js.map +7 -0
  84. package/dist/cjs/components/promise/PromiseSwitch.d.js +24 -0
  85. package/dist/cjs/components/promise/PromiseSwitch.d.js.map +7 -0
  86. package/dist/cjs/components/promise/PromiseSwitch.d.ts +5 -5
  87. package/dist/cjs/components/promise/PromiseSwitch.js +20 -1
  88. package/dist/cjs/components/promise/PromiseSwitch.js.map +1 -1
  89. package/dist/cjs/components/promise/index.d.js +18 -0
  90. package/dist/cjs/components/promise/index.d.js.map +7 -0
  91. package/dist/cjs/components/radio/Radio.d.js +24 -0
  92. package/dist/cjs/components/radio/Radio.d.js.map +7 -0
  93. package/dist/cjs/components/radio/Radio.d.ts +3 -3
  94. package/dist/cjs/components/radio/Radio.js +7 -4
  95. package/dist/cjs/components/radio/Radio.js.map +1 -1
  96. package/dist/cjs/components/radio/index.d.js +18 -0
  97. package/dist/cjs/components/radio/index.d.js.map +7 -0
  98. package/dist/cjs/components/router/Route.d.js +24 -0
  99. package/dist/cjs/components/router/Route.d.js.map +7 -0
  100. package/dist/cjs/components/router/Route.d.ts +2 -2
  101. package/dist/cjs/components/router/Route.js +18 -15
  102. package/dist/cjs/components/router/Route.js.map +1 -1
  103. package/dist/cjs/components/router/RouterOutlet.d.js +24 -0
  104. package/dist/cjs/components/router/RouterOutlet.d.js.map +7 -0
  105. package/dist/cjs/components/router/RouterOutlet.d.ts +1 -1
  106. package/dist/cjs/components/router/RouterOutlet.js +5 -1
  107. package/dist/cjs/components/router/RouterOutlet.js.map +1 -1
  108. package/dist/cjs/components/router/index.d.js +19 -0
  109. package/dist/cjs/components/router/index.d.js.map +7 -0
  110. package/dist/cjs/components/select/Select.d.js +24 -0
  111. package/dist/cjs/components/select/Select.d.js.map +7 -0
  112. package/dist/cjs/components/select/Select.d.ts +10 -10
  113. package/dist/cjs/components/select/Select.js +86 -69
  114. package/dist/cjs/components/select/Select.js.map +2 -2
  115. package/dist/cjs/components/select/index.d.js +18 -0
  116. package/dist/cjs/components/select/index.d.js.map +7 -0
  117. package/dist/cjs/components/this/This.d.js +24 -0
  118. package/dist/cjs/components/this/This.d.js.map +7 -0
  119. package/dist/cjs/components/this/This.d.ts +1 -1
  120. package/dist/cjs/components/this/This.js +5 -1
  121. package/dist/cjs/components/this/This.js.map +1 -1
  122. package/dist/cjs/components/this/index.d.js +18 -0
  123. package/dist/cjs/components/this/index.d.js.map +7 -0
  124. package/dist/cjs/components/timer/Timer.d.js +24 -0
  125. package/dist/cjs/components/timer/Timer.d.js.map +7 -0
  126. package/dist/cjs/components/timer/Timer.d.ts +1 -1
  127. package/dist/cjs/components/timer/Timer.js +7 -0
  128. package/dist/cjs/components/timer/Timer.js.map +1 -1
  129. package/dist/cjs/components/timer/index.d.js +18 -0
  130. package/dist/cjs/components/timer/index.d.js.map +7 -0
  131. package/dist/cjs/configs/DomRenderConfig.d.js +16 -0
  132. package/dist/cjs/configs/DomRenderConfig.d.js.map +7 -0
  133. package/dist/cjs/configs/TargetAttr.d.js +16 -0
  134. package/dist/cjs/configs/TargetAttr.d.js.map +7 -0
  135. package/dist/cjs/configs/TargetElement.d.js +16 -0
  136. package/dist/cjs/configs/TargetElement.d.js.map +7 -0
  137. package/dist/cjs/decorators/DomRenderNoProxy.d.js +17 -0
  138. package/dist/cjs/decorators/DomRenderNoProxy.d.js.map +7 -0
  139. package/dist/cjs/decorators/DomRenderNoProxy.d.ts +0 -1
  140. package/dist/cjs/decorators/DomRenderNoProxy.d.ts.map +1 -1
  141. package/dist/cjs/decorators/DomRenderNoProxy.js +0 -1
  142. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  143. package/dist/cjs/events/EventManager.d.js +16 -0
  144. package/dist/cjs/events/EventManager.d.js.map +7 -0
  145. package/dist/cjs/events/EventManager.js +58 -56
  146. package/dist/cjs/events/EventManager.js.map +1 -1
  147. package/dist/cjs/index.d.ts +2 -15
  148. package/dist/cjs/index.d.ts.map +1 -1
  149. package/dist/cjs/index.js +2 -41
  150. package/dist/cjs/index.js.map +2 -2
  151. package/dist/cjs/iterators/Range.d.js +16 -0
  152. package/dist/cjs/iterators/Range.d.js.map +7 -0
  153. package/dist/cjs/iterators/Range.js +9 -1
  154. package/dist/cjs/iterators/Range.js.map +1 -1
  155. package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js +16 -0
  156. package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js.map +7 -0
  157. package/dist/cjs/lifecycle/OnChangeAttrRender.d.js +16 -0
  158. package/dist/cjs/lifecycle/OnChangeAttrRender.d.js.map +7 -0
  159. package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js +16 -0
  160. package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js.map +7 -0
  161. package/dist/cjs/lifecycle/OnCreateRender.d.js +16 -0
  162. package/dist/cjs/lifecycle/OnCreateRender.d.js.map +7 -0
  163. package/dist/cjs/lifecycle/OnCreateRenderData.d.js +16 -0
  164. package/dist/cjs/lifecycle/OnCreateRenderData.d.js.map +7 -0
  165. package/dist/cjs/lifecycle/OnCreatedThisChild.d.js +16 -0
  166. package/dist/cjs/lifecycle/OnCreatedThisChild.d.js.map +7 -0
  167. package/dist/cjs/lifecycle/OnDestroyRender.d.js +16 -0
  168. package/dist/cjs/lifecycle/OnDestroyRender.d.js.map +7 -0
  169. package/dist/cjs/lifecycle/OnInitRender.d.js +16 -0
  170. package/dist/cjs/lifecycle/OnInitRender.d.js.map +7 -0
  171. package/dist/cjs/lifecycle/OnProxyDomRender.d.js +16 -0
  172. package/dist/cjs/lifecycle/OnProxyDomRender.d.js.map +7 -0
  173. package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js +16 -0
  174. package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js.map +7 -0
  175. package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js +16 -0
  176. package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js.map +7 -0
  177. package/dist/cjs/messenger/DefaultMessenger.d.js +16 -0
  178. package/dist/cjs/messenger/DefaultMessenger.d.js.map +7 -0
  179. package/dist/cjs/messenger/Messenger.d.js +16 -0
  180. package/dist/cjs/messenger/Messenger.d.js.map +7 -0
  181. package/dist/cjs/messenger/Messenger.js +8 -5
  182. package/dist/cjs/messenger/Messenger.js.map +1 -1
  183. package/dist/cjs/operators/Appender.d.js +16 -0
  184. package/dist/cjs/operators/Appender.d.js.map +7 -0
  185. package/dist/cjs/operators/Appender.js +5 -3
  186. package/dist/cjs/operators/Appender.js.map +1 -1
  187. package/dist/cjs/operators/Dr.d.js +16 -0
  188. package/dist/cjs/operators/Dr.d.js.map +7 -0
  189. package/dist/cjs/operators/DrAppender.d.js +16 -0
  190. package/dist/cjs/operators/DrAppender.d.js.map +7 -0
  191. package/dist/cjs/operators/DrFor.d.js +16 -0
  192. package/dist/cjs/operators/DrFor.d.js.map +7 -0
  193. package/dist/cjs/operators/DrForOf.d.js +16 -0
  194. package/dist/cjs/operators/DrForOf.d.js.map +7 -0
  195. package/dist/cjs/operators/DrForOf.js +2 -2
  196. package/dist/cjs/operators/DrForOf.js.map +2 -2
  197. package/dist/cjs/operators/DrForm.d.js +16 -0
  198. package/dist/cjs/operators/DrForm.d.js.map +7 -0
  199. package/dist/cjs/operators/DrIf.d.js +16 -0
  200. package/dist/cjs/operators/DrIf.d.js.map +7 -0
  201. package/dist/cjs/operators/DrIf.js +3 -3
  202. package/dist/cjs/operators/DrIf.js.map +2 -2
  203. package/dist/cjs/operators/DrInnerHTML.d.js +16 -0
  204. package/dist/cjs/operators/DrInnerHTML.d.js.map +7 -0
  205. package/dist/cjs/operators/DrInnerText.d.js +16 -0
  206. package/dist/cjs/operators/DrInnerText.d.js.map +7 -0
  207. package/dist/cjs/operators/DrPre.d.js +16 -0
  208. package/dist/cjs/operators/DrPre.d.js.map +7 -0
  209. package/dist/cjs/operators/DrRepeat.d.js +16 -0
  210. package/dist/cjs/operators/DrRepeat.d.js.map +7 -0
  211. package/dist/cjs/operators/DrStripElement.d.js +16 -0
  212. package/dist/cjs/operators/DrStripElement.d.js.map +7 -0
  213. package/dist/cjs/operators/DrTargetAttr.d.js +16 -0
  214. package/dist/cjs/operators/DrTargetAttr.d.js.map +7 -0
  215. package/dist/cjs/operators/DrTargetElement.d.js +16 -0
  216. package/dist/cjs/operators/DrTargetElement.d.js.map +7 -0
  217. package/dist/cjs/operators/DrTargetElementIsElement.d.js +16 -0
  218. package/dist/cjs/operators/DrTargetElementIsElement.d.js.map +7 -0
  219. package/dist/cjs/operators/DrThis.d.js +16 -0
  220. package/dist/cjs/operators/DrThis.d.js.map +7 -0
  221. package/dist/cjs/operators/DrThisProperty.d.js +16 -0
  222. package/dist/cjs/operators/DrThisProperty.d.js.map +7 -0
  223. package/dist/cjs/operators/OperatorExecuter.d.js +16 -0
  224. package/dist/cjs/operators/OperatorExecuter.d.js.map +7 -0
  225. package/dist/cjs/operators/OperatorExecuter.js +2 -2
  226. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  227. package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js +16 -0
  228. package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js.map +7 -0
  229. package/dist/cjs/rawsets/AttrInitCallBack.d.js +16 -0
  230. package/dist/cjs/rawsets/AttrInitCallBack.d.js.map +7 -0
  231. package/dist/cjs/rawsets/Attrs.d.js +16 -0
  232. package/dist/cjs/rawsets/Attrs.d.js.map +7 -0
  233. package/dist/cjs/rawsets/CreatorMetaData.d.js +16 -0
  234. package/dist/cjs/rawsets/CreatorMetaData.d.js.map +7 -0
  235. package/dist/cjs/rawsets/DestroyOptionType.d.js +16 -0
  236. package/dist/cjs/rawsets/DestroyOptionType.d.js.map +7 -0
  237. package/dist/cjs/rawsets/ElementInitCallBack.d.js +16 -0
  238. package/dist/cjs/rawsets/ElementInitCallBack.d.js.map +7 -0
  239. package/dist/cjs/rawsets/RawSet.d.js +16 -0
  240. package/dist/cjs/rawsets/RawSet.d.js.map +7 -0
  241. package/dist/cjs/rawsets/RawSet.js +64 -62
  242. package/dist/cjs/rawsets/RawSet.js.map +2 -2
  243. package/dist/cjs/rawsets/RawSetOperatorType.d.js +16 -0
  244. package/dist/cjs/rawsets/RawSetOperatorType.d.js.map +7 -0
  245. package/dist/cjs/rawsets/RawSetType.d.js +16 -0
  246. package/dist/cjs/rawsets/RawSetType.d.js.map +7 -0
  247. package/dist/cjs/rawsets/Render.d.js +16 -0
  248. package/dist/cjs/rawsets/Render.d.js.map +7 -0
  249. package/dist/cjs/routers/HashRouter.d.js +16 -0
  250. package/dist/cjs/routers/HashRouter.d.js.map +7 -0
  251. package/dist/cjs/routers/PathRouter.d.js +16 -0
  252. package/dist/cjs/routers/PathRouter.d.js.map +7 -0
  253. package/dist/cjs/routers/PathRouter.d.ts.map +1 -1
  254. package/dist/cjs/routers/PathRouter.js +0 -1
  255. package/dist/cjs/routers/PathRouter.js.map +2 -2
  256. package/dist/cjs/routers/Router.d.js +17 -0
  257. package/dist/cjs/routers/Router.d.js.map +7 -0
  258. package/dist/cjs/routers/Router.js +13 -9
  259. package/dist/cjs/routers/Router.js.map +1 -1
  260. package/dist/cjs/types/Types.d.js +16 -0
  261. package/dist/cjs/types/Types.d.js.map +7 -0
  262. package/dist/cjs/validators/MultipleValidator.js +3 -0
  263. package/dist/cjs/validators/MultipleValidator.js.map +1 -1
  264. package/dist/cjs/validators/NonPassValidator.d.js +16 -0
  265. package/dist/cjs/validators/NonPassValidator.d.js.map +7 -0
  266. package/dist/cjs/validators/NotRegExpTestValidator.js +3 -0
  267. package/dist/cjs/validators/NotRegExpTestValidator.js.map +1 -1
  268. package/dist/cjs/validators/RegExpTestValidator.js +3 -0
  269. package/dist/cjs/validators/RegExpTestValidator.js.map +1 -1
  270. package/dist/cjs/validators/Validator.d.js +16 -0
  271. package/dist/cjs/validators/Validator.d.js.map +7 -0
  272. package/dist/cjs/validators/Validator.js +7 -0
  273. package/dist/cjs/validators/Validator.js.map +1 -1
  274. package/dist/cjs/validators/ValidatorArray.d.js +16 -0
  275. package/dist/cjs/validators/ValidatorArray.d.js.map +7 -0
  276. package/dist/cjs/validators/ValidatorArray.js +4 -2
  277. package/dist/cjs/validators/ValidatorArray.js.map +1 -1
  278. package/dist/esm/DomRender.d.js +1 -0
  279. package/dist/esm/DomRender.d.js.map +7 -0
  280. package/dist/esm/DomRender.js +14 -8
  281. package/dist/esm/DomRender.js.map +1 -1
  282. package/dist/esm/DomRenderProxy.d.js +2 -0
  283. package/dist/esm/DomRenderProxy.d.js.map +7 -0
  284. package/dist/esm/DomRenderProxy.d.ts +0 -1
  285. package/dist/esm/DomRenderProxy.d.ts.map +1 -1
  286. package/dist/esm/DomRenderProxy.js +22 -19
  287. package/dist/esm/DomRenderProxy.js.map +2 -2
  288. package/dist/esm/components/ComponentBase.d.js +2 -0
  289. package/dist/esm/components/ComponentBase.d.js.map +7 -0
  290. package/dist/esm/components/ComponentBase.d.ts +0 -1
  291. package/dist/esm/components/ComponentBase.d.ts.map +1 -1
  292. package/dist/esm/components/ComponentBase.js +71 -56
  293. package/dist/esm/components/ComponentBase.js.map +2 -2
  294. package/dist/esm/components/ComponentRouterBase.d.js +1 -0
  295. package/dist/esm/components/ComponentRouterBase.d.js.map +7 -0
  296. package/dist/esm/components/ComponentRouterBase.js +7 -2
  297. package/dist/esm/components/ComponentRouterBase.js.map +1 -1
  298. package/dist/esm/components/ComponentSet.d.js +1 -0
  299. package/dist/esm/components/ComponentSet.d.js.map +7 -0
  300. package/dist/esm/components/ComponentSet.js +7 -1
  301. package/dist/esm/components/ComponentSet.js.map +1 -1
  302. package/dist/esm/components/a/A.d.js +5 -0
  303. package/dist/esm/components/a/A.d.js.map +7 -0
  304. package/dist/esm/components/a/A.d.ts +1 -1
  305. package/dist/esm/components/a/A.js +42 -36
  306. package/dist/esm/components/a/A.js.map +1 -1
  307. package/dist/esm/components/a/index.d.js +2 -0
  308. package/dist/esm/components/a/index.d.js.map +7 -0
  309. package/dist/esm/components/a/index.js +1 -1
  310. package/dist/esm/components/appender/Appender.d.js +5 -0
  311. package/dist/esm/components/appender/Appender.d.js.map +7 -0
  312. package/dist/esm/components/appender/Appender.d.ts +1 -1
  313. package/dist/esm/components/appender/Appender.js +10 -3
  314. package/dist/esm/components/appender/Appender.js.map +1 -1
  315. package/dist/esm/components/appender/index.d.js +2 -0
  316. package/dist/esm/components/appender/index.d.js.map +7 -0
  317. package/dist/esm/components/appender/index.js +1 -1
  318. package/dist/esm/components/checkbox/CheckBox.d.js +5 -0
  319. package/dist/esm/components/checkbox/CheckBox.d.js.map +7 -0
  320. package/dist/esm/components/checkbox/CheckBox.d.ts +3 -3
  321. package/dist/esm/components/checkbox/CheckBox.js +11 -7
  322. package/dist/esm/components/checkbox/CheckBox.js.map +1 -1
  323. package/dist/esm/components/checkbox/index.d.js +2 -0
  324. package/dist/esm/components/checkbox/index.d.js.map +7 -0
  325. package/dist/esm/components/checkbox/index.js +1 -1
  326. package/dist/esm/components/choose/Choose.d.js +5 -0
  327. package/dist/esm/components/choose/Choose.d.js.map +7 -0
  328. package/dist/esm/components/choose/Choose.d.ts +3 -3
  329. package/dist/esm/components/choose/Choose.js +15 -4
  330. package/dist/esm/components/choose/Choose.js.map +1 -1
  331. package/dist/esm/components/choose/index.d.js +2 -0
  332. package/dist/esm/components/choose/index.d.js.map +7 -0
  333. package/dist/esm/components/choose/index.js +1 -1
  334. package/dist/esm/components/details/Details.d.js +5 -0
  335. package/dist/esm/components/details/Details.d.js.map +7 -0
  336. package/dist/esm/components/details/Details.d.ts +4 -4
  337. package/dist/esm/components/details/Details.js +15 -3
  338. package/dist/esm/components/details/Details.js.map +1 -1
  339. package/dist/esm/components/details/index.d.js +2 -0
  340. package/dist/esm/components/details/index.d.js.map +7 -0
  341. package/dist/esm/components/details/index.js +1 -1
  342. package/dist/esm/components/forOf/ForOf.d.js +5 -0
  343. package/dist/esm/components/forOf/ForOf.d.js.map +7 -0
  344. package/dist/esm/components/forOf/ForOf.d.ts +1 -1
  345. package/dist/esm/components/forOf/ForOf.js +10 -3
  346. package/dist/esm/components/forOf/ForOf.js.map +1 -1
  347. package/dist/esm/components/forOf/index.d.js +2 -0
  348. package/dist/esm/components/forOf/index.d.js.map +7 -0
  349. package/dist/esm/components/forOf/index.js +1 -1
  350. package/dist/esm/components/if/If.d.js +5 -0
  351. package/dist/esm/components/if/If.d.js.map +7 -0
  352. package/dist/esm/components/if/If.d.ts +1 -1
  353. package/dist/esm/components/if/If.js +7 -4
  354. package/dist/esm/components/if/If.js.map +1 -1
  355. package/dist/esm/components/if/index.d.js +2 -0
  356. package/dist/esm/components/if/index.d.js.map +7 -0
  357. package/dist/esm/components/if/index.js +1 -1
  358. package/dist/esm/components/index.d.js +18 -0
  359. package/dist/esm/components/index.d.js.map +7 -0
  360. package/dist/esm/components/index.d.ts +37 -37
  361. package/dist/esm/components/index.js +31 -31
  362. package/dist/esm/components/input/Input.d.js +5 -0
  363. package/dist/esm/components/input/Input.d.js.map +7 -0
  364. package/dist/esm/components/input/Input.d.ts +1 -1
  365. package/dist/esm/components/input/Input.js +12 -3
  366. package/dist/esm/components/input/Input.js.map +1 -1
  367. package/dist/esm/components/input/index.d.js +2 -0
  368. package/dist/esm/components/input/index.d.js.map +7 -0
  369. package/dist/esm/components/input/index.js +1 -1
  370. package/dist/esm/components/promise/PromiseSwitch.d.js +5 -0
  371. package/dist/esm/components/promise/PromiseSwitch.d.js.map +7 -0
  372. package/dist/esm/components/promise/PromiseSwitch.d.ts +5 -5
  373. package/dist/esm/components/promise/PromiseSwitch.js +24 -4
  374. package/dist/esm/components/promise/PromiseSwitch.js.map +1 -1
  375. package/dist/esm/components/promise/index.d.js +2 -0
  376. package/dist/esm/components/promise/index.d.js.map +7 -0
  377. package/dist/esm/components/promise/index.js +1 -1
  378. package/dist/esm/components/radio/Radio.d.js +5 -0
  379. package/dist/esm/components/radio/Radio.d.js.map +7 -0
  380. package/dist/esm/components/radio/Radio.d.ts +3 -3
  381. package/dist/esm/components/radio/Radio.js +11 -7
  382. package/dist/esm/components/radio/Radio.js.map +1 -1
  383. package/dist/esm/components/radio/index.d.js +2 -0
  384. package/dist/esm/components/radio/index.d.js.map +7 -0
  385. package/dist/esm/components/radio/index.js +1 -1
  386. package/dist/esm/components/router/Route.d.js +5 -0
  387. package/dist/esm/components/router/Route.d.js.map +7 -0
  388. package/dist/esm/components/router/Route.d.ts +2 -2
  389. package/dist/esm/components/router/Route.js +21 -20
  390. package/dist/esm/components/router/Route.js.map +1 -1
  391. package/dist/esm/components/router/RouterOutlet.d.js +5 -0
  392. package/dist/esm/components/router/RouterOutlet.d.js.map +7 -0
  393. package/dist/esm/components/router/RouterOutlet.d.ts +1 -1
  394. package/dist/esm/components/router/RouterOutlet.js +9 -4
  395. package/dist/esm/components/router/RouterOutlet.js.map +1 -1
  396. package/dist/esm/components/router/index.d.js +3 -0
  397. package/dist/esm/components/router/index.d.js.map +7 -0
  398. package/dist/esm/components/router/index.js +2 -2
  399. package/dist/esm/components/select/Select.d.js +5 -0
  400. package/dist/esm/components/select/Select.d.js.map +7 -0
  401. package/dist/esm/components/select/Select.d.ts +10 -10
  402. package/dist/esm/components/select/Select.js +89 -74
  403. package/dist/esm/components/select/Select.js.map +2 -2
  404. package/dist/esm/components/select/index.d.js +2 -0
  405. package/dist/esm/components/select/index.d.js.map +7 -0
  406. package/dist/esm/components/select/index.js +1 -1
  407. package/dist/esm/components/this/This.d.js +5 -0
  408. package/dist/esm/components/this/This.d.js.map +7 -0
  409. package/dist/esm/components/this/This.d.ts +1 -1
  410. package/dist/esm/components/this/This.js +9 -4
  411. package/dist/esm/components/this/This.js.map +1 -1
  412. package/dist/esm/components/this/index.d.js +2 -0
  413. package/dist/esm/components/this/index.d.js.map +7 -0
  414. package/dist/esm/components/this/index.js +1 -1
  415. package/dist/esm/components/timer/Timer.d.js +5 -0
  416. package/dist/esm/components/timer/Timer.d.js.map +7 -0
  417. package/dist/esm/components/timer/Timer.d.ts +1 -1
  418. package/dist/esm/components/timer/Timer.js +11 -3
  419. package/dist/esm/components/timer/Timer.js.map +1 -1
  420. package/dist/esm/components/timer/index.d.js +2 -0
  421. package/dist/esm/components/timer/index.d.js.map +7 -0
  422. package/dist/esm/components/timer/index.js +1 -1
  423. package/dist/esm/configs/DomRenderConfig.d.js +1 -0
  424. package/dist/esm/configs/DomRenderConfig.d.js.map +7 -0
  425. package/dist/esm/configs/TargetAttr.d.js +1 -0
  426. package/dist/esm/configs/TargetAttr.d.js.map +7 -0
  427. package/dist/esm/configs/TargetElement.d.js +1 -0
  428. package/dist/esm/configs/TargetElement.d.js.map +7 -0
  429. package/dist/esm/configs/index.js +3 -3
  430. package/dist/esm/decorators/DomRenderNoProxy.d.js +2 -0
  431. package/dist/esm/decorators/DomRenderNoProxy.d.js.map +7 -0
  432. package/dist/esm/decorators/DomRenderNoProxy.d.ts +0 -1
  433. package/dist/esm/decorators/DomRenderNoProxy.d.ts.map +1 -1
  434. package/dist/esm/decorators/DomRenderNoProxy.js +0 -1
  435. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  436. package/dist/esm/decorators/index.js +1 -1
  437. package/dist/esm/events/EventManager.d.js +1 -0
  438. package/dist/esm/events/EventManager.d.js.map +7 -0
  439. package/dist/esm/events/EventManager.js +61 -58
  440. package/dist/esm/events/EventManager.js.map +1 -1
  441. package/dist/esm/events/index.js +1 -1
  442. package/dist/esm/index.d.ts +2 -15
  443. package/dist/esm/index.d.ts.map +1 -1
  444. package/dist/esm/index.js +2 -40
  445. package/dist/esm/index.js.map +2 -2
  446. package/dist/esm/iterators/Range.d.js +1 -0
  447. package/dist/esm/iterators/Range.d.js.map +7 -0
  448. package/dist/esm/iterators/Range.js +10 -1
  449. package/dist/esm/iterators/Range.js.map +1 -1
  450. package/dist/esm/iterators/index.js +1 -1
  451. package/dist/esm/lifecycle/OnBeforeReturnSet.d.js +1 -0
  452. package/dist/esm/lifecycle/OnBeforeReturnSet.d.js.map +7 -0
  453. package/dist/esm/lifecycle/OnChangeAttrRender.d.js +1 -0
  454. package/dist/esm/lifecycle/OnChangeAttrRender.d.js.map +7 -0
  455. package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js +1 -0
  456. package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js.map +7 -0
  457. package/dist/esm/lifecycle/OnCreateRender.d.js +1 -0
  458. package/dist/esm/lifecycle/OnCreateRender.d.js.map +7 -0
  459. package/dist/esm/lifecycle/OnCreateRenderData.d.js +1 -0
  460. package/dist/esm/lifecycle/OnCreateRenderData.d.js.map +7 -0
  461. package/dist/esm/lifecycle/OnCreatedThisChild.d.js +1 -0
  462. package/dist/esm/lifecycle/OnCreatedThisChild.d.js.map +7 -0
  463. package/dist/esm/lifecycle/OnDestroyRender.d.js +1 -0
  464. package/dist/esm/lifecycle/OnDestroyRender.d.js.map +7 -0
  465. package/dist/esm/lifecycle/OnInitRender.d.js +1 -0
  466. package/dist/esm/lifecycle/OnInitRender.d.js.map +7 -0
  467. package/dist/esm/lifecycle/OnProxyDomRender.d.js +1 -0
  468. package/dist/esm/lifecycle/OnProxyDomRender.d.js.map +7 -0
  469. package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js +1 -0
  470. package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js.map +7 -0
  471. package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js +1 -0
  472. package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js.map +7 -0
  473. package/dist/esm/lifecycle/dr-this/index.js +2 -2
  474. package/dist/esm/lifecycle/index.js +12 -12
  475. package/dist/esm/managers/index.js +1 -1
  476. package/dist/esm/messenger/DefaultMessenger.d.js +1 -0
  477. package/dist/esm/messenger/DefaultMessenger.d.js.map +7 -0
  478. package/dist/esm/messenger/DefaultMessenger.js +1 -1
  479. package/dist/esm/messenger/Messenger.d.js +1 -0
  480. package/dist/esm/messenger/Messenger.d.js.map +7 -0
  481. package/dist/esm/messenger/Messenger.js +10 -6
  482. package/dist/esm/messenger/Messenger.js.map +1 -1
  483. package/dist/esm/messenger/index.js +2 -2
  484. package/dist/esm/operators/Appender.d.js +1 -0
  485. package/dist/esm/operators/Appender.d.js.map +7 -0
  486. package/dist/esm/operators/Appender.js +6 -3
  487. package/dist/esm/operators/Appender.js.map +1 -1
  488. package/dist/esm/operators/Dr.d.js +1 -0
  489. package/dist/esm/operators/Dr.d.js.map +7 -0
  490. package/dist/esm/operators/Dr.js +3 -3
  491. package/dist/esm/operators/DrAppender.d.js +1 -0
  492. package/dist/esm/operators/DrAppender.d.js.map +7 -0
  493. package/dist/esm/operators/DrAppender.js +3 -3
  494. package/dist/esm/operators/DrFor.d.js +1 -0
  495. package/dist/esm/operators/DrFor.d.js.map +7 -0
  496. package/dist/esm/operators/DrFor.js +3 -3
  497. package/dist/esm/operators/DrForOf.d.js +1 -0
  498. package/dist/esm/operators/DrForOf.d.js.map +7 -0
  499. package/dist/esm/operators/DrForOf.js +4 -4
  500. package/dist/esm/operators/DrForOf.js.map +1 -1
  501. package/dist/esm/operators/DrForm.d.js +1 -0
  502. package/dist/esm/operators/DrForm.d.js.map +7 -0
  503. package/dist/esm/operators/DrForm.js +6 -6
  504. package/dist/esm/operators/DrIf.d.js +1 -0
  505. package/dist/esm/operators/DrIf.d.js.map +7 -0
  506. package/dist/esm/operators/DrIf.js +4 -4
  507. package/dist/esm/operators/DrIf.js.map +1 -1
  508. package/dist/esm/operators/DrInnerHTML.d.js +1 -0
  509. package/dist/esm/operators/DrInnerHTML.d.js.map +7 -0
  510. package/dist/esm/operators/DrInnerHTML.js +3 -3
  511. package/dist/esm/operators/DrInnerText.d.js +1 -0
  512. package/dist/esm/operators/DrInnerText.d.js.map +7 -0
  513. package/dist/esm/operators/DrInnerText.js +3 -3
  514. package/dist/esm/operators/DrPre.d.js +1 -0
  515. package/dist/esm/operators/DrPre.d.js.map +7 -0
  516. package/dist/esm/operators/DrPre.js +1 -1
  517. package/dist/esm/operators/DrRepeat.d.js +1 -0
  518. package/dist/esm/operators/DrRepeat.d.js.map +7 -0
  519. package/dist/esm/operators/DrRepeat.js +4 -4
  520. package/dist/esm/operators/DrStripElement.d.js +1 -0
  521. package/dist/esm/operators/DrStripElement.d.js.map +7 -0
  522. package/dist/esm/operators/DrStripElement.js +3 -3
  523. package/dist/esm/operators/DrTargetAttr.d.js +1 -0
  524. package/dist/esm/operators/DrTargetAttr.d.js.map +7 -0
  525. package/dist/esm/operators/DrTargetAttr.js +2 -2
  526. package/dist/esm/operators/DrTargetElement.d.js +1 -0
  527. package/dist/esm/operators/DrTargetElement.d.js.map +7 -0
  528. package/dist/esm/operators/DrTargetElement.js +2 -2
  529. package/dist/esm/operators/DrTargetElementIsElement.d.js +1 -0
  530. package/dist/esm/operators/DrTargetElementIsElement.d.js.map +7 -0
  531. package/dist/esm/operators/DrTargetElementIsElement.js +2 -2
  532. package/dist/esm/operators/DrThis.d.js +1 -0
  533. package/dist/esm/operators/DrThis.d.js.map +7 -0
  534. package/dist/esm/operators/DrThis.js +6 -6
  535. package/dist/esm/operators/DrThisProperty.d.js +1 -0
  536. package/dist/esm/operators/DrThisProperty.d.js.map +7 -0
  537. package/dist/esm/operators/DrThisProperty.js +3 -3
  538. package/dist/esm/operators/OperatorExecuter.d.js +1 -0
  539. package/dist/esm/operators/OperatorExecuter.d.js.map +7 -0
  540. package/dist/esm/operators/OperatorExecuter.js +1 -1
  541. package/dist/esm/operators/OperatorExecuter.js.map +1 -1
  542. package/dist/esm/operators/OperatorExecuterAttrRequire.d.js +1 -0
  543. package/dist/esm/operators/OperatorExecuterAttrRequire.d.js.map +7 -0
  544. package/dist/esm/operators/OperatorExecuterAttrRequire.js +1 -1
  545. package/dist/esm/operators/index.js +19 -19
  546. package/dist/esm/rawsets/AttrInitCallBack.d.js +1 -0
  547. package/dist/esm/rawsets/AttrInitCallBack.d.js.map +7 -0
  548. package/dist/esm/rawsets/Attrs.d.js +1 -0
  549. package/dist/esm/rawsets/Attrs.d.js.map +7 -0
  550. package/dist/esm/rawsets/CreatorMetaData.d.js +1 -0
  551. package/dist/esm/rawsets/CreatorMetaData.d.js.map +7 -0
  552. package/dist/esm/rawsets/DestroyOptionType.d.js +1 -0
  553. package/dist/esm/rawsets/DestroyOptionType.d.js.map +7 -0
  554. package/dist/esm/rawsets/ElementInitCallBack.d.js +1 -0
  555. package/dist/esm/rawsets/ElementInitCallBack.d.js.map +7 -0
  556. package/dist/esm/rawsets/RawSet.d.js +1 -0
  557. package/dist/esm/rawsets/RawSet.d.js.map +7 -0
  558. package/dist/esm/rawsets/RawSet.js +85 -82
  559. package/dist/esm/rawsets/RawSet.js.map +2 -2
  560. package/dist/esm/rawsets/RawSetOperatorType.d.js +1 -0
  561. package/dist/esm/rawsets/RawSetOperatorType.d.js.map +7 -0
  562. package/dist/esm/rawsets/RawSetType.d.js +1 -0
  563. package/dist/esm/rawsets/RawSetType.d.js.map +7 -0
  564. package/dist/esm/rawsets/Render.d.js +1 -0
  565. package/dist/esm/rawsets/Render.d.js.map +7 -0
  566. package/dist/esm/rawsets/index.js +9 -9
  567. package/dist/esm/routers/HashRouter.d.js +1 -0
  568. package/dist/esm/routers/HashRouter.d.js.map +7 -0
  569. package/dist/esm/routers/HashRouter.js +1 -1
  570. package/dist/esm/routers/PathRouter.d.js +1 -0
  571. package/dist/esm/routers/PathRouter.d.js.map +7 -0
  572. package/dist/esm/routers/PathRouter.d.ts.map +1 -1
  573. package/dist/esm/routers/PathRouter.js +1 -2
  574. package/dist/esm/routers/PathRouter.js.map +2 -2
  575. package/dist/esm/routers/Router.d.js +2 -0
  576. package/dist/esm/routers/Router.d.js.map +7 -0
  577. package/dist/esm/routers/Router.js +14 -9
  578. package/dist/esm/routers/Router.js.map +1 -1
  579. package/dist/esm/routers/index.js +3 -3
  580. package/dist/esm/types/Types.d.js +1 -0
  581. package/dist/esm/types/Types.d.js.map +7 -0
  582. package/dist/esm/types/index.js +1 -1
  583. package/dist/esm/validators/AllCheckedValidatorArray.js +1 -1
  584. package/dist/esm/validators/AllUnCheckedValidatorArray.js +1 -1
  585. package/dist/esm/validators/CheckedValidator.js +1 -1
  586. package/dist/esm/validators/CountEqualsCheckedValidatorArray.js +1 -1
  587. package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.js +1 -1
  588. package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.js +1 -1
  589. package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.js +1 -1
  590. package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +1 -1
  591. package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.js +1 -1
  592. package/dist/esm/validators/CountLessThanCheckedValidatorArray.js +1 -1
  593. package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.js +1 -1
  594. package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.js +1 -1
  595. package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.js +1 -1
  596. package/dist/esm/validators/CountUnCheckedValidatorArray.js +1 -1
  597. package/dist/esm/validators/EmptyValidator.js +1 -1
  598. package/dist/esm/validators/ExcludeCheckedValidatorArray.js +1 -1
  599. package/dist/esm/validators/FormValidator.js +1 -1
  600. package/dist/esm/validators/IncludeCheckedValidatorArray.js +1 -1
  601. package/dist/esm/validators/MultipleValidator.js +5 -1
  602. package/dist/esm/validators/MultipleValidator.js.map +1 -1
  603. package/dist/esm/validators/NonPassValidator.d.js +1 -0
  604. package/dist/esm/validators/NonPassValidator.d.js.map +7 -0
  605. package/dist/esm/validators/NonPassValidator.js +1 -1
  606. package/dist/esm/validators/NotEmptyValidator.js +1 -1
  607. package/dist/esm/validators/NotRegExpTestValidator.js +6 -2
  608. package/dist/esm/validators/NotRegExpTestValidator.js.map +1 -1
  609. package/dist/esm/validators/PassValidator.js +1 -1
  610. package/dist/esm/validators/RegExpTestValidator.js +6 -2
  611. package/dist/esm/validators/RegExpTestValidator.js.map +1 -1
  612. package/dist/esm/validators/RequiredValidator.js +1 -1
  613. package/dist/esm/validators/UnCheckedValidator.js +1 -1
  614. package/dist/esm/validators/ValidMultipleValidator.js +1 -1
  615. package/dist/esm/validators/ValidValidator.js +1 -1
  616. package/dist/esm/validators/ValidValidatorArray.js +1 -1
  617. package/dist/esm/validators/Validator.d.js +1 -0
  618. package/dist/esm/validators/Validator.d.js.map +7 -0
  619. package/dist/esm/validators/Validator.js +8 -0
  620. package/dist/esm/validators/Validator.js.map +1 -1
  621. package/dist/esm/validators/ValidatorArray.d.js +1 -0
  622. package/dist/esm/validators/ValidatorArray.d.js.map +7 -0
  623. package/dist/esm/validators/ValidatorArray.js +7 -4
  624. package/dist/esm/validators/ValidatorArray.js.map +1 -1
  625. package/dist/esm/validators/ValueEqualsValidator.js +1 -1
  626. package/dist/esm/validators/ValueNotEqualsValidator.js +1 -1
  627. package/dist/esm/validators/index.js +31 -31
  628. package/dist/esm-bundle/dooboostore-dom-render.esm.js +3 -6757
  629. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  630. package/dist/umd-bundle/dooboostore-dom-render.umd.js +2 -6761
  631. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  632. package/package.json +10 -9
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/DomRenderProxy.ts", "../../src/rawsets/RawSet.ts", "../../src/events/EventManager.ts", "../../src/iterators/Range.ts", "../../src/operators/OperatorExecuter.ts", "../../src/operators/DrPre.ts", "../../src/operators/OperatorExecuterAttrRequire.ts", "../../src/operators/Dr.ts", "../../src/operators/DrIf.ts", "../../src/types/Types.ts", "../../src/components/ComponentSet.ts", "../../src/lifecycle/dr-this/OnDrThisUnBind.ts", "../../src/lifecycle/dr-this/OnDrThisBind.ts", "../../src/operators/DrThis.ts", "../../src/operators/DrForm.ts", "../../src/validators/Validator.ts", "../../src/validators/NonPassValidator.ts", "../../src/validators/ValidatorArray.ts", "../../src/operators/DrInnerText.ts", "../../src/operators/DrInnerHTML.ts", "../../src/operators/DrFor.ts", "../../src/operators/DrForOf.ts", "../../src/operators/DrAppender.ts", "../../src/operators/DrRepeat.ts", "../../src/operators/DrTargetElement.ts", "../../src/operators/DrTargetAttr.ts", "../../src/operators/DrStripElement.ts", "../../src/rawsets/DestroyOptionType.ts", "../../src/rawsets/RawSetType.ts", "../../src/operators/DrThisProperty.ts", "../../src/rawsets/RawSetOperatorType.ts", "../../src/lifecycle/OnCreateRenderData.ts", "../../src/lifecycle/OnCreateRender.ts", "../../src/lifecycle/OnChangeAttrRender.ts", "../../src/lifecycle/OnInitRender.ts", "../../src/lifecycle/OnCreatedThisChild.ts", "../../src/lifecycle/OnDestroyRender.ts", "../../src/operators/DrTargetElementIsElement.ts", "../../src/decorators/DomRenderNoProxy.ts", "../../src/lifecycle/OnBeforeReturnSet.ts", "../../src/lifecycle/OnChildRenderedByProperty.ts", "../../src/lifecycle/OnProxyDomRender.ts", "../../src/routers/Router.ts", "../../src/routers/PathRouter.ts", "../../src/routers/HashRouter.ts", "../../src/messenger/Messenger.ts", "../../src/messenger/DefaultMessenger.ts", "../../src/components/ComponentBase.ts", "../../src/components/ComponentRouterBase.ts", "../../src/components/a/A.ts", "../../src/components/appender/Appender.ts", "../../src/components/checkbox/CheckBox.ts", "../../src/components/choose/Choose.ts", "../../src/components/details/Details.ts", "../../src/components/forOf/ForOf.ts", "../../src/components/if/If.ts", "../../src/components/input/Input.ts", "../../src/components/promise/PromiseSwitch.ts", "../../src/components/radio/Radio.ts", "../../src/components/router/Route.ts", "../../src/components/router/RouterOutlet.ts", "../../src/components/select/Select.ts", "../../src/components/this/This.ts", "../../src/components/timer/Timer.ts", "../../src/components/index.ts", "../../src/DomRender.ts", "../../src/lifecycle/OnCreateRendered.ts", "../../src/operators/Appender.ts", "../../src/validators/AllCheckedValidatorArray.ts", "../../src/validators/AllUnCheckedValidatorArray.ts", "../../src/validators/CheckedValidator.ts", "../../src/validators/CountEqualsCheckedValidatorArray.ts", "../../src/validators/CountEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanUnCheckedValidatorArray.ts", "../../src/validators/CountLessThanCheckedValidatorArray.ts", "../../src/validators/CountLessThanEqualsCheckedValidatorArray.ts", "../../src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountLessThanUnCheckedValidatorArray.ts", "../../src/validators/CountUnCheckedValidatorArray.ts", "../../src/validators/EmptyValidator.ts", "../../src/validators/ExcludeCheckedValidatorArray.ts", "../../src/validators/FormValidator.ts", "../../src/validators/IncludeCheckedValidatorArray.ts", "../../src/validators/MultipleValidator.ts", "../../src/validators/NotEmptyValidator.ts", "../../src/validators/NotRegExpTestValidator.ts", "../../src/validators/PassValidator.ts", "../../src/validators/RegExpTestValidator.ts", "../../src/validators/RequiredValidator.ts", "../../src/validators/UnCheckedValidator.ts", "../../src/validators/ValidMultipleValidator.ts", "../../src/validators/ValidValidator.ts", "../../src/validators/ValidValidatorArray.ts"],
4
- "sourcesContent": ["import 'reflect-metadata';\nimport { RawSet } from './rawsets/RawSet';\nimport { EventManager } from './events/EventManager';\nimport { DomRenderConfig } from './configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { DomRenderFinalProxy, Shield } from './types/Types';\nimport { RawSetType } from './rawsets/RawSetType';\nimport { DrThisProperty } from './operators/DrThisProperty';\nimport { RawSetOperatorType } from './rawsets/RawSetOperatorType';\nimport { ComponentSet } from './components/ComponentSet';\nimport { DomRenderNoProxyKey, isDomRenderNoProxy } from './decorators/DomRenderNoProxy';\nimport { isOnCreateRender } from './lifecycle/OnCreateRender';\nimport { isOnInitRender } from './lifecycle/OnInitRender';\nimport { isOnCreateRenderData } from './lifecycle/OnCreateRenderData';\nimport { isOnChangeAttrRender } from './lifecycle/OnChangeAttrRender';\nimport { DocumentUtils } from '@dooboostore/core-web/document/DocumentUtils';\nimport { isDefined } from '@dooboostore/core/types';\nimport { isOnBeforeReturnSet } from './lifecycle/OnBeforeReturnSet';\nimport { isOnChildRenderedByProperty } from './lifecycle/OnChildRenderedByProperty';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport {ValidUtils} from '@dooboostore/core/valid/ValidUtils'\nimport { isOnProxyDomRender } from './lifecycle/OnProxyDomRender';\n\nconst excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];\nexport const isWrapProxyDomRenderProxy = <T>(obj: T): boolean => {\n return obj && typeof obj === 'object' && ('_DomRender_isProxy' in obj);\n};\nexport const getDomRenderOriginObject = <T>(obj: T):T => {\n if (isWrapProxyDomRenderProxy(obj)) {\n return (obj as any)._domRender_origin;\n }\n return obj;\n}\nexport const getDomRenderConfig = (obj: any): DomRenderConfig | undefined => {\n if (isWrapProxyDomRenderProxy(obj)) {\n return obj._domRender_config;\n }\n return undefined;\n}\n//@ts-ignore\nexport const getDomRenderProxy = <T>(obj: T): DomRenderProxy<T> | undefined => {\n if (isWrapProxyDomRenderProxy(obj)) {\n //@ts-ignore\n return (obj as any)._domRender_proxy as DomRenderProxy<T>;\n }\n return undefined;\n}\nexport class DomRenderProxy<T extends object> implements ProxyHandler<T> {\n public _domRender_ref = new Map<object, Set<string>>();\n public _rawSets = new Map<string, Set<RawSet>>();\n public _domRender_proxy?: T;\n // public _firstTarget: Node;\n public _targets = new Set<Node>();\n\n constructor(public _domRender_origin: T, target: Node | null | undefined, public _domRender_config: DomRenderConfig) {\n if (target) {\n this._targets.add(target);\n // this._firstTarget = target;\n }\n\n // setInterval(() => {\n // this._rawSets.forEach(it => {\n // Array.from(it).forEach(it => {\n // console.log(it, it.isConnected)\n // })\n // });\n // }, 1000)\n }\n\n public static unFinal<T = any>(obj: T): T {\n return DomRenderFinalProxy.unFinal(obj);\n }\n\n public static final<T = any>(obj: T): T {\n return DomRenderFinalProxy.final(obj);\n }\n\n public static isFinal<T = any>(obj: T) {\n return DomRenderFinalProxy.isFinal(obj);\n }\n\n public run(objProxy: T) {\n this._domRender_proxy = objProxy;\n if (isOnProxyDomRender(objProxy)) {\n objProxy.onProxyDomRender(this._domRender_config);\n }\n const obj = getDomRenderOriginObject<any>(objProxy);\n if (obj) {\n Object.keys(obj).forEach(it => {\n // Reflect \uBA54\uD0C0\uB370\uC774\uD130\uC5D0\uC11C domRender:NoProxy \uC5EC\uBD80 \uD655\uC778\n try {\n const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, it) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n if (isNoProxy) {\n return obj;\n }\n } catch (e) {\n }\n const target = obj[it];\n if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Shield)) {\n const isExcluded = this._domRender_config.proxyExcludeTyps?.some(it => target instanceof it) ?? false;\n // const filter = this._domRender_config.proxyExcludeTyps?.filter(it => target instanceof it) ?? [];\n if (!isExcluded) {\n const proxyAfter = this.proxy(objProxy, target, it);\n obj[it] = proxyAfter;\n }\n }\n });\n }\n // console.log('target', this._targets);\n this._targets.forEach(target => {\n this.initRender(target);\n });\n }\n\n public initRender(target: Node, rawSet?: RawSet) {\n\n // if (target instanceof Element) {\n // target.setAttribute('dr-this', 'this');\n // const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);\n // this.render(rawSets)\n // return;\n // }\n //\n if (target instanceof Element) {\n // \uC911\uC694: \uB098\uB97C\uD1B5\uD574 \uC774\uC5B4\uC9C4\uACF3\uC758 \uC704\uCE58\uB97C \uB0A8\uACA8\uC57C\uB41C\uB2E4 \uC548\uADF8\uB7EC\uBA74 TargetElement\uB294 \uC54C\uC218 \uC788\uB294 \uBC29\uBC95\uC774 \uC5C6\uB2E4. \uC5EC\uAE30\uC11C \uD754\uC801\uC744 \uB0A8\uACA8\uC918\uC57C \uD55C\uB2E4.\n // const targetElementNames = (this.config.targetElements?.map(it => it.name.toLowerCase().replaceAll('.', '\\\\.')) ?? []).join(',');\n // Array.from(target.querySelectorAll(targetElementNames)).forEach(it => it.setAttribute(EventManager.parentVariablePathAttrName, '@this@'));\n target.innerHTML = target.innerHTML.replace(/@this@/g, 'this');\n }\n // TODO: \uD55C\uACF3\uC5D0\uC11C \uCC98\uB9AC \uD544\uC694\uD560\uB4EF.. \uB108\uBB34 \uC0B0\uBC1C\uC801\uC73C\uB85C \uC788\uC74C.\n const onCreate = (target as any).getAttribute?.(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n let createParam: any[] = [];\n if (onCreate) {\n createParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);\n if (!Array.isArray(createParam)) {\n createParam = [createParam];\n }\n }\n\n if (isOnCreateRenderData(this._domRender_proxy)) {\n this._domRender_proxy?.onCreateRenderData({ rootParent: this._domRender_proxy });\n }\n\n if (isOnCreateRender(this._domRender_proxy)) {\n this._domRender_proxy.onCreateRender(...createParam);\n }\n\n // const innerHTML = (target as any).innerHTML ?? '';\n this._targets.add(target);\n const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this._domRender_config);\n // console.log('initRender -------rawSet', rawSets)\n // \uC911\uC694 \uCD08\uAE30\uC5D0 \uD55C\uBC88 \uD295\uACA8\uC918\uC57C\uD568.\n this._domRender_config.eventManager.applyEvent(this._domRender_proxy, this._domRender_config.eventManager.findAttrElements(target as Element, this._domRender_config), this._domRender_config);\n rawSets.forEach(it => {\n const variables = it.getUsingTriggerVariables(this._domRender_config);\n if (variables.size <= 0) {\n this.addRawSet('', it);\n } else {\n variables.forEach(sit => {\n this.addRawSet(sit, it);\n });\n }\n });\n this.render(this.getRawSets()).then(it => {\n // const render = {target} as Render;\n // const creatorMetaData = {\n // creator: this._domRender_proxy,\n // rootCreator: this._domRender_proxy,\n // innerHTML\n // } as CreatorMetaData;\n const onInit = (target as any).getAttribute?.(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);\n let initParam: any;\n if (onCreate) {\n initParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);\n // if (!Array.isArray(initParam)) {\n // initParam = [initParam];\n // }\n }\n if (isOnInitRender(this._domRender_proxy)) {\n this._domRender_proxy.onInitRender(initParam, rawSet ?? {dataSet: {config: this._domRender_config}} as any);\n }\n });\n\n }\n\n public getRawSets() {\n const set = new Set<RawSet>();\n this._rawSets.forEach((v, k) => {\n v.forEach(it => set.add(it));\n });\n return Array.from(set);\n }\n\n // \uC911\uC694 important\n public async render(raws?: RawSet[] | string, fullPathStr?: string) {\n if (typeof raws === 'string') {\n const iter = this._rawSets.get(raws);\n if (iter) {\n raws = Array.from(iter);\n } else {\n raws = undefined;\n }\n }\n const removeRawSets: RawSet[] = [];\n const rawSets = raws ?? this.getRawSets();\n\n // console.log('----', rawSets);\n for (const it of rawSets as RawSet[]) {\n it.getUsingTriggerVariables(this._domRender_config).forEach(path => {\n // console.log('getUsingTriggerVariables->', path);\n this.addRawSet(path, it);\n });\n if (it.isConnected) {\n // \uC911\uC694 render\uB420\uB54C targetAttribute \uCCB4\uD06C \uD574\uC57C\uD568.\n const targetAttrMap = (it.point.node as Element)?.getAttribute?.(EventManager.normalAttrMapAttrName);\n // console.log('sssssssssSSS?',it, targetAttrMap)\n // console.log('----2', it, fullPathStr, targetAttrMap, (it.fragment as any).render, it.isConnected, this.getRawSets());\n if (it.detect?.action) {\n it.detect.action();\n // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {\n } else if (it.type === RawSetType.TARGET_ELEMENT && it.dataSet?.render?.currentThis && fullPathStr && targetAttrMap) {\n new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n // it?.data.onChangeAttrRender(k, null, v);\n const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);\n if (isUsing) {\n const targetAttrObject = RawSet.getAttributeObject((it.point.node as Element), { script: it.dataSet?.render?.renderScript ?? '', obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render }) });\n it.dataSet.render??={};\n it.dataSet.render.attribute = targetAttrObject;\n // const render = it.dataSet?.render;\n // console.log('render-->!!!!!', it.dataSet.render);\n // const script = `${render.renderScript} return ${v} `;\n // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));\n if (isOnChangeAttrRender(it.dataSet?.render?.currentThis)) {\n it.dataSet?.render?.currentThis?.onChangeAttrRender?.(k, targetAttrObject[k], { rawSet: it });\n }\n }\n // console.log('---?', v, fullPathStr, isUsing);\n });\n // ------------------->\n } else {\n const rawSets = await it.render(this._domRender_proxy, this._domRender_config);\n // \uADF8\uC678 \uC790\uC2DD\uB4E4 render\n if (rawSets && rawSets.length > 0) {\n await this.render(rawSets);\n }\n }\n } else {\n removeRawSets.push(it);\n }\n }\n\n if (removeRawSets.length > 0) {\n this.removeRawSet(...removeRawSets);\n }\n return this.getRawSets();\n }\n\n // domrender_ref\uB85C \uCC3E\uB294\uAC78\uB85C \uBC14\uAFC8\n // public findRootDomRenderProxy(): DomRenderProxy<any> {\n // let current:DomRenderProxy<any> = this;\n // while (current.parentProxy) {\n // current = current.parentProxy;\n // }\n // return current;\n // }\n\n public root(pathInfos: {path: string, obj: any}[][], value?: any, lastDoneExecute = true): {path: string, obj:any}[][] {\n // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);\n const fullPaths: {path: string, obj:any}[][] = [];\n if (this._domRender_ref.size > 0) {\n this._domRender_ref.forEach((it, key) => {\n if ('_DomRender_isProxy' in key) {\n it.forEach(sit => {\n try {\n\n const concat = pathInfos.concat([[{path: sit, obj: key}]]);\n const items:{path: string, obj:any}[][] = (key as any)._DomRender_proxy?.root(concat, value, lastDoneExecute);\n\n fullPaths.push(items.flat());\n // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});\n // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});\n } catch (e) {\n // \uC624\uBE0C\uC81D\uD2B8\uB4E4 \uC5C6\uC5B4\uC84C\uC744\uC218\uB3C4\uC788\uB2E4 Destroy\uC2DC\uC810\uC5D0\uC11C \uC624\uB958\uB098\uB294\uACBD\uC6B0\uAC00 \uC788\uB2E4. \uB530\uB77C\uC11C \uCC38\uC870 \uD558\uB294\uBD80\uBD84 \uC5C6\uC5B4\uC838\uC57C\uD55C\uB2E4.\n // console.error(e)\n // it.delete(sit);\n }\n });\n }\n });\n } else {\n // const firstPathStr = paths.slice(1).reverse().join('.');\n const strings = pathInfos.reverse().map(it=>it.map(it=>it.path).join(','));\n // array\uAC19\uC740\uACBD\uC6B0\uB3C4 \uD0A4\uAC12\uC73C\uB85C \uC811\uADFC\uD558\uAE30\uB54C\uBB38\uC5D0 \uD2B9\uC815 \uC778\uB371\uC2A4\uB97C \uCC3E\uC544\uC11C \uADF8\uBD80\uBD84\uB9CC \uBC14\uAFD4\uC904\uC218 \uC788\uB2E4.\n const fullPathStr = strings.map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('').slice(1);\n // console.log('-------fullPathStr', fullPathStr, lastDoneExecute);\n if (lastDoneExecute) {\n // const firstData = ScriptUtils.evalReturn('this.' + firstPathStr, this._domRender_proxy);\n // console.log('-------', firstPathStr, firstData);\n // if (firstData instanceof Dictionary) {\n // }\n const iterable = this._rawSets.get(fullPathStr);\n // array check\n const front = strings.slice(0, strings.length - 1).map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('');\n const lastPropertyName = strings[strings.length - 1];\n const path = 'this' + front;\n const data = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);\n // console.log('root-->', this._rawSets, path, data );\n // console.log('--!!!!', fullPathStr, iterable, data, front, last);\n // \uC65C\uC5EC\uAE30\uC11C promise\uB97C \uD588\uC744\uAE4C\uB97C \uC0DD\uAC01\uD574\uBCF4\uBA74......\uD6D4.. \uBCC0\uC218\uBCC0\uACBD\uACFC \uD654\uBA74 \uBFCC\uB824\uC8FC\uB294\uAC78 \uB3D9\uAE30\uB85C\uD558\uBA74 \uC131\uB2A5\uC774 \uC548\uB098\uC624\uACE0 \uBE44\uD604\uC2E4\uC801\uC774\uB2E4. \uADF8\uB798\uC11C promise\n new Promise<RawSet[]>(async resolve => {\n let rData: RawSet[] = [];\n const firstPathStr = front.slice(1);\n\n // check dictionary\n // console.log('-promise-------', firstPathStr, this)\n const firstTargets = this._rawSets.get(firstPathStr);\n const firstTargetDictionary: RawSet[] = [];\n firstTargets?.forEach(it => {\n // console.log('----forEach---', it);\n const type = (it.point.start as Element).getAttribute?.('type');\n if (type === RawSetOperatorType.DR_THIS_PROPERTY) {\n firstTargetDictionary.push(it);\n }\n });\n if (firstTargetDictionary.length > 0) {\n // console.log('ddddddddddd', firstTargetDictionary);\n const rawSets: RawSet[] = [];\n let skip = false;\n firstTargetDictionary.forEach(it => {\n const startElement = it.point.start as Element;\n const keys = startElement.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)?.split(',') ?? [];\n if (value === undefined) {\n const rawSet = it.getHasRawSet(lastPropertyName);\n rawSet?.remove();\n startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter(it => it !== lastPropertyName).join(','));\n }\n if (!keys.includes(lastPropertyName)) {\n const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this._domRender_config);\n if (raws) {\n rawSets.push(...raws);\n }\n } else {\n skip = true;\n }\n });\n if (skip === false || rawSets.length > 0) {\n rData = await this.render(rawSets);\n }\n }\n\n if (lastPropertyName === 'length' && Array.isArray(data)) {\n const aIterable = this._rawSets.get(firstPathStr);\n if (aIterable) {\n rData = await this.render(Array.from(aIterable));\n }\n } else if (iterable) {\n // console.log('------------',iterable, fullPaths)\n rData = await this.render(Array.from(iterable), fullPathStr);\n }\n\n\n\n // console.log('-----------', this, lastPropertyName );\n // this._targets.forEach(it => {\n // // return;\n // if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {\n // const targets = eventManager.findAttrElements((it as DocumentFragment | Element), this.config);\n // eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.config);\n // }\n // });\n\n\n this._targets.forEach(it => {\n // return;\n if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {\n const targets = this._domRender_config.eventManager.findAttrElements((it as DocumentFragment | Element), this._domRender_config);\n this._domRender_config.eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this._domRender_config);\n }\n });\n\n //\uB79C\uB354\uB300\uC0C1\uB41C\uAC8C\uC788\uC73C\uBA74\n if(rData?.length > 0 && isOnChildRenderedByProperty(data)) {\n const propertyValue = ScriptUtils.evaluateReturn(`this.${lastPropertyName}`, data)\n data.onChildRenderedByProperty(lastPropertyName, propertyValue);\n // data\n }\n resolve(rData);\n }).then(it => {\n // console.log('DonrenderProxy root RenderDone')\n });\n }\n fullPaths.push([{path:fullPathStr, obj: this._domRender_proxy}]);\n }\n\n // console.log('dddddd', fullPaths.flatMap(it=>it).map(it=>it.path))\n return fullPaths;\n }\n\n public set(target: T, p: string | symbol, value: any, receiver: T): boolean {\n // console.log('set------->', target, p, value, receiver, Date.now())\n // console.log('set------->', target, p, value, receiver, Date.now())\n // try {\n // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, target, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n // if (isNoProxy) {\n // return obj;\n // }\n // }catch (e) {}\n\n // console.log('set-->', p, value, target, receiver, Reflect.getMetadata(DomRenderNoProxyKey, target, p) );\n\n if (\n (typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) ||\n Reflect.getMetadata(DomRenderNoProxyKey, target, p)\n ) {\n (target as any)[p] = value;\n return true;\n }\n // const old = (target as any)[p];\n // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);\n // if (typeof p === 'string' && '__render' === p) {\n // (target as any)[p] = value;\n // return true;\n // }\n // console.log('set--?', p, target, value);\n\n if (typeof p === 'string') {\n value = this.proxy(receiver, value, p);\n }\n\n // console.log('set typeChecked', (target as any)[p] instanceof ComponentSet, value instanceof ComponentSet);\n // if ((target as any)[p] instanceof ComponentSet) {\n // (target as any)[p]?.obj?.onDrThisUnBind?.();\n // }\n // is ComponentSet\n if ((value instanceof ComponentSet) && ((target as any)[p] instanceof ComponentSet)) {\n value.config.beforeComponentSet = (target as any)[p];\n }\n (target as any)[p] = value;\n let fullPathInfo: {path: string, obj:any}[][] = [];\n if (typeof p === 'string') {\n fullPathInfo = this.root([[{path:p, obj: this._domRender_proxy}]], value)\n }\n\n // console.log('setRooot', fullPathInfo);\n\n\n //normal attribute \uB610\uD55C \uB9C1\uD06C\uB791 \uAC19\uC740 \uC99D\uC138\uB77C\uC11C \uC774\uB807\uAC8C \uD574\uC918\uC57C\uD55C\uB2E4!!\n // const rootDomRenderProxy = this.findRootDomRenderProxy();\n // console.log('set!!!!!!!', fullPathInfo, rootDomRenderProxy)\n // console.log('--------rootDom',fullPathInfo, rootDomRenderProxy, rootDomRenderProxy._domRender_proxy)\n const rootElement = this._domRender_config.rootElement ?? this._domRender_config.window.document;\n DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach(elementInfo => {\n // @ts-ignore\n // const optionalPath = ObjectUtils.Path.toOptionalChainPath(elementInfo.value);\n const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(it=> {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(it.valueScript);\n const value1 = ScriptUtils.evaluateReturn(optionalPath, it.pathInfo.obj);\n // console.log('proxy set!Attribut======', it.key, value1)\n if (value1 === null) {\n elementInfo.element.removeAttribute(it.key);\n elementInfo.element[it.key] = null;\n } else {\n elementInfo.element.setAttribute(it.key, value1);\n elementInfo.element[it.key] = value1\n }\n })\n })\n\n //\uC5EC\uAE30\uC11C \uB9C1\uD06C \uAC19\uC740\uAC70 \uD574\uC918\uC57C\uD568 *-link\uB85C \uBCC0\uC218\uAC12\uC774 \uBCC0\uACBD\uB418\uBA74 \uADF8\uAC78 \uCC38\uACE0\uD558\uACE0\uC788\uB294 \uB2E4\uB978\uAC83\uB4E4\uC5D0\uB3C4 \uD574\uC918\uC57C\uD55C\uB2E4.\n DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(elementInfo => {\n // @ts-ignore\n const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));\n\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(info=> {\n const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);\n const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);\n if (applyAttributeName) {\n if (value1 === null) {\n elementInfo.element.removeAttribute(applyAttributeName.property);\n } else {\n // console.log('ppppppppppppppppppppppp', applyAttributeName, elementInfo)\n elementInfo.element.setAttribute(applyAttributeName.property, value1);\n }\n }\n })\n\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(info=> {\n const linkInfo = EventManager.linkAttrs.find(it=>it.name === info.key)\n if (linkInfo) {\n elementInfo.element[linkInfo.property] = value\n }\n })\n })\n if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnSets ?? []).concat(excludeGetSetPropertys).includes(p)) {\n if(isOnBeforeReturnSet(receiver)){\n receiver.onBeforeReturnSet?.(p, value, fullPathInfo.map(it => it.map(it=>it.path).join()));\n }\n }\n return true;\n }\n\n get(target: T, p: string | symbol, receiver: any): any {\n // console.log('get-->', target, p, receiver);\n if (p === '_DomRender_origin' || p === '_domRender_origin') {\n return this._domRender_origin;\n } else if (p === '_DomRender_ref' || p === '_domRender_ref') {\n return this._domRender_ref;\n } else if (p === '_DomRender_config' || p ==='_domRender_config') {\n return this._domRender_config;\n } else if (p === '_DomRender_proxy' || p ==='_domRender_proxy') {\n return this;\n } else {\n // Date\uB77C\uB358\uC9C0 \uC774\uB7F0\uB188\uB4E4\uC740-_-\uD504\uB85D\uC2DC\uAC00 \uC774\uC0C1\uD558\uAC8C \uB3D9\uC791\uD574\uC11C\n // console.log('--->', p, target, target.bind, 'bind' in target)\n // if ((p in target) && ('bind' in target)) {\n // try{\n // return (target as any)[p].bind(target);\n // }catch (e) {\n // console.error(e)\n // }\n // } else {\n // return (target as any)[p]\n // }\n // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]\n // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])\n // return (target as any)[p]\n let it = (target as any)[p];\n if (it && typeof it === 'object' && ('_DomRender_isProxy' in it) && Object.prototype.toString.call(it._DomRender_origin) === '[object Date]') {\n it = it._DomRender_origin;\n }\n\n if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnGets ?? []).concat(excludeGetSetPropertys).includes(p)) {\n (receiver as any)?.onBeforeReturnGet?.(p, it, this.root([[{path:p, obj: this._domRender_proxy}]], it, false));\n }\n return it;\n }\n }\n\n deleteProperty(target: T, p: string | symbol): boolean {\n delete (target as any)[p];\n if (typeof p === 'string') {\n this.root([[{path:p, obj: this._domRender_proxy}]]);\n }\n return true;\n }\n\n has(target: T, p: string | symbol): boolean {\n return p === '_DomRender_isProxy' || p in target;\n }\n\n proxy(parentProxy: T, obj: T | any, p: string) {\n\n\n try {\n // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n const isObject = typeof obj === 'object';\n const isNoProxy = isObject && isDomRenderNoProxy(obj,p)\n const isExclude = (this._domRender_config.proxyExcludeTyps?.some(it => obj instanceof it)) ?? false;\n const isFinal = isObject && DomRenderProxy.isFinal(obj);\n const isFrozen = Object.isFrozen(obj);\n const isShield = obj instanceof Shield;\n if (isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {\n return obj;\n }\n } catch (e) {\n }\n\n\n/*\n const proxyTarget = (this._domRender_config.proxyExcludeTyps?.filter(it => obj instanceof it) ?? []).length <= 0;\n if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {\n const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);\n domRender.addRef(parentProxy, p);\n const proxy = new Proxy(obj, domRender);\n domRender.run(proxy);\n return proxy;\n }\n if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {\n const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;\n d.addRef(this._domRender_proxy!, p);\n return obj;\n } else {\n return obj;\n }\n */\n if ( !isWrapProxyDomRenderProxy(obj)) {\n const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);\n domRender.addRef(parentProxy, p);\n const proxy = new Proxy(obj, domRender);\n domRender.run(proxy);\n return proxy;\n }\n if (isWrapProxyDomRenderProxy(obj)) {\n const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;\n d.addRef(this._domRender_proxy!, p);\n return obj;\n } else {\n return obj;\n }\n }\n\n public addRef(parent: object, path: string) {\n if (!this._domRender_ref.get(parent)) {\n this._domRender_ref.set(parent, new Set<string>());\n }\n this._domRender_ref.get(parent)?.add(path);\n }\n\n public addRawSetAndRender(path: string, rawSet: RawSet) {\n this.addRawSet(path, rawSet);\n this.render([rawSet]);\n }\n\n public addRawSet(path: string, rawSet: RawSet) {\n // console.log('addRawSet--> path:', path, 'rawSet:', rawSet)\n if (!this._rawSets.get(path)) {\n this._rawSets.set(path, new Set<RawSet>());\n }\n this._rawSets.get(path)?.add(rawSet);\n }\n\n // public removeRawSet(...raws: RawSet[]) {\n // this._rawSets.forEach(it => {\n // raws.forEach(sit => it.delete(sit));\n // })\n // this.garbageRawSet();\n // }\n\n public removeRawSet(...raws: RawSet[]) {\n this._rawSets.forEach(it => {\n it.forEach(sit => {\n if (!sit.isConnected) {\n it.delete(sit);\n } else if (raws.includes(sit)) {\n it.delete(sit);\n }\n });\n });\n this.targetGarbageRawSet();\n }\n\n private targetGarbageRawSet() {\n this._targets.forEach(it => {\n if (!it.isConnected) {\n this._targets.delete(it);\n }\n });\n }\n\n private garbageRawSet() {\n this._targets.forEach(it => {\n if (!it.isConnected) {\n this._targets.delete(it);\n }\n });\n\n this._rawSets.forEach(it => {\n it.forEach(sit => {\n if (!sit.isConnected) {\n it.delete(sit);\n }\n });\n });\n }\n}\n", "import { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { StringUtils } from '@dooboostore/core/string/StringUtils';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { EventManager } from '../events/EventManager';\nimport type { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Range } from '../iterators/Range';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { DrPre } from '../operators/DrPre';\nimport { Dr } from '../operators/Dr';\nimport { DrIf } from '../operators/DrIf';\nimport { ExecuteState } from '../operators/OperatorExecuter';\nimport { DrThis } from '../operators/DrThis';\nimport { DrForm } from '../operators/DrForm';\nimport { DrInnerText } from '../operators/DrInnerText';\nimport { DrInnerHTML } from '../operators/DrInnerHTML';\nimport { DrFor } from '../operators/DrFor';\nimport { DrForOf } from '../operators/DrForOf';\nimport { DrAppender } from '../operators/DrAppender';\nimport { DrRepeat } from '../operators/DrRepeat';\nimport { DrTargetElement } from '../operators/DrTargetElement';\nimport { DrTargetAttr } from '../operators/DrTargetAttr';\nimport { DrStripElement } from '../operators/DrStripElement';\nimport { TargetElement } from '../configs/TargetElement';\nimport { TargetAttr } from '../configs/TargetAttr';\nimport { DestroyOptionType } from './DestroyOptionType';\nimport { Attrs } from './Attrs';\nimport { AttrInitCallBack } from './AttrInitCallBack';\nimport { ElementInitCallBack } from './ElementInitCallBack';\nimport { RawSetType } from './RawSetType';\nimport { Render } from './Render';\nimport { DrThisProperty } from '../operators/DrThisProperty';\nimport { RawSetOperatorType } from './RawSetOperatorType';\nimport { CssParser, CssRule, isStyleRule, isAtRule } from '@dooboostore/core/parser/css/CssParser';\nimport { isOnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\nimport { isOnCreateRender } from '../lifecycle/OnCreateRender';\nimport { isOnChangeAttrRender } from '../lifecycle/OnChangeAttrRender';\nimport { isOnInitRender } from '../lifecycle/OnInitRender';\nimport { isOnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';\nimport { isOnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';\nimport { DrTargetElementIsElement } from '../operators/DrTargetElementIsElement';\nimport { ObjectUtils } from '@dooboostore/core';\n\n\nexport class RawSet {\n public static readonly DR_NAME = 'dr';\n public static readonly DR_IF_NAME = 'dr-if';\n public static readonly DR_FOR_NAME = 'dr-for';\n public static readonly DR_FOR_OF_NAME = 'dr-for-of';\n public static readonly DR_THIS_PROPERTY_NAME = 'dr-this-property';\n public static readonly DR_REPEAT_NAME = 'dr-repeat';\n public static readonly DR_THIS_NAME = 'dr-this';\n public static readonly DR_FORM_NAME = 'dr-form';\n public static readonly DR_PRE_NAME = 'dr-pre';\n public static readonly DR_APPENDER_NAME = 'dr-appender';\n public static readonly DR_INNERHTML_NAME = 'dr-inner-html';\n public static readonly DR_INNERTEXT_NAME = 'dr-inner-text';\n public static readonly DR_DETECT_NAME = 'dr-detect';\n public static readonly DR_STRIP_NAME = 'dr-strip';\n public static readonly DR_REPLACE_TARGET_ELEMENT_IS_NAME = 'dr-replace-target-element-is';\n\n // \uAC10\uC9C0\uCC98\uB9AC\uB418\uB294 \uC635\uC158\n public static readonly DR_DETECT_IF_OPTIONNAME = 'dr-detect-option-if';\n public static readonly DR_DETECT_FILTER_OPTIONNAME = 'dr-detect-option-filter';\n public static readonly DR_DETECT_ATTR_OPTIONNAME = 'dr-detect-option-attr';\n\n\n /**\n * @deprecated\n */\n public static readonly DR_THIS_OPTIONNAME = 'dr-option-this';\n public static readonly DR_ATTR_OPTIONNAME = 'dr-option-attr';\n public static readonly DR_IF_OPTIONNAME = 'dr-option-if';\n public static readonly DR_IT_OPTIONNAME = 'dr-option-it';\n public static readonly DR_VAR_OPTIONNAME = 'dr-option-var';\n public static readonly DR_AFTER_OPTIONNAME = 'dr-option-after';\n public static readonly DR_NEXT_OPTIONNAME = 'dr-option-next';\n public static readonly DR_BEFORE_OPTIONNAME = 'dr-option-before';\n public static readonly DR_COMPLETE_OPTIONNAME = 'dr-option-complete';\n public static readonly DR_STRIP_OPTIONNAME = 'dr-option-strip';\n public static readonly DR_DESTROY_OPTIONNAME = 'dr-option-destroy';\n\n public static readonly DR_THIS_NAME_OPTIONNAME = 'dr-option-this-name';\n /**\n * @deprecated\n */\n public static readonly DR_COMPONENT_NAME_OPTIONNAME = 'dr-option-component-name';\n public static readonly DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME = 'dr-option-component-inner-html-name';\n public static readonly DR_KEY_OPTIONNAME = 'dr-option-key';\n public static readonly DR_HAS_KEYS_OPTIONNAME = 'dr-option-has-keys';\n\n public static readonly DR_ON_CREATE_ARGUMENTS_OPTIONNAME = 'dr-on-create:arguments';\n public static readonly DR_ON_CREATED_CALLBACK_OPTIONNAME = 'dr-on-create:callback';\n /** \uC6B0\uC120 \uC4F0\uB294\uACF3\uC774 \uC5C6\uC5B4\uC11C deprecated\uB97C \uAC78\uC5B4\uB1A8\uC74C\n @deprecated\n */\n public static readonly DR_ON_INIT_ARGUMENTS_OPTIONNAME = 'dr-on-init:arguments';\n public static readonly DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME = 'dr-on-constructor:arguments';\n\n public static readonly drAttrsOriginName: Attrs = {\n dr: RawSet.DR_NAME,\n drIf: RawSet.DR_IF_NAME,\n drFor: RawSet.DR_FOR_NAME,\n drForOf: RawSet.DR_FOR_OF_NAME,\n drThisProperty: RawSet.DR_THIS_PROPERTY_NAME,\n drAppender: RawSet.DR_APPENDER_NAME,\n drRepeat: RawSet.DR_REPEAT_NAME,\n drThis: RawSet.DR_THIS_NAME,\n drForm: RawSet.DR_FORM_NAME,\n drPre: RawSet.DR_PRE_NAME,\n drInnerHTML: RawSet.DR_INNERHTML_NAME,\n drInnerText: RawSet.DR_INNERTEXT_NAME,\n drItOption: RawSet.DR_IT_OPTIONNAME,\n drVarOption: RawSet.DR_VAR_OPTIONNAME,\n drAfterOption: RawSet.DR_AFTER_OPTIONNAME,\n drNextOption: RawSet.DR_NEXT_OPTIONNAME,\n drBeforeOption: RawSet.DR_BEFORE_OPTIONNAME,\n drCompleteOption: RawSet.DR_COMPLETE_OPTIONNAME,\n drStripElement: RawSet.DR_STRIP_NAME,\n drReplaceTargetElementIs: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME,\n drStripOption: RawSet.DR_STRIP_OPTIONNAME,\n drIfOption: RawSet.DR_IF_OPTIONNAME,\n drDetectIfOption: RawSet.DR_DETECT_IF_OPTIONNAME,\n drDestroyOption: RawSet.DR_DESTROY_OPTIONNAME,\n drHasKeysOption: RawSet.DR_HAS_KEYS_OPTIONNAME,\n drKeyOption: RawSet.DR_KEY_OPTIONNAME\n };\n\n public static readonly DR_TAGS = [];\n\n // public static readonly DR_REPLACE_ACTION_ATTRIBUTES = [\n // RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME\n // ]\n\n public static readonly DR_ATTRIBUTES = [\n RawSet.DR_NAME,\n RawSet.DR_APPENDER_NAME,\n RawSet.DR_IF_NAME,\n RawSet.DR_FOR_OF_NAME,\n RawSet.DR_THIS_PROPERTY_NAME,\n RawSet.DR_FOR_NAME,\n RawSet.DR_THIS_NAME,\n RawSet.DR_FORM_NAME,\n RawSet.DR_PRE_NAME,\n RawSet.DR_INNERHTML_NAME,\n RawSet.DR_INNERTEXT_NAME,\n RawSet.DR_REPEAT_NAME,\n RawSet.DR_DETECT_NAME,\n RawSet.DR_STRIP_NAME,\n ] as const;\n\n constructor(\n public uuid: string,\n public type: RawSetType,\n public point: {\n start: (Comment | Text | HTMLMetaElement),\n node: Node,\n end: Comment | Text | HTMLMetaElement,\n // thisVariableName?: string | null,\n parent?: Node | null,\n parentRawSet?: RawSet,\n childrenRawSets?: RawSet[]\n },\n public dataSet: {\n config: DomRenderConfig;\n fragment: DocumentFragment,\n render?: Render;\n },\n public detect?: { action: Function },\n ) {\n // point.start.rawSet = this;\n // console.log('rawset constructor->', (this.point.node as Element).getAttributeNames());\n }\n\n get isConnected() {\n // console.log('isConnect???', this, this.point.start.isConnected, this.point.end.isConnected);\n return this.point.start.isConnected && this.point.end.isConnected;\n }\n\n // \uC911\uC694\n getUsingTriggerVariables(config?: DomRenderConfig): Set<string> {\n const usingTriggerVariables = new Set<string>();\n // console.log('------data', this.dataSet)\n this.dataSet.fragment.childNodes.forEach((cNode, key) => {\n // console.log('-----aaaa-data', cNode, key)\n let script = '';\n if (cNode.nodeType === Node.TEXT_NODE) {\n script = `\\`${(cNode as Text).textContent ?? ''}\\``;\n const expressionGroups = RawSet.expressionGroups(script)\n // console.log('???????', script, expressionGroups)\n if (expressionGroups[0].length >1) {\n script = expressionGroups[0][1] as string;\n }\n // console.log('--', expressionGroups, script)\n } else if (cNode.nodeType === Node.ELEMENT_NODE) {\n const element = cNode as Element;\n const targetAttrNames = (config?.targetAttrs?.map(it => it.name) ?? [])\n .concat(RawSet.DR_ATTRIBUTES, RawSet.DR_DETECT_FILTER_OPTIONNAME, RawSet.DR_DETECT_IF_OPTIONNAME, RawSet.DR_DETECT_ATTR_OPTIONNAME); // .concat(EventManager.normalAttrMapAttrName);\n const targetScripts = targetAttrNames.map(it => element.getAttribute(it)).filter(it => it).map(it=>`(${it})`);\n const targetAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n // console.log('targetAttrMap-->', targetAttrMap)\n if (targetAttrMap) {\n new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n targetScripts.push(`(${v})`);\n });\n }\n // console.log('targetScriptstargetScripts', targetScripts)\n script = targetScripts.join(';');\n // script = targetScripts.map(it=>`try{${it}}catch(e){}`).join(';');\n\n // attribute\uCABD \uCCB4\uD06C\uD558\uB294\uAC70 \uCD94\uAC00\n // console.log('----!!!!!-->', targetAttrNames)\n // const otherAttrs = element.getAttributeNames()\n // .filter(it => !targetAttrNames.includes(it.toLowerCase()) && RawSet.isExporesion(element.getAttribute(it)))\n // .map(it => {\n // return `\\`${element.getAttribute(it) ?? ''}\\``;\n // }).join(';');\n // script += ';' + otherAttrs\n }\n if (script) {\n\n // console.log('------1-',script)\n script = script.replace(/#[^#]*#/g, '({})');\n // console.log('------2-',script)\n // script = script.replace('}$','}');\n // script = script.replace('@this@','this');\n // console.log('----------->', script)\n\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n // script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n // console.log('scripts-->', script)\n });\n // console.log('--------1--', script);\n // script = script.replaceAll('#{','${').replaceAll('}#', '}')\n // console.log('--------2--', script);\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n Array.from(ObjectUtils.Path.detectPathFromScript(script,{excludeThis: true})).filter(it => !it.startsWith(`___${EventManager.SCRIPTS_VARNAME}`)).forEach(it => usingTriggerVariables.add(it));\n }\n });\n // console.log('usingTriggerVariable----------->', usingTriggerVariables)\n return usingTriggerVariables;\n }\n\n // \uC911\uC694 render \uCC98\uB9AC \uBD80\uBD84\n public async render(obj: any, config: DomRenderConfig): Promise<RawSet[]> {\n // console.log('render!!!!!!!!!!!!!!')\n const genNode = config.window.document.importNode(this.dataSet.fragment, true);\n const raws: RawSet[] = [];\n const onAttrInitCallBacks: AttrInitCallBack[] = [];\n const onElementInitCallBacks: ElementInitCallBack[] = [];\n const onThisComponentSetCallBacks: ComponentSet[] = [];\n const drAttrs: Attrs[] = [];\n // console.log('rawSet render!!', obj, config, this, Array.from(genNode.childNodes.values()));\n for (const cNode of Array.from(genNode.childNodes.values())) {\n // console.log('cNodecNodecNode', cNode);\n let attribute = {};\n if (cNode.nodeType === Node.ELEMENT_NODE) {\n attribute = ElementUtils.getAttributeToObject(cNode as Element);\n }\n\n const __render = Object.freeze({\n rawSet: this,\n scripts: EventManager.setBindProperty(config?.scripts, obj),\n router: config?.router,\n range: Range.range,\n element: cNode,\n attribute: attribute,\n rootObject: obj,\n scriptUtils: ScriptUtils,\n nearThis: this.findNearThis(obj),\n parentThis: this.findParentThis(obj),\n bindScript: ` /** render **/\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis;\n const ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis;\n const ${EventManager.SCRIPT_UTILS_VARNAME} = this.__render.scriptUtils;\n const ${EventManager.ROOT_OBJECT_VARNAME} = this.__render.rootObject;\n `\n }) as unknown as Render;\n\n\n // const normalAttribute = attribute[EventManager.normalAttrMapAttrName];\n // if (normalAttribute) {\n // new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {\n // const cval = ScriptUtils.evalReturn({ bodyScript: __render.bindScript, returnScript: v }, Object.assign(obj, { __render: __render }));\n // console.log('-----------',v,k, cval);\n // attribute[v] = cval;\n // });\n // }\n\n\n const fag = config.window.document.createDocumentFragment();\n if (cNode.nodeType === Node.TEXT_NODE && cNode.textContent) {\n // console.log('text-->', this, obj, config, cNode.textContent);\n // console.log('text-->', Array.from(this.fragment.childNodes))\n const textContent = cNode.textContent;\n const runText = RawSet.expressionGroups(textContent)[0][1];\n // console.log('--->', RawSet.exporesionGrouops(textContent), textContent,runText, runText[0][1])\n let newNode: Node;\n if (textContent?.startsWith('#')) {\n const r = ScriptUtils.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, {__render}));\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n template.innerHTML = r;\n newNode = template.content;\n } else {\n const r = ScriptUtils.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, {__render}));\n newNode = config.window.document.createTextNode(r);\n }\n cNode.parentNode?.replaceChild(newNode, cNode);\n // console.log('-------', this.point.start.parentNode.nodeName)\n // \uC911\uC694 style value change \uB410\uC744\uB54C \uB2E4\uC2DC \uCC98\uB9AC\uD574\uC57C\uB418\uAE30\uB584\uBB38\uC5D0: \uB9C8\uC9C0\uB9C9\uC5D0 completed \uC5C6\uB294 attr \uAC00\uC9C0\uACE0 \uD310\uB2E8 \uD558\uB2C8\uAE50\n if (this.type === RawSetType.STYLE_TEXT && this.point.parent) {\n (this.point.parent as Element).removeAttribute('completed');\n }\n } else if (cNode.nodeType === Node.ELEMENT_NODE) {\n const element = cNode as Element;\n // console.log('target-->', element)\n const drAttr:Attrs = {\n dr: this.getAttributeAndDelete(element, RawSet.DR_NAME),\n drIf: this.getAttributeAndDelete(element, RawSet.DR_IF_NAME),\n drFor: this.getAttributeAndDelete(element, RawSet.DR_FOR_NAME),\n drForOf: this.getAttributeAndDelete(element, RawSet.DR_FOR_OF_NAME),\n drThisProperty: this.getAttributeAndDelete(element, RawSet.DR_THIS_PROPERTY_NAME),\n drAppender: this.getAttributeAndDelete(element, RawSet.DR_APPENDER_NAME),\n drRepeat: this.getAttributeAndDelete(element, RawSet.DR_REPEAT_NAME),\n drThis: this.getAttributeAndDelete(element, RawSet.DR_THIS_NAME),\n drForm: this.getAttributeAndDelete(element, RawSet.DR_FORM_NAME),\n drPre: this.getAttributeAndDelete(element, RawSet.DR_PRE_NAME),\n drInnerHTML: this.getAttributeAndDelete(element, RawSet.DR_INNERHTML_NAME),\n drInnerText: this.getAttributeAndDelete(element, RawSet.DR_INNERTEXT_NAME),\n drStripElement: this.getAttributeAndDelete(element, RawSet.DR_STRIP_NAME),\n drReplaceTargetElementIs: this.getAttributeAndDelete(element, RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME),\n drItOption: this.getAttributeAndDelete(element, RawSet.DR_IT_OPTIONNAME),\n drIfOption: this.getAttributeAndDelete(element, RawSet.DR_IF_OPTIONNAME),\n drVarOption: this.getAttributeAndDelete(element, RawSet.DR_VAR_OPTIONNAME),\n drNextOption: this.getAttributeAndDelete(element, RawSet.DR_NEXT_OPTIONNAME),\n drAfterOption: this.getAttributeAndDelete(element, RawSet.DR_AFTER_OPTIONNAME),\n drBeforeOption: this.getAttributeAndDelete(element, RawSet.DR_BEFORE_OPTIONNAME),\n drCompleteOption: this.getAttributeAndDelete(element, RawSet.DR_COMPLETE_OPTIONNAME),\n drStripOption: this.getAttributeAndDelete(element, RawSet.DR_STRIP_OPTIONNAME),\n drDestroyOption: this.getAttributeAndDelete(element, RawSet.DR_DESTROY_OPTIONNAME),\n drKeyOption: this.getAttributeAndDelete(element, RawSet.DR_KEY_OPTIONNAME),\n drDetectIfOption: this.getAttribute(element, RawSet.DR_DETECT_IF_OPTIONNAME),\n drHasKeysOption: this.getAttribute(element, RawSet.DR_HAS_KEYS_OPTIONNAME),\n };\n drAttrs.push(drAttr);\n // \uC544\uB798 \uC21C\uC11C \uC911\uC694\n const operators = [\n new DrPre(this, __render, {raws, fag}, {element, attrName: RawSet.DR_PRE_NAME, attr: drAttr.drPre, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drPre}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new Dr(this, __render, {raws, fag}, {element, attrName: RawSet.DR_NAME, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n // new Dr(this, __render, {raws, fag}, {element, attrName: EventManager.onRenderedInitAttrName, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrIf(this, __render, {raws, fag}, {element, attrName: RawSet.DR_IF_NAME, attr: drAttr.drIf, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drIf}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrStripElement(this, __render, {raws, fag}, {element, attrName: RawSet.DR_STRIP_NAME, attr: drAttr.drStripElement, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drThis}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrThis(this, __render, {raws, fag}, {element, attrName: RawSet.DR_THIS_NAME, attr: drAttr.drThis, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drThis}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrForm(this, __render, {raws, fag}, {element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drForm, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drForm}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrInnerText(this, __render, {raws, fag}, {element, attrName: RawSet.DR_INNERTEXT_NAME, attr: drAttr.drInnerText, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drInnerText}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrInnerHTML(this, __render, {raws, fag}, {element, attrName: RawSet.DR_INNERHTML_NAME, attr: drAttr.drInnerHTML, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drInnerHTML}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrFor(this, __render, {raws, fag}, {element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drFor, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drFor}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrForOf(this, __render, {raws, fag}, {element, attrName: RawSet.DR_FOR_OF_NAME, attr: drAttr.drForOf, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drForOf}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrThisProperty(this, __render, {raws, fag}, {element, attrName: RawSet.DR_THIS_PROPERTY_NAME, attr: drAttr.drThisProperty, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drThisProperty}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrAppender(this, __render, {raws, fag}, {element, attrName: RawSet.DR_APPENDER_NAME, attr: drAttr.drAppender, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drAppender}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrRepeat(this, __render, {raws, fag}, {element, attrName: RawSet.DR_REPEAT_NAME, attr: drAttr.drRepeat, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drRepeat}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrTargetElementIsElement(this, __render, {raws, fag}, {element, attrName: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME, attr: drAttr.drReplaceTargetElementIs, attrs: drAttr}, {config, obj}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrTargetElement(this, __render, {raws, fag}, {element, attrs: drAttr}, {config, obj}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrTargetAttr(this, __render, {raws, fag}, {element, attrs: drAttr}, {config, obj}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n ];\n\n for (const operator of operators) {\n const state = await operator.start();\n if (state === ExecuteState.EXECUTE) {\n break;\n } else if (state === ExecuteState.STOP) {\n return raws;\n }\n }\n }\n }\n\n this.point.childrenRawSets = raws;\n raws.forEach(it => {\n it.point.parentRawSet = this;\n });\n\n // console.log('pppppppppppppp', this);\n\n\n // replaceBody\uC640 applyEvent \uC21C\uC11C\uB97C \uBC14\uAFE8\uB2E4 20250511\n const childrenNodes = Array.from(genNode.childNodes);\n this.applyEvent(obj, genNode, config);\n this.replaceBody(genNode); // \uC911\uC694 \uC5EC\uAE30\uC11C \uB9C8\uC9C0\uB9C9\uC5D0 \uC5F0\uC158\uB41C \uAC12\uC744 \uADF8\uB824\uC900\uB2E4.\n // console.log('rawSEt!!!!!!!', obj,childrenNodes,config)\n // console.log('rawSEt!!!!!!!', obj, this.findNearThis(obj),childrenNodes,config)\n // console.log('rawSEt!!!!!!!', obj, drAttrs)\n this.onRenderedEvent(obj, childrenNodes, config);\n\n drAttrs.forEach(it => {\n if (it.drCompleteOption) {\n // genNode.childNodes\n const render = Object.freeze({\n rawSet: this,\n fag: genNode,\n scripts: EventManager.setBindProperty(config?.scripts, obj)\n } as Render);\n ScriptUtils.evaluate(`\n const ${EventManager.FAG_VARNAME} = this.__render.fag;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;\n ${it.drCompleteOption}`, Object.assign(obj, {__render: render}));\n }\n });\n\n\n // \uC911\uC694 style isolation \uB098\uC911\uC5D0 :scope\uB85C \uB300\uCCB4 \uAC00\uB2A5\uD560\uB4EF.\n // 2023.9.4\uC77C \uC5C6\uC570 style \uCC98\uC74C\uB4E4\uC5B4\uC62C\uB54C \uCC98\uB9AC\uD558\uB294\uAC78\uB85C \uBC14\uAFC8\n // RawSet.generateStyleSheetsLocal(config);\n for (const it of onThisComponentSetCallBacks) {\n if (isOnInitRender(it.obj)) {\n it.obj?.onInitRender?.({}, this);\n }\n }\n for (const it of onElementInitCallBacks) {\n if (isOnInitRender(this.dataSet.render?.currentThis)) {\n // TODO: \uB098\uC911\uC5D0 \uD30C\uB77C\uBBF8\uD130 \uB4E4\uC5B4\uAC00\uC57C\uB420\uB4EF. \uC9C0\uAE08\uC740 \uB9AC\uD329\uD1A0\uB9C1\uD558\uB290\uB77C \uBE60\uC9D0\n // console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', it, this.dataSet);\n // dr-on-init:arguments\n\n // if (isOnInitRender()) {\n // it.targetElement.__render.component.onInitRender?.(...param);\n // }\n // if (it.targetElement?.__render?.element && it.targetElement?.__render?.component) {\n // const oninit = it.targetElement.__render.element.getAttribute(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME); // dr-on-component-init\n // let param = [];\n // if (oninit) {\n // const script = `${it.targetElement.__render.renderScript} return ${oninit} `;\n // param = ScriptUtils.eval(script, Object.assign(obj, {\n // __render: it.targetElement.__render\n // }));\n // if (!Array.isArray(param)) {\n // param = [param];\n // }\n // }\n //\n // if (isOnInitRender(it.targetElement.__render.component)) {\n // it.targetElement.__render.component.onInitRender?.(...param);\n // }\n // }\n this.dataSet.render.currentThis.onInitRender({}, this);\n }\n\n\n config?.onElementInit?.(it.name, obj, this, it.targetElement);\n }\n\n // TODO: \uC774\uBD80\uBD84\uB3C4 \uC704\uC5D0 targetElement \uCC98\uB7FC \uD574\uC57C\uB420\uAE4C?\n for (const it of onAttrInitCallBacks) {\n config?.onAttrInit?.(it.attrName, it.attrValue, obj, this);\n }\n\n // component destroy\n if (obj.__domrender_components) {\n Object.entries(obj.__domrender_components).forEach(([key, value]) => {\n const rawSet = (value as any).__rawSet as RawSet;\n const drAttrs: Attrs | undefined = rawSet?.dataSet.render?.attribute;\n if (rawSet && !rawSet.isConnected) {\n const destroyOptions = drAttrs?.drDestroyOption?.split(',') ?? [];\n RawSet.destroy(obj.__domrender_components[key], {rawSet: rawSet}, config, destroyOptions);\n delete obj.__domrender_components[key];\n }\n });\n }\n // console.log('-------raws',raws)\n return raws;\n }\n\n\n // \uC911\uC694 \uC2A4\uD0C0\uC77C \uC801\uC6A9 \uBD80\uBD84\n private static generateRuleSelector(start: string, end: string, sit: string) {\n const selectorText = `:is(${start} ~ *:not(${start} ~ ${end} ~ *))`;\n if (sit.startsWith('## ')) {\n return sit.replace(/^## /, '');\n } else if (sit.startsWith('.')) {\n return `${selectorText}${sit}, ${selectorText} ${sit}`;\n } else if (sit.includes('::')) {\n const reg = sit.match(/(.*)::(.*)$/);\n const first = reg?.[1];\n const extracted = reg?.[2];\n const divText = `${start} ~ ${first}:not(${start} ~ ${end} ~ *)`;\n return `${selectorText} ${first}, ${divText}::${extracted}`;\n } else {\n const divText = `${start} ~ ${sit}:not(${start} ~ ${end} ~ *)`;\n return `${selectorText} ${sit}, ${divText}`;\n }\n }\n\n public static generateStyleTransform(styleBody: string | string[], componentKey: string, styleTagWrap = true) {\n // console.log('style!!!!!!!!!!!!!!!!1', styleBody, componentKey, styleTagWrap);\n if (Array.isArray(styleBody)) {\n styleBody = styleBody.join('\\n');\n }\n styleBody = styleBody.replaceAll('#uuid#', componentKey);\n const start = `#${componentKey}-start`;\n const end = `#${componentKey}-end`;\n // \uC774\uAC70\uBB50\uD558\uB294\uC9C0 \uAE4C\uBA39\uC5C8\uB124 \uBB50\uC600\uC9C0??..\n // \uB3D9\uC801\uC73C\uB85C \uCC98\uB9AC\uD558\uB294\uAC83\uAC19\uC740\uB370.. css \uC5D0\uC11C\uB294 \uB3D9\uC801\uC73C\uB85C \uCC98\uB9AC\uD558\uB294\uAC78 \uC9C0\uD5A5 \uD574\uC57C\uB420\uAC83\uAC19\uC740\uB370 \uC774\uAE30\uB2A5 deprecated \uD560\uC9C0 \uACE0\uBBFC\uC911\n // const before = StringUtils.regexExecArrayReplace(styleBody, /(\\$\\{.*?\\}\\$)/g, (data) => {\n // // console.log('\uB3D9\uC801?', `var(--domrender-${data[0]})`)\n // return `var(--domrender-${data[0]})`;\n // });\n // const before = styleBody;\n // console.log('before@@@@@@@@@@@', before)\n const cssParser = new CssParser(styleBody);\n \n const processRule = (rule: CssRule) => {\n if (isStyleRule(rule)) {\n const isRoot = rule.selector.includes(':root');\n if (!isRoot) {\n // Handle comma-separated selectors\n const selectors = rule.selector.split(',').map(s => s.trim());\n const transformedSelectors = selectors.map(selector => \n this.generateRuleSelector(start, end, selector)\n );\n rule.selector = transformedSelectors.join(', ');\n }\n } else if (isAtRule(rule)) {\n if (rule.name === 'media') {\n const hasRoot = rule.children.some(childRule => \n isStyleRule(childRule) && childRule.selector.includes(':root')\n );\n if (!hasRoot) {\n rule.children.forEach(childRule => {\n if (isStyleRule(childRule)) {\n const selectors = childRule.selector.split(',').map(s => s.trim());\n const transformedSelectors = selectors.map(selector => \n this.generateRuleSelector(start, end, selector)\n );\n childRule.selector = transformedSelectors.join(', ');\n }\n });\n }\n }\n }\n };\n\n cssParser.rules.forEach(processRule);\n \n let after = cssParser.stringify();\n // let after = StringUtils.regexExecArrayReplace(stringify as string, /(var\\(--domrender-(\\$\\{.*?\\}\\$)?\\))/g, (data) => {\n // return data[2];\n // });\n // console.log('after@@@@@@@@@@@', after)\n\n // \uC5EC\uAE30\uC11C \uC120\uC5B8 selector \uC790\uCCB4\uC5D0\uB3C4 \uCC98\uB9AC\uAC00\uB2A5\uD558\uB3C4\uB85D \uD55C\uB2E4 20250518\n after = after.replaceAll('/*$', '${')\n after = after.replaceAll('$*/', '}$')\n\n\n if (styleTagWrap) {\n styleBody = `<style id='${componentKey}-style' domstyle>${after}</style>`;\n }\n\n // console.log('style!!!!!!!!!!!!!!2', styleBody);\n return styleBody;\n }\n\n public applyEvent(obj: any, fragment = this.dataSet.fragment, config?: DomRenderConfig) {\n this.dataSet.config.eventManager.applyEvent(obj, this.dataSet.config.eventManager.findAttrElements(fragment, config), config);\n }\n\n public onRenderedEvent(obj: any, nodes: Node[], config?: DomRenderConfig) {\n this.dataSet.config.eventManager.onRenderedEvent(obj, nodes, config);\n }\n\n public getAttribute(element: Element, attr: string) {\n const data = element.getAttribute(attr);\n return data;\n }\n\n public getAttributeAndDelete(element: Element, attr: string) {\n const data = element.getAttribute(attr);\n // if (data)\n // element.setAttribute(`origin-${attr}`, data);\n\n element.removeAttribute(attr);\n return data;\n }\n\n public getDrAppendAttributeAndDelete(element: Element, obj: any) {\n let data = element.getAttribute(RawSet.DR_APPENDER_NAME);\n // if (data && !/\\[[0-9]+\\]/g.test(data)) {\n if (data && !/\\[.+\\]/g.test(data)) {\n const currentIndex = ScriptUtils.evaluateReturn(`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`, obj);\n // console.log('------?', currentIndex)\n // if (currentIndex === undefined || isNaN(currentIndex)) {\n // return undefined;\n // }\n // const currentIndex = ScriptUtils.evalReturn(`${data}.length`, obj);\n data = `${data}[${currentIndex}]`;\n element.setAttribute(RawSet.DR_APPENDER_NAME, data);\n // element.setAttribute(RawSet.DR_IF_NAME, data);\n // element.setAttribute('dr-id', data);\n // console.log('-->', element)\n }\n\n // if (data && !/\\.childs\\[[0-9]+\\]/g.test(data)) {\n // const currentIndex = ScriptUtils.evalReturn(`${data}.currentIndex`, obj);\n // data = `${data}.childs[${currentIndex}]`;\n // element.setAttribute(RawSet.DR_APPENDER_NAME, data)\n // }\n element.removeAttribute(RawSet.DR_APPENDER_NAME);\n return data;\n }\n\n public replaceBody(genNode: Node) {\n this.childAllRemove();\n this.point.start.parentNode?.insertBefore(genNode, this.point.start.nextSibling); // \uC911\uC694 start checkpoint \uB2E4\uC74C\uC778 end checkpoint \uC55E\uC5D0 \uB123\uB294\uB2E4. \uC989 \uC911\uAC04 \uAEF4\uB123\uAE30 (\uB098\uC911\uC5D0 meta tag\uB85C \uBCC0\uACBD\uC744 \uD574\uB3C4\uB420\uB4EF\uD558\uAE34\uD55C\uB370..)\n }\n\n // \uC911\uC694 important\n public static checkPointCreates(element: Node, obj: any, config: DomRenderConfig): RawSet[] {\n // console.log('!@@@@@@@@@@@@@@@@', obj);\n // const NodeFilter = (config.window as any).NodeFilter;\n // const thisVariableName = (element as any).__domrender_this_variable_name;\n // console.log('thisVariableName---', thisVariableName);\n const nodeIterator = config.window.document?.createNodeIterator(element, NodeFilter.SHOW_ALL, {\n acceptNode(node) {\n // console.log('nodeType', node.nodeType, (node as any).tagName, (node as any).data);\n if (node.nodeType === Node.TEXT_NODE) {\n // console.log('text--->', node.textContent)\n // console.log('????????', node.parentElement, node.parentElement?.getAttribute('dr-pre'));\n // console.log('???????/',node.textContent, node.parentElement?.getAttribute('dr-pre'))\n // TODO: \uB098\uC911\uC5D0\n // const between = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', StringUtils.deleteEnter((node as Text).data ?? ''))\n const between = RawSet.expressionGroups(StringUtils.deleteEnter((node as Text).data ?? ''));\n // console.log('bbbb', between)\n return between?.length > 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // return /\\$\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // return /[$#]\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n if (element.hasAttribute(RawSet.DR_PRE_NAME)) {\n return NodeFilter.FILTER_REJECT;\n }\n if (element.hasAttribute(EventManager.attrAttrName)) {\n const script = element.getAttribute(EventManager.attrAttrName) ?? '';\n // console.log('scriptscriptscriptscriptscriptscript,', script)\n const keyValuePairs = Array.from(script.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}));\n (keyValuePairs ?? []).forEach(it => {\n element.setAttribute(it.key, '${' + it.value + '}$')\n })\n // console.log('-------k', keyValuePairs)\n\n // const drAttr = ScriptUtils.evalReturn(script, obj)\n // Object.entries(drAttr).forEach(([key, value]) => {\n // const keyValuePairs = Array.from(a.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({ key: match[1], value: match[2] }));\n // console.log(keyValuePairs);\n // // \uCD9C\uB825: [{ key: 'value', value: 'this.child.obj.name' }, { key: 'wow', value: 'this.ww' }, { key: 'zz', value: '22' }, { key: 'v', value: '\"ee\"' }]\n //\n // console.log('-----------------', key,value)\n // element.setAttribute(key, '${'+(value)+'}$');\n // })\n // EventManager.attrNames.filter(it => it in drAttr).forEach(it => {\n // if (drAttr[it] === null) {\n // element.removeAttribute(it);\n // } else {\n // element.setAttribute(it, drAttr[it]);\n // }\n // })\n // console.log('-------->', Array.from(element.attributes), element.getAttribute('dr-attr'), obj)\n }\n // element.setAttribute('dr-event-click', 'console.log(11)');\n const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // if (isElement) {\n // (element as HTMLElement).style.display = 'none';\n // (element as HTMLElement).style.width = '100px';\n // (element as HTMLElement).style.height = '100px';\n // console.log((element as HTMLElement).outerHTML)\n // }\n // console.log('------targetElementIstargetElementIs>', targetElementNames, '---', isElement, targetElementIs);\n // const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES,...EventManager.RAWSET_CHECK_ATTRIBUTE]);\n const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES]);\n const normalAttrs = new Map<string, string>();\n const linkVariables = new Map<string, string>();\n const linkNames = EventManager.linkAttrs.map(it => it.name);\n const isAttr = element.getAttributeNames().filter(it => {\n const value = element.getAttribute(it);\n\n // link\uC77C\uB54C\n if (value && linkNames.includes(it)) {\n linkVariables.set(it, value);\n } else if (value && RawSet.isExpression(value)) { // \uD45C\uD604\uC2DD\uC788\uC744\uB584\n let variablePath: string = RawSet.expressionGroups(value)[0][1];\n // console.log('0-----',variablePath, node);\n // normal Attribute \uCD08\uBC18\uC5D0 \uC14B\uD305\uD574\uC8FC\uAE30.\n // TODO: \uC774\uAC70 \uD558\uAE34\uD588\uB294\uB370 \uC0AC\uC774\uB4DC \uC774\uD329\uD2B8?\n const originVariable = variablePath\n variablePath = variablePath.replace(/#[^#]*#/g, '({})');\n // console.log('1-----',variablePath, node);\n const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);\n // console.log('2-----',optionalChainPath);\n const cval = ScriptUtils.evaluateReturn(optionalChainPath, Object.assign(obj));\n // const cval = ScriptUtils.evalReturn(variablePath, Object.assign(obj));\n if (cval === null) {\n element.removeAttribute(it);\n } else {\n element.setAttribute(it, cval);\n }\n normalAttrs.set(it, originVariable);\n // console.log('normalAttribute', it, variablePath);\n }\n // console.log(element.getAttribute(it), attrExpresion);\n const isTargetAttr = targetAttrNames.includes(it.toLowerCase());\n return isTargetAttr;\n }).length > 0;\n\n if (linkVariables.size) {\n element.setAttribute(EventManager.linkTargetMapAttrName, JSON.stringify(Array.from(linkVariables.entries())));\n }\n // \uAE30\uBCF8 attribute\uB97C \uCC98\uB9AC\uD558\uAE30\uC704\uD574\n if (normalAttrs.size) {\n element.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));\n }\n // if (isElement) {\n // element.setAttribute('www', '@this@');\n // }\n const r = (isAttr || isElement) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n return r;\n }\n return NodeFilter.FILTER_REJECT;\n }\n });\n const pars: RawSet[] = [];\n let currentNode: Node | null;\n // eslint-disable-next-line no-cond-assign\n while (currentNode = nodeIterator?.nextNode()) {\n if (currentNode.nodeType === Node.TEXT_NODE) {\n const text = (currentNode as Text).textContent ?? '';\n const template = config.window.document?.createElement('template');\n if (!template) break;\n // const a = StringUtils.regexExec(/\\$\\{.*?\\}/g, text);\n // const a = StringUtils.regexExec(/[$#]\\{.*?\\}/g, text);\n // const a = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', text); // <--TODO: \uB098\uC911\uC5D0..\n const groups = RawSet.expressionGroups(text);\n const map = groups.map(it => ({uuid: `${RandomUtils.alphabet(40)}_${obj?.constructor?.name}`, content: it[0], regexArr: it}));\n let lasterIndex = 0;\n for (let i = 0; i < map.length; i++) {\n const it = map[i];\n // console.log('itttttttttttt', it);\n const regexArr = it.regexArr;\n // \uC911\uC694: text\uACBD\uC6B0 asdasd ${this.name}$ \uC774\uB807\uAC8C \uC788\uB2E4\uBA74 \uC55E\uBD80\uBD84 asdasd <-- \uC774\uBD80\uBD84\uC740 \uC0B4\uB824\uC57C\uB418\uB2C8\uAE50 \uC544\uB798\uCC98\uB7FC \uC9DC\uB984\n const preparedText = regexArr.input.substring(lasterIndex, regexArr.index);\n // const preparedText = regexArr[1];\n // const start = config.window.document.createElement('meta');\n // start.setAttribute('id', `${it.uuid}-start`);\n // const end = config.window.document.createElement('meta');\n // end.setAttribute('id', `${it.uuid}-end`);\n let type: RawSetType;\n if (currentNode.parentNode && currentNode.parentNode.nodeName.toUpperCase() === 'STYLE') {\n type = RawSetType.STYLE_TEXT;\n } else {\n type = RawSetType.TEXT;\n }\n const node = document.createTextNode(preparedText);\n const startEndPoint = RawSet.createStartEndPoint({id: it.uuid, type}, config);\n // layout setting\n // console.log('createTextNode', node);\n template.content.append(node); // expression \uC55E \uBD80\uBD84 \uB123\uC5B4\uC918\uC57C \uC55E\uBD80\uBD84 \uC77C\uBC18 text \uC548\uC9E4\uB9B0\uB2E4.\n template.content.append(startEndPoint.start); // add start checkpoint\n template.content.append(startEndPoint.end); // add end checkpoint\n\n // content \uC548\uCABD RawSet render \uD560\uB54C start \uC640 end \uC0AC\uC774\uC5D0 fragment \uC5F0\uC0B0\uD574\uC11C \uB4E4\uC5B4\uAC04\uB2E4.\n const fragment = config.window.document.createDocumentFragment();\n fragment.append(config.window.document.createTextNode(it.content));\n // (startEndPoint.start as any).khh = RandomUtils.decimal(0,10)\n pars.push(new RawSet(it.uuid, type, {\n start: startEndPoint.start,\n node: currentNode,\n end: startEndPoint.end,\n parent: currentNode.parentNode,\n // thisVariableName: thisVariableName\n }, {fragment: fragment, config: config}));\n lasterIndex = regexArr.index + it.content.length;\n }\n template.content.append(config.window.document.createTextNode(text.substring(lasterIndex, text.length)));\n currentNode?.parentNode?.replaceChild(template.content, currentNode); // <-- \uC5EC\uAE30\uC11C text\uB97C fragment\uB85C replace\uD588\uAE30\uB54C\uBB38\uC5D0 \uCD94\uC801 \uBCC0\uACBD\uC774 \uAC00\uB2A5\uD558\uB2E4.\n } else if (currentNode.nodeType === Node.ELEMENT_NODE) {\n // const uuid = `${RandomUtils.alphabet(40)}___${obj?.constructor?.name}`;\n const uuid = `${RandomUtils.alphabet(40)}`;\n const element = currentNode as Element;\n const fragment = config.window.document.createDocumentFragment();\n const elementType: RawSetType = RawSetType.TARGET_ELEMENT;\n const startEndPoint = RawSet.createStartEndPoint({node: element, id: uuid, type: elementType}, config);\n // \uC5EC\uAE30\uC11C \uB4F1\uB85D\uD55C component \uCD94\uAC00\uD55C\uB2E4.\n const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // if (isElement) {\n // (element as HTMLElement).style.display = 'none'\n // }\n // const isElement = targetElementNames.includes(element.tagName.toLowerCase());\n const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat(RawSet.DR_ATTRIBUTES);\n const isAttr = element.getAttributeNames().filter(it => targetAttrNames.includes(it.toLowerCase())).length > 0;\n currentNode?.parentNode?.insertBefore(startEndPoint.start, currentNode);\n currentNode?.parentNode?.insertBefore(startEndPoint.end, currentNode.nextSibling);\n fragment.append(currentNode);\n // const tempDiv = document.createElement('div');\n // tempDiv.appendChild(fragment.cloneNode(true)); // fragment \uBCF5\uC0AC\uBCF8 \uCD94\uAC00\n // console.log('------',tempDiv.innerHTML);\n // console.log();\n const rawSet = new RawSet(uuid, isElement ? elementType : (isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN), {\n start: startEndPoint.start,\n node: currentNode,\n end: startEndPoint.end,\n parent: currentNode.parentNode,\n // thisVariableName: thisVariableName\n }, {config: config, fragment: fragment});\n pars.push(rawSet);\n }\n }\n // console.log('parsparsparsparsparsparsparsparsparspars', pars);\n return pars;\n }\n\n public static createStartEndPoint(data: { node?: Node, id: string, type: RawSetType }, config: DomRenderConfig) {\n if (data.type === RawSetType.TARGET_ELEMENT && data.node) {\n const element = data.node as Element;\n const start: HTMLMetaElement = config.window.document.createElement('meta');\n const end: HTMLMetaElement = config.window.document.createElement('meta');\n start.setAttribute('id', `${data.id}-start`);\n start.setAttribute('dr-start-point', '');\n const keys = element.getAttribute(RawSet.DR_KEY_OPTIONNAME);\n const thisPropertyType = element.getAttribute(RawSet.DR_THIS_PROPERTY_NAME);\n if (thisPropertyType) {\n start.setAttribute('type', RawSetOperatorType.DR_THIS_PROPERTY);\n }\n if (keys) {\n element.removeAttribute(RawSet.DR_KEY_OPTIONNAME);\n start.setAttribute(RawSet.DR_KEY_OPTIONNAME, keys);\n }\n end.setAttribute('id', `${data.id}-end`);\n end.setAttribute('dr-end-point', '');\n return {start, end};\n } else if (data.type === RawSetType.STYLE_TEXT) {\n return {\n start: config.window.document.createTextNode(`/*start text ${data.id}*/`),\n end: config.window.document.createTextNode(`/*end text ${data.id}*/`)\n };\n } else { // text\n return {\n start: config.window.document.createComment(`start text ${data.id}`),\n end: config.window.document.createComment(`end text ${data.id}`)\n };\n }\n }\n\n public remove() {\n this.childAllRemove();\n this.point.end.remove();\n this.point.start.remove();\n }\n\n public childAllRemove() {\n let next = this.point.start.nextSibling;\n while (next) {\n if (next === this.point.end) {\n break;\n }\n next.remove();\n next = this.point.start.nextSibling;\n }\n }\n\n public childs(stopNext?: (node: Node) => boolean) {\n const childs: any[] = [];\n let next = this.point.start.nextSibling;\n while (next && next !== this.point.end) {\n if (stopNext?.(next)) {\n return;\n }\n childs.push(next);\n next = next.nextSibling;\n }\n return childs;\n }\n\n public getHasRawSet(key: string) {\n let rawSet: RawSet | undefined;\n this.childs((node) => {\n const drKey = (node as Element).getAttribute?.(RawSet.DR_KEY_OPTIONNAME);\n if (drKey && drKey === key) {\n rawSet = (node as any).rawSet as RawSet;\n return true;\n }\n return false;\n });\n return rawSet;\n }\n\n public static drItOtherEncoding(element: Element | DocumentFragment, postFix?: string) {\n\n const random = RandomUtils.uuid() + postFix;\n const regex = /#it#/g;\n element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(regex, random);\n });\n return random;\n }\n\n public static drItOtherDecoding(element: Element | DocumentFragment, random: string) {\n element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');\n });\n }\n\n public static drVarDecoding(element: Element, vars: { name: string, value: string, regex: RegExp, random: string }[]) {\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n vars.filter(vit => vit.value && vit.name).forEach(vit => {\n it.innerHTML = it.innerHTML.replace(RegExp(vit.random, 'g'), vit.value);\n });\n });\n }\n\n public static replaceInnerHTML(element: Element, config: { asIs: string | RegExp, toBe?: string }): string {\n const innerHTML = element.innerHTML;\n const tobe = config.toBe = config.toBe ?? RandomUtils.uuid();\n if (config.asIs instanceof RegExp) {\n element.innerHTML = innerHTML.replace(config.asIs, config.toBe);\n } else {\n element.innerHTML = innerHTML.replaceAll(config.asIs, config.toBe);\n }\n return tobe;\n }\n\n public static drThisEncoding(element: Element, drThis: string, config: { asIs: RegExp, toBe?: string }): string {\n const thisRandom = config.toBe = config?.toBe ?? RandomUtils.uuid();\n // const thisRegex = /(?<!(dr-|\\.))this(?=.?)/g;\n // const thisRegex = /[^(dr\\-)]this(?=.?)/g;\n // const thisRegex = /[^(dr\\-)]this\\./g;\n // safari \uB54C\uBB38\uC5D0 \uC804\uC704 \uAC80\uC0C9 regex\uAC00 \uC548\uB428 \uC544 \uC9DC\uC99D\uB098\uC11C \uC774\uAC78\uB85C\uD568.\n // element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n // let message = it.innerHTML;\n // })\n element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(config.asIs, thisRandom);\n });\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n // console.log('rrrrrrrrand?', drThis,config);\n let message = it.innerHTML;\n // StringUtils.regexExec(/([^(dr\\-)])?this(?=.?)/g, message).reverse().forEach(it => {\n StringUtils.regexExec(config.asIs, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${drThis}`);\n });\n it.innerHTML = message;\n });\n\n // console.log('changggg', element.innerHTML);\n let message = element.innerHTML;\n StringUtils.regexExec(config.asIs, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${drThis}`);\n });\n element.innerHTML = message;\n return thisRandom;\n }\n\n public static drThisBindEncoding(element: Element, variable: RegExp, config: { config: DomRenderConfig, otherReplaceVariablePath?: string }) {\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(eIt => {\n let message = eIt.innerHTML;\n // StringUtils.regexExec(/([^(dr\\-)])?this(?=.?)/g, message).reverse().forEach(it => {\n StringUtils.regexExec(variable, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${eIt.getAttribute(RawSet.DR_THIS_NAME)}`);\n });\n eIt.innerHTML = message;\n });\n\n\n const targetElements = config.config.targetElements ?? [];\n const targetElementNames = targetElements.map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:')).join(',');\n const thisRandom = RandomUtils.uuid();\n element.querySelectorAll(targetElementNames).forEach(it => {\n it.innerHTML = it.innerHTML.replace(variable, thisRandom);\n });\n\n element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(variable, thisRandom);\n })\n\n\n if (config.otherReplaceVariablePath) {\n let message = element.innerHTML;\n StringUtils.regexExec(variable, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${config.otherReplaceVariablePath}`);\n });\n element.innerHTML = message;\n }\n return thisRandom;\n }\n\n public static drThisBindDecoding(element: Element, config: { asIs: string, toBe: string, config: DomRenderConfig }) {\n const targetElements = config.config.targetElements ?? [];\n const targetElementNames = targetElements.map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:')).join(',');\n element.querySelectorAll(targetElementNames).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n })\n }\n\n public static drThisDecoding(element: Element, config: { asIs: string, toBe: string }) {\n element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n }\n\n public static drFormOtherMoveAttr(element: Element, as: string, to: string, config: DomRenderConfig) {\n element.querySelectorAll(`[${RawSet.DR_FORM_NAME}]`).forEach(subElement => {\n const nodeIterator = config.window.document?.createNodeIterator(subElement, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n return element.hasAttribute(as) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_REJECT;\n }\n }\n });\n\n let node;\n // eslint-disable-next-line no-cond-assign\n while (node = nodeIterator?.nextNode()) {\n const element = node as Element;\n element.setAttribute(to, element.getAttribute(as) ?? '');\n element.removeAttribute(as);\n }\n });\n }\n\n public static drVarEncoding(element: Element, drVarOption: string) {\n const vars = (drVarOption?.split(',') ?? []).map(it => {\n const s = it.trim().split('=');\n const name = s[0]?.trim();\n const value = s[1]?.trim();\n return {\n name,\n value,\n // regex: RegExp('(?<!(dr-|\\\\.))var\\\\.' + s[0] + '(?=.?)', 'g'),\n regex: RegExp('\\\\$var\\\\.' + name + '(?=.?)', 'g'),\n random: RandomUtils.uuid()\n };\n });\n // console.log('asd', element.innerHTML);\n // element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n element.querySelectorAll(`[${RawSet.DR_VAR_OPTIONNAME}]`).forEach(it => {\n vars.filter(vit => vit.value && vit.name).forEach(vit => {\n it.innerHTML = it.innerHTML.replace(vit.regex, vit.random);\n });\n });\n vars.filter(vit => vit.value && vit.name).forEach(vit => {\n element.innerHTML = element.innerHTML.replace(vit.regex, vit.value);\n });\n return vars;\n }\n\n public static async drThisCreate(rawSet: RawSet, element: Element, drThis: string, drVarOption: string, drStripOption: boolean | string | null, obj: any, config: DomRenderConfig, set?: ComponentSet): Promise<DocumentFragment|undefined> {\n // console.log('ttttttttttttttttttttt',element.innerHTML, drThis, set, obj);\n const fag = config.window.document?.createDocumentFragment();\n if(!fag) {\n return ;\n }\n const targetElement = element.cloneNode(true) as Element;\n let targetObj = obj;\n if (set) {\n targetObj = set.obj;\n set.setTemplateStyle(await RawSet.fetchTemplateStyle(set));\n const style = RawSet.generateStyleTransform(set.styles ?? [], rawSet.uuid, true);\n targetElement.innerHTML = style + (set.template ?? '');\n } else {\n targetObj = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);\n }\n\n const componentKey = rawSet.uuid;\n const renderScript = ` /*drThisCreate*/\n // console.log('-----', this.__render);\n var ${EventManager.RENDER_VARNAME} = this.__render; \n var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet; \n var ${EventManager.COMPONENT_VARNAME} = this.__render.component; \n var ${EventManager.ELEMENT_VARNAME} = this.__render.element; \n var ${EventManager.ROUTER_VARNAME} = this.__render.router; \n var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML; \n var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute; \n var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath; \n var ${EventManager.CURRENT_THIS_VARNAME} = this.__render.currentThis; \n var ${EventManager.CURRENT_THIS_PATH_VARNAME} = this.__render.currentThisPath; \n var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis; \n var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath; \n var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis; \n var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;\n `;\n\n const parentThisPath = rawSet.findParentThisPath();\n const parentThis = rawSet.findParentThis(obj);\n const nearThisPath = rawSet.findNearThisPath();\n const nearThis = rawSet.findNearThis(obj);\n // console.log('ttttttttttttttttt',parentThisPath, parentThis, nearThisPath, nearThis);\n // console.log('-element.innerHTMLelement.innerHTMLelement.innerHTML',element.innerHTML);\n let render = {\n renderScript: renderScript,\n element: element,\n getElement: () => config.window.document.querySelector(`[class*=\"${rawSet.uuid}\"]`),\n innerHTML: element.innerHTML,\n // attribute: ObjectUtils.toDeleteKey(attribute, [...Object.values(RawSet.drAttrsOriginName), ...Object.values(EventManager.VARNAMES)]),\n rawSet: rawSet,\n router: config.router,\n componentKey: componentKey,\n currentThis: targetObj,\n currentThisPath: drThis,\n parentThisPath: parentThisPath,\n parentThis: parentThis,\n nearThisPath: nearThisPath,\n nearThis: nearThis,\n scripts: EventManager.setBindProperty(config.scripts ?? {}, obj)\n } as Render;\n // const attribute = DomUtils.getAttributeToObject(element);\n render.attribute = RawSet.getAttributeObject(element, {script: renderScript, obj: obj, renderData: render})\n render = Object.freeze(render);\n\n // dr-on-create data onCreateRender\n const onCreateDataScript = `return {rootParent: this, render: this.__render}`;\n const onCreateDataParam = ScriptUtils.evaluate<OnCreateRenderDataParams>(onCreateDataScript, Object.assign(obj, {__render: render}));\n if (isOnCreateRenderData(targetObj)) {\n targetObj?.onCreateRenderData(onCreateDataParam as OnCreateRenderDataParams);\n }\n // \uBD80\uBAA8\uC5D0\uAC8C\uB3C4 \uC790\uC2DD this \uC0DD\uC131\uB41C\uAC70 \uC54C\uB824\uC8FC\uB294 callback\n if (onCreateDataParam?.render?.parentThis && isOnCreatedThisChild(onCreateDataParam?.render?.parentThis)) {\n onCreateDataParam.render.parentThis.onCreatedThisChild(targetObj, onCreateDataParam as OnCreateRenderDataParams);\n }\n\n\n // dr-on-create onCreateRender\n const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n let createParam: any[] = [];\n if (onCreate) {\n createParam = ScriptUtils.evaluateReturn<any[]>({bodyScript:renderScript, returnScript:ObjectUtils.Path.toOptionalChainPath(onCreate)}, obj)\n if (!Array.isArray(createParam)) {\n createParam = [createParam];\n }\n }\n\n if (isOnCreateRender(targetObj)) {\n targetObj.onCreateRender(...createParam);\n }\n\n // console.log('\uB9E4\uBC88\uD0C0\uB098?');\n // \uC911\uC694 dr-normal-attr-map\n // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n const targetAttrObject = RawSet.getAttributeObject(element, {script: renderScript, obj: obj, renderData: render});\n if (targetAttrObject) {\n rawSet.dataSet.render ??= {};\n rawSet.dataSet.render.attribute = targetAttrObject;\n Object.entries(targetAttrObject).forEach(([key, cval], index) => {\n // console.log('ooooooooooooooooo', key, cval);\n // const script = `${renderScript} return ${value} `;\n // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // // element.setAttribute(key, cval);\n if (isOnChangeAttrRender(targetObj)) {\n targetObj.onChangeAttrRender(key, cval, {rawSet: rawSet});\n }\n });\n }\n\n\n // dr-on-component-init\n // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init\n const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init\n // console.log('--------drThisCreate!!!', oninit)\n if (oninit) {\n const script = `${renderScript} ${oninit} `;\n ScriptUtils.evaluate(script, Object.assign(obj, {__render: render}));\n }\n\n targetElement.querySelectorAll(EventManager.attrNames.map(it => `[${it}]`).join(',')).forEach(it => {\n it.setAttribute(EventManager.ownerVariablePathAttrName, 'this');\n });\n\n // console.log('targetElement',targetElement);\n // attribute\n // const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';\n const componentNameReplaceKey = RandomUtils.uuid();\n // if (componentName) {\n // RawSet.replaceInnerHTML(element, {asIs: `#${componentName}#`, toBe: 'this'})\n // }\n // const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n // const innerHTMLNameReplaceKey = RandomUtils.uuid();\n // if (innerHTMLName) {\n // RawSet.replaceInnerHTML(element, {asIs: `#${innerHTMLName}#`, toBe: innerHTMLNameReplaceKey})\n // }\n // \uC774\uAC78 \uC65C \uBE90\uC5C8\uC9C0... \uB2E4\uC2DC\uB123\uC5C8\uC74C \uADF8\uB7F0\uB370 \uC870\uAE08 \uB85C\uC9C1\uC774.. \uAC80\uC99D\uC774..\n const innerHTMLName = targetElement.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n if (innerHTMLName) {\n RawSet.replaceInnerHTML(targetElement, {asIs: `#${innerHTMLName}#`, toBe: element.innerHTML})\n }\n\n // console.log('aa-asIs', targetElement.innerHTML);\n const optionThisName = targetElement.getAttribute(RawSet.DR_THIS_NAME_OPTIONNAME);\n // console.log('11111111111111', optionThisName)\n targetElement.getAttributeNames().forEach(it => targetElement.setAttribute(it, targetElement.getAttribute(it)!.replace(/#this#/g, drThis)));\n const thisRandom = this.drThisEncoding(targetElement, drThis, {asIs: /@this@/g});\n // console.log('@@@@@@@@@@@@@0', targetElement.innerHTML);\n // let thisNameRandom: string | undefined = undefined;\n if (optionThisName) {\n // console.log('-----0', element.innerHTML, '\\n', targetElement.innerHTML)\n targetElement.innerHTML = targetElement.innerHTML.replaceAll(`@${optionThisName}@`, drThis);\n // console.log('-----1', element.innerHTML, '\\n', targetElement.innerHTML)\n // thisNameRandom = this.drThisBindEncoding(targetElement, new RegExp(`@${optionThisName}@`, 'g'), {config: config, otherReplaceVariablePath: drThis});\n }\n const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {config: config, otherReplaceVariablePath: rawSet.findNearThisPath()});\n const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, {config: config, otherReplaceVariablePath: rawSet.findParentThisPath()});\n // console.log('@@@@@@@@@@@@@1', targetElement.innerHTML, rawSet.findParentThisPath());\n // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start, rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement);\n // if (rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement) {\n // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start.getAttribute('this-path'));\n // }\n // console.log('@@@@@@@@@@@@@2', targetElement.innerHTML);\n // const nearThisRandom = this.drThisEncoding(targetElement, rawSet.findNearThisPath(), {asIs: /@nearThis@/g});\n // const parentThisRandom = this.drThisEncoding(targetElement, rawSet.findParentThisPath(), {asIs: /@parentThis@/g});\n // console.log('aa-toBe', targetElement.innerHTML);\n // console.log('------', rawSet.findNearThisPath());\n // console.log('------', rawSet.findParentThisPath());\n const vars = this.drVarEncoding(targetElement, drVarOption);\n this.drVarDecoding(targetElement, vars);\n this.drThisDecoding(targetElement, {asIs: thisRandom, toBe: '@this@'});\n // if (optionThisName && thisNameRandom)\n // this.drThisBindDecoding(targetElement, {config: config, asIs: thisNameRandom, toBe: `@${optionThisName}@`});\n this.drThisBindDecoding(targetElement, {config: config, asIs: nearThisRandom, toBe: '@nearThis@'});\n this.drThisBindDecoding(targetElement, {config: config, asIs: parentThisRandom, toBe: '@parentThis@'});\n // if (componentName) {\n // RawSet.replaceInnerHTML(element, {asIs: componentNameReplaceKey, toBe: `#${componentName}#`})\n // }\n // if (innerHTMLName) {\n // RawSet.replaceInnerHTML(targetElement, {asIs: innerHTMLNameReplaceKey, toBe: `#${innerHTMLName}#`})\n // }\n // console.log('ddddddddddddd', targetElement.innerHTML);\n if (drStripOption && (drStripOption === true || drStripOption === 'true')) {\n // console.log('------childNodes', Array.from(n.childNodes))\n Array.from(targetElement.childNodes).forEach(it => fag.append(it));\n } else {\n targetElement.classList.add(`${rawSet.uuid}`)\n fag.append(targetElement);\n }\n // (fag as any).__domrender_this_variable_name = drThis;\n // console.log('set __domrender_this_variable_name', (fag as any).__domrender_this_variable_name)\n return fag;\n }\n\n private static async fetchTemplateStyle(set: { template?: string, styles?: string | (string[]) }) {\n // const id = RandomUtils.getRandomString(20);\n const stylePromises: Promise<string>[] = [];\n const templatePromise = (set.template && set.template.startsWith('lazy://') ? (await fetch(set.template.substring(6))).text() : Promise.resolve(set.template));\n if (Array.isArray(set.styles)) {\n for (let i = 0; set.styles && i < (set.styles.length ?? 0); i++) {\n const it = set.styles[i];\n stylePromises.push(it.startsWith('lazy://') ? (await fetch(it.substring(6))).text() : Promise.resolve(it));\n }\n } else if (set.styles) {\n stylePromises.push(Promise.resolve(set.styles));\n }\n // const tempTemplate = config.window.document.createElement('template');\n // tempTemplate.innerHTML = await templatePromise;\n // const tempContainer = config.window.document.createElement('div');\n return {\n template: await templatePromise,\n styles: await Promise.all(stylePromises)\n };\n }\n\n public static createComponentTargetAttribute(name: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment) {\n const targetAttribute: TargetAttr = {\n name,\n callBack(element: Element, attrValue: string, obj: any, rawSet: RawSet): DocumentFragment {\n const thisObj = getThisObj(element, attrValue, obj, rawSet);\n const data = factory(element, attrValue, obj, rawSet);\n // rawSet.point.thisVariableName = (data as any).__domrender_this_variable_name;\n if (thisObj) {\n // const i = thisObj.__domrender_component_new = (thisObj.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;\n // i.thisVariableName = rawSet.point.thisVariableName;\n // i.rawSet = rawSet;\n // i.innerHTML = element.innerHTML;\n // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());\n // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());\n }\n return data;\n }\n\n };\n return targetAttribute;\n }\n\n public static createComponentTargetElement(\n {name, objFactory, template = '', styles = [], noStrip}: {\n name: string,\n noStrip?: boolean;\n objFactory: (element: Element, obj: any, rawSet: RawSet, counstructorParam: any[]) => any,\n template?: string,\n styles?: string | (string[])\n }\n ): TargetElement {\n\n const targetElement: TargetElement = {\n name,\n styles,\n template,\n noStrip,\n async callBack(element: Element, obj: any, rawSet: RawSet, attrs: Attrs, config: DomRenderConfig): Promise<DocumentFragment | undefined> {\n const templateStyle = await RawSet.fetchTemplateStyle({template: this.template, styles: this.styles});\n this.template = templateStyle.template;\n this.styles = templateStyle.styles;\n obj.__domrender_components ??= {};\n const domrenderComponents = obj.__domrender_components;\n // debugger;\n const renderScript = ` /*createComponentTargetElement*/\n // console.log('-------------------',this.__render);\n var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet; \n var ${EventManager.COMPONENT_VARNAME} = this.__render.component; \n var ${EventManager.ELEMENT_VARNAME} = this.__render.element; \n var ${EventManager.ROUTER_VARNAME} = this.__render.router; \n var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML; \n var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute; \n var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath; \n var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis; \n var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath; \n var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis; \n var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;\n `;\n const parentThisPath = rawSet.findParentThisPath();\n const parentThis = rawSet.findParentThis(obj);\n const nearThisPath = rawSet.findNearThisPath();\n const nearThis = rawSet.findNearThis(obj);\n let render = {\n renderScript,\n element: element,\n innerHTML: element.innerHTML,\n // attribute: attribute,\n getElement: () => config.window.document.querySelector(`[class*=\"${rawSet.uuid}\"]`),\n rawSet: rawSet,\n router: config.router,\n componentKey: rawSet.uuid,\n nearThisPath: nearThisPath,\n nearThis: nearThis,\n parentThisPath: parentThisPath,\n parentThis: parentThis,\n scripts: EventManager.setBindProperty(config.scripts ?? {}, obj)\n } as Render;\n const constructor = element.getAttribute(RawSet.DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME);\n let constructorParam = [];\n // script \uBD80\uBD84\uC740 \uCC98\uB9AC\uB418\uC5B4 \uBC14\uC778\uB529 \uC2DC\uCF1C\uC900\uB2E4\n render.attribute = RawSet.getAttributeObject(element, {script: renderScript, obj: obj, renderData: render})\n render = Object.freeze(render);\n //\n // // dr-constructor\n if (constructor) {\n let param = ScriptUtils.evaluateReturn({bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor)}, Object.assign(obj, {__render: render})) ?? [];\n if (!Array.isArray(param)) {\n param = [param];\n }\n constructorParam = param;\n }\n\n\n // // console.log('------22', attrs);\n const instance = domrenderComponents[rawSet.uuid] = objFactory(element, obj, rawSet, constructorParam);\n render = {\n currentThis: instance,\n // creatorMetaData: i,\n ...render\n };\n rawSet.dataSet.render = render;\n // \uCD94\uC801 \uBC0F destroy \uC704\uD574.\n instance.__rawSet = rawSet;\n\n //\n // const i = instance.__domrender_component_new = (instance.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;\n // i.thisVariableName = rawSet.point.thisVariableName;\n // i.thisFullVariableName = `this.__domrender_components.${componentKey}`;\n // i.componentKey = componentKey;\n // i.rawSet = rawSet;\n // i.attribute = attribute;\n // i.router = config.router;\n // i.scripts = render.scripts;\n // i.drAttrs = attrs;\n // i.innerHTML = element.innerHTML;\n // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());\n // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());\n // this.__creatorMetaData = i;\n // render = {\n // component: instance,\n // creatorMetaData: i,\n // ...render\n // };\n //\n // // \uC911\uC694 dr-normal-attr-map\n // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n // if (isOnChangeAttrRender(instance) && normalAttrMap) {\n // new Map<string, string>(JSON.parse(normalAttrMap)).forEach((value, key) => {\n // const script = `${renderScript} return ${value} `;\n // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // // element.setAttribute(key, cval);\n // instance.onChangeAttrRender(key, cval);\n // });\n // }\n //\n // // dr-on-create data\n // const onCreateDataScript = `return {rootParent: this, render: this.__render}`;\n // const onCreateDataParam = ScriptUtils.eval(onCreateDataScript, Object.assign(obj, { __render: render }));\n // if (isOnCreateRenderData(instance)) {\n // instance?.onCreateRenderData(onCreateDataParam);\n // }\n //\n // // dr-on-create onCreateRender\n // const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n // this.__render = render;\n // let createParam = [];\n // if (onCreate) {\n // const script = `${renderScript} return ${onCreate} `;\n // createParam = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // if (!Array.isArray(createParam)) {\n // createParam = [createParam];\n // }\n // }\n // if (isOnCreateRender(instance)) {\n // instance?.onCreateRender?.(...createParam);\n // }\n let applayTemplate = element.innerHTML;\n let innerHTMLThisRandom;\n const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';\n const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n if (applayTemplate) {\n // if (rawSet.point.thisVariableName) {\n // \uB118\uC5B4\uC628 innerHTML\uC5D0 this\uAC00 \uC788\uC73C\uBA74 \uD574\uB2F9\uC548\uB418\uAC8C \uC6B0\uC120 \uCE58\uD658.\n innerHTMLThisRandom = RandomUtils.uuid();\n applayTemplate = applayTemplate.replace(/this\\./g, innerHTMLThisRandom);\n // }\n applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, 'g'), 'this');\n }\n // applayTemplate = template.replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n applayTemplate = (this.template ?? '').replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n // dr-on-component-init\n // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init\n // const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init\n // if (oninit) {\n // const script = `${renderScript} ${oninit} `;\n // ScriptUtils.eval(script, Object.assign(obj, {\n // __render: render\n // }));\n // }\n\n const style = RawSet.generateStyleTransform(this.styles, rawSet.uuid, true);\n element.innerHTML = style + (applayTemplate ?? '');\n\n // \uC5EC\uAE30\uC11C targetElement\uC758 \uC637\uC744 \uBC97\uAE34\uB2E4.\n // console.log('---createComponentTargetElement', element);\n let data = await RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${rawSet.uuid}`, '', !noStrip, obj, config);\n // const tempDiv = document.createElement(\"div\");\n // tempDiv.appendChild(data.cloneNode(true)); // \uC6D0\uBCF8 \uBCF4\uC874\n // console.log('-------------ddddddddddddd', element.innerHTML, tempDiv.innerHTML);\n // let data = await RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${componentKey}`, '', false, obj, config);\n\n // \uB118\uC5B4\uC628 innerHTML\uC5D0 this\uAC00 \uC788\uB294\uAC78 \uB2E4\uC2DC \uBCF5\uD638\uD654\uD574\uC11C \uC81C\uB300\uB85C \uC791\uB3D9\uD558\uB3C4\uB85D\uD55C\uB2E4. \uBD80\uBAA8\uC5D0\uC11C\uC758 this\uBA74 \uBD80\uBAA8\uAEC4\uB85C \uC791\uB3D9\uB418\uAC8C\n if (data && innerHTMLThisRandom) {\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n template.content.append(data);\n template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');\n data = template.content;\n }\n // (data as any).render = render;\n return data;\n }\n // complete\n };\n return targetElement;\n }\n\n public static isExpression(data: string | null) {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return reg.test(data ?? '');\n }\n\n public static expressionGroups(data: string | null) {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return StringUtils.regexExec(reg, data ?? '');\n }\n\n public static destroy(obj: any | undefined, parameter: OnDestroyRenderParams, config: DomRenderConfig, destroyOptions: (DestroyOptionType | string)[] = []): void {\n // console.log('destroy destroydestroydestroydestroy', obj, parameter, config, destroyOptions);\n if (!destroyOptions.some(it => it === DestroyOptionType.NO_DESTROY)) {\n if (!destroyOptions.some(it => it === DestroyOptionType.NO_MESSENGER_DESTROY)) {\n if (config.messenger && obj) {\n config.messenger.deleteChannelFromObj(obj);\n }\n }\n // console.log('------------destroy', obj);\n if (isOnDestroyRender(obj)) {\n obj.onDestroyRender?.(parameter);\n }\n }\n }\n\n\n public findNearThis = (obj: any, rawSet: RawSet = this) => {\n const path = this.findNearThisPath(rawSet);\n if (path) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);\n // console.log('ppppp-', path, optionalPath)\n return ScriptUtils.evaluateReturn(optionalPath, obj);\n }\n };\n\n public findParentThis = (obj: any, rawSet: RawSet = this) => {\n const path = this.findParentThisPath(rawSet);\n if (path) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);\n return ScriptUtils.evaluateReturn(optionalPath, obj);\n }\n };\n\n public findNearThisPath = (rawSet: RawSet = this): string | undefined => {\n const paths = this.findThisPaths(rawSet);\n return paths[paths.length - 1];\n };\n\n public findParentThisPath = (rawSet: RawSet = this): string | undefined => {\n const paths = this.findThisPaths(rawSet);\n return paths[paths.length - 2];\n };\n\n public findThisPaths = (rawSet: RawSet = this): string[] => {\n const paths: string[] = [];\n const findPath = (rawSet: RawSet) => {\n if (rawSet && rawSet.point) {\n // jsDom\uC5D0\uC11C instranceof HTMLMetaElement\uAC00 \uC548\uBA39\uD788\uB294\uAC83\uAC19\uC544? \uAC04\uD608\uC801\uC73C\uB85C?\n if ('getAttribute' in rawSet.point.start && rawSet.point.start.getAttribute('this-path')) {\n paths.push(rawSet.point.start.getAttribute('this-path')!);\n }\n if (rawSet.point.parentRawSet)\n findPath(rawSet.point.parentRawSet);\n }\n };\n findPath(rawSet);\n paths.push('this');\n return paths.reverse();\n };\n\n public static getAttributeObject(element: Element, config: { script: string, obj: any, renderData?: any }) {\n if (!element) {\n return undefined;\n }\n const attribute = ElementUtils.getAttributeToObject(element);\n const normalAttribute = attribute[EventManager.normalAttrMapAttrName];\n if (normalAttribute) {\n new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {\n const cval = ScriptUtils.evaluateReturn({bodyScript: config.script, returnScript: v}, Object.assign(config.obj, config.renderData ? {__render:config.renderData} : undefined));\n attribute[k] = cval;\n });\n }\n return attribute;\n }\n\n}\n", "import { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { Range } from '../iterators/Range';\nimport { DomRenderFinalProxy } from '../types/Types';\nimport { getDomRenderConfig } from '../DomRenderProxy';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\ntype HandlerInfo = {\n element: HTMLElement;\n attr: string;\n type: 'link' | 'event' | 'event-param';\n priority: number;\n property?: string; // for link type\n};\n\nexport class EventManager {\n public static readonly attrPrefix = 'dr-';\n public readonly eventNames = [\n 'click', 'mousedown', 'mouseup', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'contextmenu',\n 'keyup', 'keydown', 'keypress', 'toggle',\n 'change', 'input', 'submit', 'resize', 'focus', 'blur',\n 'close', 'cancel'\n ];\n\n private readonly delegatableEventMap: { [key: string]: string } = {\n mouseleave: 'mouseout',\n mouseenter: 'mouseover',\n focus: 'focusin',\n blur: 'focusout',\n };\n private readonly directAttachEvents = new Set(['close']);\n\n public static ownerVariablePathAttrName = EventManager.attrPrefix + 'owner-variable-path';\n\n public static readonly eventParam = EventManager.attrPrefix + 'event';\n public static readonly onInitAttrName = EventManager.attrPrefix + 'on-init';\n public static readonly valueAttrName = EventManager.attrPrefix + 'value';\n public static readonly checkedAttrName = EventManager.attrPrefix + 'checked';\n public static readonly selectedAttrName = EventManager.attrPrefix + 'selected';\n public static readonly readonlyAttrName = EventManager.attrPrefix + 'readonly';\n public static readonly disabledAttrName = EventManager.attrPrefix + 'disabled';\n public static readonly hiddenAttrName = EventManager.attrPrefix + 'hidden';\n public static readonly requiredAttrName = EventManager.attrPrefix + 'required';\n public static readonly openAttrName = EventManager.attrPrefix + 'open';\n\n // link\uB294 \uC4F0\uC9C0 \uC54A\uB294\uAC78 \uCD94\uCC9C\uD55C\uB2E4 \uB77C\uC774\uD504 \uC0AC\uC774\uD074 \uAF2C\uC778\uB2E4 \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0\uC11C\uB3C4 \uC591\uBC29\uD5A5\uC740 \uC9C0\uC591 \uD55C\uB2E4\n public static linkAttrs = [\n {name: EventManager.attrPrefix + 'value-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'hidden-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'required-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'checked-link', property: 'checked', event: 'change'},\n {name: EventManager.attrPrefix + 'open-link', property: 'open', event: 'toggle'},\n ]\n // @ts-ignore \uD569\uC131\uC774\uBCA4\uD2B8(Synthetic) \uCC98\uB9AC\uD558\uBA74\uC11C \uC758\uBBF8\uAC00 \uC5C6\uC5B4\uC84C\uB2E4\n public static readonly linkTargetMapAttrName = EventManager.attrPrefix + 'link-variables';\n\n public static readonly onRenderedInitAttrName = EventManager.attrPrefix + 'on-rendered-init';\n\n public static readonly attrAttrName = EventManager.attrPrefix + 'attr';\n public static readonly normalAttrMapAttrName = EventManager.attrPrefix + 'normal-attr-map';\n public static readonly styleAttrName = EventManager.attrPrefix + 'style';\n public static readonly classAttrName = EventManager.attrPrefix + 'class';\n\n public static readonly VALUE_VARNAME = '$value';\n public static readonly SCRIPTS_VARNAME = '$scripts';\n public static readonly FAG_VARNAME = '$fag';\n public static readonly RAWSET_VARNAME = '$rawSet';\n public static readonly RENDER_VARNAME = '$render';\n public static readonly NEAR_THIS_VARNAME = '$nearThis';\n public static readonly PARENT_THIS_VARNAME = '$parentThis';\n public static readonly ROOT_OBJECT_VARNAME = '$rootObject';\n public static readonly SCRIPT_UTILS_VARNAME = '$scriptUtils';\n public static readonly RANGE_VARNAME = '$range';\n public static readonly ROUTER_VARNAME = '$router';\n public static readonly INNER_HTML_VARNAME = '$innerHTML';\n public static readonly ELEMENT_VARNAME = '$element';\n public static readonly TARGET_VARNAME = '$target';\n public static readonly EVENT_VARNAME = '$event';\n public static readonly COMPONENT_VARNAME = '$component';\n public static readonly INNERHTML_VARNAME = '$innerHTML';\n public static readonly ATTRIBUTE_VARNAME = '$attribute';\n public static readonly CREATOR_META_DATA_VARNAME = '$creatorMetaData';\n public static readonly PARENT_THIS_PATH_VARNAME = '$parentPath';\n public static readonly CURRENT_THIS_VARNAME = '$currentThis';\n public static readonly CURRENT_THIS_PATH_VARNAME = '$currentThisPath';\n public static readonly NEAR_THIS_PATH_VARNAME = '$nearThisPath';\n public static readonly VARNAMES = [EventManager.SCRIPTS_VARNAME, EventManager.FAG_VARNAME, EventManager.RAWSET_VARNAME, EventManager.RANGE_VARNAME, EventManager.ROUTER_VARNAME, EventManager.ELEMENT_VARNAME, EventManager.TARGET_VARNAME, EventManager.EVENT_VARNAME, EventManager.COMPONENT_VARNAME, EventManager.INNERHTML_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.CREATOR_META_DATA_VARNAME, EventManager.PARENT_THIS_PATH_VARNAME, EventManager.PARENT_THIS_VARNAME];\n\n public static readonly WINDOW_EVENT_POPSTATE = 'popstate';\n public static readonly WINDOW_EVENT_RESIZE = 'resize';\n public static readonly WINDOW_EVENTS = [EventManager.WINDOW_EVENT_POPSTATE, EventManager.WINDOW_EVENT_RESIZE];\n public static readonly attrNames = [\n EventManager.valueAttrName,\n EventManager.checkedAttrName,\n EventManager.selectedAttrName,\n EventManager.readonlyAttrName,\n EventManager.disabledAttrName,\n EventManager.hiddenAttrName,\n EventManager.requiredAttrName,\n EventManager.openAttrName,\n EventManager.attrAttrName,\n EventManager.normalAttrMapAttrName,\n EventManager.styleAttrName,\n EventManager.classAttrName,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_POPSTATE,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_RESIZE,\n EventManager.onInitAttrName,\n ...EventManager.linkAttrs.map(it => it.name),\n this.eventParam\n ];\n readonly bindScript = `\n const ${EventManager.VALUE_VARNAME} = this.__render.value;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.COMPONENT_VARNAME} = this.__render.element.component;\n const ${EventManager.TARGET_VARNAME} = this.__render.target;\n const ${EventManager.EVENT_VARNAME} = this.__render.event;\n `;\n\n constructor(private window: Window) {\n this.eventNames.forEach(it => {\n EventManager.attrNames.push(EventManager.attrPrefix + 'event-' + it);\n });\n EventManager.attrNames.push(EventManager.onRenderedInitAttrName);\n\n if (typeof window !== 'undefined') {\n EventManager.WINDOW_EVENTS.forEach(eventName => {\n window?.addEventListener(eventName, (event) => {\n const targetAttr = `dr-window-event-${eventName}`;\n document.querySelectorAll(`[${targetAttr}]`).forEach(it => {\n const script = it.getAttribute(targetAttr);\n if (script) {\n const obj = this.findComponentInstance(it as HTMLElement);\n const config = getDomRenderConfig(obj);\n ScriptUtils.evaluate(`${this.bindScript} ${script} `, this.createExecutionContext(event, it as HTMLElement, obj, config));\n }\n });\n });\n });\n\n const rootElement = this.window.document;\n const listeningEvents = new Set<string>();\n this.eventNames.forEach(eventName => {\n if (this.directAttachEvents.has(eventName)) {\n return;\n }\n const delegatedEventName = this.delegatableEventMap[eventName] || eventName;\n\n if (listeningEvents.has(delegatedEventName)) {\n return;\n }\n listeningEvents.add(delegatedEventName);\n rootElement.addEventListener(delegatedEventName, this.handleEvent.bind(this), true);\n });\n }\n }\n\n private handleEvent(event: Event) {\n const handlers = this.collectHandlers(event);\n // console.log('handlers', handlers, event);\n for (const handler of handlers) {\n if (event.cancelBubble) {\n break;\n }\n\n const componentInstance = this.findComponentInstance(handler.element);\n if (!componentInstance) {\n continue;\n }\n // console.log('executeHandler', event,handler,componentInstance)\n this.executeHandler(event, handler, componentInstance);\n }\n }\n\n private collectHandlers(event: Event): HandlerInfo[] {\n const handlers: HandlerInfo[] = [];\n const root = this.window.document;\n if (!root) return handlers;\n\n const initialTarget = event.target as Node;\n let currentTarget: HTMLElement | null = (initialTarget.nodeType === 1)\n ? (initialTarget as HTMLElement)\n : initialTarget.parentElement;\n const collectedElements = new Set<HTMLElement>();\n\n const eventMap: { [key: string]: string } = {\n mouseout: 'mouseleave',\n mouseover: 'mouseenter',\n focusout: 'blur',\n focusin: 'focus'\n };\n const mappedEventName = eventMap[event.type] || event.type;\n\n while (currentTarget) {\n if (collectedElements.has(currentTarget)) {\n break;\n }\n\n // Priority 1: Link attributes\n const matchingLinkAttr = EventManager.linkAttrs.find(la => la.event === mappedEventName && currentTarget?.hasAttribute(la.name));\n if (matchingLinkAttr) {\n handlers.push({\n element: currentTarget,\n attr: matchingLinkAttr.name,\n type: 'link',\n priority: 1,\n property: matchingLinkAttr.property\n });\n }\n\n // Priority 2: dr-event-* attributes\n const eventAttr = `${EventManager.attrPrefix}event-${mappedEventName}`;\n if (currentTarget.hasAttribute(eventAttr)) {\n handlers.push({\n element: currentTarget,\n attr: eventAttr,\n type: 'event',\n priority: 2\n });\n }\n\n // Priority 3: dr-event with params\n const eventParamAttr = EventManager.eventParam;\n if (currentTarget.hasAttribute(eventParamAttr)) {\n const bindEvents = currentTarget.getAttribute(`${eventParamAttr}:bind`);\n if (bindEvents && bindEvents.split(',').map(s => s.trim()).includes(mappedEventName)) {\n handlers.push({\n element: currentTarget,\n attr: eventParamAttr,\n type: 'event-param',\n priority: 3\n });\n }\n }\n\n collectedElements.add(currentTarget);\n\n if (currentTarget === root.documentElement) {\n break;\n }\n\n currentTarget = currentTarget.parentElement;\n }\n\n return handlers.sort((a, b) => a.priority - b.priority);\n }\n\n private findComponentInstance(element: HTMLElement | null): any {\n let current = element;\n const root = this.window.document;\n while (current) {\n if ((current as any).obj) {\n return (current as any).obj;\n }\n if (current === root.documentElement) {\n break;\n }\n current = current.parentElement;\n }\n return this.window;\n }\n\n private createExecutionContext(event: Event, element: HTMLElement, componentInstance: any, config: DomRenderConfig | undefined, extraVars = {}) {\n // console.log('---------->', config?.eventVariables)\n return Object.assign(componentInstance, {\n __render: Object.freeze({\n event,\n element,\n target: event.target,\n attribute: ElementUtils.getAttributeToObject(element),\n router: config?.router,\n range: Range.range,\n scripts: EventManager.setBindProperty(config?.scripts, componentInstance),\n ...config?.eventVariables,\n ...extraVars\n })\n });\n }\n\n private executeHandler(event: Event, handler: HandlerInfo, componentInstance: any) {\n const {element, type, attr} = handler;\n const config = getDomRenderConfig(componentInstance);\n\n switch (type) {\n case 'link':\n const varName = element.getAttribute(attr);\n if (!varName || !handler.property) return;\n\n if (attr.includes('leave') || attr.includes('enter') || attr.includes('focus') || attr.includes('blur')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const ownerVariablePath = element.getAttribute(EventManager.ownerVariablePathAttrName);\n let bindObj = componentInstance;\n if (ownerVariablePath) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePath, componentInstance);\n }\n\n const mapScript = element.getAttribute(`${attr}:map`);\n let value = (element as any)[handler.property];\n\n if (mapScript) {\n const context = this.createExecutionContext(event, element, bindObj, config, {value});\n value = ScriptUtils.evaluate(`return ${mapScript}`, context);\n }\n\n if (typeof this.getValue(componentInstance, varName, bindObj) === 'function') {\n this.getValue(componentInstance, varName, bindObj)(value, event);\n } else {\n this.setValue(componentInstance, varName, value);\n }\n break;\n\n case 'event':\n const script = element.getAttribute(attr);\n if (!script) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // if (filterScript) {\n // filter = ScriptUtils.eval<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n // }\n\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // const hasDispatch = element.hasAttribute(`${attr}:dispatch`);\n // if (hasDispatch) {\n // element.dispatchEvent(new Event(event.type));\n // }\n break;\n\n case 'event-param':\n const paramScript = element.getAttribute(attr);\n if (!paramScript) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const attributes = ElementUtils.getAttributeToObject(element);\n const params = {} as any;\n const prefix = attr + ':';\n Object.entries(attributes).filter(([k, v]) => k.startsWith(prefix)).forEach(([k, v]) => {\n params[k.slice(prefix.length)] = v;\n });\n\n const paramContext = this.createExecutionContext(event, element, componentInstance, config, {params});\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${paramScript}`, paramContext);\n break;\n }\n }\n\n public findAttrElements(fragment: DocumentFragment | Element, config?: DomRenderConfig): Set<Element> {\n const elements = new Set<Element>();\n const addAttributes = config?.applyEvents?.map(it => it.attrName) ?? [];\n addAttributes.concat([...EventManager.attrNames]).forEach(attrName => {\n fragment?.querySelectorAll(`[${attrName}]`).forEach(it => {\n elements.add(it);\n });\n });\n return elements;\n }\n\n public applyEvent(obj: any, childNodes: Set<ChildNode> | Set<Element>, config?: DomRenderConfig) {\n childNodes.forEach(node => {\n if (node.nodeType === 1) {\n (node as any).obj = obj;\n }\n });\n\n this.procAttr<HTMLInputElement>(childNodes, EventManager.valueAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.value !== data) {\n it.value = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.checkedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.checked!== data) {\n it.checked = data;\n }\n }\n });\n this.procAttr<HTMLOptionElement>(childNodes, EventManager.selectedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.selected!== data) {\n it.selected = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.readonlyAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.readOnly!== data) {\n it.readOnly = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.disabledAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.disabled!== data) {\n it.disabled = data;\n }\n }\n });\n this.procAttr<HTMLElement>(childNodes, EventManager.hiddenAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.hidden!== data) {\n it.hidden = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.requiredAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.required!== data) {\n it.required = data;\n }\n }\n });\n this.procAttr<HTMLDialogElement>(childNodes, EventManager.openAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.open!== data) {\n it.open = data;\n }\n }\n });\n\n this.procAttr(childNodes, EventManager.normalAttrMapAttrName, (it, attribute) => {\n const map = new Map<string, string>(JSON.parse(attribute));\n map.forEach((v, k) => {\n const data = ScriptUtils.evaluate(`const $element = this.element; return ${v} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (data === null) {\n it.removeAttribute(k);\n } else {\n it.setAttribute(k, data);\n }\n });\n });\n\n EventManager.WINDOW_EVENTS.forEach(it => {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.attrPrefix + 'window-event-' + it, (it, attribute) => {\n (it as any).obj = obj;\n });\n });\n\n EventManager.linkAttrs.forEach(linkInfo => {\n this.procAttr<HTMLElement>(childNodes, linkInfo.name, (it, varName) => {\n\n // console.log('ink??????????')\n if (varName) {\n const ownerVariablePathName = it.getAttribute(EventManager.ownerVariablePathAttrName);\n const mapScript = it.getAttribute(`${linkInfo.name}:map`);\n let bindObj = obj;\n if (ownerVariablePathName) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePathName, obj);\n }\n const getValue = this.getValue(obj, varName, bindObj);\n if (typeof getValue === 'function' && getValue) {\n let setValue = (it as any)[linkInfo.property];\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n getValue(setValue);\n } else if (getValue) {\n let setValue = getValue;\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n if (setValue === null) {\n it.removeAttribute(linkInfo.property);\n } else {\n (it as any)[linkInfo.property] = setValue;\n }\n } else if (getValue === undefined) {\n this.setValue(obj, varName, (it as any)[linkInfo.property]);\n }\n }\n });\n });\n\n this.directAttachEvents.forEach(eventName => {\n const attr = `${EventManager.attrPrefix}event-${eventName}`;\n this.procAttr<HTMLElement>(childNodes, attr, (element, script) => {\n const handler = (event: Event) => {\n const componentInstance = this.findComponentInstance(element);\n if (!componentInstance) return;\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n if (filterScript) {\n filter = ScriptUtils.evaluate<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n }\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n };\n element.addEventListener(eventName, handler);\n // TODO: Add logic to remove this listener when the element is destroyed.\n });\n });\n\n this.procAttr<HTMLElement>(childNodes, EventManager.onInitAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n\n this.onRenderedEvent(obj, childNodes, config);\n this.changeVar(obj, childNodes, undefined, config);\n const elements = Array.from(childNodes).filter(it => it.nodeType === 1).map(it => it as Element);\n elements.forEach(it => {\n config?.applyEvents?.filter(ta => it.getAttribute(ta.attrName) !== null).forEach(ta => ta.callBack(it, it.getAttribute(ta.attrName)!, obj));\n });\n }\n\n public onRenderedEvent(obj: any, childNodes: Set<ChildNode> | Set<Element> | Node[], config?: DomRenderConfig) {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.onRenderedInitAttrName, (it, attribute) => {\n if (!it.isConnected) {\n return;\n }\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n }\n\n public changeVar(obj: any, elements: Set<Element> | Set<ChildNode>, varName?: string, config?: DomRenderConfig) {\n // console.log('changeVar', obj, elements, varName)\n this.procAttr(elements, EventManager.styleAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.__render.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (typeof data === 'string') {\n it.setAttribute('style', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('style', data.join(';'));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n (it.style as any)[key] = String(value);\n }\n }\n }\n }\n });\n\n this.procAttr(elements, EventManager.classAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n\n if (typeof data === 'string') {\n it.setAttribute('class', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('class', data.join(' '));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n if (value) {\n it.classList.add(key);\n } else {\n it.classList.remove(key);\n }\n }\n }\n }\n }\n });\n }\n\n public procAttr<T extends Element = Element>(elements: Set<Element> | Set<ChildNode> | Node[] = new Set(), attrName: string, callBack: (h: T, value: string, attributes: any) => void) {\n const sets = new Set<Element>();\n elements.forEach(it => {\n if (!it) {\n return;\n }\n if (it.nodeType === 1) {\n const e = it as Element;\n sets.add(e);\n e.querySelectorAll<T>(`[${attrName}]`).forEach(it => {\n sets.add(it);\n });\n }\n });\n sets.forEach(it => {\n const attr = it.getAttribute(attrName);\n const attrs = ElementUtils.getAttributeToObject(it);\n if (attr) {\n callBack(it as T, attr, attrs);\n }\n });\n }\n\n public getValue<T = any>(obj: any, name: string, bindObj?: any): T {\n let r = ScriptUtils.evaluateReturn(name, obj);\n if (typeof r === 'function') {\n r = r.bind(bindObj ?? obj);\n }\n return r;\n }\n\n public setValue(obj: any, name: string, value?: any) {\n name = name.replaceAll('this.', 'this.this.');\n ScriptUtils.evaluate(`${name} = this.value;`, {\n this: obj,\n value: value\n });\n }\n\n public static isUsingThisVar(raws: string | null | undefined, varName: string | null | undefined): boolean {\n if (varName && raws) {\n if (varName.startsWith('this.')) {\n varName = varName.replace(/this\\./, '');\n }\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n });\n const variablePaths = ObjectUtils.Path.detectPathFromScript(raws ?? '', {excludeThis: true});\n return variablePaths.has(varName);\n }\n return false;\n }\n\n public static setBindProperty(scripts: { [p: string]: any } | undefined, obj: any): { [p: string]: any } | undefined {\n if (scripts) {\n const newScripts = Object.assign({}, scripts);\n for (const [key, value] of Object.entries(newScripts)) {\n if (typeof value === 'function') {\n newScripts[key] = value.bind(obj);\n }\n }\n return newScripts;\n }\n }\n\n getBindScript(config?: DomRenderConfig) {\n if (config?.eventVariables) {\n const bindScript = Object.entries(config.eventVariables).filter(([key, value]) => !this.bindScript.includes(`const ${key}`)).map(([key, value]) => {\n return `const ${key} = this.__render.${key};`;\n }).join(';');\n return this.bindScript + '' + bindScript;\n } else {\n return this.bindScript;\n }\n }\n}\n\n", "// within rangeResult.ts\n// @ts-ignore\nexport class RangeResult implements IteratorResult<number> {\n done: boolean;\n value: number;\n\n constructor(value: number | undefined, done: boolean) {\n this.done = done;\n this.value = value ?? 0;\n }\n}\n\nexport class RangeIterator implements Iterator<number> {\n private _first: number;\n private _current: number;\n private _last: number\n private _step: number\n constructor(first: number, last: number, step: number) {\n this._current = this._first = first;\n this._last = last;\n this._step = step;\n }\n\n next(value?: any): IteratorResult<number> {\n let r: RangeResult;\n if (this._first < this._last && this._current < this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step\n } else if (this._first < this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step\n } else if (this._first > this._last && this._current > this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else if (this._first > this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else if (this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else {\n r = new RangeResult(undefined, true);\n }\n return r;\n }\n}\n\nexport class Range implements Iterable<number> {\n public readonly isRange = true;\n\n constructor(public first: number, public last: number, public step: number = 1) {\n }\n\n [Symbol.iterator](): Iterator<number> {\n return new RangeIterator(this.first, this.last, this.step);\n }\n\n map<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[] {\n return Array.from(this).map(callbackfn)\n }\n\n public static range(first: number | string, last?: number, step: number = 1): Range {\n if (typeof first === 'number' && last === undefined) {\n return new Range(0, first, step);\n } else if (typeof first === 'string') {\n const [_first, _last = '0'] = first.split('..');\n const [__last, _step = '1'] = _last.split(',');\n return new Range(Number(_first.trim()), Number(__last.trim()), Number(_step.trim()));\n } else {\n return new Range(first, last ?? 0, step);\n }\n }\n}\n", "import { AttrInitCallBack } from '../rawsets/AttrInitCallBack';\nimport { ElementInitCallBack } from '../rawsets/ElementInitCallBack';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { Attrs } from '../rawsets/Attrs';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ObjectUtils } from '@dooboostore/core';\n\nexport interface OperatorAround {\n beforeAttr?: (value: string | null | undefined, opratorExecutor: OperatorExecuter) => string | null | undefined,\n before?: (data: any, opratorExecutor: OperatorExecuter) => any,\n after?: (data: any, opratorExecutor: OperatorExecuter) => void,\n}\n\nexport enum ExecuteState {\n EXECUTE,\n NO_EXECUTE,\n STOP\n}\n\nexport type AfterCallBack = {\n onAttrInitCallBacks: AttrInitCallBack[],\n onElementInitCallBacks: ElementInitCallBack[],\n onThisComponentSetCallBacks: ComponentSet[]\n}\nexport type ReturnContainer = { raws: RawSet[], fag: DocumentFragment };\n\nexport type ElementSource = { element: Element, attrs: Attrs, attr?: string | null, attrName?: string | undefined };\n\nexport type Source = { config: DomRenderConfig, operatorAround?: OperatorAround, obj: any };\n\nexport abstract class OperatorExecuter<T = any> {\n constructor(public rawSet: RawSet,\n public render: Render,\n public returnContainer: ReturnContainer,\n public elementSource: ElementSource,\n public source: Source,\n public afterCallBack: AfterCallBack,\n public startingExecute = true) {\n };\n\n async start(): Promise<ExecuteState> {\n let attrValue = this.elementSource.attr;\n // console.log('OperatorExecuter ', attrValue, this);\n if (this.source.operatorAround?.beforeAttr) {\n attrValue = this.source.operatorAround.beforeAttr(attrValue, this) ?? '';\n }\n\n let r = attrValue;\n if (r && this.startingExecute) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(attrValue);\n r = ScriptUtils.evaluate(` ${this.render.bindScript}; return ${optionalPath}`, Object.assign(this.source.obj, {__render: this.render}));\n }\n if (this.source.operatorAround?.before) {\n r = this.source.operatorAround?.before(r, this);\n }\n\n const state = await this.execute(r as unknown as T)\n\n this.source.operatorAround?.after?.(r, this);\n return state;\n };\n\n abstract execute(value: T): Promise<ExecuteState>;\n}\n", "import {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\n\nexport class DrPre extends OperatorExecuter<null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack);\n }\n\n async execute(value: null): Promise<ExecuteState> {\n return (value != null) ? ExecuteState.EXECUTE : ExecuteState.NO_EXECUTE;\n }\n}\n", "import {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\n\nexport abstract class OperatorExecuterAttrRequire<T> extends OperatorExecuter<T> {\n constructor(rawSet: RawSet,\n render: Render,\n returnContainer: ReturnContainer,\n elementSource: ElementSource,\n source: Source,\n afterCallBack: AfterCallBack,\n startingExecute = true) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, startingExecute);\n };\n\n async execute(data: T): Promise<ExecuteState> {\n if (!this.elementSource.attr) {\n return ExecuteState.NO_EXECUTE;\n }\n return await this.executeAttrRequire(data);\n }\n\n protected abstract executeAttrRequire(attr: T): Promise<ExecuteState>;\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class Dr extends OperatorExecuterAttrRequire<null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack);\n }\n\n async executeAttrRequire(data: null): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const n = $element.cloneNode(true);\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt)))\n // console.log('----', n.innerHTML);\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt);\n // console.log('----', n.innerHTML);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__render.fag.append(n);\n }`, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\nimport { ObjectUtils } from '@dooboostore/core';\n\nexport class DrIf extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrIf');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v)); <-- \uC774\uBD80\uBD84\uC740 \uB2E4\uB978 attr\uC5D0\uB3C4 \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uC0DD\uAC01\uD574\uC57C\uB428 \uC5D8\uB9AC\uBA3C\uD2B8 \uC874\uC7AC\uC720\uBB34\uC5D0 \uB530\uB77C\uC11C \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uACB0\uC815\uD574\uC57C\uB428\n const keepgoing = ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n if ($rawSet.data === (${ObjectUtils.Path.toOptionalChainPath(attr)})) {\n return false;\n }\n $rawSet.data = ${ObjectUtils.Path.toOptionalChainPath(attr)};\n if($rawSet.data) {\n const n = $element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n // \uC5EC\uAE30\uAC00 ..\uC544\uC8FC \uD5DB\uAC08\uB9AC\uB294\uB370...\n Array.from(n.getAttributeNames()).forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#DrIFIt\\\\#/g, destIt)))\n n.innerHTML = n.innerHTML.replace(/\\\\#DrIFIt\\\\#/g, destIt);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''};\n return true;\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n fag: newTemp,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n // TODO: \uBB50\uC9C0?? \uC9C0\uC6CC\uC57C\uB418\uB294\uAC70 \uC544\uB2CC\uAC00?\n if (keepgoing === false) {\n return ExecuteState.STOP;\n }\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n // const bypass = (newTemp.innerHTML ?? '').trim().length <= 0;\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "export class Shield {\n [name: string]: any\n}\nexport class DomRenderFinalProxy<T extends object> implements ProxyHandler<T> {\n set(target: T, p: string | symbol, value: any, receiver: any): boolean {\n (target as any)[p] = value;\n return true;\n }\n\n get(target: T, p: string | symbol, receiver: any): any {\n return (target as any)[p];\n }\n\n public static final<T = any> (obj: T): T {\n (obj as any)._DomRender_isFinal = true;\n return obj;\n }\n\n public static isFinal<T = any> (obj: T) {\n return '_DomRender_isFinal' in (obj as any);\n }\n\n public static unFinal<T = any> (obj: T): T {\n delete (obj as any)._DomRender_isFinal;\n return obj;\n }\n\n has(target: T, p: string | symbol): boolean {\n return p === '_DomRender_isFinal' || p in target;\n }\n}\n\n", "import { DomRenderFinalProxy } from '../types/Types';\n\nexport type ComponentSetConfig = {objPath?: string | null, beforeComponentSet?: ComponentSet};\nexport class ComponentSet<T = any> {\n private _config: ComponentSetConfig;\n private _template?: string;\n private _styles?: string[] | string;\n constructor(public obj: T, source: {template?: string, styles?: (string[]) | string}, config?: ComponentSetConfig) {\n this._template = source.template;\n this._styles = source.styles;\n this._config = DomRenderFinalProxy.final(Object.assign({objPath: 'obj'} as ComponentSetConfig, config))\n }\n get template() {\n return this._template;\n }\n get styles() {\n return this._styles;\n }\n get config() {\n return this._config;\n }\n public setTemplateStyle(set: {template?: string, styles?: string | (string[])}) {\n this._template = set.template;\n this._styles = set.styles;\n }\n}\n", "export interface OnDrThisUnBind {\n onDrThisUnBind(): void;\n}\nexport const isOnDrThisUnBind = (obj: any): obj is OnDrThisUnBind => {\n return typeof obj?.onDrThisUnBind === 'function';\n}", "export interface OnDrThisBind {\n onDrThisBind(): void;\n}\nexport const isOnDrThisBind = (obj: any): obj is OnDrThisBind => {\n return typeof obj?.onDrThisBind === 'function';\n}", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { RawSet } from '../rawsets/RawSet';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { ExecuteState } from './OperatorExecuter';\nimport { isOnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport { isOnDrThisBind } from '../lifecycle/dr-this/OnDrThisBind';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { Render } from '../rawsets/Render';\n\nexport class DrThis extends OperatorExecuterAttrRequire<string> {\n async executeAttrRequire(attr: any): Promise<ExecuteState> {\n // const e = this.elementSource;\n // console.log('drThis!!!!!!!!!!!!!', this.elementSource.attrs.drDetectIfOption, this.elementSource.attrs.drIfOption);\n const optionIf = this.elementSource.attrs.drDetectIfOption ?? this.elementSource.attrs.drIfOption;\n const ok = ScriptUtils.evaluate(`\n ${this.render.bindScript}\n try {\n const ok = ${this.elementSource.attrs.drThis};\n const option = ${optionIf};\n if (option!==null) {\n return !!(ok && option); \n }\n // console.log('vv', ${this.elementSource.attrs.drThis}, ${this.elementSource.attrs.drIfOption}, '${this.elementSource.attrs.drIfOption}');\n return !!ok;\n } catch(e) {\n return false;\n }\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n ...this.render\n } as Render)\n }\n ));\n // console.log('----zxvxcv-----!!!aa!', ok);\n // if (!ok) {\n // this.elementSource.element.remove();\n // return ExecuteState.STOP;\n // }\n\n // console.log('----zxvxcv-----!!!!', attr);\n if (attr && this.elementSource.attrs.drThis && ok) {\n let thisPath = this.elementSource.attrs.drThis;\n // let optionIf = this.elementSource.attrs.drIfOption;\n // console.log('drThis!!!!!!!!!!!!!, ', optionIf)\n if (attr instanceof ComponentSet) {\n // console.log('drThis!!!!!!!!!!->', attr)\n // if (this.rawSet.data) {\n // const destroyOptions = this.elementSource.attrs.drDestroyOption?.split(',') ?? [];\n // debugger;\n // RawSet.destroy((this.rawSet.data as ComponentSet).obj, [], this.source.config, destroyOptions);\n // }\n if (attr.config?.beforeComponentSet?.obj !== attr.obj) {\n if (isOnDrThisUnBind(attr.config.beforeComponentSet?.obj)) {\n attr.config.beforeComponentSet?.obj?.onDrThisUnBind?.();\n }\n }\n // this.rawSet.dataSet ??= {};\n // this.rawSet.dataSet.data = attr;\n if (attr.config?.beforeComponentSet?.obj !== attr.obj) {\n if (isOnDrThisBind(attr.obj)) {\n attr.obj?.onDrThisBind?.();\n }\n }\n // \uC911\uC694: componentSet \uC758 objPath\uB97C \uBCF4\uACE0 \uD310\uB2E8\uD558\uB294 \uC911\uC694\uD55C\uBD80\uBD84\n thisPath = `${this.elementSource.attrs.drThis}${attr.config.objPath ? ('.' + attr.config.objPath) : ''}`;\n // const zthisPath = `${this.elementSource.attrs.drThis}${attr.config.objPath ? ('?.' + attr.config.objPath) : ''}`;\n // console.log('thisPaththisPaththisPath',thisPath)\n this.setThisPath(thisPath);\n const componentBody = await RawSet.drThisCreate(this.rawSet, this.elementSource.element, thisPath, this.elementSource.attrs.drVarOption ?? '', this.elementSource.attrs.drStripOption, this.source.obj, this.source.config, attr);\n if (componentBody) {\n this.returnContainer.fag.append(componentBody)\n this.afterCallBack.onThisComponentSetCallBacks.push(attr);\n }\n\n } else {\n this.setThisPath(thisPath);\n const fragment = await RawSet.drThisCreate(this.rawSet, this.elementSource.element, this.elementSource.attrs.drThis, this.elementSource.attrs.drVarOption ?? '', this.elementSource.attrs.drStripOption, this.source.obj, this.source.config);\n if (fragment) {\n this.returnContainer.fag.append(fragment)\n }\n }\n\n\n // console.log('!!!!!!!!!zzz', Array.from(this.returnContainer.fag.childNodes), this.elementSource.element);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n } else {\n this.elementSource.element.remove();\n }\n return ExecuteState.EXECUTE;\n }\n\n\n setThisPath(thisPath: string) {\n\n // if (this.rawSet.point.start instanceof HTMLMetaElement && this.rawSet.point.end instanceof HTMLMetaElement) {\n\n if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {\n this.rawSet.point.start.setAttribute('this-path', thisPath)\n this.rawSet.point.end.setAttribute('this-path', thisPath)\n }\n }\n}\n", "import {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Validator} from '../validators/Validator';\nimport {EventManager} from '../events/EventManager';\nimport {ValidatorArray} from '../validators/ValidatorArray';\nimport {Render} from '../rawsets/Render';\nimport {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrForm extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n RawSet.drFormOtherMoveAttr(this.elementSource.element, 'name', 'temp-name', this.source.config);\n const data = ScriptUtils.evaluateReturn(`${attr}`, this.source.obj);\n\n const childs = Array.from(this.elementSource.element.querySelectorAll('[name]'));\n\n const fromName = ScriptUtils.evaluateReturn(this.elementSource.element.getAttribute(`${RawSet.DR_FORM_NAME}:name`) ?? '', this.source.obj);\n const thisName = fromName ?? this.elementSource.element.getAttribute('name');\n // // \uC790\uAE30\uC790\uC2E0\uC774 Input \uB300\uC0C1\uC77C\uB54C\n if (childs.length <= 0 && thisName) {\n childs.push(this.elementSource.element);\n } else {\n if (data instanceof Validator) {\n data.setTarget(this.elementSource.element);\n }\n }\n childs.forEach(it => {\n const eventName = it.getAttribute(`${RawSet.DR_FORM_NAME}:event`) ?? 'change'\n const validatorName = it.getAttribute(`${RawSet.DR_FORM_NAME}:validator`);\n const attrEventName = EventManager.attrPrefix + 'event-' + eventName;\n let varpath = ScriptUtils.evaluateReturn(this.elementSource.element.getAttribute(`${RawSet.DR_FORM_NAME}:name`) ?? '', this.source.obj) ?? it.getAttribute('name');\n if (varpath != null) {\n if (validatorName) {\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const validator = typeof ${validatorName} ==='function' ? new ${validatorName}() : ${validatorName};\n ${attr}['${varpath}'] = validator;\n `,\n Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n }\n varpath = `${attr}['${varpath}']`;\n const data = ScriptUtils.evaluateReturn(`${varpath}`, this.source.obj);\n if (data instanceof ValidatorArray) {\n it.setAttribute(attrEventName, `${varpath}.setArrayValue($target, $target.value, $event); ${it.getAttribute(attrEventName) ?? ''};`);\n data.addValidator((it as any).value, it);\n } else if (data instanceof Validator) {\n // varpath += (varpath ? '.value' : 'value');\n // varpath = drAttr.drForm + '.' + varpath;\n // it.setAttribute(attrEventName, `${varpath} = $target.value; ${target}=$target; ${event}=$event;`);\n it.setAttribute(attrEventName, `${varpath}.set($target.value, $target, $event); ${it.getAttribute(attrEventName) ?? ''};`);\n data.setTarget(it);\n data.value = (it as any).value;\n } else {\n it.setAttribute(attrEventName, `${varpath} = $target.value;`);\n }\n }\n })\n RawSet.drFormOtherMoveAttr(this.elementSource.element, 'temp-name', 'name', this.source.config);\n this.returnContainer.raws.push(...RawSet.checkPointCreates(this.elementSource.element, this.source.obj, this.source.config));\n return ExecuteState.EXECUTE;\n }\n}\n", "\nexport type Valid<T = any, E = Element> = (value?: T, target?: E, event?: Event) => boolean;\nexport type ValidAction<T = any, E = Element> = (valid: boolean, value?: T, target?: E, event?: Event) => void;\n// export interface Valid<T = any, E = Element> {\n// valid(value?: T, target?: E, event?: Event): boolean;\n// }\nexport abstract class Validator<T = any, E = Element> {\n private _target?: E;\n private _event?: Event;\n private _autoValid!: boolean;\n private _autoValidAction!: boolean;\n private _validAction?: ValidAction<T, E>;\n constructor(protected _value?: T, target?: E, event?: Event, autoValid = true, autoValidAction = true) {\n this.setTarget(target);\n this.setEvent(event);\n this.setAutoValid(autoValid)\n this.setAutoValidAction(autoValidAction)\n }\n\n getValidAction(): ValidAction<T, E> | undefined {\n return this._validAction;\n }\n\n setValidAction(value: ValidAction<T, E>) {\n this._validAction = value;\n return this;\n }\n\n getAutoValid() {\n return this._autoValid;\n }\n\n setAutoValid(autoValid: boolean) {\n this._autoValid = autoValid;\n return this;\n }\n\n getAutoValidAction() {\n return this._autoValidAction;\n }\n\n setAutoValidAction(autoValid: boolean) {\n this._autoValidAction = autoValid;\n return this;\n }\n\n getEvent() {\n return this._event;\n }\n\n setEvent(event: Event | undefined) {\n if (event) {\n this._event = this.domRenderFinal(event);\n }\n return this;\n }\n\n getTarget() {\n return this._target;\n }\n\n targetFocus() {\n (this._target as any)?.focus?.();\n }\n\n targetReset() {\n (this._target as any)?.reset?.();\n }\n\n targetDispatchEvent(event: Event) {\n return (this._target as any)?.dispatchEvent(event);\n }\n\n setTarget(target: E | undefined) {\n if (target) {\n this._target = this.domRenderFinal(target);\n }\n return this;\n }\n\n private domRenderFinal(obj: any) {\n (obj as any)._DomRender_isFinal = true;\n return obj\n }\n\n get value(): T | undefined {\n if (this._value === undefined || this._value === null) {\n this._value = (this.getTarget() as any)?.value;\n }\n return this._value;\n }\n\n set value(value: T | undefined) {\n // console.log('---?set?', value, this)\n this._value = value;\n this.tickValue(value);\n }\n\n protected tickValue(value: T | undefined) {\n this.changeValue(value);\n const target = this.getTarget() as any;\n if (target && target?.value !== undefined && target?.value !== null) {\n try {\n target.value = this._value;\n } catch (e) {\n console.error('set value function is blocked ')\n }\n }\n if (this.getAutoValidAction()) {\n this.validAction();\n } else if (this.getAutoValid()) {\n this.valid();\n }\n }\n\n set(value?:T, target?: E, event?: Event) {\n this.setTarget(target);\n this.setEvent(event)\n this.value = value;\n }\n\n changeValue(value: T | undefined) {\n }\n\n get checked(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n\n set checked(checked: boolean) {\n const target = this.getTarget() as any;\n if (target) {\n target.checked = checked;\n }\n }\n\n get selectedIndex(): number {\n return (this.getTarget() as any)?.selectedIndex ?? -1;\n }\n\n set selectedIndex(selectedIndex: number) {\n const target = this.getTarget() as any;\n if (target) {\n target.selectedIndex = selectedIndex;\n }\n }\n\n public querySelector(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelector(selector);\n }\n\n public querySelectorALL(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelectorAll(selector);\n }\n\n public validAction() {\n const valid = this.valid();\n this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n return valid;\n }\n\n // public childValidAction() {\n // const valid = this.childValids();\n // this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n // return valid;\n // }\n\n public abstract valid(): boolean;\n\n public inValid(): boolean {\n return !this.valid();\n };\n\n public allValid() {\n return this.valid() && this.childInValid();\n }\n\n public allValidAction() {\n return this.validAction() && this.childInValidAction();\n }\n\n public allInValid() {\n return !this.allValid();\n }\n\n public allInValidAction() {\n return !this.allValidAction();\n }\n\n public childValid(): boolean {\n return !this.childInValid();\n }\n\n public childValue(): {[key: string]: any } {\n const data = {} as any;\n this.childValidators().filter(([k, v]) => {\n data[k] = v.value;\n });\n return data;\n }\n\n public childValidAction(): boolean {\n return !this.childInValidAction();\n }\n\n public childInValid(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid.length > 0;\n }\n\n public childInValidValidator(): [string, Validator<any, Element>][] {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid;\n }\n\n public childInValidAction(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.validAction());\n return inValid.length > 0;\n }\n\n public childValidator(name: string): Validator | undefined {\n return Object.entries(this).find(([k, v]) => ( k === name && (v instanceof Validator)))?.[1];\n }\n\n public childValidators(): [string, Validator][] {\n return Object.entries(this).filter(([k, v]) => (v instanceof Validator));\n }\n\n public childValidValidator(): [string, Validator][] {\n return this.childValidators().filter(it => it[1].valid());\n }\n\n public syncValue() {\n this.value = (this.getTarget() as any)?.value;\n }\n\n public allSyncValue() {\n this.childValidators().forEach(([k, e]) => {\n e.syncValue();\n })\n }\n\n public get length() {\n return (this.value as any)?.length ?? 0;\n }\n}", "import {Validator} from './Validator';\n\nexport class NonPassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return false;\n }\n}\n", "import {Validator} from './Validator';\nimport {NonPassValidator} from './NonPassValidator';\n\nexport type MakeValidator<T = any, E = Element> = (value: T, target: E, event?: Event) => Validator<T, E>;\n\nexport abstract class ValidatorArray<T = any, E = Element> extends Validator<Validator<T, E>[], E> {\n private _makeValidatorFactory: MakeValidator<T, E> = (value: T, target: E, event?: Event): Validator<T, E> => {\n return new NonPassValidator(value, target, event);\n }\n\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n getMakeValidatorFactory(): MakeValidator<T, E> {\n return this._makeValidatorFactory;\n }\n\n setMakeValidatorFactory(value: MakeValidator<T, E>) {\n this._makeValidatorFactory = value;\n return this;\n }\n\n setArrayValue(target: E, value: T, event?: Event) {\n this.value?.filter(it => {\n if (it.getTarget()) {\n return it.getTarget() === target;\n } else {\n return false;\n }\n }).forEach(it => {\n it.set(value, target, event);\n });\n this.tickValue(this.value)\n }\n\n addValidator(value: T, target: E, event?: Event) {\n if (!this.value) {\n this.value = [];\n }\n if (value instanceof Validator) {\n this.value?.push(value)\n } else {\n this.value?.push(this.makeValidator(value, target, event))\n }\n this.tickValue(this.value)\n }\n\n allChecked(checked: boolean) {\n this.checked = checked;\n this.value?.forEach(it => {\n it.checked = checked;\n })\n }\n\n getValidators() {\n return this._value;\n }\n\n getValidator(e: E) {\n return this.value?.filter(it => it.getTarget() === e)[0]\n }\n\n getValidatorByValue(value: T) {\n const validatorByValue = this.getValidatorByValues(value)[0];\n return validatorByValue;\n }\n\n getValidatorByValues(value: T) {\n return this.value?.filter(it => it.value === value) ?? [];\n }\n\n removeElement(e: E) {\n const value = this.value;\n if (value) {\n this.value = value.filter(it => it.getTarget() !== e);\n }\n }\n\n makeValidator(value: T, target: E, event?: Event): Validator<T, E> {\n return this._makeValidatorFactory(value, target, event);\n };\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrInnerText extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(` \n ${this.render.bindScript}\n const n = $element.cloneNode(true); \n ${this.elementSource.attrs.drBeforeOption ?? ''}\n n.innerText = ${attr};\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n fag: newTemp,\n ...this.render\n } as Render)\n }));\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrInnerHTML extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const n = $element.cloneNode(true);\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n n.innerHTML = ${attr};\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrFor extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // console.log('-----asdad',attr , this.elementSource.attrs.drItOption);\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n for(${attr}) {\n const n = this.__render.element.cloneNode(true);\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForIt\\\\#/g, destIt).replace(/\\\\#nearForIndex\\\\#/g, destIt))) \n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, destIt);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n })\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\nimport { ObjectUtils } from '@dooboostore/core';\n\nexport class DrForOf extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n // console.log('\uD0C0\uC9C0\uB3C4\uC54A\uB0D0?')\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrForOf');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // console.log('----!', this.elementSource.attrs)\n // ScriptUtils.evalReturn()\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = -1; \n const forOf = ${ObjectUtils.Path.toOptionalChainPath(attr)};\n const forOfStr = \\`${attr}\\`.trim();\n // console.log('forOf---',forOf);\n if (forOf) {\n for(const it of forOf) {\n i++;\n var destIt = it;\n if (/\\\\[(.*,?)\\\\],/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else if (forOf.isRange) {\n destIt = it;\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n const n = this.__render.element.cloneNode(true);\n // console.log('zzzzzzzzzzz', n.getAttribute('${RawSet.DR_DETECT_ATTR_OPTIONNAME}'));\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drForOf' && k !== 'drNextOption' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n // console.log('---------'+destIt,n, Array.from(n.getAttributeNames()).map(it=>({name:it,attr: n.getAttribute(it)})));\n // console.log('---------destItdestIt',destIt);\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForOfIt\\\\#/g, destIt).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForOfIndex\\\\#/g, i)))\n const drOptionAttr = n.getAttribute('${RawSet.DR_DETECT_ATTR_OPTIONNAME}');\n if (drOptionAttr) {\n const drOptionAttrResult = $scriptUtils.evaluateReturn(drOptionAttr, this);\n Array.from(Object.entries(drOptionAttrResult??{})).forEach(([k,v])=>{\n if (v === null) {\n n.removeAttribute(k);\n } else {\n n.setAttribute(k,v);\n }\n })\n }\n \n const drOptionFilter = n.getAttribute('${RawSet.DR_DETECT_FILTER_OPTIONNAME}');\n if (drOptionFilter) {\n const drOptionFilterResult = $scriptUtils.evaluateReturn(drOptionFilter, this);\n // console.log('---drforof----', drOptionFilter, drOptionFilterResult)\n if (!drOptionFilterResult) {\n continue;\n }\n }\n\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, i);\n // console.log('!@@@@', n.innerHTML);\n // DR_THIS_OPTIONNAME \uB294 \uC81C\uAC70\uD55C\uB2E4 \uAF2C\uC778\uB2E4. strip \uD560\uB54C \uB9C9 \uAF2C\uC5EC\uBC84\uB9B0\uB2E4.\n // const drOptionThis = n.getAttribute('${RawSet.DR_THIS_OPTIONNAME}');\n // if (drOptionThis) {\n // n.setAttribute('${RawSet.DR_THIS_NAME}', drOptionThis)\n // }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n \n }\n \n if('${this.elementSource.attrs.drNextOption}' !== 'null') {\n const n = this.__render.element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drForOf' && k !== 'drNextOption' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n const [name, idx] = '${this.elementSource.attrs.drNextOption}'.split(',');\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', name + '[' + idx + ']');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', name + ',' + (Number(idx) + 1));\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrAppender extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n try{\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n const ifWrap = document.createElement('div');\n // ifWrap.setAttribute('${RawSet.DR_STRIP_OPTIONNAME}', 'true');\n // ifWrap.setAttribute('${RawSet.DR_IF_NAME}', '${this.elementSource.attrs.drAppender} && ${this.elementSource.attrs.drAppender}.length > 0');\n const n = this.__render.element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drAppender' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n const length = ${this.elementSource.attrs.drAppender}.length;\n if (length > 0) {\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', '${this.elementSource.attrs.drAppender}[' + (length-1) + ']');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', '${this.elementSource.attrs.drAppender},' + length);\n } else {\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', '${this.elementSource.attrs.drAppender}[0]');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', '${this.elementSource.attrs.drAppender},' + 1);\n }\n // console.log('appender--->', Array.from(n.getAttributeNames()).map(it=>({name:it,attr: n.getAttribute(it)})));\n // const drOptionThis = n.getAttribute('${RawSet.DR_THIS_OPTIONNAME}');\n // if (drOptionThis) {\n // }\n // ifWrap.append(n);\n // this.__render.fag.append(ifWrap);\n this.__render.fag.append(n);\n ${this.elementSource.attrs.drAfterOption ?? ''}\n }catch(e){}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {EventManager} from '../events/EventManager';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrRepeat extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = 0; \n const repeat = ${attr};\n const repeatStr = \\`${attr}\\`;\n let range = repeat;\n if (typeof repeat === 'number') {\n range = ${EventManager.RANGE_VARNAME}(repeat);\n } \n for(const it of range) {\n var destIt = it;\n if (range.isRange) {\n destIt = it;\n } else {\n destIt = repeatStr + '[' + i +']'\n }\n const n = this.__render.element.cloneNode(true);\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearRangeIt\\\\#/g, destIt).replace(/\\\\#nearRangeIndex\\\\#/g, destIt)))\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, destIt);\n \n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n i++;\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n })\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { CreatorMetaData } from '../rawsets/CreatorMetaData';\nimport {\n AfterCallBack,\n ElementSource,\n ExecuteState,\n OperatorExecuter,\n ReturnContainer,\n Source\n} from './OperatorExecuter';\nimport { Render } from '../rawsets/Render';\n\ndeclare global {\n interface Window {\n HTMLMetaElement: typeof HTMLMetaElement;\n }\n}\n\n// \uC5EC\uAE30\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB4F1\uB85D\uD55C TargetElement\uAC00 \uB4E4\uC5B4\uAC04\uB2E4.\nexport class DrTargetElement extends OperatorExecuter<void> {\n constructor(\n rawSet: RawSet,\n render: Render,\n returnContainer: ReturnContainer,\n elementSource: ElementSource,\n source: Source,\n afterCallBack: AfterCallBack\n ) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(): Promise<ExecuteState> {\n const targetElement = this.source.config?.targetElements?.find(\n it => it.name.toLowerCase() === this.elementSource.element.tagName.toLowerCase()\n );\n if (targetElement) {\n if (\n this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement &&\n this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement\n ) {\n this.rawSet.point.start.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`);\n this.rawSet.point.end.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`);\n }\n\n const documentFragment = await targetElement.callBack(\n this.elementSource.element,\n this.source.obj,\n this.rawSet,\n this.elementSource.attrs,\n this.source.config\n );\n if (documentFragment) {\n const detectAction = this.elementSource.element.getAttribute(RawSet.DR_DETECT_NAME);\n // const dictionaryKey = this.elementSource.element.getAttribute(RawSet.DR_DICTIONARY_OPTIONKEYNAME);\n // console.log('dictionaryKey', dictionaryKey);\n // const render = (documentFragment as any).render;\n this.rawSet.dataSet.fragment = documentFragment;\n // if (documentFragment) {\n // const tempDiv = this.source.config.window.document.createElement('div');\n // tempDiv.appendChild(documentFragment.cloneNode(true));\n // console.log('DocumentFragment innerHTML:', tempDiv.innerHTML);\n // }\n\n // this.rawSet.dataSet??={};\n // this.rawSet.dataSet.data = render.component;\n if (detectAction && this.rawSet.dataSet.render) {\n // TODO: \uC5C6\uC5B4\uC838\uC57C\uB420\uB4EF?\n this.rawSet.detect = {\n action: () => {\n const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;\n ScriptUtils.evaluate(\n script,\n Object.assign(this.source.obj, {\n __render: this.rawSet.dataSet.render\n })\n );\n }\n };\n }\n // fag.append(documentFragment)\n\n // console.log('----------1', ElementUtils.toInnerHTML(documentFragment, {document: this.source.config.window.document}));\n // await Promises.sleep(1000)\n let targetFragment = documentFragment;\n if (targetElement.noStrip) {\n // documentFragment.firstElementChild.classList.add(`${this.rawSet.uuid}___DrTargetElement`)\n const fragment = this.source.config.window.document.createDocumentFragment();\n Array.from(documentFragment.firstElementChild?.childNodes || []).forEach(child => {\n // fragment.appendChild(child.cloneNode(true));\n fragment.appendChild(child);\n });\n // fragment.append(documentFragment.firstElementChild);\n targetFragment = fragment;\n }\n // console.log('----------2', ElementUtils.toInnerHTML(targetFragment, {document: this.source.config.window.document}));\n const rr = RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config);\n if (targetElement.noStrip) {\n Array.from(targetFragment.childNodes || []).forEach(child => {\n documentFragment.firstElementChild?.appendChild(child);\n });\n }\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onElementInitCallBacks.push({\n name: targetElement.name.toLowerCase(),\n obj: this.source.obj,\n targetElement,\n creatorMetaData: targetElement.__creatorMetaData as CreatorMetaData\n });\n // console.log('sssssssssssssss', this.source.obj);\n targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import {RawSet} from '../rawsets/RawSet';\nimport {TargetAttr} from '../configs/TargetAttr';\nimport {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\nimport {Render} from '../rawsets/Render';\n\nexport class DrTargetAttr extends OperatorExecuter<void> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(): Promise<ExecuteState> {\n const attributeNames = this.elementSource.element.getAttributeNames();\n const targetAttr: TargetAttr | undefined = this.source.config?.targetAttrs?.find(it => attributeNames.includes(it.name));\n if (targetAttr) {\n const attrName = targetAttr.name;\n const attrValue = this.rawSet.getAttributeAndDelete(this.elementSource.element, attrName)\n if (attrValue && attrName && (!this.elementSource.attrs.drForOf && !this.elementSource.attrs.drFor && !this.elementSource.attrs.drRepeat)) {\n const documentFragment = targetAttr.callBack(this.elementSource.element, attrValue, this.source.obj, this.rawSet);\n if (documentFragment) {\n const rr = RawSet.checkPointCreates(documentFragment, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onAttrInitCallBacks.push({\n attrName,\n attrValue,\n obj: this.source.obj\n });\n targetAttr?.complete?.(this.elementSource.element, attrValue, this.source.obj, this.rawSet);\n }\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\n\nexport class DrStripElement extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n // const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrStripElement');\n // const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v)); <-- \uC774\uBD80\uBD84\uC740 \uB2E4\uB978 attr\uC5D0\uB3C4 \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uC0DD\uAC01\uD574\uC57C\uB428 \uC5D8\uB9AC\uBA3C\uD2B8 \uC874\uC7AC\uC720\uBB34\uC5D0 \uB530\uB77C\uC11C \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uACB0\uC815\uD574\uC57C\uB428\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n const n = $element.cloneNode(true);\n if(${attr}) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''};\n return true;\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n fag: newTemp,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "export enum DestroyOptionType {\n NO_DESTROY = 'NO_DESTROY',\n NO_MESSENGER_DESTROY = 'NO_MESSENGER_DESTROY'\n}", "export enum RawSetType {\n TEXT = 'TEXT',\n STYLE_TEXT = 'STYLE_TEXT',\n TARGET_ELEMENT = 'TARGET_ELEMENT',\n TARGET_ATTR = 'TARGET_ATTR',\n UNKOWN = 'UNKOWN',\n}", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\nimport {DomRenderConfig} from '../configs/DomRenderConfig';\n\nexport class DrThisProperty extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrThisProperty');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n const dictioanry = ScriptUtils.evaluateReturn(attr, this.source.obj)\n const dictionaryKey = this.elementSource.attrs.drKeyOption ?? '';\n // console.log('--->', attr, dictionaryKey)\n // if (!(dictioanry instanceof Dictionary)) {\n // return ExecuteState.STOP;\n // }\n // await new Promise(resolve => setTimeout(resolve, 1000));\n // console.log('!!!!!!!!!!!!!!', this.rawSet);\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = 0; \n const dictionary = ${attr};\n const dictionaryKey = '${dictionaryKey}';\n const dictionaryStr = \\`${attr}\\`.trim();\n // console.log('----@#!@#@!#', this.__render.oldChild);\n if (dictionary) {\n for(const it in dictionary) {\n var destIt = dictionaryStr + '[\"' + it + '\"]';\n const n = this.__render.element.cloneNode(true);\n n.setAttribute('dr-this', destIt);\n n.setAttribute('${RawSet.DR_KEY_OPTIONNAME}', it);\n // n.setAttribute('dr-dictionary-key', it);\n this.__render.fag.append(n);\n i++;\n }\n this.__render.rawset.point.start.setAttribute('${RawSet.DR_HAS_KEYS_OPTIONNAME}',Object.keys(dictionary).join(','));\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n\n\n public static append(obj: any, fullPath: string, key: string, rawSet: RawSet, config: DomRenderConfig) {\n const genNode = config.window.document.importNode(rawSet.dataSet.fragment, true);\n // console.log('---> append', rawSet, genNode);\n const rawSets: RawSet[] = [];\n for (const cNode of Array.from(genNode.childNodes.values())) {\n const element = cNode.cloneNode(true) as Element;\n element.removeAttribute(RawSet.DR_THIS_PROPERTY_NAME);\n element.setAttribute(RawSet.DR_THIS_NAME, `this.${fullPath}`);\n element.setAttribute(RawSet.DR_KEY_OPTIONNAME, key);\n // rawSet.point.end.after(element);\n const fg = config.window.document.createDocumentFragment()\n fg.append(element);\n rawSets.push(...RawSet.checkPointCreates(fg, obj, config));\n rawSet.point.end.before(fg);\n const start = (rawSet.point.start as Element);\n const keys = start.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)?.split(',') ?? [];\n keys.push(key);\n start.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.join(','));\n rawSets.forEach(async (it) => await it.render(obj, config));\n }\n return rawSets;\n }\n}\n", "export enum RawSetOperatorType {\n DR_THIS_PROPERTY = 'this-property'\n}", "import { Render } from '../rawsets/Render';\n\nexport type OnCreateRenderDataParams = { rootParent: any, render?: Render };\n\nexport interface OnCreateRenderData {\n onCreateRenderData(data: OnCreateRenderDataParams): void;\n}\n\nexport const isOnCreateRenderData = (obj: any): obj is OnCreateRenderData => {\n return typeof obj?.onCreateRenderData === 'function';\n}", "export interface OnCreateRender {\n onCreateRender(...param: any[]): void;\n}\nexport const isOnCreateRender = (obj: any): obj is OnCreateRender => {\n return typeof obj?.onCreateRender === 'function';\n}", "import { RawSet } from '../rawsets/RawSet';\n\nexport type OtherData = {\n rawSet?: RawSet\n}\nexport interface OnChangeAttrRender {\n onChangeAttrRender(name: string, value: any, other: OtherData): void;\n}\n\nexport const isOnChangeAttrRender = (obj: any): obj is OnChangeAttrRender => {\n return typeof obj?.onChangeAttrRender === 'function';\n}\n", "import { RawSet } from '../rawsets/RawSet';\n\nexport interface OnInitRender {\n onInitRender(param: any, rawSet:RawSet): void;\n}\n\nexport function isOnInitRender(obj: any): obj is OnInitRender {\n return typeof obj?.onInitRender === 'function';\n}", "import { OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\n\n\nexport interface OnCreatedThisChild {\n onCreatedThisChild(child: any, childData: OnCreateRenderDataParams): void;\n}\n\nexport const isOnCreatedThisChild= (obj: any): obj is OnCreatedThisChild => {\n return typeof obj?.onCreatedThisChild === 'function';\n}", "import { RawSet } from '../rawsets/RawSet';\n\nexport type OnDestroyRenderParams = { rawSet: RawSet };\n\nexport interface OnDestroyRender {\n onDestroyRender(data?: OnDestroyRenderParams): void;\n}\n\nexport const isOnDestroyRender = (obj: any): obj is OnDestroyRender => {\n return typeof obj?.onDestroyRender === 'function';\n};", "import { RawSet } from '../rawsets/RawSet';\nimport { CreatorMetaData } from '../rawsets/CreatorMetaData';\nimport { AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source } from './OperatorExecuter';\nimport { Render } from '../rawsets/Render';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\n\n\n// \uC5EC\uAE30\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB4F1\uB85D\uD55C TargetElement\uAC00 \uB4E4\uC5B4\uAC04\uB2E4.\nexport class DrTargetElementIsElement extends OperatorExecuter<string | null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(attr: string | null): Promise<ExecuteState> {\n if (!attr) {\n return ExecuteState.NO_EXECUTE;\n }\n const targetElement = this.source.config?.targetElements?.find(it => it.name.toLowerCase() === attr.toLowerCase());\n // console.log('--------------tar', targetElement)\n if (targetElement) {\n if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {\n this.rawSet.point.start.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`)\n this.rawSet.point.end.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`)\n }\n\n\n const documentFragment = await targetElement.callBack(this.elementSource.element, this.source.obj, this.rawSet, this.elementSource.attrs, this.source.config);\n if (documentFragment) {\n const detectAction = this.elementSource.element.getAttribute(RawSet.DR_DETECT_NAME);\n this.rawSet.dataSet.fragment = documentFragment;\n if (detectAction && this.rawSet.dataSet.render) {\n // TODO: \uC5C6\uC5B4\uC838\uC57C\uB420\uB4EF?\n this.rawSet.detect = {\n action: () => {\n const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;\n ScriptUtils.evaluate(script, Object.assign(this.source.obj, {\n __render: this.rawSet.dataSet.render\n }))\n }\n };\n }\n\n // dr-replace-target-element-is \uB294 \uBB34\uC870\uAC74 NoStrip\uB85C \uCC98\uB9AC\n const noStrip = targetElement.noStrip\n\n let targetFragment = documentFragment;\n if (noStrip) {\n const fragment = this.source.config.window.document.createDocumentFragment()\n Array.from(documentFragment.firstElementChild?.childNodes || []).forEach(child => {\n fragment.appendChild(child);\n });\n targetFragment = fragment;\n }\n\n const rr = RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config)\n if (noStrip) {\n Array.from(targetFragment.childNodes||[]).forEach(child => {\n documentFragment.firstElementChild?.appendChild(child)\n })\n }\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onElementInitCallBacks.push({\n name: targetElement.name.toLowerCase(),\n obj: this.source.obj,\n targetElement,\n creatorMetaData: targetElement.__creatorMetaData as CreatorMetaData\n });\n targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import 'reflect-metadata'\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\n// export type ReflectField = (target: Object|{constructor: ConstructorType<any>, [key: string]: Function}, propertyKey: string | symbol) => void;\nexport const DomRenderNoProxyKey = 'DomRender:NoProxy'\nexport const DomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target, propertyKey);\n};\n\nexport const getDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(DomRenderNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(DomRenderNoProxyKey, target, propertyKey);\n // } else {\n // return undefined;\n // }\n}\n\nexport const isDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n return getDomRenderNoProxy(target, propertyKey) === true;\n}", "export interface OnBeforeReturnSet {\n onBeforeReturnSet(name: string, value: any, fullPath?: string[]): void;\n}\nexport function isOnBeforeReturnSet(obj: any): obj is OnBeforeReturnSet {\n return typeof obj?.onBeforeReturnSet === 'function';\n}\n", "import { RawSet } from '../rawsets/RawSet';\n\nexport interface OnChildRenderedByProperty {\n onChildRenderedByProperty(key: string, value: any): void;\n}\n\nexport function isOnChildRenderedByProperty(obj: any): obj is OnChildRenderedByProperty {\n return typeof obj?.onChildRenderedByProperty === 'function';\n}", "import {DomRenderConfig} from '../configs/DomRenderConfig';\n\nexport interface OnProxyDomRender {\n onProxyDomRender(config: DomRenderConfig): void;\n}\nexport const isOnProxyDomRender = (obj: any): obj is OnProxyDomRender =>\n typeof obj?.onProxyDomRender === 'function';", "import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Observable } from '@dooboostore/core/message/Observable';\nimport { BehaviorSubject } from '@dooboostore/core/message/BehaviorSubject';\nimport { Expression } from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n currentTarget?:PopCurrentState;\n}\nexport type PopStateCurrentTargetDomrenderRouter = { currentTargetName: 'domRenderRouter' };\nexport type PopCurrentState = PopStateCurrentTargetDomrenderRouter;\nexport const isPopStateCurrentTargetDomrenderRouter = (obj: any): obj is PopStateCurrentTargetDomrenderRouter =>\n obj?.currentTargetName === 'domRenderRouter';\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, disableAttach?: boolean,\n // changeStateConvertDate?:(data: any)=>any\n};\nexport type ChangeStateResult = {data?: any}\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\n\n/*\n this.option.window.addEventListener('popstate', (event) => { // history.back, forward\uC5D0\uB9CC popstate \uBC1C\uC0DD\uB418\uACE0 \uAC12\uC774 \uB3C4\uCD9C\uB41C\uB2E4\n console.log('popstate-------!!', event.state, this.domRenderConfig.window.history.state)\n })\n */\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouteData>;\n private _config: RouterConfig<T>;\n\n get observable(): Observable<RouteData> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n get config() {\n return this._config;\n }\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n this.behaviorSubject = new BehaviorSubject<RouteData>(this.getRouteData());\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n if(!isPopStateCurrentTargetDomrenderRouter(event.state)) {\n // console.log('-------');\n const routeData = this.getRouteData();\n this.behaviorSubject.next(routeData);\n }\n })\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n async attach(): Promise<void> {\n // const proxy = getDomRenderProxy(this.config.rootObject)\n // if (proxy) {\n // const key = `___${EventManager.ROUTER_VARNAME}`;\n // await proxy.render(key);\n // }\n }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n }else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: {urlExpression?: string, currentTarget?: PopCurrentState}): RouteData {\n const newVar = {\n path: this.getPathName(),\n url: this.getUrl(),\n searchParams: this.getSearchParams()\n } as RouteData;\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n newVar.router = this;\n newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->pushState', data);\n this.config.window.history.pushState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n replaceState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->replaceState', data);\n this.config.window.history.replaceState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n private dispatchPopStateEvent(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: {...data, currentTargetName: 'domRenderRouter'}}));\n }\n\n reload(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: data}));\n }\n\n getData(): any {\n return this.config.window.history.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n async go(config: string | { path: RouteAction, data?: any, replace?: boolean, title?: string, disabledPopEvent?: boolean, scrollToTop?: boolean } | string): Promise<void> {\n if (typeof config === 'string') {\n config = { path: config };\n }\n\n // let data: ChangeStateResult | undefined = undefined;\n if (config?.replace) {\n this.replace(config.path, config.data, config.title);\n } else {\n this.push(config.path, config.data, config.title);\n }\n if (!this.config.disableAttach) {\n await this.attach();\n }\n \n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n }catch (e){}\n }\n \n // console.log('----------', data, config)\n if (!config.disabledPopEvent) {\n this.dispatchPopStateEvent(config?.data);\n }\n }\n\n toUrl(data: RouteAction) {\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toURLSearchParams(data.searchParams).toString() : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, data?: any, title?: string): void;\n\n abstract replace(path: RouteAction, data?: any, title?: string): void;\n\n abstract pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const searchParams = (new URL(this.config.window.document.location.href)).searchParams;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.pushState(data, title, this.toUrl(path));\n }\n\n replace(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.replaceState(data, title, this.toUrl(path));\n }\n\n pushDeleteSearchParam(name: string, data?: any, title?: string): void {\n const s = this.getSearchParams({delete: [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushDeleteHashSearchParam(name: string, data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.replace({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.replaceState(data, title, href);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.replace({searchParams: s}, data, title);\n }\n\n\n getUrl(): string {\n const url = new URL(this.config.window.document.location.href);\n return url.pathname + url.search;\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return this.config.window.location.pathname;\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n // http://local.com/#wow=222&wow=bb&z=2\n const searchParams = new URLSearchParams(this.config.window.location.hash.slice(1));\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n // return undefined;\n }\n\n\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\nimport { LocationUtils } from '@dooboostore/core-web/location/LocationUtils';\n\n\nexport class HashRouter extends Router {\n\n constructor(config: RouterConfig) {\n super(config);\n }\n\n\n getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams {\n const hashSearch = LocationUtils.hashSearch(this.config.window);\n const searchParams = hashSearch ? new URLSearchParams(hashSearch) : (new URL(this.config.window.document.location.href)).searchParams;\n\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n if (path === '/') {\n return super.pushState(data, title, '/');\n } else {\n return super.pushState(data, title, `#${this.toUrl(path)}`);\n }\n }\n\n replace(path: RouteAction, data?: any, title?: string):ChangeStateResult {\n if (path === '/') {\n return super.replaceState(data, title, '/');\n } else {\n return super.replaceState(data, title, `#${this.toUrl(path)}`);\n }\n }\n\n setDeleteHashSearchParam(name: string, data?: any, title?: string) {\n }\n\n pushDeleteHashSearchParam(name: string | string[], data: any, title: string | undefined): void {\n const s = this.getHashSearchParams({delete:Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete:Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data: any, title: string | undefined): void {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, data, title);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n\n getUrl(): string {\n return LocationUtils.hash(this.config.window) || '/';\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return LocationUtils.hashPath(this.config.window) || '/';\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const hash = this.config.window.location.hash;\n const queryIndex = hash.indexOf('?');\n const searchParams = (queryIndex !== -1) ? new URLSearchParams(hash.slice(queryIndex + 1)) : new URLSearchParams();;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {DomRenderFinalProxy} from '../types/Types';\nimport {DomRenderConfig} from '../configs/DomRenderConfig';\n\nenum CallBackType {\n FILTER,\n MAP,\n SUBSCRIBE\n}\n\nexport type ChannelData = {\n channel: Channel;\n data?: (any | undefined);\n}\nexport type ChannelMetaData = {\n channel?: Channel;\n action?: string;\n}\n\nexport class ChannelSubscription {\n constructor(public channel: Channel, public subscriber: ChannelSubscriber) {\n }\n\n unsubscribe() {\n this.subscriber.unsubscribe();\n }\n}\n\nexport class ChannelSubscriber<SD = any> {\n public parentSubscriber?: ChannelSubscriber;\n public callbacks: ({ type: CallBackType, callback: (data: any, metaData: ChannelMetaData) => any | undefined })[] = [];\n\n constructor(public channel: Channel) {\n }\n\n exeCallback(data: any, metaData: ChannelMetaData) {\n for (const callback of this.callbacks) {\n if (callback.type === CallBackType.FILTER && !callback.callback(data, metaData)) {\n break;\n } else if (callback.type === CallBackType.MAP) {\n data = callback.callback(data, metaData);\n } else if (callback.type === CallBackType.SUBSCRIBE) {\n data = callback.callback(data, metaData);\n break;\n }\n }\n return data;\n }\n\n // chaining point\n filter<D = SD>(callback: (data: D, meta: ChannelMetaData) => boolean): ChannelSubscriber<SD> {\n this.callbacks.push({type: CallBackType.FILTER, callback});\n return this;\n }\n\n map<D = SD, R = any>(callback: (data: D, meta: ChannelMetaData) => R): ChannelSubscriber<R> {\n this.callbacks.push({type: CallBackType.MAP, callback});\n return this as unknown as ChannelSubscriber<R>;\n }\n\n subscribe(callback: (data: SD, metaData: ChannelMetaData) => any | undefined) {\n this.callbacks.push({type: CallBackType.SUBSCRIBE, callback});\n this.channel.subscribers.add(this);\n return new ChannelSubscription(this.channel, this);\n }\n\n unsubscribe() {\n this.channel.subscribers.delete(this);\n }\n\n deleteSubscriber() {\n this.unsubscribe();\n this.channel.subscribers.delete(this);\n }\n}\n\nexport class Channel {\n public subscribers = new Set<ChannelSubscriber>();\n\n constructor(private messenger: Messenger, public obj: object, public key: string) {\n }\n\n publish(key: string | object | ConstructorType<any>, data: any, action?: string) {\n const rtns: ChannelData[] = [];\n this.messenger.getChannels(key)?.forEach(it => {\n try {\n it.subscribers.forEach(its => {\n const rdata = its.exeCallback(data, {channel: this, action});\n rtns.push({channel: it, data: rdata});\n });\n } catch (e) {\n console.error(e);\n }\n });\n return rtns;\n }\n\n allPublish(data: any, action: string) {\n const rtns: (any | undefined)[][] = [];\n this.messenger.getAllChannelKeys().forEach(it => {\n rtns.push(this.publish(it, data));\n });\n return rtns.flat();\n }\n\n // string point\n filter<D = any>(filterF: (data: D, meta: ChannelMetaData) => boolean) {\n const subscriber = new ChannelSubscriber<D>(this);\n subscriber.filter(filterF);\n return subscriber;\n }\n\n map<D = any, R = any>(filterF: (data: D, meta: ChannelMetaData) => R): ChannelSubscriber<R> {\n const subscriber = new ChannelSubscriber<R>(this);\n subscriber.map(filterF);\n return subscriber;\n }\n\n subscribe<D = any>(subscribeCallback: (data: D, meta: ChannelMetaData) => any | void | undefined) {\n const subscriber = new ChannelSubscriber<D>(this);\n return subscriber.subscribe(subscribeCallback);\n };\n\n deleteChannel() {\n this.messenger.deleteChannel(this);\n };\n}\n\ntype MessengerEventDetail = {\n key: string | object | ConstructorType<any>;\n data?: any;\n action?: string;\n result?: (c: ChannelData[]) => void;\n}\n\ntype MessengerSubscribeEventDetail = {\n obj: any;\n key?: string | object | ConstructorType<any>;\n init: (channel: Channel, subscription: ChannelSubscription) => void;\n subscribe: (data: any, meta: ChannelMetaData) => void;\n}\n\nexport abstract class Messenger {\n private channels = new Set<Channel>();\n static readonly EVENT_PUBLISH_KEY = 'domRenderMessenger_publish';\n static readonly EVENT_SUBSCRIBE_KEY = 'domRenderMessenger_subscribe';\n constructor(private config: DomRenderConfig) {\n this.config.window.addEventListener(Messenger.EVENT_PUBLISH_KEY, (e: Event) => {\n const detail = ((e as CustomEvent).detail as MessengerEventDetail);\n // console.log('--->', detail)\n const rtns: ChannelData[] = [];\n this.getChannels(detail.key)?.forEach(it => {\n try {\n it.subscribers.forEach(its => {\n const rdata = its.exeCallback(detail.data, {action: detail.action});\n rtns.push({channel: it, data: rdata});\n });\n } catch (e) {\n console.error(e);\n }\n });\n detail.result?.(rtns);\n });\n this.config.window.addEventListener(Messenger.EVENT_SUBSCRIBE_KEY, (e: Event) => {\n const detail = ((e as CustomEvent).detail as MessengerSubscribeEventDetail);\n // console.log('--->', detail)\n const channel = this.createChannel(detail.obj, detail.key);\n detail.init(channel, channel.subscribe(detail.subscribe));\n });\n }\n\n public static publish(window: Window, detail: MessengerEventDetail) {\n window.dispatchEvent(new CustomEvent(Messenger.EVENT_PUBLISH_KEY, {detail}));\n }\n\n public static subscribe(window: Window, detail: MessengerSubscribeEventDetail) {\n window.dispatchEvent(new CustomEvent(Messenger.EVENT_SUBSCRIBE_KEY, {detail}));\n }\n\n createChannel(obj: any, key = obj.constructor.name): Channel {\n const channel = DomRenderFinalProxy.final(new Channel(this, obj, key)) as Channel;\n this.channels.add(channel);\n // this.channels.get(key) ? this.channels.get(key)!.push(channel) : this.channels.set(key, [channel]);\n return channel;\n }\n\n deleteChannel(channel: Channel) {\n this.channels.delete(channel);\n }\n\n deleteChannelFromObj(obj: any) {\n if (obj) {\n this.channels.forEach(it => {\n if (it.obj === obj) {\n // console.log('dddddddddddd', obj)\n this.deleteChannel(it);\n }\n });\n }\n }\n\n addChannel(channel: Channel) {\n this.channels.add(channel);\n }\n\n getChannels(key: string | object | ConstructorType<any>): Channel[] {\n if (typeof key === 'object') {\n key = key.constructor.name;\n } else if (typeof key === 'function') {\n key = key.name;\n }\n return Array.from(this.channels.values()).filter(it => it.key === key);\n }\n\n getAllChannels(): Channel[] {\n return Array.from(this.channels.values());\n }\n\n getAllChannelKeys(): string[] {\n return Array.from(this.channels.values()).map(it => it.key);\n }\n}\n", "import {Messenger} from './Messenger';\n\nexport class DefaultMessenger extends Messenger {\n\n}", "import 'reflect-metadata';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { OnChangeAttrRender, OtherData } from '../lifecycle/OnChangeAttrRender';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\nimport { RawSet } from '../rawsets/RawSet';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { OnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';\nimport { DomRenderNoProxy } from '../decorators/DomRenderNoProxy';\nimport { OnInitRender } from '../lifecycle/OnInitRender';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { OnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';\nimport { OnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport { OnDrThisBind } from '../lifecycle/dr-this/OnDrThisBind';\nimport type { Render } from '../rawsets/Render';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Subject } from '@dooboostore/core/message/Subject';\nimport { debounceTime } from '@dooboostore/core/message/operators/debounceTime';\nimport type { Subscription } from '@dooboostore/core/message/Subscription';\n\n\nexport const ATTRIBUTE_METADATA_KEY = Symbol('attribute');\nexport const QUERY_METADATA_KEY = Symbol('query');\nexport const EVENT_METADATA_KEY = Symbol('event');\n\nexport interface AttributeMetadata {\n propertyKey: string | symbol;\n name: string;\n converter?: (value: any | string | null) => any;\n isMethod: boolean;\n}\n\nexport interface QueryMetadata {\n selector: string;\n propertyKey: string | symbol;\n isMethod: boolean;\n convert?: (e: Element) => any;\n onDestroy?: (componentInstance: any, element: Element) => void;\n refreshTime?: number; // milliseconds\n}\n\nexport interface EventMetadata {\n query: string;\n eventName: string;\n methodName: string | symbol;\n onDestroy?: (componentInstance: any, element: Element) => void;\n refreshTime?: number; // milliseconds\n}\n\nexport function attribute(nameOrOptions?: string | { name?: string, converter?: (value: any | string | null) => any }): (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => void {\n return (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const attributes = ReflectUtils.getMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, target.constructor) || [];\n \n let name: string;\n let converter: ((value: any | string | null) => any) | undefined;\n \n if (typeof nameOrOptions === 'string') {\n name = nameOrOptions;\n } else if (nameOrOptions) {\n name = nameOrOptions.name || String(propertyKey);\n converter = nameOrOptions.converter;\n } else {\n name = String(propertyKey);\n }\n \n const attributeMetadata: AttributeMetadata = {\n propertyKey: propertyKey,\n name: name,\n converter: converter,\n isMethod: !!descriptor\n };\n \n attributes.push(attributeMetadata);\n ReflectUtils.defineMetadata(ATTRIBUTE_METADATA_KEY, attributes, target.constructor);\n };\n}\n\nexport function query(selectorOrOptions: string | { selector: string, convert?: (e: Element) => any, onDestroy?: (componentInstance: any, element: Element) => void, refreshIntervalTime?: number }): (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => void {\n return (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, target.constructor) || [];\n \n let selector: string;\n let convert: ((e: Element) => any) | undefined;\n let onDestroy: ((componentInstance: any, element: Element) => void) | undefined;\n let refreshTime: number | undefined;\n \n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n } else {\n selector = selectorOrOptions.selector;\n convert = selectorOrOptions.convert;\n onDestroy = selectorOrOptions.onDestroy;\n refreshTime = selectorOrOptions.refreshIntervalTime;\n }\n \n const queryMetadata: QueryMetadata = {\n selector: selector,\n propertyKey: propertyKey,\n isMethod: !!descriptor,\n convert: convert,\n onDestroy: onDestroy,\n refreshTime: refreshTime\n };\n \n queries.push(queryMetadata);\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, target.constructor);\n };\n}\n\nexport function event(options: { query: string, name: string, onDestroy?: (componentInstance: any, element: Element) => void, refreshTime?: number }): MethodDecorator {\n return (target: object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, target.constructor) || [];\n \n const eventMetadata: EventMetadata = {\n query: options.query,\n eventName: options.name,\n methodName: propertyKey,\n onDestroy: options.onDestroy,\n refreshTime: options.refreshTime\n };\n \n events.push(eventMetadata);\n ReflectUtils.defineMetadata(EVENT_METADATA_KEY, events, target.constructor);\n };\n}\n\n\nexport type ComponentBaseConfig = { onlyParentType?: ConstructorType<any>[] | ConstructorType<any>, createChildrenDebounce?: number };\n\nexport type ChildrenSet = { instance: any, data: OnCreateRenderDataParams };\n\nexport class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBaseConfig> implements OnChangeAttrRender, OnCreateRenderData, OnCreatedThisChild, OnDrThisBind, OnDrThisUnBind, OnInitRender, OnDestroyRender {\n @DomRenderNoProxy\n private _rawSet?: RawSet;\n @DomRenderNoProxy\n private _children: ChildrenSet[] = [];\n @DomRenderNoProxy\n private _render: Render | undefined;\n @DomRenderNoProxy\n private _attribute?: T;\n @DomRenderNoProxy\n private _boundEventListeners: { element: Element, eventName: string, listener: (e: Event) => void }[] = [];\n @DomRenderNoProxy\n private _queryBindings: { element: Element, metadata: QueryMetadata }[] = [];\n @DomRenderNoProxy\n private _eventBindings: { element: Element, metadata: EventMetadata, listener: (e: Event) => void }[] = [];\n @DomRenderNoProxy\n private _refreshTimers: Map<QueryMetadata | EventMetadata, NodeJS.Timeout> = new Map();\n\n @DomRenderNoProxy\n private childrenSetSubject = new Subject<ChildrenSet[]>();\n @DomRenderNoProxy\n private createChildrenDebounceSubscription?: Subscription | undefined;\n\n constructor(private _config?: C) {\n }\n get componentConfig(): C | undefined {\n return this._config;\n }\n get render(): Render | undefined {\n return this._render;\n }\n\n get rawSet(): RawSet | undefined {\n return this._rawSet;\n }\n\n get domRenderConfig(): DomRenderConfig | undefined {\n return this.rawSet?.dataSet.config;\n }\n\n private _queryElements(selector: string, rawSet:RawSet): Element[] {\n const e = this.getElement();\n // console.log('queryElement-->', e);\n if (e) {\n return ElementUtils.querySelectorAll(e, selector);\n } else {\n let startNode = rawSet.point?.start;\n let endNode = rawSet.point?.end;\n // console.log('-----', startNode, endNode)\n // console.log('-----', startNode?.isConnected, endNode?.isConnected)\n if (rawSet.point?.start && startNode && !startNode.isConnected && startNode instanceof HTMLElement && startNode.hasAttribute('id')) {\n rawSet.point.start = startNode = rawSet.dataSet.config.window.document.querySelector('#' + startNode.id) as HTMLMetaElement\n }\n if (rawSet.point?.end && endNode && !endNode.isConnected && endNode instanceof HTMLElement && endNode.hasAttribute('id')) {\n rawSet.point.end = endNode = rawSet.dataSet.config.window.document.querySelector('#' + endNode.id) as HTMLMetaElement\n }\n if (startNode && endNode) {\n // console.log('query!!', startNode, endNode);\n return ElementUtils.querySelectorAll({ start: startNode as Element, end: endNode as Element }, selector);\n }\n }\n return [];\n }\n\n private _cleanupEventListeners() {\n for (const { element, eventName, listener } of this._boundEventListeners) {\n element.removeEventListener(eventName, listener);\n }\n this._boundEventListeners = [];\n }\n\n private _cleanupQueryBindings() {\n for (const { element, metadata } of this._queryBindings) {\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n this._clearRefreshTimer(metadata);\n }\n this._queryBindings = [];\n }\n\n private _cleanupEventBindings() {\n for (const { element, metadata, listener } of this._eventBindings) {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n this._clearRefreshTimer(metadata);\n }\n this._eventBindings = [];\n }\n\n private _applyQueryBinding(queryInfo: QueryMetadata, elements: Element[], newElementsOnly: Element[] = elements) {\n const { propertyKey, isMethod, convert } = queryInfo;\n \n // Track bindings for cleanup\n elements.forEach(element => {\n this._queryBindings.push({ element, metadata: queryInfo });\n });\n \n // Apply convert function if provided\n const processedElements = convert ? elements.map(convert) : elements;\n const processedNewElements = convert ? newElementsOnly.map(convert) : newElementsOnly;\n \n if (isMethod) {\n const method = (this as any)[propertyKey];\n if (typeof method === 'function') {\n const paramTypes = ReflectUtils.getParameterTypes(this, propertyKey);\n if (paramTypes && paramTypes.length > 0 && paramTypes[0] === Array) {\n // For array methods, pass only new elements\n method.call(this, processedNewElements, processedElements);\n } else {\n // For single element methods, pass first new element\n if (processedNewElements.length > 0) {\n method.call(this, processedNewElements[0]);\n }\n }\n }\n } else {\n // For properties, always set all elements (not just new ones)\n const propertyType = ReflectUtils.getType(this, propertyKey);\n if (propertyType === Array) {\n (this as any)[propertyKey] = processedElements;\n } else {\n (this as any)[propertyKey] = processedElements[0] || null;\n }\n }\n }\n\n private _setupQueryDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n // console.group('_setupQueryDecorators')\n // console.log('queries', queries);\n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n const elements = this._queryElements(queryInfo.selector, rawSet);\n // console.log('------elements', elements);\n this._applyQueryBinding(queryInfo, elements);\n \n // Setup refresh timer if specified\n this._setupRefreshTimer(queryInfo);\n }\n }\n // console.groupEnd();\n }\n\n private _updateQueryBinding(queryInfo: QueryMetadata, rawSet: RawSet, forceUpdate = false) {\n const newElements = this._queryElements(queryInfo.selector, rawSet);\n \n // Get current bindings for this query\n const currentBindings = this._queryBindings.filter(binding => binding.metadata === queryInfo);\n const currentElements = currentBindings.map(binding => binding.element);\n \n // Check if elements have changed\n const elementsChanged = forceUpdate || !this._arraysEqual(currentElements, newElements);\n \n if (elementsChanged) {\n let addedElements: Element[] = [];\n \n if (forceUpdate) {\n // Force update: cleanup all old bindings, treat all as new\n currentBindings.forEach(({ element, metadata }) => {\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n addedElements = newElements;\n } else {\n // Smart update: only cleanup removed elements, find added elements\n const removedElements = currentElements.filter(element => !newElements.includes(element));\n addedElements = newElements.filter(element => !currentElements.includes(element));\n \n removedElements.forEach(element => {\n if (queryInfo.onDestroy) {\n queryInfo.onDestroy(this, element);\n }\n });\n }\n \n // Remove old bindings\n this._queryBindings = this._queryBindings.filter(binding => binding.metadata !== queryInfo);\n \n // Apply new bindings, but pass only added elements to methods\n this._applyQueryBinding(queryInfo, newElements, addedElements);\n }\n }\n\n private _updateQueryDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n this._updateQueryBinding(queryInfo, rawSet);\n }\n }\n }\n\n private _arraysEqual(arr1: Element[], arr2: Element[]): boolean {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((element, index) => element === arr2[index]);\n }\n\n private _setupRefreshTimer(metadata: QueryMetadata | EventMetadata) {\n if (!metadata.refreshTime || !this._rawSet) return;\n\n const timer = setInterval(() => {\n if (!this._rawSet) return;\n\n if ('selector' in metadata) {\n // QueryMetadata\n this._updateQueryBinding(metadata as QueryMetadata, this._rawSet);\n } else {\n // EventMetadata\n this._updateEventBinding(metadata as EventMetadata, this._rawSet);\n }\n }, metadata.refreshTime);\n\n this._refreshTimers.set(metadata, timer);\n }\n\n private _clearRefreshTimer(metadata: QueryMetadata | EventMetadata) {\n const timer = this._refreshTimers.get(metadata);\n if (timer) {\n clearInterval(timer);\n this._refreshTimers.delete(metadata);\n }\n }\n\n private _clearAllRefreshTimers() {\n for (const timer of Array.from(this._refreshTimers.values())) {\n clearInterval(timer);\n }\n this._refreshTimers.clear();\n }\n\n /**\n * Manually refresh all query and event decorators\n * Useful when DOM elements are dynamically added/removed and you want to update bindings\n */\n refreshDecorators(): void {\n if (this._rawSet) {\n this._updateQueryDecorators(this._rawSet);\n this._updateEventDecorators(this._rawSet);\n }\n }\n\n /**\n * Manually refresh specific query decorators by property key\n * @param propertyKeys - Array of property keys to refresh, or single property key\n */\n refreshQueryDecorators(propertyKeys: (string | symbol) | (string | symbol)[]): void {\n if (!this._rawSet) return;\n\n const keys = Array.isArray(propertyKeys) ? propertyKeys : [propertyKeys];\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n \n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n if (keys.includes(queryInfo.propertyKey)) {\n this._updateQueryBinding(queryInfo, this._rawSet, true); // Force update\n }\n }\n }\n }\n\n /**\n * Manually refresh specific event decorators by method name\n * @param methodNames - Array of method names to refresh, or single method name\n */\n refreshEventDecorators(methodNames: (string | symbol) | (string | symbol)[]): void {\n if (!this._rawSet) return;\n\n const names = Array.isArray(methodNames) ? methodNames : [methodNames];\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n \n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n if (names.includes(eventInfo.methodName)) {\n this._updateEventBinding(eventInfo, this._rawSet, true); // Force update\n }\n }\n }\n }\n\n private _applyEventBinding(eventInfo: EventMetadata, elements: Element[]) {\n elements.forEach(element => {\n const listener = (this as any)[eventInfo.methodName].bind(this);\n // console.log('bind?????', element);\n element.addEventListener(eventInfo.eventName, listener);\n \n // Track bindings for cleanup\n this._eventBindings.push({ element, metadata: eventInfo, listener });\n this._boundEventListeners.push({ element, eventName: eventInfo.eventName, listener });\n });\n }\n\n private _setupEventDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n const elements = this._queryElements(eventInfo.query, rawSet);\n this._applyEventBinding(eventInfo, elements);\n \n // Setup refresh timer if specified\n this._setupRefreshTimer(eventInfo);\n }\n }\n }\n\n private _updateEventBinding(eventInfo: EventMetadata, rawSet: RawSet, forceUpdate = false) {\n const newElements = this._queryElements(eventInfo.query, rawSet);\n \n // Get current bindings for this event\n const currentBindings = this._eventBindings.filter(binding => binding.metadata === eventInfo);\n const currentElements = currentBindings.map(binding => binding.element);\n \n // Check if elements have changed\n const elementsChanged = forceUpdate || !this._arraysEqual(currentElements, newElements);\n \n if (elementsChanged) {\n if (forceUpdate) {\n // Force update: cleanup all old bindings\n currentBindings.forEach(({ element, metadata, listener }) => {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n } else {\n // Smart update: only cleanup removed elements\n const removedElements = currentElements.filter(element => !newElements.includes(element));\n const removedBindings = currentBindings.filter(binding => removedElements.includes(binding.element));\n \n removedBindings.forEach(({ element, metadata, listener }) => {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n }\n \n // Remove old bindings from tracking arrays\n this._eventBindings = this._eventBindings.filter(binding => binding.metadata !== eventInfo);\n this._boundEventListeners = this._boundEventListeners.filter(binding => \n !currentBindings.some(cb => cb.element === binding.element && cb.metadata.eventName === binding.eventName)\n );\n \n // Apply new bindings\n this._applyEventBinding(eventInfo, newElements);\n }\n }\n\n private _updateEventDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n this._updateEventBinding(eventInfo, rawSet);\n }\n }\n }\n\n getAttribute<K extends keyof T>(name: K, attribute = this._attribute): T[K] | null {\n const target = attribute as any;\n if (!target) {\n return null;\n }\n\n const nameString = String(name);\n let p = nameString;\n if (p in target) {\n return target[p];\n }\n p = ConvertUtils.snakeToCamelCase(nameString);\n if (p in target) {\n return target[p];\n }\n p = ConvertUtils.camelToSnakeCase(nameString);\n if (p in target) {\n return target[p];\n }\n p = nameString.toUpperCase()\n if (p in target) {\n return target[p];\n }\n p = nameString.toLowerCase()\n if (p in target) {\n return target[p];\n }\n return null;\n }\n\n hasAttribute(name: keyof T) {\n return this.getAttribute(name) !==null;\n }\n\n equalsAttributeName(n: string, name: keyof T) {\n return n === name ||\n ConvertUtils.snakeToCamelCase(n) === name ||\n ConvertUtils.camelToSnakeCase(n) === name ||\n n.toUpperCase() === (name as string).toUpperCase() ||\n n.toLowerCase() === (name as string).toLowerCase()\n ;\n }\n\n get uuid(): string | undefined {\n return this._rawSet?.uuid;\n }\n\n get childrenSet() {\n return this._children;\n }\n\n get children(): any[] {\n return this._children.map(it=>it.instance);\n }\n\n getElement<T extends Element>(): T | undefined {\n return (this.render ?? this.rawSet?.dataSet?.render)?.getElement?.();\n }\n\n getFirstChild<T>(type: ConstructorType<T>): T | undefined {\n return this._children.find(it => it instanceof type)?.instance;\n }\n\n getParentThis<P>():P {\n return this.render?.parentThis as P;\n }\n\n getChildren<C extends ConstructorType<any>>(type: C): InstanceType<C>[];\n getChildren<C extends ConstructorType<any>[]>(types: C): InstanceType<C[number]>[];\n getChildren(typeOrTypes: ConstructorType<any> | ConstructorType<any>[]): any[] {\n const targets = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes];\n return this._children.filter(childSet =>\n targets.some(targetConstructor => childSet.instance instanceof targetConstructor)\n )?.map(it=>it.instance);\n }\n\n\n\n private setRawSet(rawSet: RawSet) {\n this._rawSet = rawSet;\n if (this._rawSet) {\n this.setAttribute(this._rawSet.dataSet?.render?.attribute as T);\n }\n }\n\n setAttribute(attribute: T) {\n this._attribute = attribute;\n }\n\n // TODO: rawSet isConnected\uB85C \uCCB4\uD06C\uD574\uC11C \uB4E4\uC5B4\uAC00\uC788\uB294\uAC83\uB9CC \uCC98\uB9AC\uB418\uB3C4\uB85D \uB610\uB294 \uC774\uBBF8\uB4E4\uC5B4\uAC00\uC788\uB294\uAC83\uB3C4 \uBEB4\uC57C\uB420\uAC83\uAC19\uC740\uB370.. \uC801\uC6A9\uD558\uAE34\uD588\uC74C..\uC9C0\uCF1C\uBD10\uC57C\uB420\uB4EF.\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // console.log('------------------------',child, data, data.render?.rawSet?.isConnected)\n const n = [...this._children];\n n.push({instance:child, data});\n this._children = n.filter(it=>it.data.render?.rawSet?.isConnected)\n this.childrenSetSubject.next(this._children);\n \n // Update decorators when children change (DOM might have changed)\n // Only update if elements actually changed\n if (this._rawSet) {\n this._updateQueryDecorators(this._rawSet);\n this._updateEventDecorators(this._rawSet);\n }\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n\n }\n\n onCreateRenderData(data: OnCreateRenderDataParams): void {\n this._render = data.render;\n if (data.render?.rawSet) {\n this.setRawSet(data.render.rawSet);\n }\n if (this._config?.onlyParentType) {\n const isOk = Array.isArray(this._config?.onlyParentType) ? this._config?.onlyParentType : [this._config?.onlyParentType].some(it => data.render?.parentThis instanceof it);\n if (!isOk) {\n throw new Error('only my parentThis ' + this._config?.onlyParentType);\n }\n }\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData): void {\n if (other.rawSet) {\n this.setRawSet(other.rawSet);\n }\n\n const attributes = ReflectUtils.getMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, this.constructor);\n if (attributes && Array.isArray(attributes)) {\n for (const attrInfo of attributes) {\n if (this.equalsAttributeName(name, attrInfo.name as any)) {\n const finalValue = attrInfo.converter ? attrInfo.converter(value) : value;\n if (attrInfo.isMethod) {\n const method = (this as any)[attrInfo.propertyKey];\n if (typeof method === 'function') {\n method.call(this, finalValue);\n }\n } else {\n (this as any)[attrInfo.propertyKey] = finalValue;\n }\n }\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n this.createChildrenDebounceSubscription = this.childrenSetSubject.pipe(debounceTime(this.componentConfig?.createChildrenDebounce??0)).subscribe(it => {\n this.onCreatedThisChildDebounce(it);\n });\n if (rawSet) {\n this.setRawSet(rawSet);\n\n const e = this.getElement();\n if (e) {\n (e as any).component = this;\n }\n\n // Setup decorators\n this._setupQueryDecorators(rawSet);\n this._setupEventDecorators(rawSet);\n }\n }\n\n onDrThisBind() {\n // Logic moved to onInitRender for robustness\n }\n\n onDrThisUnBind() {\n this.onDestroy();\n }\n\n onDestroyRender(data?: OnDestroyRenderParams): void {\n this.onDestroy();\n }\n\n onDestroy() {\n this._cleanupEventListeners();\n this._cleanupQueryBindings();\n this._cleanupEventBindings();\n this._clearAllRefreshTimers();\n this.createChildrenDebounceSubscription?.unsubscribe();\n }\n\n}\n", "import { ChildrenSet, ComponentBase, ComponentBaseConfig } from './ComponentBase';\nimport { ComponentSet } from './ComponentSet';\nimport { isOnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\n\n\nexport type ComponentRouterBaseConfig = ComponentBaseConfig & { sameRouteNoApply?: boolean };\n\nexport abstract class ComponentRouterBase<T = any>\n extends ComponentBase<T, ComponentRouterBaseConfig>\n{\n // OnDrThisBind\n public child?: ComponentSet;\n\n constructor(_config?: ComponentRouterBaseConfig) {\n super(_config);\n }\n\n // get child() {\n // return this._child;\n // }\n\n setChild(child: ComponentSet) {\n // console.log('setChild!!', child, (this as any).name)\n if (child) {\n this.child = child;\n } else {\n this.child = undefined;\n }\n }\n\n onDrThisUnBind(): void {\n // console.log('--ComponentRouterBase--onDrThisUnBind-')\n super.onDrThisUnBind();\n if (this.child && isOnDrThisUnBind(this.child?.obj)) {\n this.child.obj.onDrThisUnBind();\n }\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n }\n\n\n}\n", "import { attribute, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\n\nexport namespace A {\n export const selector = 'dr-a';\n\n export type ClickCallbackData = {\n event: MouseEvent,\n attributes: {\n href: string | null;\n target: string | null;\n style: string | null;\n class: string | null;\n replace?: boolean;\n scrollToTop?: boolean;\n }\n }\n\n export type Attribute = {\n href?: string | null;\n target?: string | null;\n style?: string | null;\n class?: string | null;\n click?: ((data: ClickCallbackData) => void) | null;\n replace?: boolean | null;\n scrollToTop?: boolean | null;\n };\n\n export class A extends ComponentBase<Attribute> {\n @attribute({ converter: v => v || null }) href: string | null = null;\n @attribute({ converter: v => v || null }) target: string | null = null;\n @attribute({ converter: v => v || null }) style: string | null = null;\n @attribute({ name: 'class', converter: v => v || null }) classAttr: string | null = null;\n @attribute() click?: ((data: ClickCallbackData) => void) | null = null;\n @attribute({ converter: v => v !== null && String(v) !== 'false' }) replace = false;\n @attribute({ converter: v => v !== null && String(v) !== 'false' }) scrollToTop = true;\n\n onClick(event: MouseEvent) {\n if (this.click) {\n const attributes = {\n href: this.href,\n target: this.target,\n style: this.style,\n class: this.classAttr,\n replace: this.replace,\n scrollToTop: this.scrollToTop\n };\n this.click({ event, attributes });\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.target !== '_blank' && this.href) {\n event.preventDefault();\n // console.log('scrollTop', this.scrollToTop);\n this.domRenderConfig?.router?.go({path: this.href, replace: this.replace, scrollToTop: this.scrollToTop });\n }\n }\n }\n}\n\nexport default {\n a: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: A.selector,\n template: `<a\n href=\"\\${@this@.href}$\"\n target=\"\\${@this@.target}$\"\n style=\"\\${@this@.style}$\"\n class=\"\\${@this@.classAttr}$\"\n dr-event-click=\"@this@.onClick($event)\"\n >#innerHTML#</a>`,\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({ rootObject: new A.A(...constructorParam), config });\n },\n });\n },\n};\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { Appender as DomRenderAppender } from '../../operators/Appender';\n\n\nexport namespace Appender {\n export const selector = 'dr-appender';\n // export type AppenderInterface<D> = {\n // push(...data:D[]):void;\n // set(key: string, ...v:D[]):void\n // delete(key: string):void\n // clear():void\n // }\n export type Attribute<D> = {\n value: DomRenderAppender<D>;\n onCreate?: (appender: DomRenderAppender) => void;\n }\n\n // @Component({\n // template: '<div dr-appender=\"@this@.appender\" dr-option-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}`\n // })\n export class Appender<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n private value?:DomRenderAppender\n\n // onCreateRender(...param: any) {\n // console.log('--onCreateRender')\n // }\n\n // test() {\n // console.log('t', this.getAttribute('appender'))\n // }\n onInitRender(param: any, rawSet: RawSet) {\n // console.log('--onInitRender onInitRender')\n super.onInitRender(param, rawSet);\n\n\n }\n\n // push(...data:D[]) {\n // console.log('push/////', data);\n // this.appender.push(...data);\n // }\n //\n // set(key: string, v: D): void {\n // this.appender.set(key, v)\n // }\n //\n // delete(key: string): void {\n // this.appender.delete(key);\n // }\n //\n // clear(): void {\n // this.appender.clear();\n // }\n\n\n\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if(this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n // console.log('------>appender', name, value);\n }\n }\n}\n\n\nexport default {\n appender: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: Appender.selector,\n template: '<div dr-appender=\"@this@.value\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Appender.Appender(...counstructorParam), config: config});\n }\n })\n },\n}\n\n\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace CheckBox {\n export const selector = 'dr-checkbox';\n export type Attribute = {\n class?: string;\n }\n export type ChangeOption = { type: 'initialize' | 'event' | 'attributeChange' };\n export type WrapAttribute = {\n class?: string;\n name?: string;\n checked?: boolean;\n change?: (checked: boolean, option: ChangeOption) => void\n }\n\n class CheckBoxBase extends ComponentBase<Attribute> {\n public hidden = true;\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.Checked`\n // })\n export class Checked extends CheckBoxBase {\n public name = 'checked';\n\n constructor() {\n super({onlyParentType: CheckBox});\n }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.UnChecked`\n // })\n export class UnChecked extends CheckBoxBase {\n public name = 'unChecked';\n\n constructor() {\n super({onlyParentType: CheckBox});\n }\n }\n\n // @Component({\n // template: template,\n // styles: style,\n // selector: `${selector}`\n // })\n export class CheckBox extends ComponentBase<WrapAttribute> {\n private checked = false;\n private inputElement?: HTMLInputElement;\n\n change(option: ChangeOption, checked?: boolean) { checked = checked ?? this.checked;\n this.checked = checked;\n this.setChildrenHidden(checked);\n this.getAttribute('change')?.(checked, option);\n }\n\n private setChildrenHidden(checked: boolean) {\n this.getChildren(Checked).forEach(it => {\n it.hidden = !checked;\n });\n this.getChildren(UnChecked).forEach(it => {\n it.hidden = checked;\n });\n }\n\n onCreatedThisChild(child: CheckBoxBase, childData: OnCreateRenderDataParams): void {\n super.onCreatedThisChild(child, childData);\n this.setChildrenHidden(this.checked);\n }\n\n onInitInputElement(element: HTMLInputElement) {\n // console.log('---cr', element)\n this.inputElement = element;\n this.inputElement.checked = !!this.getAttribute('checked');\n this.change({type: 'initialize'}, !!this.getAttribute('checked'));\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n // console.log('Checkbox ChangeAttr------', name, val, this.inputElement)\n if (this.inputElement && this.getAttribute('checked') !== this.checked) {\n this.inputElement.checked = !!this.getAttribute('checked');\n this.change({type: 'attributeChange'}, !!this.getAttribute('checked'));\n }\n }\n\n }\n}\n\n\n\nexport default {\n checkBoxChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}-checked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.Checked(), config: config});\n }\n })\n },\n checkBoxUnchecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}-unchecked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.UnChecked(), config: config});\n }\n })\n },\n checkBox: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}`,\n template: '<label class=\"${@this@.getAttribute(\\'class\\')}$\">\\n' +\n ' <input\\n' +\n ' name=\"${@this@.getAttribute(\\'name\\')}$\"\\n' +\n ' dr-on-init=\"@this@.onInitInputElement($element)\"\\n' +\n ' dr-event-change=\"@this@.change({type: \\'event\\'},$element.checked);\"\\n' +\n ' type=\"checkbox\" hidden=\"hidden\"/>\\n' +\n ' #innerHTML#\\n' +\n '</label>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.CheckBox(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace Choose {\n export const selector = 'dr-choose';\n export type Attribute<D> = {\n data: D;\n }\n export type WhenAttribute<D> = {\n test: (data?: D | null) => boolean;\n }\n\n class ChildOtherWiseBase<A> extends ComponentBase<A> {\n public hidden = true;\n }\n\n class ChildBase<D> extends ChildOtherWiseBase<WhenAttribute<D>> {\n data?: D;\n }\n\n export class When<D> extends ChildBase<D> {\n constructor() {\n super({onlyParentType: Choose<D>});\n }\n }\n\n export class OtherWise<D> extends ChildBase<D> {\n constructor() {\n super({onlyParentType: Choose<D>});\n }\n }\n\n export class Choose<D> extends ComponentBase<Attribute<D>> {\n\n private choose?: When<D> | OtherWise<D>;\n\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n super.onCreatedThisChild(child, data);\n this.setChange(child);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'data')) {\n this.choose = undefined;\n const children = this.getChildren([When, OtherWise]).sort((a, b) => (a instanceof OtherWise ? 1 : 0) - (b instanceof OtherWise ? 1 : 0));\n children.forEach(it => this.setChange(it as any));\n\n }\n }\n\n private setChange(child: When<D> | OtherWise<D>) {\n child.data = this.getAttribute('data') as any;\n // when.hidden = true;\n\n if (!this.choose && child instanceof When && child.getAttribute('test')?.(this.getAttribute('data'))) {\n // console.log('------------', child.attribute?.test?.(this.attribute?.data))\n this.choose = child;\n if (child.hidden) {\n child.hidden = false;\n }\n // console.log('--------', when)\n } else if (this.choose !== child) {\n child.hidden = true;\n }\n\n if (!this.choose && child instanceof OtherWise) {\n this.choose = child;\n if (child.hidden) {\n child.hidden = false;\n }\n }\n }\n }\n}\n\n\nexport default {\n chooseWhen: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}-when`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.When(), config: config});\n }\n })\n },\n chooseOtherWise: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}-other-wise`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.OtherWise(), config: config});\n }\n })\n },\n choose: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}`,\n template: '#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.Choose(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\n\n\nexport namespace Details {\n export const selector = 'dr-details';\n\n export type Attribute = {\n class?: string;\n toggle_form_reset?: boolean;\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n }\n export type BodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'\n } & Attribute\n\n export type FormAttribute = {\n disabledSubmit?: null;\n submit?: (event: SubmitEvent, element: HTMLFormElement)=>void;\n } & BodyAttribute\n\n // @Component({\n // template: '<summary class=\"${`${@this@.getAttribute(\\'class\\')} details-summary-container`}$\">#innerHTML#</summary>',\n // styles: '',\n // selector: `${selector}.Summary`\n // })\n export class Summary extends ComponentBase<Attribute> {\n constructor() {\n super({onlyParentType: [Details]});\n }\n }\n\n // @Component({\n // template: '<div class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container`}$\" dr-on-init=\"@this@.$element = $element;\">#innerHTML#</div>',\n // selector: `${selector}.Body`\n // })\n export class Body extends ComponentBase<BodyAttribute> {\n private $element?: HTMLDivElement;\n constructor() {\n super({onlyParentType: [Details]});\n }\n }\n\n export const isBody = (instance: any): instance is Body => {\n return instance instanceof Body;\n }\n\n\n\n\n // @Component({\n // template: '<form class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container details-form-container`}$\" dr-on-init=\"@this@.$element = $element;\" dr-event-submit=\"@this@.submit($element,$event);\">#innerHTML#</form>',\n // styles: detailsFormStyle,\n // selector: `${selector}.Form`\n // })\n export class Form extends ComponentBase<FormAttribute> {\n private $element?: HTMLFormElement;\n constructor() {\n super({onlyParentType: [Details]});\n }\n submit(element: HTMLFormElement, event: SubmitEvent) {\n if (this.hasAttribute('disabledSubmit')) {\n event.preventDefault();\n }\n if (this.hasAttribute('submit')) {\n this.getAttribute('submit')?.(event, element);\n }\n }\n reset() {\n this.$element?.reset();\n }\n }\n export const isForm = (instance: any): instance is Form => {\n return instance instanceof Form;\n }\n\n // @Component({\n // template: template,\n // styles: style,\n // // noStrip: true,\n // selector: `${selector}`\n // })\n export class Details extends ComponentBase<Attribute> implements OnCreateRender, OnInitRender {\n // private detailsElement?: HTMLDetailsElement;\n private documentClickSubscription?: Subscription;\n private toggleSubscription?: Subscription;\n private element?: HTMLDetailsElement;\n onCreateRenderData(data: OnCreateRenderDataParams) {\n super.onCreateRenderData(data);\n }\n\n onCreateRender(...param: any[]): void {\n }\n\n toggle(element: HTMLDetailsElement) {\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n onInitRender(param: any, rawSet: RawSet): void {\n super.onInitRender(param,rawSet);\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const document = this.rawSet.dataSet!.config!.window!.document!;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n if (this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (detailsElement && !detailsElement?.contains(event?.target as Node)){\n detailsElement.open = false;\n }\n })\n if (detailsElement) {\n this.toggleSubscription = EventUtils.htmlElementEventObservable(detailsElement, 'toggle').subscribe(it => {\n if (ValidUtils.coreValidUtils.isNotNullUndefined(this.getAttribute('toggle_form_reset'))) {\n this.children?.filter(isForm).forEach(it => {\n it.reset();\n })\n }\n })\n }\n }\n // console.log('aaaaaaaaaaaaaaaaaaaaa', rawSet);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n }\n\n\n onDestroyRender(...metaData: any[]): void {\n this.toggleSubscription?.unsubscribe();\n this.documentClickSubscription?.unsubscribe();\n // console.log('onDestroyRender', metaData);\n // if (ValidUtils.isBrowser()) {\n // document.removeEventListener('click', this.ccc)\n // }\n }\n\n // changeAttribute(attribute: { className: string } | undefined) {\n // }\n\n }\n}\n\nexport default {\n detailsSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-summary`,\n template: '<summary class=\"${`${@this@.getAttribute(\\'class\\')} details-summary-container`}$\">#innerHTML#</summary>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Summary(), config: config});\n }\n })\n },\n detailsBody: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-body`,\n template: '<div class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container`}$\" dr-on-init=\"@this@.$element = $element;\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Body(), config: config});\n }\n })\n },\n detailsForm: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-form`,\n template: '<form class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container details-form-container`}$\" dr-on-init=\"@this@.$element = $element;\" dr-event-submit=\"@this@.submit($element,$event);\">#innerHTML#</form>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Form(), config: config});\n }\n })\n },\n details: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}`,\n styles: `\n .details-container {\n position: relative;\n }\n\n .details-container .details-body-container {\n position: absolute;\n }\n\n\n .details-container .details-body-bottom-left-container {\n position: absolute;\n left: 0;\n top: 100%;\n /*margin-top: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-bottom-right-container {\n position: absolute;\n right: 0;\n top: 100%;\n /*margin-top: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-top-left-container {\n position: absolute;\n left: 0;\n bottom: 100%;\n /*margin-bottom: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-top-right-container {\n position: absolute;\n right: 0;\n bottom: 100%;\n /*margin-bottom: 0px;*/\n }\n `,\n template: '<details class=\"${`${@this@.getAttribute(\\'class\\')} details-container`}$\" dr-on-init=\"@this@.element = $element;\" dr-event-toggle=\"@this@.toggle($element)\"> #innerHTML# </details>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Details(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\n\n\nexport namespace ForOf {\n export const selector = 'System:ForOf';\n export type Attribute<D> = {\n value: D;\n }\n\n // @Component({\n // template: '<div dr-for-of=\"@this@.data\" dr-option-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}`\n // })\n export class ForOf<D> extends ComponentBase<Attribute<D>> {\n private value?: D;\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n }\n\n }\n}\n\n\nexport default {\n forOf: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: ForOf.selector,\n template: '<div dr-for-of=\"@this@.data\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new ForOf.ForOf(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\n\nexport namespace If {\n export const selector = 'dr-if';\n // export type AppenderInterface<D> = {\n // push(...data:D[]):void;\n // set(key: string, ...v:D[]):void\n // delete(key: string):void\n // clear():void\n // }\n export type Attribute<D> = {\n value?: null | boolean;\n }\n\n export class If<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n private sw: boolean = false;\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n\n if (this.equalsAttributeName(name, 'value')) {\n // console.log('------',this,name, value)\n this.sw = value;\n }\n }\n }\n}\n\n// const iif = DomRender.createComponent({\n// type: If.If,\n// tagName: If.selector,\n// template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>' });\nexport default {\n if: (config?: DomRenderConfig) => {\n\n\n // if (!customElements.get(If.selector)) {\n // customElements.define(If.selector, class extends HTMLElement {\n // constructor() {\n // super();\n // this.hidden = true;\n // }\n // });\n // }\n\n return RawSet.createComponentTargetElement({\n name: If.selector,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new If.If(...counstructorParam), config: config});\n }\n })\n },\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { OnDestroyRender, OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\nimport { map } from '@dooboostore/core/message/operators/map';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { debounceTime } from '@dooboostore/core/message/operators/debounceTime';\nimport { distinctUntilChanged } from '@dooboostore/core/message/operators/distinctUntilChanged';\n\n\nexport namespace Input {\n export const selector = `dr-input`;\n export type Attribute = {\n name?: string;\n type?: string;\n id?: string;\n class?: string;\n debounceTime?: number;\n distinct?: boolean;\n input?: (value: string, element: Element) => void\n\n }\n\n export class Base extends ComponentBase<any> {\n\n }\n\n // @Component({\n // selector: `${selector}`,\n // template,\n // styles,\n // })\n export class Input extends Base implements OnCreateRender, OnDestroyRender {\n private element?: HTMLInputElement;\n private inputSubscription?: Subscription;\n private resetSubscripton?: Subscription;\n\n onCreateRender(...param: any[]): void {\n }\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('dr-input, rawSet', rawSet)\n const inputElement = this.element;\n const debounceTimeAttribute = this.getAttribute('debounceTime');\n const debounceTimeValue = ValidUtils.isNotNullUndefined(debounceTimeAttribute) ? Number(debounceTimeAttribute) : 0;\n const distinct = ValidUtils.isNotNullUndefined(this.getAttribute('distinct'));\n\n if (inputElement) {\n const makeDeboundceDistinctUtilChanged = () => {\n // let result$ = EventUtils.htmlElementEventObservable(inputElement,'input');\n\n let result$ = EventUtils.htmlElementEventObservable(inputElement, 'input').pipe(\n map((event: Event) => {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n return target.value.trim();\n }\n console.warn('Input event target is not an HTMLInputElement:', target);\n return '';\n })\n );\n\n if (ValidUtils.isNotNullUndefined(debounceTimeValue) && debounceTimeValue > 0) {\n result$ = result$.pipe(debounceTime(debounceTimeValue));\n }\n if (ValidUtils.isNotNullUndefined(distinct) && distinct === true) {\n result$ = result$.pipe(distinctUntilChanged());\n }\n return result$;\n };\n this.inputSubscription = makeDeboundceDistinctUtilChanged().subscribe(it => {\n // console.log('change?????????????', it);\n this.getAttribute('input')?.(it, inputElement);\n });\n\n if (inputElement.form) {\n this.resetSubscripton = EventUtils.htmlElementEventObservable(inputElement.form, 'reset').subscribe(it => {\n // console.log('rrrraaa?,', this.inputSubscription, it)\n this.inputSubscription?.unsubscribe();\n this.inputSubscription = makeDeboundceDistinctUtilChanged().subscribe(it => {\n // console.log('rrrr?')\n this.getAttribute('input')?.(it, inputElement);\n });\n })\n }\n }\n\n\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n // console.log('-------->',name, value)\n if (name === 'value') {\n // console.log('changeAttribu', name, value)\n // this.wow = {value: value};\n // this.name = value;\n }\n }\n\n onDestroyRender(metaData?: OnDestroyRenderParams): void {\n this.resetSubscripton?.unsubscribe();\n this.inputSubscription?.unsubscribe();\n }\n\n }\n}\n\nexport default {\n input: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Input.selector}`,\n template: '<Input type=\"${@this@.getAttribute(\\'type\\')}$\" class=\"${@this@.getAttribute(\\'class\\')}$\" id=\"${@this@.getAttribute(\\'id\\')}$\" name=\"${@this@.getAttribute(\\'name\\')}$\" dr-on-init=\"@this@.element=$element\" >#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Input.Input(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\n\n\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\nimport { Promises } from '@dooboostore/core/promise/Promises';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace PromiseSwitch {\n export const selector = 'dr-promise-switch';\n export type ChangeParams<T> = { status: 'pending' } | { status: 'finally' } | { status: 'fulfilled', data: T } | { status: 'rejected', data: any };\n export type Attribute = {\n // trigger?: boolean;\n data: Promise<any> | (() => Promise<any>);\n change?: <T>(data: ChangeParams<T>) => void;\n }\n\n class ChildBase<T = any> extends ComponentBase<T> {\n public hidden = true;\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Default`\n // })\n export class Default extends ChildBase {\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Pending`\n // // selector: `System-PromiseSwitch.Pending`\n // })\n export class Pending extends ChildBase<{ defaultView?: null }> {\n // onChangeAttrRender(name: string, value: any, other: OtherData) {\n // super.onChangeAttrRender(name, value, other);\n // if (this.equalsAttributeName(name, 'defaultView')) {\n // // console.log('--------------', value)\n // if (value !== null) {\n // this.hidden = false;\n // } else {\n // this.hidden = true;\n // }\n // // console.log('--------------', this.hidden)\n // }\n // }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Fulfilled`\n // })\n export class Fulfilled<T = any> extends ChildBase {\n private data?: T;\n\n setData(data: T) {\n this.data = data;\n }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Rejected`\n // })\n export class Rejected<T = any> extends ChildBase {\n private data?: T;\n\n setData(data: T) {\n this.data = data;\n }\n }\n\n\n /*\n <dr-promise-switch data=\"${@this@.pickWorldPromise}$\">\n ${@nearThis@.promiseState.status}$\n <dr-promise-switch-default>\n <button class=\"random-world-button\" dr-event-click=\"@this@.pickWorld()\">\n <i class=\"fa-solid fa-dice\"></i>\n </button>\n </dr-promise-switch-default>\n <dr-promise-switch-pending>\n <button class=\"random-world-button disabled spin\" >\n <i class=\"fa-solid fa-dice\"></i>\n </button>\n </dr-promise-switch-pending>\n </dr-promise-switch>\n */\n // @Component({\n // template: '#innerHTML#',\n // selector: `${selector}`\n // })\n export class PromiseSwitch extends ComponentBase<Attribute> {\n // private promise?: {\n // state: 'reject' | 'resolve',\n //\n // }\n private promiseState?: Promises.Result.PromiseState<any, unknown>;\n private status?: Promises.Result.PromiseState<any, unknown>[\"status\"];\n\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n super.onCreatedThisChild(child, data);\n this.childStateChange();\n }\n\n childStateChange() {\n const defaults = this.getChildren(Default);\n const pendings = this.getChildren(Pending);\n const fulfilleds = this.getChildren(Fulfilled);\n const rejecteds = this.getChildren(Rejected);\n const full = [...fulfilleds, ...rejecteds, ...pendings, ...defaults]\n // console.log('----!!!!!!-------', this.promiseState, full)\n if (this.promiseState === undefined) {\n this.status = undefined;\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n defaults.filter(it => it.hidden).forEach(it => it.hidden = false);\n pendings.filter(it => it.getAttribute('defaultView') && it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'pending') {\n this.status = 'pending';\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n pendings.filter(it => it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'fulfilled') {\n this.status = 'fulfilled';\n const value = this.promiseState.value;\n // console.log('-----------fulfilled promises', value);\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n fulfilleds.forEach(it => {\n it.setData(value)\n })\n fulfilleds.filter(it => it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'rejected') {\n this.status = 'rejected';\n const value = this.promiseState.reason;\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n rejecteds.forEach(it => {\n it.setData(value)\n })\n rejecteds.filter(it => it.hidden).forEach(it => it.hidden = false);\n }\n return this.status;\n // console.log('----!!!!!!-end------', this.promiseState, full.map(it=>it.hidden))\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n // console.log('-----------changer promises', name, value, this.getChildren(Default));\n if (this.equalsAttributeName(name, 'data') && value) {\n // this.childStateChange();\n this.promiseState = undefined;\n this.status = undefined;\n this.promiseState = Promises.Result.wrap(typeof value === 'function' ? value() : value as Promise<any>);\n this.getAttribute('change')?.({status: 'pending'});\n this.childStateChange();\n // console.log('----?', this.promiseState)\n this.promiseState.then(data => {\n // console.log('------------then', data);\n this.childStateChange();\n this.getAttribute('change')?.({status: 'fulfilled', data: data});\n return data;\n }).catch((e) => {\n // console.log('catch', e)\n this.childStateChange();\n this.getAttribute('change')?.({status: 'rejected', data: e});\n throw e;\n }).finally(() => {\n // console.log('-------------finally--------rrrrrrrrrrr', this.promiseState)\n // this.childStateChange();\n this.getAttribute('change')?.({status: 'finally'});\n })\n // await this.promiseState;\n\n\n // console.log('---------------------rrrrrrrrrrr', this.promiseState)\n } else if(this.equalsAttributeName(name, 'data') && ValidUtils.isNullOrUndefined(value)) {\n this.promiseState = undefined;\n this.childStateChange();\n }\n }\n }\n}\n\n\nexport default {\n promiseDefault: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-default`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Default(...counstructorParam), config: config});\n }\n })\n },\n promisePending: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-pending`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Pending(...counstructorParam), config: config});\n }\n })\n },\n promiseFulfilled: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-fulfilled`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Fulfilled(...counstructorParam), config: config});\n }\n })\n },\n promiseRejected: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-rejected`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Rejected(...counstructorParam), config: config});\n }\n })\n },\n promiseSwitch: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.PromiseSwitch(...counstructorParam), config: config});\n }\n })\n },\n\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\n\n\nexport namespace Radio {\n export const selector = 'System:Radio';\n export type Attribute = {\n class?: string;\n }\n export type LabelAttribute = {\n class?: string;\n name?: string;\n value?: string;\n checked?: boolean;\n on_change_checked?: (checked: boolean, element: HTMLInputElement) => void\n }\n\n class RadioBase extends ComponentBase<Attribute> {\n public hidden = true;\n }\n\n export class Checked extends RadioBase {\n public name = 'Checked';\n\n constructor() {\n super({onlyParentType: Radio});\n }\n }\n\n export class UnChecked extends RadioBase {\n public name = 'unChecked';\n\n constructor() {\n super({onlyParentType: Radio});\n }\n }\n\n export class Radio extends ComponentBase<LabelAttribute> {\n private checked = false;\n private inputElement?: HTMLInputElement;\n\n change(checked?: boolean) { checked = checked ?? this.checked;\n this.checked = checked;\n this.setChildrenHidden(checked);\n console.log('radio checked!!!!!!!', checked, this.checked, this.inputElement?.checked)\n if (this.getAttribute('on_change_checked')) {\n this.getAttribute('on_change_checked')?.(checked, this.inputElement!);\n }\n }\n\n private setChildrenHidden(checked: boolean) {\n this.getChildren(Checked).forEach(it => {\n it.hidden = !checked;\n });\n this.getChildren(UnChecked).forEach(it => {\n it.hidden = checked;\n });\n }\n\n onCreatedThisChild(child: RadioBase, childData: OnCreateRenderDataParams): void {\n super.onCreatedThisChild(child, childData);\n this.setChildrenHidden(this.checked);\n }\n\n onInitInputElement(element: HTMLInputElement) {\n this.inputElement = element;\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n if (this.inputElement && this.getAttribute('checked') !== this.checked) {\n this.inputElement.checked = !!this.getAttribute('checked');\n console.log('----changeAttribute', this.getAttribute('checked'))\n this.change(!!this.getAttribute('checked'));\n }\n }\n\n }\n}\n\n\n\nexport default {\n radioChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}-checked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.Checked(), config: config});\n }\n })\n },\n radioUnChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}-unchecked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.UnChecked(), config: config});\n }\n })\n },\n radio: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}`,\n template: '<label class=\"${@this@.getAttribute(\\'class\\')}$\">\\n' +\n ' <input\\n' +\n ' name=\"${@this@.getAttribute(\\'name\\')}$\"\\n' +\n ' checked=\"${@this@.getAttribute(\\'checked\\')}$\"\\n' +\n ' value=\"${@this@.getAttribute(\\'value\\')}$\"\\n' +\n ' dr-on-init=\"@this@.onInitInputElement($element)\"\\n' +\n ' dr-event-change=\"@this@.change($element.checked);\"\\n' +\n ' type=\"radio\"\\n' +\n '\\n' +\n ' />\\n' +\n ' ${@this@.getAttribute(\\'checked\\')}$\\n' +\n ' #innerHTML#\\n' +\n '</label>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.Radio(...counstructorParam), config: config});\n }\n })\n },\n}", "import { attribute, ComponentBase } from '../ComponentBase';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { DomRender } from '../../DomRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport type { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { If } from '../if/If';\n\nexport namespace Route {\n export const selector = 'dr-route';\n export type Attribute<D> = {\n value?: null | string;\n }\n\n abstract class CheckerBase<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n protected sw: boolean = false;\n @attribute({name: 'value'})\n value?: string;\n @DomRenderNoProxy\n private inputDomRenderConfig?: DomRenderConfig;\n private routerSubscription?: Subscription;\n\n constructor(domRenderConfig?: DomRenderConfig) {\n super();\n this.inputDomRenderConfig = domRenderConfig;\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n this.routerSubscription = this.inputDomRenderConfig?.router?.observable.subscribe(it => {\n if (this.value && this.inputDomRenderConfig) {\n this.sw = this.check(this.inputDomRenderConfig);\n } else {\n this.sw = false;\n }\n });\n }\n\n onDrThisBind() {\n super.onDrThisBind();\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n }\n\n onDestroyRender(data?: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n this.routerSubscription?.unsubscribe();\n }\n\n abstract check(config?: DomRenderConfig): boolean;\n }\n\n\n export class Match<D> extends CheckerBase<D> {\n check(config?: DomRenderConfig): boolean {\n return !!config?.router?.test(this.value);\n }\n }\n\n export class Regexp<D> extends CheckerBase<D> {\n check(config?: DomRenderConfig): boolean {\n return !!config?.router?.testRegexp(this.value);\n }\n }\n}\n\nexport default {\n match: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Route.selector}-match`,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Route.Match(config), config: config});\n }\n })\n },\n regexp: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Route.selector}-regexp`,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Route.Regexp(config), config: config});\n }\n })\n },\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { ComponentRouterBase } from '../../components/ComponentRouterBase';\nexport namespace RouterOutlet {\n export const selector = 'dr-router-outlet';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n };\n\n export class RouterOutlet extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet;\n private if?: boolean | null = null;\n private createArguments?: any[];\n\n setValue(value: ComponentSet) {\n this.value = value;\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n const c = this.getParentThis();\n if (c instanceof ComponentRouterBase){\n this.value = c.child\n }\n // console.log('------',c);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any) {\n component ??= this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n // TODO: \uC65C \uC774\uB188\uB9CC webpack\uC5D0\uC11C \uC21C\uD658\uCC38\uC870 \uC5D0\uB7EC\uB098\uB294\uC9C0\uBAA8\uB974\uACA0\uB2E4.. \uC65C \uC774\uB188\uB9CC.. \uADF8\uB798\uC11C \uC774\uB807\uAC8C \uD558\uAE34\uD568.\n routerOutlet: (config?: DomRenderRunConfig, executer?: {run: (...data: any[])=>any}) => {\n return RawSet.createComponentTargetElement({\n name: RouterOutlet.selector,\n template:\n '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return executer?.run({ rootObject: new RouterOutlet.RouterOutlet(...counstructorParam), config: config });\n }\n });\n }\n};\n", "import { attribute, ChildrenSet, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnDestroyRender } from '../../lifecycle/OnDestroyRender';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { WindowUtils } from '@dooboostore/core-web/window/WindowUtils';\n\n/** \uC0AC\uC6A9\uBC95\n <dr-select class=\"card-select-container\" changeSelected=\"${(data) => @this@.changeSelected(data)}$\"> <!-- multiple attribute optional-->\n <dr-select-summary class=\"card-select-summary-container\">\n <dr-select-summary-placeholder>\n <div class=\"card-select-summary-placeholder-container\">\uCE74\uB4DC\uC0AC\uBCC4 \uC0AC\uC6A9\uCC98 \uC548\uB0B4 \uD398\uC774\uC9C0 \uC120\uD0DD</div>\n </dr-select-summary-placeholder>\n <dr-select-summary-selected>\n <div dr-if=\"@this@.selectedCard\" class=\"card-select-summary-selected-container\">\n <img dr-attr=\"{src:@this@.selectedCard?.iconImg}\"> ${@this@.selectedCard?.name}$\n </div>\n </dr-select-summary-selected>\n </dr-select-summary>\n\n <dr-select-body float=\"bottom-left\" class=\"card-select-body-container\">\n <dr-select-option dr-for-of=\"@this@.cards\" value=\"${#it#.name}$\" selected=\"${#nearForOfIndex# === 0}$\" class=\"card-select-body-option-container\">\n <img dr-attr=\"{src:#it#.iconImg}\"> ${#it#.name}$\n </dr-select-option>\n </dr-select-body>\n </dr-select>\n */\n\nexport namespace Select {\n export const selector = 'dr-select';\n\n // Base for simple hide/show components\n class StateComponent extends ComponentBase {\n public hidden = true;\n public value: string | null = null;\n\n constructor(config: any) {\n super(config);\n }\n\n setValue(value: string | null) {\n this.value = value;\n }\n }\n\n // --- Option Child Components ---\n export class OptionSelected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionUnselected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionDisabled extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n // --- Summary Child Components ---\n export class SummaryPlaceholder extends StateComponent {\n constructor() {\n super({onlyParentType: Summary});\n }\n }\n\n export class SummarySelected extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n export class SummaryDisabled extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n // --- Select Body Component ---\n export type SelectBodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n class?: string;\n }\n // --- Option Component ---\n export type OptionAttribute = { value: string; selected?: boolean | null; disabled?: boolean | null; class?: string; };\n\n export class Option extends ComponentBase<OptionAttribute> implements OnInitRender {\n public hidden = true;\n @attribute({name: 'value'}) public value: string | null = null;\n @attribute({name: 'selected', converter: v => v !== null && v === true}) public selected = false;\n @attribute({name: 'disabled', converter: v => v !== null && v === true}) public disabled = false;\n @attribute({name: 'class', converter: v => (v ? v : null)}) public classAttr: string | null = null;\n\n // public status: 'selected' | 'unselected' | 'disabled' = 'unselected';\n\n constructor() {\n super({onlyParentType: SelectBody});\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('-----', this.value, this.selected)\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // if (!this.disabled) {\n // this.getParentThis<Select>().handleOptionClick(this);\n // }\n // });\n this.updateStatus();\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // this.updateStatus();\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateStatus();\n }\n\n toggleSelected(event: Event) {\n // console.log('isMultiple', this.isMultiple())\n if (!this.disabled) {\n this.selected = this.isMultiple()? !this.selected : true;\n // this.selected = !this.selected;\n this.updateStatus();\n this.getParentThis<SelectBody>().changeOptionState(this);\n } else {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n isMultiple() {\n return this.getParentThis<Select.SelectBody>()?.getParentThis<Select.Select>().multiple;\n }\n\n updateStatus() {\n if (this.disabled) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n return;\n }\n\n if (this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n\n if (!this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n }\n }\n\n // --- Summary Component ---\n export class Summary extends ComponentBase implements OnInitRender {\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n private options: Select.Option[] = [];\n private disabled: boolean = false;\n public element?: HTMLElement;\n\n constructor() {\n super({onlyParentType: Select});\n }\n\n\n setDisabled(disabled: boolean) {\n this.disabled = disabled;\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = true);\n this.getChildren(SummarySelected).forEach(it => it.hidden = true);\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = false);\n\n }\n\n setOptions(options: Option[] = []): void {\n this.options = options;\n\n const selectedOptions = this.options.filter(it => it.selected && !it.disabled);\n if (!this.disabled) {\n if (selectedOptions.length > 0) {\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = true);\n this.getChildren(SummarySelected).forEach(c => {\n c.setOptions(options);\n c.hidden = false;\n });\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = true);\n } else {\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = true);\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = false);\n this.getChildren(SummarySelected).forEach(c => c.hidden = true);\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // this.getParentThis<Select>().toggle();\n // });\n }\n\n onInitSummaryElement(element: HTMLElement, event: Event) {\n this.element = element;\n }\n\n updateView(hasSelection: boolean) {\n this.getChildren(SummaryPlaceholder).forEach(c => c.hidden = hasSelection);\n this.getChildren(SummarySelected).forEach(c => c.hidden = !hasSelection);\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateView(this.getParentThis<Select>()?.selectedValues.length > 0);\n }\n\n\n onSummaryClick(element: HTMLElement, event: Event) {\n if (this.getParentThis<Select>()?.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n }\n }\n\n\n export class SelectBody extends ComponentBase<SelectBodyAttribute> {\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'float'}) public float: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | null = null;\n\n constructor() {\n super({onlyParentType: Select});\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n this.changeOptionState();\n }\n\n changeOptionState(option?: Option) {\n const options = this.getChildren(Option);\n const select = this.getParentThis<Select>();\n // // \uBA40\uD2F0\uD50C\uC774 \uC544\uB2D0\uB54C\uC5D0\uB294 \uB9C8\uC9C0\uB9C9 \uC120\uD0DD\uB41C\uAC12\uC73C\uB85C \uCC98\uB9AC\n if (!select.multiple) {\n // \uB0B4\uAC00 \uC120\uD0DD\uD55C\uAC8C \uC788\uC73C\uBA74\n if (option && option.selected) {\n options.filter(it => it !== option).forEach(it => it.selected = false);\n } else {\n const selectedOptions = options.filter(it => it.selected && !it.disabled)\n selectedOptions.forEach((opt, idx) => {\n const isLast = idx === selectedOptions.length - 1;\n if (!isLast) {\n opt.selected = false;\n }\n });\n }\n }\n // console.log('--------', options.map(it=>it.selected))\n select?.setOptions(options);\n }\n }\n\n\n // --- Main Select Component ---\n export type SelectAttribute = {\n multiple?: boolean | null; class?: string;\n changeSelected?: (value: (string | null)[]) => void;\n name?: string;\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n disabled?: boolean | null;\n };\n\n export class Select extends ComponentBase<SelectAttribute> implements OnInitRender, OnCreateRender, OnCreateRenderData, OnDestroyRender {\n @attribute({name: 'multiple', converter: v => v !== null}) public multiple = false;\n @attribute({name: 'disabled', converter: v => v !== null}) public disabled = false;\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'name', converter: v => (v === '' ? null : v)}) public name: string | null = null;\n\n // public isOpen = false;\n public selectedValues: (string | null)[] = [];\n public selectedOptions: Option[] = [];\n public value: string | (string | null)[] | null | undefined;\n\n @DomRenderNoProxy private element?: HTMLDetailsElement;\n @DomRenderNoProxy private documentClickSubscription?: Subscription;\n @DomRenderNoProxy private windowBlurSubscription?: Subscription;\n @DomRenderNoProxy public summaryComponent?: Summary;\n @DomRenderNoProxy public selectBodyComponent?: SelectBody;\n private options?: Select.Option[];\n\n constructor(config?: DomRenderConfig) {\n super();\n // console.log('----Select constructor')\n }\n\n get optionComponents(): Option[] {\n return this.getChildren(Option);\n }\n\n onCreateRender() {\n\n }\n\n onCreateRenderData() {\n\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('select onInitRender', this.multiple)\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const window = this.rawSet.dataSet!.config!.window!;\n const document = window.document;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n const isSummaryClick = this.getChildren(Summary).some(it => event.target && it.element?.contains(event.target as Node) || it.element === event.target)\n if (!isSummaryClick && this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (!isSummaryClick && !this.multiple && detailsElement) {\n detailsElement.open = false;\n return;\n }\n if (!isSummaryClick && detailsElement && !detailsElement?.contains(event?.target as Node)) {\n detailsElement.open = false;\n }\n })\n\n this.windowBlurSubscription = WindowUtils.eventObservable(window, 'blur').subscribe(() => {\n if (detailsElement?.open && window.document.activeElement?.tagName === 'IFRAME') {\n detailsElement.open = false;\n }\n });\n }\n }\n\n\n toggle(element: HTMLDetailsElement, event: Event) {\n // console.log('------>', this.disabled, event)\n // if (this.disabled) {\n // event.stopPropagation();\n // event.preventDefault();\n // return;\n // }\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n\n setOptions(options: Option[]) {\n const summaries = this.getChildren(Summary);\n\n this.options = options;\n\n const values = this.options.filter(it => it.selected && !it.disabled).map(it => it.value)\n this.getAttribute('changeSelected')?.(values);\n summaries?.forEach(it => {\n it.setDisabled(this.disabled);\n if (!this.disabled) {\n it.setOptions(options);\n }\n })\n }\n\n onInitDetailsElement(detailsElement: HTMLDetailsElement) {\n // console.log('detailsElement oninit', detailsElement);\n this.element = detailsElement;\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n this.onDestroyRender();\n }\n\n onDestroyRender() {\n super.onDestroyRender();\n this.documentClickSubscription?.unsubscribe();\n this.windowBlurSubscription?.unsubscribe();\n }\n\n test() {\n console.log('tttttttt')\n }\n }\n}\n\nconst stateComponentFactory = (name: string, type: any) => {\n return (config?: DomRenderRunConfig) =>\n RawSet.createComponentTargetElement({\n name,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new type(), config })\n });\n};\n\nexport default {\n select: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: Select.selector,\n styles:\n '.dr-select-container {\\n' +\n ' /*position: relative;*/\\n' +\n '\\n' +\n '}\\n' +\n '.dr-select-options-container {\\n' +\n ' display: none;\\n' +\n ' position: absolute;\\n' +\n ' top: 100%;\\n' +\n ' left: 0;\\n' +\n ' right: 0;\\n' +\n ' z-index: 10;\\n' +\n '}\\n' +\n '.dr-select-container.is-open .dr-select-options-container {\\n' +\n ' display: block;\\n' +\n '}\\n' +\n 'summary::-webkit-details-marker {\\n' +\n ' display: none;\\n' +\n '}\\n' +\n '/* Floating styles for dr-select-body */\\n' +\n '.dr-select-body-container {\\n' +\n ' position: absolute;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '/* Reset default details/summary styles */\\n' +\n '.dr-select-container details {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n ' list-style: none; /* Remove default marker */\\n' +\n \" cursor: pointer; /* Indicate it's clickable */\\n\" +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary::-webkit-details-marker,\\n' +\n '.dr-select-container summary::marker {\\n' +\n ' display: none; /* Hide marker for Webkit and standard */\\n' +\n '}',\n template:\n '<details dr-class=\"{\\n' +\n \" 'dr-select-container': true,\\n\" +\n \" 'is-open': @this@.isOpen,\\n\" +\n ' [@this@.classAttr]: @this@.classAttr\\n' +\n ' }\" dr-on-init=\"@this@.onInitDetailsElement($element)\" dr-option-complete=\"@this@.test()\" dr-event-toggle=\"@this@.toggle($element, $event)\">\\n' +\n '\\n' +\n ' #innerHTML#\\n' +\n '</details>\\n' +\n '<select hidden=\"hidden\" name=\"${@this@.name}$\" disabled=\"${@this@.disabled ? \\'disabled\\' : null}$\" style=\"width: 1500px; height:500px\" multiple>\\n' +\n ' <option dr-for-of=\"@this@.options\" value=\"${#it#.value}$\" selected=\"${#it#.selected ? \\'selected\\' : null}$\">#it# ${#it#.value}$</option>\\n' +\n '</select',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Select(config), config })\n });\n },\n selectSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-summary`,\n template:\n '<summary dr-class=\"{[@this@.classAttr]: @this@.classAttr}\"\\n' +\n ' dr-on-init=\"@this@.onInitSummaryElement($element, $event)\"\\n' +\n ' dr-event-click=\"@this@.onSummaryClick($element, $event)\"\\n' +\n '>\\n' +\n '#innerHTML#\\n' +\n '</summary>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Summary(), config })\n });\n },\n selectSummaryPlaceholder: stateComponentFactory(`${Select.selector}-summary-placeholder`, Select.SummaryPlaceholder),\n selectSummarySelected: stateComponentFactory(`${Select.selector}-summary-selected`, Select.SummarySelected),\n selectSummaryDisabled: stateComponentFactory(`${Select.selector}-summary-disabled`, Select.SummaryDisabled),\n\n selectBody: (config?: DomRenderRunConfig) => { // New export\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-body`,\n template: '<div dr-class=\"{[@this@.classAttr]: @this@.classAttr, \\'dr-select-body-container\\': true, [\\'dr-select-body-\\'+@this@.float+\\'-container\\']: @this@.float}\">#innerHTML#</div>',\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({rootObject: new Select.SelectBody(), config: config});\n }\n })\n },\n\n selectOption: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-option`,\n template:\n '<a dr-class=\"{[@this@.classAttr]: @this@.classAttr}\" dr-event-click=\"@this@.toggleSelected($event)\">#innerHTML#</a>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Option(), config })\n });\n },\n selectOptionSelected: stateComponentFactory(`${Select.selector}-option-selected`, Select.OptionSelected),\n selectOptionUnselected: stateComponentFactory(`${Select.selector}-option-unselected`, Select.OptionUnselected),\n selectOptionDisabled: stateComponentFactory(`${Select.selector}-option-disabled`, Select.OptionDisabled),\n};", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nexport namespace This {\n export const selector = 'dr-this';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n }\n\n export class This extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet\n private if?: boolean | null = null;\n private createArguments?: any[]\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any){\n component??=this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n this: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: This.selector,\n template: '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new This.This(...counstructorParam), config: config});\n }\n })\n }\n}\n\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\n\n\nexport namespace Timer {\n export const selector = 'dr-timer';\n export type Attribute = {\n timeSecond?: string;\n }\n\n // class RadioBase extends ComponentBase<Attribute> {\n // public hidden = true;\n //\n // }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.Checked`\n // })\n // export class RadioChecked extends RadioBase {\n // public name = 'Checked';\n //\n // constructor() {\n // super({ onlyParentType: Radio });\n // }\n // }\n //\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.UnChecked`\n // })\n // export class UnChecked extends RadioBase {\n // public name = 'unChecked';\n //\n // constructor() {\n // super({ onlyParentType: Radio });\n // }\n // }\n\n // @Component({\n // template: '#innerHTML#',\n // selector: `${selector}`,\n // noStrip: true\n // })\n export class Timer extends ComponentBase<Attribute> {\n private interval?: any;\n private timeSecond?: number;\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n console.log('---2', this.getElement()?.isConnected)\n // const element = this.getElement();\n // if(element){\n // (element as any).component = this;\n // }\n }\n\n isRunning() {\n return this.timeSecond !== undefined;\n }\n\n start() {\n const timeSecond = this.getAttribute('timeSecond');\n if (timeSecond) {\n this.timeSecond = parseInt(timeSecond);\n this.interval = setInterval(() => {\n // console.log('--------->',this.timeSecond)\n if (this.timeSecond) {\n this.timeSecond--;\n } else {\n clearInterval(this.interval);\n this.timeSecond = undefined;\n this.interval = undefined;\n }\n }, 1000)\n }\n }\n\n\n stop() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n this.timeSecond = undefined;\n }\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n console.log('-----', name, val, this.getElement())\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n if (this.interval){\n clearInterval(this.interval);\n }\n }\n }\n}\n\n\nexport default {\n choose: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Timer.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Timer.Timer(...counstructorParam), config: config});\n }\n })\n },\n}", "export * from './ComponentBase';\nexport * from './ComponentRouterBase';\nexport * from './ComponentSet';\nexport * from './a';\nexport * from './appender';\nexport * from './checkbox';\nexport * from './choose';\nexport * from './details';\nexport * from './forOf';\nexport * from './if';\nexport * from './input';\nexport * from './promise';\nexport * from './radio';\nexport * from './router';\nexport * from './select';\nexport * from './this';\nexport * from './timer';\n\nimport If from './if/If';\nimport This from './this/This';\nimport Appender from './appender/Appender';\nimport PromiseSwitch from './promise/PromiseSwitch';\nimport Choose from './choose/Choose';\nimport CheckBox from './checkbox/CheckBox';\nimport Radio from './radio/Radio';\nimport RouterOutlet from './router/RouterOutlet';\nimport Select from './select/Select';\nimport Timer from './timer/Timer';\nimport Details from './details/Details';\nimport Input from './input/Input';\nimport Route from './router/Route';\nimport A from './a/A';\n\nexport const drComponent = {\n ...If,\n ...This,\n ...Appender,\n ...PromiseSwitch,\n ...Choose,\n ...CheckBox,\n ...Radio,\n ...Select,\n ...Timer,\n ...Details,\n ...Input,\n ...Route,\n ...RouterOutlet,\n ...A,\n}", "import { DomRenderProxy } from './DomRenderProxy';\nimport { DomRenderConfig } from './configs/DomRenderConfig';\nimport { PathRouter } from './routers/PathRouter';\nimport { HashRouter } from './routers/HashRouter';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { DomRenderFinalProxy } from './types/Types';\nimport { RawSet } from './rawsets/RawSet';\nimport { DefaultMessenger } from './messenger/DefaultMessenger';\nimport { Router } from './routers/Router';\nimport { drComponent } from './components';\nimport { EventManager } from './events/EventManager';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type DomRenderRunConfig<T = any> = Omit<DomRenderConfig<T>, 'router' | 'uuid' | 'eventManager' | 'messenger' | 'root' | 'rootElement'> & { routerType?: 'path' | 'hash' | ((obj: T, window: Window) => Router) | Router };\nexport type CreateComponentParam = { type: ConstructorType<any> | any, tagName?: string, noStrip?: boolean, template?: string, styles?: string[] | string };\nlet eventManager: EventManager | null = null;\nexport type DomRenderRunParameter<T extends object> = { rootObject: T | (() => T), target?: Element | null, config?: DomRenderRunConfig | DomRenderConfig };\n\nexport class DomRender<T extends object = any> {\n private _config: DomRenderConfig;\n private _target: Element | null | undefined;\n private _rootObject: T;\n\n constructor(parameter: DomRenderRunParameter<T>, executeConfig?: { autoGo?: string }) {\n const s = DomRender.runSet(parameter);\n this._config = s.config;\n this._target = s.target;\n this._rootObject = s.rootObject;\n if (executeConfig && executeConfig?.autoGo) {\n this._config.router?.go(executeConfig.autoGo);\n }\n }\n\n public get rootObject(): T {\n return this._rootObject;\n }\n\n public get config(): DomRenderConfig {\n return this._config;\n }\n\n public get target(): Element | null |undefined {\n return this._target;\n }\n\n public static run<T extends object>(data: DomRenderRunParameter<T>): T {\n return DomRender.runSet(data).rootObject;\n }\n\n public static runSet<T extends object>({rootObject, target, config}: DomRenderRunParameter<T>): { rootObject: T, target?: Element | null, config: DomRenderConfig } {\n // public static run<T extends object>({rootObject, target, config}: DomRenderRunParameter<T>): T {\n // console.log('runSet')\n rootObject = typeof rootObject === 'function' ? rootObject() : rootObject;\n let targetObject = rootObject;\n if ('_DomRender_isProxy' in rootObject) {\n if (target) {\n ((rootObject as any)._DomRender_proxy as DomRenderProxy<T>).initRender(target);\n }\n targetObject = rootObject;\n // return targetObject;\n return {rootObject: targetObject, target, config: (rootObject as any)._domRender_config};\n }\n const targetConfig = Object.assign({}, config) as DomRenderConfig;\n eventManager ??= new EventManager(targetConfig.window);\n\n targetConfig.uuid = RandomUtils.uuid4();\n targetConfig.messenger = DomRenderFinalProxy.final(targetConfig.messenger ?? new DefaultMessenger(targetConfig));\n targetConfig.proxyExcludeTyps = targetConfig.proxyExcludeTyps ?? [];\n targetConfig.targetElements ??= [];\n\n\n if (typeof Window !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Window)) {\n targetConfig.proxyExcludeTyps.push(Window);\n }\n if (typeof Map !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Map)) {\n targetConfig.proxyExcludeTyps.push(Map);\n }\n if (typeof Set !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Set)) {\n targetConfig.proxyExcludeTyps.push(Set);\n }\n if (typeof Promise !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Promise)) {\n targetConfig.proxyExcludeTyps.push(Promise);\n }\n if (typeof ResizeObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === ResizeObserver)) {\n targetConfig.proxyExcludeTyps.push(ResizeObserver);\n }\n if (typeof ImageBitmap !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === ImageBitmap)) {\n targetConfig.proxyExcludeTyps.push(ImageBitmap);\n }\n if (typeof CanvasRenderingContext2D !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === CanvasRenderingContext2D)) {\n targetConfig.proxyExcludeTyps.push(CanvasRenderingContext2D);\n }\n if (typeof HTMLCanvasElement !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === HTMLCanvasElement)) {\n targetConfig.proxyExcludeTyps.push(HTMLCanvasElement);\n }\n if (!targetConfig.proxyExcludeTyps.some(it => it === RawSet)) {\n targetConfig.proxyExcludeTyps.push(RawSet);\n }\n if (!targetConfig.proxyExcludeTyps.some(it => it === DomRender)) {\n targetConfig.proxyExcludeTyps.push(DomRender);\n }\n targetConfig.rootElement = target;\n targetConfig.eventManager = eventManager;\n // (targetConfig.window as any).domRender ??= {configs: []};\n // (targetConfig.window as any).domRender.configs.push(targetConfig);\n const domRender = new DomRenderProxy(rootObject, target, targetConfig);\n const dest = new Proxy(rootObject, domRender);\n targetObject = dest;\n targetConfig.root = targetObject;\n\n // proxy \uB41C targetObject\uB97C \uB123\uC5B4\uC918\uC57C\uB418\uC11C \uB4A4\uCABD\uC5D0\uC11C router\uB97C \uC0DD\uC131\uD574\uC57C\uD568\n if (!targetConfig.router) {\n let targetRouter: Router<any> | undefined;\n if ('routerType' in config && config?.routerType === 'hash') {\n targetRouter = new HashRouter({rootObject: targetObject, window: targetConfig.window});\n } else if ('routerType' in config && config?.routerType === 'path') {\n targetRouter = new PathRouter({rootObject: targetObject, window: targetConfig.window});\n } else if ('routerType' in config && typeof config?.routerType === 'function') {\n targetRouter = config.routerType(targetObject, targetConfig.window);\n } else if ('routerType' in config && typeof config?.routerType === 'object') {\n targetRouter = config.routerType;\n }\n targetConfig.router = targetRouter;\n }\n\n for (const value of Object.values(drComponent)) {\n const a = value(targetConfig, DomRender);\n if (!targetConfig.targetElements.some(it => it.name === a.name)) {\n targetConfig.targetElements.push(a);\n }\n }\n // console.log('cccccccccccccccccc', targetRouter)\n // targetRouter.go({path: targetRouter.getUrl()})\n // if (!config.router) {\n // if (config.routerType === 'path') {\n // config.router = new PathRouter(targetObject, config.window);\n // } else if (config.routerType === 'hash') {\n // config.router = new HashRouter(targetObject, config.window);\n // } else { // none\n // config.router = new HashRouter(targetObject, config.window);\n // }\n // }\n domRender.run(targetObject);\n return {rootObject: targetObject, config: targetConfig, target};\n // return targetObject;\n }\n\n public static createComponent(param: CreateComponentParam) {\n // console.log('===>', typeof param.type, param.type.name, param.type.constructor.name)\n const component = RawSet.createComponentTargetElement(\n {\n name: param.tagName ?? (typeof param.type === 'function' ? param.type.name : param.type.constructor.name),\n objFactory: (e, o, r2, counstructorParam) => {\n return typeof param.type === 'function' ? new param.type(...counstructorParam) : param.type;\n },\n noStrip: param.noStrip,\n template: param.template ?? '',\n styles: Array.isArray(param.styles) ? param.styles : (param.styles ? [param.styles] : undefined)\n }\n );\n return component;\n }\n\n // ?? \uC5B8\uC81C \uC4F0\uB294\uAC70\uC9C0?? \uD6D4..\n public static createAttribute(attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment) {\n const targetAttribute = RawSet.createComponentTargetAttribute(\n attrName,\n getThisObj,\n factory\n );\n return targetAttribute;\n }\n}\n", "// TODO: \uB098\uC911\uC5D0 \uB123\uC5B4\uC57C\uB420\uAE4C \uC790\uC2DDelement\uAC00 \uC644\uB8CC\uB418\uC5C8\uC744\uB54C\uB294 on-rendered..\uBB50\uC774\uB7F0\uAC8C\uC788\uC5B4\uC11C. \uC774\uAC8C \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uCC98\uB7FC \uC790\uC2DD\uB4E4\uC774 \uB2E4 \uB9CC\uB4E4\uC5B4\uC9C0\uACE0 \uB0B4\uAC00 \uB9CC\uB4E4\uC5B4\uC9C0\uB294\uAC8C \uC544\uB2C8\uB77C. \uBE44\uB3D9\uAE30\uC801\uC73C\uB85C \uC774\uB8E8\uC5B4\uC9C0\uB2C8\uAE50 \uC54C\uC218\uAC00\uC5C6\uAE34\uD55C\uB370..\n// \uD6D4.. \uC6B0\uC120 \uBCF4\uB958 \uC544\uBB34\uB3C4 \uC0AC\uC6A9\uD558\uB294\uACF3\uC740 \uC5C6\uC74C\n/**\n * @deprecated \uC544\uC9C1 \uC801\uC6A9\uC548\uB428\n */\nexport interface OnCreateRendered {\n onCreateRendered(...param: any[]): void;\n}\nexport const isOnCreateRendered = (obj: any): obj is OnCreateRendered => {\n return typeof obj?.onCreateRendered === 'function';\n}", "export class Appender<T = any> implements Iterable<T> {\n // eslint-disable-next-line no-undef\n [key: number]: T[] | undefined;\n\n length = 0;\n\n keyMap: Map<string, number> = new Map();\n\n isAppender = true;\n constructor(...defaultDatas: T[]) {\n // console.log('defaultDatas', defaultDatas);\n this.push(...defaultDatas);\n // (this.childs as any).isAppender = true;\n }\n\n [Symbol.iterator](): Iterator<T> {\n const items = this.getAll();\n let idx = 0;\n return {\n next(value?: any): IteratorResult<T, any> {\n let r: IteratorResult<T> = {value: undefined, done: true};\n if (items.length > idx) {\n r = {value: items[idx], done: false};\n }\n idx++;\n return r;\n }\n }\n }\n\n set(key: string, ...v:T[]) {\n const o = this.keyMap.get(key);\n // console.log('set!!', o);\n if (o !== undefined) {\n this[o] = v;\n } else {\n this.keyMap.set(key, this.length);\n // console.log('setPush', v)\n this.push(...v);\n }\n }\n\n delete(key: string) {\n const o = this.keyMap.get(key);\n if (o !== undefined) {\n this[o] = [];\n this.keyMap.delete(key);\n // this.length--;\n }\n }\n\n\n getAll(): T[] {\n return this.getAlls().flat();\n }\n\n getAlls(): T[][] {\n const map = Array.from({length: this.length}).filter((it, idx) => this[idx]).map((it, idx) => this[idx]);\n return map as T[][];\n }\n\n push(...items: T[]): void {\n // console.log('----1>', items, items.length, this.length);\n if (items && items.length > 0) {\n (items as any).index = this.length;\n this[this.length++] = items;\n // this[this.length] = [];\n }\n // console.log('----2>', items, items.length, this.length);\n // console.log('---22->', this.length)\n // const appender = this.childs[this.lastIndex];\n // appender.values = items;\n // this.childs.push(new Appender(appender.index + 1));\n }\n\n // delete(idx: number): void {\n // // if (idx in this) {\n // // console.log('---------dele',idx)\n // // delete this[idx];\n // // this.length = this.length - 1;\n // // }\n // this.length = this.length - 1;\n // }\n\n // \uC778\uB371\uC2A4 \uC811\uADFC\uC744 \uC704\uD55C getter\uC640 setter \uCD94\uAC00\n // get(index: number): T | undefined {\n // return this.storage[index];\n // }\n //\n // set(index: number, value: T): void {\n // this.storage[index] = value;\n // this.length = Math.max(this.length, index + 1);\n // }\n\n\n clear(): void {\n // console.log('length', this.length);\n for (let i = 0; i < this.length; i++) {\n delete this[i];\n }\n this.keyMap.clear();\n this.length = 0;\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => !it.checked).length > 0);\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => it.checked).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class CheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class EmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n return value === undefined || value === null || ((value as any)?.length ?? 0) <= 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ExcludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const unCheckedValue = valus.filter(it => !it.checked).map(it => it.value);\n return unCheckedValue.length > 0 &&\n (!(unCheckedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? unCheckedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class FormValidator<E = HTMLFormElement> extends Validator<void, E> {\n constructor(target?: E, event?: Event, autoValid = true) {\n super(undefined, target, event, autoValid)\n }\n\n validAction(): boolean {\n return super.childValidAction();\n }\n\n valid(): boolean {\n return this.childValid()\n }\n\n reset() {\n this.targetReset();\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class IncludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const checkedValue = valus.filter(it => it.checked).map(it => it.value);\n return checkedValue.length > 0 &&\n (!(checkedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? checkedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class MultipleValidator<T = any, E = Element> extends Validator<T, E> {\n public validators: Validator<T, E>[];\n constructor(validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(value, target, event, autoValid);\n this.validators = validators.map(it => {\n it.setAutoValid(false);\n it.setAutoValidAction(false);\n return it;\n })\n this.validators.forEach(it => {\n it.set(this.value, this.getTarget(), this.getEvent())\n });\n }\n\n changeValue(value: T | undefined) {\n this.validators.forEach(it => it.set(this.value, this.getTarget(), this.getEvent()));\n }\n\n validAction(): boolean {\n return !(this.validators.filter(it => !it.validAction()).length > 0);\n }\n\n valid(): boolean {\n // console.log('mm', this.validators)\n return !(this.validators.filter(it => !it.valid()).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotEmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('NotEmptyValidator', value, value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0)\n return value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {DomRenderProxy} from '../DomRenderProxy';\n\nexport class NotRegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = DomRenderProxy.final(regexp)\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n if (value) {\n return !regExp.test(value);\n } else {\n return true;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class PassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return true;\n }\n}\n", "import {Validator} from './Validator';\nimport {DomRenderProxy} from '../DomRenderProxy';\n\nexport class RegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = DomRenderProxy.final(regexp)\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n // console.log('regexp-->', value, this.regexp, regExp.test(value))\n if (value) {\n return regExp.test(value);\n } else {\n return false;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RequiredValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('required', value, value !== undefined && value !== null)\n return value !== undefined && value !== null;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class UnCheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.getTarget() as any)?.checked ?? false);\n }\n}\n", "import {Validator} from './Validator';\nimport {MultipleValidator} from './MultipleValidator';\n\nexport type ValidMulltiple<T = any, E = Element> = (validators: Validator<T, E>[], value?: T, target?: E, event?: Event) => boolean;\n\nexport class ValidMultipleValidator<T = any, E = Element> extends MultipleValidator<T, E> {\n constructor(public validMultipleCallback: ValidMulltiple<T, E>, public validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(validators, value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validMultipleCallback(this.validators, this.value, this.getTarget(), this.getEvent());\n }\n}\n", "import {Valid, Validator} from './Validator';\n\nexport class ValidValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(public validCallBack: Valid<T, E>, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(value?:T, target?:E, event?:Event): boolean {\n return this.validCallBack(value, target, event);\n }\n}\n", "import {Valid, Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ValidValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public validCallBack: Valid<Validator<T, E>[], E>, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validCallBack(this.value, this.getTarget(), this.getEvent());\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;AAAA,OAAO;;;ACAP,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,eAAAA,qBAAmB;;;ACD5B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;;;ACAtB,IAAM,cAAN,MAAoD;AAAA,EAIvD,YAAY,OAA2B,MAAe;AAClD,SAAK,OAAO;AACZ,SAAK,QAAQ,SAAS;AAAA,EAC1B;AACJ;AAEO,IAAM,gBAAN,MAAgD;AAAA,EAKnD,YAAY,OAAe,MAAc,MAAc;AACnD,SAAK,WAAW,KAAK,SAAS;AAC9B,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,KAAK,OAAqC;AACtC,QAAI;AACJ,QAAI,KAAK,SAAS,KAAK,SAAS,KAAK,WAAW,KAAK,OAAO;AACxD,UAAI,IAAI,YAAY,KAAK,UAAU,KAAK;AACxC,WAAK,YAAY,KAAK;AAAA,IAC1B,WAAW,KAAK,SAAS,KAAK,SAAS,KAAK,aAAa,KAAK,OAAO;AACjE,UAAI,IAAI,YAAY,KAAK,UAAU,KAAK;AACxC,WAAK,YAAY,KAAK;AAAA,IAC1B,WAAW,KAAK,SAAS,KAAK,SAAS,KAAK,WAAW,KAAK,OAAO;AAC/D,UAAI,IAAI,YAAY,KAAK,UAAU,KAAK;AACxC,WAAK,YAAY,KAAK;AAAA,IAC1B,WAAW,KAAK,SAAS,KAAK,SAAS,KAAK,aAAa,KAAK,OAAO;AACjE,UAAI,IAAI,YAAY,KAAK,UAAU,KAAK;AACxC,WAAK,YAAY,KAAK;AAAA,IAC1B,WAAW,KAAK,aAAa,KAAK,OAAO;AACrC,UAAI,IAAI,YAAY,KAAK,UAAU,KAAK;AACxC,WAAK,YAAY,KAAK;AAAA,IAC1B,OAAO;AACH,UAAI,IAAI,YAAY,QAAW,IAAI;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AACJ;AAEO,IAAM,QAAN,MAAM,OAAkC;AAAA,EAG3C,YAAmB,OAAsB,MAAqB,OAAe,GAAG;AAA7D;AAAsB;AAAqB;AAF9D,SAAgB,UAAU;AAAA,EAG1B;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAsB;AAClC,WAAO,IAAI,cAAc,KAAK,OAAO,KAAK,MAAM,KAAK,IAAI;AAAA,EAC7D;AAAA,EAEA,IAAO,YAAkE,SAAoB;AACzF,WAAO,MAAM,KAAK,IAAI,EAAE,IAAI,UAAU;AAAA,EAC1C;AAAA,EAEA,OAAc,MAAM,OAAwB,MAAe,OAAe,GAAU;AAChF,QAAI,OAAO,UAAU,YAAY,SAAS,QAAW;AACjD,aAAO,IAAI,OAAM,GAAG,OAAO,IAAI;AAAA,IACnC,WAAW,OAAO,UAAU,UAAU;AAClC,YAAM,CAAC,QAAQ,QAAQ,GAAG,IAAI,MAAM,MAAM,IAAI;AAC9C,YAAM,CAAC,QAAQ,QAAQ,GAAG,IAAI,MAAM,MAAM,GAAG;AAC7C,aAAO,IAAI,OAAM,OAAO,OAAO,KAAK,CAAC,GAAG,OAAO,OAAO,KAAK,CAAC,GAAG,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,IACvF,OAAO;AACH,aAAO,IAAI,OAAM,OAAO,QAAQ,GAAG,IAAI;AAAA,IAC3C;AAAA,EACJ;AACJ;;;ADlEA,SAAS,mBAAmB;AAUrB,IAAM,gBAAN,MAAM,cAAa;AAAA,EA2GxB,YAAoB,QAAgB;AAAhB;AAzGpB,SAAgB,aAAa;AAAA,MAC3B;AAAA,MAAS;AAAA,MAAa;AAAA,MAAW;AAAA,MAAY;AAAA,MAAa;AAAA,MAAY;AAAA,MAAa;AAAA,MAAc;AAAA,MAAc;AAAA,MAC/G;AAAA,MAAS;AAAA,MAAW;AAAA,MAAY;AAAA,MAChC;AAAA,MAAU;AAAA,MAAS;AAAA,MAAU;AAAA,MAAU;AAAA,MAAS;AAAA,MAChD;AAAA,MAAS;AAAA,IACX;AAEA,SAAiB,sBAAiD;AAAA,MAChE,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AACA,SAAiB,qBAAqB,oBAAI,IAAI,CAAC,OAAO,CAAC;AAgFvD,SAAS,aAAa;AAAA,gBACR,cAAa,aAAa;AAAA,gBAC1B,cAAa,eAAe;AAAA,gBAC5B,cAAa,aAAa;AAAA,gBAC1B,cAAa,cAAc;AAAA,gBAC3B,cAAa,iBAAiB;AAAA,gBAC9B,cAAa,eAAe;AAAA,gBAC5B,cAAa,iBAAiB;AAAA,gBAC9B,cAAa,cAAc;AAAA,gBAC3B,cAAa,aAAa;AAAA;AAItC,SAAK,WAAW,QAAQ,QAAM;AAC5B,oBAAa,UAAU,KAAK,cAAa,aAAa,WAAW,EAAE;AAAA,IACrE,CAAC;AACD,kBAAa,UAAU,KAAK,cAAa,sBAAsB;AAE/D,QAAI,OAAO,WAAW,aAAa;AACjC,oBAAa,cAAc,QAAQ,eAAa;AAC9C,gBAAQ,iBAAiB,WAAW,CAACC,WAAU;AAC7C,gBAAM,aAAa,mBAAmB,SAAS;AAC/C,mBAAS,iBAAiB,IAAI,UAAU,GAAG,EAAE,QAAQ,QAAM;AACzD,kBAAM,SAAS,GAAG,aAAa,UAAU;AACzC,gBAAI,QAAQ;AACV,oBAAM,MAAM,KAAK,sBAAsB,EAAiB;AACxD,oBAAM,SAAS,mBAAmB,GAAG;AACrC,0BAAY,SAAS,GAAG,KAAK,UAAU,IAAI,MAAM,KAAK,KAAK,uBAAuBA,QAAO,IAAmB,KAAK,MAAM,CAAC;AAAA,YAC1H;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAED,YAAM,cAAc,KAAK,OAAO;AAC9B,YAAM,kBAAkB,oBAAI,IAAY;AACxC,WAAK,WAAW,QAAQ,eAAa;AACnC,YAAI,KAAK,mBAAmB,IAAI,SAAS,GAAG;AAC1C;AAAA,QACF;AACA,cAAM,qBAAqB,KAAK,oBAAoB,SAAS,KAAK;AAElE,YAAI,gBAAgB,IAAI,kBAAkB,GAAG;AAC3C;AAAA,QACF;AACA,wBAAgB,IAAI,kBAAkB;AACtC,oBAAY,iBAAiB,oBAAoB,KAAK,YAAY,KAAK,IAAI,GAAG,IAAI;AAAA,MACpF,CAAC;AAAA,IACL;AAAA,EACF;AAAA,EAEQ,YAAYA,QAAc;AAChC,UAAM,WAAW,KAAK,gBAAgBA,MAAK;AAE3C,eAAW,WAAW,UAAU;AAC9B,UAAIA,OAAM,cAAc;AACtB;AAAA,MACF;AAEA,YAAM,oBAAoB,KAAK,sBAAsB,QAAQ,OAAO;AACpE,UAAI,CAAC,mBAAmB;AACtB;AAAA,MACF;AAEA,WAAK,eAAeA,QAAO,SAAS,iBAAiB;AAAA,IACvD;AAAA,EACF;AAAA,EAEQ,gBAAgBA,QAA6B;AACnD,UAAM,WAA0B,CAAC;AACjC,UAAM,OAAQ,KAAK,OAAO;AAC1B,QAAI,CAAC,KAAM,QAAO;AAElB,UAAM,gBAAgBA,OAAM;AAC5B,QAAI,gBAAqC,cAAc,aAAa,IAC/D,gBACD,cAAc;AAClB,UAAM,oBAAoB,oBAAI,IAAiB;AAE/C,UAAM,WAAsC;AAAA,MAC1C,UAAU;AAAA,MACV,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,IACX;AACA,UAAM,kBAAkB,SAASA,OAAM,IAAI,KAAKA,OAAM;AAEtD,WAAO,eAAe;AACpB,UAAI,kBAAkB,IAAI,aAAa,GAAG;AACxC;AAAA,MACF;AAGA,YAAM,mBAAmB,cAAa,UAAU,KAAK,QAAM,GAAG,UAAU,mBAAmB,eAAe,aAAa,GAAG,IAAI,CAAC;AAC/H,UAAI,kBAAkB;AACpB,iBAAS,KAAK;AAAA,UACZ,SAAS;AAAA,UACT,MAAM,iBAAiB;AAAA,UACvB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU,iBAAiB;AAAA,QAC7B,CAAC;AAAA,MACH;AAGA,YAAM,YAAY,GAAG,cAAa,UAAU,SAAS,eAAe;AACpE,UAAI,cAAc,aAAa,SAAS,GAAG;AACzC,iBAAS,KAAK;AAAA,UACZ,SAAS;AAAA,UACT,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAGA,YAAM,iBAAiB,cAAa;AACpC,UAAI,cAAc,aAAa,cAAc,GAAG;AAC9C,cAAM,aAAa,cAAc,aAAa,GAAG,cAAc,OAAO;AACtE,YAAI,cAAc,WAAW,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC,EAAE,SAAS,eAAe,GAAG;AACpF,mBAAS,KAAK;AAAA,YACZ,SAAS;AAAA,YACT,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAEA,wBAAkB,IAAI,aAAa;AAEnC,UAAI,kBAAkB,KAAK,iBAAiB;AAC1C;AAAA,MACF;AAEA,sBAAgB,cAAc;AAAA,IAChC;AAEA,WAAO,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AAAA,EACxD;AAAA,EAEQ,sBAAsB,SAAkC;AAC9D,QAAI,UAAU;AACd,UAAM,OAAQ,KAAK,OAAO;AAC1B,WAAO,SAAS;AACd,UAAK,QAAgB,KAAK;AACxB,eAAQ,QAAgB;AAAA,MAC1B;AACA,UAAI,YAAY,KAAK,iBAAiB;AACpC;AAAA,MACF;AACA,gBAAU,QAAQ;AAAA,IACpB;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,uBAAuBA,QAAc,SAAsB,mBAAwB,QAAqC,YAAY,CAAC,GAAG;AAE9I,WAAO,OAAO,OAAO,mBAAmB;AAAA,MACtC,UAAU,OAAO,OAAO;AAAA,QACtB,OAAAA;AAAA,QACA;AAAA,QACA,QAAQA,OAAM;AAAA,QACd,WAAW,aAAa,qBAAqB,OAAO;AAAA,QACpD,QAAQ,QAAQ;AAAA,QAChB,OAAO,MAAM;AAAA,QACb,SAAS,cAAa,gBAAgB,QAAQ,SAAS,iBAAiB;AAAA,QACxE,GAAG,QAAQ;AAAA,QACX,GAAG;AAAA,MACL,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,eAAeA,QAAc,SAAsB,mBAAwB;AACjF,UAAM,EAAC,SAAS,MAAM,KAAI,IAAI;AAC9B,UAAM,SAAS,mBAAmB,iBAAiB;AAEnD,YAAQ,MAAM;AAAA,MACZ,KAAK;AACH,cAAM,UAAU,QAAQ,aAAa,IAAI;AACzC,YAAI,CAAC,WAAW,CAAC,QAAQ,SAAU;AAEnC,YAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,MAAM,GAAG;AACvG,gBAAM,gBAAiBA,OAAqB;AAC5C,cAAI,iBAAiB,QAAQ,SAAS,aAAa,GAAG;AACpD;AAAA,UACF;AAAA,QACF;AAEA,cAAM,oBAAoB,QAAQ,aAAa,cAAa,yBAAyB;AACrF,YAAI,UAAU;AACd,YAAI,mBAAmB;AACrB,oBAAU,YAAY,eAAe,mBAAmB,iBAAiB;AAAA,QAC3E;AAEA,cAAM,YAAY,QAAQ,aAAa,GAAG,IAAI,MAAM;AACpD,YAAI,QAAS,QAAgB,QAAQ,QAAQ;AAE7C,YAAI,WAAW;AACb,gBAAMC,WAAU,KAAK,uBAAuBD,QAAO,SAAS,SAAS,QAAQ,EAAC,MAAK,CAAC;AACpF,kBAAQ,YAAY,SAAS,UAAU,SAAS,IAAIC,QAAO;AAAA,QAC7D;AAEA,YAAI,OAAO,KAAK,SAAS,mBAAmB,SAAS,OAAO,MAAM,YAAY;AAC5E,eAAK,SAAS,mBAAmB,SAAS,OAAO,EAAE,OAAOD,MAAK;AAAA,QACjE,OAAO;AACL,eAAK,SAAS,mBAAmB,SAAS,KAAK;AAAA,QACjD;AACA;AAAA,MAEF,KAAK;AACH,cAAM,SAAS,QAAQ,aAAa,IAAI;AACxC,YAAI,CAAC,OAAQ;AAEb,YAAI,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,OAAO,GAAG;AACjH,gBAAM,gBAAiBA,OAAqB;AAC5C,cAAI,iBAAiB,QAAQ,SAAS,aAAa,GAAG;AACpD;AAAA,UACF;AAAA,QACF;AAEA,cAAM,UAAU,KAAK,uBAAuBA,QAAO,SAAS,mBAAmB,MAAM;AACrF,cAAM,eAAe,QAAQ,aAAa,GAAG,IAAI,SAAS;AAC1D,YAAI,SAAS;AAMb,YAAI,QAAQ;AACV,sBAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,IAAI,MAAM,IAAI,OAAO;AAAA,QACzE;AAOA;AAAA,MAEF,KAAK;AACH,cAAM,cAAc,QAAQ,aAAa,IAAI;AAC7C,YAAI,CAAC,YAAa;AAElB,YAAI,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,OAAO,GAAG;AACjH,gBAAM,gBAAiBA,OAAqB;AAC5C,cAAI,iBAAiB,QAAQ,SAAS,aAAa,GAAG;AACpD;AAAA,UACF;AAAA,QACF;AAEA,cAAM,aAAa,aAAa,qBAAqB,OAAO;AAC5D,cAAM,SAAS,CAAC;AAChB,cAAM,SAAS,OAAO;AACtB,eAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AACtF,iBAAO,EAAE,MAAM,OAAO,MAAM,CAAC,IAAI;AAAA,QACnC,CAAC;AAED,cAAM,eAAe,KAAK,uBAAuBA,QAAO,SAAS,mBAAmB,QAAQ,EAAC,OAAM,CAAC;AACpG,oBAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,IAAI,WAAW,IAAI,YAAY;AACjF;AAAA,IACJ;AAAA,EACF;AAAA,EAEO,iBAAiB,UAAsC,QAAwC;AACpG,UAAM,WAAW,oBAAI,IAAa;AAClC,UAAM,gBAAgB,QAAQ,aAAa,IAAI,QAAM,GAAG,QAAQ,KAAK,CAAC;AACtE,kBAAc,OAAO,CAAC,GAAG,cAAa,SAAS,CAAC,EAAE,QAAQ,cAAY;AACpE,gBAAU,iBAAiB,IAAI,QAAQ,GAAG,EAAE,QAAQ,QAAM;AACxD,iBAAS,IAAI,EAAE;AAAA,MACjB,CAAC;AAAA,IACH,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEO,WAAW,KAAU,YAA2C,QAA0B;AAC/F,eAAW,QAAQ,UAAQ;AACzB,UAAI,KAAK,aAAa,GAAG;AACvB,QAAC,KAAa,MAAM;AAAA,MACtB;AAAA,IACF,CAAC;AAED,SAAK,SAA2B,YAAY,cAAa,eAAe,CAAC,IAAIE,eAAc;AACzF,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,UAAU,MAAM;AACrB,aAAG,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAA2B,YAAY,cAAa,iBAAiB,CAAC,IAAIA,eAAc;AAC3F,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,YAAW,MAAM;AACtB,aAAG,UAAU;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAA4B,YAAY,cAAa,kBAAkB,CAAC,IAAIA,eAAc;AAC7F,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,aAAY,MAAM;AACvB,aAAG,WAAW;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAA2B,YAAY,cAAa,kBAAkB,CAAC,IAAIA,eAAc;AAC5F,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,aAAY,MAAM;AACvB,aAAG,WAAW;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAA2B,YAAY,cAAa,kBAAkB,CAAC,IAAIA,eAAc;AAC5F,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,aAAY,MAAM;AACvB,aAAG,WAAW;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAAsB,YAAY,cAAa,gBAAgB,CAAC,IAAIA,eAAc;AACrF,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,WAAU,MAAM;AACrB,aAAG,SAAS;AAAA,QACd;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAA2B,YAAY,cAAa,kBAAkB,CAAC,IAAIA,eAAc;AAC5F,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,aAAY,MAAM;AACvB,aAAG,WAAW;AAAA,QAChB;AAAA,MACF;AAAA,IACF,CAAC;AACD,SAAK,SAA4B,YAAY,cAAa,cAAc,CAAC,IAAIA,eAAc;AACzF,YAAM,SAASA;AACf,UAAI,QAAQ;AACV,cAAM,OAAO,YAAY,eAAe,QAAQ,GAAG;AACnD,YAAI,GAAG,SAAQ,MAAM;AACnB,aAAG,OAAO;AAAA,QACZ;AAAA,MACF;AAAA,IACF,CAAC;AAED,SAAK,SAAS,YAAY,cAAa,uBAAuB,CAAC,IAAIA,eAAc;AAC/E,YAAMC,OAAM,IAAI,IAAoB,KAAK,MAAMD,UAAS,CAAC;AACzD,MAAAC,KAAI,QAAQ,CAAC,GAAG,MAAM;AACpB,cAAM,OAAO,YAAY,SAAS,0CAA0C,CAAC,KAAK,OAAO,OAAO,KAAK;AAAA,UACnG,UAAU,OAAO,OAAO;AAAA,YACtB,SAAS;AAAA,YACT,WAAW,aAAa,qBAAqB,EAAE;AAAA,UACjD,CAAC;AAAA,QACH,CAAC,CAAC;AACF,YAAI,SAAS,MAAM;AACjB,aAAG,gBAAgB,CAAC;AAAA,QACtB,OAAO;AACL,aAAG,aAAa,GAAG,IAAI;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,kBAAa,cAAc,QAAQ,QAAM;AACvC,WAAK,SAA2B,YAAY,cAAa,aAAa,kBAAkB,IAAI,CAACC,KAAIF,eAAc;AAC7G,QAACE,IAAW,MAAM;AAAA,MACpB,CAAC;AAAA,IACH,CAAC;AAED,kBAAa,UAAU,QAAQ,cAAY;AACzC,WAAK,SAAsB,YAAY,SAAS,MAAM,CAAC,IAAI,YAAY;AAGrE,YAAI,SAAS;AACX,gBAAM,wBAAwB,GAAG,aAAa,cAAa,yBAAyB;AACpF,gBAAM,YAAY,GAAG,aAAa,GAAG,SAAS,IAAI,MAAM;AACxD,cAAI,UAAU;AACd,cAAI,uBAAuB;AACzB,sBAAU,YAAY,eAAe,uBAAuB,GAAG;AAAA,UACjE;AACA,gBAAM,WAAW,KAAK,SAAS,KAAK,SAAS,OAAO;AACpD,cAAI,OAAO,aAAa,cAAc,UAAU;AAC9C,gBAAI,WAAY,GAAW,SAAS,QAAQ;AAC5C,gBAAI,WAAW;AACb,yBAAW,YAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,WAAW,SAAS,IAAI,OAAO,OAAO,SAAS,EAAC,UAAU,OAAO,OAAO,EAAC,SAAS,IAAI,QAAQ,SAAS,OAAO,MAAM,OAAO,OAAO,UAAU,SAAS,cAAa,gBAAgB,QAAQ,SAAS,GAAG,GAAG,GAAG,QAAQ,eAAc,CAAC,EAAC,CAAC,CAAC;AAAA,YACrS;AACA,qBAAS,QAAQ;AAAA,UACnB,WAAW,UAAU;AACnB,gBAAI,WAAW;AACf,gBAAI,WAAW;AACb,yBAAW,YAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,WAAW,SAAS,IAAI,OAAO,OAAO,SAAS,EAAC,UAAU,OAAO,OAAO,EAAC,SAAS,IAAI,QAAQ,SAAS,OAAO,MAAM,OAAO,OAAO,UAAU,SAAS,cAAa,gBAAgB,QAAQ,SAAS,GAAG,GAAG,GAAG,QAAQ,eAAc,CAAC,EAAC,CAAC,CAAC;AAAA,YACrS;AACA,gBAAI,aAAa,MAAM;AACrB,iBAAG,gBAAgB,SAAS,QAAQ;AAAA,YACtC,OAAO;AACL,cAAC,GAAW,SAAS,QAAQ,IAAI;AAAA,YACnC;AAAA,UACF,WAAW,aAAa,QAAW;AACjC,iBAAK,SAAS,KAAK,SAAU,GAAW,SAAS,QAAQ,CAAC;AAAA,UAC5D;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,SAAK,mBAAmB,QAAQ,eAAa;AAC3C,YAAM,OAAO,GAAG,cAAa,UAAU,SAAS,SAAS;AACzD,WAAK,SAAsB,YAAY,MAAM,CAAC,SAAS,WAAW;AAChE,cAAM,UAAU,CAACJ,WAAiB;AAChC,gBAAM,oBAAoB,KAAK,sBAAsB,OAAO;AAC5D,cAAI,CAAC,kBAAmB;AAExB,gBAAM,UAAU,KAAK,uBAAuBA,QAAO,SAAS,mBAAmB,MAAM;AACrF,gBAAM,eAAe,QAAQ,aAAa,GAAG,IAAI,SAAS;AAC1D,cAAI,SAAS;AACb,cAAI,cAAc;AAChB,qBAAS,YAAY,SAAkB,GAAG,KAAK,cAAc,MAAM,CAAC,WAAW,YAAY,IAAI,OAAO,KAAK;AAAA,UAC7G;AACA,cAAI,QAAQ;AACV,wBAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,IAAI,MAAM,IAAI,OAAO;AAAA,UACzE;AAAA,QACF;AACA,gBAAQ,iBAAiB,WAAW,OAAO;AAAA,MAE7C,CAAC;AAAA,IACH,CAAC;AAED,SAAK,SAAsB,YAAY,cAAa,gBAAgB,CAAC,IAAIE,eAAc;AACrF,UAAI,SAASA;AACb,UAAI,QAAQ;AACV,iBAAS,YAAY;AAAA,MACvB;AACA,UAAI,QAAQ;AACV,oBAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,KAAK,MAAM,KAAK,OAAO,OAAO,KAAK;AAAA,UACnF,UAAU,OAAO,OAAO;AAAA,YACtB,SAAS;AAAA,YACT,WAAW,aAAa,qBAAqB,EAAE;AAAA,YAC/C,GAAG,QAAQ;AAAA,UACb,CAAC;AAAA,QACH,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,CAAC;AAED,SAAK,gBAAgB,KAAK,YAAY,MAAM;AAC5C,SAAK,UAAU,KAAK,YAAY,QAAW,MAAM;AACjD,UAAM,WAAW,MAAM,KAAK,UAAU,EAAE,OAAO,QAAM,GAAG,aAAa,CAAC,EAAE,IAAI,QAAM,EAAa;AAC/F,aAAS,QAAQ,QAAM;AACrB,cAAQ,aAAa,OAAO,QAAM,GAAG,aAAa,GAAG,QAAQ,MAAM,IAAI,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI,GAAG,aAAa,GAAG,QAAQ,GAAI,GAAG,CAAC;AAAA,IAC5I,CAAC;AAAA,EACH;AAAA,EAEO,gBAAgB,KAAU,YAAoD,QAA0B;AAC7G,SAAK,SAA2B,YAAY,cAAa,wBAAwB,CAAC,IAAIA,eAAc;AAClG,UAAI,CAAC,GAAG,aAAa;AACnB;AAAA,MACF;AACA,UAAI,SAASA;AACb,UAAI,QAAQ;AACV,iBAAS,YAAY;AAAA,MACvB;AACA,UAAI,QAAQ;AACV,oBAAY,SAAS,GAAG,KAAK,cAAc,MAAM,CAAC,KAAK,MAAM,KAAK,OAAO,OAAO,KAAK;AAAA,UACnF,UAAU,OAAO,OAAO;AAAA,YACtB,SAAS;AAAA,YACT,WAAW,aAAa,qBAAqB,EAAE;AAAA,YAC/C,GAAG,QAAQ;AAAA,UACb,CAAC;AAAA,QACH,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,UAAU,KAAU,UAAyC,SAAkB,QAA0B;AAE9G,SAAK,SAAS,UAAU,cAAa,eAAe,CAAC,IAAIA,eAAc;AACrE,UAAI,SAASA;AACb,UAAI,QAAQ;AACV,iBAAS,YAAY;AAAA,MACvB;AACA,UAAI,cAAa,eAAe,QAAQ,OAAO,KAAK,YAAY,QAAW;AACzE,cAAM,OAAO,YAAY,SAAS,4CAA4C,MAAM,KAAK,OAAO,OAAO,KAAK;AAAA,UAC1G,UAAU,OAAO,OAAO;AAAA,YACtB,SAAS;AAAA,YACT,WAAW,aAAa,qBAAqB,EAAE;AAAA,UACjD,CAAC;AAAA,QACH,CAAC,CAAC;AACF,YAAI,OAAO,SAAS,UAAU;AAC5B,aAAG,aAAa,SAAS,IAAI;AAAA,QAC/B,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,aAAG,aAAa,SAAS,KAAK,KAAK,GAAG,CAAC;AAAA,QACzC,OAAO;AACL,qBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC/C,gBAAI,cAAc,aAAa;AAC7B,cAAC,GAAG,MAAc,GAAG,IAAI,OAAO,KAAK;AAAA,YACvC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAED,SAAK,SAAS,UAAU,cAAa,eAAe,CAAC,IAAIA,eAAc;AACrE,UAAI,SAASA;AACb,UAAI,QAAQ;AACV,iBAAS,YAAY;AAAA,MACvB;AACA,UAAI,cAAa,eAAe,QAAQ,OAAO,KAAK,YAAY,QAAW;AACzE,cAAM,OAAO,YAAY,SAAS,mCAAmC,MAAM,KAAK,OAAO,OAAO,KAAK;AAAA,UACjG,UAAU,OAAO,OAAO;AAAA,YACtB,SAAS;AAAA,YACT,WAAW,aAAa,qBAAqB,EAAE;AAAA,UACjD,CAAC;AAAA,QACH,CAAC,CAAC;AAEF,YAAI,OAAO,SAAS,UAAU;AAC5B,aAAG,aAAa,SAAS,IAAI;AAAA,QAC/B,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,aAAG,aAAa,SAAS,KAAK,KAAK,GAAG,CAAC;AAAA,QACzC,OAAO;AACL,qBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC/C,gBAAI,cAAc,aAAa;AAC7B,kBAAI,OAAO;AACT,mBAAG,UAAU,IAAI,GAAG;AAAA,cACtB,OAAO;AACL,mBAAG,UAAU,OAAO,GAAG;AAAA,cACzB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,SAAsC,WAAmD,oBAAI,IAAI,GAAG,UAAkB,UAA0D;AACrL,UAAM,OAAO,oBAAI,IAAa;AAC9B,aAAS,QAAQ,QAAM;AACrB,UAAI,CAAC,IAAI;AACP;AAAA,MACF;AACA,UAAI,GAAG,aAAa,GAAG;AACrB,cAAM,IAAI;AACV,aAAK,IAAI,CAAC;AACV,UAAE,iBAAoB,IAAI,QAAQ,GAAG,EAAE,QAAQ,CAAAE,QAAM;AACnD,eAAK,IAAIA,GAAE;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,QAAM;AACjB,YAAM,OAAO,GAAG,aAAa,QAAQ;AACrC,YAAM,QAAQ,aAAa,qBAAqB,EAAE;AAClD,UAAI,MAAM;AACR,iBAAS,IAAS,MAAM,KAAK;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,SAAkB,KAAU,MAAc,SAAkB;AACjE,QAAI,IAAI,YAAY,eAAe,MAAM,GAAG;AAC5C,QAAI,OAAO,MAAM,YAAY;AAC3B,UAAI,EAAE,KAAK,WAAW,GAAG;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,KAAU,MAAc,OAAa;AACnD,WAAO,KAAK,WAAW,SAAS,YAAY;AAC5C,gBAAY,SAAS,GAAG,IAAI,kBAAkB;AAAA,MAC5C,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAc,eAAe,MAAiC,SAA6C;AACzG,QAAI,WAAW,MAAM;AACnB,UAAI,QAAQ,WAAW,OAAO,GAAG;AAC/B,kBAAU,QAAQ,QAAQ,UAAU,EAAE;AAAA,MACxC;AAEA,oBAAa,SAAS,QAAQ,QAAM;AAElC,eAAO,KAAM,QAAQ,OAAO,GAAG,QAAQ,KAAK,KAAK,GAAG,GAAG,GAAG,WAAW,EAAE,EAAE;AAAA,MAC3E,CAAC;AACD,YAAM,gBAAgB,YAAY,KAAK,qBAAqB,QAAQ,IAAI,EAAC,aAAa,KAAI,CAAC;AAC3F,aAAO,cAAc,IAAI,OAAO;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,gBAAgB,SAA2C,KAA4C;AACnH,QAAI,SAAS;AACX,YAAM,aAAa,OAAO,OAAO,CAAC,GAAG,OAAO;AAC5C,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AACrD,YAAI,OAAO,UAAU,YAAY;AAC/B,qBAAW,GAAG,IAAI,MAAM,KAAK,GAAG;AAAA,QAClC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,cAAc,QAA0B;AACtC,QAAI,QAAQ,gBAAgB;AAC1B,YAAM,aAAa,OAAO,QAAQ,OAAO,cAAc,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,WAAW,SAAS,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACjJ,eAAO,SAAS,GAAG,oBAAoB,GAAG;AAAA,MAC5C,CAAC,EAAE,KAAK,GAAG;AACX,aAAO,KAAK,aAAa,KAAK;AAAA,IAChC,OAAO;AACL,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AACF;AAvsBa,cACY,aAAa;AADzB,cAiBG,4BAA4B,cAAa,aAAa;AAjBzD,cAmBY,aAAa,cAAa,aAAa;AAnBnD,cAoBY,iBAAiB,cAAa,aAAa;AApBvD,cAqBY,gBAAgB,cAAa,aAAa;AArBtD,cAsBY,kBAAkB,cAAa,aAAa;AAtBxD,cAuBY,mBAAmB,cAAa,aAAa;AAvBzD,cAwBY,mBAAmB,cAAa,aAAa;AAxBzD,cAyBY,mBAAmB,cAAa,aAAa;AAzBzD,cA0BY,iBAAiB,cAAa,aAAa;AA1BvD,cA2BY,mBAAmB,cAAa,aAAa;AA3BzD,cA4BY,eAAe,cAAa,aAAa;AAAA;AA5BrD,cA+BG,YAAY;AAAA,EACxB,EAAC,MAAM,cAAa,aAAa,cAAc,UAAU,SAAS,OAAO,QAAO;AAAA,EAChF,EAAC,MAAM,cAAa,aAAa,eAAe,UAAU,SAAS,OAAO,QAAO;AAAA,EACjF,EAAC,MAAM,cAAa,aAAa,iBAAiB,UAAU,SAAS,OAAO,QAAO;AAAA,EACnF,EAAC,MAAM,cAAa,aAAa,gBAAgB,UAAU,WAAW,OAAO,SAAQ;AAAA,EACrF,EAAC,MAAM,cAAa,aAAa,aAAa,UAAU,QAAQ,OAAO,SAAQ;AACjF;AAAA;AArCW,cAuCY,wBAAwB,cAAa,aAAa;AAvC9D,cAyCY,yBAAyB,cAAa,aAAa;AAzC/D,cA2CY,eAAe,cAAa,aAAa;AA3CrD,cA4CY,wBAAwB,cAAa,aAAa;AA5C9D,cA6CY,gBAAgB,cAAa,aAAa;AA7CtD,cA8CY,gBAAgB,cAAa,aAAa;AA9CtD,cAgDY,gBAAgB;AAhD5B,cAiDY,kBAAkB;AAjD9B,cAkDY,cAAc;AAlD1B,cAmDY,iBAAiB;AAnD7B,cAoDY,iBAAiB;AApD7B,cAqDY,oBAAoB;AArDhC,cAsDY,sBAAsB;AAtDlC,cAuDY,sBAAsB;AAvDlC,cAwDY,uBAAuB;AAxDnC,cAyDY,gBAAgB;AAzD5B,cA0DY,iBAAiB;AA1D7B,cA2DY,qBAAqB;AA3DjC,cA4DY,kBAAkB;AA5D9B,cA6DY,iBAAiB;AA7D7B,cA8DY,gBAAgB;AA9D5B,cA+DY,oBAAoB;AA/DhC,cAgEY,oBAAoB;AAhEhC,cAiEY,oBAAoB;AAjEhC,cAkEY,4BAA4B;AAlExC,cAmEY,2BAA2B;AAnEvC,cAoEY,uBAAuB;AApEnC,cAqEY,4BAA4B;AArExC,cAsEY,yBAAyB;AAtErC,cAuEY,WAAW,CAAC,cAAa,iBAAiB,cAAa,aAAa,cAAa,gBAAgB,cAAa,eAAe,cAAa,gBAAgB,cAAa,iBAAiB,cAAa,gBAAgB,cAAa,eAAe,cAAa,mBAAmB,cAAa,mBAAmB,cAAa,mBAAmB,cAAa,mBAAmB,cAAa,2BAA2B,cAAa,0BAA0B,cAAa,mBAAmB;AAvE5e,cAyEY,wBAAwB;AAzEpC,cA0EY,sBAAsB;AA1ElC,cA2EY,gBAAgB,CAAC,cAAa,uBAAuB,cAAa,mBAAmB;AA3EjG,cA4EY,YAAY;AAAA,EACjC,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa;AAAA,EACb,cAAa,aAAa,kBAAkB,cAAa;AAAA,EACzD,cAAa,aAAa,kBAAkB,cAAa;AAAA,EACzD,cAAa;AAAA,EACb,GAAG,cAAa,UAAU,IAAI,QAAM,GAAG,IAAI;AAAA,EAC3C,cAAK;AACP;AA9FK,IAAM,eAAN;;;ADVP,SAAS,gBAAAC,qBAAoB;;;AGC7B,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,eAAAC,oBAAmB;AAyBrB,IAAe,mBAAf,MAAyC;AAAA,EAC9C,YAAmB,QACA,QACA,iBACA,eACA,QACA,eACA,kBAAkB,MAAM;AANxB;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACnB;AAAA,EAEA,MAAM,QAA+B;AACnC,QAAI,YAAY,KAAK,cAAc;AAEnC,QAAI,KAAK,OAAO,gBAAgB,YAAY;AAC1C,kBAAY,KAAK,OAAO,eAAe,WAAW,WAAW,IAAI,KAAK;AAAA,IACxE;AAEA,QAAI,IAAI;AACR,QAAI,KAAK,KAAK,iBAAiB;AAC7B,YAAM,eAAeC,aAAY,KAAK,oBAAoB,SAAS;AACnE,UAAIC,aAAY,SAAS,IAAI,KAAK,OAAO,UAAU,YAAY,YAAY,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,EAAC,UAAU,KAAK,OAAM,CAAC,CAAC;AAAA,IACxI;AACA,QAAI,KAAK,OAAO,gBAAgB,QAAQ;AACtC,UAAI,KAAK,OAAO,gBAAgB,OAAO,GAAG,IAAI;AAAA,IAChD;AAEA,UAAM,QAAQ,MAAM,KAAK,QAAQ,CAAiB;AAElD,SAAK,OAAO,gBAAgB,QAAQ,GAAG,IAAI;AAC3C,WAAO;AAAA,EACT;AAGF;;;AC9DO,IAAM,QAAN,cAAoB,iBAAuB;AAAA,EAC9C,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,aAAa;AAAA,EAC/E;AAAA,EAEA,MAAM,QAAQ,OAAoC;AAC9C,WAAQ,SAAS;AAAA,EACrB;AACJ;;;ACTO,IAAe,8BAAf,cAAsD,iBAAoB;AAAA,EAC7E,YAAY,QACA,QACA,iBACA,eACA,QACA,eACA,kBAAkB,MAAM;AAChC,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,eAAe;AAAA,EAChG;AAAA,EAEA,MAAM,QAAQ,MAAgC;AAC1C,QAAI,CAAC,KAAK,cAAc,MAAM;AAC1B;AAAA,IACJ;AACA,WAAO,MAAM,KAAK,mBAAmB,IAAI;AAAA,EAC7C;AAGJ;;;ACtBA,SAAQ,eAAAC,oBAAkB;AAKnB,IAAM,KAAN,cAAiB,4BAAkC;AAAA,EACtD,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,aAAa;AAAA,EAC/E;AAAA,EAEA,MAAM,mBAAmB,MAAmC;AACxD,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,OAAO;AACpE,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AACvE,IAAAC,aAAY,SAAS;AAAA,sBACP,KAAK,OAAO,UAAU;AAAA;AAAA,mCAET,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAW9C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC3C,UAAU,OAAO,OAAO;AAAA,QACpB,KAAK;AAAA,QACL,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,GAAG,KAAK;AAAA,MACZ,CAAW;AAAA,IACf,CAAC,CAAC;AACF,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAC1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AACJ;;;AC7CA,SAAS,eAAAC,oBAAmB;AAI5B,SAAS,eAAAC,oBAAmB;AAErB,IAAM,OAAN,cAAmB,4BAAoC;AAAA,EAC5D,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACxJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACpF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC5D,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,SAAS,MAAM;AAC5E,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AAEvE,UAAM,YAAYC,aAAY,SAAS;AAAA,kBACzB,KAAK,OAAO,UAAU;AAAA,kBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA,wCACvBD,aAAY,KAAK,oBAAoB,IAAI,CAAC;AAAA;AAAA;AAAA,iCAGjDA,aAAY,KAAK,oBAAoB,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,mCAIxC,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAYpD,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA;AAAA,mBAE3C,OAAO;AAAA,MAAO,KAAK,OAAO;AAAA,MACvC;AAAA,QACE,UAAU,OAAO,OAAO;AAAA,UACtB,KAAK;AAAA,UACL,QAAQ,KAAK,cAAc;AAAA,UAC3B,mBAAmB,OAAO;AAAA,UAC1B,eAAe,KAAK,cAAc,MAAM;AAAA,UACxC,GAAG,KAAK;AAAA,QACV,CAAW;AAAA,MACb;AAAA,IACF,CAAC;AAED,QAAI,cAAc,OAAO;AACvB;AAAA,IACF;AACA,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAE1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACF;AACF;;;ACpEO,IAAM,SAAN,MAAa;AAEpB;AACO,IAAM,sBAAN,MAAuE;AAAA,EAC1E,IAAI,QAAW,GAAoB,OAAY,UAAwB;AACnE,IAAC,OAAe,CAAC,IAAI;AACrB,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,QAAW,GAAoB,UAAoB;AACnD,WAAQ,OAAe,CAAC;AAAA,EAC5B;AAAA,EAEA,OAAc,MAAgB,KAAW;AACrC,IAAC,IAAY,qBAAqB;AAClC,WAAO;AAAA,EACX;AAAA,EAEA,OAAc,QAAkB,KAAQ;AACpC,WAAO,wBAAyB;AAAA,EACpC;AAAA,EAEA,OAAc,QAAkB,KAAW;AACvC,WAAQ,IAAY;AACpB,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,QAAW,GAA6B;AACxC,WAAO,MAAM,wBAAwB,KAAK;AAAA,EAC9C;AACJ;;;AC3BO,IAAM,eAAN,MAA4B;AAAA,EAI/B,YAAmB,KAAQ,QAA2D,QAA6B;AAAhG;AACf,SAAK,YAAY,OAAO;AACxB,SAAK,UAAU,OAAO;AACtB,SAAK,UAAU,oBAAoB,MAAM,OAAO,OAAO,EAAC,SAAS,MAAK,GAAyB,MAAM,CAAC;AAAA,EAC1G;AAAA,EACA,IAAI,WAAW;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA,EACO,iBAAiB,KAAwD;AAC5E,SAAK,YAAY,IAAI;AACrB,SAAK,UAAU,IAAI;AAAA,EACvB;AACJ;;;ACtBO,IAAM,mBAAmB,CAAC,QAAoC;AACjE,SAAO,OAAO,KAAK,mBAAmB;AAC1C;;;ACFO,IAAM,iBAAiB,CAAC,QAAkC;AAC7D,SAAO,OAAO,KAAK,iBAAiB;AACxC;;;ACCA,SAAS,eAAAE,oBAAmB;AAGrB,IAAM,SAAN,cAAqB,4BAAoC;AAAA,EAC9D,MAAM,mBAAmB,MAAkC;AAGzD,UAAM,WAAW,KAAK,cAAc,MAAM,oBAAoB,KAAK,cAAc,MAAM;AACvF,UAAM,KAAKA,aAAY,SAAS;AAAA,kBAClB,KAAK,OAAO,UAAU;AAAA;AAAA,gCAER,KAAK,cAAc,MAAM,MAAM;AAAA,mCAC5B,QAAQ;AAAA;AAAA;AAAA;AAAA,yCAIF,KAAK,cAAc,MAAM,MAAM,KAAK,KAAK,cAAc,MAAM,UAAU,MAAM,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKtI,OAAO;AAAA,MAAO,KAAK,OAAO;AAAA,MACvC;AAAA,QACE,UAAU,OAAO,OAAO;AAAA,UACtB,QAAQ,KAAK,cAAc;AAAA,UAC3B,mBAAmB,OAAO;AAAA,UAC1B,GAAG,KAAK;AAAA,QACV,CAAW;AAAA,MACb;AAAA,IACF,CAAC;AAQD,QAAI,QAAQ,KAAK,cAAc,MAAM,UAAU,IAAI;AACjD,UAAI,WAAW,KAAK,cAAc,MAAM;AAGxC,UAAI,gBAAgB,cAAc;AAOhC,YAAI,KAAK,QAAQ,oBAAoB,QAAQ,KAAK,KAAK;AACrD,cAAI,iBAAiB,KAAK,OAAO,oBAAoB,GAAG,GAAG;AACzD,iBAAK,OAAO,oBAAoB,KAAK,iBAAiB;AAAA,UACxD;AAAA,QACF;AAGA,YAAI,KAAK,QAAQ,oBAAoB,QAAQ,KAAK,KAAK;AACrD,cAAI,eAAe,KAAK,GAAG,GAAG;AAC5B,iBAAK,KAAK,eAAe;AAAA,UAC3B;AAAA,QACF;AAEA,mBAAW,GAAG,KAAK,cAAc,MAAM,MAAM,GAAG,KAAK,OAAO,UAAW,MAAM,KAAK,OAAO,UAAW,EAAE;AAGtG,aAAK,YAAY,QAAQ;AACzB,cAAM,gBAAgB,MAAM,OAAO,aAAa,KAAK,QAAQ,KAAK,cAAc,SAAS,UAAU,KAAK,cAAc,MAAM,eAAe,IAAI,KAAK,cAAc,MAAM,eAAe,KAAK,OAAO,KAAK,KAAK,OAAO,QAAQ,IAAI;AAChO,YAAI,eAAe;AACjB,eAAK,gBAAgB,IAAI,OAAO,aAAa;AAC7C,eAAK,cAAc,4BAA4B,KAAK,IAAI;AAAA,QAC1D;AAAA,MAEF,OAAO;AACL,aAAK,YAAY,QAAQ;AACzB,cAAM,WAAW,MAAM,OAAO,aAAa,KAAK,QAAQ,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,QAAQ,KAAK,cAAc,MAAM,eAAe,IAAI,KAAK,cAAc,MAAM,eAAe,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AAC5O,YAAI,UAAU;AACZ,eAAK,gBAAgB,IAAI,OAAO,QAAQ;AAAA,QAC1C;AAAA,MACF;AAIA,YAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,WAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,WAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AAAA,IACtC,OAAO;AACL,WAAK,cAAc,QAAQ,OAAO;AAAA,IACpC;AACA;AAAA,EACF;AAAA,EAGA,YAAY,UAAkB;AAI5B,QAAI,KAAK,OAAO,MAAM,iBAAiB,KAAK,OAAO,OAAO,OAAO,mBAAmB,KAAK,OAAO,MAAM,eAAe,KAAK,OAAO,OAAO,OAAO,iBAAiB;AAC9J,WAAK,OAAO,MAAM,MAAM,aAAa,aAAa,QAAQ;AAC1D,WAAK,OAAO,MAAM,IAAI,aAAa,aAAa,QAAQ;AAAA,IAC1D;AAAA,EACF;AACF;;;AC1GA,SAAQ,eAAAC,oBAAkB;;;ACMnB,IAAe,YAAf,MAAe,WAAgC;AAAA,EAMlD,YAAsB,QAAY,QAAYC,QAAe,YAAY,MAAM,kBAAkB,MAAM;AAAjF;AAClB,SAAK,UAAU,MAAM;AACrB,SAAK,SAASA,MAAK;AACnB,SAAK,aAAa,SAAS;AAC3B,SAAK,mBAAmB,eAAe;AAAA,EAC3C;AAAA,EAEA,iBAAgD;AAC5C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,eAAe,OAA0B;AACrC,SAAK,eAAe;AACpB,WAAO;AAAA,EACX;AAAA,EAEA,eAAe;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,aAAa,WAAoB;AAC7B,SAAK,aAAa;AAClB,WAAO;AAAA,EACX;AAAA,EAEA,qBAAqB;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,mBAAmB,WAAoB;AACnC,SAAK,mBAAmB;AACxB,WAAO;AAAA,EACX;AAAA,EAEA,WAAW;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAASA,QAA0B;AAC/B,QAAIA,QAAO;AACP,WAAK,SAAS,KAAK,eAAeA,MAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACX;AAAA,EAEA,YAAY;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,cAAc;AACV,IAAC,KAAK,SAAiB,QAAQ;AAAA,EACnC;AAAA,EAEA,cAAc;AACV,IAAC,KAAK,SAAiB,QAAQ;AAAA,EACnC;AAAA,EAEA,oBAAoBA,QAAc;AAC9B,WAAQ,KAAK,SAAiB,cAAcA,MAAK;AAAA,EACrD;AAAA,EAEA,UAAU,QAAuB;AAC7B,QAAI,QAAQ;AACR,WAAK,UAAU,KAAK,eAAe,MAAM;AAAA,IAC7C;AACA,WAAO;AAAA,EACX;AAAA,EAEQ,eAAe,KAAU;AAC7B,IAAC,IAAY,qBAAqB;AAClC,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,QAAuB;AACvB,QAAI,KAAK,WAAW,UAAa,KAAK,WAAW,MAAM;AACnD,WAAK,SAAU,KAAK,UAAU,GAAW;AAAA,IAC7C;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM,OAAsB;AAE5B,SAAK,SAAS;AACd,SAAK,UAAU,KAAK;AAAA,EACxB;AAAA,EAEU,UAAU,OAAsB;AACtC,SAAK,YAAY,KAAK;AACtB,UAAM,SAAS,KAAK,UAAU;AAC9B,QAAI,UAAU,QAAQ,UAAU,UAAa,QAAQ,UAAU,MAAM;AACjE,UAAI;AACA,eAAO,QAAQ,KAAK;AAAA,MACxB,SAAS,GAAG;AACR,gBAAQ,MAAM,gCAAgC;AAAA,MAClD;AAAA,IACJ;AACA,QAAI,KAAK,mBAAmB,GAAG;AAC3B,WAAK,YAAY;AAAA,IACrB,WAAW,KAAK,aAAa,GAAG;AAC5B,WAAK,MAAM;AAAA,IACf;AAAA,EACJ;AAAA,EAEA,IAAI,OAAU,QAAYA,QAAe;AACrC,SAAK,UAAU,MAAM;AACrB,SAAK,SAASA,MAAK;AACnB,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,YAAY,OAAsB;AAAA,EAClC;AAAA,EAEA,IAAI,UAAmB;AACnB,WAAQ,KAAK,UAAU,GAAW,WAAW;AAAA,EACjD;AAAA,EAEA,IAAI,QAAQ,SAAkB;AAC1B,UAAM,SAAS,KAAK,UAAU;AAC9B,QAAI,QAAQ;AACR,aAAO,UAAU;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,IAAI,gBAAwB;AACxB,WAAQ,KAAK,UAAU,GAAW,iBAAiB;AAAA,EACvD;AAAA,EAEA,IAAI,cAAc,eAAuB;AACrC,UAAM,SAAS,KAAK,UAAU;AAC9B,QAAI,QAAQ;AACR,aAAO,gBAAgB;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEO,cAAc,UAAkB;AACnC,WAAQ,KAAK,UAAU,GAA0B,cAAc,QAAQ;AAAA,EAC3E;AAAA,EAEO,iBAAiB,UAAkB;AACtC,WAAQ,KAAK,UAAU,GAA0B,iBAAiB,QAAQ;AAAA,EAC9E;AAAA,EAEO,cAAc;AACjB,UAAM,QAAQ,KAAK,MAAM;AACzB,SAAK,eAAe,IAAI,OAAO,KAAK,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAC5E,WAAO;AAAA,EACX;AAAA,EAUO,UAAmB;AACtB,WAAO,CAAC,KAAK,MAAM;AAAA,EACvB;AAAA,EAEO,WAAW;AACd,WAAO,KAAK,MAAM,KAAK,KAAK,aAAa;AAAA,EAC7C;AAAA,EAEO,iBAAiB;AACpB,WAAO,KAAK,YAAY,KAAK,KAAK,mBAAmB;AAAA,EACzD;AAAA,EAEO,aAAa;AAChB,WAAO,CAAC,KAAK,SAAS;AAAA,EAC1B;AAAA,EAEO,mBAAmB;AACtB,WAAO,CAAC,KAAK,eAAe;AAAA,EAChC;AAAA,EAEO,aAAsB;AACzB,WAAO,CAAC,KAAK,aAAa;AAAA,EAC9B;AAAA,EAEO,aAAoC;AACvC,UAAM,OAAO,CAAC;AACd,SAAK,gBAAgB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM;AACtC,WAAK,CAAC,IAAI,EAAE;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EAEO,mBAA4B;AAC/B,WAAO,CAAC,KAAK,mBAAmB;AAAA,EACpC;AAAA,EAEO,eAAwB;AAC3B,UAAM,UAAU,KAAK,gBAAgB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;AACpE,WAAO,QAAQ,SAAS;AAAA,EAC5B;AAAA,EAEO,wBAA6D;AAChE,UAAM,UAAU,KAAK,gBAAgB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;AACpE,WAAO;AAAA,EACX;AAAA,EAEO,qBAA8B;AACjC,UAAM,UAAU,KAAK,gBAAgB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;AAC1E,WAAO,QAAQ,SAAS;AAAA,EAC5B;AAAA,EAEO,eAAe,MAAqC;AACvD,WAAO,OAAO,QAAQ,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,MAAQ,MAAM,QAAS,aAAa,UAAW,IAAI,CAAC;AAAA,EAC/F;AAAA,EAEO,kBAAyC;AAC5C,WAAO,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAO,aAAa,UAAU;AAAA,EAC3E;AAAA,EAEO,sBAA6C;AAChD,WAAO,KAAK,gBAAgB,EAAE,OAAO,QAAM,GAAG,CAAC,EAAE,MAAM,CAAC;AAAA,EAC5D;AAAA,EAEO,YAAY;AACf,SAAK,QAAS,KAAK,UAAU,GAAW;AAAA,EAC5C;AAAA,EAEO,eAAe;AAClB,SAAK,gBAAgB,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AACvC,QAAE,UAAU;AAAA,IAChB,CAAC;AAAA,EACL;AAAA,EAEA,IAAW,SAAS;AAChB,WAAQ,KAAK,OAAe,UAAU;AAAA,EAC1C;AACJ;;;AClPO,IAAM,mBAAN,cAAqD,UAAgB;AAAA,EACxE,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,WAAO;AAAA,EACX;AACJ;;;ACLO,IAAe,iBAAf,cAA4D,UAAgC;AAAA,EAK/F,YAAY,OAA2B,QAAYC,QAAe,YAAY,MAAM;AAChF,UAAM,OAAO,QAAQA,QAAO,SAAS;AALzC,SAAQ,wBAA6C,CAAC,OAAU,QAAWA,WAAmC;AAC1G,aAAO,IAAI,iBAAiB,OAAO,QAAQA,MAAK;AAAA,IACpD;AAAA,EAIA;AAAA,EAEA,0BAA+C;AAC3C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,wBAAwB,OAA4B;AAChD,SAAK,wBAAwB;AAC7B,WAAO;AAAA,EACX;AAAA,EAEA,cAAc,QAAW,OAAUA,QAAe;AAC9C,SAAK,OAAO,OAAO,QAAM;AACrB,UAAI,GAAG,UAAU,GAAG;AAChB,eAAO,GAAG,UAAU,MAAM;AAAA,MAC9B,OAAO;AACH,eAAO;AAAA,MACX;AAAA,IACJ,CAAC,EAAE,QAAQ,QAAM;AACb,SAAG,IAAI,OAAO,QAAQA,MAAK;AAAA,IAC/B,CAAC;AACD,SAAK,UAAU,KAAK,KAAK;AAAA,EAC7B;AAAA,EAEA,aAAa,OAAU,QAAWA,QAAe;AAC7C,QAAI,CAAC,KAAK,OAAO;AACb,WAAK,QAAQ,CAAC;AAAA,IAClB;AACA,QAAI,iBAAiB,WAAW;AAC5B,WAAK,OAAO,KAAK,KAAK;AAAA,IAC1B,OAAO;AACH,WAAK,OAAO,KAAK,KAAK,cAAc,OAAO,QAAQA,MAAK,CAAC;AAAA,IAC7D;AACA,SAAK,UAAU,KAAK,KAAK;AAAA,EAC7B;AAAA,EAEA,WAAW,SAAkB;AACzB,SAAK,UAAU;AACf,SAAK,OAAO,QAAQ,QAAM;AACtB,SAAG,UAAU;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EAEA,gBAAgB;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,aAAa,GAAM;AACf,WAAO,KAAK,OAAO,OAAO,QAAM,GAAG,UAAU,MAAM,CAAC,EAAE,CAAC;AAAA,EAC3D;AAAA,EAEA,oBAAoB,OAAU;AAC1B,UAAM,mBAAmB,KAAK,qBAAqB,KAAK,EAAE,CAAC;AAC3D,WAAO;AAAA,EACX;AAAA,EAEA,qBAAqB,OAAU;AAC3B,WAAO,KAAK,OAAO,OAAO,QAAM,GAAG,UAAU,KAAK,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,cAAc,GAAM;AAChB,UAAM,QAAQ,KAAK;AACnB,QAAI,OAAO;AACP,WAAK,QAAQ,MAAM,OAAO,QAAM,GAAG,UAAU,MAAM,CAAC;AAAA,IACxD;AAAA,EACJ;AAAA,EAEA,cAAc,OAAU,QAAWA,QAAgC;AAC/D,WAAO,KAAK,sBAAsB,OAAO,QAAQA,MAAK;AAAA,EAC1D;AACJ;;;AHzEO,IAAM,SAAN,cAAqB,4BAAoC;AAAA,EAC5D,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,WAAO,oBAAoB,KAAK,cAAc,SAAS,QAAQ,aAAa,KAAK,OAAO,MAAM;AAC9F,UAAM,OAAOC,aAAY,eAAe,GAAG,IAAI,IAAI,KAAK,OAAO,GAAG;AAElE,UAAM,SAAS,MAAM,KAAK,KAAK,cAAc,QAAQ,iBAAiB,QAAQ,CAAC;AAE/E,UAAM,WAAWA,aAAY,eAAe,KAAK,cAAc,QAAQ,aAAa,GAAG,OAAO,YAAY,OAAO,KAAK,IAAI,KAAK,OAAO,GAAG;AACzI,UAAM,WAAW,YAAY,KAAK,cAAc,QAAQ,aAAa,MAAM;AAE3E,QAAI,OAAO,UAAU,KAAK,UAAU;AAChC,aAAO,KAAK,KAAK,cAAc,OAAO;AAAA,IAC1C,OAAO;AACH,UAAI,gBAAgB,WAAW;AAC3B,aAAK,UAAU,KAAK,cAAc,OAAO;AAAA,MAC7C;AAAA,IACJ;AACA,WAAO,QAAQ,QAAM;AACjB,YAAM,YAAY,GAAG,aAAa,GAAG,OAAO,YAAY,QAAQ,KAAK;AACrE,YAAM,gBAAgB,GAAG,aAAa,GAAG,OAAO,YAAY,YAAY;AACxE,YAAM,gBAAgB,aAAa,aAAa,WAAW;AAC3D,UAAI,UAAUA,aAAY,eAAe,KAAK,cAAc,QAAQ,aAAa,GAAG,OAAO,YAAY,OAAO,KAAK,IAAI,KAAK,OAAO,GAAG,KAAK,GAAG,aAAa,MAAM;AACjK,UAAI,WAAW,MAAM;AACjB,YAAI,eAAe;AACf,UAAAA,aAAY;AAAA,YAAS;AAAA,kCACP,KAAK,OAAO,UAAU;AAAA,2DACG,aAAa,0BAA0B,aAAa,QAAQ,aAAa;AAAA,kCAClG,IAAI,KAAK,OAAO;AAAA;AAAA,YAE9B,OAAO;AAAA,cAAO,KAAK,OAAO;AAAA,cAAK;AAAA,gBAC3B,UAAU,OAAO,OAAO;AAAA,kBACpB,eAAe,KAAK,cAAc,MAAM;AAAA,kBACxC,GAAG,KAAK;AAAA,gBACZ,CAAW;AAAA,cACf;AAAA,YACA;AAAA,UAAC;AAAA,QACL;AACA,kBAAU,GAAG,IAAI,KAAK,OAAO;AAC7B,cAAMC,QAAOD,aAAY,eAAe,GAAG,OAAO,IAAI,KAAK,OAAO,GAAG;AACrE,YAAIC,iBAAgB,gBAAgB;AAChC,aAAG,aAAa,eAAe,GAAG,OAAO,mDAAmD,GAAG,aAAa,aAAa,KAAK,EAAE,GAAG;AACnI,UAAAA,MAAK,aAAc,GAAW,OAAO,EAAE;AAAA,QAC3C,WAAWA,iBAAgB,WAAW;AAIlC,aAAG,aAAa,eAAe,GAAG,OAAO,yCAAyC,GAAG,aAAa,aAAa,KAAK,EAAE,GAAG;AACzH,UAAAA,MAAK,UAAU,EAAE;AACjB,UAAAA,MAAK,QAAS,GAAW;AAAA,QAC7B,OAAO;AACH,aAAG,aAAa,eAAe,GAAG,OAAO,mBAAmB;AAAA,QAChE;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,WAAO,oBAAoB,KAAK,cAAc,SAAS,aAAa,QAAQ,KAAK,OAAO,MAAM;AAC9F,SAAK,gBAAgB,KAAK,KAAK,GAAG,OAAO,kBAAkB,KAAK,cAAc,SAAS,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM,CAAC;AAC3H;AAAA,EACJ;AACJ;;;AItEA,SAAQ,eAAAC,oBAAkB;AAKnB,IAAM,cAAN,cAA0B,4BAAoC;AAAA,EACjE,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AACvE,IAAAC,aAAY,SAAS;AAAA,0BACH,KAAK,OAAO,UAAU;AAAA;AAAA,0BAEtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA,wCAC/B,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMlB,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA,uBAC/C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC1C,UAAU,OAAO,OAAO;AAAA,QACpB,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,KAAK;AAAA,QACL,GAAG,KAAK;AAAA,MACZ,CAAW;AAAA,IACf,CAAC,CAAC;AACF,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AACJ;;;ACtCA,SAAQ,eAAAC,oBAAkB;AAKnB,IAAM,cAAN,cAA0B,4BAAoC;AAAA,EACjE,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AACvE,IAAAC,aAAY,SAAS;AAAA,0BACH,KAAK,OAAO,UAAU;AAAA;AAAA,0BAEtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA,wCAC/B,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMlB,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA,uBAC/C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC1C,UAAU,OAAO,OAAO;AAAA,QACpB,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,KAAK;AAAA,QACL,GAAG,KAAK;AAAA;AAAA,MAEZ,CAAW;AAAA,IACf,CAAC,CAAC;AACF,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AACJ;;;ACvCA,SAAQ,eAAAC,oBAAkB;AAKnB,IAAM,QAAN,cAAoB,4BAAoC;AAAA,EAC3D,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,OAAO;AACpE,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AAEvE,IAAAC,aAAY,SAAS;AAAA,sBACP,KAAK,OAAO,UAAU;AAAA,sBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA,0BACzC,IAAI;AAAA;AAAA,uCAES,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWpD,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA,uBAC3C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC1C,UAAU,OAAO,OAAO;AAAA,QACpB,KAAK;AAAA,QACL,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,GAAG,KAAK;AAAA,MACZ,CAAC;AAAA,IACL,CAAC,CAAC;AACF,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAC1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AACJ;;;AClDA,SAAS,eAAAC,qBAAmB;AAI5B,SAAS,eAAAC,oBAAmB;AAErB,IAAM,UAAN,cAAsB,4BAAoC;AAAA,EAC/D,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACxJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACpF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAE5D,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,SAAS,SAAS;AAC/E,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AAGvE,IAAAC,cAAY,SAAS;AAAA,sBACH,KAAK,OAAO,UAAU;AAAA,sBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA;AAAA,oCAE/BD,aAAY,KAAK,oBAAoB,IAAI,CAAC;AAAA,yCACrC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4EAkB+B,OAAO,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA,mEAKzC,OAAO,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qEAY9B,OAAO,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sEAYjC,OAAO,kBAAkB;AAAA;AAAA,kDAE7C,OAAO,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAUvC,KAAK,cAAc,MAAM,YAAY;AAAA;AAAA;AAAA,mDAGhB,KAAK,cAAc,MAAM,YAAY;AAAA,8CAC1C,OAAO,cAAc;AAAA,8CACrB,OAAO,kBAAkB;AAAA;AAAA;AAAA;AAAA,sBAIjD,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA,uBAC3C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAChD,UAAU,OAAO,OAAO;AAAA,QACtB,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,QAAQ,KAAK,cAAc;AAAA,QAC3B,mBAAmB,OAAO;AAAA,QAC1B,KAAK;AAAA,QACL,GAAG,KAAK;AAAA;AAAA,MAEV,CAAW;AAAA,IACb,CAAC,CAAC;AACF,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAC1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AAExG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACF;AACF;;;AClHA,SAAQ,eAAAE,qBAAkB;AAKnB,IAAM,aAAN,cAAyB,4BAAoC;AAAA,EAChE,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,OAAO;AACpE,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AACvE,IAAAC,cAAY,SAAS;AAAA;AAAA,sBAEP,KAAK,OAAO,UAAU;AAAA,sBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA;AAAA,kDAEjB,OAAO,mBAAmB;AAAA,kDAC1B,OAAO,UAAU,OAAO,KAAK,cAAc,MAAM,UAAU,OAAO,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA;AAAA,yCAG9G,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA,8CAE9B,OAAO,cAAc,OAAO,KAAK,cAAc,MAAM,UAAU;AAAA,8CAC/D,OAAO,kBAAkB,OAAO,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA,8CAEnE,OAAO,cAAc,OAAO,KAAK,cAAc,MAAM,UAAU;AAAA,8CAC/D,OAAO,kBAAkB,OAAO,KAAK,cAAc,MAAM,UAAU;AAAA;AAAA;AAAA,kEAG/C,OAAO,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMrE,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA;AAAA,uBAE3C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC1C,UAAU,OAAO,OAAO;AAAA,QACpB,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,QAAQ,KAAK,cAAc;AAAA,QAC3B,mBAAmB,OAAO;AAAA,QAC1B,KAAK;AAAA,QACL,GAAG,KAAK;AAAA;AAAA,MAEZ,CAAW;AAAA,IACf,CAAC,CAAC;AACF,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAC1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AAExG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AACJ;;;AC9DA,SAAQ,eAAAC,qBAAkB;AAMnB,IAAM,WAAN,cAAuB,4BAAoC;AAAA,EAC9D,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,OAAO;AACpE,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AACvE,IAAAC,cAAY,SAAS;AAAA,sBACP,KAAK,OAAO,UAAU;AAAA,sBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA;AAAA,qCAE9B,IAAI;AAAA,0CACC,IAAI;AAAA;AAAA;AAAA,kCAGZ,aAAa,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAoBtC,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA,uBAC3C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC1C,UAAU,OAAO,OAAO;AAAA,QACpB,KAAK;AAAA,QACL,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,GAAG,KAAK;AAAA,MACZ,CAAC;AAAA,IACL,CAAC,CAAC;AACF,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAC1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AACJ;;;AC/DA,SAAS,eAAAC,qBAAmB;AAoBrB,IAAM,kBAAN,cAA8B,iBAAuB;AAAA,EAC1D,YACE,QACA,QACA,iBACA,eACA,QACA,eACA;AACA,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACpF;AAAA,EAEA,MAAM,UAAiC;AACrC,UAAM,gBAAgB,KAAK,OAAO,QAAQ,gBAAgB;AAAA,MACxD,QAAM,GAAG,KAAK,YAAY,MAAM,KAAK,cAAc,QAAQ,QAAQ,YAAY;AAAA,IACjF;AACA,QAAI,eAAe;AACjB,UACE,KAAK,OAAO,MAAM,iBAAiB,KAAK,OAAO,OAAO,OAAO,mBAC7D,KAAK,OAAO,MAAM,eAAe,KAAK,OAAO,OAAO,OAAO,iBAC3D;AACA,aAAK,OAAO,MAAM,MAAM,aAAa,aAAa,+BAA+B,KAAK,OAAO,IAAI,EAAE;AACnG,aAAK,OAAO,MAAM,IAAI,aAAa,aAAa,+BAA+B,KAAK,OAAO,IAAI,EAAE;AAAA,MACnG;AAEA,YAAM,mBAAmB,MAAM,cAAc;AAAA,QAC3C,KAAK,cAAc;AAAA,QACnB,KAAK,OAAO;AAAA,QACZ,KAAK;AAAA,QACL,KAAK,cAAc;AAAA,QACnB,KAAK,OAAO;AAAA,MACd;AACA,UAAI,kBAAkB;AACpB,cAAM,eAAe,KAAK,cAAc,QAAQ,aAAa,OAAO,cAAc;AAIlF,aAAK,OAAO,QAAQ,WAAW;AAS/B,YAAI,gBAAgB,KAAK,OAAO,QAAQ,QAAQ;AAE9C,eAAK,OAAO,SAAS;AAAA,YACnB,QAAQ,MAAM;AACZ,oBAAM,SAAS,wKAAwK,YAAY;AACnM,cAAAC,cAAY;AAAA,gBACV;AAAA,gBACA,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,kBAC7B,UAAU,KAAK,OAAO,QAAQ;AAAA,gBAChC,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAKA,YAAI,iBAAiB;AACrB,YAAI,cAAc,SAAS;AAEzB,gBAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,uBAAuB;AAC3E,gBAAM,KAAK,iBAAiB,mBAAmB,cAAc,CAAC,CAAC,EAAE,QAAQ,WAAS;AAEhF,qBAAS,YAAY,KAAK;AAAA,UAC5B,CAAC;AAED,2BAAiB;AAAA,QACnB;AAEA,cAAM,KAAK,OAAO,kBAAkB,gBAAgB,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACvF,YAAI,cAAc,SAAS;AACzB,gBAAM,KAAK,eAAe,cAAc,CAAC,CAAC,EAAE,QAAQ,WAAS;AAC3D,6BAAiB,mBAAmB,YAAY,KAAK;AAAA,UACvD,CAAC;AAAA,QACH;AACA,aAAK,cAAc,QAAQ,YAAY,aAAa,kBAAkB,KAAK,cAAc,OAAO;AAChG,aAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC,aAAK,cAAc,uBAAuB,KAAK;AAAA,UAC7C,MAAM,cAAc,KAAK,YAAY;AAAA,UACrC,KAAK,KAAK,OAAO;AAAA,UACjB;AAAA,UACA,iBAAiB,cAAc;AAAA,QACjC,CAAC;AAED,uBAAe,WAAW,KAAK,cAAc,SAAS,KAAK,OAAO,KAAK,KAAK,MAAM;AAAA,MACpF;AACA;AAAA,IACF;AACA;AAAA,EACF;AACF;;;ACjHO,IAAM,eAAN,cAA2B,iBAAuB;AAAA,EACrD,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,UAAiC;AACnC,UAAM,iBAAiB,KAAK,cAAc,QAAQ,kBAAkB;AACpE,UAAM,aAAqC,KAAK,OAAO,QAAQ,aAAa,KAAK,QAAM,eAAe,SAAS,GAAG,IAAI,CAAC;AACvH,QAAI,YAAY;AACZ,YAAM,WAAW,WAAW;AAC5B,YAAM,YAAY,KAAK,OAAO,sBAAsB,KAAK,cAAc,SAAS,QAAQ;AACxF,UAAI,aAAa,aAAa,CAAC,KAAK,cAAc,MAAM,WAAW,CAAC,KAAK,cAAc,MAAM,SAAS,CAAC,KAAK,cAAc,MAAM,WAAW;AACvI,cAAM,mBAAmB,WAAW,SAAS,KAAK,cAAc,SAAS,WAAW,KAAK,OAAO,KAAK,KAAK,MAAM;AAChH,YAAI,kBAAkB;AAClB,gBAAM,KAAK,OAAO,kBAAkB,kBAAkB,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACzF,eAAK,cAAc,QAAQ,YAAY,aAAa,kBAAkB,KAAK,cAAc,OAAO;AAChG,eAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC,eAAK,cAAc,oBAAoB,KAAK;AAAA,YACxC;AAAA,YACA;AAAA,YACA,KAAK,KAAK,OAAO;AAAA,UACrB,CAAC;AACD,sBAAY,WAAW,KAAK,cAAc,SAAS,WAAW,KAAK,OAAO,KAAK,KAAK,MAAM;AAAA,QAC9F;AAAA,MACJ;AACA;AAAA,IACJ;AACA;AAAA,EACJ;AACJ;;;AClCA,SAAS,eAAAC,qBAAmB;AAKrB,IAAM,iBAAN,cAA6B,4BAAoC;AAAA,EACtE,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACxJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACpF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAG5D,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AAEvE,IAAAC,cAAY,SAAS;AAAA,kBACP,KAAK,OAAO,UAAU;AAAA,kBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA;AAAA,qBAE1C,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKP,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA;AAAA,mBAE3C,OAAO;AAAA,MAAO,KAAK,OAAO;AAAA,MACvC;AAAA,QACE,UAAU,OAAO,OAAO;AAAA,UACtB,KAAK;AAAA,UACL,QAAQ,KAAK,cAAc;AAAA,UAC3B,mBAAmB,OAAO;AAAA,UAC1B,eAAe,KAAK,cAAc,MAAM;AAAA,UACxC,GAAG,KAAK;AAAA,QACV,CAAW;AAAA,MACb;AAAA,IACF,CAAC;AAED,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AACxG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACF;AACF;;;AChDO,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,0BAAuB;AAFf,SAAAA;AAAA,GAAA;;;ACAL,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,oBAAiB;AACjB,EAAAA,YAAA,iBAAc;AACd,EAAAA,YAAA,YAAS;AALD,SAAAA;AAAA,GAAA;;;ACCZ,SAAQ,eAAAC,qBAAkB;AAMnB,IAAM,iBAAN,cAA6B,4BAAoC;AAAA,EACpE,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACtJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACtF;AAAA,EAEA,MAAM,mBAAmB,MAAqC;AAC1D,UAAM,WAAW,OAAO,kBAAkB,KAAK,cAAc,SAAS,gBAAgB;AACtF,UAAM,OAAO,OAAO,cAAc,KAAK,cAAc,SAAS,KAAK,cAAc,MAAM,eAAe,EAAE;AACxG,UAAM,UAAU,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,MAAM;AACvE,UAAM,aAAaC,cAAY,eAAe,MAAM,KAAK,OAAO,GAAG;AACnE,UAAM,gBAAgB,KAAK,cAAc,MAAM,eAAe;AAO9D,IAAAA,cAAY,SAAS;AAAA,sBACP,KAAK,OAAO,UAAU;AAAA,sBACtB,KAAK,cAAc,MAAM,kBAAkB,EAAE;AAAA;AAAA,yCAE1B,IAAI;AAAA,6CACA,aAAa;AAAA,8CACZ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAOJ,OAAO,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,0EAKI,OAAO,sBAAsB;AAAA;AAAA,sBAEjF,KAAK,cAAc,MAAM,iBAAiB,EAAE;AAAA,uBAC3C,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,MAC1C,UAAU,OAAO,OAAO;AAAA,QACpB,eAAe,KAAK,cAAc,MAAM;AAAA,QACxC,QAAQ,KAAK,cAAc;AAAA,QAC3B,mBAAmB,OAAO;AAAA,QAC1B,KAAK;AAAA,QACL,GAAG,KAAK;AAAA,MACZ,CAAW;AAAA,IACf,CAAC,CAAC;AACF,WAAO,cAAc,SAAS,IAAI;AAClC,WAAO,kBAAkB,SAAS,QAAQ;AAC1C,UAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,cAAc,UAAU;AAC5E,aAAS,YAAY,QAAQ;AAC7B,SAAK,gBAAgB,IAAI,OAAO,SAAS,OAAO;AAChD,UAAM,KAAK,OAAO,kBAAkB,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACjG,SAAK,cAAc,QAAQ,YAAY,aAAa,KAAK,gBAAgB,KAAK,KAAK,cAAc,OAAO;AAExG,SAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC;AAAA,EACJ;AAAA,EAGA,OAAc,OAAO,KAAU,UAAkB,KAAa,QAAgB,QAAyB;AACnG,UAAM,UAAU,OAAO,OAAO,SAAS,WAAW,OAAO,QAAQ,UAAU,IAAI;AAE/E,UAAM,UAAoB,CAAC;AAC3B,eAAW,SAAS,MAAM,KAAK,QAAQ,WAAW,OAAO,CAAC,GAAG;AACzD,YAAM,UAAU,MAAM,UAAU,IAAI;AACpC,cAAQ,gBAAgB,OAAO,qBAAqB;AACpD,cAAQ,aAAa,OAAO,cAAc,QAAQ,QAAQ,EAAE;AAC5D,cAAQ,aAAa,OAAO,mBAAmB,GAAG;AAElD,YAAM,KAAK,OAAO,OAAO,SAAS,uBAAuB;AACzD,SAAG,OAAO,OAAO;AACjB,cAAQ,KAAK,GAAG,OAAO,kBAAkB,IAAI,KAAK,MAAM,CAAC;AACzD,aAAO,MAAM,IAAI,OAAO,EAAE;AAC1B,YAAM,QAAS,OAAO,MAAM;AAC5B,YAAM,OAAO,MAAM,aAAa,OAAO,sBAAsB,GAAG,MAAM,GAAG,KAAK,CAAC;AAC/E,WAAK,KAAK,GAAG;AACb,YAAM,aAAa,OAAO,wBAAwB,KAAK,KAAK,GAAG,CAAC;AAChE,cAAQ,QAAQ,OAAO,OAAO,MAAM,GAAG,OAAO,KAAK,MAAM,CAAC;AAAA,IAC9D;AACA,WAAO;AAAA,EACX;AACJ;;;AC1FO,IAAK,qBAAL,kBAAKC,wBAAL;AACH,EAAAA,oBAAA,sBAAmB;AADX,SAAAA;AAAA,GAAA;;;A7BiCZ,SAAS,WAAoB,aAAa,gBAAgB;;;A8BzBnD,IAAM,uBAAuB,CAAC,QAAwC;AAC3E,SAAO,OAAO,KAAK,uBAAuB;AAC5C;;;ACPO,IAAM,mBAAmB,CAAC,QAAoC;AACnE,SAAO,OAAO,KAAK,mBAAmB;AACxC;;;ACIO,IAAM,uBAAuB,CAAC,QAAwC;AACzE,SAAO,OAAO,KAAK,uBAAuB;AAC9C;;;ACLO,SAAS,eAAe,KAA+B;AAC1D,SAAO,OAAO,KAAK,iBAAiB;AACxC;;;ACDO,IAAM,uBAAsB,CAAC,QAAwC;AAC1E,SAAO,OAAO,KAAK,uBAAuB;AAC5C;;;ACDO,IAAM,oBAAoB,CAAC,QAAqC;AACnE,SAAO,OAAO,KAAK,oBAAoB;AAC3C;;;ACNA,SAAS,eAAAC,qBAAmB;AAIrB,IAAM,2BAAN,cAAuC,iBAAgC;AAAA,EAC5E,YAAY,QAAgB,QAAgB,iBAAkC,eAA8B,QAAgB,eAA8B;AACxJ,WAAO,iBAAiB;AACxB,UAAM,QAAQ,QAAQ,iBAAiB,eAAe,QAAQ,eAAe,KAAK;AAAA,EACpF;AAAA,EAEA,MAAM,QAAQ,MAA4C;AACxD,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,UAAM,gBAAgB,KAAK,OAAO,QAAQ,gBAAgB,KAAK,QAAM,GAAG,KAAK,YAAY,MAAM,KAAK,YAAY,CAAC;AAEjH,QAAI,eAAe;AACjB,UAAI,KAAK,OAAO,MAAM,iBAAiB,KAAK,OAAO,OAAO,OAAO,mBAAmB,KAAK,OAAO,MAAM,eAAe,KAAK,OAAO,OAAO,OAAO,iBAAiB;AAC9J,aAAK,OAAO,MAAM,MAAM,aAAa,aAAa,+BAA+B,KAAK,OAAO,IAAI,EAAE;AACnG,aAAK,OAAO,MAAM,IAAI,aAAa,aAAa,+BAA+B,KAAK,OAAO,IAAI,EAAE;AAAA,MACnG;AAGA,YAAM,mBAAmB,MAAM,cAAc,SAAS,KAAK,cAAc,SAAS,KAAK,OAAO,KAAK,KAAK,QAAQ,KAAK,cAAc,OAAO,KAAK,OAAO,MAAM;AAC5J,UAAI,kBAAkB;AACpB,cAAM,eAAe,KAAK,cAAc,QAAQ,aAAa,OAAO,cAAc;AAClF,aAAK,OAAO,QAAQ,WAAW;AAC/B,YAAI,gBAAgB,KAAK,OAAO,QAAQ,QAAQ;AAE9C,eAAK,OAAO,SAAS;AAAA,YACnB,QAAQ,MAAM;AACZ,oBAAM,SAAS,wKAAwK,YAAY;AACnM,cAAAA,cAAY,SAAS,QAAQ,OAAO,OAAO,KAAK,OAAO,KAAK;AAAA,gBAC1D,UAAU,KAAK,OAAO,QAAQ;AAAA,cAChC,CAAC,CAAC;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAGA,cAAM,UAAU,cAAc;AAE9B,YAAI,iBAAiB;AACrB,YAAI,SAAS;AACX,gBAAM,WAAW,KAAK,OAAO,OAAO,OAAO,SAAS,uBAAuB;AAC3E,gBAAM,KAAK,iBAAiB,mBAAmB,cAAc,CAAC,CAAC,EAAE,QAAQ,WAAS;AAChF,qBAAS,YAAY,KAAK;AAAA,UAC5B,CAAC;AACD,2BAAiB;AAAA,QACnB;AAEA,cAAM,KAAK,OAAO,kBAAkB,gBAAgB,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM;AACvF,YAAI,SAAS;AACX,gBAAM,KAAK,eAAe,cAAY,CAAC,CAAC,EAAE,QAAQ,WAAS;AACzD,6BAAiB,mBAAmB,YAAY,KAAK;AAAA,UACvD,CAAC;AAAA,QACH;AACA,aAAK,cAAc,QAAQ,YAAY,aAAa,kBAAkB,KAAK,cAAc,OAAO;AAChG,aAAK,gBAAgB,KAAK,KAAK,GAAG,EAAE;AACpC,aAAK,cAAc,uBAAuB,KAAK;AAAA,UAC7C,MAAM,cAAc,KAAK,YAAY;AAAA,UACrC,KAAK,KAAK,OAAO;AAAA,UACjB;AAAA,UACA,iBAAiB,cAAc;AAAA,QACjC,CAAC;AACD,uBAAe,WAAW,KAAK,cAAc,SAAS,KAAK,OAAO,KAAK,KAAK,MAAM;AAAA,MACpF;AACA;AAAA,IACF;AACA;AAAA,EACF;AACF;;;ApClCA,SAAS,eAAAC,oBAAmB;AAGrB,IAAM,UAAN,MAAM,QAAO;AAAA,EA2GlB,YACS,MACA,MACA,OASA,SAKA,QACP;AAjBO;AACA;AACA;AASA;AAKA;AA00CT,SAAO,eAAe,CAAC,KAAU,SAAiB,SAAS;AACzD,YAAM,OAAO,KAAK,iBAAiB,MAAM;AACzC,UAAI,MAAM;AACR,cAAM,eAAeA,aAAY,KAAK,oBAAoB,IAAI;AAE9D,eAAOC,cAAY,eAAe,cAAc,GAAG;AAAA,MACrD;AAAA,IACF;AAEA,SAAO,iBAAiB,CAAC,KAAU,SAAiB,SAAS;AAC3D,YAAM,OAAO,KAAK,mBAAmB,MAAM;AAC3C,UAAI,MAAM;AACR,cAAM,eAAeD,aAAY,KAAK,oBAAoB,IAAI;AAC9D,eAAOC,cAAY,eAAe,cAAc,GAAG;AAAA,MACrD;AAAA,IACF;AAEA,SAAO,mBAAmB,CAAC,SAAiB,SAA6B;AACvE,YAAM,QAAQ,KAAK,cAAc,MAAM;AACvC,aAAO,MAAM,MAAM,SAAS,CAAC;AAAA,IAC/B;AAEA,SAAO,qBAAqB,CAAC,SAAiB,SAA6B;AACzE,YAAM,QAAQ,KAAK,cAAc,MAAM;AACvC,aAAO,MAAM,MAAM,SAAS,CAAC;AAAA,IAC/B;AAEA,SAAO,gBAAgB,CAAC,SAAiB,SAAmB;AAC1D,YAAM,QAAkB,CAAC;AACzB,YAAM,WAAW,CAACC,YAAmB;AACnC,YAAIA,WAAUA,QAAO,OAAO;AAE1B,cAAI,kBAAkBA,QAAO,MAAM,SAASA,QAAO,MAAM,MAAM,aAAa,WAAW,GAAG;AACxF,kBAAM,KAAKA,QAAO,MAAM,MAAM,aAAa,WAAW,CAAE;AAAA,UAC1D;AACA,cAAIA,QAAO,MAAM;AACf,qBAASA,QAAO,MAAM,YAAY;AAAA,QACtC;AAAA,MACF;AACA,eAAS,MAAM;AACf,YAAM,KAAK,MAAM;AACjB,aAAO,MAAM,QAAQ;AAAA,IACvB;AAAA,EAh3CA;AAAA,EAEA,IAAI,cAAc;AAEhB,WAAO,KAAK,MAAM,MAAM,eAAe,KAAK,MAAM,IAAI;AAAA,EACxD;AAAA;AAAA,EAGA,yBAAyB,QAAuC;AAC9D,UAAM,wBAAwB,oBAAI,IAAY;AAE9C,SAAK,QAAQ,SAAS,WAAW,QAAQ,CAAC,OAAO,QAAQ;AAEvD,UAAI,SAAS;AACb,UAAI,MAAM,aAAa,KAAK,WAAW;AACrC,iBAAS,KAAM,MAAe,eAAe,EAAE;AAC/C,cAAM,mBAAmB,QAAO,iBAAiB,MAAM;AAEvD,YAAI,iBAAiB,CAAC,EAAE,SAAQ,GAAG;AACjC,mBAAS,iBAAiB,CAAC,EAAE,CAAC;AAAA,QAChC;AAAA,MAEF,WAAW,MAAM,aAAa,KAAK,cAAc;AAC/C,cAAM,UAAU;AAChB,cAAM,mBAAmB,QAAQ,aAAa,IAAI,QAAM,GAAG,IAAI,KAAK,CAAC,GAClE,OAAO,QAAO,eAAe,QAAO,6BAA6B,QAAO,yBAAyB,QAAO,yBAAyB;AACpI,cAAM,gBAAgB,gBAAgB,IAAI,QAAM,QAAQ,aAAa,EAAE,CAAC,EAAE,OAAO,QAAM,EAAE,EAAE,IAAI,QAAI,IAAI,EAAE,GAAG;AAC5G,cAAM,gBAAgB,QAAQ,aAAa,aAAa,qBAAqB;AAE7E,YAAI,eAAe;AACjB,cAAI,IAAoB,KAAK,MAAM,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM;AACnE,0BAAc,KAAK,IAAI,CAAC,GAAG;AAAA,UAC7B,CAAC;AAAA,QACH;AAEA,iBAAS,cAAc,KAAK,GAAG;AAAA,MAWjC;AACA,UAAI,QAAQ;AAGV,iBAAS,OAAO,QAAQ,YAAY,MAAM;AAO1C,qBAAa,SAAS,QAAQ,QAAM;AAGlC,mBAAS,OAAO,QAAQ,OAAO,GAAG,QAAQ,KAAK,KAAK,GAAG,GAAG,GAAG,WAAW,EAAE,EAAE;AAAA,QAE9E,CAAC;AAKD,cAAM,KAAKF,aAAY,KAAK,qBAAqB,QAAO,EAAC,aAAa,KAAI,CAAC,CAAC,EAAE,OAAO,QAAM,CAAC,GAAG,WAAW,MAAM,aAAa,eAAe,EAAE,CAAC,EAAE,QAAQ,QAAM,sBAAsB,IAAI,EAAE,CAAC;AAAA,MAC9L;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAa,OAAO,KAAU,QAA4C;AAExE,UAAM,UAAU,OAAO,OAAO,SAAS,WAAW,KAAK,QAAQ,UAAU,IAAI;AAC7E,UAAM,OAAiB,CAAC;AACxB,UAAM,sBAA0C,CAAC;AACjD,UAAM,yBAAgD,CAAC;AACvD,UAAM,8BAA8C,CAAC;AACrD,UAAM,UAAmB,CAAC;AAE1B,eAAW,SAAS,MAAM,KAAK,QAAQ,WAAW,OAAO,CAAC,GAAG;AAE3D,UAAIG,aAAY,CAAC;AACjB,UAAI,MAAM,aAAa,KAAK,cAAc;AACxC,QAAAA,aAAYC,cAAa,qBAAqB,KAAgB;AAAA,MAChE;AAEA,YAAM,WAAW,OAAO,OAAO;AAAA,QAC7B,QAAQ;AAAA,QACR,SAAS,aAAa,gBAAgB,QAAQ,SAAS,GAAG;AAAA,QAC1D,QAAQ,QAAQ;AAAA,QAChB,OAAO,MAAM;AAAA,QACb,SAAS;AAAA,QACT,WAAWD;AAAA,QACX,YAAY;AAAA,QACZ,aAAaF;AAAA,QACb,UAAU,KAAK,aAAa,GAAG;AAAA,QAC/B,YAAY,KAAK,eAAe,GAAG;AAAA,QACnC,YAAY;AAAA,4BACQ,aAAa,eAAe;AAAA,4BAC5B,aAAa,cAAc;AAAA,4BAC3B,aAAa,eAAe;AAAA,4BAC5B,aAAa,iBAAiB;AAAA,4BAC9B,aAAa,aAAa;AAAA,4BAC1B,aAAa,cAAc;AAAA,4BAC3B,aAAa,iBAAiB;AAAA,4BAC9B,aAAa,mBAAmB;AAAA,4BAChC,aAAa,oBAAoB;AAAA,4BACjC,aAAa,mBAAmB;AAAA;AAAA,MAEtD,CAAC;AAaD,YAAM,MAAM,OAAO,OAAO,SAAS,uBAAuB;AAC1D,UAAI,MAAM,aAAa,KAAK,aAAa,MAAM,aAAa;AAG1D,cAAM,cAAc,MAAM;AAC1B,cAAM,UAAU,QAAO,iBAAiB,WAAW,EAAE,CAAC,EAAE,CAAC;AAEzD,YAAI;AACJ,YAAI,aAAa,WAAW,GAAG,GAAG;AAChC,gBAAM,IAAIA,cAAY,SAAS,GAAG,SAAS,UAAU,WAAW,OAAO,IAAI,OAAO,OAAO,KAAK,EAAC,SAAQ,CAAC,CAAC;AACzG,gBAAM,WAAW,OAAO,OAAO,SAAS,cAAc,UAAU;AAChE,mBAAS,YAAY;AACrB,oBAAU,SAAS;AAAA,QACrB,OAAO;AACL,gBAAM,IAAIA,cAAY,SAAS,GAAG,SAAS,UAAU,YAAY,OAAO,IAAI,OAAO,OAAO,KAAK,EAAC,SAAQ,CAAC,CAAC;AAC1G,oBAAU,OAAO,OAAO,SAAS,eAAe,CAAC;AAAA,QACnD;AACA,cAAM,YAAY,aAAa,SAAS,KAAK;AAG7C,YAAI,KAAK,0CAAkC,KAAK,MAAM,QAAQ;AAC5D,UAAC,KAAK,MAAM,OAAmB,gBAAgB,WAAW;AAAA,QAC5D;AAAA,MACF,WAAW,MAAM,aAAa,KAAK,cAAc;AAC/C,cAAM,UAAU;AAEhB,cAAM,SAAe;AAAA,UACnB,IAAI,KAAK,sBAAsB,SAAS,QAAO,OAAO;AAAA,UACtD,MAAM,KAAK,sBAAsB,SAAS,QAAO,UAAU;AAAA,UAC3D,OAAO,KAAK,sBAAsB,SAAS,QAAO,WAAW;AAAA,UAC7D,SAAS,KAAK,sBAAsB,SAAS,QAAO,cAAc;AAAA,UAClE,gBAAgB,KAAK,sBAAsB,SAAS,QAAO,qBAAqB;AAAA,UAChF,YAAY,KAAK,sBAAsB,SAAS,QAAO,gBAAgB;AAAA,UACvE,UAAU,KAAK,sBAAsB,SAAS,QAAO,cAAc;AAAA,UACnE,QAAQ,KAAK,sBAAsB,SAAS,QAAO,YAAY;AAAA,UAC/D,QAAQ,KAAK,sBAAsB,SAAS,QAAO,YAAY;AAAA,UAC/D,OAAO,KAAK,sBAAsB,SAAS,QAAO,WAAW;AAAA,UAC7D,aAAa,KAAK,sBAAsB,SAAS,QAAO,iBAAiB;AAAA,UACzE,aAAa,KAAK,sBAAsB,SAAS,QAAO,iBAAiB;AAAA,UACzE,gBAAgB,KAAK,sBAAsB,SAAS,QAAO,aAAa;AAAA,UACxE,0BAA0B,KAAK,sBAAsB,SAAS,QAAO,iCAAiC;AAAA,UACtG,YAAY,KAAK,sBAAsB,SAAS,QAAO,gBAAgB;AAAA,UACvE,YAAY,KAAK,sBAAsB,SAAS,QAAO,gBAAgB;AAAA,UACvE,aAAa,KAAK,sBAAsB,SAAS,QAAO,iBAAiB;AAAA,UACzE,cAAc,KAAK,sBAAsB,SAAS,QAAO,kBAAkB;AAAA,UAC3E,eAAe,KAAK,sBAAsB,SAAS,QAAO,mBAAmB;AAAA,UAC7E,gBAAgB,KAAK,sBAAsB,SAAS,QAAO,oBAAoB;AAAA,UAC/E,kBAAkB,KAAK,sBAAsB,SAAS,QAAO,sBAAsB;AAAA,UACnF,eAAe,KAAK,sBAAsB,SAAS,QAAO,mBAAmB;AAAA,UAC7E,iBAAiB,KAAK,sBAAsB,SAAS,QAAO,qBAAqB;AAAA,UACjF,aAAa,KAAK,sBAAsB,SAAS,QAAO,iBAAiB;AAAA,UACzE,kBAAkB,KAAK,aAAa,SAAS,QAAO,uBAAuB;AAAA,UAC3E,iBAAiB,KAAK,aAAa,SAAS,QAAO,sBAAsB;AAAA,QAC3E;AACA,gBAAQ,KAAK,MAAM;AAEnB,cAAM,YAAY;AAAA,UAChB,IAAI,MAAM,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,aAAa,MAAM,OAAO,OAAO,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,MAAK,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC1P,IAAI,GAAG,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,SAAS,MAAM,OAAO,IAAI,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,GAAE,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA;AAAA,UAE7O,IAAI,KAAK,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,YAAY,MAAM,OAAO,MAAM,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,KAAI,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UACtP,IAAI,eAAe,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,eAAe,MAAM,OAAO,gBAAgB,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,OAAM,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC/Q,IAAI,OAAO,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,cAAc,MAAM,OAAO,QAAQ,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,OAAM,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC9P,IAAI,OAAO,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,aAAa,MAAM,OAAO,QAAQ,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,OAAM,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC7P,IAAI,YAAY,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,mBAAmB,MAAM,OAAO,aAAa,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,YAAW,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAClR,IAAI,YAAY,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,mBAAmB,MAAM,OAAO,aAAa,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,YAAW,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAClR,IAAI,MAAM,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,aAAa,MAAM,OAAO,OAAO,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,MAAK,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC1P,IAAI,QAAQ,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,gBAAgB,MAAM,OAAO,SAAS,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,QAAO,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UACnQ,IAAI,eAAe,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,uBAAuB,MAAM,OAAO,gBAAgB,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,eAAc,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC/R,IAAI,WAAW,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,kBAAkB,MAAM,OAAO,YAAY,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,WAAU,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UAC9Q,IAAI,SAAS,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,gBAAgB,MAAM,OAAO,UAAU,OAAO,OAAM,GAAG,EAAC,QAAQ,KAAK,gBAAgB,OAAO,gBAAgB,SAAQ,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UACtQ,IAAI,yBAAyB,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,UAAU,QAAO,mCAAmC,MAAM,OAAO,0BAA0B,OAAO,OAAM,GAAG,EAAC,QAAQ,IAAG,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UACxQ,IAAI,gBAAgB,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,OAAO,OAAM,GAAG,EAAC,QAAQ,IAAG,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,UACpK,IAAI,aAAa,MAAM,UAAU,EAAC,MAAM,IAAG,GAAG,EAAC,SAAS,OAAO,OAAM,GAAG,EAAC,QAAQ,IAAG,GAAG,EAAC,qBAAqB,wBAAwB,4BAA2B,CAAC;AAAA,QACnK;AAEA,mBAAW,YAAY,WAAW;AAChC,gBAAM,QAAQ,MAAM,SAAS,MAAM;AACnC,cAAI,2BAAgC;AAClC;AAAA,UACF,WAAW,wBAA6B;AACtC,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,SAAK,MAAM,kBAAkB;AAC7B,SAAK,QAAQ,QAAM;AACjB,SAAG,MAAM,eAAe;AAAA,IAC1B,CAAC;AAMD,UAAM,gBAAgB,MAAM,KAAK,QAAQ,UAAU;AACnD,SAAK,WAAW,KAAK,SAAS,MAAM;AACpC,SAAK,YAAY,OAAO;AAIxB,SAAK,gBAAgB,KAAK,eAAe,MAAM;AAE/C,YAAQ,QAAQ,QAAM;AACpB,UAAI,GAAG,kBAAkB;AAEvB,cAAM,SAAS,OAAO,OAAO;AAAA,UAC3B,QAAQ;AAAA,UACR,KAAK;AAAA,UACL,SAAS,aAAa,gBAAgB,QAAQ,SAAS,GAAG;AAAA,QAC5D,CAAW;AACX,QAAAA,cAAY,SAAS;AAAA,wBACL,aAAa,WAAW;AAAA,wBACxB,aAAa,eAAe;AAAA,wBAC5B,aAAa,cAAc;AAAA,kBACjC,GAAG,gBAAgB,IAAI,OAAO,OAAO,KAAK,EAAC,UAAU,OAAM,CAAC,CAAC;AAAA,MACzE;AAAA,IACF,CAAC;AAMD,eAAW,MAAM,6BAA6B;AAC5C,UAAI,eAAe,GAAG,GAAG,GAAG;AAC1B,WAAG,KAAK,eAAe,CAAC,GAAG,IAAI;AAAA,MACjC;AAAA,IACF;AACA,eAAW,MAAM,wBAAwB;AACvC,UAAI,eAAe,KAAK,QAAQ,QAAQ,WAAW,GAAG;AAyBpD,aAAK,QAAQ,OAAO,YAAY,aAAa,CAAC,GAAG,IAAI;AAAA,MACvD;AAGA,cAAQ,gBAAgB,GAAG,MAAM,KAAK,MAAM,GAAG,aAAa;AAAA,IAC9D;AAGA,eAAW,MAAM,qBAAqB;AACpC,cAAQ,aAAa,GAAG,UAAU,GAAG,WAAW,KAAK,IAAI;AAAA,IAC3D;AAGA,QAAI,IAAI,wBAAwB;AAC9B,aAAO,QAAQ,IAAI,sBAAsB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnE,cAAM,SAAU,MAAc;AAC9B,cAAMI,WAA6B,QAAQ,QAAQ,QAAQ;AAC3D,YAAI,UAAU,CAAC,OAAO,aAAa;AACjC,gBAAM,iBAAiBA,UAAS,iBAAiB,MAAM,GAAG,KAAK,CAAC;AAChE,kBAAO,QAAQ,IAAI,uBAAuB,GAAG,GAAG,EAAC,OAAc,GAAG,QAAQ,cAAc;AACxF,iBAAO,IAAI,uBAAuB,GAAG;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAIA,OAAe,qBAAqB,OAAe,KAAa,KAAa;AAC3E,UAAM,eAAe,OAAO,KAAK,YAAY,KAAK,MAAM,GAAG;AAC3D,QAAI,IAAI,WAAW,KAAK,GAAG;AACzB,aAAO,IAAI,QAAQ,QAAQ,EAAE;AAAA,IAC/B,WAAW,IAAI,WAAW,GAAG,GAAG;AAC9B,aAAO,GAAG,YAAY,GAAG,GAAG,KAAK,YAAY,IAAI,GAAG;AAAA,IACtD,WAAW,IAAI,SAAS,IAAI,GAAG;AAC7B,YAAM,MAAM,IAAI,MAAM,aAAa;AACnC,YAAM,QAAQ,MAAM,CAAC;AACrB,YAAM,YAAY,MAAM,CAAC;AACzB,YAAM,UAAU,GAAG,KAAK,MAAM,KAAK,QAAQ,KAAK,MAAM,GAAG;AACzD,aAAO,GAAG,YAAY,IAAI,KAAK,KAAK,OAAO,KAAK,SAAS;AAAA,IAC3D,OAAO;AACL,YAAM,UAAU,GAAG,KAAK,MAAM,GAAG,QAAQ,KAAK,MAAM,GAAG;AACvD,aAAO,GAAG,YAAY,IAAI,GAAG,KAAK,OAAO;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,OAAc,uBAAuB,WAA8B,cAAsB,eAAe,MAAM;AAE5G,QAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,kBAAY,UAAU,KAAK,IAAI;AAAA,IACjC;AACA,gBAAY,UAAU,WAAW,UAAU,YAAY;AACvD,UAAM,QAAQ,IAAI,YAAY;AAC9B,UAAM,MAAM,IAAI,YAAY;AAS5B,UAAM,YAAY,IAAI,UAAU,SAAS;AAEzC,UAAM,cAAc,CAAC,SAAkB;AACrC,UAAI,YAAY,IAAI,GAAG;AACrB,cAAM,SAAS,KAAK,SAAS,SAAS,OAAO;AAC7C,YAAI,CAAC,QAAQ;AAEX,gBAAM,YAAY,KAAK,SAAS,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC;AAC5D,gBAAM,uBAAuB,UAAU;AAAA,YAAI,cACzC,KAAK,qBAAqB,OAAO,KAAK,QAAQ;AAAA,UAChD;AACA,eAAK,WAAW,qBAAqB,KAAK,IAAI;AAAA,QAChD;AAAA,MACF,WAAW,SAAS,IAAI,GAAG;AACzB,YAAI,KAAK,SAAS,SAAS;AACzB,gBAAM,UAAU,KAAK,SAAS;AAAA,YAAK,eACjC,YAAY,SAAS,KAAK,UAAU,SAAS,SAAS,OAAO;AAAA,UAC/D;AACA,cAAI,CAAC,SAAS;AACZ,iBAAK,SAAS,QAAQ,eAAa;AACjC,kBAAI,YAAY,SAAS,GAAG;AAC1B,sBAAM,YAAY,UAAU,SAAS,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC;AACjE,sBAAM,uBAAuB,UAAU;AAAA,kBAAI,cACzC,KAAK,qBAAqB,OAAO,KAAK,QAAQ;AAAA,gBAChD;AACA,0BAAU,WAAW,qBAAqB,KAAK,IAAI;AAAA,cACrD;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,cAAU,MAAM,QAAQ,WAAW;AAEnC,QAAI,QAAQ,UAAU,UAAU;AAOhC,YAAQ,MAAM,WAAW,OAAO,IAAI;AACpC,YAAQ,MAAM,WAAW,OAAO,IAAI;AAGpC,QAAI,cAAc;AAChB,kBAAY,cAAc,YAAY,oBAAoB,KAAK;AAAA,IACjE;AAGA,WAAO;AAAA,EACT;AAAA,EAEO,WAAW,KAAU,WAAW,KAAK,QAAQ,UAAU,QAA0B;AACtF,SAAK,QAAQ,OAAO,aAAa,WAAW,KAAK,KAAK,QAAQ,OAAO,aAAa,iBAAiB,UAAU,MAAM,GAAG,MAAM;AAAA,EAC9H;AAAA,EAEO,gBAAgB,KAAU,OAAe,QAA0B;AACxE,SAAK,QAAQ,OAAO,aAAa,gBAAgB,KAAK,OAAO,MAAM;AAAA,EACrE;AAAA,EAEO,aAAa,SAAkB,MAAc;AAClD,UAAM,OAAO,QAAQ,aAAa,IAAI;AACtC,WAAO;AAAA,EACT;AAAA,EAEO,sBAAsB,SAAkB,MAAc;AAC3D,UAAM,OAAO,QAAQ,aAAa,IAAI;AAItC,YAAQ,gBAAgB,IAAI;AAC5B,WAAO;AAAA,EACT;AAAA,EAEO,8BAA8B,SAAkB,KAAU;AAC/D,QAAI,OAAO,QAAQ,aAAa,QAAO,gBAAgB;AAEvD,QAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,GAAG;AACjC,YAAM,eAAeJ,cAAY,eAAe,GAAGD,aAAY,KAAK,oBAAoB,IAAI,CAAC,eAAe,GAAG;AAM/G,aAAO,GAAG,IAAI,IAAI,YAAY;AAC9B,cAAQ,aAAa,QAAO,kBAAkB,IAAI;AAAA,IAIpD;AAOA,YAAQ,gBAAgB,QAAO,gBAAgB;AAC/C,WAAO;AAAA,EACT;AAAA,EAEO,YAAY,SAAe;AAChC,SAAK,eAAe;AACpB,SAAK,MAAM,MAAM,YAAY,aAAa,SAAS,KAAK,MAAM,MAAM,WAAW;AAAA,EACjF;AAAA;AAAA,EAGA,OAAc,kBAAkB,SAAe,KAAU,QAAmC;AAK1F,UAAM,eAAe,OAAO,OAAO,UAAU,mBAAmB,SAAS,WAAW,UAAU;AAAA,MAC5F,WAAW,MAAM;AAEf,YAAI,KAAK,aAAa,KAAK,WAAW;AAMpC,gBAAM,UAAU,QAAO,iBAAiB,YAAY,YAAa,KAAc,QAAQ,EAAE,CAAC;AAE1F,iBAAO,SAAS,SAAS,IAAI,WAAW,gBAAgB,WAAW;AAAA,QAGrE,WAAW,KAAK,aAAa,KAAK,cAAc;AAC9C,gBAAMM,WAAU;AAChB,cAAIA,SAAQ,aAAa,QAAO,WAAW,GAAG;AAC5C,mBAAO,WAAW;AAAA,UACpB;AACA,cAAIA,SAAQ,aAAa,aAAa,YAAY,GAAG;AACnD,kBAAM,SAASA,SAAQ,aAAa,aAAa,YAAY,KAAK;AAElE,kBAAM,gBAAgB,MAAM,KAAK,OAAO,SAAS,oBAAoB,CAAC,EAAE,IAAI,YAAU,EAAC,KAAK,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,EAAC,EAAE;AACvH,aAAC,iBAAiB,CAAC,GAAG,QAAQ,QAAM;AAClC,cAAAA,SAAQ,aAAa,GAAG,KAAK,OAAO,GAAG,QAAQ,IAAI;AAAA,YACrD,CAAC;AAAA,UAoBH;AAEA,gBAAM,kBAAkBA,SAAQ,aAAa,QAAO,iCAAiC;AACrF,gBAAM,qBAAqB,OAAO,gBAAgB,IAAI,QAAM,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC;AACvF,gBAAM,YAAY,mBAAmB,SAASA,SAAQ,QAAQ,YAAY,CAAC,KAAK,mBAAmB,SAAS,iBAAiB,YAAY,CAAQ;AASjJ,gBAAM,mBAAmB,OAAO,aAAa,IAAI,QAAM,GAAG,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,QAAO,aAAa,CAAC;AACvG,gBAAM,cAAc,oBAAI,IAAoB;AAC5C,gBAAM,gBAAgB,oBAAI,IAAoB;AAC9C,gBAAM,YAAY,aAAa,UAAU,IAAI,QAAM,GAAG,IAAI;AAC1D,gBAAM,SAASA,SAAQ,kBAAkB,EAAE,OAAO,QAAM;AACtD,kBAAM,QAAQA,SAAQ,aAAa,EAAE;AAGrC,gBAAI,SAAS,UAAU,SAAS,EAAE,GAAG;AACnC,4BAAc,IAAI,IAAI,KAAK;AAAA,YAC7B,WAAW,SAAS,QAAO,aAAa,KAAK,GAAG;AAC9C,kBAAI,eAAuB,QAAO,iBAAiB,KAAK,EAAE,CAAC,EAAE,CAAC;AAI9D,oBAAM,iBAAiB;AACvB,6BAAe,aAAa,QAAQ,YAAY,MAAM;AAEtD,oBAAM,oBAAoBN,aAAY,KAAK,oBAAoB,YAAY;AAE3E,oBAAM,OAAOC,cAAY,eAAe,mBAAmB,OAAO,OAAO,GAAG,CAAC;AAE7E,kBAAI,SAAS,MAAM;AACjB,gBAAAK,SAAQ,gBAAgB,EAAE;AAAA,cAC5B,OAAO;AACL,gBAAAA,SAAQ,aAAa,IAAI,IAAI;AAAA,cAC/B;AACA,0BAAY,IAAI,IAAI,cAAc;AAAA,YAEpC;AAEA,kBAAM,eAAe,gBAAgB,SAAS,GAAG,YAAY,CAAC;AAC9D,mBAAO;AAAA,UACT,CAAC,EAAE,SAAS;AAEZ,cAAI,cAAc,MAAM;AACtB,YAAAA,SAAQ,aAAa,aAAa,uBAAuB,KAAK,UAAU,MAAM,KAAK,cAAc,QAAQ,CAAC,CAAC,CAAC;AAAA,UAC9G;AAEA,cAAI,YAAY,MAAM;AACpB,YAAAA,SAAQ,aAAa,aAAa,uBAAuB,KAAK,UAAU,MAAM,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC;AAAA,UAC5G;AAIA,gBAAM,IAAK,UAAU,YAAa,WAAW,gBAAgB,WAAW;AACxE,iBAAO;AAAA,QACT;AACA,eAAO,WAAW;AAAA,MACpB;AAAA,IACF,CAAC;AACD,UAAM,OAAiB,CAAC;AACxB,QAAI;AAEJ,WAAO,cAAc,cAAc,SAAS,GAAG;AAC7C,UAAI,YAAY,aAAa,KAAK,WAAW;AAC3C,cAAM,OAAQ,YAAqB,eAAe;AAClD,cAAM,WAAW,OAAO,OAAO,UAAU,cAAc,UAAU;AACjE,YAAI,CAAC,SAAU;AAIf,cAAM,SAAS,QAAO,iBAAiB,IAAI;AAC3C,cAAMC,OAAM,OAAO,IAAI,SAAO,EAAC,MAAM,GAAG,YAAY,SAAS,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,SAAS,GAAG,CAAC,GAAG,UAAU,GAAE,EAAE;AAC5H,YAAI,cAAc;AAClB,iBAAS,IAAI,GAAG,IAAIA,KAAI,QAAQ,KAAK;AACnC,gBAAM,KAAKA,KAAI,CAAC;AAEhB,gBAAM,WAAW,GAAG;AAEpB,gBAAM,eAAe,SAAS,MAAM,UAAU,aAAa,SAAS,KAAK;AAMzE,cAAI;AACJ,cAAI,YAAY,cAAc,YAAY,WAAW,SAAS,YAAY,MAAM,SAAS;AACvF;AAAA,UACF,OAAO;AACL;AAAA,UACF;AACA,gBAAM,OAAO,SAAS,eAAe,YAAY;AACjD,gBAAM,gBAAgB,QAAO,oBAAoB,EAAC,IAAI,GAAG,MAAM,KAAI,GAAG,MAAM;AAG5E,mBAAS,QAAQ,OAAO,IAAI;AAC5B,mBAAS,QAAQ,OAAO,cAAc,KAAK;AAC3C,mBAAS,QAAQ,OAAO,cAAc,GAAG;AAGzC,gBAAM,WAAW,OAAO,OAAO,SAAS,uBAAuB;AAC/D,mBAAS,OAAO,OAAO,OAAO,SAAS,eAAe,GAAG,OAAO,CAAC;AAEjE,eAAK,KAAK,IAAI,QAAO,GAAG,MAAM,MAAM;AAAA,YAClC,OAAO,cAAc;AAAA,YACrB,MAAM;AAAA,YACN,KAAK,cAAc;AAAA,YACnB,QAAQ,YAAY;AAAA;AAAA,UAEtB,GAAG,EAAC,UAAoB,OAAc,CAAC,CAAC;AACxC,wBAAc,SAAS,QAAQ,GAAG,QAAQ;AAAA,QAC5C;AACA,iBAAS,QAAQ,OAAO,OAAO,OAAO,SAAS,eAAe,KAAK,UAAU,aAAa,KAAK,MAAM,CAAC,CAAC;AACvG,qBAAa,YAAY,aAAa,SAAS,SAAS,WAAW;AAAA,MACrE,WAAW,YAAY,aAAa,KAAK,cAAc;AAErD,cAAM,OAAO,GAAG,YAAY,SAAS,EAAE,CAAC;AACxC,cAAMD,WAAU;AAChB,cAAM,WAAW,OAAO,OAAO,SAAS,uBAAuB;AAC/D,cAAM;AACN,cAAM,gBAAgB,QAAO,oBAAoB,EAAC,MAAMA,UAAS,IAAI,MAAM,MAAM,YAAW,GAAG,MAAM;AAErG,cAAM,kBAAkBA,SAAQ,aAAa,QAAO,iCAAiC;AACrF,cAAM,qBAAqB,OAAO,gBAAgB,IAAI,QAAM,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC;AACvF,cAAM,YAAY,mBAAmB,SAASA,SAAQ,QAAQ,YAAY,CAAC,KAAK,mBAAmB,SAAS,iBAAiB,YAAY,CAAQ;AAKjJ,cAAM,mBAAmB,OAAO,aAAa,IAAI,QAAM,GAAG,IAAI,KAAK,CAAC,GAAG,OAAO,QAAO,aAAa;AAClG,cAAM,SAASA,SAAQ,kBAAkB,EAAE,OAAO,QAAM,gBAAgB,SAAS,GAAG,YAAY,CAAC,CAAC,EAAE,SAAS;AAC7G,qBAAa,YAAY,aAAa,cAAc,OAAO,WAAW;AACtE,qBAAa,YAAY,aAAa,cAAc,KAAK,YAAY,WAAW;AAChF,iBAAS,OAAO,WAAW;AAK3B,cAAM,SAAS,IAAI,QAAO,MAAM,YAAY,cAAe,kEAAsD;AAAA,UAC/G,OAAO,cAAc;AAAA,UACrB,MAAM;AAAA,UACN,KAAK,cAAc;AAAA,UACnB,QAAQ,YAAY;AAAA;AAAA,QAEtB,GAAG,EAAC,QAAgB,SAAkB,CAAC;AACvC,aAAK,KAAK,MAAM;AAAA,MAClB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,oBAAoB,MAAqD,QAAyB;AAC9G,QAAI,KAAK,kDAAsC,KAAK,MAAM;AACxD,YAAM,UAAU,KAAK;AACrB,YAAM,QAAyB,OAAO,OAAO,SAAS,cAAc,MAAM;AAC1E,YAAM,MAAuB,OAAO,OAAO,SAAS,cAAc,MAAM;AACxE,YAAM,aAAa,MAAM,GAAG,KAAK,EAAE,QAAQ;AAC3C,YAAM,aAAa,kBAAkB,EAAE;AACvC,YAAM,OAAO,QAAQ,aAAa,QAAO,iBAAiB;AAC1D,YAAM,mBAAmB,QAAQ,aAAa,QAAO,qBAAqB;AAC1E,UAAI,kBAAkB;AACpB,cAAM,aAAa,8CAA2C;AAAA,MAChE;AACA,UAAI,MAAM;AACR,gBAAQ,gBAAgB,QAAO,iBAAiB;AAChD,cAAM,aAAa,QAAO,mBAAmB,IAAI;AAAA,MACnD;AACA,UAAI,aAAa,MAAM,GAAG,KAAK,EAAE,MAAM;AACvC,UAAI,aAAa,gBAAgB,EAAE;AACnC,aAAO,EAAC,OAAO,IAAG;AAAA,IACpB,WAAW,KAAK,wCAAgC;AAC9C,aAAO;AAAA,QACL,OAAO,OAAO,OAAO,SAAS,eAAe,gBAAgB,KAAK,EAAE,IAAI;AAAA,QACxE,KAAK,OAAO,OAAO,SAAS,eAAe,cAAc,KAAK,EAAE,IAAI;AAAA,MACtE;AAAA,IACF,OAAO;AACL,aAAO;AAAA,QACL,OAAO,OAAO,OAAO,SAAS,cAAc,cAAc,KAAK,EAAE,EAAE;AAAA,QACnE,KAAK,OAAO,OAAO,SAAS,cAAc,YAAY,KAAK,EAAE,EAAE;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA,EAEO,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,MAAM,IAAI,OAAO;AACtB,SAAK,MAAM,MAAM,OAAO;AAAA,EAC1B;AAAA,EAEO,iBAAiB;AACtB,QAAI,OAAO,KAAK,MAAM,MAAM;AAC5B,WAAO,MAAM;AACX,UAAI,SAAS,KAAK,MAAM,KAAK;AAC3B;AAAA,MACF;AACA,WAAK,OAAO;AACZ,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B;AAAA,EACF;AAAA,EAEO,OAAO,UAAoC;AAChD,UAAM,SAAgB,CAAC;AACvB,QAAI,OAAO,KAAK,MAAM,MAAM;AAC5B,WAAO,QAAQ,SAAS,KAAK,MAAM,KAAK;AACtC,UAAI,WAAW,IAAI,GAAG;AACpB;AAAA,MACF;AACA,aAAO,KAAK,IAAI;AAChB,aAAO,KAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEO,aAAa,KAAa;AAC/B,QAAI;AACJ,SAAK,OAAO,CAAC,SAAS;AACpB,YAAM,QAAS,KAAiB,eAAe,QAAO,iBAAiB;AACvE,UAAI,SAAS,UAAU,KAAK;AAC1B,iBAAU,KAAa;AACvB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,kBAAkB,SAAqC,SAAkB;AAErF,UAAM,SAAS,YAAY,KAAK,IAAI;AACpC,UAAM,QAAQ;AACd,YAAQ,iBAAiB,IAAI,QAAO,gBAAgB,OAAO,QAAO,cAAc,OAAO,QAAO,cAAc,OAAO,QAAO,gBAAgB,GAAG,EAAE,QAAQ,QAAM;AAC3J,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,MAAM;AAAA,IACnD,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,kBAAkB,SAAqC,QAAgB;AACnF,YAAQ,iBAAiB,IAAI,QAAO,gBAAgB,OAAO,QAAO,cAAc,OAAO,QAAO,cAAc,OAAO,QAAO,gBAAgB,GAAG,EAAE,QAAQ,QAAM;AAC3J,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,QAAQ,GAAG,GAAG,MAAM;AAAA,IACjE,CAAC;AAAA,EACH;AAAA,EAEA,OAAc,cAAc,SAAkB,MAAwE;AACpH,YAAQ,iBAAiB,IAAI,QAAO,YAAY,GAAG,EAAE,QAAQ,QAAM;AACjE,WAAK,OAAO,SAAO,IAAI,SAAS,IAAI,IAAI,EAAE,QAAQ,SAAO;AACvD,WAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,IAAI,QAAQ,GAAG,GAAG,IAAI,KAAK;AAAA,MACxE,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,OAAc,iBAAiB,SAAkB,QAA0D;AACzG,UAAM,YAAY,QAAQ;AAC1B,UAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,YAAY,KAAK;AAC3D,QAAI,OAAO,gBAAgB,QAAQ;AACjC,cAAQ,YAAY,UAAU,QAAQ,OAAO,MAAM,OAAO,IAAI;AAAA,IAChE,OAAO;AACL,cAAQ,YAAY,UAAU,WAAW,OAAO,MAAM,OAAO,IAAI;AAAA,IACnE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,eAAe,SAAkB,QAAgB,QAAiD;AAC9G,UAAM,aAAa,OAAO,OAAO,QAAQ,QAAQ,YAAY,KAAK;AAQlE,YAAQ,iBAAiB,IAAI,QAAO,WAAW,GAAG,EAAE,QAAQ,QAAM;AAChE,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,MAAM,UAAU;AAAA,IAC7D,CAAC;AACD,YAAQ,iBAAiB,IAAI,QAAO,YAAY,GAAG,EAAE,QAAQ,QAAM;AAEjE,UAAIE,WAAU,GAAG;AAEjB,kBAAY,UAAU,OAAO,MAAMA,QAAO,EAAE,QAAQ,EAAE,QAAQ,CAAAC,QAAM;AAClE,QAAAD,WAAUA,SAAQ,OAAO,GAAGC,IAAG,KAAK,IAAID,SAAQ,OAAOC,IAAG,KAAK,EAAE,QAAQA,IAAG,CAAC,GAAG,GAAGA,IAAG,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,MAC3G,CAAC;AACD,SAAG,YAAYD;AAAA,IACjB,CAAC;AAGD,QAAI,UAAU,QAAQ;AACtB,gBAAY,UAAU,OAAO,MAAM,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAAM;AAClE,gBAAU,QAAQ,OAAO,GAAG,GAAG,KAAK,IAAI,QAAQ,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,MAAM,EAAE;AAAA,IAC3G,CAAC;AACD,YAAQ,YAAY;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,mBAAmB,SAAkB,UAAkB,QAAyE;AAC5I,YAAQ,iBAAiB,IAAI,QAAO,YAAY,GAAG,EAAE,QAAQ,SAAO;AAClE,UAAI,UAAU,IAAI;AAElB,kBAAY,UAAU,UAAU,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAAM;AAC/D,kBAAU,QAAQ,OAAO,GAAG,GAAG,KAAK,IAAI,QAAQ,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,aAAa,QAAO,YAAY,CAAC,EAAE;AAAA,MAC1I,CAAC;AACD,UAAI,YAAY;AAAA,IAClB,CAAC;AAGD,UAAM,iBAAiB,OAAO,OAAO,kBAAkB,CAAC;AACxD,UAAM,qBAAqB,eAAe,IAAI,QAAM,GAAG,KAAK,WAAW,KAAK,KAAK,EAAE,WAAW,KAAK,KAAK,CAAC,EAAE,KAAK,GAAG;AACnH,UAAM,aAAa,YAAY,KAAK;AACpC,YAAQ,iBAAiB,kBAAkB,EAAE,QAAQ,QAAM;AACzD,SAAG,YAAY,GAAG,UAAU,QAAQ,UAAU,UAAU;AAAA,IAC1D,CAAC;AAED,YAAQ,iBAAiB,IAAI,QAAO,iCAAiC,GAAG,EAAE,QAAQ,QAAM;AACtF,SAAG,YAAY,GAAG,UAAU,QAAQ,UAAU,UAAU;AAAA,IAC1D,CAAC;AAGD,QAAI,OAAO,0BAA0B;AACnC,UAAI,UAAU,QAAQ;AACtB,kBAAY,UAAU,UAAU,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAAM;AAC/D,kBAAU,QAAQ,OAAO,GAAG,GAAG,KAAK,IAAI,QAAQ,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,wBAAwB,EAAE;AAAA,MACpI,CAAC;AACD,cAAQ,YAAY;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,mBAAmB,SAAkB,QAAiE;AAClH,UAAM,iBAAiB,OAAO,OAAO,kBAAkB,CAAC;AACxD,UAAM,qBAAqB,eAAe,IAAI,QAAM,GAAG,KAAK,WAAW,KAAK,KAAK,EAAE,WAAW,KAAK,KAAK,CAAC,EAAE,KAAK,GAAG;AACnH,YAAQ,iBAAiB,kBAAkB,EAAE,QAAQ,QAAM;AACzD,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,OAAO,MAAM,GAAG,GAAG,OAAO,IAAI;AAAA,IAC3E,CAAC;AACD,YAAQ,iBAAiB,IAAI,QAAO,iCAAiC,GAAG,EAAE,QAAQ,QAAM;AACtF,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,OAAO,MAAM,GAAG,GAAG,OAAO,IAAI;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEA,OAAc,eAAe,SAAkB,QAAwC;AACrF,YAAQ,iBAAiB,IAAI,QAAO,WAAW,GAAG,EAAE,QAAQ,QAAM;AAChE,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,OAAO,MAAM,GAAG,GAAG,OAAO,IAAI;AAAA,IAC3E,CAAC;AACD,YAAQ,iBAAiB,IAAI,QAAO,YAAY,GAAG,EAAE,QAAQ,QAAM;AACjE,SAAG,YAAY,GAAG,UAAU,QAAQ,OAAO,OAAO,MAAM,GAAG,GAAG,OAAO,IAAI;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEA,OAAc,oBAAoB,SAAkB,IAAY,IAAY,QAAyB;AACnG,YAAQ,iBAAiB,IAAI,QAAO,YAAY,GAAG,EAAE,QAAQ,gBAAc;AACzE,YAAM,eAAe,OAAO,OAAO,UAAU,mBAAmB,YAAY,WAAW,cAAc;AAAA,QACnG,WAAWE,OAAM;AACf,cAAIA,MAAK,aAAa,KAAK,cAAc;AACvC,kBAAMJ,WAAUI;AAChB,mBAAOJ,SAAQ,aAAa,EAAE,IAAI,WAAW,gBAAgB,WAAW;AAAA,UAC1E,OAAO;AACL,mBAAO,WAAW;AAAA,UACpB;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAI;AAEJ,aAAO,OAAO,cAAc,SAAS,GAAG;AACtC,cAAMA,WAAU;AAChB,QAAAA,SAAQ,aAAa,IAAIA,SAAQ,aAAa,EAAE,KAAK,EAAE;AACvD,QAAAA,SAAQ,gBAAgB,EAAE;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAc,cAAc,SAAkB,aAAqB;AACjE,UAAM,QAAQ,aAAa,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,QAAM;AACrD,YAAM,IAAI,GAAG,KAAK,EAAE,MAAM,GAAG;AAC7B,YAAM,OAAO,EAAE,CAAC,GAAG,KAAK;AACxB,YAAM,QAAQ,EAAE,CAAC,GAAG,KAAK;AACzB,aAAO;AAAA,QACL;AAAA,QACA;AAAA;AAAA,QAEA,OAAO,OAAO,cAAc,OAAO,UAAU,GAAG;AAAA,QAChD,QAAQ,YAAY,KAAK;AAAA,MAC3B;AAAA,IACF,CAAC;AAGD,YAAQ,iBAAiB,IAAI,QAAO,iBAAiB,GAAG,EAAE,QAAQ,QAAM;AACtE,WAAK,OAAO,SAAO,IAAI,SAAS,IAAI,IAAI,EAAE,QAAQ,SAAO;AACvD,WAAG,YAAY,GAAG,UAAU,QAAQ,IAAI,OAAO,IAAI,MAAM;AAAA,MAC3D,CAAC;AAAA,IACH,CAAC;AACD,SAAK,OAAO,SAAO,IAAI,SAAS,IAAI,IAAI,EAAE,QAAQ,SAAO;AACvD,cAAQ,YAAY,QAAQ,UAAU,QAAQ,IAAI,OAAO,IAAI,KAAK;AAAA,IACpE,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,aAAoB,aAAa,QAAgB,SAAkB,QAAgB,aAAqB,eAAwC,KAAU,QAAyB,KAAyD;AAnjC9O;AAqjCI,UAAM,MAAM,OAAO,OAAO,UAAU,uBAAuB;AAC3D,QAAG,CAAC,KAAK;AACP;AAAA,IACF;AACA,UAAM,gBAAgB,QAAQ,UAAU,IAAI;AAC5C,QAAI,YAAY;AAChB,QAAI,KAAK;AACP,kBAAY,IAAI;AAChB,UAAI,iBAAiB,MAAM,QAAO,mBAAmB,GAAG,CAAC;AACzD,YAAM,QAAQ,QAAO,uBAAuB,IAAI,UAAU,CAAC,GAAG,OAAO,MAAM,IAAI;AAC/E,oBAAc,YAAY,SAAS,IAAI,YAAY;AAAA,IACrD,OAAO;AACL,kBAAYL,cAAY,eAAeD,aAAY,KAAK,oBAAoB,MAAM,GAAG,GAAG;AAAA,IAC1F;AAEA,UAAM,eAAe,OAAO;AAC5B,UAAM,eAAe;AAAA;AAAA,cAEX,aAAa,cAAc;AAAA,cAC3B,aAAa,cAAc;AAAA,cAC3B,aAAa,iBAAiB;AAAA,cAC9B,aAAa,eAAe;AAAA,cAC5B,aAAa,cAAc;AAAA,cAC3B,aAAa,kBAAkB;AAAA,cAC/B,aAAa,iBAAiB;AAAA,cAC9B,aAAa,wBAAwB;AAAA,cACrC,aAAa,oBAAoB;AAAA,cACjC,aAAa,yBAAyB;AAAA,cACtC,aAAa,mBAAmB;AAAA,cAChC,aAAa,sBAAsB;AAAA,cACnC,aAAa,iBAAiB;AAAA,cAC9B,aAAa,yBAAyB;AAAA;AAGhD,UAAM,iBAAiB,OAAO,mBAAmB;AACjD,UAAM,aAAa,OAAO,eAAe,GAAG;AAC5C,UAAM,eAAe,OAAO,iBAAiB;AAC7C,UAAM,WAAW,OAAO,aAAa,GAAG;AAGxC,QAAI,SAAS;AAAA,MACX;AAAA,MACA;AAAA,MACA,YAAY,MAAM,OAAO,OAAO,SAAS,cAAc,YAAY,OAAO,IAAI,IAAI;AAAA,MAClF,WAAW,QAAQ;AAAA;AAAA,MAEnB;AAAA,MACA,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,aAAa,gBAAgB,OAAO,WAAW,CAAC,GAAG,GAAG;AAAA,IACjE;AAEA,WAAO,YAAY,QAAO,mBAAmB,SAAS,EAAC,QAAQ,cAAc,KAAU,YAAY,OAAM,CAAC;AAC1G,aAAS,OAAO,OAAO,MAAM;AAG7B,UAAM,qBAAqB;AAC3B,UAAM,oBAAoBC,cAAY,SAAmC,oBAAoB,OAAO,OAAO,KAAK,EAAC,UAAU,OAAM,CAAC,CAAC;AACnI,QAAI,qBAAqB,SAAS,GAAG;AACnC,iBAAW,mBAAmB,iBAA6C;AAAA,IAC7E;AAEA,QAAI,mBAAmB,QAAQ,cAAc,qBAAqB,mBAAmB,QAAQ,UAAU,GAAG;AACxG,wBAAkB,OAAO,WAAW,mBAAmB,WAAW,iBAA6C;AAAA,IACjH;AAIA,UAAM,WAAW,QAAQ,aAAa,QAAO,iCAAiC;AAC9E,QAAI,cAAqB,CAAC;AAC1B,QAAI,UAAU;AACZ,oBAAcA,cAAY,eAAsB,EAAC,YAAW,cAAc,cAAaD,aAAY,KAAK,oBAAoB,QAAQ,EAAC,GAAG,GAAG;AAC3I,UAAI,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC/B,sBAAc,CAAC,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,QAAI,iBAAiB,SAAS,GAAG;AAC/B,gBAAU,eAAe,GAAG,WAAW;AAAA,IACzC;AAKA,UAAM,mBAAmB,QAAO,mBAAmB,SAAS,EAAC,QAAQ,cAAc,KAAU,YAAY,OAAM,CAAC;AAChH,QAAI,kBAAkB;AACpB,mBAAO,SAAQ,WAAf,GAAe,SAAW,CAAC;AAC3B,aAAO,QAAQ,OAAO,YAAY;AAClC,aAAO,QAAQ,gBAAgB,EAAE,QAAQ,CAAC,CAAC,KAAK,IAAI,GAAG,UAAU;AAK/D,YAAI,qBAAqB,SAAS,GAAG;AACnC,oBAAU,mBAAmB,KAAK,MAAM,EAAC,OAAc,CAAC;AAAA,QAC1D;AAAA,MACF,CAAC;AAAA,IACH;AAKA,UAAM,SAAS,QAAQ,aAAa,QAAO,iCAAiC;AAE5E,QAAI,QAAQ;AACV,YAAM,SAAS,GAAG,YAAY,KAAK,MAAM;AACzC,MAAAC,cAAY,SAAS,QAAQ,OAAO,OAAO,KAAK,EAAC,UAAU,OAAM,CAAC,CAAC;AAAA,IACrE;AAEA,kBAAc,iBAAiB,aAAa,UAAU,IAAI,QAAM,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,QAAM;AAClG,SAAG,aAAa,aAAa,2BAA2B,MAAM;AAAA,IAChE,CAAC;AAKD,UAAM,0BAA0B,YAAY,KAAK;AAUjD,UAAM,gBAAgB,cAAc,aAAa,QAAO,uCAAuC,KAAK;AACpG,QAAI,eAAe;AACjB,cAAO,iBAAiB,eAAe,EAAC,MAAM,IAAI,aAAa,KAAK,MAAM,QAAQ,UAAS,CAAC;AAAA,IAC9F;AAGA,UAAM,iBAAiB,cAAc,aAAa,QAAO,uBAAuB;AAEhF,kBAAc,kBAAkB,EAAE,QAAQ,QAAM,cAAc,aAAa,IAAI,cAAc,aAAa,EAAE,EAAG,QAAQ,WAAW,MAAM,CAAC,CAAC;AAC1I,UAAM,aAAa,KAAK,eAAe,eAAe,QAAQ,EAAC,MAAM,UAAS,CAAC;AAG/E,QAAI,gBAAgB;AAElB,oBAAc,YAAY,cAAc,UAAU,WAAW,IAAI,cAAc,KAAK,MAAM;AAAA,IAG5F;AACA,UAAM,iBAAiB,KAAK,mBAAmB,eAAe,eAAe,EAAC,QAAgB,0BAA0B,OAAO,iBAAiB,EAAC,CAAC;AAClJ,UAAM,mBAAmB,KAAK,mBAAmB,eAAe,iBAAiB,EAAC,QAAgB,0BAA0B,OAAO,mBAAmB,EAAC,CAAC;AAYxJ,UAAM,OAAO,KAAK,cAAc,eAAe,WAAW;AAC1D,SAAK,cAAc,eAAe,IAAI;AACtC,SAAK,eAAe,eAAe,EAAC,MAAM,YAAY,MAAM,SAAQ,CAAC;AAGrE,SAAK,mBAAmB,eAAe,EAAC,QAAgB,MAAM,gBAAgB,MAAM,aAAY,CAAC;AACjG,SAAK,mBAAmB,eAAe,EAAC,QAAgB,MAAM,kBAAkB,MAAM,eAAc,CAAC;AAQrG,QAAI,kBAAkB,kBAAkB,QAAQ,kBAAkB,SAAS;AAEzE,YAAM,KAAK,cAAc,UAAU,EAAE,QAAQ,QAAM,IAAI,OAAO,EAAE,CAAC;AAAA,IACnE,OAAO;AACL,oBAAc,UAAU,IAAI,GAAG,OAAO,IAAI,EAAE;AAC5C,UAAI,OAAO,aAAa;AAAA,IAC1B;AAGA,WAAO;AAAA,EACT;AAAA,EAEA,aAAqB,mBAAmB,KAA0D;AAEhG,UAAM,gBAAmC,CAAC;AAC1C,UAAM,kBAAmB,IAAI,YAAY,IAAI,SAAS,WAAW,SAAS,KAAK,MAAM,MAAM,IAAI,SAAS,UAAU,CAAC,CAAC,GAAG,KAAK,IAAI,QAAQ,QAAQ,IAAI,QAAQ;AAC5J,QAAI,MAAM,QAAQ,IAAI,MAAM,GAAG;AAC7B,eAAS,IAAI,GAAG,IAAI,UAAU,KAAK,IAAI,OAAO,UAAU,IAAI,KAAK;AAC/D,cAAM,KAAK,IAAI,OAAO,CAAC;AACvB,sBAAc,KAAK,GAAG,WAAW,SAAS,KAAK,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,KAAK,IAAI,QAAQ,QAAQ,EAAE,CAAC;AAAA,MAC3G;AAAA,IACF,WAAW,IAAI,QAAQ;AACrB,oBAAc,KAAK,QAAQ,QAAQ,IAAI,MAAM,CAAC;AAAA,IAChD;AAIA,WAAO;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,QAAQ,MAAM,QAAQ,IAAI,aAAa;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,OAAc,+BAA+B,MAAc,YAAoF,SAA8F;AAC3O,UAAM,kBAA8B;AAAA,MAClC;AAAA,MACA,SAAS,SAAkB,WAAmB,KAAU,QAAkC;AACxF,cAAM,UAAU,WAAW,SAAS,WAAW,KAAK,MAAM;AAC1D,cAAM,OAAO,QAAQ,SAAS,WAAW,KAAK,MAAM;AAEpD,YAAI,SAAS;AAAA,QAOb;AACA,eAAO;AAAA,MACT;AAAA,IAEF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,6BACZ,EAAC,MAAM,YAAY,WAAW,IAAI,SAAS,CAAC,GAAG,QAAO,GAOvC;AAEf,UAAM,gBAA+B;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,SAAS,SAAkB,KAAU,QAAgB,OAAc,QAAgE;AACvI,cAAM,gBAAgB,MAAM,QAAO,mBAAmB,EAAC,UAAU,KAAK,UAAU,QAAQ,KAAK,OAAM,CAAC;AACpG,aAAK,WAAW,cAAc;AAC9B,aAAK,SAAS,cAAc;AAC5B,YAAI,2BAAJ,IAAI,yBAA2B,CAAC;AAChC,cAAM,sBAAsB,IAAI;AAEhC,cAAM,eAAe;AAAA;AAAA,kBAEX,aAAa,cAAc;AAAA,kBAC3B,aAAa,iBAAiB;AAAA,kBAC9B,aAAa,eAAe;AAAA,kBAC5B,aAAa,cAAc;AAAA,kBAC3B,aAAa,kBAAkB;AAAA,kBAC/B,aAAa,iBAAiB;AAAA,kBAC9B,aAAa,wBAAwB;AAAA,kBACrC,aAAa,mBAAmB;AAAA,kBAChC,aAAa,sBAAsB;AAAA,kBACnC,aAAa,iBAAiB;AAAA,kBAC9B,aAAa,yBAAyB;AAAA;AAEhD,cAAM,iBAAiB,OAAO,mBAAmB;AACjD,cAAM,aAAa,OAAO,eAAe,GAAG;AAC5C,cAAM,eAAe,OAAO,iBAAiB;AAC7C,cAAM,WAAW,OAAO,aAAa,GAAG;AACxC,YAAI,SAAS;AAAA,UACX;AAAA,UACA;AAAA,UACA,WAAW,QAAQ;AAAA;AAAA,UAEnB,YAAY,MAAM,OAAO,OAAO,SAAS,cAAc,YAAY,OAAO,IAAI,IAAI;AAAA,UAClF;AAAA,UACA,QAAQ,OAAO;AAAA,UACf,cAAc,OAAO;AAAA,UACrB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,aAAa,gBAAgB,OAAO,WAAW,CAAC,GAAG,GAAG;AAAA,QACjE;AACA,cAAM,cAAc,QAAQ,aAAa,QAAO,sCAAsC;AACtF,YAAI,mBAAmB,CAAC;AAExB,eAAO,YAAY,QAAO,mBAAmB,SAAS,EAAC,QAAQ,cAAc,KAAU,YAAY,OAAM,CAAC;AAC1G,iBAAS,OAAO,OAAO,MAAM;AAG7B,YAAI,aAAa;AACf,cAAI,QAAQA,cAAY,eAAe,EAAC,YAAY,cAAc,cAAcD,aAAY,KAAK,oBAAoB,WAAW,EAAC,GAAG,OAAO,OAAO,KAAK,EAAC,UAAU,OAAM,CAAC,CAAC,KAAK,CAAC;AAChL,cAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,oBAAQ,CAAC,KAAK;AAAA,UAChB;AACA,6BAAmB;AAAA,QACrB;AAIA,cAAM,WAAW,oBAAoB,OAAO,IAAI,IAAI,WAAW,SAAS,KAAK,QAAQ,gBAAgB;AACrG,iBAAS;AAAA,UACP,aAAa;AAAA;AAAA,UAEb,GAAG;AAAA,QACL;AACA,eAAO,QAAQ,SAAS;AAExB,iBAAS,WAAW;AAsDpB,YAAI,iBAAiB,QAAQ;AAC7B,YAAI;AACJ,cAAM,gBAAgB,QAAQ,aAAa,QAAO,4BAA4B,KAAK;AACnF,cAAM,gBAAgB,QAAQ,aAAa,QAAO,uCAAuC,KAAK;AAC9F,YAAI,gBAAgB;AAGlB,gCAAsB,YAAY,KAAK;AACvC,2BAAiB,eAAe,QAAQ,WAAW,mBAAmB;AAEtE,2BAAiB,eAAe,QAAQ,OAAO,IAAI,aAAa,KAAK,GAAG,GAAG,MAAM;AAAA,QACnF;AAEA,0BAAkB,KAAK,YAAY,IAAI,QAAQ,OAAO,IAAI,aAAa,KAAK,GAAG,GAAG,cAAc;AAWhG,cAAM,QAAQ,QAAO,uBAAuB,KAAK,QAAQ,OAAO,MAAM,IAAI;AAC1E,gBAAQ,YAAY,SAAS,kBAAkB;AAI/C,YAAI,OAAO,MAAM,QAAO,aAAa,QAAQ,SAAS,+BAA+B,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;AAO7H,YAAI,QAAQ,qBAAqB;AAC/B,gBAAMW,YAAW,OAAO,OAAO,SAAS,cAAc,UAAU;AAChE,UAAAA,UAAS,QAAQ,OAAO,IAAI;AAC5B,UAAAA,UAAS,YAAYA,UAAS,UAAU,QAAQ,OAAO,qBAAqB,GAAG,GAAG,OAAO;AACzF,iBAAOA,UAAS;AAAA,QAClB;AAEA,eAAO;AAAA,MACT;AAAA;AAAA,IAEF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,aAAa,MAAqB;AAE9C,UAAM,MAAM;AACZ,WAAO,IAAI,KAAK,QAAQ,EAAE;AAAA,EAC5B;AAAA,EAEA,OAAc,iBAAiB,MAAqB;AAGlD,UAAM,MAAM;AACZ,WAAO,YAAY,UAAU,KAAK,QAAQ,EAAE;AAAA,EAC9C;AAAA,EAEA,OAAc,QAAQ,KAAsB,WAAkC,QAAyB,iBAAiD,CAAC,GAAS;AAEhK,QAAI,CAAC,eAAe,KAAK,QAAM,oCAAmC,GAAG;AACnE,UAAI,CAAC,eAAe,KAAK,QAAM,wDAA6C,GAAG;AAC7E,YAAI,OAAO,aAAa,KAAK;AAC3B,iBAAO,UAAU,qBAAqB,GAAG;AAAA,QAC3C;AAAA,MACF;AAEA,UAAI,kBAAkB,GAAG,GAAG;AAC1B,YAAI,kBAAkB,SAAS;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EA+CA,OAAc,mBAAmB,SAAkB,QAAwD;AACzG,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,UAAMR,aAAYC,cAAa,qBAAqB,OAAO;AAC3D,UAAM,kBAAkBD,WAAU,aAAa,qBAAqB;AACpE,QAAI,iBAAiB;AACnB,UAAI,IAAoB,KAAK,MAAM,eAAe,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM;AACrE,cAAM,OAAOF,cAAY,eAAe,EAAC,YAAY,OAAO,QAAQ,cAAc,EAAC,GAAG,OAAO,OAAO,OAAO,KAAK,OAAO,aAAa,EAAC,UAAS,OAAO,WAAU,IAAI,MAAS,CAAC;AAC7K,QAAAE,WAAU,CAAC,IAAI;AAAA,MACjB,CAAC;AAAA,IACH;AACA,WAAOA;AAAA,EACT;AAEF;AAjgDa,QACY,UAAU;AADtB,QAEY,aAAa;AAFzB,QAGY,cAAc;AAH1B,QAIY,iBAAiB;AAJ7B,QAKY,wBAAwB;AALpC,QAMY,iBAAiB;AAN7B,QAOY,eAAe;AAP3B,QAQY,eAAe;AAR3B,QASY,cAAc;AAT1B,QAUY,mBAAmB;AAV/B,QAWY,oBAAoB;AAXhC,QAYY,oBAAoB;AAZhC,QAaY,iBAAiB;AAb7B,QAcY,gBAAgB;AAd5B,QAeY,oCAAoC;AAAA;AAfhD,QAkBY,0BAA0B;AAlBtC,QAmBY,8BAA8B;AAnB1C,QAoBY,4BAA4B;AAAA;AAAA;AAAA;AApBxC,QA0BY,qBAAqB;AA1BjC,QA2BY,qBAAqB;AA3BjC,QA4BY,mBAAmB;AA5B/B,QA6BY,mBAAmB;AA7B/B,QA8BY,oBAAoB;AA9BhC,QA+BY,sBAAsB;AA/BlC,QAgCY,qBAAqB;AAhCjC,QAiCY,uBAAuB;AAjCnC,QAkCY,yBAAyB;AAlCrC,QAmCY,sBAAsB;AAnClC,QAoCY,wBAAwB;AApCpC,QAsCY,0BAA0B;AAAA;AAAA;AAAA;AAtCtC,QA0CY,+BAA+B;AA1C3C,QA2CY,0CAA0C;AA3CtD,QA4CY,oBAAoB;AA5ChC,QA6CY,yBAAyB;AA7CrC,QA+CY,oCAAoC;AA/ChD,QAgDY,oCAAoC;AAAA;AAAA;AAAA;AAhDhD,QAoDY,kCAAkC;AApD9C,QAqDY,yCAAyC;AArDrD,QAuDY,oBAA2B;AAAA,EAChD,IAAI,QAAO;AAAA,EACX,MAAM,QAAO;AAAA,EACb,OAAO,QAAO;AAAA,EACd,SAAS,QAAO;AAAA,EAChB,gBAAgB,QAAO;AAAA,EACvB,YAAY,QAAO;AAAA,EACnB,UAAU,QAAO;AAAA,EACjB,QAAQ,QAAO;AAAA,EACf,QAAQ,QAAO;AAAA,EACf,OAAO,QAAO;AAAA,EACd,aAAa,QAAO;AAAA,EACpB,aAAa,QAAO;AAAA,EACpB,YAAY,QAAO;AAAA,EACnB,aAAa,QAAO;AAAA,EACpB,eAAe,QAAO;AAAA,EACtB,cAAc,QAAO;AAAA,EACrB,gBAAgB,QAAO;AAAA,EACvB,kBAAkB,QAAO;AAAA,EACzB,gBAAgB,QAAO;AAAA,EACvB,0BAA0B,QAAO;AAAA,EACjC,eAAe,QAAO;AAAA,EACtB,YAAY,QAAO;AAAA,EACnB,kBAAkB,QAAO;AAAA,EACzB,iBAAiB,QAAO;AAAA,EACxB,iBAAiB,QAAO;AAAA,EACxB,aAAa,QAAO;AACtB;AAlFW,QAoFY,UAAU,CAAC;AAAA;AAAA;AAAA;AApFvB,QA0FY,gBAAgB;AAAA,EACrC,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AAAA,EACP,QAAO;AACT;AAzGK,IAAM,SAAN;;;ADxCP,SAAS,eAAAS,qBAAmB;;;AsCJ5B,OAAO;AAKA,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB,CAAC,QAAa,gBAAkC;AAE5E,MAAI,gBAAgB,QAAW;AAE7B,YAAQ,eAAe,qBAAqB,MAAM,MAAM;AACxD;AAAA,EACF;AAIA,UAAQ,eAAe,qBAAqB,MAAM,QAAQ,WAAW;AACzE;AAEO,IAAM,sBAAsB,CAAC,QAAa,gBAAkC;AAG/E,MAAI,gBAAgB,QAAW;AAC7B,WAAO,QAAQ,YAAY,qBAAqB,MAAM;AAAA,EACxD;AAEA,SAAO,QAAQ,YAAY,qBAAqB,QAAQ,WAAW;AAIvE;AAEO,IAAM,qBAAqB,CAAC,QAAa,gBAAkC;AAChF,SAAO,oBAAoB,QAAQ,WAAW,MAAM;AACtD;;;AtCnBA,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB;;;AuCbnB,SAAS,oBAAoB,KAAoC;AACpE,SAAO,OAAO,KAAK,sBAAsB;AAC7C;;;ACCO,SAAS,4BAA4B,KAA4C;AACpF,SAAO,OAAO,KAAK,8BAA8B;AACrD;;;AxCWA,SAAS,eAAAC,oBAAmB;AAC5B,SAAQ,kBAAiB;;;AyCflB,IAAM,qBAAqB,CAAC,QAC/B,OAAO,KAAK,qBAAqB;;;AzCiBrC,IAAM,yBAAyB,CAAC,qBAAqB,qBAAqB,0BAA0B,YAAY,sBAAsB,kBAAkB,YAAY,oBAAoB,YAAY,qBAAqB,kBAAkB,kBAAkB;AACtP,IAAM,4BAA4B,CAAI,QAAoB;AAC/D,SAAO,OAAO,OAAO,QAAQ,YAAa,wBAAwB;AACpE;AACO,IAAM,2BAA2B,CAAI,QAAa;AACvD,MAAI,0BAA0B,GAAG,GAAG;AAClC,WAAQ,IAAY;AAAA,EACtB;AACA,SAAO;AACT;AACO,IAAM,qBAAqB,CAAC,QAA0C;AAC3E,MAAI,0BAA0B,GAAG,GAAG;AAClC,WAAO,IAAI;AAAA,EACb;AACA,SAAO;AACT;AAEO,IAAM,oBAAoB,CAAI,QAA0C;AAC7E,MAAI,0BAA0B,GAAG,GAAG;AAElC,WAAQ,IAAY;AAAA,EACtB;AACA,SAAO;AACT;AACO,IAAM,iBAAN,MAAM,gBAA4D;AAAA,EAOvE,YAAmB,mBAAsB,QAAwC,mBAAoC;AAAlG;AAA8D;AANjF,SAAO,iBAAiB,oBAAI,IAAyB;AACrD,SAAO,WAAW,oBAAI,IAAyB;AAG/C;AAAA,SAAO,WAAW,oBAAI,IAAU;AAG9B,QAAI,QAAQ;AACV,WAAK,SAAS,IAAI,MAAM;AAAA,IAE1B;AAAA,EASF;AAAA,EAEA,OAAc,QAAiB,KAAW;AACxC,WAAO,oBAAoB,QAAQ,GAAG;AAAA,EACxC;AAAA,EAEA,OAAc,MAAe,KAAW;AACtC,WAAO,oBAAoB,MAAM,GAAG;AAAA,EACtC;AAAA,EAEA,OAAc,QAAiB,KAAQ;AACrC,WAAO,oBAAoB,QAAQ,GAAG;AAAA,EACxC;AAAA,EAEO,IAAI,UAAa;AACtB,SAAK,mBAAmB;AACxB,QAAI,mBAAmB,QAAQ,GAAG;AAChC,eAAS,iBAAiB,KAAK,iBAAiB;AAAA,IAClD;AACA,UAAM,MAAM,yBAA8B,QAAQ;AAClD,QAAI,KAAK;AACP,aAAO,KAAK,GAAG,EAAE,QAAQ,QAAM;AAE7B,YAAI;AACF,gBAAM,YAAY,QAAQ,YAAY,qBAAqB,KAAK,EAAE,KAAK,QAAQ,YAAY,qBAAqB,OAAO,eAAe,GAAG,EAAE,WAAW;AACtJ,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AAAA,QACF,SAAS,GAAG;AAAA,QACZ;AACA,cAAM,SAAS,IAAI,EAAE;AACrB,YAAI,WAAW,UAAa,WAAW,QAAQ,OAAO,WAAW,YAAY,CAAC,gBAAe,QAAQ,MAAM,KAAK,CAAC,OAAO,SAAS,MAAM,KAAK,EAAE,eAAe,SAAS;AACpK,gBAAM,aAAa,KAAK,kBAAkB,kBAAkB,KAAK,CAAAC,QAAM,kBAAkBA,GAAE,KAAK;AAEhG,cAAI,CAAC,YAAY;AACf,kBAAM,aAAa,KAAK,MAAM,UAAU,QAAQ,EAAE;AAClD,gBAAI,EAAE,IAAI;AAAA,UACZ;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,SAAK,SAAS,QAAQ,YAAU;AAC9B,WAAK,WAAW,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEO,WAAW,QAAc,QAAiB;AAS/C,QAAI,kBAAkB,SAAS;AAI7B,aAAO,YAAY,OAAO,UAAU,QAAQ,WAAW,MAAM;AAAA,IAC/D;AAEA,UAAM,WAAY,OAAe,eAAe,OAAO,iCAAiC;AACxF,QAAI,cAAqB,CAAC;AAC1B,QAAI,UAAU;AACZ,oBAAcC,cAAY,eAAe,UAAU,KAAK,gBAAgB;AACxE,UAAI,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC/B,sBAAc,CAAC,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,QAAI,qBAAqB,KAAK,gBAAgB,GAAG;AAC/C,WAAK,kBAAkB,mBAAmB,EAAE,YAAY,KAAK,iBAAiB,CAAC;AAAA,IACjF;AAEA,QAAI,iBAAiB,KAAK,gBAAgB,GAAG;AAC3C,WAAK,iBAAiB,eAAe,GAAG,WAAW;AAAA,IACrD;AAGA,SAAK,SAAS,IAAI,MAAM;AACxB,UAAM,UAAU,OAAO,kBAAkB,QAAQ,KAAK,kBAAkB,KAAK,iBAAiB;AAG9F,SAAK,kBAAkB,aAAa,WAAW,KAAK,kBAAkB,KAAK,kBAAkB,aAAa,iBAAiB,QAAmB,KAAK,iBAAiB,GAAG,KAAK,iBAAiB;AAC7L,YAAQ,QAAQ,QAAM;AACpB,YAAM,YAAY,GAAG,yBAAyB,KAAK,iBAAiB;AACpE,UAAI,UAAU,QAAQ,GAAG;AACvB,aAAK,UAAU,IAAI,EAAE;AAAA,MACvB,OAAO;AACL,kBAAU,QAAQ,SAAO;AACvB,eAAK,UAAU,KAAK,EAAE;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,SAAK,OAAO,KAAK,WAAW,CAAC,EAAE,KAAK,QAAM;AAOxC,YAAM,SAAU,OAAe,eAAe,OAAO,+BAA+B;AACpF,UAAI;AACJ,UAAI,UAAU;AACZ,oBAAYA,cAAY,eAAe,UAAU,KAAK,gBAAgB;AAAA,MAIxE;AACA,UAAI,eAAe,KAAK,gBAAgB,GAAG;AACzC,aAAK,iBAAiB,aAAa,WAAW,UAAU,EAAC,SAAS,EAAC,QAAQ,KAAK,kBAAiB,EAAC,CAAQ;AAAA,MAC5G;AAAA,IACF,CAAC;AAAA,EAEH;AAAA,EAEO,aAAa;AAClB,UAAM,MAAM,oBAAI,IAAY;AAC5B,SAAK,SAAS,QAAQ,CAAC,GAAG,MAAM;AAC9B,QAAE,QAAQ,QAAM,IAAI,IAAI,EAAE,CAAC;AAAA,IAC7B,CAAC;AACD,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA;AAAA,EAGA,MAAa,OAAO,MAA0B,aAAsB;AAClE,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM,OAAO,KAAK,SAAS,IAAI,IAAI;AACnC,UAAI,MAAM;AACR,eAAO,MAAM,KAAK,IAAI;AAAA,MACxB,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,gBAA0B,CAAC;AACjC,UAAM,UAAU,QAAQ,KAAK,WAAW;AAGxC,eAAW,MAAM,SAAqB;AACpC,SAAG,yBAAyB,KAAK,iBAAiB,EAAE,QAAQ,UAAQ;AAElE,aAAK,UAAU,MAAM,EAAE;AAAA,MACzB,CAAC;AACD,UAAI,GAAG,aAAa;AAElB,cAAM,gBAAiB,GAAG,MAAM,MAAkB,eAAe,aAAa,qBAAqB;AAGnG,YAAI,GAAG,QAAQ,QAAQ;AACrB,aAAG,OAAO,OAAO;AAAA,QAEnB,WAAW,GAAG,kDAAsC,GAAG,SAAS,QAAQ,eAAe,eAAe,eAAe;AACnH,cAAI,IAAoB,KAAK,MAAM,aAAa,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM;AA7N/E;AA+NY,kBAAM,UAAU,aAAa,eAAe,GAAG,QAAQ,WAAW,EAAE;AACpE,gBAAI,SAAS;AACX,oBAAM,mBAAmB,OAAO,mBAAoB,GAAG,MAAM,MAAkB,EAAE,QAAQ,GAAG,SAAS,QAAQ,gBAAgB,IAAI,KAAK,OAAO,OAAO,KAAK,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,OAAO,CAAC,EAAE,CAAC;AACpN,uBAAG,SAAQ,WAAX,GAAW,SAAS,CAAC;AACrB,iBAAG,QAAQ,OAAO,YAAY;AAK9B,kBAAI,qBAAqB,GAAG,SAAS,QAAQ,WAAW,GAAG;AACzD,mBAAG,SAAS,QAAQ,aAAa,qBAAqB,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC;AAAA,cAC9F;AAAA,YACF;AAAA,UAEF,CAAC;AAAA,QAEH,OAAO;AACL,gBAAMC,WAAU,MAAM,GAAG,OAAO,KAAK,kBAAkB,KAAK,iBAAiB;AAE7E,cAAIA,YAAWA,SAAQ,SAAS,GAAG;AACjC,kBAAM,KAAK,OAAOA,QAAO;AAAA,UAC3B;AAAA,QACF;AAAA,MACF,OAAO;AACL,sBAAc,KAAK,EAAE;AAAA,MACvB;AAAA,IACF;AAEA,QAAI,cAAc,SAAS,GAAG;AAC5B,WAAK,aAAa,GAAG,aAAa;AAAA,IACpC;AACA,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWO,KAAK,WAAyC,OAAa,kBAAkB,MAAmC;AAErH,UAAM,YAAyC,CAAC;AAChD,QAAI,KAAK,eAAe,OAAO,GAAG;AAChC,WAAK,eAAe,QAAQ,CAAC,IAAI,QAAQ;AACvC,YAAI,wBAAwB,KAAK;AAC/B,aAAG,QAAQ,SAAO;AAChB,gBAAI;AAEF,oBAAM,SAAS,UAAU,OAAO,CAAC,CAAC,EAAC,MAAM,KAAK,KAAK,IAAG,CAAC,CAAC,CAAC;AACzD,oBAAM,QAAqC,IAAY,kBAAkB,KAAK,QAAQ,OAAO,eAAe;AAE5G,wBAAU,KAAK,MAAM,KAAK,CAAC;AAAA,YAG7B,SAAS,GAAG;AAAA,YAIZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AAEL,YAAM,UAAU,UAAU,QAAQ,EAAE,IAAI,QAAI,GAAG,IAAI,CAAAF,QAAIA,IAAG,IAAI,EAAE,KAAK,GAAG,CAAC;AAEzE,YAAM,cAAc,QAAQ,IAAI,QAAM,MAAM,OAAO,EAAE,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC;AAEhG,UAAI,iBAAiB;AAKnB,cAAM,WAAW,KAAK,SAAS,IAAI,WAAW;AAE9C,cAAM,QAAQ,QAAQ,MAAM,GAAG,QAAQ,SAAS,CAAC,EAAE,IAAI,QAAM,MAAM,OAAO,EAAE,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;AAC9G,cAAM,mBAAmB,QAAQ,QAAQ,SAAS,CAAC;AACnD,cAAM,OAAO,SAAS;AACtB,cAAM,OAAOC,cAAY,eAAeE,aAAY,KAAK,oBAAoB,IAAI,GAAG,KAAK,gBAAgB;AAIzG,YAAI,QAAkB,OAAM,YAAW;AACrC,cAAI,QAAkB,CAAC;AACvB,gBAAM,eAAe,MAAM,MAAM,CAAC;AAIlC,gBAAM,eAAe,KAAK,SAAS,IAAI,YAAY;AACnD,gBAAM,wBAAkC,CAAC;AACzC,wBAAc,QAAQ,QAAM;AAE1B,kBAAM,OAAQ,GAAG,MAAM,MAAkB,eAAe,MAAM;AAC9D,gBAAI,iDAA8C;AAChD,oCAAsB,KAAK,EAAE;AAAA,YAC/B;AAAA,UACF,CAAC;AACD,cAAI,sBAAsB,SAAS,GAAG;AAEpC,kBAAM,UAAoB,CAAC;AAC3B,gBAAI,OAAO;AACX,kCAAsB,QAAQ,QAAM;AAClC,oBAAM,eAAe,GAAG,MAAM;AAC9B,oBAAM,OAAO,aAAa,aAAa,OAAO,sBAAsB,GAAG,MAAM,GAAG,KAAK,CAAC;AACtF,kBAAI,UAAU,QAAW;AACvB,sBAAM,SAAS,GAAG,aAAa,gBAAgB;AAC/C,wBAAQ,OAAO;AACf,6BAAa,aAAa,OAAO,wBAAwB,KAAK,OAAO,CAAAH,QAAMA,QAAO,gBAAgB,EAAE,KAAK,GAAG,CAAC;AAAA,cAC/G;AACA,kBAAI,CAAC,KAAK,SAAS,gBAAgB,GAAG;AACpC,sBAAM,OAAO,eAAe,OAAO,KAAK,kBAAkB,aAAa,kBAAkB,IAAI,KAAK,iBAAiB;AACnH,oBAAI,MAAM;AACR,0BAAQ,KAAK,GAAG,IAAI;AAAA,gBACtB;AAAA,cACF,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF,CAAC;AACD,gBAAI,SAAS,SAAS,QAAQ,SAAS,GAAG;AACzC,sBAAQ,MAAM,KAAK,OAAO,OAAO;AAAA,YAClC;AAAA,UACF;AAEA,cAAI,qBAAqB,YAAY,MAAM,QAAQ,IAAI,GAAG;AACxD,kBAAM,YAAY,KAAK,SAAS,IAAI,YAAY;AAChD,gBAAI,WAAW;AACb,sBAAQ,MAAM,KAAK,OAAO,MAAM,KAAK,SAAS,CAAC;AAAA,YACjD;AAAA,UACF,WAAW,UAAU;AAEnB,oBAAQ,MAAM,KAAK,OAAO,MAAM,KAAK,QAAQ,GAAG,WAAW;AAAA,UAC7D;AAcA,eAAK,SAAS,QAAQ,QAAM;AAE1B,gBAAI,GAAG,aAAa,KAAK,0BAA0B,GAAG,aAAa,KAAK,cAAc;AACpF,oBAAM,UAAU,KAAK,kBAAkB,aAAa,iBAAkB,IAAmC,KAAK,iBAAiB;AAC/H,mBAAK,kBAAkB,aAAa,UAAU,KAAK,kBAAkB,SAAS,QAAQ,WAAW,IAAI,KAAK,iBAAiB;AAAA,YAC7H;AAAA,UACF,CAAC;AAGD,cAAG,OAAO,SAAS,KAAK,4BAA4B,IAAI,GAAG;AACzD,kBAAM,gBAAgBC,cAAY,eAAe,QAAQ,gBAAgB,IAAI,IAAI;AACjF,iBAAK,0BAA0B,kBAAkB,aAAa;AAAA,UAEhE;AACA,kBAAQ,KAAK;AAAA,QACf,CAAC,EAAE,KAAK,QAAM;AAAA,QAEd,CAAC;AAAA,MACH;AACA,gBAAU,KAAK,CAAC,EAAC,MAAK,aAAa,KAAK,KAAK,iBAAgB,CAAC,CAAC;AAAA,IACjE;AAGA,WAAO;AAAA,EACT;AAAA,EAEO,IAAI,QAAW,GAAoB,OAAY,UAAsB;AAY1E,QACG,OAAO,MAAM,YAAY,MAAM,4BAA4B,uBAAuB,SAAS,CAAC,KAC7F,QAAQ,YAAY,qBAAqB,QAAQ,CAAC,GAClD;AACA,MAAC,OAAe,CAAC,IAAI;AACrB,aAAO;AAAA,IACT;AASA,QAAI,OAAO,MAAM,UAAU;AACzB,cAAQ,KAAK,MAAM,UAAU,OAAO,CAAC;AAAA,IACvC;AAOA,QAAK,iBAAiB,gBAAmB,OAAe,CAAC,aAAa,cAAe;AACnF,YAAM,OAAO,qBAAsB,OAAe,CAAC;AAAA,IACrD;AACA,IAAC,OAAe,CAAC,IAAI;AACrB,QAAI,eAA4C,CAAC;AACjD,QAAI,OAAO,MAAM,UAAU;AACzB,qBAAe,KAAK,KAAK,CAAC,CAAC,EAAC,MAAK,GAAG,KAAK,KAAK,iBAAgB,CAAC,CAAC,GAAG,KAAK;AAAA,IAC1E;AASA,UAAM,cAAc,KAAK,kBAAkB,eAAe,KAAK,kBAAkB,OAAO;AACxF,kBAAc,gCAAgC,aAAa,aAAa,qBAAqB,GAAG,QAAQ,iBAAe;AAGrH,YAAM,UAAU,IAAI,IAAmBA,cAAY,eAAmC,YAAY,KAAK,CAAC;AACxG,YAAM,KAAK,QAAQ,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,KAAKG,MAAK,MAAIA,OAAM,KAAK,CAAC,EAAE,OAAO,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAI,WAAW,MAAK;AACjH,eAAO,aAAa,KAAK,EAAE,OAAO,QAAM,YAAY,SAAS,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,SAAM,EAAC,KAAK,aAA0B,UAAU,GAAE,EAAE;AAAA,MAC/I,CAAC,EAAE,QAAQ,QAAK;AACd,cAAM,eAAeD,aAAY,KAAK,oBAAoB,GAAG,WAAW;AACxE,cAAM,SAASF,cAAY,eAAe,cAAc,GAAG,SAAS,GAAG;AAEvE,YAAI,WAAW,MAAM;AACnB,sBAAY,QAAQ,gBAAgB,GAAG,GAAG;AAC1C,sBAAY,QAAQ,GAAG,GAAG,IAAI;AAAA,QAChC,OAAO;AACL,sBAAY,QAAQ,aAAa,GAAG,KAAK,MAAM;AAC/C,sBAAY,QAAQ,GAAG,GAAG,IAAI;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAGD,kBAAc,gCAAgC,aAAa,aAAa,qBAAqB,GAAG,QAAQ,iBAAe;AAEpH,YAAM,UAAU,IAAI,IAAmBA,cAAY,eAAmC,YAAY,KAAK,CAAC;AAEzG,YAAM,KAAK,QAAQ,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,KAAKG,MAAK,MAAIA,OAAM,KAAK,CAAC,EAAE,OAAO,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAI,WAAW,MAAK;AACjH,eAAO,aAAa,KAAK,EAAE,OAAO,QAAM,YAAY,SAAS,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,SAAM,EAAC,KAAK,aAA0B,UAAU,GAAE,EAAE;AAAA,MAC/I,CAAC,EAAE,QAAQ,UAAO;AAChB,cAAM,SAASH,cAAY,eAAe,KAAK,aAAa,KAAK,SAAS,GAAG;AAC7E,cAAM,qBAAqB,aAAa,UAAU,KAAK,QAAM,GAAG,SAAS,KAAK,GAAG;AACjF,YAAI,oBAAoB;AACtB,cAAI,WAAW,MAAM;AACnB,wBAAY,QAAQ,gBAAgB,mBAAmB,QAAQ;AAAA,UACjE,OAAO;AAEL,wBAAY,QAAQ,aAAa,mBAAmB,UAAU,MAAM;AAAA,UACtE;AAAA,QACF;AAAA,MACF,CAAC;AAED,YAAM,KAAK,QAAQ,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,KAAKG,MAAK,MAAIA,OAAM,KAAK,CAAC,EAAE,OAAO,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAI,WAAW,MAAK;AACjH,eAAO,aAAa,KAAK,EAAE,OAAO,QAAM,YAAY,SAAS,QAAQ,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,SAAM,EAAC,KAAK,aAA0B,UAAU,GAAE,EAAE;AAAA,MAC/I,CAAC,EAAE,QAAQ,UAAO;AACjB,cAAM,WAAW,aAAa,UAAU,KAAK,QAAI,GAAG,SAAS,KAAK,GAAG;AACpE,YAAI,UAAU;AACZ,sBAAY,QAAQ,SAAS,QAAQ,IAAI;AAAA,QAC3C;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAK,uBAAuB,YAAa,OAAO,MAAM,YAAY,EAAE,KAAK,kBAAkB,kCAAkC,CAAC,GAAG,OAAO,sBAAsB,EAAE,SAAS,CAAC,GAAG;AAC3K,UAAG,oBAAoB,QAAQ,GAAE;AAC/B,iBAAS,oBAAoB,GAAG,OAAO,aAAa,IAAI,QAAM,GAAG,IAAI,CAAAJ,QAAIA,IAAG,IAAI,EAAE,KAAK,CAAC,CAAC;AAAA,MAC3F;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,QAAW,GAAoB,UAAoB;AAErD,QAAI,MAAM,uBAAuB,MAAM,qBAAqB;AAC1D,aAAO,KAAK;AAAA,IACd,WAAW,MAAM,oBAAoB,MAAM,kBAAkB;AAC3D,aAAO,KAAK;AAAA,IACd,WAAW,MAAM,uBAAuB,MAAK,qBAAqB;AAChE,aAAO,KAAK;AAAA,IACd,WAAW,MAAM,sBAAsB,MAAK,oBAAoB;AAC9D,aAAO;AAAA,IACT,OAAO;AAeL,UAAI,KAAM,OAAe,CAAC;AAC1B,UAAI,MAAM,OAAO,OAAO,YAAa,wBAAwB,MAAO,OAAO,UAAU,SAAS,KAAK,GAAG,iBAAiB,MAAM,iBAAiB;AAC5I,aAAK,GAAG;AAAA,MACV;AAEA,UAAK,uBAAuB,YAAa,OAAO,MAAM,YAAY,EAAE,KAAK,kBAAkB,kCAAkC,CAAC,GAAG,OAAO,sBAAsB,EAAE,SAAS,CAAC,GAAG;AAC3K,QAAC,UAAkB,oBAAoB,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,EAAC,MAAK,GAAG,KAAK,KAAK,iBAAgB,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;AAAA,MAC9G;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,eAAe,QAAW,GAA6B;AACrD,WAAQ,OAAe,CAAC;AACxB,QAAI,OAAO,MAAM,UAAU;AACzB,WAAK,KAAK,CAAC,CAAC,EAAC,MAAK,GAAG,KAAK,KAAK,iBAAgB,CAAC,CAAC,CAAC;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,QAAW,GAA6B;AAC1C,WAAO,MAAM,wBAAwB,KAAK;AAAA,EAC5C;AAAA,EAEA,MAAM,aAAgB,KAAc,GAAW;AAG7C,QAAI;AAEF,YAAM,WAAW,OAAO,QAAQ;AAChC,YAAM,YAAY,YAAY,mBAAmB,KAAI,CAAC;AACtD,YAAM,YAAa,KAAK,kBAAkB,kBAAkB,KAAK,QAAM,eAAe,EAAE,KAAM;AAC9F,YAAM,UAAU,YAAY,gBAAe,QAAQ,GAAG;AACtD,YAAM,WAAW,OAAO,SAAS,GAAG;AACpC,YAAM,WAAW,eAAe;AAChC,UAAI,aAAa,aAAa,WAAW,kBAAkB,GAAG,KAAK,CAAC,YAAY,WAAW,YAAY,UAAU;AAC/G,eAAO;AAAA,MACT;AAAA,IACF,SAAS,GAAG;AAAA,IACZ;AAoBA,QAAK,CAAC,0BAA0B,GAAG,GAAG;AACpC,YAAM,YAAY,IAAI,gBAAe,KAAK,QAAW,KAAK,iBAAiB;AAC3E,gBAAU,OAAO,aAAa,CAAC;AAC/B,YAAM,QAAQ,IAAI,MAAM,KAAK,SAAS;AACtC,gBAAU,IAAI,KAAK;AACnB,aAAO;AAAA,IACT;AACA,QAAI,0BAA0B,GAAG,GAAG;AAClC,YAAM,IAAK,IAAY;AACvB,QAAE,OAAO,KAAK,kBAAmB,CAAC;AAClC,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEO,OAAO,QAAgB,MAAc;AAC1C,QAAI,CAAC,KAAK,eAAe,IAAI,MAAM,GAAG;AACpC,WAAK,eAAe,IAAI,QAAQ,oBAAI,IAAY,CAAC;AAAA,IACnD;AACA,SAAK,eAAe,IAAI,MAAM,GAAG,IAAI,IAAI;AAAA,EAC3C;AAAA,EAEO,mBAAmB,MAAc,QAAgB;AACtD,SAAK,UAAU,MAAM,MAAM;AAC3B,SAAK,OAAO,CAAC,MAAM,CAAC;AAAA,EACtB;AAAA,EAEO,UAAU,MAAc,QAAgB;AAE7C,QAAI,CAAC,KAAK,SAAS,IAAI,IAAI,GAAG;AAC5B,WAAK,SAAS,IAAI,MAAM,oBAAI,IAAY,CAAC;AAAA,IAC3C;AACA,SAAK,SAAS,IAAI,IAAI,GAAG,IAAI,MAAM;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASO,gBAAgB,MAAgB;AACrC,SAAK,SAAS,QAAQ,QAAM;AAC1B,SAAG,QAAQ,SAAO;AAChB,YAAI,CAAC,IAAI,aAAa;AACpB,aAAG,OAAO,GAAG;AAAA,QACf,WAAW,KAAK,SAAS,GAAG,GAAG;AAC7B,aAAG,OAAO,GAAG;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEQ,sBAAsB;AAC5B,SAAK,SAAS,QAAQ,QAAM;AAC1B,UAAI,CAAC,GAAG,aAAa;AACnB,aAAK,SAAS,OAAO,EAAE;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,gBAAgB;AACtB,SAAK,SAAS,QAAQ,QAAM;AAC1B,UAAI,CAAC,GAAG,aAAa;AACnB,aAAK,SAAS,OAAO,EAAE;AAAA,MACzB;AAAA,IACF,CAAC;AAED,SAAK,SAAS,QAAQ,QAAM;AAC1B,SAAG,QAAQ,SAAO;AAChB,YAAI,CAAC,IAAI,aAAa;AACpB,aAAG,OAAO,GAAG;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;A0C/pBA,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAcpB,IAAM,yCAAyC,CAAC,QACrD,KAAK,sBAAsB;AAatB,IAAe,SAAf,MAA+B;AAAA,EAIpC,IAAI,aAAoC;AACtC,WAAO,KAAK,gBAAgB,aAAa;AAAA,EAC3C;AAAA,EAEA,IAAI,oBAAoB;AACtB,WAAO,aAAa,SAAS,KAAK,gBAAgB,CAAC;AAAA,EACrD;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,QAA2B;AACrC,SAAK,UAAU;AACf,SAAK,kBAAkB,IAAI,gBAA2B,KAAK,aAAa,CAAC;AACzE,SAAK,OAAO,OAAO,iBAAiB,YAAY,CAACK,WAAyB;AACxE,UAAG,CAAC,uCAAuCA,OAAM,KAAK,GAAG;AAEvD,cAAM,YAAY,KAAK,aAAa;AACpC,aAAK,gBAAgB,KAAK,SAAS;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,2BAAoC,cAAkB;AAC3D,UAAM,IAAI,aAAa,SAAY,KAAK,gBAAgB,GAAG,EAAC,YAAY,KAAI,CAAC;AAC7E,WAAO,OAAO,OAAO,CAAC,GAAG,cAAc,CAAC;AAAA,EAC1C;AAAA,EAEO,iCAA0C;AAC/C,WAAO,aAAa,SAAY,KAAK,oBAAoB,GAAG,EAAC,YAAY,KAAI,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,SAAwB;AAAA,EAM9B;AAAA,EAEA,WAAW,QAA0B;AACnC,QAAI,QAAQ;AACV,YAAM,IAAI,OAAO,MAAM,EAAE,KAAK,KAAK,YAAY,CAAC;AAChD,aAAO;AAAA,IACT,OAAM;AACJ,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,KAAK,eAAiC;AACpC,QAAI,iBAAiB,KAAK,YAAY,aAAa,GAAG;AACpD,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,aAAa,QAA+E;AAC1F,UAAM,SAAS;AAAA,MACb,MAAM,KAAK,YAAY;AAAA,MACvB,KAAK,KAAK,OAAO;AAAA,MACjB,cAAc,KAAK,gBAAgB;AAAA,IACrC;AAEA,UAAM,OAAO,KAAK,QAAQ;AAC1B,QAAI,MAAM;AACR,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,QAAQ,eAAe;AACzB,YAAMC,QAAO,KAAK,YAAY,OAAO,aAAa;AAClD,UAAIA,OAAM;AACR,eAAO,WAAWA;AAAA,MACpB;AAAA,IACF;AACA,WAAO,SAAS;AAChB,WAAO,gBAAgB,QAAQ;AAC/B,WAAO,OAAO,OAAO,MAAM;AAAA,EAC7B;AAAA,EAEA,UAAU,MAAW,OAA2B,MAAgC;AAG9E,SAAK,OAAO,OAAO,QAAQ,UAAU,MAAM,SAAO,IAAI,IAAI;AAC1D,SAAK,gBAAgB,KAAK,KAAK,aAAa,EAAC,eAAe,EAAC,mBAAmB,kBAAiB,EAAC,CAAC,CAAC;AACpG,WAAO,EAAC,KAAI;AAAA,EACd;AAAA,EAEA,aAAa,MAAW,OAA2B,MAAgC;AAGjF,SAAK,OAAO,OAAO,QAAQ,aAAa,MAAM,SAAO,IAAI,IAAI;AAC7D,SAAK,gBAAgB,KAAK,KAAK,aAAa,EAAC,eAAe,EAAC,mBAAmB,kBAAiB,EAAC,CAAC,CAAC;AACpG,WAAO,EAAC,KAAI;AAAA,EACd;AAAA,EAEQ,sBAAsB,MAAY;AACxC,SAAK,OAAO,OAAO,cAAc,IAAI,cAAc,YAAY,EAAC,OAAO,EAAC,GAAG,MAAM,mBAAmB,kBAAiB,EAAC,CAAC,CAAC;AAAA,EAC1H;AAAA,EAEA,OAAO,MAAY;AACjB,SAAK,OAAO,OAAO,cAAc,IAAI,cAAc,YAAY,EAAC,OAAO,KAAI,CAAC,CAAC;AAAA,EAC/E;AAAA,EAEA,UAAe;AACb,WAAO,KAAK,OAAO,OAAO,QAAQ;AAAA,EACpC;AAAA,EAEA,YAAY,eAAuB,aAAa,KAAK,YAAY,GAAQ;AACvE,WAAO,WAAW,KAAK,aAAa,YAAY,aAAa;AAAA,EAC/D;AAAA,EAEA,MAAM,GAAG,QAAmK;AAC1K,QAAI,OAAO,WAAW,UAAU;AAC9B,eAAS,EAAE,MAAM,OAAO;AAAA,IAC1B;AAGA,QAAI,QAAQ,SAAS;AACnB,WAAK,QAAQ,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,IACrD,OAAO;AACL,WAAK,KAAK,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,IAClD;AACA,QAAI,CAAC,KAAK,OAAO,eAAe;AAC9B,YAAM,KAAK,OAAO;AAAA,IACpB;AAGA,QAAI,OAAO,gBAAgB,OAAO;AAChC,UAAI;AACJ,aAAK,QAAQ,QAAQ,WAAW,GAAG,CAAC;AAAA,MACpC,SAAQ,GAAE;AAAA,MAAC;AAAA,IACb;AAGA,QAAI,CAAC,OAAO,kBAAkB;AAC5B,WAAK,sBAAsB,QAAQ,IAAI;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,MAAmB;AACvB,QAAI;AACJ,QAAI,OAAO,SAAS,UAAU;AAC5B,mBAAa;AAAA,IACf,OAAO;AACL,YAAM,QAAQ,KAAK,QAAQ,KAAK,YAAY;AAC5C,YAAM,IAAI,KAAK,eAAe,aAAa,kBAAkB,KAAK,YAAY,EAAE,SAAS,IAAI;AAE7F,mBAAa,GAAG,KAAK,GAAG,EAAE,SAAS,IAAI,MAAM,EAAE,GAAG,CAAC;AAAA,IACrD;AACA,WAAO;AAAA,EACT;AA4BF;;;ACrNA,SAAS,gBAAAC,qBAAoB;AAGtB,IAAM,aAAN,cAAyB,OAAO;AAAA,EACrC,YAAY,QAAsB;AAChC,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,gBAAgB,MAAuE;AACrF,UAAM,eAAiB,IAAI,IAAI,KAAK,OAAO,OAAO,SAAS,SAAS,IAAI,EAAG;AAC3E,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,EAAE;AAAA,IACxB,CAAC;AAED,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EAET;AAAA,EAEA,KAAK,MAAmB,MAAY,QAAgB,IAAuB;AACzE,WAAO,MAAM,UAAU,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,MAAmB,MAAY,QAAgB,IAAuB;AAC5E,WAAO,MAAM,aAAa,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,EACzD;AAAA,EAEA,sBAAsB,MAAc,MAAY,OAAsB;AACpE,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,CAAC,IAAI,EAAC,CAAC;AAC/C,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,0BAA0B,MAAc,MAAY,OAAgB;AAClE,UAAM,IAAI,KAAK,oBAAoB,EAAC,QAAQ,CAAC,IAAI,EAAC,CAAC;AACnD,UAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE;AACrC,UAAM,OAAO,GAAG,KAAK,OAAO,OAAO,SAAS,QAAQ,GAAG,KAAK,OAAO,OAAO,SAAS,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE;AAC9H,UAAM,UAAU,MAAM,OAAO,IAAI;AAAA,EACnC;AAAA,EAEA,mBAAmB,QAA2B,MAAY,OAAsB;AAC9E,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,OAAM,CAAC;AAC/C,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EACA,yBAAyB,MAAyB,MAAY,OAAsB;AAClF,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAC5E,SAAK,QAAQ,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC7C;AAAA,EAEA,6BAA6B,MAAyB,MAAY,OAAgB;AAChF,UAAM,IAAI,KAAK,oBAAoB,EAAC,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAChF,UAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE;AACrC,UAAM,OAAO,GAAG,KAAK,OAAO,OAAO,SAAS,QAAQ,GAAG,KAAK,OAAO,OAAO,SAAS,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE;AAC9H,UAAM,aAAa,MAAM,OAAO,IAAI;AAAA,EACtC;AAAA,EAEA,sBAAsB,QAA2B,MAAY,OAAsB;AACjF,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,OAAM,CAAC;AAC/C,SAAK,QAAQ,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC7C;AAAA,EAGA,SAAiB;AACf,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,SAAS,SAAS,IAAI;AAC7D,WAAO,IAAI,WAAW,IAAI;AAAA,EAC5B;AAAA,EAEA,UAAkB;AAChB,WAAO,KAAK,OAAO,OAAO,SAAS;AAAA,EACrC;AAAA,EAEA,cAAsB;AACpB,WAAO,KAAK,OAAO,OAAO,SAAS;AAAA,EACrC;AAAA,EAEA,oBAAoB,MAAuE;AAEzF,UAAM,eAAgB,IAAI,gBAAgB,KAAK,OAAO,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC;AAEnF,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,EAAE;AAAA,IACxB,CAAC;AAED,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EAGT;AAGF;;;AC7FA,SAAS,qBAAqB;AAGvB,IAAM,aAAN,cAAyB,OAAO;AAAA,EAErC,YAAY,QAAsB;AAChC,UAAM,MAAM;AAAA,EACd;AAAA,EAGA,gBAAgB,MAA4E;AAC1F,UAAM,aAAa,cAAc,WAAW,KAAK,OAAO,MAAM;AAC9D,UAAM,eAAe,aAAa,IAAI,gBAAgB,UAAU,IAAK,IAAI,IAAI,KAAK,OAAO,OAAO,SAAS,SAAS,IAAI,EAAG;AAGzH,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,EAAE;AAAA,IACxB,CAAC;AAED,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAAmB,MAAY,QAAgB,IAAuB;AACzE,QAAI,SAAS,KAAK;AAChB,aAAO,MAAM,UAAU,MAAM,OAAO,GAAG;AAAA,IACzC,OAAO;AACL,aAAO,MAAM,UAAU,MAAM,OAAO,IAAI,KAAK,MAAM,IAAI,CAAC,EAAE;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,QAAQ,MAAmB,MAAY,OAAkC;AACvE,QAAI,SAAS,KAAK;AAChB,aAAO,MAAM,aAAa,MAAM,OAAO,GAAG;AAAA,IAC5C,OAAO;AACL,aAAO,MAAM,aAAa,MAAM,OAAO,IAAI,KAAK,MAAM,IAAI,CAAC,EAAE;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,yBAAyB,MAAc,MAAY,OAAgB;AAAA,EACnE;AAAA,EAEA,0BAA0B,MAAyB,MAAW,OAAiC;AAC7F,UAAM,IAAI,KAAK,oBAAoB,EAAC,QAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAC/E,UAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE;AACrC,UAAM,OAAO,GAAG,KAAK,OAAO,OAAO,SAAS,QAAQ,GAAG,KAAK,OAAO,OAAO,SAAS,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE;AAC9H,UAAM,UAAU,MAAM,OAAO,IAAI;AAAA,EACnC;AAAA,EAEA,sBAAsB,MAAyB,MAAY,OAAsB;AAC/E,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAC3E,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,mBAAmB,QAA2B,MAAY,OAAsB;AAC9E,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,OAAM,CAAC;AAC/C,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,6BAA6B,MAAyB,MAAW,OAAiC;AAChG,UAAM,IAAI,KAAK,oBAAoB,EAAC,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAChF,UAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE;AACrC,UAAM,OAAO,GAAG,KAAK,OAAO,OAAO,SAAS,QAAQ,GAAG,KAAK,OAAO,OAAO,SAAS,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE;AAC9H,UAAM,UAAU,MAAM,OAAO,IAAI;AAAA,EACnC;AAAA,EAEA,yBAAyB,MAAyB,MAAY,OAAsB;AAClF,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAC5E,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,sBAAsB,QAA2B,MAAY,OAAsB;AACjF,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,OAAM,CAAC;AAC/C,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,SAAiB;AACf,WAAO,cAAc,KAAK,KAAK,OAAO,MAAM,KAAK;AAAA,EACnD;AAAA,EAEA,UAAkB;AAChB,WAAO,KAAK,OAAO,OAAO,SAAS;AAAA,EACrC;AAAA,EAEA,cAAsB;AACpB,WAAO,cAAc,SAAS,KAAK,OAAO,MAAM,KAAK;AAAA,EACvD;AAAA,EAEA,oBAAoB,MAAuE;AACzF,UAAM,OAAO,KAAK,OAAO,OAAO,SAAS;AACzC,UAAM,aAAa,KAAK,QAAQ,GAAG;AACnC,UAAM,eAAgB,eAAe,KAAM,IAAI,gBAAgB,KAAK,MAAM,aAAa,CAAC,CAAC,IAAK,IAAI,gBAAgB;AAAE;AACpH,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,EAAE;AAAA,IACxB,CAAC;AACD,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EAET;AAEF;;;ACtFO,IAAM,sBAAN,MAA0B;AAAA,EAC7B,YAAmB,SAAyB,YAA+B;AAAxD;AAAyB;AAAA,EAC5C;AAAA,EAEA,cAAc;AACV,SAAK,WAAW,YAAY;AAAA,EAChC;AACJ;AAEO,IAAM,oBAAN,MAAkC;AAAA,EAIrC,YAAmB,SAAkB;AAAlB;AAFnB,SAAO,YAA6G,CAAC;AAAA,EAGrH;AAAA,EAEA,YAAY,MAAW,UAA2B;AAC9C,eAAW,YAAY,KAAK,WAAW;AACnC,UAAI,SAAS,SAAS,kBAAuB,CAAC,SAAS,SAAS,MAAM,QAAQ,GAAG;AAC7E;AAAA,MACJ,WAAW,SAAS,SAAS,aAAkB;AAC3C,eAAO,SAAS,SAAS,MAAM,QAAQ;AAAA,MAC3C,WAAW,SAAS,SAAS,mBAAwB;AACjD,eAAO,SAAS,SAAS,MAAM,QAAQ;AACvC;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,OAAe,UAA8E;AACzF,SAAK,UAAU,KAAK,EAAC,MAAM,gBAAqB,SAAQ,CAAC;AACzD,WAAO;AAAA,EACX;AAAA,EAEA,IAAqB,UAAuE;AACxF,SAAK,UAAU,KAAK,EAAC,MAAM,aAAkB,SAAQ,CAAC;AACtD,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,UAAoE;AAC1E,SAAK,UAAU,KAAK,EAAC,MAAM,mBAAwB,SAAQ,CAAC;AAC5D,SAAK,QAAQ,YAAY,IAAI,IAAI;AACjC,WAAO,IAAI,oBAAoB,KAAK,SAAS,IAAI;AAAA,EACrD;AAAA,EAEA,cAAc;AACV,SAAK,QAAQ,YAAY,OAAO,IAAI;AAAA,EACxC;AAAA,EAEA,mBAAmB;AACf,SAAK,YAAY;AACjB,SAAK,QAAQ,YAAY,OAAO,IAAI;AAAA,EACxC;AACJ;AAEO,IAAM,UAAN,MAAc;AAAA,EAGjB,YAAoB,WAA6B,KAAoB,KAAa;AAA9D;AAA6B;AAAoB;AAFrE,SAAO,cAAc,oBAAI,IAAuB;AAAA,EAGhD;AAAA,EAEA,QAAQ,KAA6C,MAAW,QAAiB;AAC7E,UAAM,OAAsB,CAAC;AAC7B,SAAK,UAAU,YAAY,GAAG,GAAG,QAAQ,QAAM;AAC3C,UAAI;AACA,WAAG,YAAY,QAAQ,SAAO;AAC1B,gBAAM,QAAQ,IAAI,YAAY,MAAM,EAAC,SAAS,MAAM,OAAM,CAAC;AAC3D,eAAK,KAAK,EAAC,SAAS,IAAI,MAAM,MAAK,CAAC;AAAA,QACxC,CAAC;AAAA,MACL,SAAS,GAAG;AACR,gBAAQ,MAAM,CAAC;AAAA,MACnB;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EAEA,WAAW,MAAW,QAAgB;AAClC,UAAM,OAA8B,CAAC;AACrC,SAAK,UAAU,kBAAkB,EAAE,QAAQ,QAAM;AAC7C,WAAK,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC;AAAA,IACpC,CAAC;AACD,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA;AAAA,EAGA,OAAgB,SAAsD;AAClE,UAAM,aAAa,IAAI,kBAAqB,IAAI;AAChD,eAAW,OAAO,OAAO;AACzB,WAAO;AAAA,EACX;AAAA,EAEA,IAAsB,SAAsE;AACxF,UAAM,aAAa,IAAI,kBAAqB,IAAI;AAChD,eAAW,IAAI,OAAO;AACtB,WAAO;AAAA,EACX;AAAA,EAEA,UAAmB,mBAA+E;AAC9F,UAAM,aAAa,IAAI,kBAAqB,IAAI;AAChD,WAAO,WAAW,UAAU,iBAAiB;AAAA,EACjD;AAAA,EAEA,gBAAgB;AACZ,SAAK,UAAU,cAAc,IAAI;AAAA,EACrC;AACJ;AAgBO,IAAe,aAAf,MAAe,WAAU;AAAA,EAI5B,YAAoB,QAAyB;AAAzB;AAHpB,SAAQ,WAAW,oBAAI,IAAa;AAIhC,SAAK,OAAO,OAAO,iBAAiB,WAAU,mBAAmB,CAAC,MAAa;AAC3E,YAAM,SAAW,EAAkB;AAEnC,YAAM,OAAsB,CAAC;AAC7B,WAAK,YAAY,OAAO,GAAG,GAAG,QAAQ,QAAM;AACxC,YAAI;AACA,aAAG,YAAY,QAAQ,SAAO;AAC1B,kBAAM,QAAQ,IAAI,YAAY,OAAO,MAAM,EAAC,QAAQ,OAAO,OAAM,CAAC;AAClE,iBAAK,KAAK,EAAC,SAAS,IAAI,MAAM,MAAK,CAAC;AAAA,UACxC,CAAC;AAAA,QACL,SAASC,IAAG;AACR,kBAAQ,MAAMA,EAAC;AAAA,QACnB;AAAA,MACJ,CAAC;AACD,aAAO,SAAS,IAAI;AAAA,IACxB,CAAC;AACD,SAAK,OAAO,OAAO,iBAAiB,WAAU,qBAAqB,CAAC,MAAa;AAC7E,YAAM,SAAW,EAAkB;AAEnC,YAAM,UAAU,KAAK,cAAc,OAAO,KAAK,OAAO,GAAG;AACzD,aAAO,KAAK,SAAS,QAAQ,UAAU,OAAO,SAAS,CAAC;AAAA,IAC5D,CAAC;AAAA,EACL;AAAA,EAEA,OAAc,QAAQ,QAAgB,QAA8B;AAChE,WAAO,cAAc,IAAI,YAAY,WAAU,mBAAmB,EAAC,OAAM,CAAC,CAAC;AAAA,EAC/E;AAAA,EAEA,OAAc,UAAU,QAAgB,QAAuC;AAC3E,WAAO,cAAc,IAAI,YAAY,WAAU,qBAAqB,EAAC,OAAM,CAAC,CAAC;AAAA,EACjF;AAAA,EAEA,cAAc,KAAU,MAAM,IAAI,YAAY,MAAe;AACzD,UAAM,UAAU,oBAAoB,MAAM,IAAI,QAAQ,MAAM,KAAK,GAAG,CAAC;AACrE,SAAK,SAAS,IAAI,OAAO;AAEzB,WAAO;AAAA,EACX;AAAA,EAEA,cAAc,SAAkB;AAC5B,SAAK,SAAS,OAAO,OAAO;AAAA,EAChC;AAAA,EAEA,qBAAqB,KAAU;AAC3B,QAAI,KAAK;AACL,WAAK,SAAS,QAAQ,QAAM;AACxB,YAAI,GAAG,QAAQ,KAAK;AAEhB,eAAK,cAAc,EAAE;AAAA,QACzB;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AAAA,EAEA,WAAW,SAAkB;AACzB,SAAK,SAAS,IAAI,OAAO;AAAA,EAC7B;AAAA,EAEA,YAAY,KAAwD;AAChE,QAAI,OAAO,QAAQ,UAAU;AACzB,YAAM,IAAI,YAAY;AAAA,IAC1B,WAAW,OAAO,QAAQ,YAAY;AAClC,YAAM,IAAI;AAAA,IACd;AACA,WAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAAE,OAAO,QAAM,GAAG,QAAQ,GAAG;AAAA,EACzE;AAAA,EAEA,iBAA4B;AACxB,WAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC;AAAA,EAC5C;AAAA,EAEA,oBAA8B;AAC1B,WAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAAE,IAAI,QAAM,GAAG,GAAG;AAAA,EAC9D;AACJ;AA/EsB,WAEF,oBAAoB;AAFlB,WAGF,sBAAsB;AAHnC,IAAe,YAAf;;;AC5IA,IAAM,mBAAN,cAA+B,UAAU;AAEhD;;;ACJA,OAAO;AACP,SAAS,gBAAAC,qBAAoB;AAQ7B,SAAS,gBAAAC,qBAAoB;AAK7B,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAItB,IAAM,yBAAyB,OAAO,WAAW;AACjD,IAAM,qBAAqB,OAAO,OAAO;AACzC,IAAM,qBAAqB,OAAO,OAAO;AA0BzC,SAAS,UAAU,eAAsL;AAC5M,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACtF,UAAM,aAAa,aAAa,YAAiC,wBAAwB,OAAO,WAAW,KAAK,CAAC;AAEjH,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,kBAAkB,UAAU;AACnC,aAAO;AAAA,IACX,WAAW,eAAe;AACtB,aAAO,cAAc,QAAQ,OAAO,WAAW;AAC/C,kBAAY,cAAc;AAAA,IAC9B,OAAO;AACH,aAAO,OAAO,WAAW;AAAA,IAC7B;AAEA,UAAM,oBAAuC;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,CAAC,CAAC;AAAA,IAChB;AAEA,eAAW,KAAK,iBAAiB;AACjC,iBAAa,eAAe,wBAAwB,YAAY,OAAO,WAAW;AAAA,EACtF;AACJ;AAEO,SAAS,MAAM,mBAAwQ;AAC1R,SAAO,CAAC,QAAgB,aAA8B,eAAoC;AACtF,UAAM,UAAU,aAAa,YAA6B,oBAAoB,OAAO,WAAW,KAAK,CAAC;AAEtG,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,sBAAsB,UAAU;AACvC,iBAAW;AAAA,IACf,OAAO;AACH,iBAAW,kBAAkB;AAC7B,gBAAU,kBAAkB;AAC5B,kBAAY,kBAAkB;AAC9B,oBAAc,kBAAkB;AAAA,IACpC;AAEA,UAAM,gBAA+B;AAAA,MACjC;AAAA,MACA;AAAA,MACA,UAAU,CAAC,CAAC;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAEA,YAAQ,KAAK,aAAa;AAC1B,iBAAa,eAAe,oBAAoB,SAAS,OAAO,WAAW;AAAA,EAC/E;AACJ;AAEO,SAAS,MAAM,SAAiJ;AACnK,SAAO,CAAC,QAAgB,aAA8B,eAAmC;AACrF,UAAM,SAAS,aAAa,YAA6B,oBAAoB,OAAO,WAAW,KAAK,CAAC;AAErG,UAAM,gBAA+B;AAAA,MACjC,OAAO,QAAQ;AAAA,MACf,WAAW,QAAQ;AAAA,MACnB,YAAY;AAAA,MACZ,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,IACzB;AAEA,WAAO,KAAK,aAAa;AACzB,iBAAa,eAAe,oBAAoB,QAAQ,OAAO,WAAW;AAAA,EAC9E;AACJ;AAOO,IAAM,gBAAN,MAAqN;AAAA,EAuB1N,YAAoB,SAAa;AAAb;AAnBpB,SAAQ,YAA2B,CAAC;AAMpC,SAAQ,uBAAgG,CAAC;AAEzG,SAAQ,iBAAkE,CAAC;AAE3E,SAAQ,iBAAgG,CAAC;AAEzG,SAAQ,iBAAqE,oBAAI,IAAI;AAGrF,SAAQ,qBAAqB,IAAI,QAAuB;AAAA,EAKxD;AAAA,EACA,IAAI,kBAAiC;AACnC,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,SAA6B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAA6B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,kBAA+C;AACjD,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AAAA,EAEQ,eAAe,UAAkB,QAA0B;AACjE,UAAM,IAAI,KAAK,WAAW;AAE1B,QAAI,GAAG;AACL,aAAOC,cAAa,iBAAiB,GAAG,QAAQ;AAAA,IAClD,OAAO;AACL,UAAI,YAAY,OAAO,OAAO;AAC9B,UAAI,UAAU,OAAO,OAAO;AAG5B,UAAI,OAAO,OAAO,SAAS,aAAa,CAAC,UAAU,eAAe,qBAAqB,eAAe,UAAU,aAAa,IAAI,GAAG;AAClI,eAAO,MAAM,QAAQ,YAAY,OAAO,QAAQ,OAAO,OAAO,SAAS,cAAc,MAAM,UAAU,EAAE;AAAA,MACzG;AACA,UAAI,OAAO,OAAO,OAAO,WAAW,CAAC,QAAQ,eAAe,mBAAmB,eAAe,QAAQ,aAAa,IAAI,GAAG;AACxH,eAAO,MAAM,MAAM,UAAU,OAAO,QAAQ,OAAO,OAAO,SAAS,cAAc,MAAM,QAAQ,EAAE;AAAA,MACnG;AACA,UAAI,aAAa,SAAS;AAExB,eAAOA,cAAa,iBAAiB,EAAE,OAAO,WAAsB,KAAK,QAAmB,GAAG,QAAQ;AAAA,MACzG;AAAA,IACF;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEQ,yBAAyB;AAC/B,eAAW,EAAE,SAAS,WAAW,SAAS,KAAK,KAAK,sBAAsB;AACxE,cAAQ,oBAAoB,WAAW,QAAQ;AAAA,IACjD;AACA,SAAK,uBAAuB,CAAC;AAAA,EAC/B;AAAA,EAEQ,wBAAwB;AAC9B,eAAW,EAAE,SAAS,SAAS,KAAK,KAAK,gBAAgB;AACvD,UAAI,SAAS,WAAW;AACtB,iBAAS,UAAU,MAAM,OAAO;AAAA,MAClC;AACA,WAAK,mBAAmB,QAAQ;AAAA,IAClC;AACA,SAAK,iBAAiB,CAAC;AAAA,EACzB;AAAA,EAEQ,wBAAwB;AAC9B,eAAW,EAAE,SAAS,UAAU,SAAS,KAAK,KAAK,gBAAgB;AACjE,cAAQ,oBAAoB,SAAS,WAAW,QAAQ;AACxD,UAAI,SAAS,WAAW;AACtB,iBAAS,UAAU,MAAM,OAAO;AAAA,MAClC;AACA,WAAK,mBAAmB,QAAQ;AAAA,IAClC;AACA,SAAK,iBAAiB,CAAC;AAAA,EACzB;AAAA,EAEQ,mBAAmB,WAA0B,UAAqB,kBAA6B,UAAU;AAC/G,UAAM,EAAE,aAAa,UAAU,QAAQ,IAAI;AAG3C,aAAS,QAAQ,aAAW;AAC1B,WAAK,eAAe,KAAK,EAAE,SAAS,UAAU,UAAU,CAAC;AAAA,IAC3D,CAAC;AAGD,UAAM,oBAAoB,UAAU,SAAS,IAAI,OAAO,IAAI;AAC5D,UAAM,uBAAuB,UAAU,gBAAgB,IAAI,OAAO,IAAI;AAEtE,QAAI,UAAU;AACZ,YAAM,SAAU,KAAa,WAAW;AACxC,UAAI,OAAO,WAAW,YAAY;AAC9B,cAAM,aAAa,aAAa,kBAAkB,MAAM,WAAW;AACnE,YAAI,cAAc,WAAW,SAAS,KAAK,WAAW,CAAC,MAAM,OAAO;AAEhE,iBAAO,KAAK,MAAM,sBAAsB,iBAAiB;AAAA,QAC7D,OAAO;AAEH,cAAI,qBAAqB,SAAS,GAAG;AACjC,mBAAO,KAAK,MAAM,qBAAqB,CAAC,CAAC;AAAA,UAC7C;AAAA,QACJ;AAAA,MACJ;AAAA,IACF,OAAO;AAEL,YAAM,eAAe,aAAa,QAAQ,MAAM,WAAW;AAC3D,UAAI,iBAAiB,OAAO;AAC1B,QAAC,KAAa,WAAW,IAAI;AAAA,MAC/B,OAAO;AACL,QAAC,KAAa,WAAW,IAAI,kBAAkB,CAAC,KAAK;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,sBAAsB,QAAgB;AAC5C,QAAI,CAAC,OAAQ;AAEb,UAAM,UAAU,aAAa,YAA6B,oBAAoB,KAAK,WAAW;AAG9F,QAAI,WAAW,MAAM,QAAQ,OAAO,GAAG;AACrC,iBAAW,aAAa,SAAS;AAC/B,cAAM,WAAW,KAAK,eAAe,UAAU,UAAU,MAAM;AAE/D,aAAK,mBAAmB,WAAW,QAAQ;AAG3C,aAAK,mBAAmB,SAAS;AAAA,MACnC;AAAA,IACF;AAAA,EAEF;AAAA,EAEQ,oBAAoB,WAA0B,QAAgB,cAAc,OAAO;AACzF,UAAM,cAAc,KAAK,eAAe,UAAU,UAAU,MAAM;AAGlE,UAAM,kBAAkB,KAAK,eAAe,OAAO,aAAW,QAAQ,aAAa,SAAS;AAC5F,UAAM,kBAAkB,gBAAgB,IAAI,aAAW,QAAQ,OAAO;AAGtE,UAAM,kBAAkB,eAAe,CAAC,KAAK,aAAa,iBAAiB,WAAW;AAEtF,QAAI,iBAAiB;AACnB,UAAI,gBAA2B,CAAC;AAEhC,UAAI,aAAa;AAEf,wBAAgB,QAAQ,CAAC,EAAE,SAAS,SAAS,MAAM;AACjD,cAAI,SAAS,WAAW;AACtB,qBAAS,UAAU,MAAM,OAAO;AAAA,UAClC;AAAA,QACF,CAAC;AACD,wBAAgB;AAAA,MAClB,OAAO;AAEL,cAAM,kBAAkB,gBAAgB,OAAO,aAAW,CAAC,YAAY,SAAS,OAAO,CAAC;AACxF,wBAAgB,YAAY,OAAO,aAAW,CAAC,gBAAgB,SAAS,OAAO,CAAC;AAEhF,wBAAgB,QAAQ,aAAW;AACjC,cAAI,UAAU,WAAW;AACvB,sBAAU,UAAU,MAAM,OAAO;AAAA,UACnC;AAAA,QACF,CAAC;AAAA,MACH;AAGA,WAAK,iBAAiB,KAAK,eAAe,OAAO,aAAW,QAAQ,aAAa,SAAS;AAG1F,WAAK,mBAAmB,WAAW,aAAa,aAAa;AAAA,IAC/D;AAAA,EACF;AAAA,EAEQ,uBAAuB,QAAgB;AAC7C,QAAI,CAAC,OAAQ;AAEb,UAAM,UAAU,aAAa,YAA6B,oBAAoB,KAAK,WAAW;AAC9F,QAAI,WAAW,MAAM,QAAQ,OAAO,GAAG;AACrC,iBAAW,aAAa,SAAS;AAC/B,aAAK,oBAAoB,WAAW,MAAM;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,aAAa,MAAiB,MAA0B;AAC9D,QAAI,KAAK,WAAW,KAAK,OAAQ,QAAO;AACxC,WAAO,KAAK,MAAM,CAAC,SAAS,UAAU,YAAY,KAAK,KAAK,CAAC;AAAA,EAC/D;AAAA,EAEQ,mBAAmB,UAAyC;AAClE,QAAI,CAAC,SAAS,eAAe,CAAC,KAAK,QAAS;AAE5C,UAAM,QAAQ,YAAY,MAAM;AAC9B,UAAI,CAAC,KAAK,QAAS;AAEnB,UAAI,cAAc,UAAU;AAE1B,aAAK,oBAAoB,UAA2B,KAAK,OAAO;AAAA,MAClE,OAAO;AAEL,aAAK,oBAAoB,UAA2B,KAAK,OAAO;AAAA,MAClE;AAAA,IACF,GAAG,SAAS,WAAW;AAEvB,SAAK,eAAe,IAAI,UAAU,KAAK;AAAA,EACzC;AAAA,EAEQ,mBAAmB,UAAyC;AAClE,UAAM,QAAQ,KAAK,eAAe,IAAI,QAAQ;AAC9C,QAAI,OAAO;AACT,oBAAc,KAAK;AACnB,WAAK,eAAe,OAAO,QAAQ;AAAA,IACrC;AAAA,EACF;AAAA,EAEQ,yBAAyB;AAC/B,eAAW,SAAS,MAAM,KAAK,KAAK,eAAe,OAAO,CAAC,GAAG;AAC5D,oBAAc,KAAK;AAAA,IACrB;AACA,SAAK,eAAe,MAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAA0B;AACxB,QAAI,KAAK,SAAS;AAChB,WAAK,uBAAuB,KAAK,OAAO;AACxC,WAAK,uBAAuB,KAAK,OAAO;AAAA,IAC1C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,cAA6D;AAClF,QAAI,CAAC,KAAK,QAAS;AAEnB,UAAM,OAAO,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,YAAY;AACvE,UAAM,UAAU,aAAa,YAA6B,oBAAoB,KAAK,WAAW;AAE9F,QAAI,WAAW,MAAM,QAAQ,OAAO,GAAG;AACrC,iBAAW,aAAa,SAAS;AAC/B,YAAI,KAAK,SAAS,UAAU,WAAW,GAAG;AACxC,eAAK,oBAAoB,WAAW,KAAK,SAAS,IAAI;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,aAA4D;AACjF,QAAI,CAAC,KAAK,QAAS;AAEnB,UAAM,QAAQ,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW;AACrE,UAAM,SAAS,aAAa,YAA6B,oBAAoB,KAAK,WAAW;AAE7F,QAAI,UAAU,MAAM,QAAQ,MAAM,GAAG;AACnC,iBAAW,aAAa,QAAQ;AAC9B,YAAI,MAAM,SAAS,UAAU,UAAU,GAAG;AACxC,eAAK,oBAAoB,WAAW,KAAK,SAAS,IAAI;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,mBAAmB,WAA0B,UAAqB;AACxE,aAAS,QAAQ,aAAW;AAC1B,YAAM,WAAY,KAAa,UAAU,UAAU,EAAE,KAAK,IAAI;AAE9D,cAAQ,iBAAiB,UAAU,WAAW,QAAQ;AAGtD,WAAK,eAAe,KAAK,EAAE,SAAS,UAAU,WAAW,SAAS,CAAC;AACnE,WAAK,qBAAqB,KAAK,EAAE,SAAS,WAAW,UAAU,WAAW,SAAS,CAAC;AAAA,IACtF,CAAC;AAAA,EACH;AAAA,EAEQ,sBAAsB,QAAgB;AAC5C,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,aAAa,YAA6B,oBAAoB,KAAK,WAAW;AAC7F,QAAI,UAAU,MAAM,QAAQ,MAAM,GAAG;AACnC,iBAAW,aAAa,QAAQ;AAC9B,cAAM,WAAW,KAAK,eAAe,UAAU,OAAO,MAAM;AAC5D,aAAK,mBAAmB,WAAW,QAAQ;AAG3C,aAAK,mBAAmB,SAAS;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,oBAAoB,WAA0B,QAAgB,cAAc,OAAO;AACzF,UAAM,cAAc,KAAK,eAAe,UAAU,OAAO,MAAM;AAG/D,UAAM,kBAAkB,KAAK,eAAe,OAAO,aAAW,QAAQ,aAAa,SAAS;AAC5F,UAAM,kBAAkB,gBAAgB,IAAI,aAAW,QAAQ,OAAO;AAGtE,UAAM,kBAAkB,eAAe,CAAC,KAAK,aAAa,iBAAiB,WAAW;AAEtF,QAAI,iBAAiB;AACnB,UAAI,aAAa;AAEf,wBAAgB,QAAQ,CAAC,EAAE,SAAS,UAAU,SAAS,MAAM;AAC3D,kBAAQ,oBAAoB,SAAS,WAAW,QAAQ;AACxD,cAAI,SAAS,WAAW;AACtB,qBAAS,UAAU,MAAM,OAAO;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AAEL,cAAM,kBAAkB,gBAAgB,OAAO,aAAW,CAAC,YAAY,SAAS,OAAO,CAAC;AACxF,cAAM,kBAAkB,gBAAgB,OAAO,aAAW,gBAAgB,SAAS,QAAQ,OAAO,CAAC;AAEnG,wBAAgB,QAAQ,CAAC,EAAE,SAAS,UAAU,SAAS,MAAM;AAC3D,kBAAQ,oBAAoB,SAAS,WAAW,QAAQ;AACxD,cAAI,SAAS,WAAW;AACtB,qBAAS,UAAU,MAAM,OAAO;AAAA,UAClC;AAAA,QACF,CAAC;AAAA,MACH;AAGA,WAAK,iBAAiB,KAAK,eAAe,OAAO,aAAW,QAAQ,aAAa,SAAS;AAC1F,WAAK,uBAAuB,KAAK,qBAAqB;AAAA,QAAO,aAC3D,CAAC,gBAAgB,KAAK,QAAM,GAAG,YAAY,QAAQ,WAAW,GAAG,SAAS,cAAc,QAAQ,SAAS;AAAA,MAC3G;AAGA,WAAK,mBAAmB,WAAW,WAAW;AAAA,IAChD;AAAA,EACF;AAAA,EAEQ,uBAAuB,QAAgB;AAC7C,QAAI,CAAC,OAAQ;AAEb,UAAM,SAAS,aAAa,YAA6B,oBAAoB,KAAK,WAAW;AAC7F,QAAI,UAAU,MAAM,QAAQ,MAAM,GAAG;AACnC,iBAAW,aAAa,QAAQ;AAC9B,aAAK,oBAAoB,WAAW,MAAM;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAgC,MAASC,aAAY,KAAK,YAAyB;AACjF,UAAM,SAASA;AACf,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,OAAO,IAAI;AAC9B,QAAI,IAAI;AACR,QAAI,KAAK,QAAQ;AACf,aAAO,OAAO,CAAC;AAAA,IACjB;AACA,QAAIC,cAAa,iBAAiB,UAAU;AAC5C,QAAI,KAAK,QAAQ;AACf,aAAO,OAAO,CAAC;AAAA,IACjB;AACA,QAAIA,cAAa,iBAAiB,UAAU;AAC5C,QAAI,KAAK,QAAQ;AACf,aAAO,OAAO,CAAC;AAAA,IACjB;AACA,QAAI,WAAW,YAAY;AAC3B,QAAI,KAAK,QAAQ;AACf,aAAO,OAAO,CAAC;AAAA,IACjB;AACA,QAAI,WAAW,YAAY;AAC3B,QAAI,KAAK,QAAQ;AACf,aAAO,OAAO,CAAC;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,MAAe;AAC1B,WAAO,KAAK,aAAa,IAAI,MAAK;AAAA,EACpC;AAAA,EAEA,oBAAoB,GAAW,MAAe;AAC5C,WAAO,MAAM,QACbA,cAAa,iBAAiB,CAAC,MAAM,QACrCA,cAAa,iBAAiB,CAAC,MAAM,QACnC,EAAE,YAAY,MAAO,KAAgB,YAAY,KACjD,EAAE,YAAY,MAAO,KAAgB,YAAY;AAAA,EAErD;AAAA,EAEA,IAAI,OAA2B;AAC7B,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,WAAkB;AACpB,WAAO,KAAK,UAAU,IAAI,QAAI,GAAG,QAAQ;AAAA,EAC3C;AAAA,EAEA,aAA+C;AAC7C,YAAQ,KAAK,UAAU,KAAK,QAAQ,SAAS,SAAS,aAAa;AAAA,EACrE;AAAA,EAEA,cAAiB,MAAyC;AACxD,WAAO,KAAK,UAAU,KAAK,QAAM,cAAc,IAAI,GAAG;AAAA,EACxD;AAAA,EAEA,gBAAqB;AACnB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAIA,YAAY,aAAmE;AAC7E,UAAM,UAAU,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW;AACvE,WAAO,KAAK,UAAU;AAAA,MAAO,cAC3B,QAAQ,KAAK,uBAAqB,SAAS,oBAAoB,iBAAiB;AAAA,IAClF,GAAG,IAAI,QAAI,GAAG,QAAQ;AAAA,EACxB;AAAA,EAIQ,UAAU,QAAgB;AAChC,SAAK,UAAU;AACf,QAAI,KAAK,SAAS;AAChB,WAAK,aAAa,KAAK,QAAQ,SAAS,QAAQ,SAAc;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,aAAaD,YAAc;AACzB,SAAK,aAAaA;AAAA,EACpB;AAAA;AAAA,EAGA,mBAAmB,OAAY,MAAgC;AAE7D,UAAM,IAAI,CAAC,GAAG,KAAK,SAAS;AAC5B,MAAE,KAAK,EAAC,UAAS,OAAO,KAAI,CAAC;AAC7B,SAAK,YAAY,EAAE,OAAO,QAAI,GAAG,KAAK,QAAQ,QAAQ,WAAW;AACjE,SAAK,mBAAmB,KAAK,KAAK,SAAS;AAI3C,QAAI,KAAK,SAAS;AAChB,WAAK,uBAAuB,KAAK,OAAO;AACxC,WAAK,uBAAuB,KAAK,OAAO;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,2BAA2B,aAA4B;AAAA,EAEvD;AAAA,EAEA,mBAAmB,MAAsC;AACvD,SAAK,UAAU,KAAK;AACpB,QAAI,KAAK,QAAQ,QAAQ;AACvB,WAAK,UAAU,KAAK,OAAO,MAAM;AAAA,IACnC;AACA,QAAI,KAAK,SAAS,gBAAgB;AAChC,YAAM,OAAO,MAAM,QAAQ,KAAK,SAAS,cAAc,IAAI,KAAK,SAAS,iBAAiB,CAAC,KAAK,SAAS,cAAc,EAAE,KAAK,QAAM,KAAK,QAAQ,sBAAsB,EAAE;AACzK,UAAI,CAAC,MAAM;AACT,cAAM,IAAI,MAAM,wBAAwB,KAAK,SAAS,cAAc;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,mBAAmB,MAAc,OAAY,OAAwB;AACnE,QAAI,MAAM,QAAQ;AAChB,WAAK,UAAU,MAAM,MAAM;AAAA,IAC7B;AAEA,UAAM,aAAa,aAAa,YAAiC,wBAAwB,KAAK,WAAW;AACzG,QAAI,cAAc,MAAM,QAAQ,UAAU,GAAG;AACzC,iBAAW,YAAY,YAAY;AAC/B,YAAI,KAAK,oBAAoB,MAAM,SAAS,IAAW,GAAG;AACtD,gBAAM,aAAa,SAAS,YAAY,SAAS,UAAU,KAAK,IAAI;AACpE,cAAI,SAAS,UAAU;AACnB,kBAAM,SAAU,KAAa,SAAS,WAAW;AACjD,gBAAI,OAAO,WAAW,YAAY;AAC9B,qBAAO,KAAK,MAAM,UAAU;AAAA,YAChC;AAAA,UACJ,OAAO;AACH,YAAC,KAAa,SAAS,WAAW,IAAI;AAAA,UAC1C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,aAAa,OAAY,QAAgB;AACvC,SAAK,qCAAqC,KAAK,mBAAmB,KAAK,aAAa,KAAK,iBAAiB,0BAAwB,CAAC,CAAC,EAAE,UAAU,QAAM;AACpJ,WAAK,2BAA2B,EAAE;AAAA,IACpC,CAAC;AACD,QAAI,QAAQ;AACV,WAAK,UAAU,MAAM;AAErB,YAAM,IAAI,KAAK,WAAW;AAC1B,UAAI,GAAG;AACL,QAAC,EAAU,YAAY;AAAA,MACzB;AAGA,WAAK,sBAAsB,MAAM;AACjC,WAAK,sBAAsB,MAAM;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,eAAe;AAAA,EAEf;AAAA,EAEA,iBAAiB;AACf,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,gBAAgB,MAAoC;AAClD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,YAAY;AACV,SAAK,uBAAuB;AAC5B,SAAK,sBAAsB;AAC3B,SAAK,sBAAsB;AAC3B,SAAK,uBAAuB;AAC5B,SAAK,oCAAoC,YAAY;AAAA,EACvD;AAEF;AAriBU;AAAA,EADP;AAAA,GADU,cAEH;AAEA;AAAA,EADP;AAAA,GAHU,cAIH;AAEA;AAAA,EADP;AAAA,GALU,cAMH;AAEA;AAAA,EADP;AAAA,GAPU,cAQH;AAEA;AAAA,EADP;AAAA,GATU,cAUH;AAEA;AAAA,EADP;AAAA,GAXU,cAYH;AAEA;AAAA,EADP;AAAA,GAbU,cAcH;AAEA;AAAA,EADP;AAAA,GAfU,cAgBH;AAGA;AAAA,EADP;AAAA,GAlBU,cAmBH;AAEA;AAAA,EADP;AAAA,GApBU,cAqBH;;;ACjJH,IAAe,sBAAf,cACG,cACV;AAAA,EAIE,YAAY,SAAqC;AAC/C,UAAM,OAAO;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,OAAqB;AAE5B,QAAI,OAAO;AACT,WAAK,QAAQ;AAAA,IACf,OAAO;AACL,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAEA,iBAAuB;AAErB,UAAM,eAAe;AACrB,QAAI,KAAK,SAAS,iBAAiB,KAAK,OAAO,GAAG,GAAG;AACnD,WAAK,MAAM,IAAI,eAAe;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,2BAA2B,aAA4B;AACrD,UAAM,2BAA2B,WAAW;AAAA,EAC9C;AAGF;;;ACvCO,IAAU;AAAA,CAAV,CAAU,OAAV;AACE,EAAM,cAAW;AAAA,EAwBjB,MAAME,WAAU,cAAyB;AAAA,IAAzC;AAAA;AACqC,kBAAsB;AACtB,oBAAwB;AACxB,mBAAuB;AACR,uBAA2B;AACvE,mBAAqD;AACE,qBAAU;AACV,yBAAc;AAAA;AAAA,IAElF,QAAQC,QAAmB;AACzB,UAAI,KAAK,OAAO;AACZ,cAAM,aAAa;AAAA,UACf,MAAM,KAAK;AAAA,UACX,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,OAAO,KAAK;AAAA,UACZ,SAAS,KAAK;AAAA,UACd,aAAa,KAAK;AAAA,QACtB;AACA,aAAK,MAAM,EAAE,OAAAA,QAAO,WAAW,CAAC;AAAA,MACpC;AAEA,UAAIA,OAAM,kBAAkB;AACxB;AAAA,MACJ;AAEA,UAAI,KAAK,WAAW,YAAY,KAAK,MAAM;AACzC,QAAAA,OAAM,eAAe;AAErB,aAAK,iBAAiB,QAAQ,GAAG,EAAC,MAAM,KAAK,MAAM,SAAS,KAAK,SAAS,aAAa,KAAK,YAAY,CAAC;AAAA,MAC3G;AAAA,IACF;AAAA,EACF;AA/B4C;AAAA,IAAzC,UAAU,EAAE,WAAW,OAAK,KAAK,KAAK,CAAC;AAAA,KAD7BD,GAC+B;AACA;AAAA,IAAzC,UAAU,EAAE,WAAW,OAAK,KAAK,KAAK,CAAC;AAAA,KAF7BA,GAE+B;AACA;AAAA,IAAzC,UAAU,EAAE,WAAW,OAAK,KAAK,KAAK,CAAC;AAAA,KAH7BA,GAG+B;AACe;AAAA,IAAxD,UAAU,EAAE,MAAM,SAAS,WAAW,OAAK,KAAK,KAAK,CAAC;AAAA,KAJ5CA,GAI8C;AAC5C;AAAA,IAAZ,UAAU;AAAA,KALAA,GAKE;AACuD;AAAA,IAAnE,UAAU,EAAE,WAAW,OAAK,MAAM,QAAQ,OAAO,CAAC,MAAM,QAAQ,CAAC;AAAA,KANvDA,GAMyD;AACA;AAAA,IAAnE,UAAU,EAAE,WAAW,OAAK,MAAM,QAAQ,OAAO,CAAC,MAAM,QAAQ,CAAC;AAAA,KAPvDA,GAOyD;AAP/D,KAAM,IAAAA;AAAA,GAzBE;AA4DjB,IAAO,YAAQ;AAAA,EACb,GAAG,CAAC,WAAgC;AAClC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,EAAE;AAAA,MACR,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOV,YAAY,CAAC,GAAG,GAAG,IAAI,qBAAqB;AAC1C,eAAO,UAAU,IAAI,EAAE,YAAY,IAAI,EAAE,EAAE,GAAG,gBAAgB,GAAG,OAAO,CAAC;AAAA,MAC3E;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACxEO,IAAU;AAAA,CAAV,CAAU,cAAV;AACE,EAAM,qBAAW;AAAA,EAgBjB,MAAME,kBAAoB,cAAoD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUnF,aAAa,OAAY,QAAgB;AAEvC,YAAM,aAAa,OAAO,MAAM;AAAA,IAGlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAG,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAC1C,aAAK,QAAQ;AAAA,MACf;AAAA,IAEF;AAAA,EACF;AA5CO,YAAM,WAAAA;AAAA,GAjBE;AAiEjB,IAAO,mBAAQ;AAAA,EACb,UAAU,CAAC,WAAgC;AACzC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,SAAS;AAAA,MACf,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,SAAS,SAAS,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAChG;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC3EO,IAAU;AAAA,CAAV,CAAU,cAAV;AACE,EAAM,qBAAW;AAAA,EAYxB,MAAM,qBAAqB,cAAyB;AAAA,IAApD;AAAA;AACE,WAAO,SAAS;AAAA;AAAA,EAClB;AAAA,EAOO,MAAM,gBAAgB,aAAa;AAAA,IAGxC,cAAc;AACZ,YAAM,EAAC,gBAAgBC,UAAQ,CAAC;AAHlC,WAAO,OAAO;AAAA,IAId;AAAA,EACF;AANO,YAAM;AAAA,EAaN,MAAM,kBAAkB,aAAa;AAAA,IAG1C,cAAc;AACZ,YAAM,EAAC,gBAAgBA,UAAQ,CAAC;AAHlC,WAAO,OAAO;AAAA,IAId;AAAA,EACF;AANO,YAAM;AAAA,EAaN,MAAMA,kBAAiB,cAA6B;AAAA,IAApD;AAAA;AACL,WAAQ,UAAU;AAAA;AAAA,IAGlB,OAAO,QAAsB,SAAmB;AAAE,gBAAU,WAAW,KAAK;AAC1E,WAAK,UAAU;AACf,WAAK,kBAAkB,OAAO;AAC9B,WAAK,aAAa,QAAQ,IAAI,SAAS,MAAM;AAAA,IAC/C;AAAA,IAEQ,kBAAkB,SAAkB;AAC1C,WAAK,YAAY,OAAO,EAAE,QAAQ,QAAM;AACtC,WAAG,SAAS,CAAC;AAAA,MACf,CAAC;AACD,WAAK,YAAY,SAAS,EAAE,QAAQ,QAAM;AACxC,WAAG,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,mBAAmB,OAAqB,WAA2C;AACjF,YAAM,mBAAmB,OAAO,SAAS;AACzC,WAAK,kBAAkB,KAAK,OAAO;AAAA,IACrC;AAAA,IAEA,mBAAmB,SAA2B;AAE5C,WAAK,eAAe;AACpB,WAAK,aAAa,UAAU,CAAC,CAAC,KAAK,aAAa,SAAS;AACzD,WAAK,OAAO,EAAC,MAAM,aAAY,GAAG,CAAC,CAAC,KAAK,aAAa,SAAS,CAAC;AAAA,IAClE;AAAA,IAEA,mBAAmB,MAAc,KAAU,OAAkB;AAC3D,YAAM,mBAAmB,MAAM,KAAK,KAAK;AAEzC,UAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,MAAM,KAAK,SAAS;AACtE,aAAK,aAAa,UAAU,CAAC,CAAC,KAAK,aAAa,SAAS;AACzD,aAAK,OAAO,EAAC,MAAM,kBAAiB,GAAG,CAAC,CAAC,KAAK,aAAa,SAAS,CAAC;AAAA,MACvE;AAAA,IACF;AAAA,EAEF;AAxCO,YAAM,WAAAA;AAAA,GAhDE;AA6FjB,IAAO,mBAAQ;AAAA,EACb,iBAAiB,CAAC,WAAgC;AAChD,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,SAAS,QAAQ;AAAA,MAC1B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,SAAS,QAAQ,GAAG,OAAc,CAAC;AAAA,MAC3E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,mBAAmB,CAAC,WAAgC;AAClD,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,SAAS,QAAQ;AAAA,MAC1B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,SAAS,UAAU,GAAG,OAAc,CAAC;AAAA,MAC7E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,UAAU,CAAC,WAAgC;AACzC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,SAAS,QAAQ;AAAA,MAC1B,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,SAAS,SAAS,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAChG;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AChIO,IAAU;AAAA,CAAV,CAAU,YAAV;AACE,EAAM,mBAAW;AAAA,EAQxB,MAAM,2BAA8B,cAAiB;AAAA,IAArD;AAAA;AACE,WAAO,SAAS;AAAA;AAAA,EAClB;AAAA,EAEA,MAAM,kBAAqB,mBAAqC;AAAA,EAEhE;AAAA,EAEO,MAAM,aAAgB,UAAa;AAAA,IACxC,cAAc;AACZ,YAAM,EAAC,gBAAgBC,QAAS,CAAC;AAAA,IACnC;AAAA,EACF;AAJO,UAAM;AAAA,EAMN,MAAM,kBAAqB,UAAa;AAAA,IAC7C,cAAc;AACZ,YAAM,EAAC,gBAAgBA,QAAS,CAAC;AAAA,IACnC;AAAA,EACF;AAJO,UAAM;AAAA,EAMN,MAAMA,gBAAkB,cAA4B;AAAA,IAIzD,mBAAmB,OAAY,MAAgC;AAC7D,YAAM,mBAAmB,OAAO,IAAI;AACpC,WAAK,UAAU,KAAK;AAAA,IACtB;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAI,KAAK,oBAAoB,MAAM,MAAM,GAAG;AAC1C,aAAK,SAAS;AACd,cAAM,WAAW,KAAK,YAAY,CAAC,MAAM,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,aAAa,YAAY,IAAI,MAAM,aAAa,YAAY,IAAI,EAAE;AACvI,iBAAS,QAAQ,QAAM,KAAK,UAAU,EAAS,CAAC;AAAA,MAElD;AAAA,IACF;AAAA,IAEQ,UAAU,OAA+B;AAC/C,YAAM,OAAO,KAAK,aAAa,MAAM;AAGrC,UAAI,CAAC,KAAK,UAAU,iBAAiB,QAAQ,MAAM,aAAa,MAAM,IAAI,KAAK,aAAa,MAAM,CAAC,GAAG;AAEpG,aAAK,SAAS;AACd,YAAI,MAAM,QAAQ;AAChB,gBAAM,SAAS;AAAA,QACjB;AAAA,MAEF,WAAW,KAAK,WAAW,OAAO;AAChC,cAAM,SAAS;AAAA,MACjB;AAEA,UAAI,CAAC,KAAK,UAAU,iBAAiB,WAAW;AAC9C,aAAK,SAAS;AACd,YAAI,MAAM,QAAQ;AAChB,gBAAM,SAAS;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAzCO,UAAM,SAAAA;AAAA,GA7BE;AA0EjB,IAAO,iBAAQ;AAAA,EACb,YAAY,CAAC,WAAgC;AAC3C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,OAAO,QAAQ;AAAA,MACxB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,OAAO,KAAK,GAAG,OAAc,CAAC;AAAA,MACtE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,iBAAiB,CAAC,WAAgC;AAChD,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,OAAO,QAAQ;AAAA,MACxB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,OAAO,UAAU,GAAG,OAAc,CAAC;AAAA,MAC3E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,CAAC,WAAgC;AACvC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,OAAO,QAAQ;AAAA,MACxB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,OAAO,OAAO,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC5F;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACtGA,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,kBAAkB;AAGpB,IAAU;AAAA,CAAV,CAAU,aAAV;AACE,EAAM,oBAAW;AAAA,EAsBjB,MAAM,gBAAgB,cAAyB;AAAA,IACpD,cAAc;AACZ,YAAM,EAAC,gBAAgB,CAACC,QAAO,EAAC,CAAC;AAAA,IACnC;AAAA,EACF;AAJO,WAAM;AAAA,EAUN,MAAM,aAAa,cAA6B;AAAA,IAErD,cAAc;AACZ,YAAM,EAAC,gBAAgB,CAACA,QAAO,EAAC,CAAC;AAAA,IACnC;AAAA,EACF;AALO,WAAM;AAON,EAAM,kBAAS,CAAC,aAAoC;AACzD,WAAO,oBAAoB;AAAA,EAC7B;AAAA,EAUO,MAAM,aAAa,cAA6B;AAAA,IAErD,cAAc;AACZ,YAAM,EAAC,gBAAgB,CAACA,QAAO,EAAC,CAAC;AAAA,IACnC;AAAA,IACA,OAAO,SAA0BC,QAAoB;AACnD,UAAI,KAAK,aAAa,gBAAgB,GAAG;AACvC,QAAAA,OAAM,eAAe;AAAA,MACvB;AACA,UAAI,KAAK,aAAa,QAAQ,GAAG;AAC/B,aAAK,aAAa,QAAQ,IAAIA,QAAQ,OAAO;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,QAAQ;AACN,WAAK,UAAU,MAAM;AAAA,IACvB;AAAA,EACF;AAhBO,WAAM;AAiBN,EAAM,kBAAS,CAAC,aAAoC;AACzD,WAAO,oBAAoB;AAAA,EAC7B;AAAA,EAQO,MAAMD,iBAAgB,cAAiE;AAAA,IAK5F,mBAAmB,MAAgC;AACjD,YAAM,mBAAmB,IAAI;AAAA,IAC/B;AAAA,IAEA,kBAAkB,OAAoB;AAAA,IACtC;AAAA,IAEA,OAAO,SAA6B;AAClC,YAAM,kBAAkB,KAAK,aAAa,QAAQ;AAClD,UAAI,iBAAiB;AACnB,0BAAkB,QAAQ,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,IACA,aAAa,OAAY,QAAsB;AAC7C,YAAM,aAAa,OAAM,MAAM;AAE/B,UAAID,YAAW,UAAU,KAAK,KAAK,QAAQ,QAAQ,OAAO,QAAQ;AAChE,cAAM,iBAAiB,KAAK;AAE5B,cAAMG,YAAW,KAAK,OAAO,QAAS,OAAQ,OAAQ;AACtD,aAAK,4BAA4B,WAAW,2BAA2BA,WAAU,OAAO,EAAE,UAAU,CAAAD,WAAS;AAC3G,cAAI,KAAK,aAAa,wBAAwB,GAAG;AAC/C;AAAA,UACF;AACA,cAAI,kBAAkB,CAAC,gBAAgB,SAASA,QAAO,MAAc,GAAE;AACrE,2BAAe,OAAO;AAAA,UACxB;AAAA,QACF,CAAC;AACD,YAAI,gBAAgB;AAClB,eAAK,qBAAqB,WAAW,2BAA2B,gBAAgB,QAAQ,EAAE,UAAU,QAAM;AACxG,gBAAIF,YAAW,eAAe,mBAAmB,KAAK,aAAa,mBAAmB,CAAC,GAAG;AACxF,mBAAK,UAAU,OAAO,eAAM,EAAE,QAAQ,CAAAI,QAAM;AAC1C,gBAAAA,IAAG,MAAM;AAAA,cACX,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IAEF;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAAA,IAC7C;AAAA,IAGA,mBAAmB,UAAuB;AACxC,WAAK,oBAAoB,YAAY;AACrC,WAAK,2BAA2B,YAAY;AAAA,IAK9C;AAAA;AAAA;AAAA,EAKF;AA/DO,WAAM,UAAAH;AAAA,GA/EE;AAiJjB,IAAO,kBAAQ;AAAA,EACb,gBAAgB,CAAC,WAAgC;AAC/C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,QAAQ,QAAQ;AAAA,MACzB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,QAAQ,QAAQ,GAAG,OAAc,CAAC;AAAA,MAC1E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,aAAa,CAAC,WAAgC;AAC5C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,QAAQ,QAAQ;AAAA,MACzB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,QAAQ,KAAK,GAAG,OAAc,CAAC;AAAA,MACvE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,aAAa,CAAC,WAAgC;AAC5C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,QAAQ,QAAQ;AAAA,MACzB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,QAAQ,KAAK,GAAG,OAAc,CAAC;AAAA,MACvE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,SAAS,CAAC,WAAgC;AACxC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,QAAQ,QAAQ;AAAA,MACzB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAyCR,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,QAAQ,QAAQ,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC9F;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACrOO,IAAU;AAAA,CAAV,CAAU,WAAV;AACE,EAAM,kBAAW;AAAA,EASjB,MAAMI,eAAiB,cAA4B;AAAA,IAGxD,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAI,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAC3C,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,EAEF;AAVO,SAAM,QAAAA;AAAA,GAVE;;;ACCV,IAAU;AAAA,CAAV,CAAU,QAAV;AACE,EAAM,eAAW;AAAA,EAWjB,MAAMC,YAAc,cAAoD;AAAA,IAAxE;AAAA;AACL,WAAQ,KAAc;AAAA;AAAA,IAEtB,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAAA,IAClC;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAE3C,UAAI,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAE3C,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAfO,MAAM,KAAAA;AAAA,GAZE;AAkCjB,IAAO,aAAQ;AAAA,EACb,IAAI,CAAC,WAA6B;AAYhC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG;AAAA,MACT,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,GAAG,GAAG,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACpF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACvDA,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,WAAW;AACpB,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,4BAA4B;AAG9B,IAAU;AAAA,CAAV,CAAU,WAAV;AACE,EAAM,kBAAW;AAAA,EAYjB,MAAM,aAAa,cAAmB;AAAA,EAE7C;AAFO,SAAM;AAAA,EASN,MAAMC,eAAc,KAAgD;AAAA,IAKzE,kBAAkB,OAAoB;AAAA,IACtC;AAAA,IAGA,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAEhC,YAAM,eAAe,KAAK;AAC1B,YAAM,wBAAwB,KAAK,aAAa,cAAc;AAC9D,YAAM,oBAAoBH,YAAW,mBAAmB,qBAAqB,IAAI,OAAO,qBAAqB,IAAI;AACjH,YAAM,WAAWA,YAAW,mBAAmB,KAAK,aAAa,UAAU,CAAC;AAE5E,UAAI,cAAc;AAChB,cAAM,mCAAmC,MAAM;AAG7C,cAAI,UAAUC,YAAW,2BAA2B,cAAc,OAAO,EAAE;AAAA,YACzE,IAAI,CAACG,WAAiB;AACpB,oBAAM,SAASA,OAAM;AACrB,kBAAI,kBAAkB,kBAAkB;AACtC,uBAAO,OAAO,MAAM,KAAK;AAAA,cAC3B;AACA,sBAAQ,KAAK,kDAAkD,MAAM;AACrE,qBAAO;AAAA,YACT,CAAC;AAAA,UACH;AAEA,cAAIJ,YAAW,mBAAmB,iBAAiB,KAAK,oBAAoB,GAAG;AAC7E,sBAAU,QAAQ,KAAKE,cAAa,iBAAiB,CAAC;AAAA,UACxD;AACA,cAAIF,YAAW,mBAAmB,QAAQ,KAAK,aAAa,MAAM;AAChE,sBAAU,QAAQ,KAAK,qBAAqB,CAAC;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT;AACA,aAAK,oBAAoB,iCAAiC,EAAE,UAAU,QAAM;AAE1E,eAAK,aAAa,OAAO,IAAI,IAAI,YAAY;AAAA,QAC/C,CAAC;AAED,YAAI,aAAa,MAAM;AACrB,eAAK,mBAAmBC,YAAW,2BAA2B,aAAa,MAAM,OAAO,EAAE,UAAU,QAAM;AAExG,iBAAK,mBAAmB,YAAY;AACpC,iBAAK,oBAAoB,iCAAiC,EAAE,UAAU,CAAAI,QAAM;AAE1E,mBAAK,aAAa,OAAO,IAAIA,KAAI,YAAY;AAAA,YAC/C,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IAGF;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAE3C,UAAI,SAAS,SAAS;AAAA,MAItB;AAAA,IACF;AAAA,IAEA,gBAAgB,UAAwC;AACtD,WAAK,kBAAkB,YAAY;AACnC,WAAK,mBAAmB,YAAY;AAAA,IACtC;AAAA,EAEF;AA3EO,SAAM,QAAAF;AAAA,GAtBE;AAoGjB,IAAO,gBAAQ;AAAA,EACb,OAAO,CAAC,WAAgC;AACtC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,MAAM,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC1F;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACtHA,SAAS,cAAAG,mBAAkB;AAC3B,SAAS,gBAAiB;AAGnB,IAAU;AAAA,CAAV,CAAU,mBAAV;AACE,EAAM,0BAAW;AAAA,EAQxB,MAAM,kBAA2B,cAAiB;AAAA,IAAlD;AAAA;AACE,WAAO,SAAS;AAAA;AAAA,EAClB;AAAA,EAMO,MAAM,gBAAgB,UAAU;AAAA,EACvC;AADO,iBAAM;AAAA,EAQN,MAAM,gBAAgB,UAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAa/D;AAbO,iBAAM;AAAA,EAmBN,MAAM,kBAA2B,UAAU;AAAA,IAGhD,QAAQ,MAAS;AACf,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AANO,iBAAM;AAAA,EAYN,MAAM,iBAA0B,UAAU;AAAA,IAG/C,QAAQ,MAAS;AACf,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AANO,iBAAM;AAAA,EA4BN,MAAMC,uBAAsB,cAAyB;AAAA,IAQ1D,mBAAmB,OAAY,MAAgC;AAC7D,YAAM,mBAAmB,OAAO,IAAI;AACpC,WAAK,iBAAiB;AAAA,IACxB;AAAA,IAEA,mBAAmB;AACjB,YAAM,WAAW,KAAK,YAAY,OAAO;AACzC,YAAM,WAAW,KAAK,YAAY,OAAO;AACzC,YAAM,aAAa,KAAK,YAAY,SAAS;AAC7C,YAAM,YAAY,KAAK,YAAY,QAAQ;AAC3C,YAAM,OAAO,CAAC,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ;AAEnE,UAAI,KAAK,iBAAiB,QAAW;AACnC,aAAK,SAAS;AACd,aAAK,OAAO,QAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAC5D,iBAAS,OAAO,QAAM,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AAChE,iBAAS,OAAO,QAAM,GAAG,aAAa,aAAa,KAAK,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AAAA,MACpG,WAAW,KAAK,aAAa,WAAW,WAAW;AACjD,aAAK,SAAS;AACd,aAAK,OAAO,QAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAC5D,iBAAS,OAAO,QAAM,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AAAA,MAClE,WAAW,KAAK,aAAa,WAAW,aAAa;AACnD,aAAK,SAAS;AACd,cAAM,QAAQ,KAAK,aAAa;AAEhC,aAAK,OAAO,QAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAC5D,mBAAW,QAAQ,QAAM;AACvB,aAAG,QAAQ,KAAK;AAAA,QAClB,CAAC;AACD,mBAAW,OAAO,QAAM,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AAAA,MACpE,WAAW,KAAK,aAAa,WAAW,YAAY;AAClD,aAAK,SAAS;AACd,cAAM,QAAQ,KAAK,aAAa;AAChC,aAAK,OAAO,QAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAC5D,kBAAU,QAAQ,QAAM;AACtB,aAAG,QAAQ,KAAK;AAAA,QAClB,CAAC;AACD,kBAAU,OAAO,QAAM,GAAG,MAAM,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AAAA,MACnE;AACA,aAAO,KAAK;AAAA,IAEd;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAE3C,UAAI,KAAK,oBAAoB,MAAM,MAAM,KAAK,OAAO;AAEnD,aAAK,eAAe;AACpB,aAAK,SAAS;AACd,aAAK,eAAe,SAAS,OAAO,KAAK,OAAO,UAAU,aAAa,MAAM,IAAI,KAAqB;AACtG,aAAK,aAAa,QAAQ,IAAI,EAAC,QAAQ,UAAS,CAAC;AACjD,aAAK,iBAAiB;AAEtB,aAAK,aAAa,KAAK,UAAQ;AAE7B,eAAK,iBAAiB;AACtB,eAAK,aAAa,QAAQ,IAAI,EAAC,QAAQ,aAAa,KAAU,CAAC;AAC/D,iBAAO;AAAA,QACT,CAAC,EAAE,MAAM,CAAC,MAAM;AAEd,eAAK,iBAAiB;AACtB,eAAK,aAAa,QAAQ,IAAI,EAAC,QAAQ,YAAY,MAAM,EAAC,CAAC;AAC3D,gBAAM;AAAA,QACR,CAAC,EAAE,QAAQ,MAAM;AAGf,eAAK,aAAa,QAAQ,IAAI,EAAC,QAAQ,UAAS,CAAC;AAAA,QACnD,CAAC;AAAA,MAKH,WAAU,KAAK,oBAAoB,MAAM,MAAM,KAAKD,YAAW,kBAAkB,KAAK,GAAG;AACvF,aAAK,eAAe;AACpB,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAtFO,iBAAM,gBAAAC;AAAA,GApFE;AA8KjB,IAAO,wBAAQ;AAAA,EACb,gBAAgB,CAAC,WAAgC;AAC/C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,cAAc,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,cAAc,QAAQ,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACpG;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,gBAAgB,CAAC,WAAgC;AAC/C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,cAAc,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,cAAc,QAAQ,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACpG;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,kBAAkB,CAAC,WAAgC;AACjD,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,cAAc,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,cAAc,UAAU,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACtG;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,iBAAiB,CAAC,WAAgC;AAChD,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,cAAc,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,cAAc,SAAS,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACrG;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,eAAe,CAAC,WAAgC;AAC9C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,cAAc,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,cAAc,cAAc,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC1G;AAAA,IACF,CAAC;AAAA,EACH;AAEF;;;AC7NO,IAAU;AAAA,CAAV,CAAU,WAAV;AACE,EAAM,kBAAW;AAAA,EAYxB,MAAM,kBAAkB,cAAyB;AAAA,IAAjD;AAAA;AACE,WAAO,SAAS;AAAA;AAAA,EAClB;AAAA,EAEO,MAAM,gBAAgB,UAAU;AAAA,IAGrC,cAAc;AACZ,YAAM,EAAC,gBAAgBC,OAAK,CAAC;AAH/B,WAAO,OAAO;AAAA,IAId;AAAA,EACF;AANO,SAAM;AAAA,EAQN,MAAM,kBAAkB,UAAU;AAAA,IAGvC,cAAc;AACZ,YAAM,EAAC,gBAAgBA,OAAK,CAAC;AAH/B,WAAO,OAAO;AAAA,IAId;AAAA,EACF;AANO,SAAM;AAAA,EAQN,MAAMA,eAAc,cAA8B;AAAA,IAAlD;AAAA;AACL,WAAQ,UAAU;AAAA;AAAA,IAGlB,OAAO,SAAmB;AAAE,gBAAU,WAAW,KAAK;AACpD,WAAK,UAAU;AACf,WAAK,kBAAkB,OAAO;AAC9B,cAAQ,IAAI,wBAAwB,SAAS,KAAK,SAAS,KAAK,cAAc,OAAO;AACrF,UAAI,KAAK,aAAa,mBAAmB,GAAG;AAC1C,aAAK,aAAa,mBAAmB,IAAI,SAAS,KAAK,YAAa;AAAA,MACtE;AAAA,IACF;AAAA,IAEQ,kBAAkB,SAAkB;AAC1C,WAAK,YAAY,OAAO,EAAE,QAAQ,QAAM;AACtC,WAAG,SAAS,CAAC;AAAA,MACf,CAAC;AACD,WAAK,YAAY,SAAS,EAAE,QAAQ,QAAM;AACxC,WAAG,SAAS;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,mBAAmB,OAAkB,WAA2C;AAC9E,YAAM,mBAAmB,OAAO,SAAS;AACzC,WAAK,kBAAkB,KAAK,OAAO;AAAA,IACrC;AAAA,IAEA,mBAAmB,SAA2B;AAC5C,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,mBAAmB,MAAc,KAAU,OAAkB;AAC3D,YAAM,mBAAmB,MAAM,KAAK,KAAK;AACzC,UAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,MAAM,KAAK,SAAS;AACtE,aAAK,aAAa,UAAU,CAAC,CAAC,KAAK,aAAa,SAAS;AACzD,gBAAQ,IAAI,uBAAuB,KAAK,aAAa,SAAS,CAAC;AAC/D,aAAK,OAAO,CAAC,CAAC,KAAK,aAAa,SAAS,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,EAEF;AAxCO,SAAM,QAAAA;AAAA,GAjCE;AA8EjB,IAAO,gBAAQ;AAAA,EACb,cAAc,CAAC,WAAgC;AAC7C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,QAAQ,GAAG,OAAc,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,gBAAgB,CAAC,WAAgC;AAC/C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,UAAU,GAAG,OAAc,CAAC;AAAA,MAC1E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO,CAAC,WAAgC;AACtC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,MAAM,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC1F;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACrHO,IAAU;AAAA,CAAV,CAAUC,WAAV;AACE,EAAMA,OAAA,WAAW;AAAA,EAKxB,MAAe,oBAAuB,cAAoD;AAAA,IAQxF,YAAY,iBAAmC;AAC7C,YAAM;AARR,WAAU,KAAc;AAStB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAChC,WAAK,qBAAqB,KAAK,sBAAsB,QAAQ,WAAW,UAAU,QAAM;AACtF,YAAI,KAAK,SAAS,KAAK,sBAAsB;AAC3C,eAAK,KAAK,KAAK,MAAM,KAAK,oBAAoB;AAAA,QAChD,OAAO;AACL,eAAK,KAAK;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,eAAe;AACb,YAAM,aAAa;AAAA,IACrB;AAAA,IAEA,iBAAiB;AACf,YAAM,eAAe;AAAA,IACvB;AAAA,IAEA,gBAAgB,MAA8B;AAC5C,YAAM,gBAAgB,IAAI;AAC1B,WAAK,oBAAoB,YAAY;AAAA,IACvC;AAAA,EAGF;AAnCE;AAAA,IADC,UAAU,EAAC,MAAM,QAAO,CAAC;AAAA,KAFb,YAGb;AAEQ;AAAA,IADP;AAAA,KAJY,YAKL;AAAA,EAoCH,MAAM,cAAiB,YAAe;AAAA,IAC3C,MAAM,QAAmC;AACvC,aAAO,CAAC,CAAC,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAAA,IAC1C;AAAA,EACF;AAJO,EAAAA,OAAM;AAAA,EAMN,MAAM,eAAkB,YAAe;AAAA,IAC5C,MAAM,QAAmC;AACvC,aAAO,CAAC,CAAC,QAAQ,QAAQ,WAAW,KAAK,KAAK;AAAA,IAChD;AAAA,EACF;AAJO,EAAAA,OAAM;AAAA,GArDE;AA4DjB,IAAO,gBAAQ;AAAA,EACb,OAAO,CAAC,WAA6B;AACnC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,MAAM,MAAM,GAAG,OAAc,CAAC;AAAA,MAC5E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,CAAC,WAA6B;AACpC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,OAAO,MAAM,GAAG,OAAc,CAAC;AAAA,MAC7E;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AClFO,IAAU;AAAA,CAAV,CAAU,kBAAV;AACE,EAAM,yBAAW;AAAA,EASjB,MAAMC,sBAAqB,cAAiD;AAAA,IAA5E;AAAA;AAEL,WAAQ,KAAsB;AAAA;AAAA,IAG9B,SAAS,OAAqB;AAC5B,WAAK,QAAQ;AAAA,IACf;AAAA,IAEA,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAChC,YAAM,IAAI,KAAK,cAAc;AAC7B,UAAI,aAAa,qBAAoB;AACnC,aAAK,QAAQ,EAAE;AAAA,MACjB;AAAA,IAEF;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAAA,IAC5B;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAI,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAC3C,aAAK,QAAQ;AAAA,MACf;AACA,UAAI,KAAK,oBAAoB,MAAM,IAAI,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,KAAK,oBAAoB,MAAM,iBAAiB,GAAG;AACrD,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,QAAQ,WAAgB;AACtB,gCAAc,KAAK,OAAO;AAC1B,WAAK,aAAa,WAAW,IAAI,SAAS;AAAA,IAC5C;AAAA,EACF;AAvCO,gBAAM,eAAAA;AAAA,GAVE;AAoDjB,IAAO,uBAAQ;AAAA;AAAA,EAEb,cAAc,CAAC,QAA6B,aAA4C;AACtF,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,aAAa;AAAA,MACnB,UACE;AAAA,MACF,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAE,YAAY,IAAI,aAAa,aAAa,GAAG,iBAAiB,GAAG,OAAe,CAAC;AAAA,MAC1G;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AClEA,SAAS,cAAAC,mBAAkB;AAE3B,SAAS,cAAAC,mBAAkB;AAI3B,SAAS,mBAAmB;AAuBrB,IAAU;AAAA,CAAV,CAAU,YAAV;AACE,EAAM,mBAAW;AAAA,EAGxB,MAAM,uBAAuB,cAAc;AAAA,IAIzC,YAAY,QAAa;AACvB,YAAM,MAAM;AAJd,WAAO,SAAS;AAChB,WAAO,QAAuB;AAAA,IAI9B;AAAA,IAEA,SAAS,OAAsB;AAC7B,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAGO,MAAM,uBAAuB,eAAe;AAAA,IACjD,cAAc;AACZ,YAAM,EAAC,gBAAgB,OAAM,CAAC;AAAA,IAChC;AAAA,EACF;AAJO,UAAM;AAAA,EAMN,MAAM,yBAAyB,eAAe;AAAA,IACnD,cAAc;AACZ,YAAM,EAAC,gBAAgB,OAAM,CAAC;AAAA,IAChC;AAAA,EACF;AAJO,UAAM;AAAA,EAMN,MAAM,uBAAuB,eAAe;AAAA,IACjD,cAAc;AACZ,YAAM,EAAC,gBAAgB,OAAM,CAAC;AAAA,IAChC;AAAA,EACF;AAJO,UAAM;AAAA,EAON,MAAM,2BAA2B,eAAe;AAAA,IACrD,cAAc;AACZ,YAAM,EAAC,gBAAgB,QAAO,CAAC;AAAA,IACjC;AAAA,EACF;AAJO,UAAM;AAAA,EAMN,MAAM,wBAAwB,eAAe;AAAA,IAGlD,cAAc;AACZ,YAAM,EAAC,gBAAgB,QAAO,CAAC;AAHjC,WAAQ,kBAAmC,CAAC;AAAA,IAI5C;AAAA,IAEA,WAAW,UAAoB,CAAC,GAAG;AACjC,WAAK,kBAAkB,QAAQ,OAAO,QAAM,GAAG,QAAQ;AAAA,IACzD;AAAA,EACF;AAVO,UAAM;AAAA,EAYN,MAAM,wBAAwB,eAAe;AAAA,IAGlD,cAAc;AACZ,YAAM,EAAC,gBAAgB,QAAO,CAAC;AAHjC,WAAQ,kBAAmC,CAAC;AAAA,IAI5C;AAAA,IAEA,WAAW,UAAoB,CAAC,GAAG;AACjC,WAAK,kBAAkB,QAAQ,OAAO,QAAM,GAAG,QAAQ;AAAA,IACzD;AAAA,EACF;AAVO,UAAM;AAAA,EAoBN,MAAM,eAAe,cAAuD;AAAA;AAAA,IASjF,cAAc;AACZ,YAAM,EAAC,gBAAgB,WAAU,CAAC;AATpC,WAAO,SAAS;AACY,WAAO,QAAuB;AACe,WAAO,WAAW;AAClB,WAAO,WAAW;AAC/B,WAAO,YAA2B;AAAA,IAM9F;AAAA,IAEA,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAQhC,WAAK,aAAa;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,2BAA2B,aAA4B;AACrD,YAAM,2BAA2B,WAAW;AAC5C,WAAK,aAAa;AAAA,IACpB;AAAA,IAEA,eAAeC,QAAc;AAE3B,UAAI,CAAC,KAAK,UAAU;AAClB,aAAK,WAAW,KAAK,WAAW,IAAG,CAAC,KAAK,WAAW;AAEpD,aAAK,aAAa;AAClB,aAAK,cAA0B,EAAE,kBAAkB,IAAI;AAAA,MACzD,OAAO;AACL,QAAAA,OAAM,gBAAgB;AACtB,QAAAA,OAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,aAAa;AACX,aAAO,KAAK,cAAiC,GAAG,cAA6B,EAAE;AAAA,IACjF;AAAA,IAEA,eAAe;AACb,UAAI,KAAK,UAAU;AACjB,aAAK,YAAY,cAAc,EAAE,QAAQ,OAAK;AAC5C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD,aAAK,YAAY,gBAAgB,EAAE,QAAQ,OAAK;AAC9C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD,aAAK,YAAY,cAAc,EAAE,QAAQ,OAAK;AAC5C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD;AAAA,MACF;AAEA,UAAI,KAAK,UAAU;AACjB,aAAK,YAAY,cAAc,EAAE,QAAQ,OAAK;AAC5C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD,aAAK,YAAY,gBAAgB,EAAE,QAAQ,OAAK;AAC9C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD,aAAK,YAAY,cAAc,EAAE,QAAQ,OAAK;AAC5C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AAAA,MACH;AAEA,UAAI,CAAC,KAAK,UAAU;AAClB,aAAK,YAAY,cAAc,EAAE,QAAQ,OAAK;AAC5C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD,aAAK,YAAY,gBAAgB,EAAE,QAAQ,OAAK;AAC9C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AACD,aAAK,YAAY,cAAc,EAAE,QAAQ,OAAK;AAC5C,YAAE,SAAS;AACX,YAAE,SAAS,KAAK,KAAK;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAhGqC;AAAA,IAAlC,UAAU,EAAC,MAAM,QAAO,CAAC;AAAA,KAFf,OAEwB;AAC6C;AAAA,IAA/E,UAAU,EAAC,MAAM,YAAY,WAAW,OAAK,MAAM,QAAQ,MAAM,KAAI,CAAC;AAAA,KAH5D,OAGqE;AACA;AAAA,IAA/E,UAAU,EAAC,MAAM,YAAY,WAAW,OAAK,MAAM,QAAQ,MAAM,KAAI,CAAC;AAAA,KAJ5D,OAIqE;AACb;AAAA,IAAlE,UAAU,EAAC,MAAM,SAAS,WAAW,OAAM,IAAI,IAAI,KAAK,CAAC;AAAA,KAL/C,OAKwD;AAL9D,UAAM;AAAA,EAqGN,MAAM,gBAAgB,cAAsC;AAAA,IAMjE,cAAc;AACZ,YAAM,EAAC,gBAAgBC,QAAM,CAAC;AANmC,WAAO,YAA2B;AACrG,WAAQ,UAA2B,CAAC;AACpC,WAAQ,WAAoB;AAAA,IAK5B;AAAA,IAGA,YAAY,UAAmB;AAC7B,WAAK,WAAW;AAChB,WAAK,YAAY,kBAAkB,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AACnE,WAAK,YAAY,eAAe,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAChE,WAAK,YAAY,eAAe,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AAAA,IAEnE;AAAA,IAEA,WAAW,UAAoB,CAAC,GAAS;AACvC,WAAK,UAAU;AAEf,YAAM,kBAAkB,KAAK,QAAQ,OAAO,QAAM,GAAG,YAAY,CAAC,GAAG,QAAQ;AAC7E,UAAI,CAAC,KAAK,UAAU;AAClB,YAAI,gBAAgB,SAAS,GAAG;AAC9B,eAAK,YAAY,kBAAkB,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AACnE,eAAK,YAAY,eAAe,EAAE,QAAQ,OAAK;AAC7C,cAAE,WAAW,OAAO;AACpB,cAAE,SAAS;AAAA,UACb,CAAC;AACD,eAAK,YAAY,eAAe,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAAA,QAClE,OAAO;AACL,eAAK,YAAY,eAAe,EAAE,QAAQ,QAAM,GAAG,SAAS,IAAI;AAChE,eAAK,YAAY,kBAAkB,EAAE,QAAQ,QAAM,GAAG,SAAS,KAAK;AACpE,eAAK,YAAY,eAAe,EAAE,QAAQ,OAAK,EAAE,SAAS,IAAI;AAAA,QAChE;AAAA,MACF;AAAA,IACF;AAAA,IAEA,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAAA,IAKlC;AAAA,IAEA,qBAAqB,SAAsBD,QAAc;AACvD,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,WAAW,cAAuB;AAChC,WAAK,YAAY,kBAAkB,EAAE,QAAQ,OAAK,EAAE,SAAS,YAAY;AACzE,WAAK,YAAY,eAAe,EAAE,QAAQ,OAAK,EAAE,SAAS,CAAC,YAAY;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA,IAKA,2BAA2B,aAA4B;AACrD,YAAM,2BAA2B,WAAW;AAC5C,WAAK,WAAW,KAAK,cAAsB,GAAG,eAAe,SAAS,CAAC;AAAA,IACzE;AAAA,IAGA,eAAe,SAAsBA,QAAc;AACjD,UAAI,KAAK,cAAsB,GAAG,UAAU;AAC1C,QAAAA,OAAM,gBAAgB;AACtB,QAAAA,OAAM,eAAe;AACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAvE4E;AAAA,IAAzE,UAAU,EAAC,MAAM,SAAS,WAAW,OAAM,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,KADtD,QAC+D;AADrE,UAAM;AAAA,EA2EN,MAAM,mBAAmB,cAAmC;AAAA,IAIjE,cAAc;AACZ,YAAM,EAAC,gBAAgBC,QAAM,CAAC;AAJmC,WAAO,YAA2B;AACzE,WAAO,QAA0E;AAAA,IAI7G;AAAA,IAEA,2BAA2B,aAA4B;AACrD,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,kBAAkB,QAAiB;AACjC,YAAM,UAAU,KAAK,YAAY,MAAM;AACvC,YAAM,SAAS,KAAK,cAAsB;AAE1C,UAAI,CAAC,OAAO,UAAU;AAEpB,YAAI,UAAU,OAAO,UAAU;AAC7B,kBAAQ,OAAO,QAAM,OAAO,MAAM,EAAE,QAAQ,QAAM,GAAG,WAAW,KAAK;AAAA,QACvE,OAAO;AACL,gBAAM,kBAAkB,QAAQ,OAAO,QAAM,GAAG,YAAY,CAAC,GAAG,QAAQ;AACxE,0BAAgB,QAAQ,CAAC,KAAK,QAAQ;AACpC,kBAAM,SAAS,QAAQ,gBAAgB,SAAS;AAChD,gBAAI,CAAC,QAAQ;AACX,kBAAI,WAAW;AAAA,YACjB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAEA,cAAQ,WAAW,OAAO;AAAA,IAC5B;AAAA,EACF;AAhC4E;AAAA,IAAzE,UAAU,EAAC,MAAM,SAAS,WAAW,OAAM,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,KADtD,WAC+D;AACvC;AAAA,IAAlC,UAAU,EAAC,MAAM,QAAO,CAAC;AAAA,KAFf,WAEwB;AAF9B,UAAM;AAAA,EA+CN,MAAMA,gBAAe,cAA4G;AAAA,IAkBtI,YAAY,QAA0B;AACpC,YAAM;AAlBmD,WAAO,WAAW;AAClB,WAAO,WAAW;AACV,WAAO,YAA2B;AACnC,WAAO,OAAsB;AAG/F;AAAA,WAAO,iBAAoC,CAAC;AAC5C,WAAO,kBAA4B,CAAC;AAAA,IAapC;AAAA,IAEA,IAAI,mBAA6B;AAC/B,aAAO,KAAK,YAAY,MAAM;AAAA,IAChC;AAAA,IAEA,iBAAiB;AAAA,IAEjB;AAAA,IAEA,qBAAqB;AAAA,IAErB;AAAA,IAEA,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAGhC,UAAIC,YAAW,UAAU,KAAK,KAAK,QAAQ,QAAQ,OAAO,QAAQ;AAChE,cAAM,iBAAiB,KAAK;AAE5B,cAAM,SAAS,KAAK,OAAO,QAAS,OAAQ;AAC5C,cAAMC,YAAW,OAAO;AACxB,aAAK,4BAA4BC,YAAW,2BAA2BD,WAAU,OAAO,EAAE,UAAU,CAAAH,WAAS;AAC3G,gBAAM,iBAAiB,KAAK,YAAY,OAAO,EAAE,KAAK,QAAMA,OAAM,UAAU,GAAG,SAAS,SAASA,OAAM,MAAc,KAAK,GAAG,YAAYA,OAAM,MAAM;AACrJ,cAAI,CAAC,kBAAkB,KAAK,aAAa,wBAAwB,GAAG;AAClE;AAAA,UACF;AACA,cAAI,CAAC,kBAAkB,CAAC,KAAK,YAAY,gBAAgB;AACvD,2BAAe,OAAO;AACtB;AAAA,UACF;AACA,cAAI,CAAC,kBAAkB,kBAAkB,CAAC,gBAAgB,SAASA,QAAO,MAAc,GAAG;AACzF,2BAAe,OAAO;AAAA,UACxB;AAAA,QACF,CAAC;AAED,aAAK,yBAAyB,YAAY,gBAAgB,QAAQ,MAAM,EAAE,UAAU,MAAM;AACxF,cAAI,gBAAgB,QAAQ,OAAO,SAAS,eAAe,YAAY,UAAU;AAC/E,2BAAe,OAAO;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAGA,OAAO,SAA6BA,QAAc;AAOhD,YAAM,kBAAkB,KAAK,aAAa,QAAQ;AAClD,UAAI,iBAAiB;AACnB,0BAAkB,QAAQ,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,WAAW,SAAmB;AAC5B,YAAM,YAAY,KAAK,YAAY,OAAO;AAE1C,WAAK,UAAU;AAEf,YAAM,SAAS,KAAK,QAAQ,OAAO,QAAM,GAAG,YAAY,CAAC,GAAG,QAAQ,EAAE,IAAI,QAAM,GAAG,KAAK;AACxF,WAAK,aAAa,gBAAgB,IAAI,MAAM;AAC5C,iBAAW,QAAQ,QAAM;AACvB,WAAG,YAAY,KAAK,QAAQ;AAC5B,YAAI,CAAC,KAAK,UAAU;AAClB,aAAG,WAAW,OAAO;AAAA,QACvB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,qBAAqB,gBAAoC;AAEvD,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,iBAAiB;AACf,YAAM,eAAe;AACrB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,kBAAkB;AAChB,YAAM,gBAAgB;AACtB,WAAK,2BAA2B,YAAY;AAC5C,WAAK,wBAAwB,YAAY;AAAA,IAC3C;AAAA,IAEA,OAAO;AACL,cAAQ,IAAI,UAAU;AAAA,IACxB;AAAA,EACF;AAjHoE;AAAA,IAAjE,UAAU,EAAC,MAAM,YAAY,WAAW,OAAK,MAAM,KAAI,CAAC;AAAA,KAD9CC,QACuD;AACA;AAAA,IAAjE,UAAU,EAAC,MAAM,YAAY,WAAW,OAAK,MAAM,KAAI,CAAC;AAAA,KAF9CA,QAEuD;AACQ;AAAA,IAAzE,UAAU,EAAC,MAAM,SAAS,WAAW,OAAM,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,KAHtDA,QAG+D;AACD;AAAA,IAAxE,UAAU,EAAC,MAAM,QAAQ,WAAW,OAAM,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,KAJrDA,QAI8D;AAO/C;AAAA,IAAzB;AAAA,KAXUA,QAWe;AACA;AAAA,IAAzB;AAAA,KAZUA,QAYe;AACA;AAAA,IAAzB;AAAA,KAbUA,QAae;AACD;AAAA,IAAxB;AAAA,KAdUA,QAcc;AACA;AAAA,IAAxB;AAAA,KAfUA,QAec;AAfpB,UAAM,SAAAA;AAAA,GA1SE;AA+ZjB,IAAM,wBAAwB,CAAC,MAAc,SAAc;AACzD,SAAO,CAAC,WACN,OAAO,6BAA6B;AAAA,IAClC;AAAA,IACA,UAAU;AAAA,IACV,YAAY,CAAC,GAAG,GAAG,IAAI,qBAAqB,UAAU,IAAI,EAAE,YAAY,IAAI,KAAK,GAAG,OAAO,CAAC;AAAA,EAC9F,CAAC;AACL;AAEA,IAAO,iBAAQ;AAAA,EACb,QAAQ,CAAC,WAA6B;AACpC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,OAAO;AAAA,MACb,QACE;AAAA,MA8DF,UACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWF,YAAY,CAAC,GAAG,GAAG,IAAI,qBAAqB,UAAU,IAAI,EAAE,YAAY,IAAI,OAAO,OAAO,MAAM,GAAG,OAAO,CAAC;AAAA,IAC7G,CAAC;AAAA,EACH;AAAA,EACA,eAAe,CAAC,WAAgC;AAC9C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,OAAO,QAAQ;AAAA,MACxB,UACE;AAAA,MAMF,YAAY,CAAC,GAAG,GAAG,IAAI,qBAAqB,UAAU,IAAI,EAAE,YAAY,IAAI,OAAO,QAAQ,GAAG,OAAO,CAAC;AAAA,IACxG,CAAC;AAAA,EACH;AAAA,EACA,0BAA0B,sBAAsB,GAAG,OAAO,QAAQ,wBAAwB,OAAO,kBAAkB;AAAA,EACnH,uBAAuB,sBAAsB,GAAG,OAAO,QAAQ,qBAAqB,OAAO,eAAe;AAAA,EAC1G,uBAAuB,sBAAsB,GAAG,OAAO,QAAQ,qBAAqB,OAAO,eAAe;AAAA,EAE1G,YAAY,CAAC,WAAgC;AAC3C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,OAAO,QAAQ;AAAA,MACxB,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,qBAAqB;AAC1C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,OAAO,WAAW,GAAG,OAAc,CAAC;AAAA,MAC5E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,cAAc,CAAC,WAAgC;AAC7C,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,OAAO,QAAQ;AAAA,MACxB,UACE;AAAA,MACF,YAAY,CAAC,GAAG,GAAG,IAAI,qBAAqB,UAAU,IAAI,EAAE,YAAY,IAAI,OAAO,OAAO,GAAG,OAAO,CAAC;AAAA,IACvG,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB,sBAAsB,GAAG,OAAO,QAAQ,oBAAoB,OAAO,cAAc;AAAA,EACvG,wBAAwB,sBAAsB,GAAG,OAAO,QAAQ,sBAAsB,OAAO,gBAAgB;AAAA,EAC7G,sBAAsB,sBAAsB,GAAG,OAAO,QAAQ,oBAAoB,OAAO,cAAc;AACzG;;;AC5jBO,IAAU;AAAA,CAAV,CAAU,UAAV;AACE,EAAM,iBAAW;AAAA,EASjB,MAAMI,cAAa,cAAiD;AAAA,IAApE;AAAA;AAEL,WAAQ,KAAsB;AAAA;AAAA,IAG9B,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAAA,IAClC;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAAA,IAC5B;AAAA,IAEA,mBAAmB,MAAc,OAAY,OAAkB;AAC7D,YAAM,mBAAmB,MAAM,OAAO,KAAK;AAC3C,UAAI,KAAK,oBAAoB,MAAM,OAAO,GAAG;AAC3C,aAAK,QAAQ;AAAA,MACf;AACA,UAAI,KAAK,oBAAoB,MAAM,IAAI,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,KAAK,oBAAoB,MAAM,iBAAiB,GAAG;AACrD,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,QAAQ,WAAe;AACrB,gCAAY,KAAK,OAAO;AACxB,WAAK,aAAa,WAAW,IAAI,SAAS;AAAA,IAC5C;AAAA,EACF;AA9BO,QAAM,OAAAA;AAAA,GAVE;AA2CjB,IAAO,eAAQ;AAAA,EACb,MAAM,CAAC,WAAgC;AACrC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,KAAK;AAAA,MACX,UAAU;AAAA,MACV,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,KAAK,KAAK,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MACxF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACrDO,IAAU;AAAA,CAAV,CAAU,WAAV;AACE,EAAM,kBAAW;AAAA,EAyCjB,MAAMC,eAAc,cAAyB;AAAA,IAKlD,aAAa,OAAY,QAAgB;AACvC,YAAM,aAAa,OAAO,MAAM;AAChC,cAAQ,IAAI,QAAQ,KAAK,WAAW,GAAG,WAAW;AAAA,IAKpD;AAAA,IAEA,YAAY;AACV,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA,IAEA,QAAQ;AACN,YAAM,aAAa,KAAK,aAAa,YAAY;AACjD,UAAI,YAAY;AACd,aAAK,aAAa,SAAS,UAAU;AACrC,aAAK,WAAW,YAAY,MAAM;AAEhC,cAAI,KAAK,YAAY;AACnB,iBAAK;AAAA,UACP,OAAO;AACL,0BAAc,KAAK,QAAQ;AAC3B,iBAAK,aAAa;AAClB,iBAAK,WAAW;AAAA,UAClB;AAAA,QACF,GAAG,GAAI;AAAA,MACT;AAAA,IACF;AAAA,IAGA,OAAO;AACL,UAAI,KAAK,UAAU;AACjB,sBAAc,KAAK,QAAQ;AAC3B,aAAK,WAAW;AAChB,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAc,KAAU,OAAkB;AAC3D,YAAM,mBAAmB,MAAM,KAAK,KAAK;AACzC,cAAQ,IAAI,SAAS,MAAM,KAAK,KAAK,WAAW,CAAC;AAAA,IACnD;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,YAAM,gBAAgB,IAAI;AAC1B,UAAI,KAAK,UAAS;AAChB,sBAAc,KAAK,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAvDO,SAAM,QAAAA;AAAA,GA1CE;AAqGjB,IAAO,gBAAQ;AAAA,EACb,QAAQ,CAAC,WAAgC;AACvC,WAAO,OAAO,6BAA6B;AAAA,MACzC,MAAM,GAAG,MAAM,QAAQ;AAAA,MACvB,UAAU;AAAA,MACV,YAAY,CAAC,GAAE,GAAE,IAAI,sBAAsB;AACzC,eAAO,UAAU,IAAI,EAAC,YAAY,IAAI,MAAM,MAAM,GAAG,iBAAiB,GAAG,OAAc,CAAC;AAAA,MAC1F;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACrFO,IAAM,cAAc;AAAA,EACzB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;;;ACrCA,SAAS,eAAAC,oBAAmB;AAI5B,IAAI,eAAoC;AAGjC,IAAM,YAAN,MAAM,WAAkC;AAAA,EAK7C,YAAY,WAAqC,eAAqC;AACpF,UAAM,IAAI,WAAU,OAAO,SAAS;AACpC,SAAK,UAAU,EAAE;AACjB,SAAK,UAAU,EAAE;AACjB,SAAK,cAAc,EAAE;AACrB,QAAI,iBAAiB,eAAe,QAAQ;AAC1C,WAAK,QAAQ,QAAQ,GAAG,cAAc,MAAM;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,IAAW,aAAgB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,SAA0B;AACnC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,SAAoC;AAC7C,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,OAAc,IAAsB,MAAmC;AACrE,WAAO,WAAU,OAAO,IAAI,EAAE;AAAA,EAChC;AAAA,EAEA,OAAc,OAAyB,EAAC,YAAY,QAAQ,OAAM,GAAkG;AAGlK,iBAAa,OAAO,eAAe,aAAa,WAAW,IAAI;AAC/D,QAAI,eAAe;AACnB,QAAI,wBAAwB,YAAY;AACtC,UAAI,QAAQ;AACV,QAAE,WAAmB,iBAAuC,WAAW,MAAM;AAAA,MAC/E;AACA,qBAAe;AAEf,aAAO,EAAC,YAAY,cAAc,QAAQ,QAAS,WAAmB,kBAAiB;AAAA,IACzF;AACA,UAAM,eAAe,OAAO,OAAO,CAAC,GAAG,MAAM;AAC7C,oCAAiB,IAAI,aAAa,aAAa,MAAM;AAErD,iBAAa,OAAOA,aAAY,MAAM;AACtC,iBAAa,YAAY,oBAAoB,MAAM,aAAa,aAAa,IAAI,iBAAiB,YAAY,CAAC;AAC/G,iBAAa,mBAAmB,aAAa,oBAAoB,CAAC;AAClE,iBAAa,mBAAb,aAAa,iBAAmB,CAAC;AAGjC,QAAI,OAAO,WAAW,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,MAAM,GAAG;AAC7F,mBAAa,iBAAiB,KAAK,MAAM;AAAA,IAC3C;AACA,QAAI,OAAO,QAAQ,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,GAAG,GAAG;AACvF,mBAAa,iBAAiB,KAAK,GAAG;AAAA,IACxC;AACA,QAAI,OAAO,QAAQ,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,GAAG,GAAG;AACvF,mBAAa,iBAAiB,KAAK,GAAG;AAAA,IACxC;AACA,QAAI,OAAO,YAAY,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,OAAO,GAAG;AAC/F,mBAAa,iBAAiB,KAAK,OAAO;AAAA,IAC5C;AACA,QAAI,OAAO,mBAAmB,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,cAAc,GAAG;AAC7G,mBAAa,iBAAiB,KAAK,cAAc;AAAA,IACnD;AACA,QAAI,OAAO,gBAAgB,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,WAAW,GAAG;AACvG,mBAAa,iBAAiB,KAAK,WAAW;AAAA,IAChD;AACA,QAAI,OAAO,6BAA6B,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,wBAAwB,GAAG;AACjI,mBAAa,iBAAiB,KAAK,wBAAwB;AAAA,IAC7D;AACA,QAAI,OAAO,sBAAsB,eAAe,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,iBAAiB,GAAG;AACnH,mBAAa,iBAAiB,KAAK,iBAAiB;AAAA,IACtD;AACA,QAAI,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,MAAM,GAAG;AAC5D,mBAAa,iBAAiB,KAAK,MAAM;AAAA,IAC3C;AACA,QAAI,CAAC,aAAa,iBAAiB,KAAK,QAAM,OAAO,UAAS,GAAG;AAC/D,mBAAa,iBAAiB,KAAK,UAAS;AAAA,IAC9C;AACA,iBAAa,cAAc;AAC3B,iBAAa,eAAe;AAG5B,UAAM,YAAY,IAAI,eAAe,YAAY,QAAQ,YAAY;AACrE,UAAM,OAAO,IAAI,MAAM,YAAY,SAAS;AAC5C,mBAAe;AACf,iBAAa,OAAO;AAGpB,QAAI,CAAC,aAAa,QAAQ;AACxB,UAAI;AACJ,UAAI,gBAAgB,UAAU,QAAQ,eAAe,QAAQ;AAC3D,uBAAe,IAAI,WAAW,EAAC,YAAY,cAAc,QAAQ,aAAa,OAAM,CAAC;AAAA,MACvF,WAAW,gBAAgB,UAAU,QAAQ,eAAe,QAAQ;AAClE,uBAAe,IAAI,WAAW,EAAC,YAAY,cAAc,QAAQ,aAAa,OAAM,CAAC;AAAA,MACvF,WAAW,gBAAgB,UAAU,OAAO,QAAQ,eAAe,YAAY;AAC7E,uBAAe,OAAO,WAAW,cAAc,aAAa,MAAM;AAAA,MACpE,WAAW,gBAAgB,UAAU,OAAO,QAAQ,eAAe,UAAU;AAC3E,uBAAe,OAAO;AAAA,MACxB;AACA,mBAAa,SAAS;AAAA,IACxB;AAEA,eAAW,SAAS,OAAO,OAAO,WAAW,GAAG;AAC9C,YAAM,IAAI,MAAM,cAAc,UAAS;AACvC,UAAI,CAAC,aAAa,eAAe,KAAK,QAAM,GAAG,SAAS,EAAE,IAAI,GAAG;AAC/D,qBAAa,eAAe,KAAK,CAAC;AAAA,MACpC;AAAA,IACF;AAYA,cAAU,IAAI,YAAY;AAC1B,WAAO,EAAC,YAAY,cAAc,QAAQ,cAAc,OAAM;AAAA,EAEhE;AAAA,EAEA,OAAc,gBAAgB,OAA6B;AAEzD,UAAM,YAAY,OAAO;AAAA,MACvB;AAAA,QACE,MAAM,MAAM,YAAY,OAAO,MAAM,SAAS,aAAa,MAAM,KAAK,OAAO,MAAM,KAAK,YAAY;AAAA,QACpG,YAAY,CAAC,GAAG,GAAG,IAAI,sBAAsB;AAC3C,iBAAO,OAAO,MAAM,SAAS,aAAa,IAAI,MAAM,KAAK,GAAG,iBAAiB,IAAI,MAAM;AAAA,QACzF;AAAA,QACA,SAAS,MAAM;AAAA,QACf,UAAU,MAAM,YAAY;AAAA,QAC5B,QAAQ,MAAM,QAAQ,MAAM,MAAM,IAAI,MAAM,SAAU,MAAM,SAAS,CAAC,MAAM,MAAM,IAAI;AAAA,MACxF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,OAAc,gBAAgB,UAAkB,YAAoF,SAA8F;AAChO,UAAM,kBAAkB,OAAO;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;;;ACpKO,IAAM,qBAAqB,CAAC,QAAsC;AACvE,SAAO,OAAO,KAAK,qBAAqB;AAC1C;;;ACVO,IAAMC,YAAN,MAA+C;AAAA,EASpD,eAAe,cAAmB;AALlC,kBAAS;AAET,kBAA8B,oBAAI,IAAI;AAEtC,sBAAa;AAGX,SAAK,KAAK,GAAG,YAAY;AAAA,EAE3B;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAiB;AAC/B,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI,MAAM;AACV,WAAO;AAAA,MACL,KAAK,OAAqC;AACxC,YAAI,IAAuB,EAAC,OAAO,QAAW,MAAM,KAAI;AACxD,YAAI,MAAM,SAAS,KAAK;AACtB,cAAI,EAAC,OAAO,MAAM,GAAG,GAAG,MAAM,MAAK;AAAA,QACrC;AACA;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,QAAgB,GAAO;AACzB,UAAM,IAAI,KAAK,OAAO,IAAI,GAAG;AAE7B,QAAI,MAAM,QAAW;AACnB,WAAK,CAAC,IAAI;AAAA,IACZ,OAAO;AACL,WAAK,OAAO,IAAI,KAAK,KAAK,MAAM;AAEhC,WAAK,KAAK,GAAG,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,OAAO,KAAa;AAClB,UAAM,IAAI,KAAK,OAAO,IAAI,GAAG;AAC7B,QAAI,MAAM,QAAW;AACnB,WAAK,CAAC,IAAI,CAAC;AACX,WAAK,OAAO,OAAO,GAAG;AAAA,IAExB;AAAA,EACF;AAAA,EAGA,SAAc;AACZ,WAAO,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC7B;AAAA,EAEA,UAAiB;AACf,UAAMC,OAAM,MAAM,KAAK,EAAC,QAAQ,KAAK,OAAM,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC;AACvG,WAAOA;AAAA,EACT;AAAA,EAEA,QAAQ,OAAkB;AAExB,QAAI,SAAS,MAAM,SAAS,GAAG;AAC7B,MAAC,MAAc,QAAQ,KAAK;AAC5B,WAAK,KAAK,QAAQ,IAAI;AAAA,IAExB;AAAA,EAMF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,QAAc;AAEZ,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,aAAO,KAAK,CAAC;AAAA,IACf;AACA,SAAK,OAAO,MAAM;AAClB,SAAK,SAAS;AAAA,EAChB;AACF;;;ACpGO,IAAM,2BAAN,cAA6D,eAAqB;AAAA,EACrF,YAAY,OAA2B,QAAYC,QAAe,YAAY,MAAM;AAChF,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,WAAO,GAAG,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,SAAS;AAAA,EACnE;AACJ;;;ACRO,IAAM,6BAAN,cAA+D,eAAqB;AAAA,EACvF,YAAY,OAA2B,QAAYC,QAAe,YAAY,MAAM;AAChF,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,WAAO,GAAG,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,GAAG,OAAO,EAAE,SAAS;AAAA,EAClE;AACJ;;;ACTO,IAAM,mBAAN,cAAyD,UAAgB;AAAA,EAC5E,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,WAAQ,KAAK,UAAU,GAAW,WAAW;AAAA,EACjD;AACJ;;;ACPO,IAAM,mCAAN,cAAqE,eAAqB;AAAA,EAC7F,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,GAAG,OAAO,EAAE,WAAW,KAAK;AAAA,EACvE;AACJ;;;ACRO,IAAM,qCAAN,cAAuE,eAAqB;AAAA,EAC/F,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,WAAW,KAAK;AAAA,EACxE;AACJ;;;ACRO,IAAM,wCAAN,cAA0E,eAAqB;AAAA,EAClG,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,GAAG,OAAO,EAAE,SAAS,KAAK;AAAA,EACrE;AACJ;;;ACRO,IAAM,8CAAN,cAAgF,eAAqB;AAAA,EACxG,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,GAAG,OAAO,EAAE,UAAU,KAAK;AAAA,EACtE;AACJ;;;ACRO,IAAM,gDAAN,cAAkF,eAAqB;AAAA,EAC1G,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,UAAU,KAAK;AAAA,EACvE;AACJ;;;ACRO,IAAM,0CAAN,cAA4E,eAAqB;AAAA,EACpG,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,SAAS,KAAK;AAAA,EACtE;AACJ;;;ACRO,IAAM,qCAAN,cAAuE,eAAqB;AAAA,EAC/F,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,GAAG,OAAO,EAAE,SAAS,KAAK;AAAA,EACrE;AACJ;;;ACRO,IAAM,2CAAN,cAA6E,eAAqB;AAAA,EACrG,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,GAAG,OAAO,EAAE,UAAU,KAAK;AAAA,EACtE;AACJ;;;ACRO,IAAM,6CAAN,cAA+E,eAAqB;AAAA,EACvG,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,UAAU,KAAK;AAAA,EACvE;AACJ;;;ACRO,IAAM,uCAAN,cAAyE,eAAqB;AAAA,EACjG,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,SAAS,KAAK;AAAA,EACtE;AACJ;;;ACRO,IAAM,+BAAN,cAAiE,eAAqB;AAAA,EACzF,YAAmB,OAAe,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACtG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,YAAQ,KAAK,SAAS,CAAC,GAAG,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,UAAU,KAAK;AAAA,EACvE;AACJ;;;ACTO,IAAM,iBAAN,cAAmD,UAAgB;AAAA,EACtE,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK;AACnB,WAAO,UAAU,UAAa,UAAU,SAAU,OAAe,UAAU,MAAM;AAAA,EACrF;AACJ;;;ACRO,IAAM,+BAAN,cAAiE,eAAqB;AAAA,EACzF,YAAmB,SAAuB,cAAuB,OAAO,OAA2B,QAAYC,QAAe,YAAY,MAAM;AAC5I,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAuB;AAAA,EAE1C;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK,SAAS,CAAC;AAC7B,UAAM,iBAAiB,MAAM,OAAO,QAAM,CAAC,GAAG,OAAO,EAAE,IAAI,QAAM,GAAG,KAAK;AACzE,WAAO,eAAe,SAAS,KAC1B,EAAE,eAAe,OAAO,QAAM,CAAC,KAAK,QAAQ,SAAS,EAAE,CAAC,EAAE,SAAS,OACnE,KAAK,cAAc,eAAe,OAAO,QAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,EAAE,WAAW,KAAK,QAAQ,SAAS;AAAA,EACpH;AACJ;;;ACbO,IAAM,gBAAN,cAAiD,UAAmB;AAAA,EACvE,YAAY,QAAYC,QAAe,YAAY,MAAM;AACrD,UAAM,QAAW,QAAQA,QAAO,SAAS;AAAA,EAC7C;AAAA,EAEA,cAAuB;AACnB,WAAO,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,QAAiB;AACb,WAAO,KAAK,WAAW;AAAA,EAC3B;AAAA,EAEA,QAAQ;AACJ,SAAK,YAAY;AAAA,EACrB;AACJ;;;ACfO,IAAM,+BAAN,cAAiE,eAAqB;AAAA,EACzF,YAAmB,SAAuB,cAAuB,OAAO,OAA2B,QAAYC,QAAe,YAAY,MAAM;AAC5I,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAuB;AAAA,EAE1C;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK,SAAS,CAAC;AAC7B,UAAM,eAAe,MAAM,OAAO,QAAM,GAAG,OAAO,EAAE,IAAI,QAAM,GAAG,KAAK;AACtE,WAAO,aAAa,SAAS,KACxB,EAAE,aAAa,OAAO,QAAM,CAAC,KAAK,QAAQ,SAAS,EAAE,CAAC,EAAE,SAAS,OACjE,KAAK,cAAc,aAAa,OAAO,QAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,EAAE,WAAW,KAAK,QAAQ,SAAS;AAAA,EAClH;AACJ;;;ACbO,IAAM,oBAAN,cAAsD,UAAgB;AAAA,EAEzE,YAAY,YAA+B,OAAW,QAAYC,QAAe,YAAqB,MAAM;AACxG,UAAM,OAAO,QAAQA,QAAO,SAAS;AACrC,SAAK,aAAa,WAAW,IAAI,QAAM;AACnC,SAAG,aAAa,KAAK;AACrB,SAAG,mBAAmB,KAAK;AAC3B,aAAO;AAAA,IACX,CAAC;AACD,SAAK,WAAW,QAAQ,QAAM;AAC1B,SAAG,IAAI,KAAK,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,IACxD,CAAC;AAAA,EACL;AAAA,EAEA,YAAY,OAAsB;AAC9B,SAAK,WAAW,QAAQ,QAAM,GAAG,IAAI,KAAK,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC,CAAC;AAAA,EACvF;AAAA,EAEA,cAAuB;AACnB,WAAO,EAAE,KAAK,WAAW,OAAO,QAAM,CAAC,GAAG,YAAY,CAAC,EAAE,SAAS;AAAA,EACtE;AAAA,EAEA,QAAiB;AAEb,WAAO,EAAE,KAAK,WAAW,OAAO,QAAM,CAAC,GAAG,MAAM,CAAC,EAAE,SAAS;AAAA,EAChE;AACJ;;;AC1BO,IAAM,oBAAN,cAAsD,UAAgB;AAAA,EACzE,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK;AAEnB,WAAO,UAAU,UAAa,UAAU,SAAU,OAAe,UAAU,KAAK;AAAA,EACpF;AACJ;;;ACTO,IAAM,yBAAN,cAA2D,UAAgB;AAAA,EAE9E,YAAY,QAAgB,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChF,UAAM,OAAO,QAAQA,QAAO,SAAS;AACrC,SAAK,SAAS,eAAe,MAAM,MAAM;AAAA,EAC7C;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAU,KAAK,OAAe,qBAAqB,KAAK;AAC9D,QAAI,OAAO;AACP,aAAO,CAAC,OAAO,KAAK,KAAK;AAAA,IAC7B,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;;;ACjBO,IAAM,gBAAN,cAAkD,UAAgB;AAAA,EACrE,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,WAAO;AAAA,EACX;AACJ;;;ACPO,IAAM,sBAAN,cAAwD,UAAgB;AAAA,EAE3E,YAAY,QAAgB,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChF,UAAM,OAAO,QAAQA,QAAO,SAAS;AACrC,SAAK,SAAS,eAAe,MAAM,MAAM;AAAA,EAC7C;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAU,KAAK,OAAe,qBAAqB,KAAK;AAE9D,QAAI,OAAO;AACP,aAAO,OAAO,KAAK,KAAK;AAAA,IAC5B,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;;;AClBO,IAAM,oBAAN,cAAsD,UAAgB;AAAA,EACzE,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,UAAM,QAAQ,KAAK;AAEnB,WAAO,UAAU,UAAa,UAAU;AAAA,EAC5C;AACJ;;;ACVO,IAAM,qBAAN,cAA2D,UAAgB;AAAA,EAC9E,YAAY,OAAW,QAAYC,QAAe,YAAY,MAAM;AAChE,UAAM,OAAO,QAAQA,QAAO,SAAS;AAAA,EACzC;AAAA,EAEA,QAAiB;AACb,WAAO,EAAG,KAAK,UAAU,GAAW,WAAW;AAAA,EACnD;AACJ;;;ACLO,IAAM,yBAAN,cAA2D,kBAAwB;AAAA,EACtF,YAAmB,uBAAoD,YAA+B,OAAW,QAAYC,QAAe,YAAqB,MAAM;AACnK,UAAM,YAAY,OAAO,QAAQA,QAAO,SAAS;AADlC;AAAoD;AAAA,EAEvE;AAAA,EAEA,QAAiB;AACb,WAAO,KAAK,sBAAsB,KAAK,YAAY,KAAK,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,EACpG;AACJ;;;ACXO,IAAM,iBAAN,cAAmD,UAAgB;AAAA,EACtE,YAAmB,eAA4B,OAAW,QAAYC,QAAe,YAAY,MAAM;AACnG,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,MAAM,OAAU,QAAWA,QAAuB;AAC9C,WAAO,KAAK,cAAc,OAAO,QAAQA,MAAK;AAAA,EAClD;AACJ;;;ACPO,IAAM,sBAAN,cAAwD,eAAqB;AAAA,EAChF,YAAmB,eAA4C,OAA2B,QAAYC,QAAe,YAAY,MAAM;AACnI,UAAM,OAAO,QAAQA,QAAO,SAAS;AADtB;AAAA,EAEnB;AAAA,EAEA,QAAiB;AACb,WAAO,KAAK,cAAc,KAAK,OAAO,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC;AAAA,EAC3E;AACJ;",
6
- "names": ["ScriptUtils", "event", "context", "attribute", "map", "it", "ElementUtils", "ScriptUtils", "ObjectUtils", "ObjectUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ObjectUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "event", "event", "event", "ScriptUtils", "data", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ObjectUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "ScriptUtils", "DestroyOptionType", "RawSetType", "ScriptUtils", "ScriptUtils", "RawSetOperatorType", "ScriptUtils", "ObjectUtils", "ScriptUtils", "rawSet", "attribute", "ElementUtils", "drAttrs", "element", "map", "message", "it", "node", "template", "ScriptUtils", "ObjectUtils", "it", "ScriptUtils", "rawSets", "ObjectUtils", "value", "event", "data", "ConvertUtils", "e", "ElementUtils", "ConvertUtils", "ElementUtils", "attribute", "ConvertUtils", "A", "event", "Appender", "CheckBox", "Choose", "ValidUtils", "Details", "event", "document", "it", "ForOf", "If", "ValidUtils", "EventUtils", "debounceTime", "Input", "event", "it", "ValidUtils", "PromiseSwitch", "Radio", "Route", "RouterOutlet", "EventUtils", "ValidUtils", "event", "Select", "ValidUtils", "document", "EventUtils", "This", "Timer", "RandomUtils", "Appender", "map", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event"]
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["// export { DomRender, type DomRenderRunConfig, type CreateComponentParam } from './DomRender';\n// export { DomRenderProxy, getDomRenderConfig, getDomRenderOriginObject, getDomRenderProxy, isWrapProxyDomRenderProxy } from './DomRenderProxy';\n//\n// export * from './configs';\n// export * from './decorators';\n// export * from './events';\n// export * from './iterators';\n// export * from './lifecycle';\n// export * from './managers';\n// export * from './messenger';\n// export { Appender as AppenderArray, Dr, DrAppender, DrFor, DrForOf, DrForm, DrIf, DrInnerHTML, DrInnerText, DrPre, DrRepeat, DrStripElement, DrTargetAttr, DrTargetElement, DrTargetElementIsElement, DrThis, DrThisProperty, OperatorExecuter, OperatorExecuterAttrRequire } from './operators';\n// export * from './rawsets';\n// export * from './routers';\n// export * from './types';\n// export * from './validators';\n// export * from './components';\nexport default {}"],
5
+ "mappings": ";AAgBA,IAAO,cAAQ,CAAC;",
6
+ "names": []
7
7
  }