@jonit-dev/night-watch-cli 1.8.10-beta.1 → 1.8.10-beta.3

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 (239) hide show
  1. package/dist/cli.js +2309 -1313
  2. package/dist/scripts/night-watch-cron.sh +1 -3
  3. package/dist/scripts/night-watch-merger-cron.sh +1 -1
  4. package/dist/scripts/night-watch-plan-cron.sh +1 -1
  5. package/dist/scripts/night-watch-slicer-cron.sh +1 -1
  6. package/dist/web/assets/index-BUgI2S1s.js +406 -0
  7. package/dist/web/assets/index-CkdLFBd7.js +406 -0
  8. package/dist/web/assets/index-RMfswANB.css +1 -0
  9. package/dist/web/index.html +2 -2
  10. package/package.json +1 -1
  11. package/dist/cli.d.ts +0 -3
  12. package/dist/cli.d.ts.map +0 -1
  13. package/dist/cli.js.map +0 -1
  14. package/dist/commands/analytics.d.ts +0 -14
  15. package/dist/commands/analytics.d.ts.map +0 -1
  16. package/dist/commands/analytics.js +0 -69
  17. package/dist/commands/analytics.js.map +0 -1
  18. package/dist/commands/audit.d.ts +0 -19
  19. package/dist/commands/audit.d.ts.map +0 -1
  20. package/dist/commands/audit.js +0 -144
  21. package/dist/commands/audit.js.map +0 -1
  22. package/dist/commands/board.d.ts +0 -9
  23. package/dist/commands/board.d.ts.map +0 -1
  24. package/dist/commands/board.js +0 -702
  25. package/dist/commands/board.js.map +0 -1
  26. package/dist/commands/cancel.d.ts +0 -46
  27. package/dist/commands/cancel.d.ts.map +0 -1
  28. package/dist/commands/cancel.js +0 -239
  29. package/dist/commands/cancel.js.map +0 -1
  30. package/dist/commands/cron.d.ts +0 -8
  31. package/dist/commands/cron.d.ts.map +0 -1
  32. package/dist/commands/cron.js +0 -134
  33. package/dist/commands/cron.js.map +0 -1
  34. package/dist/commands/dashboard/tab-actions.d.ts +0 -10
  35. package/dist/commands/dashboard/tab-actions.d.ts.map +0 -1
  36. package/dist/commands/dashboard/tab-actions.js +0 -247
  37. package/dist/commands/dashboard/tab-actions.js.map +0 -1
  38. package/dist/commands/dashboard/tab-config.d.ts +0 -21
  39. package/dist/commands/dashboard/tab-config.d.ts.map +0 -1
  40. package/dist/commands/dashboard/tab-config.js +0 -873
  41. package/dist/commands/dashboard/tab-config.js.map +0 -1
  42. package/dist/commands/dashboard/tab-logs.d.ts +0 -10
  43. package/dist/commands/dashboard/tab-logs.d.ts.map +0 -1
  44. package/dist/commands/dashboard/tab-logs.js +0 -202
  45. package/dist/commands/dashboard/tab-logs.js.map +0 -1
  46. package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
  47. package/dist/commands/dashboard/tab-schedules.d.ts.map +0 -1
  48. package/dist/commands/dashboard/tab-schedules.js +0 -320
  49. package/dist/commands/dashboard/tab-schedules.js.map +0 -1
  50. package/dist/commands/dashboard/tab-status.d.ts +0 -32
  51. package/dist/commands/dashboard/tab-status.d.ts.map +0 -1
  52. package/dist/commands/dashboard/tab-status.js +0 -424
  53. package/dist/commands/dashboard/tab-status.js.map +0 -1
  54. package/dist/commands/dashboard/types.d.ts +0 -42
  55. package/dist/commands/dashboard/types.d.ts.map +0 -1
  56. package/dist/commands/dashboard/types.js +0 -5
  57. package/dist/commands/dashboard/types.js.map +0 -1
  58. package/dist/commands/dashboard.d.ts +0 -11
  59. package/dist/commands/dashboard.d.ts.map +0 -1
  60. package/dist/commands/dashboard.js +0 -242
  61. package/dist/commands/dashboard.js.map +0 -1
  62. package/dist/commands/doctor.d.ts +0 -16
  63. package/dist/commands/doctor.d.ts.map +0 -1
  64. package/dist/commands/doctor.js +0 -195
  65. package/dist/commands/doctor.js.map +0 -1
  66. package/dist/commands/history.d.ts +0 -7
  67. package/dist/commands/history.d.ts.map +0 -1
  68. package/dist/commands/history.js +0 -49
  69. package/dist/commands/history.js.map +0 -1
  70. package/dist/commands/init.d.ts +0 -45
  71. package/dist/commands/init.d.ts.map +0 -1
  72. package/dist/commands/init.js +0 -777
  73. package/dist/commands/init.js.map +0 -1
  74. package/dist/commands/install.d.ts +0 -65
  75. package/dist/commands/install.d.ts.map +0 -1
  76. package/dist/commands/install.js +0 -405
  77. package/dist/commands/install.js.map +0 -1
  78. package/dist/commands/logs.d.ts +0 -15
  79. package/dist/commands/logs.d.ts.map +0 -1
  80. package/dist/commands/logs.js +0 -155
  81. package/dist/commands/logs.js.map +0 -1
  82. package/dist/commands/merge.d.ts +0 -26
  83. package/dist/commands/merge.d.ts.map +0 -1
  84. package/dist/commands/merge.js +0 -159
  85. package/dist/commands/merge.js.map +0 -1
  86. package/dist/commands/notify.d.ts +0 -7
  87. package/dist/commands/notify.d.ts.map +0 -1
  88. package/dist/commands/notify.js +0 -43
  89. package/dist/commands/notify.js.map +0 -1
  90. package/dist/commands/plan.d.ts +0 -19
  91. package/dist/commands/plan.d.ts.map +0 -1
  92. package/dist/commands/plan.js +0 -88
  93. package/dist/commands/plan.js.map +0 -1
  94. package/dist/commands/prd-state.d.ts +0 -12
  95. package/dist/commands/prd-state.d.ts.map +0 -1
  96. package/dist/commands/prd-state.js +0 -47
  97. package/dist/commands/prd-state.js.map +0 -1
  98. package/dist/commands/prd.d.ts +0 -18
  99. package/dist/commands/prd.d.ts.map +0 -1
  100. package/dist/commands/prd.js +0 -363
  101. package/dist/commands/prd.js.map +0 -1
  102. package/dist/commands/prds.d.ts +0 -13
  103. package/dist/commands/prds.d.ts.map +0 -1
  104. package/dist/commands/prds.js +0 -194
  105. package/dist/commands/prds.js.map +0 -1
  106. package/dist/commands/prs.d.ts +0 -14
  107. package/dist/commands/prs.d.ts.map +0 -1
  108. package/dist/commands/prs.js +0 -104
  109. package/dist/commands/prs.js.map +0 -1
  110. package/dist/commands/qa.d.ts +0 -34
  111. package/dist/commands/qa.d.ts.map +0 -1
  112. package/dist/commands/qa.js +0 -214
  113. package/dist/commands/qa.js.map +0 -1
  114. package/dist/commands/queue.d.ts +0 -8
  115. package/dist/commands/queue.d.ts.map +0 -1
  116. package/dist/commands/queue.js +0 -376
  117. package/dist/commands/queue.js.map +0 -1
  118. package/dist/commands/resolve.d.ts +0 -26
  119. package/dist/commands/resolve.d.ts.map +0 -1
  120. package/dist/commands/resolve.js +0 -186
  121. package/dist/commands/resolve.js.map +0 -1
  122. package/dist/commands/retry.d.ts +0 -9
  123. package/dist/commands/retry.d.ts.map +0 -1
  124. package/dist/commands/retry.js +0 -71
  125. package/dist/commands/retry.js.map +0 -1
  126. package/dist/commands/review.d.ts +0 -82
  127. package/dist/commands/review.d.ts.map +0 -1
  128. package/dist/commands/review.js +0 -479
  129. package/dist/commands/review.js.map +0 -1
  130. package/dist/commands/run.d.ts +0 -73
  131. package/dist/commands/run.d.ts.map +0 -1
  132. package/dist/commands/run.js +0 -509
  133. package/dist/commands/run.js.map +0 -1
  134. package/dist/commands/serve.d.ts +0 -19
  135. package/dist/commands/serve.d.ts.map +0 -1
  136. package/dist/commands/serve.js +0 -142
  137. package/dist/commands/serve.js.map +0 -1
  138. package/dist/commands/shared/env-builder.d.ts +0 -49
  139. package/dist/commands/shared/env-builder.d.ts.map +0 -1
  140. package/dist/commands/shared/env-builder.js +0 -150
  141. package/dist/commands/shared/env-builder.js.map +0 -1
  142. package/dist/commands/slice.d.ts +0 -35
  143. package/dist/commands/slice.d.ts.map +0 -1
  144. package/dist/commands/slice.js +0 -316
  145. package/dist/commands/slice.js.map +0 -1
  146. package/dist/commands/state.d.ts +0 -8
  147. package/dist/commands/state.d.ts.map +0 -1
  148. package/dist/commands/state.js +0 -54
  149. package/dist/commands/state.js.map +0 -1
  150. package/dist/commands/status.d.ts +0 -14
  151. package/dist/commands/status.d.ts.map +0 -1
  152. package/dist/commands/status.js +0 -297
  153. package/dist/commands/status.js.map +0 -1
  154. package/dist/commands/summary.d.ts +0 -14
  155. package/dist/commands/summary.d.ts.map +0 -1
  156. package/dist/commands/summary.js +0 -193
  157. package/dist/commands/summary.js.map +0 -1
  158. package/dist/commands/uninstall.d.ts +0 -25
  159. package/dist/commands/uninstall.d.ts.map +0 -1
  160. package/dist/commands/uninstall.js +0 -134
  161. package/dist/commands/uninstall.js.map +0 -1
  162. package/dist/commands/update.d.ts +0 -22
  163. package/dist/commands/update.d.ts.map +0 -1
  164. package/dist/commands/update.js +0 -90
  165. package/dist/commands/update.js.map +0 -1
  166. package/dist/web/assets/index-2JY0x_Ij.js +0 -381
  167. package/dist/web/assets/index-3h8pgmqL.css +0 -1
  168. package/dist/web/assets/index-B-wbyZq7.js +0 -386
  169. package/dist/web/assets/index-B1BnOpiO.css +0 -1
  170. package/dist/web/assets/index-B3CnV08_.js +0 -365
  171. package/dist/web/assets/index-B5QjuFh9.css +0 -1
  172. package/dist/web/assets/index-B8FW2ecQ.js +0 -370
  173. package/dist/web/assets/index-BFxPiKyy.js +0 -381
  174. package/dist/web/assets/index-BGqNh_Da.js +0 -365
  175. package/dist/web/assets/index-BIONU0qz.css +0 -1
  176. package/dist/web/assets/index-B_l_3wnA.js +0 -370
  177. package/dist/web/assets/index-Ba-4YvTQ.js +0 -365
  178. package/dist/web/assets/index-Bbb4-39N.js +0 -370
  179. package/dist/web/assets/index-BdgdShEN.js +0 -365
  180. package/dist/web/assets/index-BhiC4Z-G.js +0 -381
  181. package/dist/web/assets/index-BjhCFjZi.js +0 -381
  182. package/dist/web/assets/index-BlRxmrnQ.css +0 -1
  183. package/dist/web/assets/index-BqwbXsHS.js +0 -365
  184. package/dist/web/assets/index-BsC7RT48.css +0 -1
  185. package/dist/web/assets/index-Bvh8XI8_.js +0 -370
  186. package/dist/web/assets/index-C01r2ymn.js +0 -381
  187. package/dist/web/assets/index-C51Rbsmk.js +0 -381
  188. package/dist/web/assets/index-C7lMNxRE.js +0 -370
  189. package/dist/web/assets/index-CJLObgsn.js +0 -386
  190. package/dist/web/assets/index-CLuRf7Zt.js +0 -381
  191. package/dist/web/assets/index-CM3xFd3e.css +0 -1
  192. package/dist/web/assets/index-CNkBtDK7.js +0 -370
  193. package/dist/web/assets/index-CPQbZ1BL.css +0 -1
  194. package/dist/web/assets/index-CTy5dUDU.css +0 -1
  195. package/dist/web/assets/index-CU15COKs.js +0 -370
  196. package/dist/web/assets/index-CiRJZI4z.js +0 -386
  197. package/dist/web/assets/index-Cp7RYjoy.css +0 -1
  198. package/dist/web/assets/index-CvPkZOWT.js +0 -381
  199. package/dist/web/assets/index-CvUk-33B.css +0 -1
  200. package/dist/web/assets/index-Cvmj-oF6.css +0 -1
  201. package/dist/web/assets/index-CxE5iQVO.js +0 -381
  202. package/dist/web/assets/index-D7lZQpFV.js +0 -365
  203. package/dist/web/assets/index-DAyP4GOi.css +0 -1
  204. package/dist/web/assets/index-DCG0n8Kg.js +0 -386
  205. package/dist/web/assets/index-DEEI8cyF.css +0 -1
  206. package/dist/web/assets/index-DF99BowV.js +0 -381
  207. package/dist/web/assets/index-DGWsvFj6.css +0 -1
  208. package/dist/web/assets/index-DGpU39Cp.css +0 -1
  209. package/dist/web/assets/index-DI4kFgOi.js +0 -370
  210. package/dist/web/assets/index-DIyTcPw5.css +0 -1
  211. package/dist/web/assets/index-DTsfDC7m.js +0 -381
  212. package/dist/web/assets/index-DcgNAi4A.js +0 -386
  213. package/dist/web/assets/index-DgOAgkZy.css +0 -1
  214. package/dist/web/assets/index-DnHkqbOa.js +0 -386
  215. package/dist/web/assets/index-DnR7Idcf.css +0 -1
  216. package/dist/web/assets/index-DpVirMEe.css +0 -1
  217. package/dist/web/assets/index-DsYIWZ86.css +0 -1
  218. package/dist/web/assets/index-DtrDkci5.js +0 -381
  219. package/dist/web/assets/index-DyjIth5M.js +0 -386
  220. package/dist/web/assets/index-FwIKfHPL.css +0 -1
  221. package/dist/web/assets/index-IKrZymWk.css +0 -1
  222. package/dist/web/assets/index-MA6fM0ab.js +0 -381
  223. package/dist/web/assets/index-N_QxaSEg.css +0 -1
  224. package/dist/web/assets/index-OcU-0TCQ.css +0 -1
  225. package/dist/web/assets/index-OyhrmG-L.js +0 -381
  226. package/dist/web/assets/index-SQlBKu_s.js +0 -386
  227. package/dist/web/assets/index-Sv2B60J4.js +0 -370
  228. package/dist/web/assets/index-Vgyivb5u.js +0 -365
  229. package/dist/web/assets/index-ZABWMEZR.js +0 -381
  230. package/dist/web/assets/index-ZE5lOeJp.js +0 -386
  231. package/dist/web/assets/index-aCHmkAcJ.css +0 -1
  232. package/dist/web/assets/index-bFijnpuU.js +0 -381
  233. package/dist/web/assets/index-bUPZgSoZ.css +0 -1
  234. package/dist/web/assets/index-mz1VIYsP.css +0 -1
  235. package/dist/web/assets/index-oOp_MFeE.js +0 -376
  236. package/dist/web/assets/index-rfU713Zm.js +0 -386
  237. package/dist/web/assets/index-tuNH9gmb.js +0 -448
  238. package/dist/web/assets/index-viSwHyDD.js +0 -365
  239. package/dist/web/assets/index-yKEQysks.js +0 -365
@@ -1 +0,0 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,gBAAgB,EAEhB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,GAAG,EACH,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,IAAI,OAAO,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAW7B;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,YAAqB;IAChE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sCAAsC,CACpD,QAAgB,EAChB,YAAqB;IAErB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,4BAA4B,CAAC,YAAY,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SAC5D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SAC5D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,iBAA2B,EAC3B,kBAA4B,EAC5B,qBAAqB,GAAG,KAAK;IAE7B,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEjD,IAAI,qBAAqB,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChD,QAAQ;QACR,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;KAC5C,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAgB,EAChB,UAA8B,EAC9B,GAAW;IAEX,MAAM,SAAS,GACb,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,UAAU,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,IAAI,GACR,iCAAiC;QACjC,mCAAmC,SAAS,qDAAqD;QACjG,mDAAmD,CAAC;IAEtD,IAAI,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;YACtE,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;IAED,IAAI,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE;YACtF,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAyB,EACzB,OAAuB;IAEvB,mDAAmD;IACnD,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,sDAAsD;IACtD,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChE,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChE,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChE,GAAG,CAAC,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtE,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxD,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,GAAG,CAAC,kBAAkB;QACpB,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC;IAElF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAyB,EACzB,OAAuB;IAEvB,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,iFAAiF;QACjF,UAAU,CAAC,oBAAoB,GAAG,OAAO,CAAC,QAAyC,CAAC;IACtF,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE1D,OAAO,CACL,MAAM,KAAK,MAAM;QACjB,MAAM,KAAK,QAAQ;QACnB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,WAAW;QACrB,UAAU,KAAK,SAAS;QACxB,UAAU,KAAK,OAAO;QACtB,UAAU,KAAK,WAAW;QAC1B,UAAU,KAAK,WAAW;QAC1B,UAAU,KAAK,iBAAiB;QAChC,UAAU,KAAK,iBAAiB;QAChC,UAAU,KAAK,OAAO,CACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CACzB,IAAI,EACJ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,8BAA8B,CAAC,EAC5E;YACE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAmB,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM;aACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACxC,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,WAAW,KAAK,CAAC,KAAK,IAAI,SAAS,gBAAgB,KAAK,CAAC,UAAU,IAAI,SAAS,GAAG,CAChH,CAAC;QAEJ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;YACpE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,OAAO,MAAM;aACV,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,yEAAyE,CAAC,IAAI,CAAC,IAAI,CAAC,CACrF,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,cAAwB;IAExB,IAAI,CAAC;QACH,4CAA4C;QAC5C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC;QACrF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,qEAAqE;QACrE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;YACtC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAA0D,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,MAAM,EAAE,EAAE,CAAC,WAAW;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;SAC7E,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,wDAAwD;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,wCAAwC;QACxC,IAAI,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,2BAA2B;QAC3B,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9C,sBAAsB;QACtB,MAAM,UAAU,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAC;QAEpE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAE/B,qCAAqC;YACrC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAEhE,mCAAmC;YACnC,MAAM,CAAC,eAAe,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxE,WAAW,CAAC,IAAI,CAAC;gBACf,aAAa;gBACb,GAAG,MAAM,CAAC,kBAAkB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,GAAG,EAAE,CAAC,MAAM;aACnF,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxE,WAAW,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAC5E,WAAW,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;YACnE,WAAW,CAAC,IAAI,CAAC;gBACf,iBAAiB;gBACjB,MAAM,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;aACtF,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpC,kCAAkC;YAClC,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAE7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;oBACnC,GAAG,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,8BAA8B;YAC9B,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC9B,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBAClC,GAAG,CAAC,uEAAuE,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,gDAAgD,CAAC,CAAC;YACxD,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAC3B,CAAC;YAED,sCAAsC;YACtC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClB,GAAG,CAAC,UAAU,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6EAA6E;QAC7E,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,iBAAiB,GAAG,gBAAgB;aACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACZ,QAAQ,EAAE,EAAE,CAAC,MAAM;YACnB,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,aAAa,EAAE,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC;SAC7C,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACxC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACpE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAChE,UAAU,EACV,CAAC,UAAU,CAAC,EACZ,OAAO,CACR,CAAC;YACF,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;YAE/D,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,YAAY,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;gBAC3E,CAAC;qBAAM,IAAI,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,OAAO,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,yEAAyE;YACzE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,sBAAsB,GAAG,sCAAsC,CACnE,QAAQ,EACR,YAAY,EAAE,MAAM,CACrB,CAAC;gBAEF,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC5B,IAAI,CAAC,gFAAgF,CAAC,CAAC;gBACzF,CAAC;gBAED,uDAAuD;gBACvD,IAAI,iBAAiB,GAAsB,IAAI,CAAC;gBAChD,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzE,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACnD,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;wBACxC,iBAAiB,GAAG,sBAAsB,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;oBAChF,CAAC;oBAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACvB,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC;gBAED,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,4CAA4C;oBAC5C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACjE,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzE,MAAM,qBAAqB,GAAG,YAAY,EAAE,IAAI,CAAC,iBAAiB,KAAK,GAAG,CAAC;oBAC3E,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzE,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oBACrF,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,MAAM,CAAC;oBACnD,MAAM,mBAAmB,GAAG,8BAA8B,CACxD,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAC1B,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,gBAAgB,KAAK,SAAS;4BAC9B,CAAC,CAAC,CAAC,gBAAgB,CAAC;4BACpB,CAAC,CAAC,EAAE,EACR,kBAAkB,EAClB,qBAAqB,CACtB,CAAC;oBAEF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACrC,MAAM,WAAW,GAAG,qBAAqB;4BACvC,CAAC,CAAE,wBAAkC;4BACrC,CAAC,CAAE,kBAA4B,CAAC;wBAClC,MAAM,iBAAiB,CAAC,MAAM,EAAE;4BAC9B,KAAK,EAAE,WAAW;4BAClB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;4BACtC,QAAQ;4BACR,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC;4BACnF,KAAK,EAAE,iBAAiB,EAAE,GAAG;4BAC7B,OAAO,EAAE,iBAAiB,EAAE,KAAK;4BACjC,MAAM,EAAE,iBAAiB,EAAE,IAAI;4BAC/B,QAAQ,EAAE,iBAAiB,EAAE,MAAM;4BACnC,YAAY,EAAE,iBAAiB,EAAE,YAAY;4BAC7C,SAAS,EAAE,iBAAiB,EAAE,SAAS;4BACvC,SAAS,EAAE,iBAAiB,EAAE,SAAS;4BACvC,QAAQ;4BACR,UAAU;yBACX,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;4BACzC,MAAM,SAAS,GACb,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAC,QAAQ;gCAC3C,CAAC,CAAC,iBAAiB;gCACnB,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;4BAE1D,IAAI,MAAM,CAAC,eAAe,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;gCAChD,8BAA8B,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;4BAC3E,CAAC;4BAED,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe;gCACxC,CAAC,CAAE,wBAAkC;gCACrC,CAAC,CAAE,kBAA4B,CAAC;4BAClC,MAAM,iBAAiB,CAAC,MAAM,EAAE;gCAC9B,KAAK,EAAE,WAAW;gCAClB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gCACtC,QAAQ;gCACR,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC;gCACnF,KAAK,EAAE,SAAS,EAAE,GAAG;gCACrB,OAAO,EAAE,SAAS,EAAE,KAAK;gCACzB,MAAM,EAAE,SAAS,EAAE,IAAI;gCACvB,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ;gCAC9C,YAAY,EAAE,SAAS,EAAE,YAAY;gCACrC,SAAS,EAAE,SAAS,EAAE,SAAS;gCAC/B,SAAS,EAAE,SAAS,EAAE,SAAS;gCAC/B,QAAQ;gCACR,UAAU;6BACX,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBAClD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;oBACnF,MAAM,SAAS,GAAG;wBAChB,KAAK,EAAE,gBAAyB;wBAChC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACtC,QAAQ;wBACR,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC;wBACnF,QAAQ,EAAE,mBAAmB,EAAE,MAAM,IAAI,kBAAkB;wBAC3D,KAAK,EAAE,mBAAmB,EAAE,GAAG;wBAC/B,OAAO,EAAE,mBAAmB,EAAE,KAAK;wBACnC,MAAM,EAAE,mBAAmB,EAAE,IAAI;wBACjC,YAAY,EAAE,mBAAmB,EAAE,YAAY;wBAC/C,SAAS,EAAE,mBAAmB,EAAE,SAAS;wBACzC,SAAS,EAAE,mBAAmB,EAAE,SAAS;qBAC1C,CAAC;oBACF,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,73 +0,0 @@
1
- /**
2
- * Run command - executes the PRD cron script
3
- */
4
- import { Command } from 'commander';
5
- import { INightWatchConfig, NotificationEvent } from '@night-watch/core';
6
- /**
7
- * Options for the run command
8
- */
9
- export interface IRunOptions {
10
- dryRun: boolean;
11
- timeout?: string;
12
- provider?: string;
13
- crossProjectFallback?: boolean;
14
- }
15
- /**
16
- * Map executor exit/result state to a notification event.
17
- * Returns null when the run completed with no actionable work (skip/no-op).
18
- */
19
- export declare function resolveRunNotificationEvent(exitCode: number, scriptStatus?: string): NotificationEvent | null;
20
- /**
21
- * Determine if cross-project fallback should run for this executor result.
22
- */
23
- export declare function shouldAttemptCrossProjectFallback(options: IRunOptions, scriptStatus?: string): boolean;
24
- /**
25
- * Resolve valid registered projects excluding the current project.
26
- */
27
- export declare function getCrossProjectFallbackCandidates(currentProjectDir: string): Array<{
28
- name: string;
29
- path: string;
30
- }>;
31
- /**
32
- * Return Telegram webhooks that opted in to rate-limit fallback notifications.
33
- */
34
- export declare function getRateLimitFallbackTelegramWebhooks(config: INightWatchConfig): Array<{
35
- botToken: string;
36
- chatId: string;
37
- }>;
38
- /**
39
- * Whether the bash execution reported a rate-limit fallback trigger.
40
- */
41
- export declare function isRateLimitFallbackTriggered(resultData?: Record<string, string>): boolean;
42
- /**
43
- * Build environment variables map from config and CLI options
44
- */
45
- export declare function buildEnvVars(config: INightWatchConfig, options: IRunOptions): Record<string, string>;
46
- /**
47
- * Apply CLI flag overrides to the config
48
- */
49
- export declare function applyCliOverrides(config: INightWatchConfig, options: IRunOptions): INightWatchConfig;
50
- /**
51
- * Information about a scanned PRD file, including claim status
52
- */
53
- export interface IPrdScanItem {
54
- name: string;
55
- claimed: boolean;
56
- claimInfo: {
57
- hostname: string;
58
- pid: number;
59
- timestamp: number;
60
- } | null;
61
- }
62
- /**
63
- * Scan the PRD directory for eligible PRD files
64
- */
65
- export declare function scanPrdDirectory(projectDir: string, prdDir: string, maxRuntime: number): {
66
- pending: IPrdScanItem[];
67
- completed: string[];
68
- };
69
- /**
70
- * Register the run command with the program
71
- */
72
- export declare function runCommand(program: Command): void;
73
- //# sourceMappingURL=run.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAGL,iBAAiB,EAEjB,iBAAiB,EAoBlB,MAAM,mBAAmB,CAAC;AAM3B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,GAAG,IAAI,CAc1B;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,WAAW,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAeT;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAOD;AAmJD;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,iBAAiB,GACxB,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAY7C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAEzF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiGxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,GACnB,iBAAiB,CAgBnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA8ClD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6LjD"}
@@ -1,509 +0,0 @@
1
- /**
2
- * Run command - executes the PRD cron script
3
- */
4
- import { CLAIM_FILE_EXTENSION, CLAUDE_MODEL_IDS, PROVIDER_COMMANDS, createBoardProvider, createSpinner, createTable, dim, executeScriptWithOutput, fetchPrDetails, fetchPrDetailsForBranch, getScriptPath, header, info, loadConfig, parseScriptResult, resolveJobProvider, resolvePreset, sendNotifications, error as uiError, validateRegistry, warn, } from '@night-watch/core';
5
- import { buildBaseEnvVars, maybeApplyCronSchedulingDelay } from './shared/env-builder.js';
6
- import * as fs from 'fs';
7
- import * as path from 'path';
8
- /**
9
- * Map executor exit/result state to a notification event.
10
- * Returns null when the run completed with no actionable work (skip/no-op).
11
- */
12
- export function resolveRunNotificationEvent(exitCode, scriptStatus) {
13
- if (exitCode === 124) {
14
- return 'run_timeout';
15
- }
16
- if (exitCode !== 0) {
17
- return 'run_failed';
18
- }
19
- if (!scriptStatus || scriptStatus === 'success_open_pr') {
20
- return 'run_succeeded';
21
- }
22
- if (scriptStatus?.startsWith('skip_')) {
23
- return 'run_no_work';
24
- }
25
- return null;
26
- }
27
- /**
28
- * Determine if cross-project fallback should run for this executor result.
29
- */
30
- export function shouldAttemptCrossProjectFallback(options, scriptStatus) {
31
- if (options.crossProjectFallback !== true) {
32
- return false;
33
- }
34
- if (options.dryRun) {
35
- return false;
36
- }
37
- if (process.env.NW_CROSS_PROJECT_FALLBACK_ACTIVE === '1') {
38
- return false;
39
- }
40
- // Don't attempt cross-project fallback when job was queued — queue handles ordering
41
- if (scriptStatus === 'queued') {
42
- return false;
43
- }
44
- return scriptStatus === 'skip_no_eligible_prd';
45
- }
46
- /**
47
- * Resolve valid registered projects excluding the current project.
48
- */
49
- export function getCrossProjectFallbackCandidates(currentProjectDir) {
50
- const current = path.resolve(currentProjectDir);
51
- const { valid, invalid } = validateRegistry();
52
- for (const entry of invalid) {
53
- warn(`Skipping invalid registry entry: ${entry.path}`);
54
- }
55
- return valid.filter((entry) => path.resolve(entry.path) !== current);
56
- }
57
- /**
58
- * Run completion notifications for an executor invocation (local or fallback).
59
- */
60
- async function sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult) {
61
- // Rate-limit fallback notifications are sent immediately to Telegram in bash.
62
- // Send this event only to non-Telegram webhooks to avoid duplicate alerts.
63
- if (isRateLimitFallbackTriggered(scriptResult?.data)) {
64
- const nonTelegramWebhooks = (config.notifications?.webhooks ?? []).filter((wh) => wh.type !== 'telegram');
65
- if (nonTelegramWebhooks.length > 0) {
66
- const _rateLimitCtx = {
67
- event: 'rate_limit_fallback',
68
- projectName: path.basename(projectDir),
69
- exitCode,
70
- provider: config.provider,
71
- };
72
- await sendNotifications({
73
- ...config,
74
- notifications: { ...config.notifications, webhooks: nonTelegramWebhooks },
75
- }, _rateLimitCtx);
76
- }
77
- }
78
- // Backward-compatible fallback: if no marker is present, preserve previous behavior.
79
- const event = resolveRunNotificationEvent(exitCode, scriptResult?.status);
80
- // Enrich with PR details on success (graceful — null if gh fails)
81
- let prDetails = null;
82
- if (event === 'run_succeeded') {
83
- const prUrl = scriptResult?.data.pr_url;
84
- const branch = scriptResult?.data.branch;
85
- if (prUrl) {
86
- prDetails = fetchPrDetailsForBranch(prUrl, projectDir);
87
- }
88
- if (!prDetails && branch) {
89
- prDetails = fetchPrDetailsForBranch(branch, projectDir);
90
- }
91
- if (!prDetails) {
92
- prDetails = fetchPrDetails(config.branchPrefix, projectDir);
93
- }
94
- }
95
- if (event) {
96
- const timeoutDuration = event === 'run_timeout' ? config.maxRuntime : undefined;
97
- const _ctx = {
98
- event,
99
- projectName: path.basename(projectDir),
100
- exitCode,
101
- provider: config.provider,
102
- prdName: scriptResult?.data.prd,
103
- branchName: scriptResult?.data.branch,
104
- duration: timeoutDuration,
105
- scriptStatus: scriptResult?.status,
106
- failureReason: scriptResult?.data.reason,
107
- failureDetail: scriptResult?.data.detail,
108
- prUrl: prDetails?.url,
109
- prTitle: prDetails?.title,
110
- prBody: prDetails?.body,
111
- prNumber: prDetails?.number,
112
- filesChanged: prDetails?.changedFiles,
113
- additions: prDetails?.additions,
114
- deletions: prDetails?.deletions,
115
- };
116
- await sendNotifications(config, _ctx);
117
- }
118
- else if (!options.dryRun) {
119
- info('Skipping completion notification (no actionable run result)');
120
- }
121
- }
122
- /**
123
- * If current project has no eligible work, try other registered projects.
124
- * Returns true when any fallback project executed actionable work.
125
- */
126
- async function runCrossProjectFallback(currentProjectDir, options) {
127
- const candidates = getCrossProjectFallbackCandidates(currentProjectDir);
128
- if (candidates.length === 0) {
129
- return false;
130
- }
131
- const scriptPath = getScriptPath('night-watch-cron.sh');
132
- for (const candidate of candidates) {
133
- info(`Cross-project fallback: checking ${candidate.name}`);
134
- let candidateConfig = loadConfig(candidate.path);
135
- candidateConfig = applyCliOverrides(candidateConfig, options);
136
- const envVars = buildEnvVars(candidateConfig, options);
137
- envVars.NW_CROSS_PROJECT_FALLBACK_ACTIVE = '1';
138
- try {
139
- const { exitCode, stdout, stderr } = await executeScriptWithOutput(scriptPath, [candidate.path], envVars, { cwd: candidate.path });
140
- const scriptResult = parseScriptResult(`${stdout}\n${stderr}`);
141
- if (!options.dryRun) {
142
- await sendRunCompletionNotifications(candidateConfig, candidate.path, options, exitCode, scriptResult);
143
- }
144
- if (exitCode !== 0) {
145
- warn(`Cross-project fallback: ${candidate.name} exited with code ${exitCode}; checking next project.`);
146
- continue;
147
- }
148
- if (scriptResult?.status?.startsWith('skip_') ||
149
- scriptResult?.status === 'success_already_merged') {
150
- continue;
151
- }
152
- info(`Cross-project fallback: executed work in ${candidate.name}`);
153
- return true;
154
- }
155
- catch (err) {
156
- warn(`Cross-project fallback failed for ${candidate.name}: ${err instanceof Error ? err.message : String(err)}`);
157
- }
158
- }
159
- return false;
160
- }
161
- /**
162
- * Return Telegram webhooks that opted in to rate-limit fallback notifications.
163
- */
164
- export function getRateLimitFallbackTelegramWebhooks(config) {
165
- return (config.notifications?.webhooks ?? [])
166
- .filter((wh) => wh.type === 'telegram' &&
167
- typeof wh.botToken === 'string' &&
168
- wh.botToken.trim().length > 0 &&
169
- typeof wh.chatId === 'string' &&
170
- wh.chatId.trim().length > 0 &&
171
- wh.events.includes('rate_limit_fallback'))
172
- .map((wh) => ({ botToken: wh.botToken, chatId: wh.chatId }));
173
- }
174
- /**
175
- * Whether the bash execution reported a rate-limit fallback trigger.
176
- */
177
- export function isRateLimitFallbackTriggered(resultData) {
178
- return resultData?.rate_limit_fallback === '1';
179
- }
180
- /**
181
- * Build environment variables map from config and CLI options
182
- */
183
- export function buildEnvVars(config, options) {
184
- // Start with base env vars shared by all job types
185
- const env = buildBaseEnvVars(config, 'executor', options.dryRun);
186
- // Runtime
187
- env.NW_MAX_RUNTIME = String(config.maxRuntime);
188
- if (config.sessionMaxRuntime != null) {
189
- env.NW_SESSION_MAX_RUNTIME = String(config.sessionMaxRuntime);
190
- }
191
- env.NW_PRD_DIR = config.prdDir;
192
- env.NW_BRANCH_PREFIX = config.branchPrefix;
193
- // PRD priority order
194
- if (config.prdPriority && config.prdPriority.length > 0) {
195
- env.NW_PRD_PRIORITY = config.prdPriority.join(':');
196
- }
197
- // Max retries for rate-limited API calls (minimum 1 attempt)
198
- const maxRetries = Number.isFinite(config.maxRetries)
199
- ? Math.max(1, Math.floor(config.maxRetries))
200
- : 3;
201
- env.NW_MAX_RETRIES = String(maxRetries);
202
- // Current CLI executable path for nested CLI calls inside bash scripts.
203
- if (process.argv[1]) {
204
- env.NW_CLI_BIN = process.argv[1];
205
- }
206
- // Board provider — signal to the cron script to use board mode whenever enabled.
207
- // If projectNumber is missing, `night-watch board next-issue` auto-bootstraps
208
- // a board and persists it before continuing.
209
- if (config.boardProvider?.enabled !== false) {
210
- env.NW_BOARD_ENABLED = 'true';
211
- }
212
- // Rate-limit fallback: fall back to native Claude when proxy quota is exhausted
213
- if (config.fallbackOnRateLimit) {
214
- env.NW_FALLBACK_ON_RATE_LIMIT = 'true';
215
- }
216
- // Claude models used for native / fallback execution
217
- const primaryFallbackModel = config.primaryFallbackModel ?? config.claudeModel ?? 'sonnet';
218
- const secondaryFallbackModel = config.secondaryFallbackModel ?? primaryFallbackModel;
219
- env.NW_CLAUDE_PRIMARY_MODEL_ID = CLAUDE_MODEL_IDS[primaryFallbackModel];
220
- env.NW_CLAUDE_SECONDARY_MODEL_ID = CLAUDE_MODEL_IDS[secondaryFallbackModel];
221
- // Backward compatibility for scripts/helpers still reading the legacy env var.
222
- env.NW_CLAUDE_MODEL_ID = env.NW_CLAUDE_PRIMARY_MODEL_ID;
223
- // Preset-based fallback (takes precedence over model-based fallback when configured)
224
- if (config.primaryFallbackPreset) {
225
- try {
226
- const fallbackPreset = resolvePreset(config, config.primaryFallbackPreset);
227
- env.NW_FALLBACK_PRIMARY_PRESET_CMD = fallbackPreset.command;
228
- if (fallbackPreset.promptFlag)
229
- env.NW_FALLBACK_PRIMARY_PRESET_PROMPT_FLAG = fallbackPreset.promptFlag;
230
- if (fallbackPreset.autoApproveFlag)
231
- env.NW_FALLBACK_PRIMARY_PRESET_AUTO_APPROVE_FLAG = fallbackPreset.autoApproveFlag;
232
- if (fallbackPreset.modelFlag)
233
- env.NW_FALLBACK_PRIMARY_PRESET_MODEL_FLAG = fallbackPreset.modelFlag;
234
- if (fallbackPreset.model)
235
- env.NW_FALLBACK_PRIMARY_PRESET_MODEL = fallbackPreset.model;
236
- if (fallbackPreset.envVars && Object.keys(fallbackPreset.envVars).length > 0) {
237
- env.NW_FALLBACK_PRIMARY_PRESET_ENV = JSON.stringify(fallbackPreset.envVars);
238
- }
239
- }
240
- catch {
241
- // preset not found — fall back to model-based fallback
242
- }
243
- }
244
- if (config.secondaryFallbackPreset) {
245
- try {
246
- const fallbackPreset = resolvePreset(config, config.secondaryFallbackPreset);
247
- env.NW_FALLBACK_SECONDARY_PRESET_CMD = fallbackPreset.command;
248
- if (fallbackPreset.promptFlag)
249
- env.NW_FALLBACK_SECONDARY_PRESET_PROMPT_FLAG = fallbackPreset.promptFlag;
250
- if (fallbackPreset.autoApproveFlag)
251
- env.NW_FALLBACK_SECONDARY_PRESET_AUTO_APPROVE_FLAG = fallbackPreset.autoApproveFlag;
252
- if (fallbackPreset.modelFlag)
253
- env.NW_FALLBACK_SECONDARY_PRESET_MODEL_FLAG = fallbackPreset.modelFlag;
254
- if (fallbackPreset.model)
255
- env.NW_FALLBACK_SECONDARY_PRESET_MODEL = fallbackPreset.model;
256
- if (fallbackPreset.envVars && Object.keys(fallbackPreset.envVars).length > 0) {
257
- env.NW_FALLBACK_SECONDARY_PRESET_ENV = JSON.stringify(fallbackPreset.envVars);
258
- }
259
- }
260
- catch {
261
- // preset not found — fall back to model-based fallback
262
- }
263
- }
264
- // Telegram credentials for in-script fallback warnings.
265
- // Export only webhooks that explicitly subscribed to rate_limit_fallback.
266
- const fallbackTelegramWebhooks = getRateLimitFallbackTelegramWebhooks(config);
267
- if (fallbackTelegramWebhooks.length > 0) {
268
- env.NW_TELEGRAM_RATE_LIMIT_WEBHOOKS = JSON.stringify(fallbackTelegramWebhooks);
269
- // Backward compatibility for older helper implementations.
270
- env.NW_TELEGRAM_BOT_TOKEN = fallbackTelegramWebhooks[0].botToken;
271
- env.NW_TELEGRAM_CHAT_ID = fallbackTelegramWebhooks[0].chatId;
272
- }
273
- return env;
274
- }
275
- /**
276
- * Apply CLI flag overrides to the config
277
- */
278
- export function applyCliOverrides(config, options) {
279
- const overridden = { ...config };
280
- if (options.timeout) {
281
- const timeout = parseInt(options.timeout, 10);
282
- if (!isNaN(timeout)) {
283
- overridden.maxRuntime = timeout;
284
- }
285
- }
286
- if (options.provider) {
287
- // Use _cliProviderOverride to ensure CLI flag takes precedence over jobProviders
288
- overridden._cliProviderOverride = options.provider;
289
- }
290
- return overridden;
291
- }
292
- /**
293
- * Scan the PRD directory for eligible PRD files
294
- */
295
- export function scanPrdDirectory(projectDir, prdDir, maxRuntime) {
296
- const absolutePrdDir = path.join(projectDir, prdDir);
297
- const doneDir = path.join(absolutePrdDir, 'done');
298
- const pending = [];
299
- const completed = [];
300
- // Scan main PRD directory for pending PRDs
301
- if (fs.existsSync(absolutePrdDir)) {
302
- const entries = fs.readdirSync(absolutePrdDir, { withFileTypes: true });
303
- for (const entry of entries) {
304
- if (entry.isFile() && entry.name.endsWith('.md')) {
305
- const claimPath = path.join(absolutePrdDir, entry.name + CLAIM_FILE_EXTENSION);
306
- let claimed = false;
307
- let claimInfo = null;
308
- if (fs.existsSync(claimPath)) {
309
- try {
310
- const content = fs.readFileSync(claimPath, 'utf-8');
311
- const data = JSON.parse(content);
312
- const age = Math.floor(Date.now() / 1000) - data.timestamp;
313
- if (age < maxRuntime) {
314
- claimed = true;
315
- claimInfo = { hostname: data.hostname, pid: data.pid, timestamp: data.timestamp };
316
- }
317
- }
318
- catch {
319
- // Invalid claim file, treat as unclaimed
320
- }
321
- }
322
- pending.push({ name: entry.name, claimed, claimInfo });
323
- }
324
- }
325
- }
326
- // Scan done directory for completed PRDs
327
- if (fs.existsSync(doneDir)) {
328
- const entries = fs.readdirSync(doneDir, { withFileTypes: true });
329
- for (const entry of entries) {
330
- if (entry.isFile() && entry.name.endsWith('.md')) {
331
- completed.push(entry.name);
332
- }
333
- }
334
- }
335
- return { pending, completed };
336
- }
337
- /**
338
- * Register the run command with the program
339
- */
340
- export function runCommand(program) {
341
- program
342
- .command('run')
343
- .description('Run PRD executor now')
344
- .option('--dry-run', 'Show what would be executed without running')
345
- .option('--timeout <seconds>', 'Override max runtime in seconds')
346
- .option('--provider <string>', 'AI provider to use (claude or codex)')
347
- .option('--cross-project-fallback', 'Check other registered projects when this project has no eligible work')
348
- .option('--no-cross-project-fallback', 'Deprecated alias; cross-project fallback is disabled by default')
349
- .action(async (options) => {
350
- // Get the project directory (current working directory)
351
- const projectDir = process.cwd();
352
- // Load config from file and environment
353
- let config = loadConfig(projectDir);
354
- // Apply CLI flag overrides
355
- config = applyCliOverrides(config, options);
356
- if (config.executorEnabled === false && !options.dryRun) {
357
- info('Executor is disabled in config; skipping run.');
358
- process.exit(0);
359
- }
360
- // Build environment variables
361
- const envVars = buildEnvVars(config, options);
362
- // Get the script path
363
- const scriptPath = getScriptPath('night-watch-cron.sh');
364
- if (options.dryRun) {
365
- header('Dry Run: PRD Executor');
366
- // Resolve executor-specific provider
367
- const executorProvider = resolveJobProvider(config, 'executor');
368
- // Configuration section with table
369
- header('Configuration');
370
- const configTable = createTable({ head: ['Setting', 'Value'] });
371
- configTable.push(['Provider', executorProvider]);
372
- configTable.push(['Provider CLI', PROVIDER_COMMANDS[executorProvider]]);
373
- configTable.push(['Default Branch', config.defaultBranch || '(auto-detect)']);
374
- configTable.push(['PRD Directory', config.prdDir]);
375
- configTable.push([
376
- 'Max Runtime',
377
- `${config.maxRuntime}s (${Math.floor(config.maxRuntime / 60)}min)`,
378
- ]);
379
- configTable.push(['Branch Prefix', config.branchPrefix]);
380
- configTable.push([
381
- 'Auto-merge',
382
- config.autoMerge ? `Enabled (${config.autoMergeMethod})` : 'Disabled',
383
- ]);
384
- console.log(configTable.toString());
385
- if (envVars.NW_BOARD_ENABLED === 'true') {
386
- header('Board Status');
387
- if (config.boardProvider?.projectNumber) {
388
- try {
389
- const provider = createBoardProvider(config.boardProvider, projectDir);
390
- const readyIssues = await provider.getIssuesByColumn('Ready');
391
- if (readyIssues.length === 0) {
392
- dim(' Ready: (none)');
393
- }
394
- else {
395
- info(`Ready (${readyIssues.length}):`);
396
- for (const issue of readyIssues.slice(0, 5)) {
397
- dim(` - #${issue.number} ${issue.title}`);
398
- }
399
- if (readyIssues.length > 5) {
400
- dim(` ... and ${readyIssues.length - 5} more`);
401
- }
402
- }
403
- }
404
- catch (err) {
405
- dim(` Could not query board: ${err instanceof Error ? err.message : String(err)}`);
406
- }
407
- }
408
- else {
409
- dim(' No board configured yet. A board will be auto-created on first board-mode run.');
410
- }
411
- }
412
- else {
413
- // Scan for PRDs in filesystem mode
414
- header('PRD Status');
415
- const prdStatus = scanPrdDirectory(projectDir, config.prdDir, config.maxRuntime);
416
- if (prdStatus.pending.length === 0) {
417
- dim(' Pending: (none)');
418
- }
419
- else {
420
- const claimedItems = prdStatus.pending.filter((p) => p.claimed);
421
- const unclaimed = prdStatus.pending.filter((p) => !p.claimed);
422
- info(`Pending (${unclaimed.length} pending, ${claimedItems.length} claimed):`);
423
- for (const prd of prdStatus.pending) {
424
- if (prd.claimed && prd.claimInfo) {
425
- dim(` - ${prd.name} [claimed by ${prd.claimInfo.hostname}:${prd.claimInfo.pid}]`);
426
- }
427
- else {
428
- dim(` - ${prd.name}`);
429
- }
430
- }
431
- }
432
- if (prdStatus.completed.length === 0) {
433
- dim(' Completed: (none)');
434
- }
435
- else {
436
- info(`Completed (${prdStatus.completed.length}):`);
437
- for (const prd of prdStatus.completed.slice(0, 5)) {
438
- dim(` - ${prd}`);
439
- }
440
- if (prdStatus.completed.length > 5) {
441
- dim(` ... and ${prdStatus.completed.length - 5} more`);
442
- }
443
- }
444
- }
445
- // Provider invocation command
446
- header('Provider Invocation');
447
- if (executorProvider === 'claude') {
448
- dim(' claude -p "/night-watch" --dangerously-skip-permissions');
449
- }
450
- else {
451
- dim(' codex exec --yolo "/night-watch"');
452
- }
453
- // Environment variables
454
- header('Environment Variables');
455
- for (const [key, value] of Object.entries(envVars)) {
456
- dim(` ${key}=${value}`);
457
- }
458
- // Full command that would be executed
459
- header('Command');
460
- dim(` bash ${scriptPath} ${projectDir}`);
461
- console.log();
462
- process.exit(0);
463
- }
464
- // Execute the script with spinner
465
- const spinner = createSpinner('Running PRD executor...');
466
- spinner.start();
467
- try {
468
- await maybeApplyCronSchedulingDelay(config, 'executor', projectDir);
469
- const { exitCode, stdout, stderr } = await executeScriptWithOutput(scriptPath, [projectDir], envVars, { cwd: projectDir });
470
- const scriptResult = parseScriptResult(`${stdout}\n${stderr}`);
471
- if (exitCode === 0) {
472
- if (scriptResult?.status === 'queued') {
473
- spinner.succeed('PRD executor queued — another job is currently running');
474
- }
475
- else if (scriptResult?.status?.startsWith('skip_')) {
476
- spinner.succeed('PRD executor completed (no eligible work)');
477
- }
478
- else if (scriptResult?.status === 'success_already_merged') {
479
- spinner.succeed('PRD executor completed (PRD already merged)');
480
- }
481
- else {
482
- spinner.succeed('PRD executor completed successfully');
483
- }
484
- }
485
- else {
486
- spinner.fail(`PRD executor exited with code ${exitCode}`);
487
- }
488
- // Send completion notifications (fire-and-forget, failures do not affect exit code)
489
- if (!options.dryRun) {
490
- await sendRunCompletionNotifications(config, projectDir, options, exitCode, scriptResult);
491
- }
492
- // Opportunistic cross-project balancing:
493
- // if this project has no eligible work, try other registered projects.
494
- if (shouldAttemptCrossProjectFallback(options, scriptResult?.status)) {
495
- const executedFallback = await runCrossProjectFallback(projectDir, options);
496
- if (!executedFallback) {
497
- info('Cross-project fallback: no eligible work found in other registered projects');
498
- }
499
- }
500
- process.exit(exitCode);
501
- }
502
- catch (err) {
503
- spinner.fail('Failed to execute run command');
504
- uiError(`${err instanceof Error ? err.message : String(err)}`);
505
- process.exit(1);
506
- }
507
- });
508
- }
509
- //# sourceMappingURL=run.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAIhB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,GAAG,EACH,uBAAuB,EACvB,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,KAAK,IAAI,OAAO,EAChB,gBAAgB,EAChB,IAAI,GACL,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAE1F,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAY7B;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,YAAqB;IAErB,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;QACxD,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAC/C,OAAoB,EACpB,YAAqB;IAErB,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,GAAG,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,oFAAoF;IACpF,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,YAAY,KAAK,sBAAsB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,iBAAyB;IAIzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,oCAAoC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,8BAA8B,CAC3C,MAAyB,EACzB,UAAkB,EAClB,OAAoB,EACpB,QAAgB,EAChB,YAAkD;IAElD,8EAA8E;IAC9E,2EAA2E;IAC3E,IAAI,4BAA4B,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,mBAAmB,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACvE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAC/B,CAAC;QACF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG;gBACpB,KAAK,EAAE,qBAA8B;gBACrC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACtC,QAAQ;gBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;YACF,MAAM,iBAAiB,CACrB;gBACE,GAAG,MAAM;gBACT,aAAa,EAAE,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE;aAC1E,EACD,aAAa,CACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,MAAM,KAAK,GAAG,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAE1E,kEAAkE;IAClE,IAAI,SAAS,GAAsB,IAAI,CAAC;IACxC,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QACxC,MAAM,MAAM,GAAG,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;YACzB,SAAS,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,IAAI,GAAG;YACX,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACtC,QAAQ;YACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG;YAC/B,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM;YACrC,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,YAAY,EAAE,MAAM;YAClC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM;YACxC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM;YACxC,KAAK,EAAE,SAAS,EAAE,GAAG;YACrB,OAAO,EAAE,SAAS,EAAE,KAAK;YACzB,MAAM,EAAE,SAAS,EAAE,IAAI;YACvB,QAAQ,EAAE,SAAS,EAAE,MAAM;YAC3B,YAAY,EAAE,SAAS,EAAE,YAAY;YACrC,SAAS,EAAE,SAAS,EAAE,SAAS;YAC/B,SAAS,EAAE,SAAS,EAAE,SAAS;SAChC,CAAC;QACF,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,uBAAuB,CACpC,iBAAyB,EACzB,OAAoB;IAEpB,MAAM,UAAU,GAAG,iCAAiC,CAAC,iBAAiB,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACxD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,oCAAoC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,eAAe,GAAG,iBAAiB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,CAAC,gCAAgC,GAAG,GAAG,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAChE,UAAU,EACV,CAAC,SAAS,CAAC,IAAI,CAAC,EAChB,OAAO,EACP,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CACxB,CAAC;YACF,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;YAE/D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,8BAA8B,CAClC,eAAe,EACf,SAAS,CAAC,IAAI,EACd,OAAO,EACP,QAAQ,EACR,YAAY,CACb,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CACF,2BAA2B,SAAS,CAAC,IAAI,qBAAqB,QAAQ,0BAA0B,CACjG,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IACE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;gBACzC,YAAY,EAAE,MAAM,KAAK,wBAAwB,EACjD,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,CAAC,4CAA4C,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CACF,qCAAqC,SAAS,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC,CAClD,MAAyB;IAEzB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;SAC1C,MAAM,CACL,CAAC,EAAE,EAAiF,EAAE,CACpF,EAAE,CAAC,IAAI,KAAK,UAAU;QACtB,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ;QAC/B,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC7B,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;QAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC3B,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAC5C;SACA,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAAmC;IAC9E,OAAO,UAAU,EAAE,mBAAmB,KAAK,GAAG,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAyB,EACzB,OAAoB;IAEpB,mDAAmD;IACnD,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,UAAU;IACV,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;QACrC,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC;IAE3C,qBAAqB;IACrB,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAExC,wEAAwE;IACxE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,iFAAiF;IACjF,8EAA8E;IAC9E,6CAA6C;IAC7C,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QAC5C,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;IAChC,CAAC;IAED,gFAAgF;IAChF,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,GAAG,CAAC,yBAAyB,GAAG,MAAM,CAAC;IACzC,CAAC;IAED,qDAAqD;IACrD,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC;IAC3F,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,IAAI,oBAAoB,CAAC;IACrF,GAAG,CAAC,0BAA0B,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IACxE,GAAG,CAAC,4BAA4B,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAC5E,+EAA+E;IAC/E,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,0BAA0B,CAAC;IAExD,qFAAqF;IACrF,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC3E,GAAG,CAAC,8BAA8B,GAAG,cAAc,CAAC,OAAO,CAAC;YAC5D,IAAI,cAAc,CAAC,UAAU;gBAC3B,GAAG,CAAC,sCAAsC,GAAG,cAAc,CAAC,UAAU,CAAC;YACzE,IAAI,cAAc,CAAC,eAAe;gBAChC,GAAG,CAAC,4CAA4C,GAAG,cAAc,CAAC,eAAe,CAAC;YACpF,IAAI,cAAc,CAAC,SAAS;gBAC1B,GAAG,CAAC,qCAAqC,GAAG,cAAc,CAAC,SAAS,CAAC;YACvE,IAAI,cAAc,CAAC,KAAK;gBAAE,GAAG,CAAC,gCAAgC,GAAG,cAAc,CAAC,KAAK,CAAC;YACtF,IAAI,cAAc,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC7E,GAAG,CAAC,gCAAgC,GAAG,cAAc,CAAC,OAAO,CAAC;YAC9D,IAAI,cAAc,CAAC,UAAU;gBAC3B,GAAG,CAAC,wCAAwC,GAAG,cAAc,CAAC,UAAU,CAAC;YAC3E,IAAI,cAAc,CAAC,eAAe;gBAChC,GAAG,CAAC,8CAA8C,GAAG,cAAc,CAAC,eAAe,CAAC;YACtF,IAAI,cAAc,CAAC,SAAS;gBAC1B,GAAG,CAAC,uCAAuC,GAAG,cAAc,CAAC,SAAS,CAAC;YACzE,IAAI,cAAc,CAAC,KAAK;gBAAE,GAAG,CAAC,kCAAkC,GAAG,cAAc,CAAC,KAAK,CAAC;YACxF,IAAI,cAAc,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,0EAA0E;IAC1E,MAAM,wBAAwB,GAAG,oCAAoC,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC/E,2DAA2D;QAC3D,GAAG,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjE,GAAG,CAAC,mBAAmB,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAyB,EACzB,OAAoB;IAEpB,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,iFAAiF;QACjF,UAAU,CAAC,oBAAoB,GAAG,OAAO,CAAC,QAAyC,CAAC;IACtF,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,MAAc,EACd,UAAkB;IAElB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAElD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,2CAA2C;IAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC;gBAC/E,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,SAAS,GAA8B,IAAI,CAAC;gBAEhD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;wBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;wBAC3D,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC;4BACrB,OAAO,GAAG,IAAI,CAAC;4BACf,SAAS,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;wBACpF,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,yCAAyC;oBAC3C,CAAC;gBACH,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CACL,0BAA0B,EAC1B,wEAAwE,CACzE;SACA,MAAM,CACL,6BAA6B,EAC7B,iEAAiE,CAClE;SACA,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;QACrC,wDAAwD;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,wCAAwC;QACxC,IAAI,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,2BAA2B;QAC3B,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC,+CAA+C,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9C,sBAAsB;QACtB,MAAM,UAAU,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAExD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAEhC,qCAAqC;YACrC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAEhE,mCAAmC;YACnC,MAAM,CAAC,eAAe,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxE,WAAW,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,CAAC,CAAC;YAC9E,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,WAAW,CAAC,IAAI,CAAC;gBACf,aAAa;gBACb,GAAG,MAAM,CAAC,UAAU,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,MAAM;aACnE,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YACzD,WAAW,CAAC,IAAI,CAAC;gBACf,YAAY;gBACZ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,UAAU;aACtE,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpC,IAAI,OAAO,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;gBACxC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACvB,IAAI,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC;oBACxC,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;wBACvE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAC9D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC7B,GAAG,CAAC,iBAAiB,CAAC,CAAC;wBACzB,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,UAAU,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;4BACvC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gCAC5C,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;4BAC/C,CAAC;4BACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC3B,GAAG,CAAC,eAAe,WAAW,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;4BACpD,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,GAAG,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACtF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,kFAAkF,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,mCAAmC;gBACnC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEjF,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAChE,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC9D,IAAI,CAAC,YAAY,SAAS,CAAC,MAAM,aAAa,YAAY,CAAC,MAAM,YAAY,CAAC,CAAC;oBAC/E,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;wBACpC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;4BACjC,GAAG,CACD,SAAS,GAAG,CAAC,IAAI,gBAAgB,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAChF,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;oBACnD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBAClD,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;oBACtB,CAAC;oBACD,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnC,GAAG,CAAC,eAAe,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,8BAA8B;YAC9B,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC9B,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBAClC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC5C,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAC3B,CAAC;YAED,sCAAsC;YACtC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClB,GAAG,CAAC,UAAU,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACpE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAChE,UAAU,EACV,CAAC,UAAU,CAAC,EACZ,OAAO,EACP,EAAE,GAAG,EAAE,UAAU,EAAE,CACpB,CAAC;YACF,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;YAE/D,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,YAAY,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACtC,OAAO,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;gBAC5E,CAAC;qBAAM,IAAI,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,CAAC;qBAAM,IAAI,YAAY,EAAE,MAAM,KAAK,wBAAwB,EAAE,CAAC;oBAC7D,OAAO,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,oFAAoF;YACpF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC5F,CAAC;YAED,yCAAyC;YACzC,uEAAuE;YACvE,IAAI,iCAAiC,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;gBACrE,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC5E,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,IAAI,CAAC,6EAA6E,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}