@graphty/algorithms 1.3.1 → 1.5.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 (314) hide show
  1. package/README.md +368 -422
  2. package/dist/algorithms.js +567 -264
  3. package/dist/algorithms.js.map +1 -1
  4. package/dist/src/algorithms/centrality/betweenness.d.ts +10 -0
  5. package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
  6. package/dist/src/algorithms/centrality/betweenness.js +27 -6
  7. package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
  8. package/dist/src/algorithms/centrality/closeness.d.ts +11 -2
  9. package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
  10. package/dist/src/algorithms/centrality/closeness.js +17 -3
  11. package/dist/src/algorithms/centrality/closeness.js.map +1 -1
  12. package/dist/src/algorithms/centrality/degree.d.ts +7 -0
  13. package/dist/src/algorithms/centrality/degree.d.ts.map +1 -1
  14. package/dist/src/algorithms/centrality/degree.js +9 -6
  15. package/dist/src/algorithms/centrality/degree.js.map +1 -1
  16. package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts +21 -3
  17. package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts.map +1 -1
  18. package/dist/src/algorithms/centrality/delta-pagerank-simple.js +25 -7
  19. package/dist/src/algorithms/centrality/delta-pagerank-simple.js.map +1 -1
  20. package/dist/src/algorithms/centrality/delta-pagerank.d.ts +28 -2
  21. package/dist/src/algorithms/centrality/delta-pagerank.d.ts.map +1 -1
  22. package/dist/src/algorithms/centrality/delta-pagerank.js +30 -4
  23. package/dist/src/algorithms/centrality/delta-pagerank.js.map +1 -1
  24. package/dist/src/algorithms/centrality/eigenvector.d.ts +10 -3
  25. package/dist/src/algorithms/centrality/eigenvector.d.ts.map +1 -1
  26. package/dist/src/algorithms/centrality/eigenvector.js +11 -4
  27. package/dist/src/algorithms/centrality/eigenvector.js.map +1 -1
  28. package/dist/src/algorithms/centrality/hits.d.ts +10 -3
  29. package/dist/src/algorithms/centrality/hits.d.ts.map +1 -1
  30. package/dist/src/algorithms/centrality/hits.js +11 -4
  31. package/dist/src/algorithms/centrality/hits.js.map +1 -1
  32. package/dist/src/algorithms/centrality/index.d.ts +1 -1
  33. package/dist/src/algorithms/centrality/index.d.ts.map +1 -1
  34. package/dist/src/algorithms/centrality/index.js +1 -1
  35. package/dist/src/algorithms/centrality/index.js.map +1 -1
  36. package/dist/src/algorithms/centrality/katz.d.ts +10 -3
  37. package/dist/src/algorithms/centrality/katz.d.ts.map +1 -1
  38. package/dist/src/algorithms/centrality/katz.js +13 -8
  39. package/dist/src/algorithms/centrality/katz.js.map +1 -1
  40. package/dist/src/algorithms/centrality/pagerank.d.ts +14 -0
  41. package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
  42. package/dist/src/algorithms/centrality/pagerank.js +16 -1
  43. package/dist/src/algorithms/centrality/pagerank.js.map +1 -1
  44. package/dist/src/algorithms/community/girvan-newman.d.ts +2 -3
  45. package/dist/src/algorithms/community/girvan-newman.d.ts.map +1 -1
  46. package/dist/src/algorithms/community/girvan-newman.js +21 -4
  47. package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
  48. package/dist/src/algorithms/community/index.d.ts.map +1 -1
  49. package/dist/src/algorithms/community/index.js.map +1 -1
  50. package/dist/src/algorithms/community/label-propagation.d.ts +0 -3
  51. package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
  52. package/dist/src/algorithms/community/label-propagation.js +13 -6
  53. package/dist/src/algorithms/community/label-propagation.js.map +1 -1
  54. package/dist/src/algorithms/community/leiden.d.ts +0 -1
  55. package/dist/src/algorithms/community/leiden.d.ts.map +1 -1
  56. package/dist/src/algorithms/community/leiden.js +37 -6
  57. package/dist/src/algorithms/community/leiden.js.map +1 -1
  58. package/dist/src/algorithms/community/louvain-optimized.d.ts +37 -0
  59. package/dist/src/algorithms/community/louvain-optimized.d.ts.map +1 -1
  60. package/dist/src/algorithms/community/louvain-optimized.js +42 -7
  61. package/dist/src/algorithms/community/louvain-optimized.js.map +1 -1
  62. package/dist/src/algorithms/community/louvain.d.ts +2 -3
  63. package/dist/src/algorithms/community/louvain.d.ts.map +1 -1
  64. package/dist/src/algorithms/community/louvain.js +19 -6
  65. package/dist/src/algorithms/community/louvain.js.map +1 -1
  66. package/dist/src/algorithms/community/modularity-utils.d.ts +0 -4
  67. package/dist/src/algorithms/community/modularity-utils.d.ts.map +1 -1
  68. package/dist/src/algorithms/community/modularity-utils.js +1 -5
  69. package/dist/src/algorithms/community/modularity-utils.js.map +1 -1
  70. package/dist/src/algorithms/components/connected.d.ts +23 -0
  71. package/dist/src/algorithms/components/connected.d.ts.map +1 -1
  72. package/dist/src/algorithms/components/connected.js +29 -3
  73. package/dist/src/algorithms/components/connected.js.map +1 -1
  74. package/dist/src/algorithms/matching/bipartite.d.ts +10 -0
  75. package/dist/src/algorithms/matching/bipartite.d.ts.map +1 -1
  76. package/dist/src/algorithms/matching/bipartite.js +10 -0
  77. package/dist/src/algorithms/matching/bipartite.js.map +1 -1
  78. package/dist/src/algorithms/matching/index.d.ts.map +1 -1
  79. package/dist/src/algorithms/matching/index.js.map +1 -1
  80. package/dist/src/algorithms/matching/isomorphism.d.ts +8 -0
  81. package/dist/src/algorithms/matching/isomorphism.d.ts.map +1 -1
  82. package/dist/src/algorithms/matching/isomorphism.js +36 -2
  83. package/dist/src/algorithms/matching/isomorphism.js.map +1 -1
  84. package/dist/src/algorithms/mst/index.d.ts.map +1 -1
  85. package/dist/src/algorithms/mst/index.js.map +1 -1
  86. package/dist/src/algorithms/mst/kruskal.d.ts +14 -0
  87. package/dist/src/algorithms/mst/kruskal.d.ts.map +1 -1
  88. package/dist/src/algorithms/mst/kruskal.js +17 -3
  89. package/dist/src/algorithms/mst/kruskal.js.map +1 -1
  90. package/dist/src/algorithms/mst/prim.d.ts +9 -0
  91. package/dist/src/algorithms/mst/prim.d.ts.map +1 -1
  92. package/dist/src/algorithms/mst/prim.js +9 -0
  93. package/dist/src/algorithms/mst/prim.js.map +1 -1
  94. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts +10 -0
  95. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -1
  96. package/dist/src/algorithms/shortest-path/bellman-ford.js +10 -0
  97. package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
  98. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts +12 -5
  99. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts.map +1 -1
  100. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +19 -17
  101. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js.map +1 -1
  102. package/dist/src/algorithms/shortest-path/dijkstra.d.ts +15 -0
  103. package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
  104. package/dist/src/algorithms/shortest-path/dijkstra.js +15 -0
  105. package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
  106. package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts +17 -0
  107. package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts.map +1 -1
  108. package/dist/src/algorithms/shortest-path/floyd-warshall.js +17 -0
  109. package/dist/src/algorithms/shortest-path/floyd-warshall.js.map +1 -1
  110. package/dist/src/algorithms/shortest-path/index.d.ts.map +1 -1
  111. package/dist/src/algorithms/shortest-path/index.js.map +1 -1
  112. package/dist/src/algorithms/traversal/bfs-unified.d.ts +13 -0
  113. package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -1
  114. package/dist/src/algorithms/traversal/bfs-unified.js +37 -0
  115. package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -1
  116. package/dist/src/algorithms/traversal/bfs-variants.d.ts +23 -0
  117. package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -1
  118. package/dist/src/algorithms/traversal/bfs-variants.js +34 -0
  119. package/dist/src/algorithms/traversal/bfs-variants.js.map +1 -1
  120. package/dist/src/algorithms/traversal/bfs.d.ts +1 -1
  121. package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -1
  122. package/dist/src/algorithms/traversal/bfs.js +1 -1
  123. package/dist/src/algorithms/traversal/bfs.js.map +1 -1
  124. package/dist/src/algorithms/traversal/dfs.d.ts +10 -0
  125. package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -1
  126. package/dist/src/algorithms/traversal/dfs.js +48 -0
  127. package/dist/src/algorithms/traversal/dfs.js.map +1 -1
  128. package/dist/src/algorithms/traversal/index.d.ts.map +1 -1
  129. package/dist/src/algorithms/traversal/index.js.map +1 -1
  130. package/dist/src/benchmark-all-algorithms.d.ts +2 -0
  131. package/dist/src/benchmark-all-algorithms.d.ts.map +1 -1
  132. package/dist/src/benchmark-all-algorithms.js +32 -3
  133. package/dist/src/benchmark-all-algorithms.js.map +1 -1
  134. package/dist/src/clustering/hierarchical.d.ts +8 -1
  135. package/dist/src/clustering/hierarchical.d.ts.map +1 -1
  136. package/dist/src/clustering/hierarchical.js +22 -6
  137. package/dist/src/clustering/hierarchical.js.map +1 -1
  138. package/dist/src/clustering/index.d.ts.map +1 -1
  139. package/dist/src/clustering/index.js.map +1 -1
  140. package/dist/src/clustering/k-core.d.ts +2 -5
  141. package/dist/src/clustering/k-core.d.ts.map +1 -1
  142. package/dist/src/clustering/k-core.js +14 -12
  143. package/dist/src/clustering/k-core.js.map +1 -1
  144. package/dist/src/clustering/mcl.d.ts +6 -0
  145. package/dist/src/clustering/mcl.d.ts.map +1 -1
  146. package/dist/src/clustering/mcl.js +34 -3
  147. package/dist/src/clustering/mcl.js.map +1 -1
  148. package/dist/src/clustering/spectral.d.ts +4 -1
  149. package/dist/src/clustering/spectral.d.ts.map +1 -1
  150. package/dist/src/clustering/spectral.js +61 -28
  151. package/dist/src/clustering/spectral.js.map +1 -1
  152. package/dist/src/core/graph.d.ts +45 -0
  153. package/dist/src/core/graph.d.ts.map +1 -1
  154. package/dist/src/core/graph.js +45 -1
  155. package/dist/src/core/graph.js.map +1 -1
  156. package/dist/src/data-structures/index.d.ts.map +1 -1
  157. package/dist/src/data-structures/index.js.map +1 -1
  158. package/dist/src/data-structures/priority-queue.d.ts +18 -1
  159. package/dist/src/data-structures/priority-queue.d.ts.map +1 -1
  160. package/dist/src/data-structures/priority-queue.js +26 -5
  161. package/dist/src/data-structures/priority-queue.js.map +1 -1
  162. package/dist/src/data-structures/union-find.d.ts +21 -0
  163. package/dist/src/data-structures/union-find.d.ts.map +1 -1
  164. package/dist/src/data-structures/union-find.js +21 -0
  165. package/dist/src/data-structures/union-find.js.map +1 -1
  166. package/dist/src/flow/ford-fulkerson.d.ts +4 -2
  167. package/dist/src/flow/ford-fulkerson.d.ts.map +1 -1
  168. package/dist/src/flow/ford-fulkerson.js +31 -2
  169. package/dist/src/flow/ford-fulkerson.js.map +1 -1
  170. package/dist/src/flow/min-cut.d.ts +0 -3
  171. package/dist/src/flow/min-cut.d.ts.map +1 -1
  172. package/dist/src/flow/min-cut.js +17 -4
  173. package/dist/src/flow/min-cut.js.map +1 -1
  174. package/dist/src/index.d.ts +2 -1
  175. package/dist/src/index.d.ts.map +1 -1
  176. package/dist/src/index.js +2 -1
  177. package/dist/src/index.js.map +1 -1
  178. package/dist/src/link-prediction/adamic-adar.d.ts +26 -0
  179. package/dist/src/link-prediction/adamic-adar.d.ts.map +1 -1
  180. package/dist/src/link-prediction/adamic-adar.js +36 -10
  181. package/dist/src/link-prediction/adamic-adar.js.map +1 -1
  182. package/dist/src/link-prediction/common-neighbors.d.ts +21 -0
  183. package/dist/src/link-prediction/common-neighbors.d.ts.map +1 -1
  184. package/dist/src/link-prediction/common-neighbors.js +27 -6
  185. package/dist/src/link-prediction/common-neighbors.js.map +1 -1
  186. package/dist/src/link-prediction/index.d.ts.map +1 -1
  187. package/dist/src/optimized/bit-packed.d.ts +103 -53
  188. package/dist/src/optimized/bit-packed.d.ts.map +1 -1
  189. package/dist/src/optimized/bit-packed.js +104 -54
  190. package/dist/src/optimized/bit-packed.js.map +1 -1
  191. package/dist/src/optimized/csr-graph.d.ts +87 -24
  192. package/dist/src/optimized/csr-graph.d.ts.map +1 -1
  193. package/dist/src/optimized/csr-graph.js +87 -24
  194. package/dist/src/optimized/csr-graph.js.map +1 -1
  195. package/dist/src/optimized/direction-optimized-bfs.d.ts +37 -16
  196. package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -1
  197. package/dist/src/optimized/direction-optimized-bfs.js +39 -20
  198. package/dist/src/optimized/direction-optimized-bfs.js.map +1 -1
  199. package/dist/src/optimized/graph-adapter.d.ts +58 -9
  200. package/dist/src/optimized/graph-adapter.d.ts.map +1 -1
  201. package/dist/src/optimized/graph-adapter.js +58 -10
  202. package/dist/src/optimized/graph-adapter.js.map +1 -1
  203. package/dist/src/optimized/index.d.ts +1 -1
  204. package/dist/src/optimized/index.d.ts.map +1 -1
  205. package/dist/src/optimized/index.js +3 -1
  206. package/dist/src/optimized/index.js.map +1 -1
  207. package/dist/src/pathfinding/astar.d.ts +25 -9
  208. package/dist/src/pathfinding/astar.d.ts.map +1 -1
  209. package/dist/src/pathfinding/astar.js +25 -10
  210. package/dist/src/pathfinding/astar.js.map +1 -1
  211. package/dist/src/pathfinding/utils.d.ts +15 -6
  212. package/dist/src/pathfinding/utils.d.ts.map +1 -1
  213. package/dist/src/pathfinding/utils.js +19 -7
  214. package/dist/src/pathfinding/utils.js.map +1 -1
  215. package/dist/src/research/grsbm.d.ts +0 -1
  216. package/dist/src/research/grsbm.d.ts.map +1 -1
  217. package/dist/src/research/grsbm.js +23 -10
  218. package/dist/src/research/grsbm.js.map +1 -1
  219. package/dist/src/research/index.d.ts.map +1 -1
  220. package/dist/src/research/index.js.map +1 -1
  221. package/dist/src/research/sync.d.ts +0 -1
  222. package/dist/src/research/sync.d.ts.map +1 -1
  223. package/dist/src/research/sync.js +29 -8
  224. package/dist/src/research/sync.js.map +1 -1
  225. package/dist/src/research/terahac.d.ts +0 -1
  226. package/dist/src/research/terahac.d.ts.map +1 -1
  227. package/dist/src/research/terahac.js +32 -4
  228. package/dist/src/research/terahac.js.map +1 -1
  229. package/dist/src/utils/graph-converters.d.ts +31 -0
  230. package/dist/src/utils/graph-converters.d.ts.map +1 -1
  231. package/dist/src/utils/graph-converters.js +31 -0
  232. package/dist/src/utils/graph-converters.js.map +1 -1
  233. package/dist/src/utils/graph-utilities.d.ts.map +1 -1
  234. package/dist/src/utils/graph-utilities.js.map +1 -1
  235. package/dist/src/utils/math-utilities.d.ts +11 -0
  236. package/dist/src/utils/math-utilities.d.ts.map +1 -1
  237. package/dist/src/utils/math-utilities.js +14 -5
  238. package/dist/src/utils/math-utilities.js.map +1 -1
  239. package/dist/src/utils/optimization-helpers.d.ts +9 -0
  240. package/dist/src/utils/optimization-helpers.d.ts.map +1 -1
  241. package/dist/src/utils/optimization-helpers.js +12 -0
  242. package/dist/src/utils/optimization-helpers.js.map +1 -1
  243. package/dist/src/utils/priorityQueue.d.ts +24 -0
  244. package/dist/src/utils/priorityQueue.d.ts.map +1 -1
  245. package/dist/src/utils/priorityQueue.js +34 -4
  246. package/dist/src/utils/priorityQueue.js.map +1 -1
  247. package/dist/tsconfig.tsbuildinfo +1 -0
  248. package/package.json +56 -65
  249. package/src/algorithms/centrality/betweenness.ts +34 -17
  250. package/src/algorithms/centrality/closeness.ts +34 -17
  251. package/src/algorithms/centrality/degree.ts +15 -19
  252. package/src/algorithms/centrality/delta-pagerank-simple.ts +36 -28
  253. package/src/algorithms/centrality/delta-pagerank.ts +34 -11
  254. package/src/algorithms/centrality/eigenvector.ts +14 -15
  255. package/src/algorithms/centrality/hits.ts +17 -17
  256. package/src/algorithms/centrality/index.ts +20 -15
  257. package/src/algorithms/centrality/katz.ts +17 -25
  258. package/src/algorithms/centrality/pagerank.ts +26 -17
  259. package/src/algorithms/community/girvan-newman.ts +39 -28
  260. package/src/algorithms/community/index.ts +6 -7
  261. package/src/algorithms/community/label-propagation.ts +20 -28
  262. package/src/algorithms/community/leiden.ts +61 -37
  263. package/src/algorithms/community/louvain-optimized.ts +49 -20
  264. package/src/algorithms/community/louvain.ts +35 -25
  265. package/src/algorithms/community/modularity-utils.ts +5 -17
  266. package/src/algorithms/components/connected.ts +40 -17
  267. package/src/algorithms/matching/bipartite.ts +17 -10
  268. package/src/algorithms/matching/index.ts +4 -4
  269. package/src/algorithms/matching/isomorphism.ts +53 -23
  270. package/src/algorithms/mst/index.ts +3 -4
  271. package/src/algorithms/mst/kruskal.ts +21 -6
  272. package/src/algorithms/mst/prim.ts +13 -4
  273. package/src/algorithms/shortest-path/bellman-ford.ts +16 -15
  274. package/src/algorithms/shortest-path/bidirectional-dijkstra.ts +29 -29
  275. package/src/algorithms/shortest-path/dijkstra.ts +23 -17
  276. package/src/algorithms/shortest-path/floyd-warshall.ts +21 -4
  277. package/src/algorithms/shortest-path/index.ts +5 -5
  278. package/src/algorithms/traversal/bfs-unified.ts +64 -60
  279. package/src/algorithms/traversal/bfs-variants.ts +61 -37
  280. package/src/algorithms/traversal/bfs.ts +1 -7
  281. package/src/algorithms/traversal/dfs.ts +61 -42
  282. package/src/algorithms/traversal/index.ts +3 -3
  283. package/src/benchmark-all-algorithms.ts +57 -25
  284. package/src/clustering/hierarchical.ts +40 -34
  285. package/src/clustering/index.ts +8 -8
  286. package/src/clustering/k-core.ts +26 -42
  287. package/src/clustering/mcl.ts +53 -23
  288. package/src/clustering/spectral.ts +91 -57
  289. package/src/core/graph.ts +54 -14
  290. package/src/data-structures/index.ts +2 -2
  291. package/src/data-structures/priority-queue.ts +36 -11
  292. package/src/data-structures/union-find.ts +22 -1
  293. package/src/flow/ford-fulkerson.ts +62 -35
  294. package/src/flow/min-cut.ts +43 -45
  295. package/src/index.ts +3 -2
  296. package/src/link-prediction/adamic-adar.ts +65 -51
  297. package/src/link-prediction/common-neighbors.ts +45 -36
  298. package/src/link-prediction/index.ts +1 -1
  299. package/src/optimized/bit-packed.ts +106 -56
  300. package/src/optimized/csr-graph.ts +93 -30
  301. package/src/optimized/direction-optimized-bfs.ts +44 -25
  302. package/src/optimized/graph-adapter.ts +64 -16
  303. package/src/optimized/index.ts +7 -9
  304. package/src/pathfinding/astar.ts +40 -25
  305. package/src/pathfinding/utils.ts +20 -13
  306. package/src/research/grsbm.ts +31 -25
  307. package/src/research/index.ts +4 -4
  308. package/src/research/sync.ts +40 -24
  309. package/src/research/terahac.ts +54 -20
  310. package/src/utils/graph-converters.ts +42 -14
  311. package/src/utils/graph-utilities.ts +11 -37
  312. package/src/utils/math-utilities.ts +17 -8
  313. package/src/utils/optimization-helpers.ts +27 -21
  314. package/src/utils/priorityQueue.ts +40 -6
@@ -6,6 +6,10 @@ import { TypedFastBitSet } from "typedfastbitset";
6
6
  * with 8x memory reduction compared to standard JavaScript Set for boolean values.
7
7
  */
8
8
  export class GraphBitSet {
9
+ /**
10
+ * Creates a new GraphBitSet with optional pre-allocated capacity.
11
+ * @param capacity - The initial capacity to pre-allocate for the bitset
12
+ */
9
13
  constructor(capacity) {
10
14
  this._cardinality = 0;
11
15
  this.bitset = new TypedFastBitSet();
@@ -15,8 +19,9 @@ export class GraphBitSet {
15
19
  }
16
20
  }
17
21
  /**
18
- * Add a single element
19
- */
22
+ * Add a single element to the set.
23
+ * @param index - The element index to add
24
+ */
20
25
  add(index) {
21
26
  if (!this.bitset.has(index)) {
22
27
  this.bitset.add(index);
@@ -24,8 +29,9 @@ export class GraphBitSet {
24
29
  }
25
30
  }
26
31
  /**
27
- * Remove a single element
28
- */
32
+ * Remove a single element from the set.
33
+ * @param index - The element index to remove
34
+ */
29
35
  remove(index) {
30
36
  if (this.bitset.has(index)) {
31
37
  this.bitset.remove(index);
@@ -33,27 +39,32 @@ export class GraphBitSet {
33
39
  }
34
40
  }
35
41
  /**
36
- * Check if element exists
37
- */
42
+ * Check if an element exists in the set.
43
+ * @param index - The element index to check
44
+ * @returns True if the element exists, false otherwise
45
+ */
38
46
  has(index) {
39
47
  return this.bitset.has(index);
40
48
  }
41
49
  /**
42
- * Clear all elements
43
- */
50
+ * Clear all elements
51
+ */
44
52
  clear() {
45
53
  this.bitset.clear();
46
54
  this._cardinality = 0;
47
55
  }
48
56
  /**
49
- * Check if empty
50
- */
57
+ * Check if the set is empty.
58
+ * @returns True if the set contains no elements, false otherwise
59
+ */
51
60
  isEmpty() {
52
61
  return this._cardinality === 0;
53
62
  }
54
63
  /**
55
- * Optimized for graph algorithms - add range of indices
56
- */
64
+ * Optimized for graph algorithms - add a range of indices.
65
+ * @param start - The starting index (inclusive)
66
+ * @param end - The ending index (exclusive)
67
+ */
57
68
  addRange(start, end) {
58
69
  for (let i = start; i < end; i++) {
59
70
  if (!this.bitset.has(i)) {
@@ -63,40 +74,52 @@ export class GraphBitSet {
63
74
  }
64
75
  }
65
76
  /**
66
- * Fast cardinality tracking
67
- */
77
+ * Fast cardinality tracking - get the number of elements in the set.
78
+ * @returns The number of elements in the set
79
+ */
68
80
  size() {
69
81
  return this._cardinality;
70
82
  }
71
83
  /**
72
- * Batch operations for frontier management - swap contents
73
- */
84
+ * Batch operations for frontier management - swap contents with another GraphBitSet.
85
+ * @param other - The GraphBitSet to swap contents with
86
+ */
74
87
  swap(other) {
75
88
  [this.bitset, other.bitset] = [other.bitset, this.bitset];
76
89
  [this._cardinality, other._cardinality] = [other._cardinality, this._cardinality];
77
90
  }
78
91
  /**
79
- * Efficient iteration
80
- */
92
+ * Efficient iteration over all elements in the set.
93
+ * @yields The indices of elements in the set
94
+ */
81
95
  *[Symbol.iterator]() {
82
96
  // Use TypedFastBitSet's optimized iteration
83
97
  yield* this.bitset;
84
98
  }
85
99
  /**
86
- * Set operations with cardinality tracking
87
- */
100
+ * Perform union operation with another GraphBitSet, updating this set in place.
101
+ * @param other - The GraphBitSet to union with
102
+ */
88
103
  union(other) {
89
104
  const result = this.bitset.union(other.bitset);
90
105
  this.bitset = result;
91
106
  const size = this.bitset.size();
92
107
  this._cardinality = size;
93
108
  }
109
+ /**
110
+ * Perform intersection operation with another GraphBitSet, updating this set in place.
111
+ * @param other - The GraphBitSet to intersect with
112
+ */
94
113
  intersection(other) {
95
114
  const result = this.bitset.intersection(other.bitset);
96
115
  this.bitset = result;
97
116
  const size = this.bitset.size();
98
117
  this._cardinality = size;
99
118
  }
119
+ /**
120
+ * Perform difference operation with another GraphBitSet, updating this set in place.
121
+ * @param other - The GraphBitSet to subtract from this set
122
+ */
100
123
  difference(other) {
101
124
  const result = this.bitset.difference(other.bitset);
102
125
  this.bitset = result;
@@ -104,8 +127,9 @@ export class GraphBitSet {
104
127
  this._cardinality = size;
105
128
  }
106
129
  /**
107
- * Clone the bitset
108
- */
130
+ * Clone the bitset.
131
+ * @returns A new GraphBitSet with the same elements
132
+ */
109
133
  clone() {
110
134
  const cloned = new GraphBitSet();
111
135
  cloned.bitset = this.bitset.clone();
@@ -120,14 +144,19 @@ export class GraphBitSet {
120
144
  * that don't need set operations.
121
145
  */
122
146
  export class VisitedBitArray {
147
+ /**
148
+ * Creates a new VisitedBitArray with the specified size.
149
+ * @param size - The number of bits to allocate
150
+ */
123
151
  constructor(size) {
124
152
  this._size = size;
125
153
  this.wordCount = Math.ceil(size / 32);
126
154
  this.words = new Uint32Array(this.wordCount);
127
155
  }
128
156
  /**
129
- * Set bit at index
130
- */
157
+ * Set bit at the specified index.
158
+ * @param index - The bit index to set
159
+ */
131
160
  set(index) {
132
161
  if (index < 0 || index >= this._size) {
133
162
  throw new Error(`Index ${String(index)} out of bounds [0, ${String(this._size)})`);
@@ -140,8 +169,10 @@ export class VisitedBitArray {
140
169
  }
141
170
  }
142
171
  /**
143
- * Get bit at index
144
- */
172
+ * Get bit value at the specified index.
173
+ * @param index - The bit index to get
174
+ * @returns True if the bit is set, false otherwise
175
+ */
145
176
  get(index) {
146
177
  if (index < 0 || index >= this._size) {
147
178
  return false;
@@ -152,14 +183,15 @@ export class VisitedBitArray {
152
183
  return word !== undefined && (word & (1 << bitIndex)) !== 0;
153
184
  }
154
185
  /**
155
- * Clear all bits
156
- */
186
+ * Clear all bits
187
+ */
157
188
  clear() {
158
189
  this.words.fill(0);
159
190
  }
160
191
  /**
161
- * Toggle bit at index
162
- */
192
+ * Toggle bit at the specified index.
193
+ * @param index - The bit index to toggle
194
+ */
163
195
  toggle(index) {
164
196
  if (index < 0 || index >= this._size) {
165
197
  throw new Error(`Index ${String(index)} out of bounds [0, ${String(this._size)})`);
@@ -172,8 +204,9 @@ export class VisitedBitArray {
172
204
  }
173
205
  }
174
206
  /**
175
- * Population count for statistics
176
- */
207
+ * Population count for statistics - count the number of set bits.
208
+ * @returns The number of bits set to 1
209
+ */
177
210
  popcount() {
178
211
  let count = 0;
179
212
  for (let i = 0; i < this.wordCount; i++) {
@@ -185,24 +218,28 @@ export class VisitedBitArray {
185
218
  return count;
186
219
  }
187
220
  /**
188
- * Efficient population count for a single word
189
- * Uses bit manipulation tricks for fast counting
190
- */
221
+ * Efficient population count for a single word.
222
+ * Uses bit manipulation tricks for fast counting.
223
+ * @param n - The 32-bit word to count
224
+ * @returns The number of bits set to 1 in the word
225
+ */
191
226
  popcountWord(n) {
192
227
  let x = n;
193
228
  x = x - ((x >>> 1) & 0x55555555);
194
229
  x = (x & 0x33333333) + ((x >>> 2) & 0x33333333);
195
- return (((x + (x >>> 4)) & 0xF0F0F0F) * 0x1010101) >>> 24;
230
+ return (((x + (x >>> 4)) & 0xf0f0f0f) * 0x1010101) >>> 24;
196
231
  }
197
232
  /**
198
- * Get size of the bit array
199
- */
233
+ * Get size of the bit array.
234
+ * @returns The total number of bits in the array
235
+ */
200
236
  size() {
201
237
  return this._size;
202
238
  }
203
239
  /**
204
- * Check if all bits are zero
205
- */
240
+ * Check if all bits are zero.
241
+ * @returns True if no bits are set, false otherwise
242
+ */
206
243
  isEmpty() {
207
244
  for (let i = 0; i < this.wordCount; i++) {
208
245
  if (this.words[i] !== 0) {
@@ -212,16 +249,18 @@ export class VisitedBitArray {
212
249
  return true;
213
250
  }
214
251
  /**
215
- * Set multiple bits from array
216
- */
252
+ * Set multiple bits from an array of indices.
253
+ * @param indices - Array of bit indices to set
254
+ */
217
255
  setMultiple(indices) {
218
256
  for (const index of indices) {
219
257
  this.set(index);
220
258
  }
221
259
  }
222
260
  /**
223
- * Get indices of all set bits
224
- */
261
+ * Get indices of all set bits.
262
+ * @returns Array containing the indices of all bits that are set to 1
263
+ */
225
264
  getSetIndices() {
226
265
  const indices = [];
227
266
  for (let wordIndex = 0; wordIndex < this.wordCount; wordIndex++) {
@@ -248,14 +287,20 @@ export class VisitedBitArray {
248
287
  * Still provides 2x memory savings compared to standard 32-bit numbers
249
288
  */
250
289
  export class CompactDistanceArray {
290
+ /**
291
+ * Creates a new CompactDistanceArray with the specified size.
292
+ * @param size - The number of distance values to store
293
+ */
251
294
  constructor(size) {
252
295
  this._size = size;
253
296
  this.data = new Uint16Array(size);
254
297
  this.data.fill(CompactDistanceArray.INFINITY); // Initialize with max value (unvisited)
255
298
  }
256
299
  /**
257
- * Set distance at index
258
- */
300
+ * Set distance at the specified index.
301
+ * @param index - The node index to set the distance for
302
+ * @param distance - The distance value to set
303
+ */
259
304
  set(index, distance) {
260
305
  if (distance >= CompactDistanceArray.INFINITY) {
261
306
  throw new Error(`Distance exceeds maximum value (${String(CompactDistanceArray.INFINITY - 1)})`);
@@ -263,27 +308,32 @@ export class CompactDistanceArray {
263
308
  this.data[index] = distance;
264
309
  }
265
310
  /**
266
- * Get distance at index
267
- */
311
+ * Get distance at the specified index.
312
+ * @param index - The node index to get the distance for
313
+ * @returns The distance value, or INFINITY if not set
314
+ */
268
315
  get(index) {
269
316
  const value = this.data[index];
270
317
  return value ?? CompactDistanceArray.INFINITY; // Default to unvisited
271
318
  }
272
319
  /**
273
- * Check if node has been visited
274
- */
320
+ * Check if a node has been visited (has a valid distance).
321
+ * @param index - The node index to check
322
+ * @returns True if the node has been visited, false otherwise
323
+ */
275
324
  isVisited(index) {
276
325
  return this.data[index] !== CompactDistanceArray.INFINITY;
277
326
  }
278
327
  /**
279
- * Reset all distances
280
- */
328
+ * Reset all distances to unvisited state.
329
+ */
281
330
  clear() {
282
331
  this.data.fill(CompactDistanceArray.INFINITY);
283
332
  }
284
333
  /**
285
- * Get size
286
- */
334
+ * Get the size of the distance array.
335
+ * @returns The number of elements in the array
336
+ */
287
337
  size() {
288
338
  return this._size;
289
339
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bit-packed.js","sourceRoot":"","sources":["../../../src/optimized/bit-packed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bit-packed.js","sourceRoot":"","sources":["../../../src/optimized/bit-packed.ts"],"names":[],"mappings":"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"}
@@ -19,59 +19,122 @@ export interface ReadonlyGraph<TNodeId = NodeId> {
19
19
  */
20
20
  export declare class CSRGraph<TNodeId = NodeId> implements ReadonlyGraph<TNodeId> {
21
21
  private data;
22
+ /**
23
+ * Creates a new CSRGraph from an adjacency list representation.
24
+ * @param adjacencyList - Map of node IDs to arrays of neighbor node IDs
25
+ * @param weights - Optional map of edge weights keyed by "source-target" strings
26
+ * @param buildReverse - Whether to build reverse edges for bottom-up BFS (default true)
27
+ */
22
28
  constructor(adjacencyList: Map<TNodeId, TNodeId[]>, weights?: Map<string, number>, buildReverse?: boolean);
23
29
  /**
24
- * Build CSR structure from adjacency list
25
- */
30
+ * Build CSR structure from adjacency list.
31
+ * @param adjacencyList - Map of node IDs to arrays of neighbor node IDs
32
+ * @param weights - Optional map of edge weights keyed by "source-target" strings
33
+ * @param buildReverse - Whether to build reverse edges for bottom-up BFS
34
+ * @returns The constructed CSR graph data structure
35
+ */
26
36
  private buildCSR;
37
+ /**
38
+ * Get the total number of nodes in the graph.
39
+ * @returns The number of nodes
40
+ */
27
41
  nodeCount(): number;
42
+ /**
43
+ * Get the total number of edges in the graph.
44
+ * @returns The number of edges
45
+ */
28
46
  edgeCount(): number;
47
+ /**
48
+ * Check if a node exists in the graph.
49
+ * @param nodeId - The node ID to check
50
+ * @returns True if the node exists, false otherwise
51
+ */
29
52
  hasNode(nodeId: TNodeId): boolean;
53
+ /**
54
+ * Check if an edge exists between two nodes.
55
+ * @param source - The source node ID
56
+ * @param target - The target node ID
57
+ * @returns True if the edge exists, false otherwise
58
+ */
30
59
  hasEdge(source: TNodeId, target: TNodeId): boolean;
31
60
  /**
32
- * Get neighbors as node IDs
33
- */
61
+ * Get neighbors of a node as node IDs.
62
+ * @param nodeId - The node ID to get neighbors for
63
+ * @returns An iterator over neighbor node IDs
64
+ */
34
65
  neighbors(nodeId: TNodeId): IterableIterator<TNodeId>;
35
66
  /**
36
- * Get all nodes
37
- */
67
+ * Get all nodes in the graph.
68
+ * @returns An iterator over all node IDs
69
+ */
38
70
  nodes(): IterableIterator<TNodeId>;
39
71
  /**
40
- * Get neighbors as indices (internal use)
41
- */
72
+ * Get neighbors as indices (internal use).
73
+ * @param nodeIndex - The internal index of the node
74
+ * @returns Array of neighbor indices
75
+ */
42
76
  getNeighborIndices(nodeIndex: number): number[];
77
+ /**
78
+ * Get the out-degree (number of outgoing edges) of a node.
79
+ * @param nodeId - The node ID to get the out-degree for
80
+ * @returns The number of outgoing edges from the node
81
+ */
43
82
  outDegree(nodeId: TNodeId): number;
44
83
  /**
45
- * Get out-degree by index (internal use)
46
- */
84
+ * Get out-degree by index (internal use).
85
+ * @param nodeIndex - The internal index of the node
86
+ * @returns The number of outgoing edges from the node
87
+ */
47
88
  outDegreeByIndex(nodeIndex: number): number;
48
89
  /**
49
- * Iterator support for neighbor indices
50
- */
90
+ * Iterator support for neighbor indices.
91
+ * @param nodeIndex - The internal index of the node
92
+ * @yields The indices of neighboring nodes
93
+ */
51
94
  iterateNeighborIndices(nodeIndex: number): Generator<number>;
52
95
  /**
53
- * Iterator support for incoming neighbor indices (for bottom-up BFS)
54
- */
96
+ * Iterator support for incoming neighbor indices (for bottom-up BFS).
97
+ * @param nodeIndex - The internal index of the node
98
+ * @yields The indices of nodes with edges pointing to this node
99
+ */
55
100
  iterateIncomingNeighborIndices(nodeIndex: number): Generator<number>;
56
101
  /**
57
- * Convert node ID to index
58
- */
102
+ * Convert node ID to internal index.
103
+ * @param nodeId - The node ID to convert
104
+ * @returns The internal index for the node
105
+ */
59
106
  nodeToIndex(nodeId: TNodeId): number;
60
107
  /**
61
- * Convert index to node ID
62
- */
108
+ * Convert internal index to node ID.
109
+ * @param index - The internal index to convert
110
+ * @returns The node ID for the given index
111
+ */
63
112
  indexToNodeId(index: number): TNodeId;
64
113
  /**
65
- * Get edge weight
66
- */
114
+ * Get edge weight between two nodes.
115
+ * @param source - The source node ID
116
+ * @param target - The target node ID
117
+ * @returns The edge weight, or undefined if the edge doesn't exist or has no weight
118
+ */
67
119
  getEdgeWeight(source: TNodeId, target: TNodeId): number | undefined;
68
120
  /**
69
- * Binary search for target in sorted array
70
- */
121
+ * Binary search for target in sorted array.
122
+ * @param arr - The typed array to search in
123
+ * @param target - The value to search for
124
+ * @param start - The starting index (inclusive)
125
+ * @param end - The ending index (exclusive)
126
+ * @returns The index of the target, or -1 if not found
127
+ */
71
128
  private binarySearch;
72
129
  /**
73
- * Create CSR graph from standard Graph
74
- */
130
+ * Create CSR graph from standard Graph interface.
131
+ * @param graph - The graph object to convert, must implement nodes, neighbors, hasNode, and optionally getEdge
132
+ * @param graph.nodes - Function that returns an iterator over node objects with id property
133
+ * @param graph.neighbors - Function that returns an iterator over neighbor node IDs
134
+ * @param graph.hasNode - Function that checks if a node exists in the graph
135
+ * @param graph.getEdge - Optional function that returns edge data including weight
136
+ * @returns A new CSRGraph instance
137
+ */
75
138
  static fromGraph<TNodeId = NodeId>(graph: {
76
139
  nodes(): IterableIterator<{
77
140
  id: TNodeId;
@@ -1 +1 @@
1
- {"version":3,"file":"csr-graph.d.ts","sourceRoot":"","sources":["../../../src/optimized/csr-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,MAAM;IAC3C,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,IAAI,MAAM,CAAC;IACpB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;CACtC;AAwBD;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAE,YAAW,aAAa,CAAC,OAAO,CAAC;IACrE,OAAO,CAAC,IAAI,CAAwB;gBAExB,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,UAAO;IAItG;;KAEC;IACD,OAAO,CAAC,QAAQ;IA8IhB,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAmBlD;;KAEC;IACD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA2BrD;;KAEC;IACD,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIlC;;KAEC;IACD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAc/C,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IASlC;;KAEC;IACD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAU3C;;KAEC;IACA,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAc7D;;KAEC;IACA,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAkBrE;;KAEC;IACD,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IASpC;;KAEC;IACD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASrC;;KAEC;IACD,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IA2BnE;;KAEC;IACD,OAAO,CAAC,YAAY;IA0BpB;;KAEC;IACD,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE;QACtC,KAAK,IAAI,gBAAgB,CAAC;YAAC,EAAE,EAAE,OAAO,CAAA;SAAC,CAAC,CAAC;QACzC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAC,GAAG,SAAS,CAAC;KAC7E,GAAG,QAAQ,CAAC,OAAO,CAAC;CAuBxB"}
1
+ {"version":3,"file":"csr-graph.d.ts","sourceRoot":"","sources":["../../../src/optimized/csr-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,MAAM;IAC3C,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,IAAI,MAAM,CAAC;IACpB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;CACtC;AAwBD;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAE,YAAW,aAAa,CAAC,OAAO,CAAC;IACrE,OAAO,CAAC,IAAI,CAAwB;IAEpC;;;;;OAKG;gBACS,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,UAAO;IAItG;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IA8IhB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAIjC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAmBlD;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA2BrD;;;OAGG;IACH,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIlC;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAc/C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IASlC;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAU3C;;;;OAIG;IACF,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAc7D;;;;OAIG;IACF,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAkBrE;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IASpC;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASrC;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IA2BnE;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;;;;;;OAQG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE;QACtC,KAAK,IAAI,gBAAgB,CAAC;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QAC3C,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;QAClC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;KAC/E,GAAG,QAAQ,CAAC,OAAO,CAAC;CAuBxB"}