@resolveio/server-lib 22.3.221 → 22.3.223

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 (745) hide show
  1. package/ai/assistant-core-heuristics.d.ts +11 -0
  2. package/ai/assistant-core-heuristics.js +356 -0
  3. package/ai/assistant-core-heuristics.js.map +1 -0
  4. package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +3 -0
  5. package/ai/resolveio-platform-intelligence-memory-corpus.js +214 -0
  6. package/ai/resolveio-platform-intelligence-memory-corpus.js.map +1 -0
  7. package/ai/resolveio-platform-intelligence-memory.d.ts +20 -0
  8. package/ai/resolveio-platform-intelligence-memory.js +341 -0
  9. package/ai/resolveio-platform-intelligence-memory.js.map +1 -0
  10. package/{src/ai/resolveio-platform-intelligence-types.ts → ai/resolveio-platform-intelligence-types.d.ts} +15 -20
  11. package/ai/resolveio-platform-intelligence-types.js +4 -0
  12. package/ai/resolveio-platform-intelligence-types.js.map +1 -0
  13. package/ai/resolveio-platform-intelligence.d.ts +6 -0
  14. package/ai/resolveio-platform-intelligence.js +463 -0
  15. package/ai/resolveio-platform-intelligence.js.map +1 -0
  16. package/client-server-app.d.ts +1 -0
  17. package/client-server-app.js +68 -0
  18. package/client-server-app.js.map +1 -0
  19. package/collections/ai-run.collection.d.ts +3 -0
  20. package/collections/ai-run.collection.js +170 -0
  21. package/collections/ai-run.collection.js.map +1 -0
  22. package/collections/ai-terminal-conversation.collection.d.ts +2 -0
  23. package/collections/ai-terminal-conversation.collection.js +140 -0
  24. package/collections/ai-terminal-conversation.collection.js.map +1 -0
  25. package/collections/ai-terminal-issue-report.collection.d.ts +2 -0
  26. package/collections/ai-terminal-issue-report.collection.js +148 -0
  27. package/collections/ai-terminal-issue-report.collection.js.map +1 -0
  28. package/collections/ai-terminal-message.collection.d.ts +2 -0
  29. package/collections/ai-terminal-message.collection.js +121 -0
  30. package/collections/ai-terminal-message.collection.js.map +1 -0
  31. package/collections/app-setting.collection.d.ts +3 -0
  32. package/collections/app-setting.collection.js +103 -0
  33. package/collections/app-setting.collection.js.map +1 -0
  34. package/collections/app-status.collection.d.ts +3 -0
  35. package/collections/app-status.collection.js +57 -0
  36. package/collections/app-status.collection.js.map +1 -0
  37. package/collections/communication-metric.collection.d.ts +2 -0
  38. package/collections/communication-metric.collection.js +133 -0
  39. package/collections/communication-metric.collection.js.map +1 -0
  40. package/collections/counter.collection.d.ts +3 -0
  41. package/collections/counter.collection.js +56 -0
  42. package/collections/counter.collection.js.map +1 -0
  43. package/collections/cron-job-history.collection.d.ts +3 -0
  44. package/collections/cron-job-history.collection.js +137 -0
  45. package/collections/cron-job-history.collection.js.map +1 -0
  46. package/collections/cron-job.collection.d.ts +3 -0
  47. package/collections/cron-job.collection.js +92 -0
  48. package/collections/cron-job.collection.js.map +1 -0
  49. package/collections/customer-notification.collection.d.ts +3 -0
  50. package/collections/customer-notification.collection.js +130 -0
  51. package/collections/customer-notification.collection.js.map +1 -0
  52. package/collections/customer-portal-password.collection.d.ts +3 -0
  53. package/collections/customer-portal-password.collection.js +75 -0
  54. package/collections/customer-portal-password.collection.js.map +1 -0
  55. package/collections/email-history.collection.d.ts +3 -0
  56. package/collections/email-history.collection.js +134 -0
  57. package/collections/email-history.collection.js.map +1 -0
  58. package/collections/email-verified.collection.d.ts +3 -0
  59. package/collections/email-verified.collection.js +62 -0
  60. package/collections/email-verified.collection.js.map +1 -0
  61. package/collections/file.collection.d.ts +3 -0
  62. package/collections/file.collection.js +74 -0
  63. package/collections/file.collection.js.map +1 -0
  64. package/collections/flag-update.collection.d.ts +3 -0
  65. package/collections/flag-update.collection.js +57 -0
  66. package/collections/flag-update.collection.js.map +1 -0
  67. package/collections/flag.collection.d.ts +3 -0
  68. package/collections/flag.collection.js +57 -0
  69. package/collections/flag.collection.js.map +1 -0
  70. package/collections/log-method-latency.collection.d.ts +3 -0
  71. package/collections/log-method-latency.collection.js +77 -0
  72. package/collections/log-method-latency.collection.js.map +1 -0
  73. package/collections/log-subscription.collection.d.ts +3 -0
  74. package/collections/log-subscription.collection.js +80 -0
  75. package/collections/log-subscription.collection.js.map +1 -0
  76. package/collections/log.collection.d.ts +3 -0
  77. package/collections/log.collection.js +93 -0
  78. package/collections/log.collection.js.map +1 -0
  79. package/collections/logged-in-users.collection.d.ts +3 -0
  80. package/collections/logged-in-users.collection.js +67 -0
  81. package/collections/logged-in-users.collection.js.map +1 -0
  82. package/collections/monitor-cpu.collection.d.ts +3 -0
  83. package/collections/monitor-cpu.collection.js +65 -0
  84. package/collections/monitor-cpu.collection.js.map +1 -0
  85. package/collections/monitor-function.collection.d.ts +3 -0
  86. package/collections/monitor-function.collection.js +74 -0
  87. package/collections/monitor-function.collection.js.map +1 -0
  88. package/collections/monitor-memory.collection.d.ts +3 -0
  89. package/collections/monitor-memory.collection.js +77 -0
  90. package/collections/monitor-memory.collection.js.map +1 -0
  91. package/collections/monitor-mongo.collection.d.ts +3 -0
  92. package/collections/monitor-mongo.collection.js +71 -0
  93. package/collections/monitor-mongo.collection.js.map +1 -0
  94. package/collections/notification.collection.d.ts +3 -0
  95. package/collections/notification.collection.js +57 -0
  96. package/collections/notification.collection.js.map +1 -0
  97. package/collections/openai-usage-ledger.collection.d.ts +2 -0
  98. package/collections/openai-usage-ledger.collection.js +188 -0
  99. package/collections/openai-usage-ledger.collection.js.map +1 -0
  100. package/collections/report-builder-dashboard-builder.collection.d.ts +3 -0
  101. package/collections/report-builder-dashboard-builder.collection.js +109 -0
  102. package/collections/report-builder-dashboard-builder.collection.js.map +1 -0
  103. package/collections/report-builder-library.collection.d.ts +3 -0
  104. package/collections/report-builder-library.collection.js +87 -0
  105. package/collections/report-builder-library.collection.js.map +1 -0
  106. package/collections/report-builder-report.collection.d.ts +4 -0
  107. package/collections/report-builder-report.collection.js +184 -0
  108. package/collections/report-builder-report.collection.js.map +1 -0
  109. package/collections/user-group.collection.d.ts +4 -0
  110. package/collections/user-group.collection.js +89 -0
  111. package/collections/user-group.collection.js.map +1 -0
  112. package/collections/user-guide.collection.d.ts +3 -0
  113. package/collections/user-guide.collection.js +57 -0
  114. package/collections/user-guide.collection.js.map +1 -0
  115. package/collections/user.collection.d.ts +4 -0
  116. package/collections/user.collection.js +180 -0
  117. package/collections/user.collection.js.map +1 -0
  118. package/cron/cron.d.ts +14 -0
  119. package/cron/cron.js +216 -0
  120. package/cron/cron.js.map +1 -0
  121. package/fixtures/cron-jobs.d.ts +1 -0
  122. package/fixtures/cron-jobs.js +150 -0
  123. package/fixtures/cron-jobs.js.map +1 -0
  124. package/fixtures/init.d.ts +1 -0
  125. package/fixtures/init.js +91 -0
  126. package/fixtures/init.js.map +1 -0
  127. package/http/auth.d.ts +2 -0
  128. package/http/auth.js +951 -0
  129. package/http/auth.js.map +1 -0
  130. package/http/health.d.ts +1 -0
  131. package/http/health.js +11 -0
  132. package/http/health.js.map +1 -0
  133. package/http/home.d.ts +1 -0
  134. package/http/home.js +134 -0
  135. package/http/home.js.map +1 -0
  136. package/http/slow-query-publication.d.ts +2 -0
  137. package/http/slow-query-publication.js +99 -0
  138. package/http/slow-query-publication.js.map +1 -0
  139. package/index.d.ts +1 -0
  140. package/index.js +19 -0
  141. package/index.js.map +1 -0
  142. package/managers/ai-assistant-codex-manager.manager.d.ts +67 -0
  143. package/managers/ai-assistant-codex-manager.manager.js +1113 -0
  144. package/managers/ai-assistant-codex-manager.manager.js.map +1 -0
  145. package/managers/ai-run-evidence.manager.d.ts +36 -0
  146. package/managers/ai-run-evidence.manager.js +377 -0
  147. package/managers/ai-run-evidence.manager.js.map +1 -0
  148. package/managers/communication-metric.manager.d.ts +16 -0
  149. package/managers/communication-metric.manager.js +134 -0
  150. package/managers/communication-metric.manager.js.map +1 -0
  151. package/managers/cron.manager.d.ts +20 -0
  152. package/managers/cron.manager.js +534 -0
  153. package/managers/cron.manager.js.map +1 -0
  154. package/managers/customer-notification-content.manager.d.ts +55 -0
  155. package/managers/customer-notification-content.manager.js +158 -0
  156. package/managers/customer-notification-content.manager.js.map +1 -0
  157. package/managers/diagnostic-manager-bootstrap.d.ts +9 -0
  158. package/managers/diagnostic-manager-bootstrap.js +260 -0
  159. package/managers/diagnostic-manager-bootstrap.js.map +1 -0
  160. package/managers/error-auto-fix.manager.d.ts +149 -0
  161. package/managers/error-auto-fix.manager.js +3064 -0
  162. package/managers/error-auto-fix.manager.js.map +1 -0
  163. package/managers/local-log.manager.d.ts +18 -0
  164. package/managers/local-log.manager.js +88 -0
  165. package/managers/local-log.manager.js.map +1 -0
  166. package/managers/method.manager.d.ts +84 -0
  167. package/managers/method.manager.js +1964 -0
  168. package/managers/method.manager.js.map +1 -0
  169. package/managers/mongo.manager.d.ts +224 -0
  170. package/managers/mongo.manager.js +5000 -0
  171. package/managers/mongo.manager.js.map +1 -0
  172. package/managers/monitor.manager.d.ts +70 -0
  173. package/managers/monitor.manager.js +550 -0
  174. package/managers/monitor.manager.js.map +1 -0
  175. package/managers/openai-usage-ledger.manager.d.ts +30 -0
  176. package/managers/openai-usage-ledger.manager.js +142 -0
  177. package/managers/openai-usage-ledger.manager.js.map +1 -0
  178. package/managers/slow-query-verifier.manager.d.ts +144 -0
  179. package/managers/slow-query-verifier.manager.js +3857 -0
  180. package/managers/slow-query-verifier.manager.js.map +1 -0
  181. package/managers/slow-query.manager.d.ts +28 -0
  182. package/managers/slow-query.manager.js +468 -0
  183. package/managers/slow-query.manager.js.map +1 -0
  184. package/managers/subscription.manager.d.ts +169 -0
  185. package/managers/subscription.manager.js +3434 -0
  186. package/managers/subscription.manager.js.map +1 -0
  187. package/managers/websocket.manager.d.ts +73 -0
  188. package/managers/websocket.manager.js +673 -0
  189. package/managers/websocket.manager.js.map +1 -0
  190. package/managers/worker-dispatcher.manager.d.ts +120 -0
  191. package/managers/worker-dispatcher.manager.js +1266 -0
  192. package/managers/worker-dispatcher.manager.js.map +1 -0
  193. package/managers/worker-server.manager.d.ts +35 -0
  194. package/managers/worker-server.manager.js +582 -0
  195. package/managers/worker-server.manager.js.map +1 -0
  196. package/methods/accounts.d.ts +2 -0
  197. package/methods/accounts.js +624 -0
  198. package/methods/accounts.js.map +1 -0
  199. package/methods/ai-terminal.d.ts +458 -0
  200. package/methods/ai-terminal.js +27991 -0
  201. package/methods/ai-terminal.js.map +1 -0
  202. package/methods/app-settings.d.ts +2 -0
  203. package/methods/app-settings.js +169 -0
  204. package/methods/app-settings.js.map +1 -0
  205. package/methods/aws.d.ts +2 -0
  206. package/methods/aws.js +877 -0
  207. package/methods/aws.js.map +1 -0
  208. package/methods/collections.d.ts +2 -0
  209. package/methods/collections.js +719 -0
  210. package/methods/collections.js.map +1 -0
  211. package/methods/counters.d.ts +2 -0
  212. package/methods/counters.js +113 -0
  213. package/methods/counters.js.map +1 -0
  214. package/methods/cron-jobs.d.ts +2 -0
  215. package/methods/cron-jobs.js +2475 -0
  216. package/methods/cron-jobs.js.map +1 -0
  217. package/methods/customer-notifications.d.ts +2 -0
  218. package/methods/customer-notifications.js +528 -0
  219. package/methods/customer-notifications.js.map +1 -0
  220. package/methods/diagnostics.d.ts +2 -0
  221. package/methods/diagnostics.js +703 -0
  222. package/methods/diagnostics.js.map +1 -0
  223. package/methods/flag-updates.d.ts +2 -0
  224. package/methods/flag-updates.js +8 -0
  225. package/methods/flag-updates.js.map +1 -0
  226. package/methods/flags.d.ts +2 -0
  227. package/methods/flags.js +8 -0
  228. package/methods/flags.js.map +1 -0
  229. package/methods/logs.d.ts +2 -0
  230. package/methods/logs.js +751 -0
  231. package/methods/logs.js.map +1 -0
  232. package/methods/mongo-explorer.d.ts +2 -0
  233. package/methods/mongo-explorer.js +1808 -0
  234. package/methods/mongo-explorer.js.map +1 -0
  235. package/methods/monitor.d.ts +2 -0
  236. package/methods/monitor.js +543 -0
  237. package/methods/monitor.js.map +1 -0
  238. package/methods/pdf.d.ts +2 -0
  239. package/methods/pdf.js +1216 -0
  240. package/methods/pdf.js.map +1 -0
  241. package/methods/publications.d.ts +1 -0
  242. package/methods/publications.js +183 -0
  243. package/methods/publications.js.map +1 -0
  244. package/methods/report-builder.d.ts +2 -0
  245. package/methods/report-builder.js +3094 -0
  246. package/methods/report-builder.js.map +1 -0
  247. package/methods/support.d.ts +2 -0
  248. package/methods/support.js +430 -0
  249. package/methods/support.js.map +1 -0
  250. package/models/ai-run.model.d.ts +19 -0
  251. package/models/ai-run.model.js +4 -0
  252. package/models/ai-run.model.js.map +1 -0
  253. package/models/ai-terminal-conversation.model.d.ts +17 -0
  254. package/models/ai-terminal-conversation.model.js +4 -0
  255. package/models/ai-terminal-conversation.model.js.map +1 -0
  256. package/models/ai-terminal-issue-report.model.d.ts +19 -0
  257. package/models/ai-terminal-issue-report.model.js +4 -0
  258. package/models/ai-terminal-issue-report.model.js.map +1 -0
  259. package/models/ai-terminal-message.model.d.ts +22 -0
  260. package/models/ai-terminal-message.model.js +4 -0
  261. package/models/ai-terminal-message.model.js.map +1 -0
  262. package/models/app-setting.model.d.ts +16 -0
  263. package/models/app-setting.model.js +4 -0
  264. package/models/app-setting.model.js.map +1 -0
  265. package/{src/models/app-status.model.ts → models/app-status.model.d.ts} +2 -3
  266. package/models/app-status.model.js +4 -0
  267. package/models/app-status.model.js.map +1 -0
  268. package/{src/models/billing-logged-in-users.model.ts → models/billing-logged-in-users.model.d.ts} +4 -5
  269. package/models/billing-logged-in-users.model.js +4 -0
  270. package/models/billing-logged-in-users.model.js.map +1 -0
  271. package/models/collection-document.model.d.ts +21 -0
  272. package/models/collection-document.model.js +4 -0
  273. package/models/collection-document.model.js.map +1 -0
  274. package/models/communication-metric.model.d.ts +20 -0
  275. package/models/communication-metric.model.js +4 -0
  276. package/models/communication-metric.model.js.map +1 -0
  277. package/{src/models/counter.model.ts → models/counter.model.d.ts} +3 -4
  278. package/models/counter.model.js +4 -0
  279. package/models/counter.model.js.map +1 -0
  280. package/models/cron-job-history.model.d.ts +15 -0
  281. package/models/cron-job-history.model.js +4 -0
  282. package/models/cron-job-history.model.js.map +1 -0
  283. package/models/cron-job.model.d.ts +14 -0
  284. package/models/cron-job.model.js +4 -0
  285. package/models/cron-job.model.js.map +1 -0
  286. package/models/customer-notification.model.d.ts +26 -0
  287. package/models/customer-notification.model.js +4 -0
  288. package/models/customer-notification.model.js.map +1 -0
  289. package/models/customer-portal-password.model.d.ts +11 -0
  290. package/models/customer-portal-password.model.js +4 -0
  291. package/models/customer-portal-password.model.js.map +1 -0
  292. package/models/dialog.model.d.ts +23 -0
  293. package/models/dialog.model.js +4 -0
  294. package/models/dialog.model.js.map +1 -0
  295. package/models/email-history.model.d.ts +32 -0
  296. package/{src/models/email-history.model.ts → models/email-history.model.js} +4 -36
  297. package/models/email-history.model.js.map +1 -0
  298. package/{src/models/email-verified.model.ts → models/email-verified.model.d.ts} +5 -6
  299. package/models/email-verified.model.js +4 -0
  300. package/models/email-verified.model.js.map +1 -0
  301. package/{src/models/file.model.ts → models/file.model.d.ts} +7 -8
  302. package/models/file.model.js +4 -0
  303. package/models/file.model.js.map +1 -0
  304. package/{src/models/flag-update.model.ts → models/flag-update.model.d.ts} +3 -4
  305. package/models/flag-update.model.js +4 -0
  306. package/models/flag-update.model.js.map +1 -0
  307. package/{src/models/flag.model.ts → models/flag.model.d.ts} +3 -4
  308. package/models/flag.model.js +4 -0
  309. package/models/flag.model.js.map +1 -0
  310. package/models/log-method-latency.model.d.ts +10 -0
  311. package/models/log-method-latency.model.js +4 -0
  312. package/models/log-method-latency.model.js.map +1 -0
  313. package/{src/models/log-subscription.model.ts → models/log-subscription.model.d.ts} +9 -11
  314. package/models/log-subscription.model.js +4 -0
  315. package/models/log-subscription.model.js.map +1 -0
  316. package/models/log.model.d.ts +17 -0
  317. package/models/log.model.js +4 -0
  318. package/models/log.model.js.map +1 -0
  319. package/{src/models/logged-in-users.model.ts → models/logged-in-users.model.d.ts} +5 -6
  320. package/models/logged-in-users.model.js +4 -0
  321. package/models/logged-in-users.model.js.map +1 -0
  322. package/{src/models/method-response.model.ts → models/method-response.model.d.ts} +6 -7
  323. package/models/method-response.model.js +4 -0
  324. package/models/method-response.model.js.map +1 -0
  325. package/models/method.model.d.ts +26 -0
  326. package/models/method.model.js +4 -0
  327. package/models/method.model.js.map +1 -0
  328. package/{src/models/monitor-cpu.model.ts → models/monitor-cpu.model.d.ts} +7 -9
  329. package/models/monitor-cpu.model.js +4 -0
  330. package/models/monitor-cpu.model.js.map +1 -0
  331. package/models/monitor-function.model.d.ts +14 -0
  332. package/models/monitor-function.model.js +4 -0
  333. package/models/monitor-function.model.js.map +1 -0
  334. package/models/monitor-memory.model.d.ts +15 -0
  335. package/models/monitor-memory.model.js +4 -0
  336. package/models/monitor-memory.model.js.map +1 -0
  337. package/models/monitor-mongo.model.d.ts +13 -0
  338. package/models/monitor-mongo.model.js +4 -0
  339. package/models/monitor-mongo.model.js.map +1 -0
  340. package/{src/models/notification.model.ts → models/notification.model.d.ts} +4 -6
  341. package/models/notification.model.js +4 -0
  342. package/models/notification.model.js.map +1 -0
  343. package/models/openai-usage-ledger.model.d.ts +30 -0
  344. package/models/openai-usage-ledger.model.js +4 -0
  345. package/models/openai-usage-ledger.model.js.map +1 -0
  346. package/models/pagination.model.d.ts +11 -0
  347. package/models/pagination.model.js +28 -0
  348. package/models/pagination.model.js.map +1 -0
  349. package/models/permission.model.d.ts +12 -0
  350. package/models/permission.model.js +4 -0
  351. package/models/permission.model.js.map +1 -0
  352. package/models/report-builder-dashboard-builder.model.d.ts +25 -0
  353. package/models/report-builder-dashboard-builder.model.js +4 -0
  354. package/models/report-builder-dashboard-builder.model.js.map +1 -0
  355. package/models/report-builder-library.model.d.ts +17 -0
  356. package/models/report-builder-library.model.js +4 -0
  357. package/models/report-builder-library.model.js.map +1 -0
  358. package/models/report-builder-report.model.d.ts +121 -0
  359. package/models/report-builder-report.model.js +4 -0
  360. package/models/report-builder-report.model.js.map +1 -0
  361. package/models/report-builder.model.d.ts +61 -0
  362. package/models/report-builder.model.js +4 -0
  363. package/models/report-builder.model.js.map +1 -0
  364. package/models/select-data-label.model.d.ts +9 -0
  365. package/models/select-data-label.model.js +4 -0
  366. package/models/select-data-label.model.js.map +1 -0
  367. package/models/server-message.model.d.ts +32 -0
  368. package/models/server-message.model.js +4 -0
  369. package/models/server-message.model.js.map +1 -0
  370. package/models/slow-query-report.model.d.ts +23 -0
  371. package/models/slow-query-report.model.js +4 -0
  372. package/models/slow-query-report.model.js.map +1 -0
  373. package/models/subscription.model.d.ts +31 -0
  374. package/models/subscription.model.js +4 -0
  375. package/models/subscription.model.js.map +1 -0
  376. package/models/support-ticket.model.d.ts +87 -0
  377. package/models/support-ticket.model.js +4 -0
  378. package/models/support-ticket.model.js.map +1 -0
  379. package/models/user-group.model.d.ts +20 -0
  380. package/models/user-group.model.js +4 -0
  381. package/models/user-group.model.js.map +1 -0
  382. package/{src/models/user-guide.model.ts → models/user-guide.model.d.ts} +4 -5
  383. package/models/user-guide.model.js +4 -0
  384. package/models/user-guide.model.js.map +1 -0
  385. package/models/user.model.d.ts +84 -0
  386. package/models/user.model.js +4 -0
  387. package/models/user.model.js.map +1 -0
  388. package/package.json +1 -1
  389. package/private/images/ResolveIO.png +0 -0
  390. package/public_api.js +127 -0
  391. package/public_api.js.map +1 -0
  392. package/publications/ai-terminal.d.ts +1 -0
  393. package/publications/ai-terminal.js +122 -0
  394. package/publications/ai-terminal.js.map +1 -0
  395. package/publications/app-settings.d.ts +2 -0
  396. package/publications/app-settings.js +28 -0
  397. package/publications/app-settings.js.map +1 -0
  398. package/publications/app-status.d.ts +2 -0
  399. package/publications/app-status.js +16 -0
  400. package/publications/app-status.js.map +1 -0
  401. package/publications/cron-jobs.d.ts +2 -0
  402. package/publications/cron-jobs.js +88 -0
  403. package/publications/cron-jobs.js.map +1 -0
  404. package/publications/customer-notifications.d.ts +2 -0
  405. package/publications/customer-notifications.js +161 -0
  406. package/publications/customer-notifications.js.map +1 -0
  407. package/publications/files.d.ts +2 -0
  408. package/publications/files.js +36 -0
  409. package/publications/files.js.map +1 -0
  410. package/publications/flags-update.d.ts +2 -0
  411. package/publications/flags-update.js +22 -0
  412. package/publications/flags-update.js.map +1 -0
  413. package/publications/flags.d.ts +2 -0
  414. package/publications/flags.js +22 -0
  415. package/publications/flags.js.map +1 -0
  416. package/publications/logs.d.ts +2 -0
  417. package/publications/logs.js +164 -0
  418. package/publications/logs.js.map +1 -0
  419. package/publications/notifications.d.ts +2 -0
  420. package/publications/notifications.js +16 -0
  421. package/publications/notifications.js.map +1 -0
  422. package/publications/report-builder-dashboard-builders.d.ts +2 -0
  423. package/publications/report-builder-dashboard-builders.js +42 -0
  424. package/publications/report-builder-dashboard-builders.js.map +1 -0
  425. package/publications/report-builder-libraries.d.ts +2 -0
  426. package/publications/report-builder-libraries.js +90 -0
  427. package/publications/report-builder-libraries.js.map +1 -0
  428. package/publications/report-builder-reports.d.ts +2 -0
  429. package/publications/report-builder-reports.js +50 -0
  430. package/publications/report-builder-reports.js.map +1 -0
  431. package/publications/super-admin.d.ts +2 -0
  432. package/publications/super-admin.js +16 -0
  433. package/publications/super-admin.js.map +1 -0
  434. package/publications/user-groups.d.ts +1 -0
  435. package/publications/user-groups.js +16 -0
  436. package/publications/user-groups.js.map +1 -0
  437. package/publications/user-guides.d.ts +1 -0
  438. package/publications/user-guides.js +16 -0
  439. package/publications/user-guides.js.map +1 -0
  440. package/resolveio-server-app.d.ts +70 -0
  441. package/resolveio-server-app.js +801 -0
  442. package/resolveio-server-app.js.map +1 -0
  443. package/server-app.d.ts +228 -0
  444. package/server-app.js +3566 -0
  445. package/server-app.js.map +1 -0
  446. package/services/codex-client.d.ts +128 -0
  447. package/services/codex-client.js +1629 -0
  448. package/services/codex-client.js.map +1 -0
  449. package/services/openai-client.d.ts +46 -0
  450. package/services/openai-client.js +318 -0
  451. package/services/openai-client.js.map +1 -0
  452. package/types/error-report.d.ts +25 -0
  453. package/types/error-report.js +4 -0
  454. package/types/error-report.js.map +1 -0
  455. package/types/slow-query-report.d.ts +27 -0
  456. package/types/slow-query-report.js +6 -0
  457. package/types/slow-query-report.js.map +1 -0
  458. package/util/ai-qa-policy.d.ts +124 -0
  459. package/util/ai-qa-policy.js +736 -0
  460. package/util/ai-qa-policy.js.map +1 -0
  461. package/util/ai-run-evidence-adapters.d.ts +109 -0
  462. package/util/ai-run-evidence-adapters.js +7234 -0
  463. package/util/ai-run-evidence-adapters.js.map +1 -0
  464. package/util/ai-run-evidence-dashboard.d.ts +88 -0
  465. package/util/ai-run-evidence-dashboard.js +343 -0
  466. package/util/ai-run-evidence-dashboard.js.map +1 -0
  467. package/util/ai-run-evidence-eval.d.ts +86 -0
  468. package/util/ai-run-evidence-eval.js +1018 -0
  469. package/util/ai-run-evidence-eval.js.map +1 -0
  470. package/util/ai-run-evidence.d.ts +244 -0
  471. package/util/ai-run-evidence.js +1096 -0
  472. package/util/ai-run-evidence.js.map +1 -0
  473. package/util/ai-runner-artifacts.d.ts +82 -0
  474. package/util/ai-runner-artifacts.js +713 -0
  475. package/util/ai-runner-artifacts.js.map +1 -0
  476. package/util/ai-runner-manager-autopilot.d.ts +210 -0
  477. package/util/ai-runner-manager-autopilot.js +642 -0
  478. package/util/ai-runner-manager-autopilot.js.map +1 -0
  479. package/util/ai-runner-manager-policy.d.ts +807 -0
  480. package/util/ai-runner-manager-policy.js +3501 -0
  481. package/util/ai-runner-manager-policy.js.map +1 -0
  482. package/util/ai-runner-qa-auth.d.ts +5 -0
  483. package/util/ai-runner-qa-auth.js +839 -0
  484. package/util/ai-runner-qa-auth.js.map +1 -0
  485. package/util/ai-runner-qa-tools.d.ts +26 -0
  486. package/util/ai-runner-qa-tools.js +3520 -0
  487. package/util/ai-runner-qa-tools.js.map +1 -0
  488. package/util/aicoder-runner-v6.d.ts +426 -0
  489. package/util/aicoder-runner-v6.js +2464 -0
  490. package/util/aicoder-runner-v6.js.map +1 -0
  491. package/util/common.d.ts +31 -0
  492. package/util/common.js +683 -0
  493. package/util/common.js.map +1 -0
  494. package/util/customer-portal-password.d.ts +13 -0
  495. package/util/customer-portal-password.js +209 -0
  496. package/util/customer-portal-password.js.map +1 -0
  497. package/util/error-reporter.d.ts +52 -0
  498. package/util/error-reporter.js +326 -0
  499. package/util/error-reporter.js.map +1 -0
  500. package/util/error-tracking.d.ts +13 -0
  501. package/util/error-tracking.js +120 -0
  502. package/util/error-tracking.js.map +1 -0
  503. package/util/openai-usage-cost.d.ts +6 -0
  504. package/util/openai-usage-cost.js +103 -0
  505. package/util/openai-usage-cost.js.map +1 -0
  506. package/util/report-builder-unwinds.d.ts +15 -0
  507. package/util/report-builder-unwinds.js +156 -0
  508. package/util/report-builder-unwinds.js.map +1 -0
  509. package/util/runner-process-janitor.d.ts +27 -0
  510. package/util/runner-process-janitor.js +208 -0
  511. package/util/runner-process-janitor.js.map +1 -0
  512. package/util/schema-report-builder.d.ts +6 -0
  513. package/util/schema-report-builder.js +481 -0
  514. package/util/schema-report-builder.js.map +1 -0
  515. package/util/slow-query-reporter.d.ts +28 -0
  516. package/util/slow-query-reporter.js +226 -0
  517. package/util/slow-query-reporter.js.map +1 -0
  518. package/util/subscription-dependency-context.d.ts +34 -0
  519. package/util/subscription-dependency-context.js +1283 -0
  520. package/util/subscription-dependency-context.js.map +1 -0
  521. package/util/support-runner-v5.d.ts +1426 -0
  522. package/util/support-runner-v5.js +7647 -0
  523. package/util/support-runner-v5.js.map +1 -0
  524. package/util/tokenizer.d.ts +5 -0
  525. package/util/tokenizer.js +41 -0
  526. package/util/tokenizer.js.map +1 -0
  527. package/workers/codex-runner.worker.d.ts +1 -0
  528. package/workers/codex-runner.worker.js +192 -0
  529. package/workers/codex-runner.worker.js.map +1 -0
  530. package/.nodemon.json +0 -5
  531. package/.vscode/settings.json +0 -21
  532. package/AGENTS.md +0 -195
  533. package/README.md +0 -22
  534. package/build_package.sh +0 -5
  535. package/compileDTS.pl +0 -64
  536. package/docs/ai-assistant-nightly-eval.md +0 -65
  537. package/docs/ai-assistant-preflight-checklist.md +0 -23
  538. package/docs/ai-assistant-report-builder-bridge-playbook.md +0 -115
  539. package/eslint-plugin-custom/index.js +0 -7
  540. package/eslint-plugin-custom/rules/no-filter-zero-index.js +0 -44
  541. package/eslint.config.js +0 -103
  542. package/gulpfile.js +0 -216
  543. package/methodAndPublicationListGenerator.py +0 -375
  544. package/mongodbensurers.js +0 -2
  545. package/mongostop.js +0 -3
  546. package/scripts/cleanup-bypassed-callmethod-logs.js +0 -616
  547. package/settings.development.json +0 -25
  548. package/settings.development.redacted.json +0 -25
  549. package/src/.env +0 -12
  550. package/src/ai/assistant-core-heuristics.ts +0 -379
  551. package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +0 -185
  552. package/src/ai/resolveio-platform-intelligence-memory.ts +0 -325
  553. package/src/ai/resolveio-platform-intelligence.ts +0 -462
  554. package/src/client-server-app.ts +0 -12
  555. package/src/collections/ai-run.collection.ts +0 -117
  556. package/src/collections/ai-terminal-conversation.collection.ts +0 -91
  557. package/src/collections/ai-terminal-issue-report.collection.ts +0 -99
  558. package/src/collections/ai-terminal-message.collection.ts +0 -77
  559. package/src/collections/app-setting.collection.ts +0 -104
  560. package/src/collections/app-status.collection.ts +0 -58
  561. package/src/collections/communication-metric.collection.ts +0 -84
  562. package/src/collections/counter.collection.ts +0 -56
  563. package/src/collections/cron-job-history.collection.ts +0 -94
  564. package/src/collections/cron-job.collection.ts +0 -92
  565. package/src/collections/customer-notification.collection.ts +0 -131
  566. package/src/collections/customer-portal-password.collection.ts +0 -76
  567. package/src/collections/email-history.collection.ts +0 -134
  568. package/src/collections/email-verified.collection.ts +0 -62
  569. package/src/collections/file.collection.ts +0 -74
  570. package/src/collections/flag-update.collection.ts +0 -57
  571. package/src/collections/flag.collection.ts +0 -57
  572. package/src/collections/log-method-latency.collection.ts +0 -77
  573. package/src/collections/log-subscription.collection.ts +0 -80
  574. package/src/collections/log.collection.ts +0 -93
  575. package/src/collections/logged-in-users.collection.ts +0 -67
  576. package/src/collections/monitor-cpu.collection.ts +0 -65
  577. package/src/collections/monitor-function.collection.ts +0 -74
  578. package/src/collections/monitor-memory.collection.ts +0 -77
  579. package/src/collections/monitor-mongo.collection.ts +0 -71
  580. package/src/collections/notification.collection.ts +0 -57
  581. package/src/collections/openai-usage-ledger.collection.ts +0 -131
  582. package/src/collections/report-builder-dashboard-builder.collection.ts +0 -109
  583. package/src/collections/report-builder-library.collection.ts +0 -89
  584. package/src/collections/report-builder-report.collection.ts +0 -184
  585. package/src/collections/user-group.collection.ts +0 -89
  586. package/src/collections/user-guide.collection.ts +0 -57
  587. package/src/collections/user.collection.ts +0 -181
  588. package/src/cron/cron.ts +0 -117
  589. package/src/fixtures/cron-jobs.ts +0 -95
  590. package/src/fixtures/init.ts +0 -35
  591. package/src/http/auth.ts +0 -818
  592. package/src/http/health.ts +0 -7
  593. package/src/http/home.ts +0 -90
  594. package/src/http/slow-query-publication.ts +0 -49
  595. package/src/index.ts +0 -1
  596. package/src/managers/ai-assistant-codex-manager.manager.ts +0 -1131
  597. package/src/managers/ai-run-evidence.manager.ts +0 -264
  598. package/src/managers/communication-metric.manager.ts +0 -82
  599. package/src/managers/cron.manager.ts +0 -333
  600. package/src/managers/customer-notification-content.manager.ts +0 -236
  601. package/src/managers/diagnostic-manager-bootstrap.ts +0 -165
  602. package/src/managers/error-auto-fix.manager.ts +0 -2767
  603. package/src/managers/local-log.manager.ts +0 -113
  604. package/src/managers/method.manager.ts +0 -1857
  605. package/src/managers/mongo.manager.ts +0 -4575
  606. package/src/managers/monitor.manager.ts +0 -507
  607. package/src/managers/openai-usage-ledger.manager.ts +0 -112
  608. package/src/managers/slow-query-verifier.manager.ts +0 -3590
  609. package/src/managers/slow-query.manager.ts +0 -519
  610. package/src/managers/subscription.manager.ts +0 -3128
  611. package/src/managers/websocket.manager.ts +0 -746
  612. package/src/managers/worker-dispatcher.manager.ts +0 -1360
  613. package/src/managers/worker-server.manager.ts +0 -536
  614. package/src/methods/accounts.ts +0 -532
  615. package/src/methods/ai-terminal.ts +0 -29070
  616. package/src/methods/app-settings.ts +0 -114
  617. package/src/methods/aws.ts +0 -649
  618. package/src/methods/collections.ts +0 -641
  619. package/src/methods/counters.ts +0 -69
  620. package/src/methods/cron-jobs.ts +0 -2614
  621. package/src/methods/customer-notifications.ts +0 -458
  622. package/src/methods/diagnostics.ts +0 -616
  623. package/src/methods/flag-updates.ts +0 -7
  624. package/src/methods/flags.ts +0 -7
  625. package/src/methods/logs.ts +0 -657
  626. package/src/methods/mongo-explorer.ts +0 -1880
  627. package/src/methods/monitor.ts +0 -540
  628. package/src/methods/pdf.ts +0 -1236
  629. package/src/methods/publications.ts +0 -129
  630. package/src/methods/report-builder.ts +0 -3300
  631. package/src/methods/support.ts +0 -335
  632. package/src/models/ai-run.model.ts +0 -27
  633. package/src/models/ai-terminal-conversation.model.ts +0 -19
  634. package/src/models/ai-terminal-issue-report.model.ts +0 -21
  635. package/src/models/ai-terminal-message.model.ts +0 -24
  636. package/src/models/app-setting.model.ts +0 -17
  637. package/src/models/collection-document.model.ts +0 -24
  638. package/src/models/communication-metric.model.ts +0 -23
  639. package/src/models/cron-job-history.model.ts +0 -16
  640. package/src/models/cron-job.model.ts +0 -15
  641. package/src/models/customer-notification.model.ts +0 -28
  642. package/src/models/customer-portal-password.model.ts +0 -12
  643. package/src/models/dialog.model.ts +0 -25
  644. package/src/models/log-method-latency.model.ts +0 -11
  645. package/src/models/log.model.ts +0 -19
  646. package/src/models/method.model.ts +0 -25
  647. package/src/models/monitor-function.model.ts +0 -16
  648. package/src/models/monitor-memory.model.ts +0 -17
  649. package/src/models/monitor-mongo.model.ts +0 -15
  650. package/src/models/openai-usage-ledger.model.ts +0 -56
  651. package/src/models/pagination.model.ts +0 -35
  652. package/src/models/permission.model.ts +0 -14
  653. package/src/models/report-builder-dashboard-builder.model.ts +0 -29
  654. package/src/models/report-builder-library.model.ts +0 -20
  655. package/src/models/report-builder-report.model.ts +0 -136
  656. package/src/models/report-builder.model.ts +0 -68
  657. package/src/models/select-data-label.model.ts +0 -9
  658. package/src/models/server-message.model.ts +0 -31
  659. package/src/models/slow-query-report.model.ts +0 -23
  660. package/src/models/subscription.model.ts +0 -73
  661. package/src/models/support-ticket.model.ts +0 -104
  662. package/src/models/user-group.model.ts +0 -24
  663. package/src/models/user.model.ts +0 -96
  664. package/src/private/images/ResolveIO.png +0 -0
  665. package/src/publications/ai-terminal.ts +0 -73
  666. package/src/publications/app-settings.ts +0 -25
  667. package/src/publications/app-status.ts +0 -13
  668. package/src/publications/cron-jobs.ts +0 -40
  669. package/src/publications/customer-notifications.ts +0 -101
  670. package/src/publications/files.ts +0 -33
  671. package/src/publications/flags-update.ts +0 -19
  672. package/src/publications/flags.ts +0 -19
  673. package/src/publications/logs.ts +0 -163
  674. package/src/publications/notifications.ts +0 -13
  675. package/src/publications/report-builder-dashboard-builders.ts +0 -39
  676. package/src/publications/report-builder-libraries.ts +0 -41
  677. package/src/publications/report-builder-reports.ts +0 -47
  678. package/src/publications/super-admin.ts +0 -13
  679. package/src/publications/user-groups.ts +0 -12
  680. package/src/publications/user-guides.ts +0 -12
  681. package/src/resolveio-server-app.ts +0 -617
  682. package/src/server-app.ts +0 -3354
  683. package/src/services/codex-client.ts +0 -1231
  684. package/src/services/openai-client.ts +0 -265
  685. package/src/types/error-report.ts +0 -26
  686. package/src/types/js-tiktoken.d.ts +0 -11
  687. package/src/types/slow-query-report.ts +0 -28
  688. package/src/util/ai-qa-policy.ts +0 -925
  689. package/src/util/ai-run-evidence-adapters.ts +0 -8347
  690. package/src/util/ai-run-evidence-dashboard.ts +0 -323
  691. package/src/util/ai-run-evidence-eval.ts +0 -1057
  692. package/src/util/ai-run-evidence.ts +0 -1430
  693. package/src/util/ai-runner-artifacts.ts +0 -586
  694. package/src/util/ai-runner-manager-autopilot.ts +0 -961
  695. package/src/util/ai-runner-manager-policy.ts +0 -5011
  696. package/src/util/ai-runner-qa-auth.ts +0 -838
  697. package/src/util/ai-runner-qa-tools.ts +0 -3536
  698. package/src/util/aicoder-runner-v6.ts +0 -3121
  699. package/src/util/common.ts +0 -649
  700. package/src/util/customer-portal-password.ts +0 -183
  701. package/src/util/error-reporter.ts +0 -332
  702. package/src/util/error-tracking.ts +0 -79
  703. package/src/util/openai-usage-cost.ts +0 -114
  704. package/src/util/report-builder-unwinds.ts +0 -180
  705. package/src/util/runner-process-janitor.ts +0 -219
  706. package/src/util/schema-report-builder.ts +0 -448
  707. package/src/util/slow-query-reporter.ts +0 -216
  708. package/src/util/subscription-dependency-context.ts +0 -1096
  709. package/src/util/support-runner-v5.ts +0 -10040
  710. package/src/util/tokenizer.ts +0 -38
  711. package/src/workers/codex-runner.worker.ts +0 -142
  712. package/start_server.sh +0 -5
  713. package/tests/ai-assistant-corpus-build.ts +0 -484
  714. package/tests/ai-assistant-corpus-replay-e2e.ts +0 -774
  715. package/tests/ai-assistant-data-parity-e2e.ts +0 -1989
  716. package/tests/ai-assistant-eval-triage.ts +0 -831
  717. package/tests/ai-assistant-openai-e2e.ts +0 -1061
  718. package/tests/ai-assistant-openai-git-e2e.ts +0 -155
  719. package/tests/ai-assistant-preflight-matrix.ts +0 -215
  720. package/tests/ai-assistant-routing-eval.test.ts +0 -585
  721. package/tests/ai-assistant-snf-live-eval.ts +0 -975
  722. package/tests/ai-assistant-utils.test.ts +0 -4834
  723. package/tests/ai-manager-autopilot-snapshot.test.ts +0 -193
  724. package/tests/ai-manager-recovery-checkpoint.test.ts +0 -1383
  725. package/tests/ai-run-eval.test.ts +0 -132
  726. package/tests/ai-run-evidence.test.ts +0 -3773
  727. package/tests/ai-runner-contract.test.ts +0 -515
  728. package/tests/aicoder-runner-v6.test.ts +0 -822
  729. package/tests/error-reporter.test.ts +0 -145
  730. package/tests/method-publication-generator.test.ts +0 -46
  731. package/tests/report-builder-linking.test.ts +0 -79
  732. package/tests/resolveio-platform-intelligence.test.ts +0 -352
  733. package/tests/server-app-cron-owner.test.ts +0 -127
  734. package/tests/subscription-connect-race.test.ts +0 -158
  735. package/tests/subscription-dependency-context.test.ts +0 -324
  736. package/tests/subscription-manager-collection-tracking.test.ts +0 -86
  737. package/tests/subscription-manager-invalidation.test.ts +0 -86
  738. package/tests/support-runner-v5.test.ts +0 -3201
  739. package/tsconfig.json +0 -34
  740. /package/{src/private → private}/email-templates/enrollment.html +0 -0
  741. /package/{src/private → private}/email-templates/forgot-password.html +0 -0
  742. /package/{src/private → private}/email-templates/support-ticket-deleted.html +0 -0
  743. /package/{src/private → private}/email-templates/support-ticket-modified.html +0 -0
  744. /package/{src/private → private}/email-templates/support-ticket.html +0 -0
  745. /package/{src/public_api.ts → public_api.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/methods/cron-jobs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAygCA,gDA4pCC;AArqED,+BAA0B;AAC1B,+BAAiC;AACjC,wCAA0C;AAC1C,6CAAwC;AACxC,0EAA8D;AAC9D,kGAAsF;AACtF,kEAAuD;AACvD,gGAAkF;AAClF,oGAAuF;AAGvF,gEAA0D;AAC1D,yCAAyE;AAEzE,SAAS,gBAAgB,CAAC,SAAiB,EAAE,MAAW;IACvD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,IAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACzD,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,IAAM,KAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,KAAK,CAAC,KAAG,CAAC,EAAE,CAAC;YACjB,IAAM,aAAa,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAC;iBACnD,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,KAAK,KAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAY,KAAG,MAAG,CAAC,CAAC,EAA/E,CAA+E,CAAC;iBAC5F,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,EAAX,CAAW,CAAC,CAAC;YAExB,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,aAAa,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAW,EAAE,IAAY;;IACvD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtD,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACtC,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC9C,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5E,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC3C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5E,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC3C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5E,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC3C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzD,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC3C,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;gBAC9C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC7C,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,WAAW,EAAE,CAAC;gBAClD,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACjE,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9D,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;gBAC7C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;gBACjD,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,WAAW,EAAE,CAAC;gBAClD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnE,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;YACzD,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,OAAO,EAAE,CAAC;gBAC9C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC/C,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,YAAY,EAAE,CAAC;gBACnD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC9E,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YACvD,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,cAAc,EAAE,CAAC;gBACrD,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzC,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACnE,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAChD,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC1E,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,cAAc,EAAE,CAAC;gBACrD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACzG,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;YACzD,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;gBAC7C,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC9C,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,WAAW,EAAE,CAAC;gBAClD,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC7E,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YACtD,CAAC;iBACI,IAAI,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;gBAC5C,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7C,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1C,CAAC;YAED,OAAO,EAAC,IAAI,EAAE,WAAE,GAAC,IAAI,IAAG,EAAC,MAAM,EAAE,SAAS,EAAC,iBAAI,GAAC,IAAI,IAAG,EAAC,MAAM,EAAE,OAAO,EAAC,MAAE,EAAC,CAAC;QAC7E,CAAC;QAED,OAAO,EAAC,IAAI,EAAE,WAAE,GAAC,IAAI,IAAG,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAC,iBAAI,GAAC,IAAI,IAAG,EAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAC,MAAE,EAAC,CAAC;IACzF,CAAC;SACI,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACvC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,WAAE,GAAC,IAAI,IAAG,EAAC,SAAS,EAAE,IAAI,EAAC,MAAE,CAAC;QACtC,GAAG,CAAC,IAAI,WAAE,GAAC,IAAI,IAAG,EAAC,KAAK,EAAE,IAAI,EAAC,MAAE,CAAC;QAElC,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,WAAE,GAAC,IAAI,IAAG,EAAC,KAAK,EAAE,EAAE,EAAC,MAAE,CAAC;QACjC,CAAC;QAED,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC;IACpB,CAAC;SACI,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACtC,gBAAQ,GAAC,IAAI,IAAG,EAAC,KAAK,EAAE,IAAI,EAAC,KAAE;IAChC,CAAC;SACI,CAAC;QACL,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC/B,IAAI,KAAG,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;;oBACxB,KAAG,CAAC,IAAI,WAAE,GAAC,IAAI,cAAI,GAAC,GAAG,GAAG,MAAM,CAAC,SAAS,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAC,MAAE,CAAC;gBACxF,CAAC,CAAC,CAAC;gBAEH,IAAI,KAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,EAAC,IAAI,EAAE,KAAG,EAAC,CAAC;gBACpB,CAAC;qBACI,CAAC;oBACL,OAAO,KAAG,CAAC,CAAC,CAAC,CAAC;gBACf,CAAC;YACF,CAAC;iBACI,CAAC;gBACL,IAAI,IAAE,GAAG,EAAE,CAAC;gBAEZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;;oBACxB,IAAE,CAAC,IAAI,WAAE,GAAC,IAAI,cAAI,GAAC,GAAG,GAAG,MAAM,CAAC,SAAS,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAC,MAAE,CAAC;gBACvF,CAAC,CAAC,CAAC;gBAEH,IAAI,IAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,OAAO,EAAC,GAAG,EAAE,IAAE,EAAC,CAAC;gBAClB,CAAC;qBACI,CAAC;oBACL,OAAO,IAAE,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;YACF,CAAC;QACF,CAAC;aACI,CAAC;YACL,gBAAQ,GAAC,IAAI,cAAI,GAAC,GAAG,GAAG,MAAM,CAAC,SAAS,IAAG,MAAM,CAAC,KAAK,KAAC,KAAE;QAC3D,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACxD,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,gCAAgC,CAAC,QAAgB,EAAE,MAAW;IACtE,IAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE1C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,UAAU,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,iBAAiB,KAAK,WAAW,IAAI,CAAC,CAAC,iBAAiB,KAAK,GAAG,EAA9E,CAA8E,CAAC,CAAC;IAE/I,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,IAAI,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC;IACrC,IAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,CAAC,gBAAgB,KAAK,IAAI,EAAzD,CAAyD,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnH,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,EAAE,KAAI,IAAI,CAAC;AAC9B,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,MAAW;IAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,gCAAgC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAW;IACjD,IAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,KAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO;QACR,CAAC;QAED,IAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aACI,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAW,EAAE,MAAkB;IAAlB,uBAAA,EAAA,WAAkB;IACpE,IAAM,IAAI,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK;QACtC,IAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,IAAI,iBAAU,KAAK,GAAG,CAAC,CAAE,CAAC;QAC5E,IAAM,QAAQ,GAAG,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,MAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAA,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,MAAK,cAAc,CAAC;QAE1H,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG;YAC5B,IAAM,UAAU,GAAG,GAAG,KAAK,MAAM,CAAC,eAAe;gBAChD,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC;gBAChE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,KAAK,KAAK,CAAC,eAAe,CAAC;YAE7E,IAAI,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACN,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;oBAChC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,mBAAY,KAAK,CAAE;oBACxC,IAAI,EAAE,EAAE;oBACR,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,OAAO;oBAC7C,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,EAAE;iBAC1C,CAAC;YACH,CAAC;YAED,OAAO;gBACN,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,EAAE;gBACR,aAAa,EAAE,OAAO;gBACtB,cAAc,EAAE,EAAE;aAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACN,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAU,KAAK,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,iBAAU,KAAK,CAAE;YACvD,MAAM,QAAA;YACN,QAAQ,UAAA;SACR,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAW,EAAE,MAAkB,EAAE,QAAgB,EAAE,UAAmB,EAAE,aAAsB;IAAjF,uBAAA,EAAA,WAAkB;IAClE,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO;IACR,CAAC;IAED,IAAM,cAAc,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;QAC7E,OAAA,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,MAAK,UAAU,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC;IAA9E,CAA8E,CAC9E,EAFiD,CAEjD,CAAC,CAAC;IACH,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO;IACR,CAAC;IAED,IAAM,IAAI,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACnD,IAAM,OAAO,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAC;IAC9C,IAAM,MAAM,GAAG,UAAU,IAAI,QAAQ,CAAC;IAEtC,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG;QAC5B,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO;gBACN,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,EAAE;gBACR,aAAa,EAAE,aAAa,IAAI,OAAO;gBACvC,cAAc,EAAE,QAAQ;aACxB,CAAC;QACH,CAAC;QAED,OAAO;YACN,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,aAAa,EAAE,OAAO;YACtB,cAAc,EAAE,EAAE;SAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC;QACX,EAAE,EAAE,iBAAU,QAAQ,CAAE;QACxB,MAAM,QAAA;QACN,QAAQ,UAAA;KACR,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CAAC,MAAW,EAAE,MAAkB;IAAlB,uBAAA,EAAA,WAAkB;IACxE,IAAM,YAAY,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,KAAI,EAAE,CAAC;IACjD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,UAAA,MAAM;QAC1B,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAW;IAC9C,IAAI,MAAM,GAAU,EAAE,CAAC;IAEvB,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,KAAI,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAC1D,MAAM,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;SACI,CAAC;QACL,MAAM,GAAG,4BAA4B,CAAC,MAAM,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAW,EAAE,aAAyB;IAAzB,8BAAA,EAAA,kBAAyB;IAC3E,IAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAC,CAAC;IAC7D,IAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,IAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IAEtC,YAAY,CAAC,OAAO,CAAC,UAAA,CAAC;QACrB,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,EAAE,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,QAAQ;QACnC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,QAAQ;YAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC9C,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAErE,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,OAAO;gBACR,CAAC;gBAED,IAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,SAAS,CAAC,CAAC;gBAClC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,IAAI,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,aAAa,IAAI,QAAQ,CAAC;gBAC7F,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC;oBAC3C,CAAC,CAAC,GAAG,CAAC,IAAI;oBACV,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjE,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC;gBAC/D,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC;gBAClE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,mBAAY,QAAQ,cAAI,QAAQ,CAAE,CAAC;gBACzE,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC;gBACxC,KAAK,CAAC,iBAAiB,GAAG,QAAQ,CAAC;gBAEnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAClB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;gBACxB,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAW,EAAE,aAAoB,EAAE,cAAqB,EAAE,GAAQ;IAC/F,IAAM,YAAY,GAAQ,EAAC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,EAAC,CAAC;IAE1C,IAAM,oBAAoB,GAAG,UAAC,UAAkB;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;YACnC,OAAA,CAAC,CAAC,gBAAgB,KAAK,UAAU;gBACjC,GAAG;gBACH,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS;gBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;gBAClB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;QALhB,CAKgB,CAChB,CAAC;IACH,CAAC,CAAC;IAEF,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,QAAQ;QAC3C,IAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;YAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,IAAI,CAAC,EAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAC,CAAC,CAAC;gBAC5D,CAAC;YACF,CAAC;iBACI,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClH,MAAM,CAAC,IAAI,CAAC,EAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;YACpE,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAW,EAAE,SAAc,EAAE,QAAgB;IAC9E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QACrF,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpG,IAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAA5F,CAA4F,CAAC,CAAC;IAEtI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAM,cAAc,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,CAAC;IAC/C,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,KAAK,cAAc,EAA/B,CAA+B,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,IAAM,KAAK,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC;IAE/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/F,CAAC;AAED,SAAS,8BAA8B,CAAC,GAAQ,EAAE,cAAqB;IACtE,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,CAAA,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,EAAlC,CAAkC,CAAC,CAAC;IAE1E,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,EAAvB,CAAuB,CAAC,IAAI,IAAI,CAAC;AAC1E,CAAC;AAED,IAAM,mBAAmB,GAAG;IAC3B,MAAM,CAAC,QAAQ;IACf,YAAY;IACZ,UAAU;IACV,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,qBAAqB;IACrB,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;CACnB,CAAC;AAEF,SAAS,WAAW,CAAC,KAAU;IAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxD,IAAM,GAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,GAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC1D,IAAM,GAAG,GAAG,UAAG,KAAK,CAAE,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAM,GAAC,GAAG,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,GAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACjB,OAAO,GAAC,CAAC;QACV,CAAC;QAED,IAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACtD,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,kCAAkC,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QACf,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,IAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,UAAU,EAAE,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC;QAChB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,CAAC,GAAG,CAAC;SACH,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACb,IAAI,CAAC,CAAC,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9B,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAU;IACtC,OAAO,CAAC,CAAC,KAAK,IAAI,CACjB,KAAK,CAAC,SAAS,KAAK,QAAQ;QAC5B,KAAK,CAAC,aAAa,KAAK,OAAO;QAC/B,KAAK,CAAC,aAAa,KAAK,KAAK;QAC7B,KAAK,CAAC,aAAa,KAAK,SAAS,CACjC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB,EAAE,KAAU,EAAE,SAAe;IACpE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IAED,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,MAAK,MAAM,EAAE,CAAC;QACrC,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,EAAzC,CAAyC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3G,IAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,CAAC;YACP,IAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,IAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;YAC7E,IAAM,cAAc,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,CAAC;YACjD,IAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAC5B,KAAK,CAAC,IAAI,EAAE,EACZ,KAAK,CAAC,KAAK,EAAE,EACb,KAAK,CAAC,IAAI,EAAE,EACZ,KAAK,CAAC,IAAI,EAAE,EACZ,KAAK,CAAC,MAAM,EAAE,EACd,KAAK,CAAC,MAAM,EAAE,EACd,KAAK,CAAC,WAAW,EAAE,CACnB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC;YACvC,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;gBACjE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;iBACI,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,UAAU,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;gBAC3G,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAC1B,CAAC;iBACI,CAAC;gBACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,CAAC;YAED,QAAQ,cAAc,EAAE,CAAC;gBACxB,KAAK,MAAM;oBACV,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;oBAC3B,MAAM;gBACP,KAAK,UAAU,CAAC;gBAChB,KAAK,eAAe;oBACnB,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC;oBACtC,MAAM;gBACP,KAAK,MAAM;oBACV,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;oBAC3B,MAAM;gBACP,KAAK,WAAW,CAAC;gBACjB;oBACC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;oBAC3B,MAAM;YACR,CAAC;YAED,OAAO;QACR,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO;IACR,CAAC;IAED,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,IAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YAEpB,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,MAAK,UAAU,EAAE,CAAC;gBAC9C,IAAI,CAAC,MAAM,GAAG,+BAA+B,CAAC;YAC/C,CAAC;iBACI,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,MAAK,QAAQ,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,MAAK,OAAO,EAAE,CAAC;gBACzF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACvB,CAAC;YAED,OAAO;QACR,CAAC;IACF,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;SACI,CAAC;QACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,GAAG;IACtB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1E,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;aACI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAc,EAAE,MAAW,EAAE,KAAiB;IAAjB,sBAAA,EAAA,UAAiB;IACjF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChD,OAAO;IACR,CAAC;IAED,IAAM,QAAQ,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,KAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO;IACR,CAAC;IAED,IAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,IAAM,SAAS,GAAG,EAAE,CAAC;IAErB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC;QACtB,IAAI,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAA,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QAC5C,CAAC;aACI,CAAC;YACL,IAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC,EAAC,MAAM,QAAA,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,EAAC,CAAC,CAAC;YACnD,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAM,aAAa,GAAG,UAAC,IAAS,EAAE,IAAS,EAAE,KAAa;QACzD,IAAM,GAAG,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAM,KAAK,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;QACjE,IAAM,KAAK,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;QACjE,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QACxB,IAAI,KAAK,EAAE,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;QAEzB,IAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAChC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACjC,CAAC;QAED,IAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAM,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAChC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnF,IAAM,mBAAmB,GAAG,UAAC,GAAQ;QACpC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO;QACR,CAAC;QAED,IAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAtB,CAAsB,CAAC,CAAC;QAEzE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO;QACR,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,eAAe,CAAC,OAAO,CAAC,UAAA,EAAE;YACzB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YACjB,OAAO;QACR,CAAC;QAED,IAAM,WAAW,GAAG,UAAC,EAAU,EAAE,GAAW;YAC3C,IAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACb,CAAC;YACD,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,QAAA,EAAC,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;;;gBACjB,KAAgB,IAAA,cAAA,SAAA,SAAS,CAAA,oCAAA,2DAAE,CAAC;oBAAvB,IAAM,CAAC,sBAAA;oBACX,IAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACrF,IAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACrF,IAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC/C,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;wBACf,OAAO,GAAG,CAAC;oBACZ,CAAC;gBACF,CAAC;;;;;;;;;YACD,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,OAAO,CAAC,UAAA,EAAE;YACzB,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,EAApB,CAAoB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG,UAAC,IAAW,EAAE,KAAa;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;QACR,CAAC;QAED,IAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,gBAAK,OAAA,aAAa,CAAC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,0CAAG,OAAO,CAAC,EAAE,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,0CAAG,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA,EAAA,CAAC,CAAC;QAEhF,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAM,SAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,UAAA,CAAC;gBACb,IAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,cAAc,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;aACI,CAAC;YACL,IAAI,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,mBAAmB,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC,CAAC;IAEF,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,IAAM,6BAA6B,GAAG,uDAAuD,CAAC;AAC9F,IAAM,sBAAsB,GAAG,uBAAuB,CAAC;AACvD,IAAM,6BAA6B,GAAG,2BAA2B,CAAC;AAClE,IAAM,kCAAkC,GAAG,EAAE,CAAC;AAC9C,IAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,IAAM,oCAAoC,GAAG,EAAE,CAAC;AAChD,IAAM,8BAA8B,GAAG,gEAAgE,CAAC;AACxG,IAAM,2CAA2C,GAAG,EAAE,CAAC;AACvD,IAAM,wCAAwC,GAAG,IAAI,CAAC;AACtD,IAAM,6CAA6C,GAAG,EAAE,CAAC;AAEzD,IAAM,eAAe,GAAG,UAAC,KAAU,EAAE,QAAgB,EAAE,SAAiB;IAAjB,0BAAA,EAAA,iBAAiB;IACvE,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,IAAI,SAAS,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnD,CAAC,CAAC;AAEF,IAAM,eAAe,GAAG,UAAC,KAAU;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC,CAAC;AAEF,IAAM,mBAAmB,GAAG,UAAC,KAAU;IACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG,UAAC,KAAU;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,IAAM,4BAA4B,GAAG;;IACpC,IAAM,MAAM,GAAG,CAAA,MAAA,sCAAe,CAAC,eAAe,sFAAI,KAAI,EAAE,CAAC;IACzD,IAAM,QAAQ,GAAG,eAAe,CAC/B,MAAM,CAAC,0BAA0B,CAAC;WAC/B,MAAM,CAAC,yBAAyB,CAAC;WACjC,OAAO,CAAC,GAAG,CAAC,wBAAwB;WACpC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CACtC,IAAI,6BAA6B,CAAC;IACnC,IAAM,MAAM,GAAG,eAAe,CAC7B,MAAM,CAAC,yBAAyB,CAAC;WAC9B,MAAM,CAAC,sBAAsB,CAAC;WAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB;WACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB;WAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CACtC,CAAC;IACF,IAAM,SAAS,GAAG,eAAe,CAChC,MAAM,CAAC,8BAA8B,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAClF,+BAA+B,CAC/B,CAAC;IACF,IAAM,YAAY,GAAG,eAAe,CACnC,MAAM,CAAC,iCAAiC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EACxF,kCAAkC,CAClC,CAAC;IACF,IAAM,cAAc,GAAG,eAAe,CACrC,MAAM,CAAC,mCAAmC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAC5F,oCAAoC,EACpC,IAAI,CACJ,CAAC;IACF,IAAM,UAAU,GAAG,MAAA,MAAM,CAAC,2BAA2B,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAChG,IAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ;QAC7C,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG;QAC1E,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC;IAExB,OAAO,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,YAAY,cAAA,EAAE,cAAc,gBAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AACvF,CAAC,CAAC;AAEF,IAAM,qBAAqB,GAAG,UAAC,QAAc,EAAE,QAAgB;IAC9D,IAAM,IAAI,GAAQ;QACjB,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;KACxB,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,GAAG,GAAG;QACV,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QAChC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;KAC/C,CAAC;IACF,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,IAAM,0BAA0B,GAAG,UAAC,KAAU;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD,IAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAEjF,OAAO;QACN,GAAG,EAAE,EAAE,IAAI,SAAS;QACpB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS;QAChD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7C,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAC/C,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7C,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;QAC/C,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,KAAK;QAClC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;QACzC,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;QACjD,eAAe,EAAE,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC;KAC3D,CAAC;AACH,CAAC,CAAC;AAEF,IAAM,qCAAqC,GAAG;;IAC7C,IAAM,MAAM,GAAG,CAAA,MAAA,sCAAe,CAAC,eAAe,sFAAI,KAAI,EAAE,CAAC;IACzD,IAAM,QAAQ,GAAG,eAAe,CAC/B,MAAM,CAAC,kCAAkC,CAAC;WACvC,MAAM,CAAC,mCAAmC,CAAC;WAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC;WAC5C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAChD,IAAI,8BAA8B,CAAC;IACpC,IAAM,MAAM,GAAG,eAAe,CAC7B,MAAM,CAAC,kCAAkC,CAAC;WACvC,MAAM,CAAC,+BAA+B,CAAC;WACvC,OAAO,CAAC,GAAG,CAAC,gCAAgC;WAC5C,OAAO,CAAC,GAAG,CAAC,6BAA6B;WACzC,MAAM,CAAC,yBAAyB,CAAC;WACjC,MAAM,CAAC,sBAAsB,CAAC;WAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB;WACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB;WAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CACtC,CAAC;IACF,IAAM,SAAS,GAAG,eAAe,CAChC,MAAM,CAAC,uCAAuC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,qCAAqC,EACpG,wCAAwC,CACxC,CAAC;IACF,IAAM,YAAY,GAAG,eAAe,CACnC,MAAM,CAAC,0CAA0C,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAC1G,2CAA2C,CAC3C,CAAC;IACF,IAAM,cAAc,GAAG,eAAe,CACrC,MAAM,CAAC,4CAA4C,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAC9G,6CAA6C,EAC7C,IAAI,CACJ,CAAC;IACF,IAAM,UAAU,GAAG,MAAA,MAAM,CAAC,oCAAoC,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAClH,IAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ;QAC7C,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG;QAC1E,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC;IAExB,OAAO,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,YAAY,cAAA,EAAE,cAAc,gBAAA,EAAE,OAAO,SAAA,EAAE,CAAC;AACvF,CAAC,CAAC;AAEF,IAAM,8BAA8B,GAAG,UAAC,QAAc,EAAE,QAAgB;IACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,OAAO;QACN,GAAG,EAAE;YACJ,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;YAC3B,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;SAC1C;KACD,CAAC;AACH,CAAC,CAAC;AAEF,IAAM,iCAAiC,GAAG,UAAC,KAAU;;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,KAAK,mCAAI,KAAK,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACjF,IAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnG,OAAO;QACN,GAAG,EAAE,EAAE,IAAI,SAAS;QACpB,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,IAAI,EAAE,IAAI,IAAI,SAAS;QACvB,QAAQ,UAAA;KACR,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,kBAAkB,CAAC,aAA4B;IAC9D,aAAa,CAAC,OAAO,CAAC;QACrB,0BAA0B,EAAE;YAC3B,QAAQ,EAAE;;;;;oCACG,qBAAM,uBAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,CAAC,EAAC,IAAI,EAAE,mBAAmB,EAAC,EAAE,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAC,EAAC,CAAC,EAAC,CAAC,EAAA;;gCAA1H,KAAK,GAAG,SAAkH;qCAE1H,KAAK,CAAC,MAAM,EAAZ,wBAAY;gCACf,qBAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,GAAG,EAAR,CAAQ,CAAC,CAAC,EAAA;;gCAAjE,SAAiE,CAAC;gCAClE,qBAAM,uBAAK,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,EAAC,EAAC,CAAC,EAAA;;gCAA3D,SAA2D,CAAC;;oCAG7D,sBAAO,IAAI,EAAC;;;;aACZ;SACD;QACD,YAAY,EAAE;YACb,QAAQ,EAAE;;;;;;gCACL,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;gCACxC,qBAAM,8BAAQ,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAC,CAAC,EAAA;;gCAA3E,QAAQ,GAAG,SAAgE;qCAE3E,QAAQ,CAAC,MAAM,EAAf,wBAAe;gCAClB,qBAAM,8BAAQ,CAAC,UAAU,CAAC,EAAC,GAAG,EAAE,EAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,EAAC,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAC,CAAC,EAAA;;gCAA3F,SAA2F,CAAC;;oCAG7F,sBAAO,IAAI,EAAC;;;;aACZ;SACD;QACD,0BAA0B,EAAE;YAC3B,KAAK,EAAE,IAAI,sBAAY,CAAC;gBACvB,IAAI,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,IAAI;iBACd;aACD,CAAC;YACF,QAAQ,EAAE;;;;;;;gCACH,KAAiF,4BAA4B,EAAE,EAA7G,MAAM,YAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,cAAc,oBAAA,EAAE,OAAO,aAAA,CAAoC;gCACtH,IAAI,CAAC,OAAO,EAAE,CAAC;oCACd,sBAAO,IAAI,EAAC;gCACb,CAAC;gCAEK,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gCACpD,IAAI,OAAO,KAAK,uBAAuB,IAAI,OAAO,KAAK,uBAAuB,EAAE,CAAC;oCAChF,sBAAO,IAAI,EAAC;gCACb,CAAC;gCAEA,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oCAC1B,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;oCAC7D,sBAAO,KAAK,EAAC;gCACd,CAAC;gCAEc,qBAAM,8BAAQ,CAAC,OAAO,CAAC;wCACrC,IAAI,EAAE;4CACL,GAAG,EAAE,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;yCAC5D;qCACD,CAAC,EAAA;;gCAJI,MAAM,GAAG,SAIb;gCACI,OAAO,GAAI,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,eAAsB,CAAC;gCAClD,YAAY,GAAG,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,CAAC;gCACtD,YAAY,GAAG,eAAe,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,CAAC;gCACzD,UAAU,GAAG,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gCAClD,QAAQ,GAAG,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;gCAEjE,IAAI,YAAY,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;oCACxC,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gCACtE,CAAC;gCAEG,QAAQ,GAAG,YAAY,CAAC;gCACxB,SAAS,GAAG,CAAC,CAAC;gCACd,WAAW,GAAG,KAAK,CAAC;gCAClB,MAAM,GAAG;oCACd,UAAU,EAAE,MAAA,sCAAe,CAAC,aAAa,sFAAI;oCAC7C,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oCAClD,OAAO,EAAE,OAAO;oCAChB,UAAU,EAAE,IAAI,IAAI,EAAE;oCACtB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;iCACnC,CAAC;gCAEO,CAAC,GAAG,CAAC;;;qCAAE,CAAA,CAAC,GAAG,IAAI,CAAA;gCACjB,KAAK,GAAG,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCACxC,qBAAM,kDAAiB,CAAC,IAAI,CAAC,KAAK,EAAE;wCACnD,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;wCAC9B,KAAK,EAAE,SAAS;qCAChB,CAAC,EAAA;;gCAHI,OAAO,GAAG,SAGd;gCAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oCACrB,wBAAM;gCACP,CAAC;gCAEK,cAAc,GAAG,OAAO;qCAC5B,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,0BAA0B,CAAC,KAAK,CAAC,EAAjC,CAAiC,CAAC;qCAC/C,MAAM,CAAC,OAAO,CAAC,CAAC;qCAEd,cAAc,CAAC,MAAM,EAArB,wBAAqB;gCACxB,qBAAM,eAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAA,EAAE,EAAE;wCAC/D,OAAO,EAAE;4CACR,cAAc,EAAE,kBAAkB;4CAClC,8BAA8B,EAAE,MAAM;4CACtC,oBAAoB,EAAE,MAAM;4CAC5B,WAAW,EAAE,MAAM;yCACnB;wCACD,OAAO,EAAE,KAAK;qCACd,CAAC,EAAA;;gCARF,SAQE,CAAC;gCACH,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC;;;gCAG9B,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCAC9C,IAAI,SAAS,EAAE,CAAC;oCACf,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC;oCAC1D,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;oCACtD,WAAW,GAAG,IAAI,CAAC;gCACpB,CAAC;gCAED,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;oCAChC,wBAAM;gCACP,CAAC;;;gCArCwB,CAAC,EAAE,CAAA;;;qCAwCxB,WAAW,EAAX,wBAAW;gCACR,WAAW,GAAG,CAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,GAAG;oCACvC,CAAC,CAAC,EAAE,GAAG,EAAG,MAAc,CAAC,GAAG,EAAE;oCAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;gCACpC,qBAAM,8BAAQ,CAAC,SAAS,CACvB,WAAW,EACX;wCACC,IAAI,EAAE;4CACL,IAAI,EAAE,sBAAsB;4CAC5B,gCAAgC,EAAE,QAAQ;4CAC1C,gCAAgC,EAAE,QAAQ;4CAC1C,8BAA8B,EAAE,IAAI,IAAI,EAAE;4CAC3C,iCAAiC,EAAE,SAAS;yCAC5C;qCACD,CACD,EAAA;;gCAXA,SAWA,CAAC;;oCAGH,sBAAO,IAAI,EAAC;;;;aACZ;SACD;QACD,4BAA4B,EAAE;YAC7B,KAAK,EAAE,IAAI,sBAAY,CAAC;gBACvB,IAAI,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,IAAI;iBACd;aACD,CAAC;YACF,QAAQ,EAAE;;;;;;;gCACH,KAAiF,qCAAqC,EAAE,EAAtH,MAAM,YAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAE,SAAS,eAAA,EAAE,YAAY,kBAAA,EAAE,cAAc,oBAAA,EAAE,OAAO,aAAA,CAA6C;gCAC/H,IAAI,CAAC,OAAO,EAAE,CAAC;oCACd,sBAAO,IAAI,EAAC;gCACb,CAAC;gCAEK,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gCACpD,IAAI,OAAO,KAAK,uBAAuB,IAAI,OAAO,KAAK,uBAAuB,EAAE,CAAC;oCAChF,sBAAO,IAAI,EAAC;gCACb,CAAC;gCAED,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oCAC1B,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;oCAC1E,sBAAO,KAAK,EAAC;gCACd,CAAC;gCAEc,qBAAM,8BAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,EAAA;;gCAAvE,MAAM,GAAG,SAA8D;gCACvE,OAAO,GAAI,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,eAAsB,CAAC;gCAClD,YAAY,GAAG,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,CAAC;gCACtD,YAAY,GAAG,eAAe,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,CAAC;gCACxD,UAAU,GAAG,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gCAClD,QAAQ,GAAG,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;gCAEjE,IAAI,YAAY,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;oCACxC,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gCACtE,CAAC;gCAEG,QAAQ,GAAG,YAAY,CAAC;gCACxB,SAAS,GAAG,CAAC,CAAC;gCACd,WAAW,GAAG,KAAK,CAAC;gCAClB,MAAM,GAAG;oCACd,UAAU,EAAE,MAAA,sCAAe,CAAC,aAAa,sFAAI;oCAC7C,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oCAClD,OAAO,EAAE,OAAO;oCAChB,UAAU,EAAE,IAAI,IAAI,EAAE;oCACtB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;iCACnC,CAAC;gCAEO,CAAC,GAAG,CAAC;;;qCAAE,CAAA,CAAC,GAAG,IAAI,CAAA;gCACjB,KAAK,GAAG,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCACjD,qBAAM,sDAAoB,CAAC,IAAI,CAAC,KAAK,EAAE;wCACtD,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;wCACzB,KAAK,EAAE,SAAS;qCAChB,CAAC,EAAA;;gCAHI,OAAO,GAAG,SAGd;gCAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oCACrB,wBAAM;gCACP,CAAC;gCAEK,cAAc,GAAG,OAAO;qCAC5B,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,iCAAiC,CAAC,KAAK,CAAC,EAAxC,CAAwC,CAAC;qCACtD,MAAM,CAAC,OAAO,CAAC,CAAC;qCAEd,cAAc,CAAC,MAAM,EAArB,wBAAqB;gCACxB,qBAAM,eAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAA,EAAE,EAAE;wCAC/D,OAAO,EAAE;4CACR,cAAc,EAAE,kBAAkB;4CAClC,uCAAuC,EAAE,MAAM;4CAC/C,8BAA8B,EAAE,MAAM;4CACtC,oBAAoB,EAAE,MAAM;4CAC5B,WAAW,EAAE,MAAM;yCACnB;wCACD,OAAO,EAAE,KAAK;qCACd,CAAC,EAAA;;gCATF,SASE,CAAC;gCACH,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC;;;gCAG9B,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCAC9C,IAAI,SAAS,EAAE,CAAC;oCACf,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;oCACrD,QAAQ,GAAG,eAAe,CAAE,SAAiB,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;oCAC/D,WAAW,GAAG,IAAI,CAAC;gCACpB,CAAC;gCAED,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;oCAChC,wBAAM;gCACP,CAAC;;;gCAtCwB,CAAC,EAAE,CAAA;;;qCAyCzB,WAAW,EAAX,wBAAW;gCACd,qBAAM,8BAAQ,CAAC,SAAS,CACvB,EAAE,IAAI,EAAE,4BAA4B,EAAE,EACtC;wCACC,IAAI,EAAE;4CACL,gCAAgC,EAAE,QAAQ;4CAC1C,gCAAgC,EAAE,QAAQ;4CAC1C,8BAA8B,EAAE,IAAI,IAAI,EAAE;4CAC1C,iCAAiC,EAAE,SAAS;yCAC5C;qCACD,CACD,EAAA;;gCAVD,SAUC,CAAC;;oCAGH,sBAAO,IAAI,EAAC;;;;aACZ;SACD;QACD,oBAAoB,EAAE;YACrB,KAAK,EAAE,IAAI,sBAAY,CAAC;gBACvB,IAAI,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,IAAI;iBACd;aACD,CAAC;YACF,QAAQ,EAAE,UAAe,IAAY;;;;;;;gCACpC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;oCACtC,sBAAO,IAAI,EAAC;gCACb,CAAC;gCAEY,qBAAM,uDAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAA;;gCAA/D,MAAM,GAAG,SAAsD;;;;gCAG5D,kBAAgB,0BAA0B,CAAC,MAAM,CAAC,CAAC;gCACnD,cAAc,GAAG,4BAA4B,CAAC,MAAM,EAAE,eAAa,CAAC,CAAC;gCAC3E,MAAM,CAAC,eAAe,GAAG,cAAc,CAAC;gCACxC,MAAM,CAAC,aAAa,GAAG,eAAa,CAAC;gCAErC,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,KAAU,EAAE,KAAa;oCAChE,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAA,EAAE,CAAC;wCAChB,KAAK,CAAC,EAAE,GAAG,YAAK,KAAK,CAAE,CAAC;oCACzB,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEH,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;oCAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;wCACb,OAAO;oCACR,CAAC;oCAED,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;wCACrC,IAAM,KAAK,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,EAA7B,CAA6B,CAAC,CAAC;wCAC1F,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,EAAE,CAAC;4CACf,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;wCAC9B,CAAC;oCACF,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEH,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,KAAU;;oCACzC,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAA,EAAE,CAAC;wCACvB,OAAO;oCACR,CAAC;oCAED,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oCACnD,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oCACnC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;oCAC1B,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wCAChD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;4CACzB,KAAK,CAAC,YAAY,aAAI,GAAC,SAAS,CAAC,CAAC,CAAC,IAAG,CAAC,KAAC,CAAC;wCAC1C,CAAC;6CACI,CAAC;4CACL,KAAK,CAAC,YAAY,aAAI,GAAC,SAAS,CAAC,CAAC,CAAC,IAAG,KAAK,CAAC,YAAY,KAAC,CAAC;wCAC3D,CAAC;oCACF,CAAC;gCACF,CAAC,CAAC,CAAC;qCAEC,CAAA,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,EAA5G,yBAA4G;gCAC3G,cAAY,EAAE,CAAC;gCACb,2BAAyB,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,KAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAA5C,CAA4C,CAAC,CAAC;gCAE5H,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;gCAE9C,wBAAsB,CAAC,OAAO,CAAC,UAAC,KAAU;oCACzC,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;wCAC5E,WAAS,GAAG,IAAA,kBAAS,EAAC,WAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;oCACtD,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEG,aAAW,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gCACpE,SAAS,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,EAAT,CAAS,CAAC,CAAC;gCAC9D,oBAAkB,EAAE,CAAC;gCAC3B,SAAS,CAAC,OAAO,CAAC,UAAA,CAAC;oCAClB,iBAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCAC9B,CAAC,CAAC,CAAC;gCAEG,UAAU,GAAG,UAAQ,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,iBAAe,CAAC,EAAE,CAAC,IAAI,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,EAAhD,CAAgD,CAAC,CAAC;gCAClF,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,UAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAA3B,CAA2B,CAAC,CAAC;gCACnE,cAAc,GAAG,UAAQ,CAAC,MAAM,CAAC,CAAC,wCAAK,UAAU,kBAAK,aAAa,UAAE,CAAC,CAAC,SAAS,CAAC;gCAEnF,YAAU,IAAI,CAAC;gCACnB,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;oCAC3B,SAAO,GAAG,EAAE,CAAC;oCACb,cAAc,CAAC,OAAO,CAAC,UAAA,SAAS;wCAC/B,IAAI,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;wCAElC,IAAI,CAAC,WAAW,EAAE,CAAC;4CAClB,OAAO;wCACR,CAAC;wCAED,IAAI,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;4CAC3C,IAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;4CAC9D,WAAW,GAAG,QAAQ,IAAI,WAAW,CAAC;wCACvC,CAAC;wCAED,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;4CACnC,SAAO,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCACtE,CAAC;6CACI,CAAC;4CACL,SAAO,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCAC7D,CAAC;oCACF,CAAC,CAAC,CAAC;gCACJ,CAAC;gCAEK,cAAc,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK;oCAC3D,IAAM,YAAY,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;yCACvC,GAAG,CAAC,UAAA,GAAG;wCACP,IAAI,CAAC,GAAG,EAAE,CAAC;4CACV,OAAO,IAAI,CAAC;wCACb,CAAC;wCAED,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;4CACnC,OAAO,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wCAC7C,CAAC;wCAED,OAAO,GAAG,CAAC;oCACZ,CAAC,CAAC;yCACD,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAAC;oCAEnB,6BAAW,KAAK,KAAE,MAAM,EAAE,YAAY,IAAE;gCACzC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,EAA3B,CAA2B,CAAC,CAAC;gCAEhD,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;gCAEjC,WAAW,GAAsB;oCACpC,KAAK,EAAE,CAAC;oCACR,IAAI,EAAE,CAAC;oCACP,MAAM,EAAE,WAAS;oCACjB,IAAI,EAAE,SAAO;iCACb,CAAC;gCAEE,YAAU,EAAE,CAAC;gCACb,sBAAoB,EAAE,CAAC;gCACvB,iBAAe,EAAE,CAAC;gCAEtB,wBAAsB;qCACpB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAnC,CAAmC,CAAC;qCAChD,OAAO,CAAC,UAAA,GAAG;oCACX,IAAI,CAAC,mBAAiB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,MAAK,GAAG,CAAC,SAAS,EAA9B,CAA8B,CAAC,EAAE,CAAC;wCAClE,mBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oCAC7B,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEJ,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS;oCAC7C,IAAI,GAAG,GAAG,EAAE,CAAC;oCACb,IAAI,cAAc,GAAG,KAAK,CAAC;oCAE3B,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,MAAW;wCACzC,IAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;wCAEvD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;4CACrB,OAAO;wCACR,CAAC;wCAED,OAAO,CAAC,OAAO,CAAC,UAAA,IAAI;4CACnB,IAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;4CAC3C,IAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;4CACjD,IAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;4CAE3D,IAAI,IAAI,EAAE,CAAC;gDACV,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4CAChB,CAAC;4CAED,IAAI,aAAa,EAAE,CAAC;gDACnB,cAAc,GAAG,IAAI,CAAC;gDACtB,IAAM,MAAI,GAAG,wBAAsB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,IAAI,EAApB,CAAoB,CAAC,CAAC;gDACpE,IAAI,MAAI,IAAI,CAAC,mBAAiB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,MAAK,MAAI,CAAC,SAAS,EAA/B,CAA+B,CAAC,EAAE,CAAC;oDAC3E,mBAAiB,CAAC,IAAI,CAAC,MAAI,CAAC,CAAC;gDAC9B,CAAC;4CACF,CAAC;wCACF,CAAC,CAAC,CAAC;oCACJ,CAAC,CAAC,CAAC;oCAEH,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;wCAChB,IAAM,SAAS,GAAG,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC;wCAC7B,IAAI,cAAc,EAAE,CAAC;4CACpB,cAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wCAC9B,CAAC;6CACI,CAAC;4CACL,SAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wCACzB,CAAC;oCACF,CAAC;gCACF,CAAC,CAAC,CAAC;gCAES,qBAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,SAAO,EAAE,cAAY,EAAE,mBAAiB,EAAE,wBAAsB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,EAAG,MAAM,CAAC,UAAU,CAAC,EAAA;;gCAAvU,GAAG,GAAG,SAAiU;qCAEzU,CAAA,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA,EAAb,yBAAa;gCACZ,YAAU,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gCACzB,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gCAEjC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oCAC7B,0BAA0B,CAAC,SAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;gCAC7D,CAAC;gCAEK,YAAY,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,uBAC1D,IAAI,KACP,EAAE,EAAE,IAAI,CAAC,UAAU,EACnB,SAAS,EAAE,QAAQ,EACnB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,EAC5C,cAAc,EAAE,QAAQ,EACxB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,EACtC,IAAI,EAAE,IAAI,IACT,EAR4D,CAQ5D,CAAC,CAAC;gCAEE,iBAAe,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,MAAM,CAAO,YAAa,CAAC,CAAC;qCAExF,CAAA,MAAM,CAAC,IAAI,KAAK,MAAM,CAAA,EAAtB,yBAAsB;gCACzB,cAAY,CAAC,OAAO,CAAC,UAAA,KAAK;oCACzB,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;wCAC5G,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAE,CAAC,OAAO,CAAC,UAAA,MAAM;4CACrF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;wCACtD,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;wCACjH,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wCACrG,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;wCACnH,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wCAC/G,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,EAAE,CAAC;wCACzG,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;wCACjE,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;wCAC7E,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;wCAC7D,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,KAAK,gBAAgB,EAAE,CAAC;wCACrF,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCACtD,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,MAAM,CAAC,EAAE,CAAC;wCAC1E,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wCACzD,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;wCACxE,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wCAC1D,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;wCAC5E,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;wCACzE,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;wCAC7E,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wCAC1D,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,eAAe,EAAE,CAAC;wCACjF,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wCAC3D,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;wCAC7E,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAjD,CAAiD,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;4CACpF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;wCAChE,CAAC,CAAC,CAAC;oCACJ,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEC,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gCAC1B,OAAK,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC,CAAC;gCACnE,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;gCAC/B,EAAE,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC;gCAEpC,eAAa,CAAC,CAAC;gCACf,QAAM,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAEhC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,IAAI;oCACV,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;gCACtC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;gCAE1C,YAAU,IAAI,CAAC,CAAC;gCAChB,KAAG,GAAG,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAE5B,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,IAAI;oCACV,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC;gCACnC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCAE9C,YAAU,IAAI,CAAC,CAAC;gCAChB,KAAG,GAAG,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAEtB,cAAY,CAAC,eAAa,IAAI,eAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCACxD,YAAoB,EAAE,CAAC;gCAE7B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,KAAK;oCAC9B,SAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gCAChC,CAAC,CAAC,CAAC;gCAEH,IAAI,WAAS,EAAE,CAAC;oCACf,eAAa,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,GAAG;wCAC9B,SAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,iBAAU,GAAG,GAAG,CAAC,CAAE,CAAC,CAAC;oCACjD,CAAC,CAAC,CAAC;gCACJ,CAAC;qCACI,CAAC;oCACL,cAAY,CAAC,OAAO,CAAC,UAAA,KAAK;wCACzB,SAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oCAChC,CAAC,CAAC,CAAC;gCACJ,CAAC;gCAED,SAAO,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,SAAS;oCACjC,KAAG,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;gCAC3C,CAAC,CAAC,CAAC;gCAEH,YAAU,IAAI,CAAC,CAAC;gCAChB,KAAG,GAAG,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAEtB,aAAa,GAAG,IAAA,iBAAQ,EAAC,SAAO,IAAI,EAAE,CAAC,CAAC;gCAE9C,aAAa,CAAC,OAAO,CAAC,UAAA,MAAM;oCAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;oCAEnB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,KAAK;;wCAC9B,cAAc,CAAC,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,0CAAG,KAAK,CAAC,EAAE,CAAC,mCAAI,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;wCACvF,UAAU,IAAI,CAAC,CAAC;oCACjB,CAAC,CAAC,CAAC;oCAEH,IAAI,WAAS,EAAE,CAAC;wCACf,IAAM,WAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,eAAa,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;wCAC9F,eAAa,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,MAAM;4CACjC,IAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,EAAE,WAAS,EAAE,MAAM,CAAC,CAAC;4CACtE,IAAM,gBAAgB,GAAG,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;4CACrF,cAAc,CAAC,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;4CACpG,UAAU,IAAI,CAAC,CAAC;wCACjB,CAAC,CAAC,CAAC;oCACJ,CAAC;yCACI,CAAC;wCACL,cAAY,CAAC,OAAO,CAAC,UAAA,KAAK;;4CACzB,cAAc,CAAC,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAA,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,mCAAI,EAAE,EAAE,KAAK,CAAC,CAAC;4CACvE,UAAU,IAAI,CAAC,CAAC;wCACjB,CAAC,CAAC,CAAC;oCACJ,CAAC;oCAED,YAAU,IAAI,CAAC,CAAC;oCAChB,KAAG,GAAG,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAC7B,CAAC,CAAC,CAAC;;;;gCAGW,qBAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAA;;gCAApC,MAAM,GAAG,SAA2B;;;;gCACtB,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,CAAA;;;;gCAAvB,KAAK;gCACb,qBAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EACzB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,WAAW,EAC9E,EAAE,EACF,6BACI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,uEACrB,GAAG,MAAM,CAAC,WAAW,GAAG,kDACxB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,qIAErB,EAClB;wCACC;4CACC,QAAQ,EAAE,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,OAAO;4CACpF,OAAO,EAAE,MAAM;yCACf;qCACD,EACD,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EACtC,EAAE,CACF,EAAA;;gCAjBD,SAiBC,CAAC;;;;;;;;;;;;;;;;;;;gCAIH,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAG,CAAC,CAAC;;;;qCAGxC,CAAA,MAAM,CAAC,IAAI,KAAK,OAAO,CAAA,EAAvB,yBAAuB;gCAC/B,cAAY,CAAC,OAAO,CAAC,UAAA,KAAK;oCACzB,SAAO,CAAC,OAAO,CAAC,UAAA,MAAM;wCACrB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oCAC/C,CAAC,CAAC,CAAC;gCACJ,CAAC,CAAC,CAAC;gCAEC,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gCAC1B,OAAK,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,aAAa,EAAE,KAAK,EAAC,CAAC,EAAC,CAAC,CAAC;gCACpE,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;gCAC/B,EAAE,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC;gCAEpC,eAAa,CAAC,CAAC;gCACf,GAAG,GAAG,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAEhC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,IAAI;oCACV,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;gCACtC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;gCAE1C,YAAU,IAAI,CAAC,CAAC;gCAChB,GAAG,GAAG,IAAE,CAAC,MAAM,CAAC,YAAU,CAAC,CAAC;gCAE5B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,IAAI;oCACV,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC;gCACnC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCAE9C,YAAU,IAAI,CAAC,CAAC;gCAEZ,IAAI,GAAG,IAAA,iBAAQ,EAAC,SAAO,CAAC,CAAC;gCACzB,WAAS,EAAE,CAAC;gCAChB,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG;oCACf,YAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAE,EAAE,YAAU,EAAE,CAAC,EAAE,GAAG,EAAE,cAAY,CAAC,CAAC;oCAClF,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,QAAM,EAAE,cAAY,CAAC,CAAC;gCACnE,CAAC,CAAC,CAAC;gCAEH,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCAC5C,IAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gCACrC,CAAC;gCAEG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;;;;gCAGP,qBAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAA;;gCAApC,MAAM,GAAG,SAA2B;;;;gCACtB,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,CAAA;;;;gCAAvB,KAAK;gCACb,qBAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EACzB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,WAAW,EAC9E,EAAE,EACF,6BACI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,uEACrB,GAAG,MAAM,CAAC,WAAW,GAAG,kDACxB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,sLAGrB,EAClB;wCACC;4CACC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO;4CACrI,OAAO,EAAG,MAAM;yCAChB;qCACD,EACD,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EACtC,EAAE,CACF,EAAA;;gCAlBD,SAkBC,CAAC;;;;;;;;;;;;;;;;;;;gCAIH,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAG,CAAC,CAAA;;;gCAC9C,CAAC;;;qCAEM,CAAA,MAAM,CAAC,IAAI,KAAK,OAAO,CAAA,EAAvB,yBAAuB;gCAC3B,qBAAmB,EAAE,CAAC;gCACtB,sBAAoB,EAAE,CAAC;gCACvB,cAAY,EAAE,CAAC;gCACf,sBAAoB,EAAE,CAAC;gCACvB,qBAAmB,EAAE,CAAC;gCAE1B,+CAA+C;gCAC/C,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;oCAC1C,SAAO,CAAC,OAAO,CAAC,UAAA,MAAM;wCACrB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;4CAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;wCACxB,CAAC;6CACI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;4CAC/B,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;wCACxB,CAAC;6CACI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;4CAChC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;wCACxB,CAAC;6CACI,CAAC;4CACL,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;wCACxB,CAAC;wCAED,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;oCACzB,CAAC,CAAC,CAAC;wDAGM,CAAC;wCACT,IAAI,MAAM,GAAG,SAAO,CAAC,CAAC,CAAC,CAAC;wCACxB,IAAI,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAApD,CAAoD,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4CAC1F,IAAI,SAAO,GAAG,SAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAApD,CAAoD,CAAC,CAAC;4CAEtF,MAAM,CAAC,IAAI,CAAC,SAAO,CAAC;iDAClB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,KAAK,EAAX,CAAW,CAAC;iDACxB,OAAO,CAAC,UAAA,GAAG;gDACX,SAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;4CAC7B,CAAC,CAAC,CAAC;4CAEJ,SAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,6BAA6B;wCACpD,CAAC;;oCAbF,6BAA6B;oCAC7B,KAAS,CAAC,GAAG,SAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gDAAnC,CAAC;qCAaT;gCACF,CAAC;gCAGG,UAAU,GAAG,IAAA,iBAAQ,EAAC,SAAO,CAAC,CAAC;gCACnC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;oCACxB,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;oCACtB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oCACvB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;oCACxB,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;oCAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oCAEvB,IAAI,QAAQ,GAAG,EAAE,CAAC;oCAClB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;wCAClC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oCACjC,CAAC,CAAC,CAAC;oCAEH,IAAI,CAAC,mBAAiB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAA9C,CAA8C,CAAC,EAAE,CAAC;wCAClF,mBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oCAClC,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEH,+BAA+B;gCAC/B,UAAU,GAAG,IAAA,iBAAQ,EAAC,SAAO,CAAC,CAAC;gCAC/B,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;oCACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;yCACrB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,EAAnI,CAAmI,CAAC;yCAChJ,OAAO,CAAC,UAAA,GAAG;wCACX,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oCACxB,CAAC,CAAC,CAAC;oCAEJ,IAAI,OAAO,GAAG,EAAE,CAAC;oCACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;wCAClC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oCAChC,CAAC,CAAC,CAAC;oCAEH,IAAI,CAAC,kBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAA7C,CAA6C,CAAC,EAAE,CAAC;wCAChF,kBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oCAChC,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEH,yBAAyB;gCACzB,0EAA0E;gCAC1E,kBAAgB,CAAC,OAAO,CAAC,UAAA,MAAM;oCAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wCAClB,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;oCAC/B,CAAC;yCACI,CAAC;wCACL,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;4CACxC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAG,kEAAkE;gDAC5F,GAAG,EAAE,MAAM,CAAC,GAAG;gDACf,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gDACrB,MAAM,EAAE,MAAM,CAAC,MAAM;6CACrB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4CAC1D,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;wCACxE,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;4CAC7C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;gDACvB,GAAG,EAAE,MAAM,CAAC,GAAG;gDACf,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,MAAM,EAAE,MAAM,CAAC,MAAM;6CACrB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4CAC1D,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;wCACrE,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;4CAC3C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;gDACvB,GAAG,EAAE,MAAM,CAAC,GAAG;gDACf,IAAI,EAAE,MAAM,CAAC,IAAI;6CACjB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4CAC1D,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;wCAClE,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;4CAC3C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC;gDACvB,GAAG,EAAE,MAAM,CAAC,GAAG;6CACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4CAC1D,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wCAC/D,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;4CAC5C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,IAAI,EAAE,MAAM,CAAC,IAAI;6CACjB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;4CACxE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;gDAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,IAAI,EAAE,MAAM,CAAC,IAAI;6CACjB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;4CACxE,MAAM,CAAC,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;wCAC3K,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;4CAC7C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gDACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAG,oCAAoC;6CAC9D,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4CAC1D,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wCAC5D,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;4CAC/C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;6CACjB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;4CAAA,CAAC;4CACnF,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;wCAC9D,CAAC;6CACI,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;4CAC5C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;gDACvB,IAAI,EAAE,MAAM,CAAC,IAAI;6CACjB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;4CAC1D,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wCAC5C,CAAC;oCACF,CAAC;gCACF,CAAC,CAAC,CAAC;gCAEH,kBAAgB,GAAG,kBAAgB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,IAAI,EAAP,CAAO,CAAC;qCACtD,MAAM,CAAC,kBAAgB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAnC,CAAmC,CAAC,CAAC,CAAC;gCAEnG,gDAAgD;gCAChD,kBAAgB,CAAC,OAAO,CAAC,UAAA,IAAI;oCAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;oCACjB,IAAI,aAAa,GAAG,EAAE,CAAC;oCACvB,IAAI,WAAW,GAAG,EAAE,CAAC;oCACrB,IAAI,YAAY,GAAG,EAAE,CAAC;oCAEtB,mBAAiB,CAAC,OAAO,CAAC,UAAA,KAAK;wCAC9B,IAAI,MAAM,GAAG,SAAO,CAAC,IAAI,CAAC,UAAA,CAAC;4CAC1B,IAAI,KAAK,GAAG,IAAI,CAAC;4CAEjB,yBAAyB;4CACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gDAC7B,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oDAC/B,KAAK,GAAG,KAAK,CAAC;gDACf,CAAC;4CACF,CAAC,CAAC,CAAC;4CAEH,wBAAwB;4CACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,YAAY,EAA5D,CAA4D,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gDACxG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oDAC9B,KAAK,GAAG,KAAK,CAAC;gDACf,CAAC;4CACF,CAAC,CAAC,CAAC;4CAEH,OAAO,KAAK,CAAC;wCACd,CAAC,CAAC,CAAC;wCAEH,IAAI,MAAM,EAAE,CAAC;4CACZ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4CAErB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gDACjD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC;oDACpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wDACzB,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oDACtC,CAAC;yDACI,CAAC;wDACL,aAAa,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oDACvC,CAAC;oDAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wDACvB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oDACtB,CAAC;yDACI,CAAC;wDACL,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oDACvB,CAAC;oDAED,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC,IAAI,CAAC;gDAChF,CAAC;4CACF,CAAC,CAAC,CAAC;4CAEH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,CAAC,KAAK,KAAK,EAAhB,CAAgB,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gDAC5D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC,MAAM,EAAE,CAAC;oDACpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wDACzB,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oDAClC,CAAC;yDACI,CAAC;wDACL,aAAa,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;oDACnC,CAAC;oDAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wDACvB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oDACtB,CAAC;yDACI,CAAC;wDACL,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oDACvB,CAAC;oDAED,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC,IAAI,CAAC;gDAChF,CAAC;4CACF,CAAC,CAAC,CAAC;wCACJ,CAAC;6CACI,CAAC;4CACL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wCACpB,CAAC;oCACF,CAAC,CAAC,CAAC;oCAEH,8BAA8B;oCAC9B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;wCACzC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;4CACtC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;wCAC3E,CAAC;wCAED,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAA,cAAK,EAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;oCAC7D,CAAC,CAAC,CAAC;oCAEH,kBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oCACrC,WAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCACzB,CAAC,CAAC,CAAC;gCAEH,+BAA+B;gCAC/B,mBAAiB,CAAC,OAAO,CAAC,UAAA,KAAK;oCAC9B,IAAI,aAAa,GAAG,EAAE,CAAC;oCACvB,IAAI,YAAY,GAAG,SAAO,CAAC,MAAM,CAAC,UAAA,CAAC;wCAClC,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;wCAC9E,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,EAA7L,CAA6L,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;4CACxO,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gDAC/B,KAAK,GAAG,KAAK,CAAC;4CACf,CAAC;wCACF,CAAC,CAAC,CAAC;wCACH,OAAO,KAAK,CAAC;oCACd,CAAC,CAAC,CAAC;oCAEH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK;wCAChC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;4CACzB,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gDACzB,aAAa,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAb,CAAa,CAAC;qDAC5D,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,EAAR,CAAQ,CAAC;qDAClB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAAE,CAAC,CAAC,CAAC;gDAE7B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oDAC1B,aAAa,CAAC,KAAK,CAAC,GAAG,IAAA,cAAK,EAAC,aAAa,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gDAC7E,CAAC;4CACF,CAAC;iDACI,CAAC;gDACL,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4CAC1B,CAAC;wCACF,CAAC,CAAC,CAAC;oCACJ,CAAC,CAAC,CAAC;oCAEH,mBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gCACvC,CAAC,CAAC,CAAC;gCAGC,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gCAC1B,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC,CAAC;gCAC3E,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;gCAC/B,EAAE,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC;gCAEpC,UAAU,GAAG,CAAC,CAAC;gCACf,eAAa,CAAC,CAAC;gCACf,QAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gCAEhC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,IAAI;oCACV,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;gCACtC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;gCAE1C,UAAU,IAAI,CAAC,CAAC;gCAChB,KAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gCAE5B,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,IAAI;oCACV,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;oCACrB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,EAAE;iCACR,CAAC;gCACF,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC;gCACnC,KAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCAE9C,UAAU,IAAI,CAAC,CAAC;gCAChB,KAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gCAE5B,2BAA2B;gCAC3B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,KAAK;oCAC9B,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;oCACjD,YAAU,EAAE,CAAC;gCACd,CAAC,CAAC,CAAC;gCAEH,oBAAoB;gCACpB,YAAU,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,MAAM,CAAC;gCAEhE,gCAAgC;gCAChC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,OAAO,CAAC;oCAClD,kBAAgB,CAAC,OAAO,CAAC,UAAA,IAAI;wCAC5B,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;wCAChD,YAAU,EAAE,CAAC;oCACd,CAAC,CAAC,CAAC;gCACJ,CAAC,CAAC,CAAC;gCAEH,qBAAqB;gCACrB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK;oCAChC,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,WAAW,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oCACtE,YAAU,EAAE,CAAC;gCACd,CAAC,CAAC,CAAC;gCAEH,YAAU,GAAG,CAAC,CAAC;gCACf,UAAU,IAAI,CAAC,CAAC;gCAChB,KAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oDAGnB,CAAC;oCACT,IAAI,KAAK,GAAG,mBAAiB,CAAC,CAAC,CAAC,CAAC;4DAExB,CAAC;wCACT,IAAI,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wCAE1D,YAAU,GAAG,CAAC,CAAC;wCACf,KAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wCAE5B,sBAAsB;wCACtB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,QAAQ;4CACjC,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4CACpE,YAAU,EAAE,CAAC;wCACd,CAAC,CAAC,CAAC;wCAEH,sBAAsB;wCACtB,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;wCACjD,YAAU,EAAE,CAAC;wCAEb,6CAA6C;wCAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4CAClD,IAAI,MAAM,GAAG,WAAS,CAAC,CAAC,CAAC,CAAC;4CAC1B,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gDACf,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4CAChF,CAAC;iDACI,CAAC;gDACL,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;4CACpC,CAAC;4CACD,YAAU,EAAE,CAAC;wCACd,CAAC;wCAED,0CAA0C;wCAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4CACrD,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,mBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4CACrG,YAAU,EAAE,CAAC;wCACd,CAAC;wCAED,UAAU,EAAE,CAAC,CAAC,0CAA0C;;oCAlCzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;gDAAjE,CAAC;qCAmCT;;gCAvCF,6DAA6D;gCAC7D,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE;4CAAxC,CAAC;iCAuCT;gCAED,kCAAkC;gCAClC,IAAI,YAAY,EAAE,CAAC;oCAClB,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wCACjD,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wCACnC,KAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wCAC5B,YAAU,GAAG,CAAC,CAAC;wCAEf,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;wCACpE,YAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,qBAAqB;wCAE7D,2CAA2C;wCAC3C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,OAAO,CAAC;4CAClD,YAAU,IAAI,CAAC,CAAC;wCACjB,CAAC,CAAC,CAAC;wCAEH,kBAAgB,CAAC,OAAO,CAAC;4CACxB,YAAU,EAAE,CAAC;wCACd,CAAC,CAAC,CAAC;wCAEH,mCAAmC;wCACnC,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4CACxE,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4CAC1D,KAAG,CAAC,OAAO,CAAC,YAAU,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;4CAC9E,YAAU,EAAE,CAAC;wCACd,CAAC;wCAED,UAAU,EAAE,CAAC,CAAC,0CAA0C;oCACzD,CAAC;gCACF,CAAC;;;;gCAIa,qBAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAA;;gCAApC,MAAM,GAAG,SAA2B;;;;gCACtB,KAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,CAAA;;;;gCAAvB,KAAK;gCACb,qBAAM,IAAI,CAAC,SAAS,CACnB,KAAK,EACL,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,WAAW,EAC9E,EAAE,EACF,qCACK,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,kFACf,MAAM,CAAC,WAAW,6DAClB,IAAI,CAAC,MAAM,CAAC,wIAEhB,EAClB;wCACC;4CACC,QAAQ,EAAE,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,OAAO;4CACpF,OAAO,EAAE,MAAM;yCACf;qCACD,EACD,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EACtC,EAAE,CACF,EAAA;;gCAlBD,SAkBC,CAAC;;;;;;;;;;;;;;;;;;;gCAIH,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAG,CAAC,CAAC;;qCAGhD,sBAAO,IAAI,EAAC;;;;gCAMf,KAAG,CAAC,OAAO,GAAG,wEAAiE,KAAG,CAAC,OAAO,CAAE,CAAC;gCAC7F,MAAM,KAAG,CAAC;qCAGX,sBAAO,IAAI,EAAC;;;;aACZ;SACD;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IACxD,IAAM,iBAAiB,GAAG,UAAC,KAAK,EAAE,KAAK;QACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1C,CAAC;iBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC5C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,CAAC;iBACI,IAAI,KAAK,CAAC,cAAc,KAAK,gBAAgB,EAAE,CAAC;gBACpD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;aACI,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;YAC1E,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;gBACvC,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;YAC/B,CAAC;iBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzB,CAAC;iBACI,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBAC9C,OAAO,IAAA,cAAK,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxF,CAAC;QACF,CAAC;aACI,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACrC,QAAQ,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC9B,KAAK,MAAM;oBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,KAAK,MAAM;oBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,KAAK,UAAU;oBACd,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAClD,KAAK,WAAW;oBACf,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,KAAK,eAAe;oBACnB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,WAAW;oBACf,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;gBACzC;oBACC,OAAO,KAAK,CAAC;YACf,CAAC;QACF,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UAAC,KAAK,EAAE,KAAK;QACtC,OAAO,KAAK,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,EAA/B,CAA+B,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEF,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,sBAAsB;QACtB,IAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS;gBACjC,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;SACI,CAAC;QACL,6BAA6B;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;aACI,CAAC;YACL,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAM,EAAE,EAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAC7F,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,IAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAEjC,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;YACrB,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC;YAC9H,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;YACrB,KAAK,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC;YAC5H,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,EAAE;SACR,CAAC;QAEF,IAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEpF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG;YACvB,GAAG,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;YACpB,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;YACrB,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC;SACvB,CAAC;QAEF,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK;gBAChC,UAAU,IAAI,CAAC,CAAC;gBAChB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE5B,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,UAAU;oBAChC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;wBACrC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;wBAErD,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;4BAClC,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,IAAI;4BACV,IAAI,EAAE,EAAE;yBACR,CAAC;oBACH,CAAC;oBAED,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;wBACzC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;oBACpD,CAAC;yBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;wBAC5C,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;oBAC9C,CAAC;oBAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;wBACtB,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;4BACpC,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;yBACrB,CAAC;oBACH,CAAC;yBACI,IAAI,UAAU,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;wBACxC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;4BACpC,KAAK,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;yBACtB,CAAC;oBACH,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,SAAS;QACT,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK;YAChC,UAAU,IAAI,CAAC,CAAC;YAChB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,UAAU;gBAChC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;oBAEtE,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;wBAClC,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,EAAE;qBACR,CAAC;oBAEF,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;wBACzC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;oBACpD,CAAC;yBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;wBAC5C,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;oBAC9C,CAAC;gBACF,CAAC;gBAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,GAAG,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC;wBACnB,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;wBACrB,MAAM,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACvB,CAAC;gBACH,CAAC;qBACI,IAAI,UAAU,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,GAAG,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC;wBACnB,MAAM,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;wBACvB,KAAK,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACtB,CAAC;gBACH,CAAC;qBACI,CAAC;oBACL,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,GAAG,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC;wBACnB,MAAM,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACvB,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,UAAU,IAAI,CAAC,CAAC;QAEf,IAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACf,IAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,WAAW,CAAC,OAAO,CAAC,UAAA,QAAQ;oBAC3B,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC1F,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACH,CAAC;SACI,CAAC;QACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;YACrB,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC;YAC9H,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;SAChB,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;YACrB,KAAK,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC;YAC5H,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,EAAE;SACR,CAAC;QAEF,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACxF,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEpF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG;YACvB,GAAG,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;YACpB,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;YACrB,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC;SACvB,CAAC;QAEF,UAAU,IAAI,CAAC,CAAC;QAChB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,UAAU;QACV,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,UAAU;YAChC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;YACrD,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;gBAClC,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,EAAE;aACR,CAAC;YAEF,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBACzC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;YACpD,CAAC;iBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC5C,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;YAC9C,CAAC;YAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACtB,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;oBACpC,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;iBACrB,CAAC;YACH,CAAC;iBACI,IAAI,UAAU,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;oBACpC,KAAK,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;iBACtB,CAAC;YACH,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,OAAO;QACP,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,QAAQ;YACxC,UAAU,IAAI,CAAC,CAAC;YAChB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,UAAU;gBAChC,IAAI,KAAK,GAAG,IAAI,CAAC;gBAEjB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACrC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC/H,CAAC;qBACI,CAAC;oBACL,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBAED,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,EAAE,CAAC;oBACzE,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrH,CAAC;qBACI,CAAC;oBACL,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC3C,CAAC;gBAED,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;oBACzC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;gBACpD,CAAC;qBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAC5C,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;gBAC9C,CAAC;gBAED,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;oBAClC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,EAAE;iBACR,CAAC;gBAEF,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACrB,CAAC;gBACH,CAAC;qBACI,IAAI,UAAU,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,KAAK,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACtB,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,SAAS;QACT,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,KAAK;YAChC,UAAU,IAAI,CAAC,CAAC;YAChB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE5B,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,UAAU;gBAChC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;oBAEtE,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;wBAClC,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,EAAE;qBACR,CAAC;oBAEF,IAAI,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;wBACzC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;oBACpD,CAAC;yBACI,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;wBAC5C,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;oBAC9C,CAAC;gBACF,CAAC;gBAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,GAAG,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC;wBACnB,IAAI,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;wBACrB,MAAM,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACvB,CAAC;gBACH,CAAC;qBACI,IAAI,UAAU,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,GAAG,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC;wBACnB,MAAM,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;wBACvB,KAAK,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACtB,CAAC;gBACH,CAAC;qBACI,CAAC;oBACL,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;wBACpC,GAAG,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC;wBACnB,MAAM,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC;qBACvB,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IACvE,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACrC,IAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACf,IAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,WAAW,CAAC,OAAO,CAAC,UAAA,QAAQ;oBAC3B,IAAI,GAAG,2BAA2B,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/E,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACH,CAAC;SACI,CAAC;QACL,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,UAAU;YAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;oBAC3B,IAAI,MAAM,GAAG,EAAE,CAAC;oBAEhB,IAAI,GAAG,EAAE,CAAC;wBACT,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;oBACzB,CAAC;oBAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC1D,CAAC;oBAED,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;oBAC3B,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;iBACI,CAAC;gBACL,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,QAAM,GAAG,EAAE,CAAC;gBAEhB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvC,IAAM,MAAM,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAG,GAAG,CAAE,CAAC;oBAC1D,QAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5B,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,QAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,QAAM,CAAC;gBAC3B,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC","file":"cron-jobs.js","sourcesContent":["import axios from 'axios';\nimport * as Excel from 'exceljs';\nimport * as moment from 'moment-timezone';\nimport SimpleSchema from 'simpl-schema';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport { CommunicationMetrics } from '../collections/communication-metric.collection';\nimport { Files } from '../collections/file.collection';\nimport { OpenAIUsageLedger } from '../collections/openai-usage-ledger.collection';\nimport { ReportBuilderReports } from '../collections/report-builder-report.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { PaginationOptions } from '../models/pagination.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { deepCopy, mergeDeep, round, toTitleCase } from '../util/common';\n\nfunction getFilterTargets(fieldPath: string, report: any): string[] {\n\tif (!fieldPath) {\n\t\treturn [];\n\t}\n\n\tif (fieldPath.startsWith('layout_col_')) {\n\t\tconst normalized = fieldPath.replace(/^layout_col_/, '');\n\t\tconst parts = normalized.split('_');\n\t\tconst idx = parseInt(parts[parts.length - 1], 10);\n\n\t\tif (!isNaN(idx)) {\n\t\t\tconst layoutTargets = (report?.fields_selected || [])\n\t\t\t\t.filter(f => f && (f.layoutColumnIndex === idx || (f.id || '').includes(`f_layout_${idx}_`)))\n\t\t\t\t.map(f => f.fieldPath);\n\n\t\t\tif (layoutTargets.length) {\n\t\t\t\treturn layoutTargets;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [fieldPath];\n}\n\nfunction buildFilterExpression(filter: any, path: string) {\n\tif (!filter || !filter.condition || (!filter.field && !path)) {\n\t\treturn null;\n\t}\n\n\tconst hasValue = filter.value !== null && (Array.isArray(filter.value) ? filter.value.length > 0 : true);\n\n\tif (!hasValue && filter.condition !== 'null' && filter.condition !== 'nnull') {\n\t\treturn null;\n\t}\n\n\tif (filter.condition === 'bw') {\n\t\tif (filter.fieldType === 'Date' && filter.is_rolling) {\n\t\t\tlet startDate = null;\n\t\t\tlet endDate = null;\n\n\t\t\tif (filter.rolling_interval === 'Q1') {\n\t\t\t\tstartDate = moment().startOf('year').toDate();\n\t\t\t\tendDate = moment().startOf('year').quarter(2).subtract(1, 'days').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Q2') {\n\t\t\t\tstartDate = moment().startOf('year').quarter(2).toDate();\n\t\t\t\tendDate = moment().startOf('year').quarter(3).subtract(1, 'days').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Q3') {\n\t\t\t\tstartDate = moment().startOf('year').quarter(3).toDate();\n\t\t\t\tendDate = moment().startOf('year').quarter(4).subtract(1, 'days').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Q4') {\n\t\t\t\tstartDate = moment().startOf('year').quarter(4).toDate();\n\t\t\t\tendDate = moment().endOf('year').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Today') {\n\t\t\t\tstartDate = moment().startOf('day').toDate();\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Yesterday') {\n\t\t\t\tstartDate = moment().subtract(1, 'days').startOf('day').toDate();\n\t\t\t\tendDate = moment().subtract(1, 'days').endOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Week') {\n\t\t\t\tstartDate = moment().startOf('isoWeek').toDate();\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Last Week') {\n\t\t\t\tendDate = moment().startOf('isoWeek').subtract(1, 'days').toDate();\n\t\t\t\tstartDate = moment(endDate).startOf('isoWeek').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Month') {\n\t\t\t\tstartDate = moment().startOf('month').toDate();\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Last Month') {\n\t\t\t\tendDate = moment().startOf('month').subtract(1, 'days').endOf('day').toDate();\n\t\t\t\tstartDate = moment(endDate).startOf('month').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Last 30 Days') {\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t\tstartDate = moment().subtract(30, 'days').startOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Quarter') {\n\t\t\t\tstartDate = moment().startOf('year').quarter(moment().quarter()).toDate();\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Last Quarter') {\n\t\t\t\tendDate = moment().startOf('year').quarter(moment().quarter()).subtract(1, 'days').endOf('day').toDate();\n\t\t\t\tstartDate = moment(endDate).startOf('quarter').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Year') {\n\t\t\t\tstartDate = moment().startOf('year').toDate();\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'Last Year') {\n\t\t\t\tendDate = moment().startOf('year').subtract(1, 'days').endOf('day').toDate();\n\t\t\t\tstartDate = moment(endDate).startOf('year').toDate();\n\t\t\t}\n\t\t\telse if (filter.rolling_interval === 'All') {\n\t\t\t\tstartDate = new Date(2017, 0, 1, 0, 0, 0, 0);\n\t\t\t\tendDate = moment().endOf('day').toDate();\n\t\t\t}\n\n\t\t\treturn {$and: [{[path]: {'$gte': startDate}}, {[path]: {'$lte': endDate}}]};\n\t\t}\n\n\t\treturn {$and: [{[path]: {'$gte': filter.value}}, {[path]: {'$lte': filter.highValue}}]};\n\t}\n\telse if (filter.condition === 'nnull') {\n\t\tlet and = [];\n\t\tand.push({[path]: {'$exists': true}});\n\t\tand.push({[path]: {'$ne': null}});\n\n\t\tif (filter.fieldType === 'String') {\n\t\t\tand.push({[path]: {'$ne': ''}});\n\t\t}\n\n\t\treturn {$and: and};\n\t}\n\telse if (filter.condition === 'null') {\n\t\treturn {[path]: {'$eq': null}};\n\t}\n\telse {\n\t\tif (Array.isArray(filter.value)) {\n\t\t\tif (filter.condition === 'ne') {\n\t\t\t\tlet and = [];\n\t\t\t\tfilter.value.forEach(filt => {\n\t\t\t\t\tand.push({[path]: {['$' + filter.condition]: (Array.isArray(filt) ? filt[0] : filt)}});\n\t\t\t\t});\n\n\t\t\t\tif (and.length > 1) {\n\t\t\t\t\treturn {$and: and};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn and[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet or = [];\n\n\t\t\t\tfilter.value.forEach(filt => {\n\t\t\t\t\tor.push({[path]: {['$' + filter.condition]: (Array.isArray(filt) ? filt[0] : filt)}});\n\t\t\t\t});\n\n\t\t\t\tif (or.length > 1) {\n\t\t\t\t\treturn {$or: or};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn or[0];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\treturn {[path]: {['$' + filter.condition]: filter.value}};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction parseLayoutColIndex(fieldRef: string): number | null {\n\tif (!fieldRef || !fieldRef.startsWith('layout_col_')) {\n\t\treturn null;\n\t}\n\n\tconst normalized = fieldRef.replace(/^layout_col_/, '');\n\tconst parts = normalized.split('_');\n\tconst idx = parseInt(parts[parts.length - 1], 10);\n\n\treturn isNaN(idx) ? null : idx;\n}\n\nfunction resolveLayoutColumnPrimaryLeafId(fieldRef: string, report: any) {\n\tconst idx = parseLayoutColIndex(fieldRef);\n\n\tif (idx === null) {\n\t\treturn null;\n\t}\n\n\tconst candidates = (report?.fields_selected || []).filter(f => f && typeof f.layoutColumnIndex !== 'undefined' && f.layoutColumnIndex === idx);\n\n\tif (!candidates.length) {\n\t\treturn null;\n\t}\n\n\tconst root = report?.collection_root;\n\tconst preferred = candidates.find(c => c.collection_name === root || c.layoutCollection === root) || candidates[0];\n\n\treturn preferred?.id || null;\n}\n\nfunction resolveFieldRefToLeafId(fieldRef: string, report: any) {\n\tif (!fieldRef) {\n\t\treturn null;\n\t}\n\n\tif (fieldRef.startsWith('layout_col_')) {\n\t\treturn resolveLayoutColumnPrimaryLeafId(fieldRef, report);\n\t}\n\n\treturn fieldRef;\n}\n\nfunction buildCollectionKeysFromReport(report: any): string[] {\n\tconst keys: string[] = [];\n\n\tif (report?.collection_root) {\n\t\tkeys.push(report.collection_root);\n\t}\n\n\t(report?.collection_joins || []).forEach(join => {\n\t\tif (!join) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst alias = (join.alias || '').trim();\n\t\tif (alias && !keys.includes(alias)) {\n\t\t\tkeys.push(alias);\n\t\t}\n\t\telse if (join.collection && !keys.includes(join.collection)) {\n\t\t\tkeys.push(join.collection);\n\t\t}\n\t});\n\n\treturn keys.length ? keys : ['root'];\n}\n\nfunction buildLayoutColumnsFromFields(report: any, fields: any[] = []) {\n\tconst keys = buildCollectionKeysFromReport(report);\n\n\treturn (fields || []).map((field, index) => {\n\t\tconst header = field.columnName || field.fieldName || `Column ${index + 1}`;\n\t\tconst isCustom = ((field?.id || field?.fieldPath || '') + '').startsWith('c_') || field?.fieldPathName === 'Custom Field';\n\n\t\tconst mappings = keys.map(key => {\n\t\t\tconst matchesKey = key === report.collection_root\n\t\t\t\t? (field.collection_name === report.collection_root || isCustom)\n\t\t\t\t: (key === (field.lookup_as || '').trim()) || key === field.collection_name;\n\n\t\t\tif (matchesKey) {\n\t\t\t\treturn {\n\t\t\t\t\tcollection: key,\n\t\t\t\t\tmode: 'variable',\n\t\t\t\t\tfieldPath: field.fieldPath || '',\n\t\t\t\t\tfieldId: field.id || `f_layout_${index}`,\n\t\t\t\t\ttext: '',\n\t\t\t\t\tleafValueType: field.leafValueType || 'Value',\n\t\t\t\t\tleafFormatType: field.leafFormatType || ''\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcollection: key,\n\t\t\t\tmode: 'text',\n\t\t\t\tfieldPath: '',\n\t\t\t\tfieldId: '',\n\t\t\t\ttext: '',\n\t\t\t\tleafValueType: 'Value',\n\t\t\t\tleafFormatType: ''\n\t\t\t};\n\t\t});\n\n\t\treturn {\n\t\t\tid: field.id ? `layout_${field.id}` : `layout_${index}`,\n\t\t\theader,\n\t\t\tmappings\n\t\t};\n\t});\n}\n\nfunction ensureLayoutHasCustomField(report: any, layout: any[] = [], customId: string, columnName?: string, leafValueType?: string) {\n\tif (!layout || !customId) {\n\t\treturn;\n\t}\n\n\tconst hasCustomField = (layout || []).some(col => (col?.mappings || []).some(m =>\n\t\tm?.mode === 'variable' && (m.fieldId === customId || m.fieldPath === customId)\n\t));\n\tif (hasCustomField) {\n\t\treturn;\n\t}\n\n\tconst keys = buildCollectionKeysFromReport(report);\n\tconst rootKey = report?.collection_root || '';\n\tconst header = columnName || customId;\n\n\tconst mappings = keys.map(key => {\n\t\tif (key === rootKey) {\n\t\t\treturn {\n\t\t\t\tcollection: key,\n\t\t\t\tmode: 'variable',\n\t\t\t\tfieldPath: customId,\n\t\t\t\tfieldId: customId,\n\t\t\t\ttext: '',\n\t\t\t\tleafValueType: leafValueType || 'Value',\n\t\t\t\tleafFormatType: 'Number'\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tcollection: key,\n\t\t\tmode: 'text',\n\t\t\tfieldPath: '',\n\t\t\tfieldId: '',\n\t\t\ttext: '',\n\t\t\tleafValueType: 'Value',\n\t\t\tleafFormatType: ''\n\t\t};\n\t});\n\n\tlayout.push({\n\t\tid: `layout_${customId}`,\n\t\theader,\n\t\tmappings\n\t});\n}\n\nfunction ensureLayoutIncludesCustomFields(report: any, layout: any[] = []) {\n\tconst fieldsCustom = report?.fields_custom || [];\n\tif (!fieldsCustom.length) {\n\t\treturn layout;\n\t}\n\n\tfieldsCustom.forEach(custom => {\n\t\tensureLayoutHasCustomField(report, layout, custom?.id, custom?.columnName, custom?.leafValueType);\n\t});\n\n\treturn layout;\n}\n\nfunction getLayoutColumnsFromReport(report: any) {\n\tlet layout: any[] = [];\n\n\tif (report?.fields_layout && report.fields_layout.length) {\n\t\tlayout = deepCopy(report.fields_layout);\n\t}\n\telse {\n\t\tlayout = buildLayoutColumnsFromFields(report, report?.fields_selected || []);\n\t}\n\n\treturn ensureLayoutIncludesCustomFields(report, layout);\n}\n\nfunction syncSelectedFieldsFromLayout(report: any, layoutColumns: any[] = []) {\n\tconst fields: any[] = [];\n\tconst sourceFields = deepCopy(report?.fields_selected || []);\n\tconst byId = new Map<string, any>();\n\tconst byPath = new Map<string, any>();\n\n\tsourceFields.forEach(f => {\n\t\tif (f?.id) {\n\t\t\tbyId.set(f.id, f);\n\t\t}\n\t\tif (f?.fieldPath) {\n\t\t\tbyPath.set(f.fieldPath, f);\n\t\t}\n\t});\n\n\tlayoutColumns.forEach((col, colIndex) => {\n\t\t(col.mappings || []).forEach((map, mapIndex) => {\n\t\t\tif (map.mode === 'variable' && map.fieldPath) {\n\t\t\t\tconst baseField = byId.get(map.fieldId) || byPath.get(map.fieldPath);\n\n\t\t\t\tif (!baseField) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst clone = deepCopy(baseField);\n\t\t\t\tclone.columnName = col.header || baseField.columnName || baseField.fieldPathName || 'Column';\n\t\t\t\tclone.show = (typeof map.show === 'boolean')\n\t\t\t\t\t? map.show\n\t\t\t\t\t: (typeof baseField.show === 'boolean' ? baseField.show : true);\n\t\t\t\tclone.leafValueType = map.leafValueType || clone.leafValueType;\n\t\t\t\tclone.leafFormatType = map.leafFormatType || clone.leafFormatType;\n\t\t\t\tclone.id = map.fieldId || clone.id || `f_layout_${colIndex}_${mapIndex}`;\n\t\t\t\tclone.layoutCollection = map.collection;\n\t\t\t\tclone.layoutColumnIndex = colIndex;\n\n\t\t\t\tif (!map.fieldId) {\n\t\t\t\t\tmap.fieldId = clone.id;\n\t\t\t\t}\n\n\t\t\t\tfields.push(clone);\n\t\t\t}\n\t\t});\n\t});\n\n\treturn fields;\n}\n\nfunction materializeLayoutRow(report: any, layoutColumns: any[], selectedFields: any[], row: any) {\n\tconst materialized: any = {_id: row?._id};\n\n\tconst hasDataForCollection = (collection: string) => {\n\t\tif (!collection) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (selectedFields || []).some(f =>\n\t\t\tf.layoutCollection === collection &&\n\t\t\trow &&\n\t\t\tObject.prototype.hasOwnProperty.call(row, f.id) &&\n\t\t\trow[f.id] !== undefined &&\n\t\t\trow[f.id] !== null &&\n\t\t\trow[f.id] !== ''\n\t\t);\n\t};\n\n\t(layoutColumns || []).forEach((col, colIndex) => {\n\t\tconst values: any[] = [];\n\n\t\t(col.mappings || []).forEach(map => {\n\t\t\tif (map.mode === 'text' && map.text) {\n\t\t\t\tif (hasDataForCollection(map.collection)) {\n\t\t\t\t\tvalues.push({collection: map.collection, value: map.text});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (map.mode === 'variable' && map.fieldId && row && Object.prototype.hasOwnProperty.call(row, map.fieldId)) {\n\t\t\t\tvalues.push({collection: map.collection, value: row[map.fieldId]});\n\t\t\t}\n\t\t});\n\n\t\tmaterialized[colIndex] = values;\n\t});\n\n\treturn materialized;\n}\n\nfunction getLayoutCellExportValue(report: any, layoutRow: any, colIndex: number) {\n\tif (!layoutRow || layoutRow[colIndex] === undefined || layoutRow[colIndex] === null) {\n\t\treturn '';\n\t}\n\n\tconst cellValues = Array.isArray(layoutRow[colIndex]) ? layoutRow[colIndex] : [layoutRow[colIndex]];\n\tconst filtered = cellValues.filter(v => v !== undefined && v !== null && v.value !== undefined && v.value !== null && v.value !== '');\n\n\tif (!filtered.length) {\n\t\treturn '';\n\t}\n\n\tconst rootCollection = report?.collection_root;\n\tconst preferred = filtered.find(v => v.collection === rootCollection) || filtered[0];\n\tconst value = preferred?.value;\n\n\tif (value === undefined || value === null) {\n\t\treturn '';\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\treturn typeof value === 'string' ? value.trim().replace(/\\t/g, '').replace(/\\n/g, '') : value;\n}\n\nfunction getPrimaryFieldForLayoutColumn(col: any, selectedFields: any[]) {\n\tif (!col?.mappings) {\n\t\treturn null;\n\t}\n\n\tconst target = col.mappings.find(m => m.mode === 'variable' && m.fieldId);\n\n\tif (!target) {\n\t\treturn null;\n\t}\n\n\treturn (selectedFields || []).find(f => f.id === target.fieldId) || null;\n}\n\nconst STRING_DATE_FORMATS = [\n\tmoment.ISO_8601,\n\t'MM/DD/YYYY',\n\t'M/D/YYYY',\n\t'MM/DD/YYYY h:mm A',\n\t'M/D/YYYY h:mm A',\n\t'MM/DD/YYYY hh:mm A',\n\t'M/D/YYYY hh:mm A',\n\t'MM/DD/YYYY h:mm:ss A',\n\t'M/D/YYYY h:mm:ss A',\n\t'MM/DD/YYYY hh:mm:ss A',\n\t'M/D/YYYY hh:mm:ss A',\n\t'MM/DD/YYYY H:mm',\n\t'M/D/YYYY H:mm',\n\t'MM/DD/YYYY HH:mm',\n\t'M/D/YYYY HH:mm',\n\t'MM/DD/YYYY H:mm:ss',\n\t'M/D/YYYY H:mm:ss',\n\t'MM/DD/YYYY HH:mm:ss',\n\t'M/D/YYYY HH:mm:ss'\n];\n\nfunction parseMoment(value: any) {\n\tif (value === null || value === undefined) {\n\t\treturn null;\n\t}\n\n\tif (moment.isMoment(value)) {\n\t\treturn value;\n\t}\n\n\tif (value instanceof Date || typeof value === 'number') {\n\t\tconst m = moment(value);\n\t\treturn m.isValid() ? m : null;\n\t}\n\n\tif (typeof value === 'string' || value instanceof String) {\n\t\tconst str = `${value}`.trim();\n\t\tif (!str) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst m = moment(str, STRING_DATE_FORMATS, true);\n\t\tif (m.isValid()) {\n\t\t\treturn m;\n\t\t}\n\n\t\tconst loose = moment(str, STRING_DATE_FORMATS, false);\n\t\tif (loose.isValid()) {\n\t\t\treturn loose;\n\t\t}\n\n\t\tconst jsDateStr = str.replace(/\\s*\\([^)]*\\)\\s*$/, '');\n\t\tconst jsDate = moment(jsDateStr, 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ', true);\n\t\tif (jsDate.isValid()) {\n\t\t\treturn jsDate;\n\t\t}\n\n\t\tif (/[T:\\\\/\\\\-]/.test(str) || /GMT|UTC/i.test(str)) {\n\t\t\tconst fallback = moment(str);\n\t\t\treturn fallback.isValid() ? fallback : null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tconst m = moment(value);\n\treturn m.isValid() ? m : null;\n}\n\nfunction parseExcelNumber(value: unknown): number | null {\n\tif (typeof value === 'number') {\n\t\treturn Number.isFinite(value) ? value : null;\n\t}\n\n\tif (typeof value !== 'string') {\n\t\treturn null;\n\t}\n\n\tlet s = value.trim();\n\tif (!s) {\n\t\treturn null;\n\t}\n\n\tlet negative = false;\n\tconst parenMatch = s.match(/^\\((.*)\\)$/);\n\tif (parenMatch) {\n\t\tnegative = true;\n\t\ts = parenMatch[1].trim();\n\t}\n\n\ts = s\n\t\t.replace(/[\\t\\n\\r]/g, '')\n\t\t.replace(/\\$/g, '')\n\t\t.replace(/,/g, '');\n\n\ts = s.trim();\n\tif (!s) {\n\t\treturn null;\n\t}\n\n\tconst num = Number(s);\n\tif (!Number.isFinite(num)) {\n\t\treturn null;\n\t}\n\n\treturn negative ? -num : num;\n}\n\nfunction isExcelNumericField(field: any): boolean {\n\treturn !!field && (\n\t\tfield.fieldType === 'Number' ||\n\t\tfield.leafValueType === 'Count' ||\n\t\tfield.leafValueType === 'Sum' ||\n\t\tfield.leafValueType === 'Average'\n\t);\n}\n\nfunction writeExcelCell(cell: Excel.Cell, value: any, fieldMeta?: any) {\n\tif (value === null || value === undefined) {\n\t\tcell.value = '';\n\t\treturn;\n\t}\n\n\tif (fieldMeta?.fieldType === 'Date') {\n\t\tconst rawValue = Array.isArray(value) ? value.find(v => v !== null && v !== undefined && v !== '') : value;\n\t\tconst m = parseMoment(rawValue);\n\t\tif (m) {\n\t\t\tconst timezone = process.env.TZ_CLIENT;\n\t\t\tconst local = timezone ? moment.tz(m.toDate(), timezone) : m.clone().local();\n\t\t\tconst leafFormatType = fieldMeta?.leafFormatType;\n\t\t\tconst excelSerial = (Date.UTC(\n\t\t\t\tlocal.year(),\n\t\t\t\tlocal.month(),\n\t\t\t\tlocal.date(),\n\t\t\t\tlocal.hour(),\n\t\t\t\tlocal.minute(),\n\t\t\t\tlocal.second(),\n\t\t\t\tlocal.millisecond(),\n\t\t\t) - Date.UTC(1899, 11, 30)) / 86400000;\n\t\t\tif (leafFormatType === 'Date' || leafFormatType === 'Date_long') {\n\t\t\t\tcell.value = Math.floor(excelSerial);\n\t\t\t}\n\t\t\telse if (leafFormatType === 'Time' || leafFormatType === 'DateTime' || leafFormatType === 'DateTime_long') {\n\t\t\t\tcell.value = excelSerial;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcell.value = local.toDate();\n\t\t\t}\n\n\t\t\tswitch (leafFormatType) {\n\t\t\t\tcase 'Time':\n\t\t\t\t\tcell.numFmt = 'h:mm AM/PM';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'DateTime':\n\t\t\t\tcase 'DateTime_long':\n\t\t\t\t\tcell.numFmt = 'mm/dd/yyyy h:mm AM/PM';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Date':\n\t\t\t\t\tcell.numFmt = 'mm/dd/yyyy';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Date_long':\n\t\t\t\tdefault:\n\t\t\t\t\tcell.numFmt = 'mm/dd/yyyy';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tcell.value = value.join(', ');\n\t\treturn;\n\t}\n\n\tif (isExcelNumericField(fieldMeta)) {\n\t\tconst parsed = parseExcelNumber(value);\n\t\tif (parsed !== null) {\n\t\t\tcell.value = parsed;\n\n\t\t\tif (fieldMeta?.leafFormatType === 'Currency') {\n\t\t\t\tcell.numFmt = '\"$\"#,##0.00;[Red]-\"$\"#,##0.00';\n\t\t\t}\n\t\t\telse if (fieldMeta?.leafFormatType === 'Number' || fieldMeta?.leafValueType === 'Count') {\n\t\t\t\tcell.numFmt = '#,##0';\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (typeof value === 'string') {\n\t\tcell.value = value.replace(/\\t/g, '').replace(/\\n/g, '');\n\t}\n\telse {\n\t\tcell.value = value;\n\t}\n}\n\nfunction getMaxRows(row) {\n\tlet keys = Object.keys(row || {});\n\tlet maxArray = [];\n\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tif (Array.isArray(row[keys[i]]) && row[keys[i]].length > maxArray.length) {\n\t\t\tmaxArray = row[keys[i]];\n\t\t}\n\t\telse if (maxArray.length === 0) {\n\t\t\tmaxArray = [row[keys[i]]];\n\t\t}\n\t}\n\n\treturn maxArray;\n}\n\nfunction applyClientGroupSortToData(results: any[], report: any, sorts: any[] = []) {\n\tif (!Array.isArray(results) || !results.length) {\n\t\treturn;\n\t}\n\n\tconst groupIds = (report?.groups_row || []).map(g => g.id).filter(Boolean);\n\n\tif (!groupIds.length) {\n\t\treturn;\n\t}\n\n\tconst groupOrderById = {};\n\tconst leafSorts = [];\n\n\t(sorts || []).forEach(s => {\n\t\tif (!s?.field) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (groupIds.includes(s.field)) {\n\t\t\tgroupOrderById[s.field] = s.order || 'asc';\n\t\t}\n\t\telse {\n\t\t\tconst leafId = resolveFieldRefToLeafId(s.field, report);\n\t\t\tif (leafId) {\n\t\t\t\tleafSorts.push({leafId, order: s.order || 'asc'});\n\t\t\t}\n\t\t}\n\t});\n\n\tconst compareScalar = (aVal: any, bVal: any, order: string) => {\n\t\tconst dir = order === 'desc' ? -1 : 1;\n\n\t\tconst aNull = aVal === null || aVal === undefined || aVal === '';\n\t\tconst bNull = bVal === null || bVal === undefined || bVal === '';\n\t\tif (aNull && bNull) { return 0; }\n\t\tif (aNull) { return 1; }\n\t\tif (bNull) { return -1; }\n\n\t\tconst aNum = typeof aVal === 'number' ? aVal : Number(aVal);\n\t\tconst bNum = typeof bVal === 'number' ? bVal : Number(bVal);\n\t\tif (!isNaN(aNum) && !isNaN(bNum)) {\n\t\t\tif (aNum === bNum) { return 0; }\n\t\t\treturn aNum > bNum ? dir : -dir;\n\t\t}\n\n\t\tconst aStr = ('' + aVal).toLowerCase();\n\t\tconst bStr = ('' + bVal).toLowerCase();\n\t\tif (aStr === bStr) { return 0; }\n\t\treturn aStr > bStr ? dir : -dir;\n\t};\n\n\tconst selectedIds = (report?.fields_selected || []).map(f => f.id).filter(Boolean);\n\n\tconst sortLeafArraysInRow = (row: any) => {\n\t\tif (!row || !leafSorts.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst arraysToReorder = selectedIds.filter(id => Array.isArray(row[id]));\n\n\t\tif (!arraysToReorder.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet length = 0;\n\t\tarraysToReorder.forEach(id => {\n\t\t\tlength = Math.max(length, row[id].length || 0);\n\t\t});\n\n\t\tif (length <= 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst getArrayVal = (id: string, idx: number) => {\n\t\t\tconst arr = row[id];\n\t\t\tif (!Array.isArray(arr) || !arr.length) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn arr[idx] !== undefined ? arr[idx] : arr[arr.length - 1];\n\t\t};\n\n\t\tconst indices = Array.from({length}, (_, i) => i);\n\t\tindices.sort((i, j) => {\n\t\t\tfor (const s of leafSorts) {\n\t\t\t\tconst aVal = Array.isArray(row[s.leafId]) ? getArrayVal(s.leafId, i) : row[s.leafId];\n\t\t\t\tconst bVal = Array.isArray(row[s.leafId]) ? getArrayVal(s.leafId, j) : row[s.leafId];\n\t\t\t\tconst cmp = compareScalar(aVal, bVal, s.order);\n\t\t\t\tif (cmp !== 0) {\n\t\t\t\t\treturn cmp;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\n\t\tarraysToReorder.forEach(id => {\n\t\t\trow[id] = indices.map(idx => getArrayVal(id, idx));\n\t\t});\n\t};\n\n\tconst sortGroupLevel = (rows: any[], depth: number) => {\n\t\tif (!Array.isArray(rows) || !rows.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupId = groupIds[depth];\n\t\tconst order = groupOrderById[groupId] || 'asc';\n\t\trows.sort((a, b) => compareScalar(a?._id?.[groupId], b?._id?.[groupId], order));\n\n\t\tif (depth < groupIds.length - 1) {\n\t\t\tconst childId = groupIds[depth + 1];\n\t\t\trows.forEach(r => {\n\t\t\t\tconst children = r ? r[childId] : null;\n\t\t\t\tif (Array.isArray(children)) {\n\t\t\t\t\tsortGroupLevel(children, depth + 1);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\trows.forEach(r => sortLeafArraysInRow(r));\n\t\t}\n\t};\n\n\tsortGroupLevel(results, 0);\n}\n\nconst OPENAI_USAGE_BILLING_ENDPOINT = 'https://backend.resolveio.com/api/openai-usage/report';\nconst AI_USAGE_SYNC_JOB_NAME = 'AI Usage Billing Sync';\nconst LEGACY_AI_USAGE_SYNC_JOB_NAME = 'OpenAI Usage Billing Sync';\nconst OPENAI_USAGE_DEFAULT_LOOKBACK_DAYS = 30;\nconst OPENAI_USAGE_DEFAULT_BATCH_SIZE = 500;\nconst OPENAI_USAGE_DEFAULT_OVERLAP_MINUTES = 10;\nconst COMMUNICATION_METRICS_ENDPOINT = 'https://backend.resolveio.com/api/communication-metrics/report';\nconst COMMUNICATION_METRICS_DEFAULT_LOOKBACK_DAYS = 30;\nconst COMMUNICATION_METRICS_DEFAULT_BATCH_SIZE = 1000;\nconst COMMUNICATION_METRICS_DEFAULT_OVERLAP_MINUTES = 10;\n\nconst toNumberSetting = (value: any, fallback: number, allowZero = false): number => {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed)) {\n\t\treturn fallback;\n\t}\n\tif (allowZero && parsed === 0) {\n\t\treturn 0;\n\t}\n\treturn parsed > 0 ? Math.floor(parsed) : fallback;\n};\n\nconst normalizeString = (value: any): string => {\n\tif (typeof value !== 'string') {\n\t\treturn '';\n\t}\n\treturn value.trim();\n};\n\nconst normalizeIdentifier = (value: any): string => {\n\tif (value === undefined || value === null) {\n\t\treturn '';\n\t}\n\treturn String(value).trim();\n};\n\nconst normalizeDate = (value: any): Date | null => {\n\tif (!value) {\n\t\treturn null;\n\t}\n\tconst date = value instanceof Date ? value : new Date(value);\n\tif (Number.isNaN(date.getTime())) {\n\t\treturn null;\n\t}\n\treturn date;\n};\n\nconst resolveOpenAIUsageSyncConfig = () => {\n\tconst config = ResolveIOServer.getServerConfig?.() || {};\n\tconst endpoint = normalizeString(\n\t\tconfig['OPENAI_USAGE_BILLING_URL']\n\t\t|| config['OPENAI_USAGE_REPORT_URL']\n\t\t|| process.env.OPENAI_USAGE_BILLING_URL\n\t\t|| process.env.OPENAI_USAGE_REPORT_URL\n\t) || OPENAI_USAGE_BILLING_ENDPOINT;\n\tconst apiKey = normalizeString(\n\t\tconfig['OPENAI_USAGE_INGEST_KEY']\n\t\t|| config['OPENAI_USAGE_API_KEY']\n\t\t|| process.env.OPENAI_USAGE_INGEST_KEY\n\t\t|| process.env.OPENAI_USAGE_API_KEY\n\t\t|| process.env.OPENAI_USAGE_REPORT_KEY\n\t);\n\tconst batchSize = toNumberSetting(\n\t\tconfig['OPENAI_USAGE_SYNC_BATCH_SIZE'] || process.env.OPENAI_USAGE_SYNC_BATCH_SIZE,\n\t\tOPENAI_USAGE_DEFAULT_BATCH_SIZE\n\t);\n\tconst lookbackDays = toNumberSetting(\n\t\tconfig['OPENAI_USAGE_SYNC_LOOKBACK_DAYS'] || process.env.OPENAI_USAGE_SYNC_LOOKBACK_DAYS,\n\t\tOPENAI_USAGE_DEFAULT_LOOKBACK_DAYS\n\t);\n\tconst overlapMinutes = toNumberSetting(\n\t\tconfig['OPENAI_USAGE_SYNC_OVERLAP_MINUTES'] || process.env.OPENAI_USAGE_SYNC_OVERLAP_MINUTES,\n\t\tOPENAI_USAGE_DEFAULT_OVERLAP_MINUTES,\n\t\ttrue\n\t);\n\tconst enabledRaw = config['OPENAI_USAGE_SYNC_ENABLED'] ?? process.env.OPENAI_USAGE_SYNC_ENABLED;\n\tconst enabled = typeof enabledRaw === 'string'\n\t\t? enabledRaw.trim().toLowerCase() !== 'false' && enabledRaw.trim() !== '0'\n\t\t: enabledRaw !== false;\n\n\treturn { config, endpoint, apiKey, batchSize, lookbackDays, overlapMinutes, enabled };\n};\n\nconst buildOpenAIUsageQuery = (cursorAt: Date, cursorId: string) => {\n\tconst base: any = {\n\t\tbillable: { $ne: false }\n\t};\n\n\tif (!cursorId) {\n\t\tbase.timestamp = { $gte: cursorAt };\n\t\treturn base;\n\t}\n\n\tbase.$or = [\n\t\t{ timestamp: { $gt: cursorAt } },\n\t\t{ timestamp: cursorAt, _id: { $gt: cursorId } }\n\t];\n\treturn base;\n};\n\nconst normalizeUsagePayloadEntry = (entry: any) => {\n\tif (!entry) {\n\t\treturn null;\n\t}\n\tconst timestamp = normalizeDate(entry.timestamp);\n\tconst idClient = normalizeIdentifier(entry.id_client);\n\tif (!timestamp || !idClient) {\n\t\treturn null;\n\t}\n\tconst id = normalizeIdentifier(entry._id) || normalizeIdentifier(entry.id) || '';\n\n\treturn {\n\t\t_id: id || undefined,\n\t\tid_client: idClient,\n\t\ttimestamp: timestamp,\n\t\tmodel: normalizeString(entry.model) || 'unknown',\n\t\tinput_tokens: Number(entry.input_tokens || 0),\n\t\toutput_tokens: Number(entry.output_tokens || 0),\n\t\ttotal_tokens: Number(entry.total_tokens || 0),\n\t\tcost_estimate: Number(entry.cost_estimate || 0),\n\t\tbillable: entry.billable !== false,\n\t\tcategory: normalizeString(entry.category),\n\t\tid_request: normalizeIdentifier(entry.id_request),\n\t\tid_conversation: normalizeIdentifier(entry.id_conversation)\n\t};\n};\n\nconst resolveCommunicationMetricsSyncConfig = () => {\n\tconst config = ResolveIOServer.getServerConfig?.() || {};\n\tconst endpoint = normalizeString(\n\t\tconfig['COMMUNICATION_METRICS_REPORT_URL']\n\t\t|| config['COMMUNICATION_METRICS_BILLING_URL']\n\t\t|| process.env.COMMUNICATION_METRICS_REPORT_URL\n\t\t|| process.env.COMMUNICATION_METRICS_BILLING_URL\n\t) || COMMUNICATION_METRICS_ENDPOINT;\n\tconst apiKey = normalizeString(\n\t\tconfig['COMMUNICATION_METRICS_INGEST_KEY']\n\t\t|| config['COMMUNICATION_METRICS_API_KEY']\n\t\t|| process.env.COMMUNICATION_METRICS_INGEST_KEY\n\t\t|| process.env.COMMUNICATION_METRICS_API_KEY\n\t\t|| config['OPENAI_USAGE_INGEST_KEY']\n\t\t|| config['OPENAI_USAGE_API_KEY']\n\t\t|| process.env.OPENAI_USAGE_INGEST_KEY\n\t\t|| process.env.OPENAI_USAGE_API_KEY\n\t\t|| process.env.OPENAI_USAGE_REPORT_KEY\n\t);\n\tconst batchSize = toNumberSetting(\n\t\tconfig['COMMUNICATION_METRICS_SYNC_BATCH_SIZE'] || process.env.COMMUNICATION_METRICS_SYNC_BATCH_SIZE,\n\t\tCOMMUNICATION_METRICS_DEFAULT_BATCH_SIZE\n\t);\n\tconst lookbackDays = toNumberSetting(\n\t\tconfig['COMMUNICATION_METRICS_SYNC_LOOKBACK_DAYS'] || process.env.COMMUNICATION_METRICS_SYNC_LOOKBACK_DAYS,\n\t\tCOMMUNICATION_METRICS_DEFAULT_LOOKBACK_DAYS\n\t);\n\tconst overlapMinutes = toNumberSetting(\n\t\tconfig['COMMUNICATION_METRICS_SYNC_OVERLAP_MINUTES'] || process.env.COMMUNICATION_METRICS_SYNC_OVERLAP_MINUTES,\n\t\tCOMMUNICATION_METRICS_DEFAULT_OVERLAP_MINUTES,\n\t\ttrue\n\t);\n\tconst enabledRaw = config['COMMUNICATION_METRICS_SYNC_ENABLED'] ?? process.env.COMMUNICATION_METRICS_SYNC_ENABLED;\n\tconst enabled = typeof enabledRaw === 'string'\n\t\t? enabledRaw.trim().toLowerCase() !== 'false' && enabledRaw.trim() !== '0'\n\t\t: enabledRaw !== false;\n\n\treturn { config, endpoint, apiKey, batchSize, lookbackDays, overlapMinutes, enabled };\n};\n\nconst buildCommunicationMetricsQuery = (cursorAt: Date, cursorId: string) => {\n\tif (!cursorId) {\n\t\treturn { date: { $gte: cursorAt } };\n\t}\n\treturn {\n\t\t$or: [\n\t\t\t{ date: { $gt: cursorAt } },\n\t\t\t{ date: cursorAt, _id: { $gt: cursorId } }\n\t\t]\n\t};\n};\n\nconst normalizeCommunicationMetricEntry = (entry: any) => {\n\tif (!entry) {\n\t\treturn null;\n\t}\n\tconst date = normalizeDate(entry.date || entry.timestamp);\n\tconst type = normalizeString(entry.type);\n\tif (!date || !type) {\n\t\treturn null;\n\t}\n\tconst value = Number(entry.value ?? entry.count ?? 0);\n\tif (!Number.isFinite(value) || !value) {\n\t\treturn null;\n\t}\n\tconst id = normalizeIdentifier(entry._id) || normalizeIdentifier(entry.id) || '';\n\tconst unit = normalizeString(entry.unit);\n\tconst metadata = entry.metadata && typeof entry.metadata === 'object' ? entry.metadata : undefined;\n\n\treturn {\n\t\t_id: id || undefined,\n\t\tdate,\n\t\ttype,\n\t\tvalue,\n\t\tunit: unit || undefined,\n\t\tmetadata\n\t};\n};\n\nexport function loadCronJobMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcronEmailMergedDocsCleanUp: {\n\t\t\tfunction: async function() {\n\t\t\t\tlet files = await Files.find({$and: [{type: 'Email Merged Docs'}, {createdAt: {$lte: moment().subtract(1, 'day').toDate()}}]});\n\t\t\t\t\n\t\t\t\tif (files.length) {\n\t\t\t\t\tawait this.callMethod('deleteFiles', files.map(file => file.key));\n\t\t\t\t\tawait Files.deleteMany({_id: {$in: files.map(a => a._id)}});\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tstuckCronJob: {\n\t\t\tfunction: async function() {\n\t\t\t\tlet fiveMin = moment().subtract(5, 'minutes').toDate();\n\t\t\t\tlet cronJobs = await CronJobs.find({running: true, updatedAt: {$lte: fiveMin}});\n\n\t\t\t\tif (cronJobs.length) {\n\t\t\t\t\tawait CronJobs.updateMany({_id: {$in: cronJobs.map(a => a._id)}}, {$set: {running: false}});\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tcronOpenAIUsageBillingSync: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tdata: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function() {\n\t\t\t\tconst { config, endpoint, apiKey, batchSize, lookbackDays, overlapMinutes, enabled } = resolveOpenAIUsageSyncConfig();\n\t\t\t\tif (!enabled) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst rootUrl = normalizeString(config['ROOT_URL']);\n\t\t\t\tif (rootUrl === 'https://resolveio.com' || rootUrl === 'http://localhost:4200') {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t\tif (!endpoint || !apiKey) {\n\t\t\t\t\t\tconsole.warn('[AI Usage Sync] Missing endpoint or API key.');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst jobDoc = await CronJobs.findOne({\n\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t$in: [AI_USAGE_SYNC_JOB_NAME, LEGACY_AI_USAGE_SYNC_JOB_NAME]\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tconst runData = (jobDoc as any)?.method_run_data as any;\n\t\t\t\t\tconst lastSyncedAt = normalizeDate(runData?.last_synced_at);\n\t\t\t\t\tconst lastSyncedId = normalizeString(runData?.last_synced_id);\n\t\t\t\tconst lookbackMs = lookbackDays * 24 * 60 * 60 * 1000;\n\t\t\t\tlet cursorAt = lastSyncedAt || new Date(Date.now() - lookbackMs);\n\n\t\t\t\tif (lastSyncedAt && overlapMinutes > 0) {\n\t\t\t\t\tcursorAt = new Date(cursorAt.getTime() - overlapMinutes * 60 * 1000);\n\t\t\t\t}\n\n\t\t\t\tlet cursorId = lastSyncedId;\n\t\t\t\tlet totalSent = 0;\n\t\t\t\tlet cursorMoved = false;\n\t\t\t\tconst source = {\n\t\t\t\t\tclientSlug: ResolveIOServer.getClientName?.(),\n\t\t\t\t\tclientName: normalizeString(config['CLIENT_NAME']),\n\t\t\t\t\trootUrl: rootUrl,\n\t\t\t\t\treportedAt: new Date(),\n\t\t\t\t\tappVersion: process.env.APP_VERSION\n\t\t\t\t};\n\n\t\t\t\tfor (let i = 0; i < 1000; i++) {\n\t\t\t\t\tconst query = buildOpenAIUsageQuery(cursorAt, cursorId);\n\t\t\t\t\tconst entries = await OpenAIUsageLedger.find(query, {\n\t\t\t\t\t\tsort: { timestamp: 1, _id: 1 },\n\t\t\t\t\t\tlimit: batchSize\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!entries.length) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst payloadEntries = entries\n\t\t\t\t\t\t.map(entry => normalizeUsagePayloadEntry(entry))\n\t\t\t\t\t\t.filter(Boolean);\n\n\t\t\t\t\tif (payloadEntries.length) {\n\t\t\t\t\t\tawait axios.post(endpoint, { entries: payloadEntries, source }, {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t\t\t'X-ResolveIO-OpenAI-Usage-Key': apiKey,\n\t\t\t\t\t\t\t\t'X-OpenAI-Usage-Key': apiKey,\n\t\t\t\t\t\t\t\t'X-API-Key': apiKey\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttimeout: 20000\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttotalSent += payloadEntries.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst lastEntry = entries[entries.length - 1];\n\t\t\t\t\tif (lastEntry) {\n\t\t\t\t\t\tcursorAt = normalizeDate(lastEntry.timestamp) || cursorAt;\n\t\t\t\t\t\tcursorId = normalizeString(lastEntry._id) || cursorId;\n\t\t\t\t\t\tcursorMoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (entries.length < batchSize) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t\tif (cursorMoved) {\n\t\t\t\t\t\tconst jobSelector = (jobDoc as any)?._id\n\t\t\t\t\t\t\t? { _id: (jobDoc as any)._id }\n\t\t\t\t\t\t\t: { name: AI_USAGE_SYNC_JOB_NAME };\n\t\t\t\t\t\tawait CronJobs.updateOne(\n\t\t\t\t\t\t\tjobSelector,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t\tname: AI_USAGE_SYNC_JOB_NAME,\n\t\t\t\t\t\t\t\t\t'method_run_data.last_synced_at': cursorAt,\n\t\t\t\t\t\t\t\t\t'method_run_data.last_synced_id': cursorId,\n\t\t\t\t\t\t\t\t\t'method_run_data.last_sent_at': new Date(),\n\t\t\t\t\t\t\t\t'method_run_data.last_sent_count': totalSent\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tcronCommunicationMetricsSync: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tdata: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function() {\n\t\t\t\tconst { config, endpoint, apiKey, batchSize, lookbackDays, overlapMinutes, enabled } = resolveCommunicationMetricsSyncConfig();\n\t\t\t\tif (!enabled) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst rootUrl = normalizeString(config['ROOT_URL']);\n\t\t\t\tif (rootUrl === 'https://resolveio.com' || rootUrl === 'http://localhost:4200') {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (!endpoint || !apiKey) {\n\t\t\t\t\tconsole.warn('[Communication Metrics Sync] Missing endpoint or API key.');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst jobDoc = await CronJobs.findOne({ name: 'Communication Metrics Sync' });\n\t\t\t\tconst runData = (jobDoc as any)?.method_run_data as any;\n\t\t\t\tconst lastSyncedAt = normalizeDate(runData?.last_synced_at);\n\t\t\t\tconst lastSyncedId = normalizeString(runData?.last_synced_id);\n\t\t\t\tconst lookbackMs = lookbackDays * 24 * 60 * 60 * 1000;\n\t\t\t\tlet cursorAt = lastSyncedAt || new Date(Date.now() - lookbackMs);\n\n\t\t\t\tif (lastSyncedAt && overlapMinutes > 0) {\n\t\t\t\t\tcursorAt = new Date(cursorAt.getTime() - overlapMinutes * 60 * 1000);\n\t\t\t\t}\n\n\t\t\t\tlet cursorId = lastSyncedId;\n\t\t\t\tlet totalSent = 0;\n\t\t\t\tlet cursorMoved = false;\n\t\t\t\tconst source = {\n\t\t\t\t\tclientSlug: ResolveIOServer.getClientName?.(),\n\t\t\t\t\tclientName: normalizeString(config['CLIENT_NAME']),\n\t\t\t\t\trootUrl: rootUrl,\n\t\t\t\t\treportedAt: new Date(),\n\t\t\t\t\tappVersion: process.env.APP_VERSION\n\t\t\t\t};\n\n\t\t\t\tfor (let i = 0; i < 1000; i++) {\n\t\t\t\t\tconst query = buildCommunicationMetricsQuery(cursorAt, cursorId);\n\t\t\t\t\tconst entries = await CommunicationMetrics.find(query, {\n\t\t\t\t\t\tsort: { date: 1, _id: 1 },\n\t\t\t\t\t\tlimit: batchSize\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!entries.length) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst payloadEntries = entries\n\t\t\t\t\t\t.map(entry => normalizeCommunicationMetricEntry(entry))\n\t\t\t\t\t\t.filter(Boolean);\n\n\t\t\t\t\tif (payloadEntries.length) {\n\t\t\t\t\t\tawait axios.post(endpoint, { entries: payloadEntries, source }, {\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t\t\t'X-ResolveIO-Communication-Metrics-Key': apiKey,\n\t\t\t\t\t\t\t\t'X-ResolveIO-OpenAI-Usage-Key': apiKey,\n\t\t\t\t\t\t\t\t'X-OpenAI-Usage-Key': apiKey,\n\t\t\t\t\t\t\t\t'X-API-Key': apiKey\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttimeout: 20000\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttotalSent += payloadEntries.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst lastEntry = entries[entries.length - 1];\n\t\t\t\t\tif (lastEntry) {\n\t\t\t\t\t\tcursorAt = normalizeDate(lastEntry.date) || cursorAt;\n\t\t\t\t\t\tcursorId = normalizeString((lastEntry as any)._id) || cursorId;\n\t\t\t\t\t\tcursorMoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (entries.length < batchSize) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (cursorMoved) {\n\t\t\t\t\tawait CronJobs.updateOne(\n\t\t\t\t\t\t{ name: 'Communication Metrics Sync' },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$set: {\n\t\t\t\t\t\t\t\t'method_run_data.last_synced_at': cursorAt,\n\t\t\t\t\t\t\t\t'method_run_data.last_synced_id': cursorId,\n\t\t\t\t\t\t\t\t'method_run_data.last_sent_at': new Date(),\n\t\t\t\t\t\t\t\t'method_run_data.last_sent_count': totalSent\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\treportbuilderCronJob: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tdata: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(data: Object) {\n\t\t\t\tif (data && data['active'] === false) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tlet report = await ReportBuilderReports.findById(data['id_report']);\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tconst layoutColumns = getLayoutColumnsFromReport(report);\n\t\t\t\t\tconst selectedFields = syncSelectedFieldsFromLayout(report, layoutColumns);\n\t\t\t\t\treport.fields_selected = selectedFields;\n\t\t\t\t\treport.fields_layout = layoutColumns;\n\n\t\t\t\t\t(report.fields_selected || []).forEach((field: any, index: number) => {\n\t\t\t\t\t\tif (!field?.id) {\n\t\t\t\t\t\t\tfield.id = `f_${index}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t(report.fields_custom || []).forEach(custom => {\n\t\t\t\t\t\tif (!custom) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!custom.selFieldId && custom.id) {\n\t\t\t\t\t\t\tconst match = (report.fields_selected || []).find(field => field.fieldPath === custom.id);\n\t\t\t\t\t\t\tif (match?.id) {\n\t\t\t\t\t\t\t\tcustom.selFieldId = match.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treport.fields_selected.forEach((field: any) => {\n\t\t\t\t\t\tif (!field?.fieldPath) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet dotPath = field.fieldPath.replace(/\\.\\$/g, '');\n\t\t\t\t\t\tlet fieldData = dotPath.split('.');\n\t\t\t\t\t\tfield.fieldPathObj = null;\n\t\t\t\t\t\tfor (let i = fieldData.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tif (!field.fieldPathObj) {\n\t\t\t\t\t\t\t\tfield.fieldPathObj = {[fieldData[i]]: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tfield.fieldPathObj = {[fieldData[i]]: field.fieldPathObj};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\n\t\t\t\t\tif ((report.fields_selected && report.fields_selected.length) || (report.groups_row && report.groups_row.length)) {\n\t\t\t\t\t\tlet fieldsObj = {};\n\t\t\t\t\t\tconst selectedFieldsForQuery = (report.fields_selected || []).filter(field => !((field?.fieldPath || '').startsWith('c_')));\n\n\t\t\t\t\t\treport.fields_sort = report.fields_sort || [];\n\n\t\t\t\t\t\tselectedFieldsForQuery.forEach((field: any) => {\n\t\t\t\t\t\t\tif (field.collection_name === report.collection_root && field.fieldPathObj) {\n\t\t\t\t\t\t\t\tfieldsObj = mergeDeep(fieldsObj, field.fieldPathObj);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst groupIds = (report.groups_row || []).map(g => g.id).filter(Boolean);\n\t\t\t\t\t\tconst userSorts = (report.fields_sort || []).filter(s => !!s.field);\n\t\t\t\t\t\tconst userSortByField = {};\n\t\t\t\t\t\tuserSorts.forEach(s => {\n\t\t\t\t\t\t\tuserSortByField[s.field] = s;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst groupSorts = groupIds.map(id => userSortByField[id] || {field: id, order: 'asc'});\n\t\t\t\t\t\tconst nonGroupSorts = userSorts.filter(s => !groupIds.includes(s.field));\n\t\t\t\t\t\tconst effectiveSorts = groupIds.length ? [...groupSorts, ...nonGroupSorts] : userSorts;\n\n\t\t\t\t\t\tlet sortObj = null;\n\t\t\t\t\t\tif (effectiveSorts.length) {\n\t\t\t\t\t\t\tsortObj = {};\n\t\t\t\t\t\t\teffectiveSorts.forEach(sortField => {\n\t\t\t\t\t\t\t\tlet targetField = sortField.field;\n\n\t\t\t\t\t\t\t\tif (!targetField) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (targetField.startsWith('layout_col_')) {\n\t\t\t\t\t\t\t\t\tconst resolved = resolveFieldRefToLeafId(targetField, report);\n\t\t\t\t\t\t\t\t\ttargetField = resolved || targetField;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (targetField.startsWith('gr_')) {\n\t\t\t\t\t\t\t\t\tsortObj['_id.' + targetField] = (sortField.order === 'asc' ? 1 : -1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tsortObj[targetField] = (sortField.order === 'asc' ? 1 : -1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst totalsForQuery = (report.fields_total || []).map(total => {\n\t\t\t\t\t\t\tconst mappedFields = (total.fields || [])\n\t\t\t\t\t\t\t\t.map(ref => {\n\t\t\t\t\t\t\t\t\tif (!ref) {\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (ref.startsWith('layout_col_')) {\n\t\t\t\t\t\t\t\t\t\treturn resolveFieldRefToLeafId(ref, report);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ref;\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.filter(f => !!f);\n\n\t\t\t\t\t\t\treturn {...total, fields: mappedFields};\n\t\t\t\t\t\t}).filter(total => (total.fields || []).length);\n\t\t\t\t\t\t\n\t\t\t\t\t\treport.fields_total = totalsForQuery;\n\n\t\t\t\t\t\tlet rootOptions: PaginationOptions = {\n\t\t\t\t\t\t\tlimit: 0,\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tfields: fieldsObj,\n\t\t\t\t\t\t\tsort: sortObj\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlet filters = [];\n\t\t\t\t\t\tlet filterArrayFields = [];\n\t\t\t\t\t\tlet filterArrays = [];\n\n\t\t\t\t\t\tselectedFieldsForQuery\n\t\t\t\t\t\t\t.filter(f => (f.fieldPath || '').includes('.$.'))\n\t\t\t\t\t\t\t.forEach(sel => {\n\t\t\t\t\t\t\t\tif (!filterArrayFields.some(f => f?.fieldPath === sel.fieldPath)) {\n\t\t\t\t\t\t\t\t\tfilterArrayFields.push(sel);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t(report.fields_filter || []).forEach(filterAnd => {\n\t\t\t\t\t\t\tlet ors = [];\n\t\t\t\t\t\t\tlet hasArrayTarget = false;\n\n\t\t\t\t\t\t\t(filterAnd.ors || []).forEach((filter: any) => {\n\t\t\t\t\t\t\t\tconst targets = getFilterTargets(filter.field, report);\n\n\t\t\t\t\t\t\t\tif (!targets.length) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttargets.forEach(path => {\n\t\t\t\t\t\t\t\t\tconst isArrayTarget = path.includes('.$.');\n\t\t\t\t\t\t\t\t\tconst normalizedPath = path.replace(/\\.\\$/g, '');\n\t\t\t\t\t\t\t\t\tconst expr = buildFilterExpression(filter, normalizedPath);\n\n\t\t\t\t\t\t\t\t\tif (expr) {\n\t\t\t\t\t\t\t\t\t\tors.push(expr);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (isArrayTarget) {\n\t\t\t\t\t\t\t\t\t\thasArrayTarget = true;\n\t\t\t\t\t\t\t\t\t\tconst leaf = selectedFieldsForQuery.find(a => a.fieldPath === path);\n\t\t\t\t\t\t\t\t\t\tif (leaf && !filterArrayFields.some(f => f?.fieldPath === leaf.fieldPath)) {\n\t\t\t\t\t\t\t\t\t\t\tfilterArrayFields.push(leaf);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (ors.length) {\n\t\t\t\t\t\t\t\tconst filterObj = {$or: ors};\n\t\t\t\t\t\t\t\tif (hasArrayTarget) {\n\t\t\t\t\t\t\t\t\tfilterArrays.push(filterObj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tfilters.push(filterObj);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst res = await this.callMethod('reportBuilderGetResults', report.type, report.collection_root, rootOptions, filters, filterArrays, filterArrayFields, selectedFieldsForQuery, report.fields_custom, report.groups_row, totalsForQuery, report.fields_link, report.id_date_field || null, report.date_interval || null, report.group_type);\n\n\t\t\t\t\t\tif (res && res[0]) {\n\t\t\t\t\t\t\tlet results = res[0].results;\n\t\t\t\t\t\t\tlet reportTotals = res[0].totals;\n\n\t\t\t\t\t\t\tif (report.type === 'Group') {\n\t\t\t\t\t\t\t\tapplyClientGroupSortToData(results, report, effectiveSorts);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst customFields = (report.fields_custom || []).map(cust => ({\n\t\t\t\t\t\t\t\t...cust,\n\t\t\t\t\t\t\t\tid: cust.selFieldId,\n\t\t\t\t\t\t\t\tfieldType: 'Number',\n\t\t\t\t\t\t\t\tleafValueType: cust.leafValueType || 'Value',\n\t\t\t\t\t\t\t\tleafFormatType: 'Number',\n\t\t\t\t\t\t\t\tcolumnName: cust.columnName || cust.id,\n\t\t\t\t\t\t\t\tshow: true\n\t\t\t\t\t\t\t}));\n\n\t\t\t\t\t\t\tconst exportFields = report.fields_selected.filter(a => a.show).concat((<any>customFields));\n\t\t\t\t\t\n\t\t\t\t\t\t\tif (report.type === 'List') {\n\t\t\t\t\t\t\t\texportFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tif ((field.fieldType === 'Number' || field.leafValueType === 'Count') && field.leafFormatType === 'Number') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined ).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = result[field.id].toLocaleString();\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if ((field.fieldType === 'Number' || field.leafValueType === 'Count') && field.leafFormatType === 'String') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = result[field.id].toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if ((field.fieldType === 'Number' || field.leafValueType === 'Count') && field.leafFormatType === 'Currency') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = round(result[field.id], 2).toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Boolean' && (!field.leafFormatType || field.leafFormatType === 'Boolean')) {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = result[field.id] === true ? 'True' : 'False';\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Boolean' && field.leafFormatType === 'String') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = result[field.id] === true ? 'Yes' : 'No';\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Boolean' && field.leafFormatType === 'Boolean_Number') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = result[field.id] === true ? 1 : 0;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Date' && (field.leafFormatType === 'Date')) {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = moment(result[field.id]).format('L');\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Date' && field.leafFormatType === 'Time') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = moment(result[field.id]).format('LT');\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Date' && field.leafFormatType === 'DateTime') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = moment(result[field.id]).format('MM/DD/YYYY h:mm A');\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Date' && field.leafFormatType === 'Date_long') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = moment(result[field.id]).format('LL');\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Date' && field.leafFormatType === 'DateTime_long') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = moment(result[field.id]).format('LLL');\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (field.fieldType === 'Date' && field.leafFormatType === 'Timestamp') {\n\t\t\t\t\t\t\t\t\t\tresults.filter(a => a[field.id] !== null && a[field.id] !== undefined).forEach(result => {\n\t\t\t\t\t\t\t\t\t\t\tresult[field.id] = moment(result[field.id]).toDate().getTime();\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tlet wb = new Excel.Workbook();\n\t\t\t\t\t\t\t\tlet ws = wb.addWorksheet('RB_1', {views: [{showGridLines: true}]});\n\t\t\t\t\t\t\t\twb.properties.date1904 = false;\n\t\t\t\t\t\t\t\twb.calcProperties.fullCalcOnLoad = true;\n\n\t\t\t\t\t\t\t\tlet currentRow = 1;\n\t\t\t\t\t\t\t\tlet row = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\trow.getCell(2).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(4).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(2).value = 'Report Name:';\n\t\t\t\t\t\t\t\trow.getCell(4).value = report.report_name;\n\n\t\t\t\t\t\t\t\tcurrentRow += 1;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\trow.getCell(2).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(4).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(2).value = 'Run Date:';\n\t\t\t\t\t\t\t\trow.getCell(4).value = moment().format('LLL');\n\n\t\t\t\t\t\t\t\tcurrentRow += 2;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\tconst useLayout = (layoutColumns && layoutColumns.length > 0);\n\t\t\t\t\t\t\t\tconst headers: string[] = [];\n\n\t\t\t\t\t\t\t\treport.groups_row.forEach(group => {\n\t\t\t\t\t\t\t\t\theaders.push(group.columnName);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (useLayout) {\n\t\t\t\t\t\t\t\t\tlayoutColumns.forEach((col, idx) => {\n\t\t\t\t\t\t\t\t\t\theaders.push(col.header || `Column ${idx + 1}`);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\texportFields.forEach(field => {\n\t\t\t\t\t\t\t\t\t\theaders.push(field.columnName);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\theaders.forEach((header, headerIdx) => {\n\t\t\t\t\t\t\t\t\trow.getCell(headerIdx + 1).value = header;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tcurrentRow += 1;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\tconst exportResults = deepCopy(results || []);\n\n\t\t\t\t\t\t\t\texportResults.forEach(result => {\n\t\t\t\t\t\t\t\t\tlet currentCol = 1;\n\n\t\t\t\t\t\t\t\t\treport.groups_row.forEach(group => {\n\t\t\t\t\t\t\t\t\t\twriteExcelCell(row.getCell(currentCol), result?._id?.[group.id] ?? '', group.treeItem);\n\t\t\t\t\t\t\t\t\t\tcurrentCol += 1;\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (useLayout) {\n\t\t\t\t\t\t\t\t\t\tconst layoutRow = materializeLayoutRow(report, layoutColumns, report.fields_selected, result);\n\t\t\t\t\t\t\t\t\t\tlayoutColumns.forEach((col, colIdx) => {\n\t\t\t\t\t\t\t\t\t\t\tconst cellValue = getLayoutCellExportValue(report, layoutRow, colIdx);\n\t\t\t\t\t\t\t\t\t\t\tconst primaryFieldMeta = getPrimaryFieldForLayoutColumn(col, report.fields_selected);\n\t\t\t\t\t\t\t\t\t\t\twriteExcelCell(row.getCell(currentCol), cellValue === undefined ? '' : cellValue, primaryFieldMeta);\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol += 1;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\texportFields.forEach(field => {\n\t\t\t\t\t\t\t\t\t\t\twriteExcelCell(row.getCell(currentCol), result[field.id] ?? '', field);\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol += 1;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tcurrentRow += 1;\n\t\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tlet buffer = await wb.xlsx.writeBuffer();\n\t\t\t\t\t\t\t\t\tfor (let email of data['emails']) {\n\t\t\t\t\t\t\t\t\t\tawait this.sendEmail(email,\n\t\t\t\t\t\t\t\t\t\t\tthis.serverConfig['CLIENT_NAME'] + ' Scheduled Report - ' + report.report_name,\n\t\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t\t\t<b>` + this.serverConfig['CLIENT_NAME'] + ` Automated Report</b><br>\n\t\t\t\t\t\t\t\t\t\t\t<b>Report Name: </b>` + report.report_name + `<br>\n\t\t\t\t\t\t\t\t\t\t\t<b>Prepared By: </b>` + data['user'] + `<br><br>\n\t\t\t\t\t\t\t\t\t\t\tAttached are the results of this automated report.<br><br>\n\t\t\t\t\t\t\t\t\t\t\tResolveIO<br><br>`,\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilename: report.report_name + '-' + moment().format('MM-DD-YYYY-hh-mm-A') + '.xlsx',\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: buffer\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\tthis.serverConfig['MAIL_FROM_REPORTS'],\n\t\t\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error writing excel export', err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (report.type === 'Group') {\n\t\t\t\t\t\t\t\texportFields.forEach(field => {\n\t\t\t\t\t\t\t\t\tresults.forEach(result => {\n\t\t\t\t\t\t\t\t\t\tmodifyDataTypeField(report, result, field, 1);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tlet wb = new Excel.Workbook();\n\t\t\t\t\t\t\t\tlet ws = wb.addWorksheet('RB_1', {views: [{showGridLines: false}]});\n\t\t\t\t\t\t\t\twb.properties.date1904 = false;\n\t\t\t\t\t\t\t\twb.calcProperties.fullCalcOnLoad = true;\n\n\t\t\t\t\t\t\t\tlet currentRow = 1;\n\t\t\t\t\t\t\t\tlet row = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\trow.getCell(2).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(4).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(2).value = 'Report Name:';\n\t\t\t\t\t\t\t\trow.getCell(4).value = report.report_name;\n\n\t\t\t\t\t\t\t\tcurrentRow += 1;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\trow.getCell(2).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(4).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(2).value = 'Run Date:';\n\t\t\t\t\t\t\t\trow.getCell(4).value = moment().format('LLL');\n\n\t\t\t\t\t\t\t\tcurrentRow += 2;\n\n\t\t\t\t\t\t\t\tlet copy = deepCopy(results);\n\t\t\t\t\t\t\t\tlet widths = [];\n\t\t\t\t\t\t\t\tcopy.forEach(res => {\n\t\t\t\t\t\t\t\t\tcurrentRow = tabGroupExcelRecursive(report, ws, currentRow, 1, res, exportFields);\n\t\t\t\t\t\t\t\t\ttabGroupExcelWidthRecursive(report, 1, res, widths, exportFields);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tfor (let i = 1; i < ws.columns.length; i++) {\n\t\t\t\t\t\t\t\t\tws.columns[i].width = widths[i - 1];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet now = new Date();\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tlet buffer = await wb.xlsx.writeBuffer();\n\t\t\t\t\t\t\t\t\tfor (let email of data['emails']) {\n\t\t\t\t\t\t\t\t\t\tawait this.sendEmail(email,\n\t\t\t\t\t\t\t\t\t\t\tthis.serverConfig['CLIENT_NAME'] + ' Scheduled Report - ' + report.report_name,\n\t\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t\t\t<b>` + this.serverConfig['CLIENT_NAME'] + ` Automated Report</b><br>\n\t\t\t\t\t\t\t\t\t\t\t<b>Report Name: </b>` + report.report_name + `<br>\n\t\t\t\t\t\t\t\t\t\t\t<b>Prepared By: </b>` + data['user'] + `<br><br>\n\t\t\t\t\t\t\t\t\t\t\tAttached are the results of this automated report.<br><br>\n\t\t\t\t\t\t\t\t\t\t\tHave a great day!<br><br>\n\t\t\t\t\t\t\t\t\t\t\tResolveIO<br><br>`,\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilename: 'Group_Report_' + report.report_name + '_' + now.getFullYear() + '_' + (now.getMonth() + 1) + '_' + now.getDate() + '.xlsx',\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: buffer\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\tthis.serverConfig['MAIL_FROM_REPORTS'],\n\t\t\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error writing excel export', err)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (report.type === 'Dated') {\n\t\t\t\t\t\t\t\tlet datedUniqueDates = [];\n\t\t\t\t\t\t\t\tlet datedUniqueGroups = [];\n\t\t\t\t\t\t\t\tlet datedData = [];\n\t\t\t\t\t\t\t\tlet reportTotalGroups = [];\n\t\t\t\t\t\t\t\tlet reportTotalDates = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Step 1: Handle quarterly dates if applicable\n\t\t\t\t\t\t\t\tif (report.date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\tresults.forEach(dataPt => {\n\t\t\t\t\t\t\t\t\t\tif (dataPt._id.month < 4) {\n\t\t\t\t\t\t\t\t\t\t\tdataPt._id.quarter = 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (dataPt._id.month < 7) {\n\t\t\t\t\t\t\t\t\t\t\tdataPt._id.quarter = 2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (dataPt._id.month < 10) {\n\t\t\t\t\t\t\t\t\t\t\tdataPt._id.quarter = 3;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tdataPt._id.quarter = 4;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tdelete dataPt._id.month;\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t// Deduplicate quarterly data\n\t\t\t\t\t\t\t\t\tfor (let i = results.length - 1; i >= 1; i--) {\n\t\t\t\t\t\t\t\t\t\tlet dataPt = results[i];\n\t\t\t\t\t\t\t\t\t\tif (results.filter(a => JSON.stringify(a._id) === JSON.stringify(dataPt._id)).length > 1) {\n\t\t\t\t\t\t\t\t\t\t\tlet tmpData = results.find(a => JSON.stringify(a._id) === JSON.stringify(dataPt._id));\n\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(tmpData)\n\t\t\t\t\t\t\t\t\t\t\t\t.filter(a => a !== '_id')\n\t\t\t\t\t\t\t\t\t\t\t\t.forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttmpData[key] += dataPt[key];\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tresults.splice(i, 1); // Remove the duplicate entry\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Step 2: Prepare unique groups\n\t\t\t\t\t\t\t\tlet tmpResults = deepCopy(results);\n\t\t\t\t\t\t\t\ttmpResults.forEach(result => {\n\t\t\t\t\t\t\t\t\tdelete result._id.day;\n\t\t\t\t\t\t\t\t\tdelete result._id.week;\n\t\t\t\t\t\t\t\t\tdelete result._id.month;\n\t\t\t\t\t\t\t\t\tdelete result._id.quarter;\n\t\t\t\t\t\t\t\t\tdelete result._id.year;\n\n\t\t\t\t\t\t\t\t\tlet tmpGroup = {};\n\t\t\t\t\t\t\t\t\tObject.keys(result._id).forEach(key => {\n\t\t\t\t\t\t\t\t\t\ttmpGroup[key] = result._id[key];\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (!datedUniqueGroups.find(a => JSON.stringify(a) === JSON.stringify(tmpGroup))) {\n\t\t\t\t\t\t\t\t\t\tdatedUniqueGroups.push(tmpGroup);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t// Step 3: Prepare unique dates\n\t\t\t\t\t\t\t\ttmpResults = deepCopy(results);\n\t\t\t\t\t\t\t\ttmpResults.forEach(result => {\n\t\t\t\t\t\t\t\t\tObject.keys(result._id)\n\t\t\t\t\t\t\t\t\t\t.filter(a => a !== 'second' && a !== 'hour' && a !== 'minute' && a !== 'day' && a !== 'week' && a !== 'month' && a !== 'quarter' && a !== 'year')\n\t\t\t\t\t\t\t\t\t\t.forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\tdelete result._id[key];\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tlet tmpDate = {};\n\t\t\t\t\t\t\t\t\tObject.keys(result._id).forEach(key => {\n\t\t\t\t\t\t\t\t\t\ttmpDate[key] = result._id[key];\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (!datedUniqueDates.find(a => JSON.stringify(a) === JSON.stringify(tmpDate))) {\n\t\t\t\t\t\t\t\t\t\tdatedUniqueDates.push(tmpDate);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t// Build the date strings\n\t\t\t\t\t\t\t\t// Ensure moment is using America/Chicago timezone for all date processing\n\t\t\t\t\t\t\t\tdatedUniqueDates.forEach(result => {\n\t\t\t\t\t\t\t\t\tif (!result.year) {\n\t\t\t\t\t\t\t\t\t\tresult.dateString = 'No Date';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (report.date_interval === 'Seconds') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tmonth: result.month - 1, // Use `month - 1` since months are zero-indexed in moment as well\n\t\t\t\t\t\t\t\t\t\t\t\tday: result.day,\n\t\t\t\t\t\t\t\t\t\t\t\thour: result.hour,\n\t\t\t\t\t\t\t\t\t\t\t\tminute: result.minute,\n\t\t\t\t\t\t\t\t\t\t\t\tsecond: result.second\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = moment(result.date).format('MMM DD YYYY HH:mm:ss');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Minutes') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tmonth: result.month - 1,\n\t\t\t\t\t\t\t\t\t\t\t\tday: result.day,\n\t\t\t\t\t\t\t\t\t\t\t\thour: result.hour,\n\t\t\t\t\t\t\t\t\t\t\t\tminute: result.minute\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = moment(result.date).format('MMM DD YYYY HH:mm');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Hours') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tmonth: result.month - 1,\n\t\t\t\t\t\t\t\t\t\t\t\tday: result.day,\n\t\t\t\t\t\t\t\t\t\t\t\thour: result.hour\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = moment(result.date).format('MMM DD YYYY HH');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Daily') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tmonth: result.month - 1,\n\t\t\t\t\t\t\t\t\t\t\t\tday: result.day\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = moment(result.date).format('MMM DD YYYY');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Weekly') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tweek: result.week\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).day('Monday').toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateLast = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tweek: result.week\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).day('Sunday').toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = 'Week #' + result.week + ' ' + result.year + ' (' + moment(result.date).format('MM/DD/YY') + ' - ' + moment(result.dateLast).format('MM/DD/YY') + ')';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Monthly') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year,\n\t\t\t\t\t\t\t\t\t\t\t\tmonth: result.month - 1, // Months are zero-indexed in moment\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = moment(result.date).format('MMM YYYY');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Quarterly') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).quarter(result.quarter).toDate();;\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = 'Q' + result.quarter + ' ' + result.year;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (report.date_interval === 'Yearly') {\n\t\t\t\t\t\t\t\t\t\t\tresult.date = moment.tz({\n\t\t\t\t\t\t\t\t\t\t\t\tyear: result.year\n\t\t\t\t\t\t\t\t\t\t\t}, (process.env.TZ_CLIENT || 'America/Chicago')).toDate();\n\t\t\t\t\t\t\t\t\t\t\tresult.dateString = result.year.toString();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tdatedUniqueDates = datedUniqueDates.filter(a => !a.date)\n\t\t\t\t\t\t\t\t\t.concat(datedUniqueDates.filter(a => a.date).sort((a, b) => a.date.getTime() - b.date.getTime()));\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Step 4: Build datedData and reportTotalGroups\n\t\t\t\t\t\t\t\tdatedUniqueDates.forEach(date => {\n\t\t\t\t\t\t\t\t\tlet tmpData = [];\n\t\t\t\t\t\t\t\t\tlet tmpTotalDated = {};\n\t\t\t\t\t\t\t\t\tlet tmpTotalCnt = {};\n\t\t\t\t\t\t\t\t\tlet tmpTotalType = {};\n\n\t\t\t\t\t\t\t\t\tdatedUniqueGroups.forEach(group => {\n\t\t\t\t\t\t\t\t\t\tlet result = results.find(a => {\n\t\t\t\t\t\t\t\t\t\t\tlet match = true;\n\n\t\t\t\t\t\t\t\t\t\t\t// Match the group fields\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(group).forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (a._id[key] !== group[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t// Match the date fields\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(date).filter(key => key !== 'date' && key !== 'dateLast' && key !== 'dateString').forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (a._id[key] !== date[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\treturn match;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t\t\t\t\ttmpData.push(result);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(result._id).filter(a => a).forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (report.fields_total.filter(a => a.fields.includes(key)).length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!tmpTotalDated[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalDated[key] = result._id[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalDated[key] += result._id[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!tmpTotalCnt[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalCnt[key] = 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalCnt[key] += 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalType[key] = report.fields_total.find(a => a.fields.includes(key)).type;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tObject.keys(result).filter(a => a && a !== '_id').forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (report.fields_total.filter(a => a.fields.includes(key)).length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!tmpTotalDated[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalDated[key] = result[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalDated[key] += result[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!tmpTotalCnt[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalCnt[key] = 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalCnt[key] += 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalType[key] = report.fields_total.find(a => a.fields.includes(key)).type;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\ttmpData.push(null);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t// Handle averaging for totals\n\t\t\t\t\t\t\t\t\tObject.keys(tmpTotalType).forEach(totalKey => {\n\t\t\t\t\t\t\t\t\t\tif (tmpTotalType[totalKey] === 'avg') {\n\t\t\t\t\t\t\t\t\t\t\ttmpTotalDated[totalKey] = tmpTotalDated[totalKey] / tmpTotalCnt[totalKey];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\ttmpTotalDated[totalKey] = round(tmpTotalDated[totalKey], 2);\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treportTotalDates.push(tmpTotalDated);\n\t\t\t\t\t\t\t\t\tdatedData.push(tmpData);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Calculate group-level totals\n\t\t\t\t\t\t\t\tdatedUniqueGroups.forEach(group => {\n\t\t\t\t\t\t\t\t\tlet tmpTotalGroup = {};\n\t\t\t\t\t\t\t\t\tlet filteredData = results.filter(a => {\n\t\t\t\t\t\t\t\t\t\tlet match = (!Object.keys(group).length || group._id === null) ? false : true;\n\t\t\t\t\t\t\t\t\t\tObject.keys(group).filter(a => a !== 'date' && a !== 'dateLast' && a !== 'dateString' && a !== 'second' && a !== 'minute' && a !== 'hour' && a !== 'day' && a !== 'week' && a !== 'month' && a !== 'quarter' && a !== 'year').forEach(key => {\n\t\t\t\t\t\t\t\t\t\t\tif (a._id[key] !== group[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\tmatch = false;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\treturn match;\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\treport.fields_total.forEach(total => {\n\t\t\t\t\t\t\t\t\t\ttotal.fields.forEach(field => {\n\t\t\t\t\t\t\t\t\t\t\tif (filteredData.length) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalGroup[field] = filteredData.filter(a => a && a[field])\n\t\t\t\t\t\t\t\t\t\t\t\t\t.map(a => a[field])\n\t\t\t\t\t\t\t\t\t\t\t\t\t.reduce((a, b) => a + b, 0);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tif (total.type === 'avg') {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalGroup[field] = round(tmpTotalGroup[field] / filteredData.length, 2);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\ttmpTotalGroup[field] = 0;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treportTotalGroups.push(tmpTotalGroup);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Step 5: Proceed with Excel generation using datedData and reportTotalGroups\n\t\t\t\t\t\t\t\tlet wb = new Excel.Workbook();\n\t\t\t\t\t\t\t\tlet ws = wb.addWorksheet('Dated_Report', {views: [{showGridLines: true}]});\n\t\t\t\t\t\t\t\twb.properties.date1904 = false;\n\t\t\t\t\t\t\t\twb.calcProperties.fullCalcOnLoad = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tlet currentRow = 1;\n\t\t\t\t\t\t\t\tlet currentCol = 1;\n\t\t\t\t\t\t\t\tlet row = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\trow.getCell(2).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(4).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(2).value = 'Report Name:';\n\t\t\t\t\t\t\t\trow.getCell(4).value = report.report_name;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tcurrentRow += 1;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\n\t\t\t\t\t\t\t\trow.getCell(2).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(4).font = {\n\t\t\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\t\t\tsize: 14\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\trow.getCell(2).value = 'Run Date:';\n\t\t\t\t\t\t\t\trow.getCell(4).value = moment().format('LLL');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tcurrentRow += 2;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Add group column headers\n\t\t\t\t\t\t\t\treport.groups_row.forEach(group => {\n\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = group.columnName;\n\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Add field headers\n\t\t\t\t\t\t\t\tcurrentCol += report.fields_selected.filter(a => a.show).length;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Add the date interval headers\n\t\t\t\t\t\t\t\treport.fields_selected.filter(a => a.show).forEach(() => {\n\t\t\t\t\t\t\t\t\tdatedUniqueDates.forEach(date => {\n\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = date.dateString;\n\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Add totals headers\n\t\t\t\t\t\t\t\treport.fields_total.forEach(total => {\n\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = 'Totals - ' + toTitleCase(total.type);\n\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tcurrentCol = 1;\n\t\t\t\t\t\t\t\tcurrentRow += 1;\n\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Populate data for each group and field with date intervals\n\t\t\t\t\t\t\t\tfor (let i = 0; i < datedUniqueGroups.length; i++) {\n\t\t\t\t\t\t\t\t\tlet group = datedUniqueGroups[i];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tfor (let j = 0; j < report.fields_selected.filter(a => a.show).length; j++) {\n\t\t\t\t\t\t\t\t\t\tlet field = report.fields_selected.filter(a => a.show)[j];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tcurrentCol = 1;\n\t\t\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// Populate group data\n\t\t\t\t\t\t\t\t\t\treport.groups_row.forEach(groupRow => {\n\t\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = (j === 0) ? group[groupRow.id] : '';\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// Populate field data\n\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = field.columnName;\n\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// Populate date interval data for each field\n\t\t\t\t\t\t\t\t\t\tfor (let k = 0; k < datedUniqueDates.length; k++) {\n\t\t\t\t\t\t\t\t\t\t\tlet result = datedData[k];\n\t\t\t\t\t\t\t\t\t\t\tif (result[i]) {\n\t\t\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = result[i][field.id] ? result[i][field.id] : '';\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = '';\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// Add totals for each field in the report\n\t\t\t\t\t\t\t\t\t\tfor (let k = 0; k < report.fields_total.length; k++) {\n\t\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = reportTotalGroups[i][field.id] ? reportTotalGroups[i][field.id] : '';\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tcurrentRow++; // Move to the next row for the next field\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Add report totals at the bottom\n\t\t\t\t\t\t\t\tif (reportTotals) {\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < report.fields_total.length; i++) {\n\t\t\t\t\t\t\t\t\t\tlet total = report.fields_total[i];\n\t\t\t\t\t\t\t\t\t\trow = ws.getRow(currentRow);\n\t\t\t\t\t\t\t\t\t\tcurrentCol = 1;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = toTitleCase(total.type) + ' Totals';\n\t\t\t\t\t\t\t\t\t\tcurrentCol += report.groups_row.length; // Skip group columns\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// Skip the date columns for the totals row\n\t\t\t\t\t\t\t\t\t\treport.fields_selected.filter(a => a.show).forEach(() => {\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol += 1;\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tdatedUniqueDates.forEach(() => {\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t// Set totals in the correct fields\n\t\t\t\t\t\t\t\t\t\tfor (let j = 0; j < report.fields_selected.filter(a => a.show).length; j++) {\n\t\t\t\t\t\t\t\t\t\t\tlet field = report.fields_selected.filter(a => a.show)[j];\n\t\t\t\t\t\t\t\t\t\t\trow.getCell(currentCol).value = reportTotals[total.id + '_' + field.id] || '';\n\t\t\t\t\t\t\t\t\t\t\tcurrentCol++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tcurrentRow++; // Move to the next row for the next total\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t// Save the Excel file and send it via email\n\t\t\t\t\t\t\t\t\tlet buffer = await wb.xlsx.writeBuffer();\n\t\t\t\t\t\t\t\t\tfor (let email of data['emails']) {\n\t\t\t\t\t\t\t\t\t\tawait this.sendEmail(\n\t\t\t\t\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t\t\t\t\t\tthis.serverConfig['CLIENT_NAME'] + ' Scheduled Report - ' + report.report_name,\n\t\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t\t\t<b>${this.serverConfig['CLIENT_NAME']} Automated Report</b><br>\n\t\t\t\t\t\t\t\t\t\t\t<b>Report Name: </b>${report.report_name}<br>\n\t\t\t\t\t\t\t\t\t\t\t<b>Prepared By: </b>${data['user']}<br><br>\n\t\t\t\t\t\t\t\t\t\t\tAttached are the results of this automated report.<br><br>\n\t\t\t\t\t\t\t\t\t\t\tResolveIO<br><br>`,\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilename: report.report_name + '-' + moment().format('MM-DD-YYYY-hh-mm-A') + '.xlsx',\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: buffer\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\tthis.serverConfig['MAIL_FROM_REPORTS'],\n\t\t\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error writing excel export', err);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in Report Builder Cron Job - Report Builder Build Tree: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction modifyDataTypeField(report, result, field, index) {\n\tconst processFieldValue = (value, field) => {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (field.fieldType === 'Boolean') {\n\t\t\tif (!field.leafFormatType || field.leafFormatType === 'Boolean') {\n\t\t\t\treturn value === true ? 'True' : 'False';\n\t\t\t}\n\t\t\telse if (field.leafFormatType === 'String') {\n\t\t\t\treturn value === true ? 'Yes' : 'No';\n\t\t\t}\n\t\t\telse if (field.leafFormatType === 'Boolean_Number') {\n\t\t\t\treturn value === true ? 1 : 0;\n\t\t\t}\n\t\t}\n\t\telse if (field.fieldType === 'Number' || field.leafValueType === 'Count') {\n\t\t\tif (field.leafFormatType === 'Number') {\n\t\t\t\treturn value.toLocaleString();\n\t\t\t}\n\t\t\telse if (field.leafFormatType === 'String') {\n\t\t\t\treturn value.toString();\n\t\t\t}\n\t\t\telse if (field.leafFormatType === 'Currency') {\n\t\t\t\treturn round(value, 2).toLocaleString('en-US', { style: 'currency', currency: 'USD' });\n\t\t\t}\n\t\t}\n\t\telse if (field.fieldType === 'Date') {\n\t\t\tswitch (field.leafFormatType) {\n\t\t\t\tcase 'Date':\n\t\t\t\t\treturn moment(value).format('L');\n\t\t\t\tcase 'Time':\n\t\t\t\t\treturn moment(value).format('LT');\n\t\t\t\tcase 'DateTime':\n\t\t\t\t\treturn moment(value).format('MM/DD/YYYY h:mm A');\n\t\t\t\tcase 'Date_long':\n\t\t\t\t\treturn moment(value).format('LL');\n\t\t\t\tcase 'DateTime_long':\n\t\t\t\t\treturn moment(value).format('LLL');\n\t\t\t\tcase 'Timestamp':\n\t\t\t\t\treturn moment(value).toDate().getTime();\n\t\t\t\tdefault:\n\t\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t};\n\n\tconst processArrayField = (array, field) => {\n\t\treturn array.map(value => processFieldValue(value, field));\n\t};\n\n\tif (index < report.groups_row.length) {\n\t\t// Handle grouped data\n\t\tconst groupKey = 'gr_' + (index + 1);\n\t\tif (result[groupKey]) {\n\t\t\tresult[groupKey].forEach(subResult => {\n\t\t\t\tmodifyDataTypeField(report, subResult, field, index + 1);\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\t// Process final-level fields\n\t\tif (Array.isArray(result[field.id])) {\n\t\t\tresult[field.id] = processArrayField(result[field.id], field);\n\t\t}\n\t\telse {\n\t\t\tresult[field.id] = processFieldValue(result[field.id], field);\n\t\t}\n\t}\n}\n\nfunction tabGroupExcelRecursive(report, ws: Excel.Worksheet, currentRow, level, result, fields) {\n\tlet row = ws.getRow(currentRow);\n\tconst fieldCount = fields.length;\n\n\tif (level < report.groups_row.length) {\n\t\trow.getCell(2).fill = {\n\t\t\tfgColor: {argb: report.groups_row[level - 1].fill_color ? report.groups_row[level - 1].fill_color.replace('#', '') : 'ffffff'},\n\t\t\ttype: 'pattern',\n\t\t\tpattern: 'solid'\n\t\t};\n\t\trow.getCell(2).font = {\n\t\t\tcolor: {argb: report.groups_row[level - 1].font_color ? report.groups_row[level - 1].font_color.replace('#', '') : '000000'},\n\t\t\tname: 'Arial',\n\t\t\tbold: true,\n\t\t\tsize: 14\n\t\t};\n\t\t\n\t\tconst currentGroup = report.groups_row[level - 1];\n\t\trow.getCell(2).value = currentGroup.columnName + ': ' + (result._id[currentGroup.id] || '');\n\t\tws.mergeCells(row.getCell(2).$col$row + ':' + row.getCell(fieldCount + 1).$col$row);\n\t\t\n\t\trow.getCell(2).border = {\n\t\t\ttop: {style:'thick'},\n\t\t\tleft: {style:'thick'},\n\t\t\tright: {style: 'thick'}\n\t\t};\n\n\t\tif (report.fields_total.length) {\n\t\t\treport.fields_total.forEach(total => {\n\t\t\t\tcurrentRow += 1;\n\t\t\t\trow = ws.getRow(currentRow);\n\n\t\t\t\tfields.forEach((field, fieldIndex) => {\n\t\t\t\t\tif (total.fields.includes(field.id)) {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).value = field.columnName;\n\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).font = {\n\t\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\tsize: 10\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (field.leafFormatType === 'Currency') {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '\"$\"#,##0.00';\n\t\t\t\t\t}\n\t\t\t\t\telse if (field.leafFormatType === 'Number') {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '#,##0';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fieldIndex === 0) {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\t\tleft: {style:'thick'}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse if (fieldIndex === fieldCount - 1) {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\t\tright: {style:'thick'}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t\n\t\t// Totals\n\t\treport.fields_total.forEach(total => {\n\t\t\tcurrentRow += 1;\n\t\t\trow = ws.getRow(currentRow);\n\n\t\t\tfields.forEach((field, fieldIndex) => {\n\t\t\t\tif (total.fields.includes(field.id)) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).value = result[total.id + '_' + field.id];\n\n\t\t\t\t\trow.getCell(fieldIndex + 2).font = {\n\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\tsize: 10\n\t\t\t\t\t};\n\n\t\t\t\t\tif (field.leafFormatType === 'Currency') {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '\"$\"#,##0.00';\n\t\t\t\t\t}\n\t\t\t\t\telse if (field.leafFormatType === 'Number') {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '#,##0';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (fieldIndex === 0) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\ttop: {style:'thin'},\n\t\t\t\t\t\tleft: {style:'thick'},\n\t\t\t\t\t\tbottom: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (fieldIndex === fieldCount - 1) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\ttop: {style:'thin'},\n\t\t\t\t\t\tbottom: {style:'thick'},\n\t\t\t\t\t\tright: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\ttop: {style:'thin'},\n\t\t\t\t\t\tbottom: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t\n\t\tcurrentRow += 1;\n\n\t\t\tconst nextGroup = report.groups_row[level];\n\t\t\tif (nextGroup) {\n\t\t\t\tconst nextResults = result[nextGroup.id];\n\t\t\t\tif (Array.isArray(nextResults)) {\n\t\t\t\t\tnextResults.forEach(tDataRes => {\n\t\t\t\t\t\tcurrentRow = tabGroupExcelRecursive(report, ws, currentRow, level + 1, tDataRes, fields);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t}\n\telse {\n\t\trow.getCell(2).fill = {\n\t\t\tfgColor: {argb: report.groups_row[level - 1].fill_color ? report.groups_row[level - 1].fill_color.replace('#', '') : 'ffffff'},\n\t\t\ttype: 'pattern',\n\t\t\tpattern: 'solid'\n\t\t};\n\t\trow.getCell(2).font = {\n\t\t\tcolor: {argb: report.groups_row[level - 1].font_color ? report.groups_row[level - 1].font_color.replace('#', '') : '000000'},\n\t\t\tname: 'Arial',\n\t\t\tbold: true,\n\t\t\tsize: 12\n\t\t};\n\n\t\tconst finalGroup = report.groups_row[level - 1];\n\t\trow.getCell(2).value = finalGroup.columnName + ': ' + (result._id[finalGroup.id] || '');\n\t\tws.mergeCells(row.getCell(2).$col$row + ':' + row.getCell(fieldCount + 1).$col$row);\n\n\t\trow.getCell(2).border = {\n\t\t\ttop: {style:'thick'},\n\t\t\tleft: {style:'thick'},\n\t\t\tright: {style: 'thick'}\n\t\t};\n\n\t\tcurrentRow += 1;\n\t\trow = ws.getRow(currentRow);\n\t\t// Headers\n\t\tfields.forEach((field, fieldIndex) => {\n\t\t\trow.getCell(fieldIndex + 2).value = field.columnName;\n\t\t\trow.getCell(fieldIndex + 2).font = {\n\t\t\t\tname: 'Arial',\n\t\t\t\tbold: true,\n\t\t\t\tsize: 10\n\t\t\t};\n\n\t\t\tif (field.leafFormatType === 'Currency') {\n\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '\"$\"#,##0.00';\n\t\t\t}\n\t\t\telse if (field.leafFormatType === 'Number') {\n\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '#,##0';\n\t\t\t}\n\n\t\t\tif (fieldIndex === 0) {\n\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\tleft: {style:'thick'}\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if (fieldIndex === fieldCount - 1) {\n\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\tright: {style:'thick'}\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\t// Data\n\t\tgetMaxRows(result).forEach((res, resIndex) => {\n\t\t\tcurrentRow += 1;\n\t\t\trow = ws.getRow(currentRow);\n\n\t\t\tfields.forEach((field, fieldIndex) => {\n\t\t\t\tlet value = null;\n\n\t\t\t\tif (Array.isArray(result[field.id])) {\n\t\t\t\t\tvalue = result[field.id][resIndex] !== undefined ? result[field.id][resIndex] : result[field.id][result[field.id].length - 1];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvalue = result[field.id];\n\t\t\t\t}\n\n\t\t\t\tif (field.fieldType === 'Number' && typeof(value) === 'string' && value) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).value = parseFloat(value.replace(new RegExp(/\\,/g), '').replace(new RegExp(/\\$/g), ''));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow.getCell(fieldIndex + 2).value = value;\n\t\t\t\t}\n\n\t\t\t\tif (field.leafFormatType === 'Currency') {\n\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '\"$\"#,##0.00';\n\t\t\t\t}\n\t\t\t\telse if (field.leafFormatType === 'Number') {\n\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '#,##0';\n\t\t\t\t}\n\n\t\t\t\trow.getCell(fieldIndex + 2).font = {\n\t\t\t\t\tname: 'Arial',\n\t\t\t\t\tsize: 10\n\t\t\t\t};\n\n\t\t\t\tif (fieldIndex === 0) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\tleft: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (fieldIndex === fieldCount - 1) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\tright: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t\n\t\t// Totals\n\t\treport.fields_total.forEach(total => {\n\t\t\tcurrentRow += 1;\n\t\t\trow = ws.getRow(currentRow);\n\n\t\t\tfields.forEach((field, fieldIndex) => {\n\t\t\t\tif (total.fields.includes(field.id)) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).value = result[total.id + '_' + field.id];\n\n\t\t\t\t\trow.getCell(fieldIndex + 2).font = {\n\t\t\t\t\t\tname: 'Arial',\n\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\tsize: 10\n\t\t\t\t\t};\n\n\t\t\t\t\tif (field.leafFormatType === 'Currency') {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '\"$\"#,##0.00';\n\t\t\t\t\t}\n\t\t\t\t\telse if (field.leafFormatType === 'Number') {\n\t\t\t\t\t\trow.getCell(fieldIndex + 2).numFmt = '#,##0';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (fieldIndex === 0) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\ttop: {style:'thin'},\n\t\t\t\t\t\tleft: {style:'thick'},\n\t\t\t\t\t\tbottom: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (fieldIndex === fieldCount - 1) {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\ttop: {style:'thin'},\n\t\t\t\t\t\tbottom: {style:'thick'},\n\t\t\t\t\t\tright: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow.getCell(fieldIndex + 2).border = {\n\t\t\t\t\t\ttop: {style:'thin'},\n\t\t\t\t\t\tbottom: {style:'thick'}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\treturn currentRow + 1;\n}\n\nfunction tabGroupExcelWidthRecursive(report, level, result, cols, fields) {\n\tif (level < report.groups_row.length) {\n\t\t\tconst nextGroup = report.groups_row[level];\n\t\t\tif (nextGroup) {\n\t\t\t\tconst nextResults = result[nextGroup.id];\n\t\t\t\tif (Array.isArray(nextResults)) {\n\t\t\t\t\tnextResults.forEach(tDataRes => {\n\t\t\t\t\t\tcols = tabGroupExcelWidthRecursive(report, level + 1, tDataRes, cols, fields);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t}\n\telse {\n\t\tfields.forEach((field, fieldIndex) => {\n\t\t\tif (Array.isArray(result[field.id])) {\n\t\t\t\tresult[field.id].forEach(res => {\n\t\t\t\t\tlet length = 10;\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\tlength = res.length + 3;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!cols[fieldIndex]) {\n\t\t\t\t\t\tcols[fieldIndex] = Math.max(10, field.columnName.length);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (length > cols[fieldIndex]) {\n\t\t\t\t\t\tcols[fieldIndex] = length;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet res = result[field.id];\n\t\t\t\tlet length = 10;\n\n\t\t\t\tif (res !== null && res !== undefined) {\n\t\t\t\t\tconst resStr = (typeof res === 'string') ? res : `${res}`;\n\t\t\t\t\tlength = resStr.length + 3;\n\t\t\t\t}\n\n\t\t\t\tif (!cols[fieldIndex]) {\n\t\t\t\t\tcols[fieldIndex] = Math.max(10, field.columnName.length);\n\t\t\t\t}\n\n\t\t\t\tif (length > cols[fieldIndex]) {\n\t\t\t\t\tcols[fieldIndex] = length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn cols;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { MethodManager } from '../managers/method.manager';
2
+ export declare function loadCustomerNotificationMethods(methodManager: MethodManager): void;