@lzehrung/codegraph 2.3.31 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/README.md +33 -141
  2. package/codegraph-skill/codegraph/SKILL.md +8 -6
  3. package/dist/agent/artifact.d.ts +2 -0
  4. package/dist/agent/artifact.d.ts.map +1 -1
  5. package/dist/agent/artifact.js.map +1 -1
  6. package/dist/agent/call-hierarchy.js +2 -4
  7. package/dist/agent/call-hierarchy.js.map +1 -1
  8. package/dist/agent/explore.d.ts +1 -1
  9. package/dist/agent/explore.d.ts.map +1 -1
  10. package/dist/agent/explore.js +3 -2
  11. package/dist/agent/explore.js.map +1 -1
  12. package/dist/agent/refactor-plan.js +2 -4
  13. package/dist/agent/refactor-plan.js.map +1 -1
  14. package/dist/agent/rename-preview.d.ts.map +1 -1
  15. package/dist/agent/rename-preview.js +4 -3
  16. package/dist/agent/rename-preview.js.map +1 -1
  17. package/dist/agent/search.d.ts.map +1 -1
  18. package/dist/agent/search.js +5 -3
  19. package/dist/agent/search.js.map +1 -1
  20. package/dist/agent/semantic-symbols.d.ts.map +1 -1
  21. package/dist/agent/semantic-symbols.js +2 -3
  22. package/dist/agent/semantic-symbols.js.map +1 -1
  23. package/dist/agent/session.d.ts +3 -0
  24. package/dist/agent/session.d.ts.map +1 -1
  25. package/dist/agent/session.js +10 -2
  26. package/dist/agent/session.js.map +1 -1
  27. package/dist/agent/type-hierarchy.js +2 -4
  28. package/dist/agent/type-hierarchy.js.map +1 -1
  29. package/dist/agent/workspace-symbols.d.ts.map +1 -1
  30. package/dist/agent/workspace-symbols.js +2 -3
  31. package/dist/agent/workspace-symbols.js.map +1 -1
  32. package/dist/agent-tools.d.ts +0 -4
  33. package/dist/agent-tools.d.ts.map +1 -1
  34. package/dist/agent-tools.js +3 -6
  35. package/dist/agent-tools.js.map +1 -1
  36. package/dist/analysis-summary.d.ts +8 -4
  37. package/dist/analysis-summary.d.ts.map +1 -1
  38. package/dist/analysis-summary.js +15 -66
  39. package/dist/analysis-summary.js.map +1 -1
  40. package/dist/bin/cli.js +51145 -41770
  41. package/dist/bin/query-index-worker.js +122 -82
  42. package/dist/cli/affected.d.ts.map +1 -1
  43. package/dist/cli/affected.js +4 -1
  44. package/dist/cli/affected.js.map +1 -1
  45. package/dist/cli/command-catalog.js +1 -1
  46. package/dist/cli/command-catalog.js.map +1 -1
  47. package/dist/cli/command-table.d.ts.map +1 -1
  48. package/dist/cli/command-table.js +9 -17
  49. package/dist/cli/command-table.js.map +1 -1
  50. package/dist/cli/context.js +10 -10
  51. package/dist/cli/context.js.map +1 -1
  52. package/dist/cli/drift.d.ts +0 -2
  53. package/dist/cli/drift.d.ts.map +1 -1
  54. package/dist/cli/drift.js +0 -1
  55. package/dist/cli/drift.js.map +1 -1
  56. package/dist/cli/graph-delta.d.ts +0 -2
  57. package/dist/cli/graph-delta.d.ts.map +1 -1
  58. package/dist/cli/graph-delta.js +0 -4
  59. package/dist/cli/graph-delta.js.map +1 -1
  60. package/dist/cli/graph-queries.d.ts.map +1 -1
  61. package/dist/cli/graph-queries.js +27 -1
  62. package/dist/cli/graph-queries.js.map +1 -1
  63. package/dist/cli/graph.d.ts +0 -3
  64. package/dist/cli/graph.d.ts.map +1 -1
  65. package/dist/cli/graph.js +4 -14
  66. package/dist/cli/graph.js.map +1 -1
  67. package/dist/cli/help.d.ts +34 -34
  68. package/dist/cli/help.d.ts.map +1 -1
  69. package/dist/cli/help.js +9 -14
  70. package/dist/cli/help.js.map +1 -1
  71. package/dist/cli/impact.d.ts +0 -2
  72. package/dist/cli/impact.d.ts.map +1 -1
  73. package/dist/cli/impact.js +0 -1
  74. package/dist/cli/impact.js.map +1 -1
  75. package/dist/cli/index.d.ts +0 -2
  76. package/dist/cli/index.d.ts.map +1 -1
  77. package/dist/cli/index.js +5 -6
  78. package/dist/cli/index.js.map +1 -1
  79. package/dist/cli/inspect.d.ts +0 -2
  80. package/dist/cli/inspect.d.ts.map +1 -1
  81. package/dist/cli/inspect.js +5 -8
  82. package/dist/cli/inspect.js.map +1 -1
  83. package/dist/cli/invocation-context.d.ts +0 -3
  84. package/dist/cli/invocation-context.d.ts.map +1 -1
  85. package/dist/cli/invocation-context.js +4 -16
  86. package/dist/cli/invocation-context.js.map +1 -1
  87. package/dist/cli/navigation.d.ts +0 -2
  88. package/dist/cli/navigation.d.ts.map +1 -1
  89. package/dist/cli/navigation.js +0 -1
  90. package/dist/cli/navigation.js.map +1 -1
  91. package/dist/cli/options.d.ts.map +1 -1
  92. package/dist/cli/options.js +4 -14
  93. package/dist/cli/options.js.map +1 -1
  94. package/dist/cli/review.d.ts +0 -2
  95. package/dist/cli/review.d.ts.map +1 -1
  96. package/dist/cli/review.js +0 -5
  97. package/dist/cli/review.js.map +1 -1
  98. package/dist/cli/root-policy.d.ts +0 -2
  99. package/dist/cli/root-policy.d.ts.map +1 -1
  100. package/dist/cli/root-policy.js +0 -8
  101. package/dist/cli/root-policy.js.map +1 -1
  102. package/dist/cli/server.d.ts.map +1 -1
  103. package/dist/cli/server.js +0 -2
  104. package/dist/cli/server.js.map +1 -1
  105. package/dist/drift/artifact.d.ts.map +1 -1
  106. package/dist/drift/artifact.js +15 -18
  107. package/dist/drift/artifact.js.map +1 -1
  108. package/dist/drift/compare.js +1 -1
  109. package/dist/drift/compare.js.map +1 -1
  110. package/dist/drift/git.d.ts.map +1 -1
  111. package/dist/drift/git.js +0 -1
  112. package/dist/drift/git.js.map +1 -1
  113. package/dist/drift/snapshot.d.ts.map +1 -1
  114. package/dist/drift/snapshot.js +5 -7
  115. package/dist/drift/snapshot.js.map +1 -1
  116. package/dist/drift/types.d.ts +2 -2
  117. package/dist/drift/types.d.ts.map +1 -1
  118. package/dist/drift/types.js.map +1 -1
  119. package/dist/duplicates/unit-cache.d.ts +0 -1
  120. package/dist/duplicates/unit-cache.d.ts.map +1 -1
  121. package/dist/duplicates/unit-cache.js +3 -11
  122. package/dist/duplicates/unit-cache.js.map +1 -1
  123. package/dist/duplicates/units.d.ts +5 -5
  124. package/dist/duplicates/units.d.ts.map +1 -1
  125. package/dist/duplicates/units.js +25 -88
  126. package/dist/duplicates/units.js.map +1 -1
  127. package/dist/graph-builder.d.ts +0 -6
  128. package/dist/graph-builder.d.ts.map +1 -1
  129. package/dist/graph-builder.js +6 -11
  130. package/dist/graph-builder.js.map +1 -1
  131. package/dist/graph-edge-collector.d.ts +4 -6
  132. package/dist/graph-edge-collector.d.ts.map +1 -1
  133. package/dist/graph-edge-collector.js +31 -26
  134. package/dist/graph-edge-collector.js.map +1 -1
  135. package/dist/graphs/angularjs.d.ts.map +1 -1
  136. package/dist/graphs/angularjs.js +2 -1
  137. package/dist/graphs/angularjs.js.map +1 -1
  138. package/dist/graphs/edge-resolution.d.ts +4 -1
  139. package/dist/graphs/edge-resolution.d.ts.map +1 -1
  140. package/dist/graphs/edge-resolution.js +24 -76
  141. package/dist/graphs/edge-resolution.js.map +1 -1
  142. package/dist/graphs/specifiers.d.ts +4 -13
  143. package/dist/graphs/specifiers.d.ts.map +1 -1
  144. package/dist/graphs/specifiers.js +80 -173
  145. package/dist/graphs/specifiers.js.map +1 -1
  146. package/dist/graphs/symbol-graph-detailed/ast.d.ts +20 -0
  147. package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -1
  148. package/dist/graphs/symbol-graph-detailed/ast.js +154 -15
  149. package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -1
  150. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts +60 -8
  151. package/dist/graphs/symbol-graph-detailed/edge-passes.d.ts.map +1 -1
  152. package/dist/graphs/symbol-graph-detailed/edge-passes.js +997 -168
  153. package/dist/graphs/symbol-graph-detailed/edge-passes.js.map +1 -1
  154. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts +2 -1
  155. package/dist/graphs/symbol-graph-detailed/import-aliases.d.ts.map +1 -1
  156. package/dist/graphs/symbol-graph-detailed/import-aliases.js +150 -7
  157. package/dist/graphs/symbol-graph-detailed/import-aliases.js.map +1 -1
  158. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts +1 -0
  159. package/dist/graphs/symbol-graph-detailed/member-chains.d.ts.map +1 -1
  160. package/dist/graphs/symbol-graph-detailed/member-chains.js +3 -1
  161. package/dist/graphs/symbol-graph-detailed/member-chains.js.map +1 -1
  162. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts +141 -25
  163. package/dist/graphs/symbol-graph-detailed/receiver-calls.d.ts.map +1 -1
  164. package/dist/graphs/symbol-graph-detailed/receiver-calls.js +1015 -166
  165. package/dist/graphs/symbol-graph-detailed/receiver-calls.js.map +1 -1
  166. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  167. package/dist/graphs/symbol-graph-detailed.js +449 -46
  168. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  169. package/dist/graphs/symbol-graph.d.ts +2 -0
  170. package/dist/graphs/symbol-graph.d.ts.map +1 -1
  171. package/dist/graphs/symbol-graph.js +34 -16
  172. package/dist/graphs/symbol-graph.js.map +1 -1
  173. package/dist/graphs/types.d.ts +0 -4
  174. package/dist/graphs/types.d.ts.map +1 -1
  175. package/dist/graphs.d.ts +1 -1
  176. package/dist/graphs.d.ts.map +1 -1
  177. package/dist/impact/call-compatibility/providers/index.d.ts +4 -4
  178. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -1
  179. package/dist/impact/call-compatibility/providers/index.js +6 -6
  180. package/dist/impact/call-compatibility/providers/index.js.map +1 -1
  181. package/dist/impact/call-compatibility/providers/types.d.ts +2 -0
  182. package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -1
  183. package/dist/impact/call-compatibility/types.d.ts +6 -0
  184. package/dist/impact/call-compatibility/types.d.ts.map +1 -1
  185. package/dist/impact/call-compatibility.d.ts.map +1 -1
  186. package/dist/impact/call-compatibility.js +316 -526
  187. package/dist/impact/call-compatibility.js.map +1 -1
  188. package/dist/impact/map.js +1 -0
  189. package/dist/impact/map.js.map +1 -1
  190. package/dist/impact/reference-cache.d.ts.map +1 -1
  191. package/dist/impact/reference-cache.js +2 -2
  192. package/dist/impact/reference-cache.js.map +1 -1
  193. package/dist/index.d.ts +2 -2
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +1 -1
  196. package/dist/index.js.map +1 -1
  197. package/dist/indexer/ambiguous-resolution.d.ts +11 -0
  198. package/dist/indexer/ambiguous-resolution.d.ts.map +1 -0
  199. package/dist/indexer/ambiguous-resolution.js +19 -0
  200. package/dist/indexer/ambiguous-resolution.js.map +1 -0
  201. package/dist/indexer/build-cache/module-cache.d.ts +39 -1
  202. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  203. package/dist/indexer/build-cache/module-cache.js +218 -21
  204. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  205. package/dist/indexer/build-cache/options.d.ts +30 -44
  206. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  207. package/dist/indexer/build-cache/options.js +32 -71
  208. package/dist/indexer/build-cache/options.js.map +1 -1
  209. package/dist/indexer/build-cache/project-snapshot.d.ts +3 -3
  210. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  211. package/dist/indexer/build-cache/project-snapshot.js +164 -84
  212. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  213. package/dist/indexer/build-cache/reports.d.ts +0 -2
  214. package/dist/indexer/build-cache/reports.d.ts.map +1 -1
  215. package/dist/indexer/build-cache/reports.js +0 -97
  216. package/dist/indexer/build-cache/reports.js.map +1 -1
  217. package/dist/indexer/build-cache/resolver-environment.d.ts.map +1 -1
  218. package/dist/indexer/build-cache/resolver-environment.js +32 -2
  219. package/dist/indexer/build-cache/resolver-environment.js.map +1 -1
  220. package/dist/indexer/build-cache.d.ts +2 -2
  221. package/dist/indexer/build-cache.d.ts.map +1 -1
  222. package/dist/indexer/build-cache.js +2 -2
  223. package/dist/indexer/build-cache.js.map +1 -1
  224. package/dist/indexer/build-index.d.ts.map +1 -1
  225. package/dist/indexer/build-index.js +656 -71
  226. package/dist/indexer/build-index.js.map +1 -1
  227. package/dist/indexer/build-workers.d.ts.map +1 -1
  228. package/dist/indexer/build-workers.js +9 -9
  229. package/dist/indexer/build-workers.js.map +1 -1
  230. package/dist/indexer/call-hierarchy.js +1 -1
  231. package/dist/indexer/call-hierarchy.js.map +1 -1
  232. package/dist/indexer/callable-identity.d.ts +24 -0
  233. package/dist/indexer/callable-identity.d.ts.map +1 -0
  234. package/dist/indexer/callable-identity.js +111 -0
  235. package/dist/indexer/callable-identity.js.map +1 -0
  236. package/dist/indexer/compilation-units.d.ts +103 -0
  237. package/dist/indexer/compilation-units.d.ts.map +1 -0
  238. package/dist/indexer/compilation-units.js +607 -0
  239. package/dist/indexer/compilation-units.js.map +1 -0
  240. package/dist/indexer/cpp-callables.d.ts +25 -0
  241. package/dist/indexer/cpp-callables.d.ts.map +1 -0
  242. package/dist/indexer/cpp-callables.js +562 -0
  243. package/dist/indexer/cpp-callables.js.map +1 -0
  244. package/dist/indexer/declaration-visibility.d.ts +43 -2
  245. package/dist/indexer/declaration-visibility.d.ts.map +1 -1
  246. package/dist/indexer/declaration-visibility.js +158 -2
  247. package/dist/indexer/declaration-visibility.js.map +1 -1
  248. package/dist/indexer/expand-star-imports.d.ts +6 -1
  249. package/dist/indexer/expand-star-imports.d.ts.map +1 -1
  250. package/dist/indexer/expand-star-imports.js +131 -37
  251. package/dist/indexer/expand-star-imports.js.map +1 -1
  252. package/dist/indexer/finalize.d.ts.map +1 -1
  253. package/dist/indexer/finalize.js +0 -1
  254. package/dist/indexer/finalize.js.map +1 -1
  255. package/dist/indexer/import-resolution-tables.d.ts +72 -0
  256. package/dist/indexer/import-resolution-tables.d.ts.map +1 -0
  257. package/dist/indexer/import-resolution-tables.js +137 -0
  258. package/dist/indexer/import-resolution-tables.js.map +1 -0
  259. package/dist/indexer/import-types.d.ts +54 -0
  260. package/dist/indexer/import-types.d.ts.map +1 -1
  261. package/dist/indexer/import-types.js +24 -1
  262. package/dist/indexer/import-types.js.map +1 -1
  263. package/dist/indexer/imports/context.d.ts +16 -1
  264. package/dist/indexer/imports/context.d.ts.map +1 -1
  265. package/dist/indexer/imports/import-binding-tables.d.ts +13 -1
  266. package/dist/indexer/imports/import-binding-tables.d.ts.map +1 -1
  267. package/dist/indexer/imports/import-binding-tables.js +149 -30
  268. package/dist/indexer/imports/import-binding-tables.js.map +1 -1
  269. package/dist/indexer/imports/js-text-imports.js +4 -4
  270. package/dist/indexer/imports/js-text-imports.js.map +1 -1
  271. package/dist/indexer/imports/native-captures.d.ts.map +1 -1
  272. package/dist/indexer/imports/native-captures.js +24 -6
  273. package/dist/indexer/imports/native-captures.js.map +1 -1
  274. package/dist/indexer/imports/python.d.ts +10 -2
  275. package/dist/indexer/imports/python.d.ts.map +1 -1
  276. package/dist/indexer/imports/python.js +128 -112
  277. package/dist/indexer/imports/python.js.map +1 -1
  278. package/dist/indexer/imports/text-import-extractors.d.ts.map +1 -1
  279. package/dist/indexer/imports/text-import-extractors.js +68 -19
  280. package/dist/indexer/imports/text-import-extractors.js.map +1 -1
  281. package/dist/indexer/imports.d.ts +3 -4
  282. package/dist/indexer/imports.d.ts.map +1 -1
  283. package/dist/indexer/imports.js +116 -72
  284. package/dist/indexer/imports.js.map +1 -1
  285. package/dist/indexer/incremental-plan.d.ts +33 -0
  286. package/dist/indexer/incremental-plan.d.ts.map +1 -1
  287. package/dist/indexer/incremental-plan.js +203 -1
  288. package/dist/indexer/incremental-plan.js.map +1 -1
  289. package/dist/indexer/locals-and-exports.d.ts +3 -2
  290. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  291. package/dist/indexer/locals-and-exports.js +659 -78
  292. package/dist/indexer/locals-and-exports.js.map +1 -1
  293. package/dist/indexer/member-selection.d.ts +46 -0
  294. package/dist/indexer/member-selection.d.ts.map +1 -0
  295. package/dist/indexer/member-selection.js +169 -0
  296. package/dist/indexer/member-selection.js.map +1 -0
  297. package/dist/indexer/name-lookup-policies/c-family.d.ts +7 -0
  298. package/dist/indexer/name-lookup-policies/c-family.d.ts.map +1 -0
  299. package/dist/indexer/name-lookup-policies/c-family.js +137 -0
  300. package/dist/indexer/name-lookup-policies/c-family.js.map +1 -0
  301. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts +11 -0
  302. package/dist/indexer/name-lookup-policies/csharp-using-static.d.ts.map +1 -0
  303. package/dist/indexer/name-lookup-policies/csharp-using-static.js +136 -0
  304. package/dist/indexer/name-lookup-policies/csharp-using-static.js.map +1 -0
  305. package/dist/indexer/name-lookup-policies/implicit-self.d.ts +10 -0
  306. package/dist/indexer/name-lookup-policies/implicit-self.d.ts.map +1 -0
  307. package/dist/indexer/name-lookup-policies/implicit-self.js +119 -0
  308. package/dist/indexer/name-lookup-policies/implicit-self.js.map +1 -0
  309. package/dist/indexer/name-lookup-policies/index.d.ts +3 -0
  310. package/dist/indexer/name-lookup-policies/index.d.ts.map +1 -0
  311. package/dist/indexer/name-lookup-policies/index.js +132 -0
  312. package/dist/indexer/name-lookup-policies/index.js.map +1 -0
  313. package/dist/indexer/name-lookup-policies/php.d.ts +3 -0
  314. package/dist/indexer/name-lookup-policies/php.d.ts.map +1 -0
  315. package/dist/indexer/name-lookup-policies/php.js +82 -0
  316. package/dist/indexer/name-lookup-policies/php.js.map +1 -0
  317. package/dist/indexer/name-resolution-types.d.ts +101 -0
  318. package/dist/indexer/name-resolution-types.d.ts.map +1 -0
  319. package/dist/indexer/name-resolution-types.js +2 -0
  320. package/dist/indexer/name-resolution-types.js.map +1 -0
  321. package/dist/indexer/name-resolution.d.ts +57 -0
  322. package/dist/indexer/name-resolution.d.ts.map +1 -0
  323. package/dist/indexer/name-resolution.js +204 -0
  324. package/dist/indexer/name-resolution.js.map +1 -0
  325. package/dist/indexer/navigation-cpp.d.ts +58 -0
  326. package/dist/indexer/navigation-cpp.d.ts.map +1 -0
  327. package/dist/indexer/navigation-cpp.js +935 -0
  328. package/dist/indexer/navigation-cpp.js.map +1 -0
  329. package/dist/indexer/navigation-goto.d.ts +115 -3
  330. package/dist/indexer/navigation-goto.d.ts.map +1 -1
  331. package/dist/indexer/navigation-goto.js +2469 -190
  332. package/dist/indexer/navigation-goto.js.map +1 -1
  333. package/dist/indexer/navigation-local.d.ts +21 -2
  334. package/dist/indexer/navigation-local.d.ts.map +1 -1
  335. package/dist/indexer/navigation-local.js +520 -63
  336. package/dist/indexer/navigation-local.js.map +1 -1
  337. package/dist/indexer/navigation-php.d.ts +66 -0
  338. package/dist/indexer/navigation-php.d.ts.map +1 -1
  339. package/dist/indexer/navigation-php.js +287 -4
  340. package/dist/indexer/navigation-php.js.map +1 -1
  341. package/dist/indexer/navigation-provenance.d.ts +1 -1
  342. package/dist/indexer/navigation-provenance.d.ts.map +1 -1
  343. package/dist/indexer/navigation-provenance.js +4 -13
  344. package/dist/indexer/navigation-provenance.js.map +1 -1
  345. package/dist/indexer/navigation-references.d.ts +73 -6
  346. package/dist/indexer/navigation-references.d.ts.map +1 -1
  347. package/dist/indexer/navigation-references.js +661 -67
  348. package/dist/indexer/navigation-references.js.map +1 -1
  349. package/dist/indexer/navigation-resolve.d.ts +46 -2
  350. package/dist/indexer/navigation-resolve.d.ts.map +1 -1
  351. package/dist/indexer/navigation-resolve.js +599 -193
  352. package/dist/indexer/navigation-resolve.js.map +1 -1
  353. package/dist/indexer/navigation.d.ts +29 -2
  354. package/dist/indexer/navigation.d.ts.map +1 -1
  355. package/dist/indexer/navigation.js +1092 -153
  356. package/dist/indexer/navigation.js.map +1 -1
  357. package/dist/indexer/parse-context.d.ts +2 -3
  358. package/dist/indexer/parse-context.d.ts.map +1 -1
  359. package/dist/indexer/parse-context.js +8 -21
  360. package/dist/indexer/parse-context.js.map +1 -1
  361. package/dist/indexer/php-namespace-symbols.d.ts +66 -0
  362. package/dist/indexer/php-namespace-symbols.d.ts.map +1 -0
  363. package/dist/indexer/php-namespace-symbols.js +342 -0
  364. package/dist/indexer/php-namespace-symbols.js.map +1 -0
  365. package/dist/indexer/reference-candidates.d.ts.map +1 -1
  366. package/dist/indexer/reference-candidates.js +13 -7
  367. package/dist/indexer/reference-candidates.js.map +1 -1
  368. package/dist/indexer/reference-context.d.ts +2 -0
  369. package/dist/indexer/reference-context.d.ts.map +1 -1
  370. package/dist/indexer/reference-context.js +4 -0
  371. package/dist/indexer/reference-context.js.map +1 -1
  372. package/dist/indexer/scope-nodes.d.ts +92 -13
  373. package/dist/indexer/scope-nodes.d.ts.map +1 -1
  374. package/dist/indexer/scope-nodes.js +212 -20
  375. package/dist/indexer/scope-nodes.js.map +1 -1
  376. package/dist/indexer/scope-types.d.ts +29 -1
  377. package/dist/indexer/scope-types.d.ts.map +1 -1
  378. package/dist/indexer/scope.d.ts +2 -3
  379. package/dist/indexer/scope.d.ts.map +1 -1
  380. package/dist/indexer/scope.js +968 -47
  381. package/dist/indexer/scope.js.map +1 -1
  382. package/dist/indexer/shared-owner-identity.d.ts +53 -0
  383. package/dist/indexer/shared-owner-identity.d.ts.map +1 -0
  384. package/dist/indexer/shared-owner-identity.js +460 -0
  385. package/dist/indexer/shared-owner-identity.js.map +1 -0
  386. package/dist/indexer/shared.d.ts +1 -1
  387. package/dist/indexer/shared.d.ts.map +1 -1
  388. package/dist/indexer/shared.js +1 -1
  389. package/dist/indexer/shared.js.map +1 -1
  390. package/dist/indexer/star-import-precedence.d.ts +113 -0
  391. package/dist/indexer/star-import-precedence.d.ts.map +1 -0
  392. package/dist/indexer/star-import-precedence.js +402 -0
  393. package/dist/indexer/star-import-precedence.js.map +1 -0
  394. package/dist/indexer/symbols.d.ts +3 -1
  395. package/dist/indexer/symbols.d.ts.map +1 -1
  396. package/dist/indexer/symbols.js +58 -18
  397. package/dist/indexer/symbols.js.map +1 -1
  398. package/dist/indexer/ts-callables.d.ts +42 -0
  399. package/dist/indexer/ts-callables.d.ts.map +1 -0
  400. package/dist/indexer/ts-callables.js +233 -0
  401. package/dist/indexer/ts-callables.js.map +1 -0
  402. package/dist/indexer/types.d.ts +41 -26
  403. package/dist/indexer/types.d.ts.map +1 -1
  404. package/dist/indexer/unused-exports.d.ts +13 -0
  405. package/dist/indexer/unused-exports.d.ts.map +1 -0
  406. package/dist/indexer/unused-exports.js +159 -0
  407. package/dist/indexer/unused-exports.js.map +1 -0
  408. package/dist/indexer/workspace-symbols.d.ts.map +1 -1
  409. package/dist/indexer/workspace-symbols.js +3 -2
  410. package/dist/indexer/workspace-symbols.js.map +1 -1
  411. package/dist/indexer.d.ts +3 -8
  412. package/dist/indexer.d.ts.map +1 -1
  413. package/dist/indexer.js +1 -1
  414. package/dist/indexer.js.map +1 -1
  415. package/dist/languages/callable-arity.d.ts +223 -0
  416. package/dist/languages/callable-arity.d.ts.map +1 -0
  417. package/dist/languages/callable-arity.js +1199 -0
  418. package/dist/languages/callable-arity.js.map +1 -0
  419. package/dist/languages/definitions/c-family.d.ts.map +1 -1
  420. package/dist/languages/definitions/c-family.js +30 -1
  421. package/dist/languages/definitions/c-family.js.map +1 -1
  422. package/dist/languages/definitions/c.d.ts +4 -0
  423. package/dist/languages/definitions/c.d.ts.map +1 -1
  424. package/dist/languages/definitions/c.js +19 -0
  425. package/dist/languages/definitions/c.js.map +1 -1
  426. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  427. package/dist/languages/definitions/cpp.js +12 -0
  428. package/dist/languages/definitions/cpp.js.map +1 -1
  429. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  430. package/dist/languages/definitions/csharp.js +2 -8
  431. package/dist/languages/definitions/csharp.js.map +1 -1
  432. package/dist/languages/definitions/go.d.ts.map +1 -1
  433. package/dist/languages/definitions/go.js +3 -0
  434. package/dist/languages/definitions/go.js.map +1 -1
  435. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  436. package/dist/languages/definitions/javascript.js +10 -1
  437. package/dist/languages/definitions/javascript.js.map +1 -1
  438. package/dist/languages/definitions/js-family.d.ts +1 -1
  439. package/dist/languages/definitions/js-family.d.ts.map +1 -1
  440. package/dist/languages/definitions/js-family.js +7 -1
  441. package/dist/languages/definitions/js-family.js.map +1 -1
  442. package/dist/languages/definitions/php.d.ts.map +1 -1
  443. package/dist/languages/definitions/php.js +5 -1
  444. package/dist/languages/definitions/php.js.map +1 -1
  445. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  446. package/dist/languages/definitions/typescript.js +8 -1
  447. package/dist/languages/definitions/typescript.js.map +1 -1
  448. package/dist/languages/definitions/zig.d.ts.map +1 -1
  449. package/dist/languages/definitions/zig.js +8 -0
  450. package/dist/languages/definitions/zig.js.map +1 -1
  451. package/dist/lifecycle/manifest.d.ts.map +1 -1
  452. package/dist/lifecycle/manifest.js +0 -1
  453. package/dist/lifecycle/manifest.js.map +1 -1
  454. package/dist/mcp/handlers.js +14 -7
  455. package/dist/mcp/handlers.js.map +1 -1
  456. package/dist/native/byte-index.d.ts +6 -0
  457. package/dist/native/byte-index.d.ts.map +1 -1
  458. package/dist/native/byte-index.js +11 -6
  459. package/dist/native/byte-index.js.map +1 -1
  460. package/dist/native/contracts.d.ts +2 -3
  461. package/dist/native/contracts.d.ts.map +1 -1
  462. package/dist/native/execution.d.ts +9 -9
  463. package/dist/native/execution.d.ts.map +1 -1
  464. package/dist/native/execution.js +37 -77
  465. package/dist/native/execution.js.map +1 -1
  466. package/dist/native/js-bridge.d.ts +2 -15
  467. package/dist/native/js-bridge.d.ts.map +1 -1
  468. package/dist/native/js-bridge.js +2 -15
  469. package/dist/native/js-bridge.js.map +1 -1
  470. package/dist/native/query-results.js +2 -2
  471. package/dist/native/query-results.js.map +1 -1
  472. package/dist/native/runtime.d.ts +12 -12
  473. package/dist/native/runtime.d.ts.map +1 -1
  474. package/dist/native/runtime.js +24 -69
  475. package/dist/native/runtime.js.map +1 -1
  476. package/dist/native/tree-sitter-native.d.ts +3 -3
  477. package/dist/native/tree-sitter-native.d.ts.map +1 -1
  478. package/dist/native/tree-sitter-native.js +2 -2
  479. package/dist/native/tree-sitter-native.js.map +1 -1
  480. package/dist/presets.d.ts.map +1 -1
  481. package/dist/presets.js +0 -4
  482. package/dist/presets.js.map +1 -1
  483. package/dist/review/candidates.d.ts.map +1 -1
  484. package/dist/review/candidates.js +1 -1
  485. package/dist/review/candidates.js.map +1 -1
  486. package/dist/review/deleted.d.ts +3 -3
  487. package/dist/review/deleted.d.ts.map +1 -1
  488. package/dist/review/deleted.js +82 -32
  489. package/dist/review/deleted.js.map +1 -1
  490. package/dist/review/report.d.ts +1 -0
  491. package/dist/review/report.d.ts.map +1 -1
  492. package/dist/review/report.js +1 -1
  493. package/dist/review/report.js.map +1 -1
  494. package/dist/review.d.ts.map +1 -1
  495. package/dist/review.js +3 -20
  496. package/dist/review.js.map +1 -1
  497. package/dist/session.d.ts.map +1 -1
  498. package/dist/session.js +0 -5
  499. package/dist/session.js.map +1 -1
  500. package/dist/sql/navigation.d.ts.map +1 -1
  501. package/dist/sql/navigation.js +2 -1
  502. package/dist/sql/navigation.js.map +1 -1
  503. package/dist/sql/source-graph.d.ts.map +1 -1
  504. package/dist/sql/source-graph.js +2 -2
  505. package/dist/sql/source-graph.js.map +1 -1
  506. package/dist/sqlite/schema.d.ts +1 -1
  507. package/dist/sqlite/schema.d.ts.map +1 -1
  508. package/dist/sqlite/schema.js +8 -2
  509. package/dist/sqlite/schema.js.map +1 -1
  510. package/dist/sqlite/write.js +2 -2
  511. package/dist/sqlite/write.js.map +1 -1
  512. package/dist/types.d.ts +2 -0
  513. package/dist/types.d.ts.map +1 -1
  514. package/dist/util/bloom-filter.d.ts +8 -1
  515. package/dist/util/bloom-filter.d.ts.map +1 -1
  516. package/dist/util/bloom-filter.js +15 -2
  517. package/dist/util/bloom-filter.js.map +1 -1
  518. package/dist/util/glob.d.ts +32 -0
  519. package/dist/util/glob.d.ts.map +1 -0
  520. package/dist/util/glob.js +137 -0
  521. package/dist/util/glob.js.map +1 -0
  522. package/dist/util/graph-edges.d.ts +19 -1
  523. package/dist/util/graph-edges.d.ts.map +1 -1
  524. package/dist/util/graph-edges.js +30 -4
  525. package/dist/util/graph-edges.js.map +1 -1
  526. package/dist/util/identifiers.d.ts +15 -0
  527. package/dist/util/identifiers.d.ts.map +1 -1
  528. package/dist/util/identifiers.js +35 -0
  529. package/dist/util/identifiers.js.map +1 -1
  530. package/dist/util/member-access-tables.d.ts +61 -4
  531. package/dist/util/member-access-tables.d.ts.map +1 -1
  532. package/dist/util/member-access-tables.js +139 -19
  533. package/dist/util/member-access-tables.js.map +1 -1
  534. package/dist/util/member-access.d.ts +17 -0
  535. package/dist/util/member-access.d.ts.map +1 -1
  536. package/dist/util/member-access.js +98 -3
  537. package/dist/util/member-access.js.map +1 -1
  538. package/dist/util/project-files.d.ts +2 -10
  539. package/dist/util/project-files.d.ts.map +1 -1
  540. package/dist/util/project-files.js +29 -51
  541. package/dist/util/project-files.js.map +1 -1
  542. package/dist/util/python-type-checking.d.ts +18 -0
  543. package/dist/util/python-type-checking.d.ts.map +1 -0
  544. package/dist/util/python-type-checking.js +160 -0
  545. package/dist/util/python-type-checking.js.map +1 -0
  546. package/dist/util/resolution/cargo-targets.d.ts +11 -0
  547. package/dist/util/resolution/cargo-targets.d.ts.map +1 -1
  548. package/dist/util/resolution/cargo-targets.js +174 -13
  549. package/dist/util/resolution/cargo-targets.js.map +1 -1
  550. package/dist/util/resolution/csharp.d.ts +33 -1
  551. package/dist/util/resolution/csharp.d.ts.map +1 -1
  552. package/dist/util/resolution/csharp.js +145 -30
  553. package/dist/util/resolution/csharp.js.map +1 -1
  554. package/dist/util/resolution/jvm.d.ts +7 -3
  555. package/dist/util/resolution/jvm.d.ts.map +1 -1
  556. package/dist/util/resolution/jvm.js +56 -38
  557. package/dist/util/resolution/jvm.js.map +1 -1
  558. package/dist/util/resolution/php.d.ts.map +1 -1
  559. package/dist/util/resolution/php.js +35 -8
  560. package/dist/util/resolution/php.js.map +1 -1
  561. package/dist/util/resolution/python.d.ts +9 -0
  562. package/dist/util/resolution/python.d.ts.map +1 -1
  563. package/dist/util/resolution/python.js +46 -0
  564. package/dist/util/resolution/python.js.map +1 -1
  565. package/dist/util/resolution/rust.d.ts +0 -1
  566. package/dist/util/resolution/rust.d.ts.map +1 -1
  567. package/dist/util/resolution/rust.js +95 -35
  568. package/dist/util/resolution/rust.js.map +1 -1
  569. package/dist/util/resolution/specifier-targets.d.ts +44 -0
  570. package/dist/util/resolution/specifier-targets.d.ts.map +1 -0
  571. package/dist/util/resolution/specifier-targets.js +152 -0
  572. package/dist/util/resolution/specifier-targets.js.map +1 -0
  573. package/dist/util/resolution-candidates.d.ts +5 -0
  574. package/dist/util/resolution-candidates.d.ts.map +1 -1
  575. package/dist/util/resolution-candidates.js +16 -3
  576. package/dist/util/resolution-candidates.js.map +1 -1
  577. package/dist/util/resolution.d.ts +2 -1
  578. package/dist/util/resolution.d.ts.map +1 -1
  579. package/dist/util/resolution.js +101 -15
  580. package/dist/util/resolution.js.map +1 -1
  581. package/dist/util/specifiers.d.ts +29 -1
  582. package/dist/util/specifiers.d.ts.map +1 -1
  583. package/dist/util/specifiers.js +56 -8
  584. package/dist/util/specifiers.js.map +1 -1
  585. package/dist/util/trivia.d.ts.map +1 -1
  586. package/dist/util/trivia.js +49 -30
  587. package/dist/util/trivia.js.map +1 -1
  588. package/dist/util/workspace.d.ts.map +1 -1
  589. package/dist/util/workspace.js +32 -4
  590. package/dist/util/workspace.js.map +1 -1
  591. package/docs/mcp.md +3 -2
  592. package/package.json +5 -7
  593. package/dist/impact/call-compatibility/providers/profiles.d.ts +0 -80
  594. package/dist/impact/call-compatibility/providers/profiles.d.ts.map +0 -1
  595. package/dist/impact/call-compatibility/providers/profiles.js +0 -164
  596. package/dist/impact/call-compatibility/providers/profiles.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import type { CallableArity } from "../languages/callable-arity.js";
2
+ import type { SyntaxNodeLike } from "../languages/types.js";
3
+ import type { FileId } from "../types.js";
4
+ import type { Binding } from "./scope-types.js";
5
+ /** Normalized C/C++ parameter types and member qualifiers, independent of defaults. */
6
+ export declare function cppCallableSignatureForNode(node: SyntaxNodeLike, arity: CallableArity | null): string | null;
7
+ /**
8
+ * The full owner path of a C++ callable declaration: its enclosing namespaces and classes plus
9
+ * any qualifier it declares, so `namespace b { namespace C { int f(); } }` and `int b::C::f() {}`
10
+ * share `b::C` while `int a::C::f() {}` is `a::C`. Declarations with the same parameters but
11
+ * different owners are different callables.
12
+ */
13
+ export declare function cppCallableOwnerPath(node: SyntaxNodeLike): string;
14
+ /** Static namespace functions and anonymous-namespace functions belong to one translation unit. */
15
+ export declare function cppCallableHasInternalLinkage(node: SyntaxNodeLike): boolean;
16
+ /** Same-shape declarations and definitions for one C++ callable binding. */
17
+ export declare function cppEquivalentCallableBindings(binding: Binding): readonly Binding[];
18
+ /**
19
+ * Call-count selection without the declaration-site shortcut. Use when the query
20
+ * node may come from a different file than the candidate bindings.
21
+ */
22
+ export declare function cppSelectCallableByCallArity(bindings: readonly Binding[], node: SyntaxNodeLike, source: string, canonicalNames?: ReadonlyMap<Binding, string>): Binding | null;
23
+ export declare function cppSelectCallableBinding(bindings: readonly Binding[], node: SyntaxNodeLike, source: string, useFile: FileId, bindingsFile: FileId): Binding | null;
24
+ export declare function cppCallableIsDefinition(node: SyntaxNodeLike | null | undefined): boolean;
25
+ //# sourceMappingURL=cpp-callables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp-callables.d.ts","sourceRoot":"","sources":["../../src/indexer/cpp-callables.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA6XhD,uFAAuF;AACvF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAe5G;AAwCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAcjE;AAED,mGAAmG;AACnG,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAmB3E;AA4CD,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAQlF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAC5C,OAAO,GAAG,IAAI,CAkBhB;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,GAAG,IAAI,CAMhB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQxF"}
@@ -0,0 +1,562 @@
1
+ import { declarationMemberArity, isVariadicParameterMarker } from "../graphs/symbol-graph-detailed/ast.js";
2
+ import { callArgumentCount, cppQualifiedTextSegments } from "../graphs/symbol-graph-detailed/receiver-calls.js";
3
+ import { fileIdentityKey } from "../util/paths.js";
4
+ function functionDeclarator(node) {
5
+ let current = node;
6
+ while (current) {
7
+ if (current.type === "function_declarator")
8
+ return current;
9
+ if (current.type === "program")
10
+ return null;
11
+ current = current.parent;
12
+ }
13
+ return null;
14
+ }
15
+ function parameterName(parameter) {
16
+ let current = parameter.childForFieldName("declarator");
17
+ while (current) {
18
+ if (current.type === "identifier" || current.type === "field_identifier")
19
+ return current;
20
+ const nested = current.childForFieldName("name") ?? current.childForFieldName("declarator");
21
+ if (nested) {
22
+ current = nested;
23
+ }
24
+ else if (current.type === "reference_declarator" ||
25
+ current.type === "parenthesized_declarator" ||
26
+ current.type === "variadic_declarator") {
27
+ current = current.namedChildren.find((child) => child.type !== "comment") ?? null;
28
+ }
29
+ else {
30
+ return null;
31
+ }
32
+ }
33
+ return null;
34
+ }
35
+ function nodeSpanKey(node) {
36
+ return `${node.startIndex}:${node.endIndex}`;
37
+ }
38
+ function sameSpan(left, right) {
39
+ return left.startIndex === right.startIndex && left.endIndex === right.endIndex;
40
+ }
41
+ /**
42
+ * Leaf tokens for one node, skipping comments and omitted spans. Used for type
43
+ * specifiers, array extents, trailing function specifiers, and declarator forms
44
+ * the structured walker does not model. Parameter names and default values never
45
+ * contribute because collectOmittedParameterSpans marks their spans first.
46
+ */
47
+ function appendLeafTokens(node, omittedSpans, tokens) {
48
+ if (node.type === "comment" || omittedSpans.has(nodeSpanKey(node)))
49
+ return;
50
+ // Leaf tokens keep unmodeled punctuation such as qualifiers distinct, while
51
+ // omitted name spans make named and abstract declarators equivalent.
52
+ if (!node.child(0)) {
53
+ tokens.push(node.text);
54
+ return;
55
+ }
56
+ for (let index = 0;; index += 1) {
57
+ const child = node.child(index);
58
+ if (!child)
59
+ break;
60
+ appendLeafTokens(child, omittedSpans, tokens);
61
+ }
62
+ }
63
+ const PARAMETER_DECLARATION_TYPES = {
64
+ parameter_declaration: true,
65
+ optional_parameter_declaration: true,
66
+ variadic_parameter_declaration: true,
67
+ };
68
+ const TOP_LEVEL_CV_QUALIFIER_TEXTS = {
69
+ const: true,
70
+ volatile: true,
71
+ };
72
+ /**
73
+ * Type-specifier kinds that can never denote an array alias, so a qualifier on
74
+ * them is provably top-level when no declarator operator follows. Aliased types
75
+ * may name an array typedef, which would turn a leading const into a pointee
76
+ * qualifier after the array-to-pointer adjustment; those keep their qualifiers
77
+ * because alias expansion is out of scope.
78
+ */
79
+ const PROVABLY_NON_ARRAY_TYPE_KINDS = {
80
+ primitive_type: true,
81
+ sized_type_specifier: true,
82
+ struct_specifier: true,
83
+ enum_specifier: true,
84
+ union_specifier: true,
85
+ class_specifier: true,
86
+ };
87
+ const DECLARATOR_OPERATOR_TYPES = {
88
+ pointer_declarator: true,
89
+ abstract_pointer_declarator: true,
90
+ reference_declarator: true,
91
+ abstract_reference_declarator: true,
92
+ array_declarator: true,
93
+ abstract_array_declarator: true,
94
+ function_declarator: true,
95
+ abstract_function_declarator: true,
96
+ };
97
+ /** Grouping only: parentheses and parameter packs do not construct type. */
98
+ const TRANSPARENT_DECLARATOR_TYPES = {
99
+ parenthesized_declarator: true,
100
+ abstract_parenthesized_declarator: true,
101
+ variadic_declarator: true,
102
+ };
103
+ const DECLARATOR_CORE_TYPES = {
104
+ identifier: true,
105
+ field_identifier: true,
106
+ type_identifier: true,
107
+ destructor_name: true,
108
+ operator_name: true,
109
+ template_function: true,
110
+ };
111
+ /** Inner declarator of a declarator-chain node, or null at the declared name. */
112
+ function declaratorInner(node) {
113
+ if (node.type === "parenthesized_declarator" ||
114
+ node.type === "abstract_parenthesized_declarator" ||
115
+ node.type === "variadic_declarator") {
116
+ return node.namedChildren.find((child) => child.type !== "comment") ?? null;
117
+ }
118
+ return node.childForFieldName("declarator");
119
+ }
120
+ /**
121
+ * Walks a declarator chain from its root toward the declared name. Operators
122
+ * wrap the accumulated type, so the deepest operator is the top of the
123
+ * parameter type; its qualifiers are the only declarator qualifiers that can be
124
+ * top-level. Any unmodeled declarator form hides the structure and vetoes both
125
+ * the top operator and qualifier dropping.
126
+ */
127
+ function scanDeclaratorChain(declarator) {
128
+ let topOperator = null;
129
+ let current = declarator;
130
+ while (current) {
131
+ if (DECLARATOR_OPERATOR_TYPES[current.type]) {
132
+ topOperator = current;
133
+ }
134
+ else if (!TRANSPARENT_DECLARATOR_TYPES[current.type] && !DECLARATOR_CORE_TYPES[current.type]) {
135
+ return { topOperator: null, modeled: false };
136
+ }
137
+ const inner = declaratorInner(current);
138
+ if (!inner)
139
+ break;
140
+ current = inner;
141
+ }
142
+ return { topOperator, modeled: true };
143
+ }
144
+ /** Parameter names and default values at any nesting depth never become tokens. */
145
+ function collectOmittedParameterSpans(node, omittedSpans) {
146
+ if (PARAMETER_DECLARATION_TYPES[node.type]) {
147
+ const name = parameterName(node);
148
+ if (name)
149
+ omittedSpans.add(nodeSpanKey(name));
150
+ const defaultValue = node.childForFieldName("default_value");
151
+ if (defaultValue) {
152
+ omittedSpans.add(nodeSpanKey(defaultValue));
153
+ for (let index = 0;; index += 1) {
154
+ const child = node.child(index);
155
+ if (!child)
156
+ break;
157
+ if (child.type === "=")
158
+ omittedSpans.add(nodeSpanKey(child));
159
+ }
160
+ }
161
+ }
162
+ for (let index = 0;; index += 1) {
163
+ const child = node.child(index);
164
+ if (!child)
165
+ break;
166
+ collectOmittedParameterSpans(child, omittedSpans);
167
+ }
168
+ }
169
+ function appendDeclaratorQualifierTokens(node, dropTopLevelCv, omittedSpans, tokens) {
170
+ for (let index = 0;; index += 1) {
171
+ const child = node.child(index);
172
+ if (!child)
173
+ break;
174
+ if (child.type !== "type_qualifier")
175
+ continue;
176
+ if (dropTopLevelCv && TOP_LEVEL_CV_QUALIFIER_TEXTS[child.text])
177
+ continue;
178
+ appendLeafTokens(child, omittedSpans, tokens);
179
+ }
180
+ }
181
+ function referencePunctuator(node) {
182
+ for (let index = 0;; index += 1) {
183
+ const child = node.child(index);
184
+ if (!child)
185
+ break;
186
+ if (child.type === "&" || child.type === "&&")
187
+ return child.text;
188
+ }
189
+ return "&";
190
+ }
191
+ /** Bracket contents of a retained array dimension: qualifiers and the extent. */
192
+ function appendArrayExtentTokens(node, omittedSpans, tokens) {
193
+ const declarator = node.childForFieldName("declarator");
194
+ for (let index = 0;; index += 1) {
195
+ const child = node.child(index);
196
+ if (!child)
197
+ break;
198
+ if (child.type === "[" || child.type === "]")
199
+ continue;
200
+ if (declarator && sameSpan(child, declarator))
201
+ continue;
202
+ appendLeafTokens(child, omittedSpans, tokens);
203
+ }
204
+ }
205
+ function appendParameterListTokens(node, omittedSpans, tokens) {
206
+ const parameters = node.childForFieldName("parameters");
207
+ if (!parameters)
208
+ return;
209
+ // `(void)` is the C/C++ zero-parameter spelling. A variadic parameter list is not empty, so it
210
+ // keeps its pack/ellipsis tokens instead of collapsing to `()`.
211
+ if (declarationMemberArity(node, "cpp") === 0 && !parameterListIsVariadic(parameters)) {
212
+ tokens.push("(", ")");
213
+ return;
214
+ }
215
+ for (let index = 0;; index += 1) {
216
+ const child = parameters.child(index);
217
+ if (!child)
218
+ break;
219
+ if (child.type === "comment")
220
+ continue;
221
+ if (child.type === ",") {
222
+ tokens.push(",");
223
+ continue;
224
+ }
225
+ if (PARAMETER_DECLARATION_TYPES[child.type]) {
226
+ appendParameterTokens(child, tokens);
227
+ continue;
228
+ }
229
+ appendLeafTokens(child, omittedSpans, tokens);
230
+ }
231
+ }
232
+ /** Exception specifications such as noexcept that trail one function type. */
233
+ function appendTrailingFunctionTokens(node, omittedSpans, tokens) {
234
+ const declarator = node.childForFieldName("declarator");
235
+ const parameters = node.childForFieldName("parameters");
236
+ for (let index = 0;; index += 1) {
237
+ const child = node.child(index);
238
+ if (!child)
239
+ break;
240
+ if (child.type === "(" || child.type === ")")
241
+ continue;
242
+ if (declarator && sameSpan(child, declarator))
243
+ continue;
244
+ if (parameters && sameSpan(child, parameters))
245
+ continue;
246
+ appendLeafTokens(child, omittedSpans, tokens);
247
+ }
248
+ }
249
+ /**
250
+ * Emits one declarator chain root-first: each operator wraps the accumulated
251
+ * type, so root-first order is the canonical constructor order and equivalent
252
+ * spellings such as `T p[][3]` and `T (*p)[3]` produce the same sequence.
253
+ */
254
+ function appendAdjustedDeclaratorTokens(node, scan, omittedSpans, tokens) {
255
+ if (TRANSPARENT_DECLARATOR_TYPES[node.type]) {
256
+ if (node.type === "variadic_declarator")
257
+ tokens.push("...");
258
+ const inner = declaratorInner(node);
259
+ if (inner)
260
+ appendAdjustedDeclaratorTokens(inner, scan, omittedSpans, tokens);
261
+ return;
262
+ }
263
+ if (!DECLARATOR_OPERATOR_TYPES[node.type]) {
264
+ // Unmodeled or core declarator form: leaf tokens keep distinct types distinct.
265
+ appendLeafTokens(node, omittedSpans, tokens);
266
+ return;
267
+ }
268
+ switch (node.type) {
269
+ case "pointer_declarator":
270
+ case "abstract_pointer_declarator": {
271
+ tokens.push("*");
272
+ // Qualifiers on the top pointer are top-level cv and dropped; deeper
273
+ // pointers keep theirs because they qualify a pointee.
274
+ appendDeclaratorQualifierTokens(node, scan.topOperator === node, omittedSpans, tokens);
275
+ break;
276
+ }
277
+ case "reference_declarator":
278
+ case "abstract_reference_declarator": {
279
+ // & and && share the node type; the punctuator text keeps them distinct.
280
+ tokens.push(referencePunctuator(node));
281
+ break;
282
+ }
283
+ case "array_declarator":
284
+ case "abstract_array_declarator": {
285
+ if (scan.topOperator === node) {
286
+ // Parameter array-to-pointer adjustment: the outermost extent is not
287
+ // part of the adjusted pointer type; inner extents stay.
288
+ tokens.push("*");
289
+ }
290
+ else {
291
+ tokens.push("[");
292
+ appendArrayExtentTokens(node, omittedSpans, tokens);
293
+ tokens.push("]");
294
+ }
295
+ break;
296
+ }
297
+ case "function_declarator":
298
+ case "abstract_function_declarator": {
299
+ tokens.push("(");
300
+ appendParameterListTokens(node, omittedSpans, tokens);
301
+ tokens.push(")");
302
+ appendTrailingFunctionTokens(node, omittedSpans, tokens);
303
+ if (scan.topOperator === node) {
304
+ // Parameter function-to-pointer adjustment.
305
+ tokens.push("*");
306
+ }
307
+ break;
308
+ }
309
+ }
310
+ const inner = declaratorInner(node);
311
+ if (inner)
312
+ appendAdjustedDeclaratorTokens(inner, scan, omittedSpans, tokens);
313
+ }
314
+ /**
315
+ * Normalized fingerprint tokens for one parameter declaration.
316
+ *
317
+ * Language-defined adjustments only; no alias resolution and no general type
318
+ * equivalence:
319
+ * - array-to-pointer: the outermost array dimension of a parameter becomes a
320
+ * pointer, so `T p[]`, `T p[N]`, and `T* p` share one identity. Likewise,
321
+ * `T p[][3]` equals `T (*p)[3]`, but differs from `T* p` or `T p[][4]`;
322
+ * - function-to-pointer: `T f(P)` and `T (*f)(P)` share one identity;
323
+ * - top-level const/volatile is dropped for provably scalar base types with no
324
+ * declarator operator (`const int p` equals `int p`) and for the top pointer
325
+ * (`int* const p` equals `int* p`). Qualifiers that would land on a pointee,
326
+ * referent, element, or return type stay, and aliased base types keep their
327
+ * qualifiers because an array typedef cannot be ruled out syntactically.
328
+ * References, pointee qualification, member-pointer forms, unmodeled
329
+ * declarators, and trailing member cv/ref suffixes (handled by the shape's
330
+ * suffix tokens) are preserved as distinct.
331
+ */
332
+ function appendParameterTokens(parameter, tokens) {
333
+ const omittedSpans = new Set();
334
+ collectOmittedParameterSpans(parameter, omittedSpans);
335
+ const declarator = parameter.childForFieldName("declarator");
336
+ const scan = declarator ? scanDeclaratorChain(declarator) : { topOperator: null, modeled: true };
337
+ const typeNode = parameter.childForFieldName("type");
338
+ const dropTypeQualifiers = !scan.topOperator && scan.modeled && !!typeNode && PROVABLY_NON_ARRAY_TYPE_KINDS[typeNode.type];
339
+ for (let index = 0;; index += 1) {
340
+ const child = parameter.child(index);
341
+ if (!child)
342
+ break;
343
+ if (child.type === "comment")
344
+ continue;
345
+ if (declarator && sameSpan(child, declarator))
346
+ continue;
347
+ if (child.type === "type_qualifier" && TOP_LEVEL_CV_QUALIFIER_TEXTS[child.text] && dropTypeQualifiers) {
348
+ continue;
349
+ }
350
+ appendLeafTokens(child, omittedSpans, tokens);
351
+ }
352
+ if (declarator)
353
+ appendAdjustedDeclaratorTokens(declarator, scan, omittedSpans, tokens);
354
+ }
355
+ function parameterFingerprint(parameter) {
356
+ const tokens = [];
357
+ appendParameterTokens(parameter, tokens);
358
+ return JSON.stringify(tokens);
359
+ }
360
+ function parameterListIsVariadic(parameters) {
361
+ for (let index = 0;; index += 1) {
362
+ const child = parameters.child(index);
363
+ if (!child)
364
+ return false;
365
+ if (child.type === "..." || child.type.includes("variadic_parameter"))
366
+ return true;
367
+ }
368
+ }
369
+ /** Normalized C/C++ parameter types and member qualifiers, independent of defaults. */
370
+ export function cppCallableSignatureForNode(node, arity) {
371
+ const declarator = functionDeclarator(node);
372
+ const parameters = declarator?.childForFieldName("parameters");
373
+ if (!declarator || !parameters || !arity)
374
+ return null;
375
+ let parameterNodes = parameters.namedChildren.filter((child) => child.type !== "comment");
376
+ // A `(void)` parameter list shares identity with `()`. A variadic pack stays distinct.
377
+ if (arity.maxArgs === 0)
378
+ parameterNodes = parameterNodes.filter((child) => isVariadicParameterMarker(child));
379
+ const suffixTokens = [];
380
+ for (let index = 0;; index += 1) {
381
+ const child = declarator.child(index);
382
+ if (!child)
383
+ break;
384
+ if (child.startIndex >= parameters.endIndex)
385
+ appendLeafTokens(child, new Set(), suffixTokens);
386
+ }
387
+ const variadic = parameterListIsVariadic(parameters);
388
+ return `${parameterNodes.map(parameterFingerprint).join("|")}::${variadic ? "variadic" : "fixed"}::${JSON.stringify(suffixTokens)}`;
389
+ }
390
+ function syntaxRoot(node) {
391
+ let current = node;
392
+ while (current.parent)
393
+ current = current.parent;
394
+ return current;
395
+ }
396
+ /**
397
+ * Only a binding from the query file can be its declaration site. Its scope index may
398
+ * come from an earlier parse, so matching trees still requires source spans and text.
399
+ */
400
+ function isCppDeclarationSite(binding, node) {
401
+ const candidate = binding.node;
402
+ if (!candidate)
403
+ return false;
404
+ if (candidate.startIndex !== node.startIndex || candidate.endIndex !== node.endIndex)
405
+ return false;
406
+ return candidate.text === node.text && syntaxRoot(candidate).endIndex === syntaxRoot(node).endIndex;
407
+ }
408
+ function cppCallArgumentCount(node, source) {
409
+ let current = node.parent;
410
+ while (current) {
411
+ if (current.type === "call_expression") {
412
+ const callee = current.childForFieldName("function");
413
+ if (callee && callee.startIndex <= node.startIndex && callee.endIndex >= node.endIndex) {
414
+ return callArgumentCount(current, source);
415
+ }
416
+ }
417
+ if (current.type === "function_definition" || current.type === "program")
418
+ return null;
419
+ current = current.parent;
420
+ }
421
+ return null;
422
+ }
423
+ const CPP_OWNER_SCOPE_TYPES = new Set([
424
+ "namespace_definition",
425
+ "class_specifier",
426
+ "struct_specifier",
427
+ "union_specifier",
428
+ ]);
429
+ /**
430
+ * The full owner path of a C++ callable declaration: its enclosing namespaces and classes plus
431
+ * any qualifier it declares, so `namespace b { namespace C { int f(); } }` and `int b::C::f() {}`
432
+ * share `b::C` while `int a::C::f() {}` is `a::C`. Declarations with the same parameters but
433
+ * different owners are different callables.
434
+ */
435
+ export function cppCallableOwnerPath(node) {
436
+ let qualified = null;
437
+ for (let current = node.parent; current?.type === "qualified_identifier"; current = current.parent) {
438
+ qualified = current;
439
+ }
440
+ const declared = qualified ? cppQualifiedTextSegments(qualified.text) : [];
441
+ declared.pop();
442
+ const lexical = [];
443
+ for (let current = (qualified ?? node).parent; current; current = current.parent) {
444
+ if (!CPP_OWNER_SCOPE_TYPES.has(current.type))
445
+ continue;
446
+ const name = current.childForFieldName("name");
447
+ if (name)
448
+ lexical.unshift(...cppQualifiedTextSegments(name.text));
449
+ }
450
+ return [...lexical, ...declared].join("::");
451
+ }
452
+ /** Static namespace functions and anonymous-namespace functions belong to one translation unit. */
453
+ export function cppCallableHasInternalLinkage(node) {
454
+ let insideClass = false;
455
+ let staticDeclaration = false;
456
+ for (let current = node; current; current = current.parent) {
457
+ if (current.type === "namespace_definition" && !current.childForFieldName("name"))
458
+ return true;
459
+ if (current.type === "class_specifier" ||
460
+ current.type === "struct_specifier" ||
461
+ current.type === "union_specifier") {
462
+ insideClass = true;
463
+ }
464
+ if (current.type === "function_definition" || current.type === "declaration") {
465
+ if (current.namedChildren.some((child) => child.type === "storage_class_specifier" && child.text === "static")) {
466
+ staticDeclaration = true;
467
+ }
468
+ }
469
+ }
470
+ return staticDeclaration && !insideClass;
471
+ }
472
+ function cppCallableEntities(bindings, canonicalNames) {
473
+ const entities = new Map();
474
+ for (const binding of bindings) {
475
+ const callable = binding.callable;
476
+ if (!callable?.signature || !callable.arity)
477
+ return null;
478
+ const canonicalName = canonicalNames?.get(binding);
479
+ if (canonicalNames && canonicalName === undefined)
480
+ return null;
481
+ // A using-declaration can change the visible name only after imports are known. Declarations
482
+ // of one external callable in several headers group by signature; an internal-linkage
483
+ // function stays in its own translation unit.
484
+ const signatureScope = binding.node && cppCallableHasInternalLinkage(binding.node)
485
+ ? callable.key
486
+ : `${callable.owner}\0${callable.signature}`;
487
+ const key = canonicalName === undefined ? callable.key : `${canonicalName}\0${signatureScope}`;
488
+ const existing = entities.get(key);
489
+ if (!existing) {
490
+ entities.set(key, {
491
+ bindings: [binding],
492
+ minArity: callable.arity.minArgs,
493
+ maxArity: callable.arity.maxArgs,
494
+ });
495
+ continue;
496
+ }
497
+ existing.bindings.push(binding);
498
+ existing.minArity = Math.min(existing.minArity, callable.arity.minArgs);
499
+ if (existing.maxArity === null || callable.arity.maxArgs === null) {
500
+ existing.maxArity = null;
501
+ }
502
+ else {
503
+ existing.maxArity = Math.max(existing.maxArity, callable.arity.maxArgs);
504
+ }
505
+ }
506
+ return entities;
507
+ }
508
+ function preferredCppCallableBinding(bindings) {
509
+ return bindings.find((binding) => binding.callable?.definition) ?? bindings[0];
510
+ }
511
+ /** Same-shape declarations and definitions for one C++ callable binding. */
512
+ export function cppEquivalentCallableBindings(binding) {
513
+ const collisions = binding.sameScopeFunctionBindings ?? [binding];
514
+ const entities = cppCallableEntities(collisions);
515
+ if (!entities)
516
+ return [binding];
517
+ for (const entity of entities.values()) {
518
+ if (entity.bindings.includes(binding))
519
+ return entity.bindings;
520
+ }
521
+ return [binding];
522
+ }
523
+ /**
524
+ * Call-count selection without the declaration-site shortcut. Use when the query
525
+ * node may come from a different file than the candidate bindings.
526
+ */
527
+ export function cppSelectCallableByCallArity(bindings, node, source, canonicalNames) {
528
+ const entities = cppCallableEntities(bindings, canonicalNames);
529
+ if (!entities?.size)
530
+ return null;
531
+ const argumentCount = cppCallArgumentCount(node, source);
532
+ const matches = argumentCount === null
533
+ ? [...entities.values()]
534
+ : [...entities.values()].filter((entity) => argumentCount >= entity.minArity && (entity.maxArity === null || argumentCount <= entity.maxArity));
535
+ // Multiple arity-viable entities stay unresolved: default arguments and
536
+ // variadics can overlap, and this matcher does not implement C++ ranking.
537
+ // One canonical entity still has to accept a known call count: below its
538
+ // minimum or above a finite maximum is not a unique match.
539
+ if (matches.length === 1)
540
+ return preferredCppCallableBinding(matches[0].bindings);
541
+ return null;
542
+ }
543
+ export function cppSelectCallableBinding(bindings, node, source, useFile, bindingsFile) {
544
+ if (useFile === bindingsFile || fileIdentityKey(useFile) === fileIdentityKey(bindingsFile)) {
545
+ const declaration = bindings.find((candidate) => isCppDeclarationSite(candidate, node));
546
+ if (declaration)
547
+ return preferredCppCallableBinding(cppEquivalentCallableBindings(declaration));
548
+ }
549
+ return cppSelectCallableByCallArity(bindings, node, source);
550
+ }
551
+ export function cppCallableIsDefinition(node) {
552
+ let current = node ?? null;
553
+ while (current) {
554
+ if (current.type === "function_definition")
555
+ return true;
556
+ if (current.type === "declaration" || current.type === "program")
557
+ return false;
558
+ current = current.parent;
559
+ }
560
+ return false;
561
+ }
562
+ //# sourceMappingURL=cpp-callables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp-callables.js","sourceRoot":"","sources":["../../src/indexer/cpp-callables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAC3G,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAGhH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUnD,SAAS,kBAAkB,CAAC,IAA2B;IACrD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB;YAAE,OAAO,OAAO,CAAC;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,SAAyB;IAC9C,IAAI,OAAO,GAAG,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO,OAAO,CAAC;QACzF,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC5F,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;aAAM,IACL,OAAO,CAAC,IAAI,KAAK,sBAAsB;YACvC,OAAO,CAAC,IAAI,KAAK,0BAA0B;YAC3C,OAAO,CAAC,IAAI,KAAK,qBAAqB,EACtC,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,IAAoB;IACvC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAoB,EAAE,KAAqB;IAC3D,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;AAClF,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAoB,EAAE,YAAyB,EAAE,MAAgB;IACzF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,2BAA2B,GAAyB;IACxD,qBAAqB,EAAE,IAAI;IAC3B,8BAA8B,EAAE,IAAI;IACpC,8BAA8B,EAAE,IAAI;CACrC,CAAC;AAEF,MAAM,4BAA4B,GAAyB;IACzD,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,6BAA6B,GAAyB;IAC1D,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,IAAI;IAC1B,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,MAAM,yBAAyB,GAAyB;IACtD,kBAAkB,EAAE,IAAI;IACxB,2BAA2B,EAAE,IAAI;IACjC,oBAAoB,EAAE,IAAI;IAC1B,6BAA6B,EAAE,IAAI;IACnC,gBAAgB,EAAE,IAAI;IACtB,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,IAAI;IACzB,4BAA4B,EAAE,IAAI;CACnC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,4BAA4B,GAAyB;IACzD,wBAAwB,EAAE,IAAI;IAC9B,iCAAiC,EAAE,IAAI;IACvC,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAEF,MAAM,qBAAqB,GAAyB;IAClD,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,iFAAiF;AACjF,SAAS,eAAe,CAAC,IAAoB;IAC3C,IACE,IAAI,CAAC,IAAI,KAAK,0BAA0B;QACxC,IAAI,CAAC,IAAI,KAAK,mCAAmC;QACjD,IAAI,CAAC,IAAI,KAAK,qBAAqB,EACnC,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;IAC9E,CAAC;IACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAC9C,CAAC;AASD;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,UAA0B;IACrD,IAAI,WAAW,GAA0B,IAAI,CAAC;IAC9C,IAAI,OAAO,GAA0B,UAAU,CAAC;IAChD,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,WAAW,GAAG,OAAO,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/F,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,mFAAmF;AACnF,SAAS,4BAA4B,CAAC,IAAoB,EAAE,YAAyB;IACnF,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI;YAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK;oBAAE,MAAM;gBAClB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;oBAAE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,IAAoB,EACpB,cAAuB,EACvB,YAAyB,EACzB,MAAgB;IAEhB,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,SAAS;QAC9C,IAAI,cAAc,IAAI,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACzE,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAoB;IAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,IAAoB,EAAE,YAAyB,EAAE,MAAgB;IAChG,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;YAAE,SAAS;QACvD,IAAI,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;YAAE,SAAS;QACxD,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAoB,EAAE,YAAyB,EAAE,MAAgB;IAClG,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,+FAA+F;IAC/F,gEAAgE;IAChE,IAAI,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,4BAA4B,CAAC,IAAoB,EAAE,YAAyB,EAAE,MAAgB;IACrG,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACxD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;YAAE,SAAS;QACvD,IAAI,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;YAAE,SAAS;QACxD,IAAI,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;YAAE,SAAS;QACxD,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,8BAA8B,CACrC,IAAoB,EACpB,IAAoB,EACpB,YAAyB,EACzB,MAAgB;IAEhB,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,+EAA+E;QAC/E,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,qEAAqE;YACrE,uDAAuD;YACvD,+BAA+B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACvF,MAAM;QACR,CAAC;QACD,KAAK,sBAAsB,CAAC;QAC5B,KAAK,+BAA+B,CAAC,CAAC,CAAC;YACrC,yEAAyE;YACzE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,MAAM;QACR,CAAC;QACD,KAAK,kBAAkB,CAAC;QACxB,KAAK,2BAA2B,CAAC,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC9B,qEAAqE;gBACrE,yDAAyD;gBACzD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,qBAAqB,CAAC;QAC3B,KAAK,8BAA8B,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,4BAA4B,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC9B,4CAA4C;gBAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK;QAAE,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,qBAAqB,CAAC,SAAyB,EAAE,MAAgB;IACxE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,4BAA4B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEjG,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,kBAAkB,GACtB,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClG,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QACvC,IAAI,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;YAAE,SAAS;QACxD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACtG,SAAS;QACX,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,UAAU;QAAE,8BAA8B,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAyB;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,uBAAuB,CAAC,UAA0B;IACzD,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,OAAO,IAAI,CAAC;IACrF,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,2BAA2B,CAAC,IAAoB,EAAE,KAA2B;IAC3F,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC1F,uFAAuF;IACvF,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QAAE,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ;YAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,EAAU,EAAE,YAAY,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;AACtI,CAAC;AAED,SAAS,UAAU,CAAC,IAAoB;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,CAAC,MAAM;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAChD,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;;;GAGG;AACH,SAAS,oBAAoB,CAAC,OAAgB,EAAE,IAAoB;IAClE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnG,OAAO,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AACtG,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAoB,EAAE,MAAc;IAChE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvF,OAAO,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACtF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,sBAAsB;IACtB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAoB;IACvD,IAAI,SAAS,GAA0B,IAAI,CAAC;IAC5C,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,sBAAsB,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACnG,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,QAAQ,CAAC,GAAG,EAAE,CAAC;IACf,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,OAAO,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACjF,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAI;YAAE,OAAO,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,KAAK,IAAI,OAAO,GAA0B,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAClF,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/F,IACE,OAAO,CAAC,IAAI,KAAK,iBAAiB;YAClC,OAAO,CAAC,IAAI,KAAK,kBAAkB;YACnC,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAClC,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC7E,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,yBAAyB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC/G,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,iBAAiB,IAAI,CAAC,WAAW,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAA4B,EAC5B,cAA6C;IAE7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IACtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACzD,MAAM,aAAa,GAAG,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,cAAc,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC/D,6FAA6F;QAC7F,sFAAsF;QACtF,8CAA8C;QAC9C,MAAM,cAAc,GAClB,OAAO,CAAC,IAAI,IAAI,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;YACzD,CAAC,CAAC,QAAQ,CAAC,GAAG;YACd,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,KAAK,cAAc,EAAE,CAAC;QAC/F,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAChB,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;gBAChC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;aACjC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAClE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,2BAA2B,CAAC,QAA4B;IAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC;AAClF,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,yBAAyB,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAChE,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAA4B,EAC5B,IAAoB,EACpB,MAAc,EACd,cAA6C;IAE7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,EAAE,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,OAAO,GACX,aAAa,KAAK,IAAI;QACpB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC3B,CAAC,MAAM,EAAE,EAAE,CACT,aAAa,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,CACrG,CAAC;IACR,wEAAwE;IACxE,0EAA0E;IAC1E,yEAAyE;IACzE,2DAA2D;IAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA4B,EAC5B,IAAoB,EACpB,MAAc,EACd,OAAe,EACf,YAAoB;IAEpB,IAAI,OAAO,KAAK,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3F,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,WAAW;YAAE,OAAO,2BAA2B,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,4BAA4B,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAuC;IAC7E,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC;IAC3B,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC/E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}