data-structure-typed 1.38.0 → 1.38.2

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 (792) hide show
  1. package/dist/{data-structures → cjs/data-structures}/binary-tree/avl-tree.js +22 -22
  2. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -0
  3. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  4. package/dist/{data-structures → cjs/data-structures}/binary-tree/binary-tree.js +32 -32
  5. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -0
  6. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -0
  7. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -0
  8. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -0
  9. package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +1 -0
  10. package/dist/{data-structures → cjs/data-structures}/binary-tree/tree-multiset.js +23 -23
  11. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -0
  12. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -0
  13. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -0
  14. package/dist/cjs/data-structures/graph/index.js.map +1 -0
  15. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -0
  16. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -0
  17. package/dist/cjs/data-structures/hash/coordinate-map.js.map +1 -0
  18. package/dist/cjs/data-structures/hash/coordinate-set.js.map +1 -0
  19. package/dist/{data-structures → cjs/data-structures}/hash/hash-map.js +59 -59
  20. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -0
  21. package/dist/{data-structures → cjs/data-structures}/hash/hash-table.js +99 -99
  22. package/dist/cjs/data-structures/hash/hash-table.js.map +1 -0
  23. package/dist/cjs/data-structures/hash/index.js.map +1 -0
  24. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -0
  25. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -0
  26. package/dist/{data-structures → cjs/data-structures}/heap/heap.js +167 -167
  27. package/dist/cjs/data-structures/heap/heap.js.map +1 -0
  28. package/dist/cjs/data-structures/heap/index.js.map +1 -0
  29. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -0
  30. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -0
  31. package/dist/cjs/data-structures/index.js.map +1 -0
  32. package/dist/{data-structures → cjs/data-structures}/linked-list/doubly-linked-list.js +3 -3
  33. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  34. package/dist/cjs/data-structures/linked-list/index.js.map +1 -0
  35. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -0
  36. package/dist/{data-structures → cjs/data-structures}/linked-list/skip-linked-list.js +34 -34
  37. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -0
  38. package/dist/cjs/data-structures/matrix/index.js.map +1 -0
  39. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -0
  40. package/{lib → dist/cjs}/data-structures/matrix/matrix2d.js +21 -13
  41. package/dist/cjs/data-structures/matrix/matrix2d.js.map +1 -0
  42. package/dist/cjs/data-structures/matrix/navigator.js.map +1 -0
  43. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -0
  44. package/dist/cjs/data-structures/priority-queue/index.js.map +1 -0
  45. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  46. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  47. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -0
  48. package/dist/cjs/data-structures/queue/deque.js.map +1 -0
  49. package/dist/cjs/data-structures/queue/index.js.map +1 -0
  50. package/dist/cjs/data-structures/queue/queue.js.map +1 -0
  51. package/dist/cjs/data-structures/stack/index.js.map +1 -0
  52. package/dist/cjs/data-structures/stack/stack.js.map +1 -0
  53. package/dist/cjs/data-structures/tree/index.js.map +1 -0
  54. package/dist/cjs/data-structures/tree/tree.js.map +1 -0
  55. package/dist/cjs/data-structures/trie/index.js.map +1 -0
  56. package/dist/{data-structures → cjs/data-structures}/trie/trie.js +6 -6
  57. package/dist/cjs/data-structures/trie/trie.js.map +1 -0
  58. package/dist/cjs/index.js.map +1 -0
  59. package/dist/cjs/interfaces/binary-tree.js.map +1 -0
  60. package/dist/cjs/interfaces/doubly-linked-list.js.map +1 -0
  61. package/dist/{interfaces → cjs/interfaces}/graph.js.map +1 -1
  62. package/dist/{interfaces → cjs/interfaces}/heap.js.map +1 -1
  63. package/dist/cjs/interfaces/index.js.map +1 -0
  64. package/dist/{interfaces → cjs/interfaces}/navigator.js.map +1 -1
  65. package/dist/cjs/interfaces/priority-queue.js.map +1 -0
  66. package/dist/cjs/interfaces/segment-tree.js.map +1 -0
  67. package/dist/cjs/interfaces/singly-linked-list.js.map +1 -0
  68. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js.map +1 -0
  69. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  70. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js.map +1 -0
  71. package/dist/cjs/types/data-structures/binary-tree/bst.js.map +1 -0
  72. package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -0
  73. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +1 -0
  74. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js.map +1 -0
  75. package/dist/cjs/types/data-structures/binary-tree/tree-multiset.js.map +1 -0
  76. package/dist/cjs/types/data-structures/graph/abstract-graph.js.map +1 -0
  77. package/dist/cjs/types/data-structures/graph/directed-graph.js.map +1 -0
  78. package/dist/cjs/types/data-structures/graph/index.js.map +1 -0
  79. package/dist/cjs/types/data-structures/graph/map-graph.js.map +1 -0
  80. package/dist/cjs/types/data-structures/graph/undirected-graph.js.map +1 -0
  81. package/dist/cjs/types/data-structures/hash/coordinate-map.js.map +1 -0
  82. package/dist/cjs/types/data-structures/hash/coordinate-set.js.map +1 -0
  83. package/dist/cjs/types/data-structures/hash/hash-map.js.map +1 -0
  84. package/dist/cjs/types/data-structures/hash/hash-table.js.map +1 -0
  85. package/dist/cjs/types/data-structures/hash/index.js.map +1 -0
  86. package/dist/cjs/types/data-structures/hash/tree-map.js.map +1 -0
  87. package/dist/cjs/types/data-structures/hash/tree-set.js.map +1 -0
  88. package/dist/cjs/types/data-structures/heap/heap.js.map +1 -0
  89. package/dist/cjs/types/data-structures/heap/index.js.map +1 -0
  90. package/dist/cjs/types/data-structures/heap/max-heap.js.map +1 -0
  91. package/dist/cjs/types/data-structures/heap/min-heap.js.map +1 -0
  92. package/dist/cjs/types/data-structures/index.js.map +1 -0
  93. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  94. package/dist/cjs/types/data-structures/linked-list/index.js.map +1 -0
  95. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js.map +1 -0
  96. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js.map +1 -0
  97. package/dist/cjs/types/data-structures/matrix/index.js.map +1 -0
  98. package/dist/cjs/types/data-structures/matrix/matrix.js.map +1 -0
  99. package/dist/cjs/types/data-structures/matrix/matrix2d.js.map +1 -0
  100. package/dist/cjs/types/data-structures/matrix/navigator.js.map +1 -0
  101. package/dist/cjs/types/data-structures/matrix/vector2d.js.map +1 -0
  102. package/dist/cjs/types/data-structures/priority-queue/index.js.map +1 -0
  103. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  104. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  105. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js.map +1 -0
  106. package/dist/cjs/types/data-structures/queue/deque.js.map +1 -0
  107. package/dist/cjs/types/data-structures/queue/index.js.map +1 -0
  108. package/dist/cjs/types/data-structures/queue/queue.js.map +1 -0
  109. package/dist/cjs/types/data-structures/stack/index.js.map +1 -0
  110. package/dist/cjs/types/data-structures/stack/stack.js.map +1 -0
  111. package/dist/cjs/types/data-structures/tree/index.js.map +1 -0
  112. package/dist/cjs/types/data-structures/tree/tree.js.map +1 -0
  113. package/dist/cjs/types/data-structures/trie/index.js.map +1 -0
  114. package/dist/cjs/types/data-structures/trie/trie.js.map +1 -0
  115. package/dist/cjs/types/helpers.js.map +1 -0
  116. package/dist/cjs/types/index.js.map +1 -0
  117. package/dist/cjs/types/utils/index.js.map +1 -0
  118. package/dist/{types → cjs/types}/utils/utils.js.map +1 -1
  119. package/dist/cjs/types/utils/validate-type.js.map +1 -0
  120. package/dist/cjs/utils/index.js.map +1 -0
  121. package/dist/cjs/utils/utils.js.map +1 -0
  122. package/{lib → dist/mjs}/data-structures/binary-tree/avl-tree.js +32 -26
  123. package/{lib → dist/mjs}/data-structures/binary-tree/binary-indexed-tree.js +12 -3
  124. package/{lib → dist/mjs}/data-structures/binary-tree/binary-tree.js +90 -73
  125. package/{lib → dist/mjs}/data-structures/binary-tree/bst.js +42 -40
  126. package/dist/mjs/data-structures/binary-tree/index.js +23 -0
  127. package/dist/mjs/data-structures/binary-tree/rb-tree.js +28 -0
  128. package/{lib → dist/mjs}/data-structures/binary-tree/segment-tree.js +17 -10
  129. package/{lib → dist/mjs}/data-structures/binary-tree/tree-multiset.js +42 -36
  130. package/{lib → dist/mjs}/data-structures/graph/abstract-graph.js +29 -24
  131. package/{lib → dist/mjs}/data-structures/graph/directed-graph.js +22 -14
  132. package/dist/mjs/data-structures/graph/index.js +20 -0
  133. package/{lib → dist/mjs}/data-structures/graph/map-graph.js +14 -5
  134. package/{lib → dist/mjs}/data-structures/graph/undirected-graph.js +19 -13
  135. package/{lib → dist/mjs}/data-structures/hash/coordinate-map.js +6 -2
  136. package/{lib → dist/mjs}/data-structures/hash/coordinate-set.js +6 -2
  137. package/{lib → dist/mjs}/data-structures/hash/hash-map.js +70 -60
  138. package/{lib → dist/mjs}/data-structures/hash/hash-table.js +115 -103
  139. package/dist/mjs/data-structures/hash/index.js +22 -0
  140. package/dist/mjs/data-structures/hash/tree-map.js +6 -0
  141. package/dist/mjs/data-structures/hash/tree-set.js +6 -0
  142. package/{lib → dist/mjs}/data-structures/heap/heap.js +188 -172
  143. package/dist/mjs/data-structures/heap/index.js +19 -0
  144. package/{lib → dist/mjs}/data-structures/heap/max-heap.js +6 -2
  145. package/{lib → dist/mjs}/data-structures/heap/min-heap.js +6 -2
  146. package/dist/mjs/data-structures/index.js +27 -0
  147. package/{lib → dist/mjs}/data-structures/linked-list/doubly-linked-list.js +18 -9
  148. package/dist/mjs/data-structures/linked-list/index.js +19 -0
  149. package/{lib → dist/mjs}/data-structures/linked-list/singly-linked-list.js +12 -2
  150. package/{lib → dist/mjs}/data-structures/linked-list/skip-linked-list.js +48 -36
  151. package/dist/mjs/data-structures/matrix/index.js +20 -0
  152. package/{lib → dist/mjs}/data-structures/matrix/matrix.js +6 -1
  153. package/dist/{data-structures → mjs/data-structures}/matrix/matrix2d.js +14 -11
  154. package/{lib → dist/mjs}/data-structures/matrix/navigator.js +14 -2
  155. package/{lib → dist/mjs}/data-structures/matrix/vector2d.js +9 -2
  156. package/dist/mjs/data-structures/priority-queue/index.js +19 -0
  157. package/{lib → dist/mjs}/data-structures/priority-queue/max-priority-queue.js +6 -2
  158. package/{lib → dist/mjs}/data-structures/priority-queue/min-priority-queue.js +6 -2
  159. package/dist/mjs/data-structures/priority-queue/priority-queue.js +17 -0
  160. package/{lib → dist/mjs}/data-structures/queue/deque.js +21 -22
  161. package/dist/mjs/data-structures/queue/index.js +18 -0
  162. package/{lib → dist/mjs}/data-structures/queue/queue.js +11 -5
  163. package/dist/mjs/data-structures/stack/index.js +17 -0
  164. package/{lib → dist/mjs}/data-structures/stack/stack.js +6 -1
  165. package/dist/mjs/data-structures/tree/index.js +17 -0
  166. package/{lib → dist/mjs}/data-structures/tree/tree.js +8 -1
  167. package/dist/mjs/data-structures/trie/index.js +17 -0
  168. package/{lib → dist/mjs}/data-structures/trie/trie.js +18 -8
  169. package/dist/mjs/index.js +20 -0
  170. package/dist/mjs/interfaces/binary-tree.js +2 -0
  171. package/dist/mjs/interfaces/doubly-linked-list.js +2 -0
  172. package/dist/mjs/interfaces/graph.js +2 -0
  173. package/dist/mjs/interfaces/heap.js +2 -0
  174. package/dist/mjs/interfaces/index.js +24 -0
  175. package/dist/mjs/interfaces/navigator.js +2 -0
  176. package/dist/mjs/interfaces/priority-queue.js +2 -0
  177. package/dist/mjs/interfaces/segment-tree.js +2 -0
  178. package/dist/mjs/interfaces/singly-linked-list.js +2 -0
  179. package/dist/mjs/types/data-structures/binary-tree/avl-tree.js +2 -0
  180. package/dist/mjs/types/data-structures/binary-tree/binary-indexed-tree.js +2 -0
  181. package/{lib → dist/mjs}/types/data-structures/binary-tree/binary-tree.js +7 -4
  182. package/dist/mjs/types/data-structures/binary-tree/bst.js +2 -0
  183. package/dist/mjs/types/data-structures/binary-tree/index.js +22 -0
  184. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +8 -0
  185. package/dist/mjs/types/data-structures/binary-tree/segment-tree.js +2 -0
  186. package/dist/mjs/types/data-structures/binary-tree/tree-multiset.js +2 -0
  187. package/dist/mjs/types/data-structures/graph/abstract-graph.js +2 -0
  188. package/dist/mjs/types/data-structures/graph/directed-graph.js +9 -0
  189. package/dist/mjs/types/data-structures/graph/index.js +19 -0
  190. package/dist/mjs/types/data-structures/graph/map-graph.js +2 -0
  191. package/dist/mjs/types/data-structures/graph/undirected-graph.js +2 -0
  192. package/dist/mjs/types/data-structures/hash/coordinate-map.js +2 -0
  193. package/dist/mjs/types/data-structures/hash/coordinate-set.js +2 -0
  194. package/dist/mjs/types/data-structures/hash/hash-map.js +2 -0
  195. package/dist/mjs/types/data-structures/hash/hash-table.js +2 -0
  196. package/dist/mjs/types/data-structures/hash/index.js +2 -0
  197. package/dist/mjs/types/data-structures/hash/tree-map.js +2 -0
  198. package/dist/mjs/types/data-structures/hash/tree-set.js +2 -0
  199. package/dist/mjs/types/data-structures/heap/heap.js +2 -0
  200. package/dist/mjs/types/data-structures/heap/index.js +17 -0
  201. package/dist/mjs/types/data-structures/heap/max-heap.js +2 -0
  202. package/dist/mjs/types/data-structures/heap/min-heap.js +2 -0
  203. package/dist/mjs/types/data-structures/index.js +27 -0
  204. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.js +2 -0
  205. package/dist/mjs/types/data-structures/linked-list/index.js +18 -0
  206. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.js +2 -0
  207. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.js +2 -0
  208. package/dist/mjs/types/data-structures/matrix/index.js +17 -0
  209. package/dist/mjs/types/data-structures/matrix/matrix.js +2 -0
  210. package/dist/mjs/types/data-structures/matrix/matrix2d.js +2 -0
  211. package/dist/mjs/types/data-structures/matrix/navigator.js +2 -0
  212. package/dist/mjs/types/data-structures/matrix/vector2d.js +2 -0
  213. package/dist/mjs/types/data-structures/priority-queue/index.js +19 -0
  214. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.js +2 -0
  215. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.js +2 -0
  216. package/dist/mjs/types/data-structures/priority-queue/priority-queue.js +2 -0
  217. package/dist/mjs/types/data-structures/queue/deque.js +2 -0
  218. package/dist/mjs/types/data-structures/queue/index.js +18 -0
  219. package/dist/mjs/types/data-structures/queue/queue.js +2 -0
  220. package/dist/mjs/types/data-structures/stack/index.js +17 -0
  221. package/dist/mjs/types/data-structures/stack/stack.js +2 -0
  222. package/dist/mjs/types/data-structures/tree/index.js +17 -0
  223. package/dist/mjs/types/data-structures/tree/tree.js +2 -0
  224. package/dist/mjs/types/data-structures/trie/index.js +17 -0
  225. package/dist/mjs/types/data-structures/trie/trie.js +2 -0
  226. package/dist/mjs/types/helpers.js +9 -0
  227. package/dist/mjs/types/index.js +19 -0
  228. package/dist/mjs/types/utils/index.js +18 -0
  229. package/dist/mjs/types/utils/utils.js +2 -0
  230. package/dist/mjs/types/utils/validate-type.js +2 -0
  231. package/dist/mjs/utils/index.js +17 -0
  232. package/dist/mjs/utils/utils.js +64 -0
  233. package/dist/umd/index.global.js +27 -0
  234. package/dist/umd/index.global.js.map +1 -0
  235. package/package.json +21 -23
  236. package/src/data-structures/binary-tree/avl-tree.ts +28 -28
  237. package/src/data-structures/binary-tree/binary-indexed-tree.ts +1 -1
  238. package/src/data-structures/binary-tree/binary-tree.ts +57 -57
  239. package/src/data-structures/binary-tree/bst.ts +4 -0
  240. package/src/data-structures/binary-tree/rb-tree.ts +2 -2
  241. package/src/data-structures/binary-tree/tree-multiset.ts +30 -31
  242. package/src/data-structures/graph/abstract-graph.ts +10 -11
  243. package/src/data-structures/graph/directed-graph.ts +1 -2
  244. package/src/data-structures/graph/undirected-graph.ts +4 -5
  245. package/src/data-structures/hash/hash-map.ts +82 -76
  246. package/src/data-structures/hash/hash-table.ts +112 -109
  247. package/src/data-structures/hash/tree-map.ts +2 -1
  248. package/src/data-structures/hash/tree-set.ts +2 -1
  249. package/src/data-structures/heap/heap.ts +182 -181
  250. package/src/data-structures/linked-list/doubly-linked-list.ts +4 -4
  251. package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
  252. package/src/data-structures/linked-list/skip-linked-list.ts +45 -38
  253. package/src/data-structures/matrix/matrix.ts +1 -1
  254. package/src/data-structures/matrix/matrix2d.ts +10 -10
  255. package/src/data-structures/matrix/vector2d.ts +2 -1
  256. package/src/data-structures/queue/deque.ts +5 -4
  257. package/src/data-structures/queue/queue.ts +1 -1
  258. package/src/data-structures/trie/trie.ts +9 -9
  259. package/src/types/data-structures/matrix/navigator.ts +1 -1
  260. package/src/types/helpers.ts +5 -1
  261. package/src/types/utils/utils.ts +1 -1
  262. package/src/types/utils/validate-type.ts +2 -2
  263. package/test/integration/bst.test.ts +1 -1
  264. package/test/integration/index.html +1 -2
  265. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +1 -1
  266. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +3 -2
  267. package/test/unit/data-structures/binary-tree/bst.test.ts +3 -3
  268. package/test/unit/data-structures/binary-tree/overall.test.ts +1 -1
  269. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +1 -1
  270. package/test/unit/data-structures/hash/hash-table.test.ts +1 -1
  271. package/test/unit/data-structures/heap/heap.test.ts +2 -2
  272. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +1 -1
  273. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +2 -2
  274. package/test/unit/data-structures/matrix/navigator.test.ts +1 -1
  275. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +2 -2
  276. package/test/unit/data-structures/queue/deque.test.ts +1 -1
  277. package/test/unit/data-structures/queue/queue.test.ts +1 -1
  278. package/test/utils/big-o.ts +1 -1
  279. package/tsconfig-base.json +27 -0
  280. package/tsconfig-cjs.json +9 -0
  281. package/tsup.config.js +11 -0
  282. package/umd/bundle.min.js +1 -1
  283. package/umd/bundle.min.js.map +1 -1
  284. package/dist/data-structures/binary-tree/avl-tree.js.map +0 -1
  285. package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  286. package/dist/data-structures/binary-tree/binary-tree.js.map +0 -1
  287. package/dist/data-structures/binary-tree/bst.js.map +0 -1
  288. package/dist/data-structures/binary-tree/index.js.map +0 -1
  289. package/dist/data-structures/binary-tree/rb-tree.js.map +0 -1
  290. package/dist/data-structures/binary-tree/segment-tree.js.map +0 -1
  291. package/dist/data-structures/binary-tree/tree-multiset.js.map +0 -1
  292. package/dist/data-structures/graph/abstract-graph.js.map +0 -1
  293. package/dist/data-structures/graph/directed-graph.js.map +0 -1
  294. package/dist/data-structures/graph/index.js.map +0 -1
  295. package/dist/data-structures/graph/map-graph.js.map +0 -1
  296. package/dist/data-structures/graph/undirected-graph.js.map +0 -1
  297. package/dist/data-structures/hash/coordinate-map.js.map +0 -1
  298. package/dist/data-structures/hash/coordinate-set.js.map +0 -1
  299. package/dist/data-structures/hash/hash-map.js.map +0 -1
  300. package/dist/data-structures/hash/hash-table.js.map +0 -1
  301. package/dist/data-structures/hash/index.js.map +0 -1
  302. package/dist/data-structures/hash/tree-map.js.map +0 -1
  303. package/dist/data-structures/hash/tree-set.js.map +0 -1
  304. package/dist/data-structures/heap/heap.js.map +0 -1
  305. package/dist/data-structures/heap/index.js.map +0 -1
  306. package/dist/data-structures/heap/max-heap.js.map +0 -1
  307. package/dist/data-structures/heap/min-heap.js.map +0 -1
  308. package/dist/data-structures/index.js.map +0 -1
  309. package/dist/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  310. package/dist/data-structures/linked-list/index.js.map +0 -1
  311. package/dist/data-structures/linked-list/singly-linked-list.js.map +0 -1
  312. package/dist/data-structures/linked-list/skip-linked-list.js.map +0 -1
  313. package/dist/data-structures/matrix/index.js.map +0 -1
  314. package/dist/data-structures/matrix/matrix.js.map +0 -1
  315. package/dist/data-structures/matrix/matrix2d.js.map +0 -1
  316. package/dist/data-structures/matrix/navigator.js.map +0 -1
  317. package/dist/data-structures/matrix/vector2d.js.map +0 -1
  318. package/dist/data-structures/priority-queue/index.js.map +0 -1
  319. package/dist/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  320. package/dist/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  321. package/dist/data-structures/priority-queue/priority-queue.js.map +0 -1
  322. package/dist/data-structures/queue/deque.js.map +0 -1
  323. package/dist/data-structures/queue/index.js.map +0 -1
  324. package/dist/data-structures/queue/queue.js.map +0 -1
  325. package/dist/data-structures/stack/index.js.map +0 -1
  326. package/dist/data-structures/stack/stack.js.map +0 -1
  327. package/dist/data-structures/tree/index.js.map +0 -1
  328. package/dist/data-structures/tree/tree.js.map +0 -1
  329. package/dist/data-structures/trie/index.js.map +0 -1
  330. package/dist/data-structures/trie/trie.js.map +0 -1
  331. package/dist/index.js.map +0 -1
  332. package/dist/interfaces/binary-tree.js.map +0 -1
  333. package/dist/interfaces/doubly-linked-list.js.map +0 -1
  334. package/dist/interfaces/index.js.map +0 -1
  335. package/dist/interfaces/priority-queue.js.map +0 -1
  336. package/dist/interfaces/segment-tree.js.map +0 -1
  337. package/dist/interfaces/singly-linked-list.js.map +0 -1
  338. package/dist/types/data-structures/binary-tree/avl-tree.js.map +0 -1
  339. package/dist/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  340. package/dist/types/data-structures/binary-tree/binary-tree.js.map +0 -1
  341. package/dist/types/data-structures/binary-tree/bst.js.map +0 -1
  342. package/dist/types/data-structures/binary-tree/index.js.map +0 -1
  343. package/dist/types/data-structures/binary-tree/rb-tree.js.map +0 -1
  344. package/dist/types/data-structures/binary-tree/segment-tree.js.map +0 -1
  345. package/dist/types/data-structures/binary-tree/tree-multiset.js.map +0 -1
  346. package/dist/types/data-structures/graph/abstract-graph.js.map +0 -1
  347. package/dist/types/data-structures/graph/directed-graph.js.map +0 -1
  348. package/dist/types/data-structures/graph/index.js.map +0 -1
  349. package/dist/types/data-structures/graph/map-graph.js.map +0 -1
  350. package/dist/types/data-structures/graph/undirected-graph.js.map +0 -1
  351. package/dist/types/data-structures/hash/coordinate-map.js.map +0 -1
  352. package/dist/types/data-structures/hash/coordinate-set.js.map +0 -1
  353. package/dist/types/data-structures/hash/hash-map.js.map +0 -1
  354. package/dist/types/data-structures/hash/hash-table.js.map +0 -1
  355. package/dist/types/data-structures/hash/index.js.map +0 -1
  356. package/dist/types/data-structures/hash/tree-map.js.map +0 -1
  357. package/dist/types/data-structures/hash/tree-set.js.map +0 -1
  358. package/dist/types/data-structures/heap/heap.js.map +0 -1
  359. package/dist/types/data-structures/heap/index.js.map +0 -1
  360. package/dist/types/data-structures/heap/max-heap.js.map +0 -1
  361. package/dist/types/data-structures/heap/min-heap.js.map +0 -1
  362. package/dist/types/data-structures/index.js.map +0 -1
  363. package/dist/types/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  364. package/dist/types/data-structures/linked-list/index.js.map +0 -1
  365. package/dist/types/data-structures/linked-list/singly-linked-list.js.map +0 -1
  366. package/dist/types/data-structures/linked-list/skip-linked-list.js.map +0 -1
  367. package/dist/types/data-structures/matrix/index.js.map +0 -1
  368. package/dist/types/data-structures/matrix/matrix.js.map +0 -1
  369. package/dist/types/data-structures/matrix/matrix2d.js.map +0 -1
  370. package/dist/types/data-structures/matrix/navigator.js.map +0 -1
  371. package/dist/types/data-structures/matrix/vector2d.js.map +0 -1
  372. package/dist/types/data-structures/priority-queue/index.js.map +0 -1
  373. package/dist/types/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  374. package/dist/types/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  375. package/dist/types/data-structures/priority-queue/priority-queue.js.map +0 -1
  376. package/dist/types/data-structures/queue/deque.js.map +0 -1
  377. package/dist/types/data-structures/queue/index.js.map +0 -1
  378. package/dist/types/data-structures/queue/queue.js.map +0 -1
  379. package/dist/types/data-structures/stack/index.js.map +0 -1
  380. package/dist/types/data-structures/stack/stack.js.map +0 -1
  381. package/dist/types/data-structures/tree/index.js.map +0 -1
  382. package/dist/types/data-structures/tree/tree.js.map +0 -1
  383. package/dist/types/data-structures/trie/index.js.map +0 -1
  384. package/dist/types/data-structures/trie/trie.js.map +0 -1
  385. package/dist/types/helpers.js.map +0 -1
  386. package/dist/types/index.js.map +0 -1
  387. package/dist/types/utils/index.js.map +0 -1
  388. package/dist/types/utils/validate-type.js.map +0 -1
  389. package/dist/utils/index.js.map +0 -1
  390. package/dist/utils/utils.js.map +0 -1
  391. package/lib/data-structures/binary-tree/index.js +0 -7
  392. package/lib/data-structures/binary-tree/rb-tree.js +0 -22
  393. package/lib/data-structures/graph/index.js +0 -4
  394. package/lib/data-structures/hash/index.js +0 -6
  395. package/lib/data-structures/hash/tree-map.js +0 -2
  396. package/lib/data-structures/hash/tree-set.js +0 -2
  397. package/lib/data-structures/heap/index.js +0 -3
  398. package/lib/data-structures/index.js +0 -11
  399. package/lib/data-structures/linked-list/index.js +0 -3
  400. package/lib/data-structures/matrix/index.js +0 -4
  401. package/lib/data-structures/priority-queue/index.js +0 -3
  402. package/lib/data-structures/priority-queue/priority-queue.js +0 -13
  403. package/lib/data-structures/queue/index.js +0 -2
  404. package/lib/data-structures/stack/index.js +0 -1
  405. package/lib/data-structures/tree/index.js +0 -1
  406. package/lib/data-structures/trie/index.js +0 -1
  407. package/lib/index.js +0 -4
  408. package/lib/interfaces/binary-tree.js +0 -1
  409. package/lib/interfaces/doubly-linked-list.js +0 -1
  410. package/lib/interfaces/graph.js +0 -1
  411. package/lib/interfaces/heap.js +0 -1
  412. package/lib/interfaces/index.js +0 -8
  413. package/lib/interfaces/navigator.js +0 -1
  414. package/lib/interfaces/priority-queue.js +0 -1
  415. package/lib/interfaces/segment-tree.js +0 -1
  416. package/lib/interfaces/singly-linked-list.js +0 -1
  417. package/lib/types/data-structures/binary-tree/avl-tree.js +0 -1
  418. package/lib/types/data-structures/binary-tree/binary-indexed-tree.js +0 -1
  419. package/lib/types/data-structures/binary-tree/bst.js +0 -1
  420. package/lib/types/data-structures/binary-tree/index.js +0 -6
  421. package/lib/types/data-structures/binary-tree/rb-tree.js +0 -5
  422. package/lib/types/data-structures/binary-tree/segment-tree.js +0 -1
  423. package/lib/types/data-structures/binary-tree/tree-multiset.js +0 -1
  424. package/lib/types/data-structures/graph/abstract-graph.js +0 -1
  425. package/lib/types/data-structures/graph/directed-graph.js +0 -6
  426. package/lib/types/data-structures/graph/index.js +0 -3
  427. package/lib/types/data-structures/graph/map-graph.js +0 -1
  428. package/lib/types/data-structures/graph/undirected-graph.js +0 -1
  429. package/lib/types/data-structures/hash/coordinate-map.js +0 -1
  430. package/lib/types/data-structures/hash/coordinate-set.js +0 -1
  431. package/lib/types/data-structures/hash/hash-map.js +0 -1
  432. package/lib/types/data-structures/hash/hash-table.js +0 -1
  433. package/lib/types/data-structures/hash/index.js +0 -1
  434. package/lib/types/data-structures/hash/tree-map.js +0 -1
  435. package/lib/types/data-structures/hash/tree-set.js +0 -1
  436. package/lib/types/data-structures/heap/heap.js +0 -1
  437. package/lib/types/data-structures/heap/index.js +0 -1
  438. package/lib/types/data-structures/heap/max-heap.js +0 -1
  439. package/lib/types/data-structures/heap/min-heap.js +0 -1
  440. package/lib/types/data-structures/index.js +0 -11
  441. package/lib/types/data-structures/linked-list/doubly-linked-list.js +0 -1
  442. package/lib/types/data-structures/linked-list/index.js +0 -2
  443. package/lib/types/data-structures/linked-list/singly-linked-list.js +0 -1
  444. package/lib/types/data-structures/linked-list/skip-linked-list.js +0 -1
  445. package/lib/types/data-structures/matrix/index.js +0 -1
  446. package/lib/types/data-structures/matrix/matrix.js +0 -1
  447. package/lib/types/data-structures/matrix/matrix2d.js +0 -1
  448. package/lib/types/data-structures/matrix/navigator.js +0 -1
  449. package/lib/types/data-structures/matrix/vector2d.js +0 -1
  450. package/lib/types/data-structures/priority-queue/index.js +0 -3
  451. package/lib/types/data-structures/priority-queue/max-priority-queue.js +0 -1
  452. package/lib/types/data-structures/priority-queue/min-priority-queue.js +0 -1
  453. package/lib/types/data-structures/priority-queue/priority-queue.js +0 -1
  454. package/lib/types/data-structures/queue/deque.js +0 -1
  455. package/lib/types/data-structures/queue/index.js +0 -2
  456. package/lib/types/data-structures/queue/queue.js +0 -1
  457. package/lib/types/data-structures/stack/index.js +0 -1
  458. package/lib/types/data-structures/stack/stack.js +0 -1
  459. package/lib/types/data-structures/tree/index.js +0 -1
  460. package/lib/types/data-structures/tree/tree.js +0 -1
  461. package/lib/types/data-structures/trie/index.js +0 -1
  462. package/lib/types/data-structures/trie/trie.js +0 -1
  463. package/lib/types/helpers.js +0 -6
  464. package/lib/types/index.js +0 -3
  465. package/lib/types/utils/index.js +0 -2
  466. package/lib/types/utils/utils.js +0 -1
  467. package/lib/types/utils/validate-type.js +0 -1
  468. package/lib/utils/index.js +0 -1
  469. package/lib/utils/utils.js +0 -63
  470. package/dist/{data-structures → cjs/data-structures}/binary-tree/avl-tree.d.ts +9 -9
  471. package/dist/{data-structures → cjs/data-structures}/binary-tree/binary-indexed-tree.d.ts +0 -0
  472. package/dist/{data-structures → cjs/data-structures}/binary-tree/binary-indexed-tree.js +0 -0
  473. package/dist/{data-structures → cjs/data-structures}/binary-tree/binary-tree.d.ts +31 -31
  474. package/dist/{data-structures → cjs/data-structures}/binary-tree/bst.d.ts +0 -0
  475. package/dist/{data-structures → cjs/data-structures}/binary-tree/bst.js +0 -0
  476. package/dist/{data-structures → cjs/data-structures}/binary-tree/index.d.ts +0 -0
  477. package/dist/{data-structures → cjs/data-structures}/binary-tree/index.js +0 -0
  478. package/dist/{data-structures → cjs/data-structures}/binary-tree/rb-tree.d.ts +1 -1
  479. package/dist/{data-structures → cjs/data-structures}/binary-tree/rb-tree.js +0 -0
  480. package/dist/{data-structures → cjs/data-structures}/binary-tree/segment-tree.d.ts +0 -0
  481. package/dist/{data-structures → cjs/data-structures}/binary-tree/segment-tree.js +0 -0
  482. package/dist/{data-structures → cjs/data-structures}/binary-tree/tree-multiset.d.ts +9 -9
  483. package/dist/{data-structures → cjs/data-structures}/graph/abstract-graph.d.ts +0 -0
  484. package/dist/{data-structures → cjs/data-structures}/graph/abstract-graph.js +0 -0
  485. package/dist/{data-structures → cjs/data-structures}/graph/directed-graph.d.ts +0 -0
  486. package/dist/{data-structures → cjs/data-structures}/graph/directed-graph.js +0 -0
  487. package/dist/{data-structures → cjs/data-structures}/graph/index.d.ts +0 -0
  488. package/dist/{data-structures → cjs/data-structures}/graph/index.js +0 -0
  489. package/dist/{data-structures → cjs/data-structures}/graph/map-graph.d.ts +0 -0
  490. package/dist/{data-structures → cjs/data-structures}/graph/map-graph.js +0 -0
  491. package/dist/{data-structures → cjs/data-structures}/graph/undirected-graph.d.ts +0 -0
  492. package/dist/{data-structures → cjs/data-structures}/graph/undirected-graph.js +0 -0
  493. package/dist/{data-structures → cjs/data-structures}/hash/coordinate-map.d.ts +0 -0
  494. package/dist/{data-structures → cjs/data-structures}/hash/coordinate-map.js +0 -0
  495. package/dist/{data-structures → cjs/data-structures}/hash/coordinate-set.d.ts +0 -0
  496. package/dist/{data-structures → cjs/data-structures}/hash/coordinate-set.js +0 -0
  497. package/{lib → dist/cjs}/data-structures/hash/hash-map.d.ts +25 -25
  498. package/{lib → dist/cjs}/data-structures/hash/hash-table.d.ts +34 -34
  499. package/dist/{data-structures → cjs/data-structures}/hash/index.d.ts +0 -0
  500. package/dist/{data-structures → cjs/data-structures}/hash/index.js +0 -0
  501. package/dist/{data-structures → cjs/data-structures}/hash/tree-map.d.ts +0 -0
  502. package/dist/{data-structures → cjs/data-structures}/hash/tree-map.js +0 -0
  503. package/dist/{data-structures → cjs/data-structures}/hash/tree-set.d.ts +0 -0
  504. package/dist/{data-structures → cjs/data-structures}/hash/tree-set.js +0 -0
  505. package/dist/{data-structures → cjs/data-structures}/heap/heap.d.ts +66 -66
  506. package/dist/{data-structures → cjs/data-structures}/heap/index.d.ts +0 -0
  507. package/dist/{data-structures → cjs/data-structures}/heap/index.js +0 -0
  508. package/dist/{data-structures → cjs/data-structures}/heap/max-heap.d.ts +0 -0
  509. package/dist/{data-structures → cjs/data-structures}/heap/max-heap.js +0 -0
  510. package/dist/{data-structures → cjs/data-structures}/heap/min-heap.d.ts +0 -0
  511. package/dist/{data-structures → cjs/data-structures}/heap/min-heap.js +0 -0
  512. package/dist/{data-structures → cjs/data-structures}/index.d.ts +0 -0
  513. package/dist/{data-structures → cjs/data-structures}/index.js +0 -0
  514. package/{lib → dist/cjs}/data-structures/linked-list/doubly-linked-list.d.ts +1 -1
  515. package/dist/{data-structures → cjs/data-structures}/linked-list/index.d.ts +0 -0
  516. package/dist/{data-structures → cjs/data-structures}/linked-list/index.js +0 -0
  517. package/dist/{data-structures → cjs/data-structures}/linked-list/singly-linked-list.d.ts +0 -0
  518. package/dist/{data-structures → cjs/data-structures}/linked-list/singly-linked-list.js +0 -0
  519. package/dist/{data-structures → cjs/data-structures}/linked-list/skip-linked-list.d.ts +17 -17
  520. package/dist/{data-structures → cjs/data-structures}/matrix/index.d.ts +0 -0
  521. package/dist/{data-structures → cjs/data-structures}/matrix/index.js +0 -0
  522. package/dist/{data-structures → cjs/data-structures}/matrix/matrix.d.ts +0 -0
  523. package/dist/{data-structures → cjs/data-structures}/matrix/matrix.js +0 -0
  524. package/{lib → dist/cjs}/data-structures/matrix/matrix2d.d.ts +7 -7
  525. package/dist/{data-structures → cjs/data-structures}/matrix/navigator.d.ts +0 -0
  526. package/dist/{data-structures → cjs/data-structures}/matrix/navigator.js +0 -0
  527. package/dist/{data-structures → cjs/data-structures}/matrix/vector2d.d.ts +0 -0
  528. package/dist/{data-structures → cjs/data-structures}/matrix/vector2d.js +0 -0
  529. package/dist/{data-structures → cjs/data-structures}/priority-queue/index.d.ts +0 -0
  530. package/dist/{data-structures → cjs/data-structures}/priority-queue/index.js +0 -0
  531. package/dist/{data-structures → cjs/data-structures}/priority-queue/max-priority-queue.d.ts +0 -0
  532. package/dist/{data-structures → cjs/data-structures}/priority-queue/max-priority-queue.js +0 -0
  533. package/dist/{data-structures → cjs/data-structures}/priority-queue/min-priority-queue.d.ts +0 -0
  534. package/dist/{data-structures → cjs/data-structures}/priority-queue/min-priority-queue.js +0 -0
  535. package/dist/{data-structures → cjs/data-structures}/priority-queue/priority-queue.d.ts +0 -0
  536. package/dist/{data-structures → cjs/data-structures}/priority-queue/priority-queue.js +0 -0
  537. package/dist/{data-structures → cjs/data-structures}/queue/deque.d.ts +0 -0
  538. package/dist/{data-structures → cjs/data-structures}/queue/deque.js +0 -0
  539. package/dist/{data-structures → cjs/data-structures}/queue/index.d.ts +0 -0
  540. package/dist/{data-structures → cjs/data-structures}/queue/index.js +0 -0
  541. package/dist/{data-structures → cjs/data-structures}/queue/queue.d.ts +0 -0
  542. package/dist/{data-structures → cjs/data-structures}/queue/queue.js +0 -0
  543. package/dist/{data-structures → cjs/data-structures}/stack/index.d.ts +0 -0
  544. package/dist/{data-structures → cjs/data-structures}/stack/index.js +0 -0
  545. package/dist/{data-structures → cjs/data-structures}/stack/stack.d.ts +0 -0
  546. package/dist/{data-structures → cjs/data-structures}/stack/stack.js +0 -0
  547. package/dist/{data-structures → cjs/data-structures}/tree/index.d.ts +0 -0
  548. package/dist/{data-structures → cjs/data-structures}/tree/index.js +0 -0
  549. package/dist/{data-structures → cjs/data-structures}/tree/tree.d.ts +0 -0
  550. package/dist/{data-structures → cjs/data-structures}/tree/tree.js +0 -0
  551. package/dist/{data-structures → cjs/data-structures}/trie/index.d.ts +0 -0
  552. package/dist/{data-structures → cjs/data-structures}/trie/index.js +0 -0
  553. package/{lib → dist/cjs}/data-structures/trie/trie.d.ts +2 -2
  554. package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  555. package/dist/{index.js → cjs/index.js} +0 -0
  556. package/dist/{interfaces → cjs/interfaces}/binary-tree.d.ts +0 -0
  557. package/dist/{interfaces → cjs/interfaces}/binary-tree.js +0 -0
  558. package/dist/{interfaces → cjs/interfaces}/doubly-linked-list.d.ts +0 -0
  559. package/dist/{interfaces → cjs/interfaces}/doubly-linked-list.js +0 -0
  560. package/dist/{interfaces → cjs/interfaces}/graph.d.ts +0 -0
  561. package/dist/{interfaces → cjs/interfaces}/graph.js +0 -0
  562. package/dist/{interfaces → cjs/interfaces}/heap.d.ts +0 -0
  563. package/dist/{interfaces → cjs/interfaces}/heap.js +0 -0
  564. package/dist/{interfaces → cjs/interfaces}/index.d.ts +0 -0
  565. package/dist/{interfaces → cjs/interfaces}/index.js +0 -0
  566. package/dist/{interfaces → cjs/interfaces}/navigator.d.ts +0 -0
  567. package/dist/{interfaces → cjs/interfaces}/navigator.js +0 -0
  568. package/dist/{interfaces → cjs/interfaces}/priority-queue.d.ts +0 -0
  569. package/dist/{interfaces → cjs/interfaces}/priority-queue.js +0 -0
  570. package/dist/{interfaces → cjs/interfaces}/segment-tree.d.ts +0 -0
  571. package/dist/{interfaces → cjs/interfaces}/segment-tree.js +0 -0
  572. package/dist/{interfaces → cjs/interfaces}/singly-linked-list.d.ts +0 -0
  573. package/dist/{interfaces → cjs/interfaces}/singly-linked-list.js +0 -0
  574. package/dist/{types → cjs/types}/data-structures/binary-tree/avl-tree.d.ts +0 -0
  575. package/dist/{types → cjs/types}/data-structures/binary-tree/avl-tree.js +0 -0
  576. package/dist/{types → cjs/types}/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  577. package/dist/{types → cjs/types}/data-structures/binary-tree/binary-indexed-tree.js +0 -0
  578. package/dist/{types → cjs/types}/data-structures/binary-tree/binary-tree.d.ts +0 -0
  579. package/dist/{types → cjs/types}/data-structures/binary-tree/binary-tree.js +0 -0
  580. package/dist/{types → cjs/types}/data-structures/binary-tree/bst.d.ts +0 -0
  581. package/dist/{types → cjs/types}/data-structures/binary-tree/bst.js +0 -0
  582. package/dist/{types → cjs/types}/data-structures/binary-tree/index.d.ts +0 -0
  583. package/dist/{types → cjs/types}/data-structures/binary-tree/index.js +0 -0
  584. package/dist/{types → cjs/types}/data-structures/binary-tree/rb-tree.d.ts +0 -0
  585. package/dist/{types → cjs/types}/data-structures/binary-tree/rb-tree.js +0 -0
  586. package/dist/{types → cjs/types}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  587. package/dist/{types → cjs/types}/data-structures/binary-tree/segment-tree.js +0 -0
  588. package/dist/{types → cjs/types}/data-structures/binary-tree/tree-multiset.d.ts +0 -0
  589. package/dist/{types → cjs/types}/data-structures/binary-tree/tree-multiset.js +0 -0
  590. package/dist/{types → cjs/types}/data-structures/graph/abstract-graph.d.ts +0 -0
  591. package/dist/{types → cjs/types}/data-structures/graph/abstract-graph.js +0 -0
  592. package/dist/{types → cjs/types}/data-structures/graph/directed-graph.d.ts +0 -0
  593. package/dist/{types → cjs/types}/data-structures/graph/directed-graph.js +0 -0
  594. package/dist/{types → cjs/types}/data-structures/graph/index.d.ts +0 -0
  595. package/dist/{types → cjs/types}/data-structures/graph/index.js +0 -0
  596. package/dist/{types → cjs/types}/data-structures/graph/map-graph.d.ts +0 -0
  597. package/dist/{types → cjs/types}/data-structures/graph/map-graph.js +0 -0
  598. package/dist/{types → cjs/types}/data-structures/graph/undirected-graph.d.ts +0 -0
  599. package/dist/{types → cjs/types}/data-structures/graph/undirected-graph.js +0 -0
  600. package/dist/{types → cjs/types}/data-structures/hash/coordinate-map.d.ts +0 -0
  601. package/dist/{types → cjs/types}/data-structures/hash/coordinate-map.js +0 -0
  602. package/dist/{types → cjs/types}/data-structures/hash/coordinate-set.d.ts +0 -0
  603. package/dist/{types → cjs/types}/data-structures/hash/coordinate-set.js +0 -0
  604. package/dist/{types → cjs/types}/data-structures/hash/hash-map.d.ts +0 -0
  605. package/dist/{types → cjs/types}/data-structures/hash/hash-map.js +0 -0
  606. package/dist/{types → cjs/types}/data-structures/hash/hash-table.d.ts +0 -0
  607. package/dist/{types → cjs/types}/data-structures/hash/hash-table.js +0 -0
  608. package/dist/{types → cjs/types}/data-structures/hash/index.d.ts +0 -0
  609. package/dist/{types → cjs/types}/data-structures/hash/index.js +0 -0
  610. package/dist/{types → cjs/types}/data-structures/hash/tree-map.d.ts +0 -0
  611. package/dist/{types → cjs/types}/data-structures/hash/tree-map.js +0 -0
  612. package/dist/{types → cjs/types}/data-structures/hash/tree-set.d.ts +0 -0
  613. package/dist/{types → cjs/types}/data-structures/hash/tree-set.js +0 -0
  614. package/dist/{types → cjs/types}/data-structures/heap/heap.d.ts +0 -0
  615. package/dist/{types → cjs/types}/data-structures/heap/heap.js +0 -0
  616. package/dist/{types → cjs/types}/data-structures/heap/index.d.ts +0 -0
  617. package/dist/{types → cjs/types}/data-structures/heap/index.js +0 -0
  618. package/dist/{types → cjs/types}/data-structures/heap/max-heap.d.ts +0 -0
  619. package/dist/{types → cjs/types}/data-structures/heap/max-heap.js +0 -0
  620. package/dist/{types → cjs/types}/data-structures/heap/min-heap.d.ts +0 -0
  621. package/dist/{types → cjs/types}/data-structures/heap/min-heap.js +0 -0
  622. package/dist/{types → cjs/types}/data-structures/index.d.ts +0 -0
  623. package/dist/{types → cjs/types}/data-structures/index.js +0 -0
  624. package/dist/{types → cjs/types}/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  625. package/dist/{types → cjs/types}/data-structures/linked-list/doubly-linked-list.js +0 -0
  626. package/dist/{types → cjs/types}/data-structures/linked-list/index.d.ts +0 -0
  627. package/dist/{types → cjs/types}/data-structures/linked-list/index.js +0 -0
  628. package/dist/{types → cjs/types}/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  629. package/dist/{types → cjs/types}/data-structures/linked-list/singly-linked-list.js +0 -0
  630. package/dist/{types → cjs/types}/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  631. package/dist/{types → cjs/types}/data-structures/linked-list/skip-linked-list.js +0 -0
  632. package/dist/{types → cjs/types}/data-structures/matrix/index.d.ts +0 -0
  633. package/dist/{types → cjs/types}/data-structures/matrix/index.js +0 -0
  634. package/dist/{types → cjs/types}/data-structures/matrix/matrix.d.ts +0 -0
  635. package/dist/{types → cjs/types}/data-structures/matrix/matrix.js +0 -0
  636. package/dist/{types → cjs/types}/data-structures/matrix/matrix2d.d.ts +0 -0
  637. package/dist/{types → cjs/types}/data-structures/matrix/matrix2d.js +0 -0
  638. package/dist/{types → cjs/types}/data-structures/matrix/navigator.d.ts +0 -0
  639. package/dist/{types → cjs/types}/data-structures/matrix/navigator.js +0 -0
  640. package/dist/{types → cjs/types}/data-structures/matrix/vector2d.d.ts +0 -0
  641. package/dist/{types → cjs/types}/data-structures/matrix/vector2d.js +0 -0
  642. package/dist/{types → cjs/types}/data-structures/priority-queue/index.d.ts +0 -0
  643. package/dist/{types → cjs/types}/data-structures/priority-queue/index.js +0 -0
  644. package/dist/{types → cjs/types}/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  645. package/dist/{types → cjs/types}/data-structures/priority-queue/max-priority-queue.js +0 -0
  646. package/dist/{types → cjs/types}/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  647. package/dist/{types → cjs/types}/data-structures/priority-queue/min-priority-queue.js +0 -0
  648. package/dist/{types → cjs/types}/data-structures/priority-queue/priority-queue.d.ts +0 -0
  649. package/dist/{types → cjs/types}/data-structures/priority-queue/priority-queue.js +0 -0
  650. package/dist/{types → cjs/types}/data-structures/queue/deque.d.ts +0 -0
  651. package/dist/{types → cjs/types}/data-structures/queue/deque.js +0 -0
  652. package/dist/{types → cjs/types}/data-structures/queue/index.d.ts +0 -0
  653. package/dist/{types → cjs/types}/data-structures/queue/index.js +0 -0
  654. package/dist/{types → cjs/types}/data-structures/queue/queue.d.ts +0 -0
  655. package/dist/{types → cjs/types}/data-structures/queue/queue.js +0 -0
  656. package/dist/{types → cjs/types}/data-structures/stack/index.d.ts +0 -0
  657. package/dist/{types → cjs/types}/data-structures/stack/index.js +0 -0
  658. package/dist/{types → cjs/types}/data-structures/stack/stack.d.ts +0 -0
  659. package/dist/{types → cjs/types}/data-structures/stack/stack.js +0 -0
  660. package/dist/{types → cjs/types}/data-structures/tree/index.d.ts +0 -0
  661. package/dist/{types → cjs/types}/data-structures/tree/index.js +0 -0
  662. package/dist/{types → cjs/types}/data-structures/tree/tree.d.ts +0 -0
  663. package/dist/{types → cjs/types}/data-structures/tree/tree.js +0 -0
  664. package/dist/{types → cjs/types}/data-structures/trie/index.d.ts +0 -0
  665. package/dist/{types → cjs/types}/data-structures/trie/index.js +0 -0
  666. package/dist/{types → cjs/types}/data-structures/trie/trie.d.ts +0 -0
  667. package/dist/{types → cjs/types}/data-structures/trie/trie.js +0 -0
  668. package/dist/{types → cjs/types}/helpers.d.ts +0 -0
  669. package/dist/{types → cjs/types}/helpers.js +0 -0
  670. package/dist/{types → cjs/types}/index.d.ts +0 -0
  671. package/dist/{types → cjs/types}/index.js +0 -0
  672. package/dist/{types → cjs/types}/utils/index.d.ts +0 -0
  673. package/dist/{types → cjs/types}/utils/index.js +0 -0
  674. package/dist/{types → cjs/types}/utils/utils.d.ts +0 -0
  675. package/dist/{types → cjs/types}/utils/utils.js +0 -0
  676. package/dist/{types → cjs/types}/utils/validate-type.d.ts +0 -0
  677. package/dist/{types → cjs/types}/utils/validate-type.js +0 -0
  678. package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  679. package/dist/{utils → cjs/utils}/index.js +0 -0
  680. package/dist/{utils → cjs/utils}/utils.d.ts +0 -0
  681. package/dist/{utils → cjs/utils}/utils.js +0 -0
  682. package/{lib → dist/mjs}/data-structures/binary-tree/avl-tree.d.ts +9 -9
  683. package/{lib → dist/mjs}/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  684. package/{lib → dist/mjs}/data-structures/binary-tree/binary-tree.d.ts +31 -31
  685. package/{lib → dist/mjs}/data-structures/binary-tree/bst.d.ts +0 -0
  686. package/{lib → dist/mjs}/data-structures/binary-tree/index.d.ts +0 -0
  687. package/{lib → dist/mjs}/data-structures/binary-tree/rb-tree.d.ts +1 -1
  688. package/{lib → dist/mjs}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  689. package/{lib → dist/mjs}/data-structures/binary-tree/tree-multiset.d.ts +9 -9
  690. package/{lib → dist/mjs}/data-structures/graph/abstract-graph.d.ts +0 -0
  691. package/{lib → dist/mjs}/data-structures/graph/directed-graph.d.ts +0 -0
  692. package/{lib → dist/mjs}/data-structures/graph/index.d.ts +0 -0
  693. package/{lib → dist/mjs}/data-structures/graph/map-graph.d.ts +0 -0
  694. package/{lib → dist/mjs}/data-structures/graph/undirected-graph.d.ts +0 -0
  695. package/{lib → dist/mjs}/data-structures/hash/coordinate-map.d.ts +0 -0
  696. package/{lib → dist/mjs}/data-structures/hash/coordinate-set.d.ts +0 -0
  697. package/dist/{data-structures → mjs/data-structures}/hash/hash-map.d.ts +25 -25
  698. package/dist/{data-structures → mjs/data-structures}/hash/hash-table.d.ts +34 -34
  699. package/{lib → dist/mjs}/data-structures/hash/index.d.ts +0 -0
  700. package/{lib → dist/mjs}/data-structures/hash/tree-map.d.ts +0 -0
  701. package/{lib → dist/mjs}/data-structures/hash/tree-set.d.ts +0 -0
  702. package/{lib → dist/mjs}/data-structures/heap/heap.d.ts +66 -66
  703. package/{lib → dist/mjs}/data-structures/heap/index.d.ts +0 -0
  704. package/{lib → dist/mjs}/data-structures/heap/max-heap.d.ts +0 -0
  705. package/{lib → dist/mjs}/data-structures/heap/min-heap.d.ts +0 -0
  706. package/{lib → dist/mjs}/data-structures/index.d.ts +0 -0
  707. package/dist/{data-structures → mjs/data-structures}/linked-list/doubly-linked-list.d.ts +1 -1
  708. package/{lib → dist/mjs}/data-structures/linked-list/index.d.ts +0 -0
  709. package/{lib → dist/mjs}/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  710. package/{lib → dist/mjs}/data-structures/linked-list/skip-linked-list.d.ts +17 -17
  711. package/{lib → dist/mjs}/data-structures/matrix/index.d.ts +0 -0
  712. package/{lib → dist/mjs}/data-structures/matrix/matrix.d.ts +0 -0
  713. package/dist/{data-structures → mjs/data-structures}/matrix/matrix2d.d.ts +7 -7
  714. package/{lib → dist/mjs}/data-structures/matrix/navigator.d.ts +0 -0
  715. package/{lib → dist/mjs}/data-structures/matrix/vector2d.d.ts +0 -0
  716. package/{lib → dist/mjs}/data-structures/priority-queue/index.d.ts +0 -0
  717. package/{lib → dist/mjs}/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  718. package/{lib → dist/mjs}/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  719. package/{lib → dist/mjs}/data-structures/priority-queue/priority-queue.d.ts +0 -0
  720. package/{lib → dist/mjs}/data-structures/queue/deque.d.ts +0 -0
  721. package/{lib → dist/mjs}/data-structures/queue/index.d.ts +0 -0
  722. package/{lib → dist/mjs}/data-structures/queue/queue.d.ts +0 -0
  723. package/{lib → dist/mjs}/data-structures/stack/index.d.ts +0 -0
  724. package/{lib → dist/mjs}/data-structures/stack/stack.d.ts +0 -0
  725. package/{lib → dist/mjs}/data-structures/tree/index.d.ts +0 -0
  726. package/{lib → dist/mjs}/data-structures/tree/tree.d.ts +0 -0
  727. package/{lib → dist/mjs}/data-structures/trie/index.d.ts +0 -0
  728. package/dist/{data-structures → mjs/data-structures}/trie/trie.d.ts +2 -2
  729. /package/{lib → dist/mjs}/index.d.ts +0 -0
  730. /package/{lib → dist/mjs}/interfaces/binary-tree.d.ts +0 -0
  731. /package/{lib → dist/mjs}/interfaces/doubly-linked-list.d.ts +0 -0
  732. /package/{lib → dist/mjs}/interfaces/graph.d.ts +0 -0
  733. /package/{lib → dist/mjs}/interfaces/heap.d.ts +0 -0
  734. /package/{lib → dist/mjs}/interfaces/index.d.ts +0 -0
  735. /package/{lib → dist/mjs}/interfaces/navigator.d.ts +0 -0
  736. /package/{lib → dist/mjs}/interfaces/priority-queue.d.ts +0 -0
  737. /package/{lib → dist/mjs}/interfaces/segment-tree.d.ts +0 -0
  738. /package/{lib → dist/mjs}/interfaces/singly-linked-list.d.ts +0 -0
  739. /package/{lib → dist/mjs}/types/data-structures/binary-tree/avl-tree.d.ts +0 -0
  740. /package/{lib → dist/mjs}/types/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  741. /package/{lib → dist/mjs}/types/data-structures/binary-tree/binary-tree.d.ts +0 -0
  742. /package/{lib → dist/mjs}/types/data-structures/binary-tree/bst.d.ts +0 -0
  743. /package/{lib → dist/mjs}/types/data-structures/binary-tree/index.d.ts +0 -0
  744. /package/{lib → dist/mjs}/types/data-structures/binary-tree/rb-tree.d.ts +0 -0
  745. /package/{lib → dist/mjs}/types/data-structures/binary-tree/segment-tree.d.ts +0 -0
  746. /package/{lib → dist/mjs}/types/data-structures/binary-tree/tree-multiset.d.ts +0 -0
  747. /package/{lib → dist/mjs}/types/data-structures/graph/abstract-graph.d.ts +0 -0
  748. /package/{lib → dist/mjs}/types/data-structures/graph/directed-graph.d.ts +0 -0
  749. /package/{lib → dist/mjs}/types/data-structures/graph/index.d.ts +0 -0
  750. /package/{lib → dist/mjs}/types/data-structures/graph/map-graph.d.ts +0 -0
  751. /package/{lib → dist/mjs}/types/data-structures/graph/undirected-graph.d.ts +0 -0
  752. /package/{lib → dist/mjs}/types/data-structures/hash/coordinate-map.d.ts +0 -0
  753. /package/{lib → dist/mjs}/types/data-structures/hash/coordinate-set.d.ts +0 -0
  754. /package/{lib → dist/mjs}/types/data-structures/hash/hash-map.d.ts +0 -0
  755. /package/{lib → dist/mjs}/types/data-structures/hash/hash-table.d.ts +0 -0
  756. /package/{lib → dist/mjs}/types/data-structures/hash/index.d.ts +0 -0
  757. /package/{lib → dist/mjs}/types/data-structures/hash/tree-map.d.ts +0 -0
  758. /package/{lib → dist/mjs}/types/data-structures/hash/tree-set.d.ts +0 -0
  759. /package/{lib → dist/mjs}/types/data-structures/heap/heap.d.ts +0 -0
  760. /package/{lib → dist/mjs}/types/data-structures/heap/index.d.ts +0 -0
  761. /package/{lib → dist/mjs}/types/data-structures/heap/max-heap.d.ts +0 -0
  762. /package/{lib → dist/mjs}/types/data-structures/heap/min-heap.d.ts +0 -0
  763. /package/{lib → dist/mjs}/types/data-structures/index.d.ts +0 -0
  764. /package/{lib → dist/mjs}/types/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  765. /package/{lib → dist/mjs}/types/data-structures/linked-list/index.d.ts +0 -0
  766. /package/{lib → dist/mjs}/types/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  767. /package/{lib → dist/mjs}/types/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  768. /package/{lib → dist/mjs}/types/data-structures/matrix/index.d.ts +0 -0
  769. /package/{lib → dist/mjs}/types/data-structures/matrix/matrix.d.ts +0 -0
  770. /package/{lib → dist/mjs}/types/data-structures/matrix/matrix2d.d.ts +0 -0
  771. /package/{lib → dist/mjs}/types/data-structures/matrix/navigator.d.ts +0 -0
  772. /package/{lib → dist/mjs}/types/data-structures/matrix/vector2d.d.ts +0 -0
  773. /package/{lib → dist/mjs}/types/data-structures/priority-queue/index.d.ts +0 -0
  774. /package/{lib → dist/mjs}/types/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  775. /package/{lib → dist/mjs}/types/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  776. /package/{lib → dist/mjs}/types/data-structures/priority-queue/priority-queue.d.ts +0 -0
  777. /package/{lib → dist/mjs}/types/data-structures/queue/deque.d.ts +0 -0
  778. /package/{lib → dist/mjs}/types/data-structures/queue/index.d.ts +0 -0
  779. /package/{lib → dist/mjs}/types/data-structures/queue/queue.d.ts +0 -0
  780. /package/{lib → dist/mjs}/types/data-structures/stack/index.d.ts +0 -0
  781. /package/{lib → dist/mjs}/types/data-structures/stack/stack.d.ts +0 -0
  782. /package/{lib → dist/mjs}/types/data-structures/tree/index.d.ts +0 -0
  783. /package/{lib → dist/mjs}/types/data-structures/tree/tree.d.ts +0 -0
  784. /package/{lib → dist/mjs}/types/data-structures/trie/index.d.ts +0 -0
  785. /package/{lib → dist/mjs}/types/data-structures/trie/trie.d.ts +0 -0
  786. /package/{lib → dist/mjs}/types/helpers.d.ts +0 -0
  787. /package/{lib → dist/mjs}/types/index.d.ts +0 -0
  788. /package/{lib → dist/mjs}/types/utils/index.d.ts +0 -0
  789. /package/{lib → dist/mjs}/types/utils/utils.d.ts +0 -0
  790. /package/{lib → dist/mjs}/types/utils/validate-type.d.ts +0 -0
  791. /package/{lib → dist/mjs}/utils/index.d.ts +0 -0
  792. /package/{lib → dist/mjs}/utils/utils.d.ts +0 -0
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CP = void 0;
4
+ var CP;
5
+ (function (CP) {
6
+ CP["lt"] = "lt";
7
+ CP["eq"] = "eq";
8
+ CP["gt"] = "gt";
9
+ })(CP || (exports.CP = CP = {}));
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./data-structures"), exports);
18
+ __exportStar(require("./helpers"), exports);
19
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./utils"), exports);
18
+ __exportStar(require("./validate-type"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMSB = exports.trampolineAsync = exports.trampoline = exports.toThunk = exports.isThunk = exports.THUNK_SYMBOL = exports.arrayRemove = exports.uuidV4 = void 0;
4
+ const uuidV4 = function () {
5
+ return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {
6
+ const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
7
+ return v.toString(16);
8
+ });
9
+ };
10
+ exports.uuidV4 = uuidV4;
11
+ const arrayRemove = function (array, predicate) {
12
+ let i = -1, len = array ? array.length : 0;
13
+ const result = [];
14
+ while (++i < len) {
15
+ const value = array[i];
16
+ if (predicate(value, i, array)) {
17
+ result.push(value);
18
+ Array.prototype.splice.call(array, i--, 1);
19
+ len--;
20
+ }
21
+ }
22
+ return result;
23
+ };
24
+ exports.arrayRemove = arrayRemove;
25
+ exports.THUNK_SYMBOL = Symbol('thunk');
26
+ const isThunk = (fnOrValue) => {
27
+ return typeof fnOrValue === 'function' && fnOrValue.__THUNK__ === exports.THUNK_SYMBOL;
28
+ };
29
+ exports.isThunk = isThunk;
30
+ const toThunk = (fn) => {
31
+ const thunk = () => fn();
32
+ thunk.__THUNK__ = exports.THUNK_SYMBOL;
33
+ return thunk;
34
+ };
35
+ exports.toThunk = toThunk;
36
+ const trampoline = (fn) => {
37
+ const cont = (...args) => (0, exports.toThunk)(() => fn(...args));
38
+ return Object.assign((...args) => {
39
+ let result = fn(...args);
40
+ while ((0, exports.isThunk)(result) && typeof result === 'function') {
41
+ result = result();
42
+ }
43
+ return result;
44
+ }, { cont });
45
+ };
46
+ exports.trampoline = trampoline;
47
+ const trampolineAsync = (fn) => {
48
+ const cont = (...args) => (0, exports.toThunk)(() => fn(...args));
49
+ return Object.assign(async (...args) => {
50
+ let result = await fn(...args);
51
+ while ((0, exports.isThunk)(result) && typeof result === 'function') {
52
+ result = await result();
53
+ }
54
+ return result;
55
+ }, { cont });
56
+ };
57
+ exports.trampolineAsync = trampolineAsync;
58
+ const getMSB = (value) => {
59
+ if (value <= 0) {
60
+ return 0;
61
+ }
62
+ return 1 << (31 - Math.clz32(value));
63
+ };
64
+ exports.getMSB = getMSB;
@@ -0,0 +1,27 @@
1
+ "use strict";var dataStructureTyped=(()=>{var ae=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var We=Object.prototype.hasOwnProperty;var Xe=(a,e)=>{for(var t in e)ae(a,t,{get:e[t],enumerable:!0})},Qe=(a,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ge(e))!We.call(a,i)&&i!==t&&ae(a,i,{get:()=>e[i],enumerable:!(r=Ye(e,i))||r.enumerable});return a};var Je=a=>Qe(ae({},"__esModule",{value:!0}),a);var $e={};Xe($e,{AVLTree:()=>X,AVLTreeNode:()=>H,AbstractEdge:()=>L,AbstractGraph:()=>C,AbstractVertex:()=>V,ArrayDeque:()=>xe,BST:()=>I,BSTNode:()=>M,BinaryIndexedTree:()=>Ce,BinaryTree:()=>W,BinaryTreeNode:()=>R,CP:()=>ne,Character:()=>le,CoordinateMap:()=>ue,CoordinateSet:()=>de,Deque:()=>_e,DirectedEdge:()=>A,DirectedGraph:()=>Y,DirectedVertex:()=>F,DoublyLinkedList:()=>P,DoublyLinkedListNode:()=>k,FamilyPosition:()=>ie,FibonacciHeap:()=>we,FibonacciHeapNode:()=>Z,HashMap:()=>pe,HashTable:()=>he,HashTableNode:()=>q,Heap:()=>K,IterationType:()=>G,LinkedListQueue:()=>ye,MapEdge:()=>re,MapGraph:()=>Le,MapVertex:()=>te,Matrix2D:()=>Oe,MatrixNTI2D:()=>ze,MaxHeap:()=>ke,MaxPriorityQueue:()=>Ke,MinHeap:()=>Be,MinPriorityQueue:()=>Me,Navigator:()=>qe,ObjectDeque:()=>be,PriorityQueue:()=>S,Queue:()=>B,RBColor:()=>Re,RBTree:()=>Ie,RBTreeNode:()=>se,SegmentTree:()=>Fe,SegmentTreeNode:()=>z,SinglyLinkedList:()=>j,SinglyLinkedListNode:()=>w,SkipList:()=>ge,SkipListNode:()=>U,Stack:()=>me,THUNK_SYMBOL:()=>Ee,TopologicalProperty:()=>Ue,TreeMap:()=>fe,TreeMultiset:()=>De,TreeMultisetNode:()=>O,TreeNode:()=>Ae,TreeSet:()=>ce,Trie:()=>je,TrieNode:()=>Q,UndirectedEdge:()=>ee,UndirectedGraph:()=>Se,UndirectedVertex:()=>$,Vector2D:()=>oe,arrayRemove:()=>v,getMSB:()=>ve,isThunk:()=>Ve,toThunk:()=>Te,trampoline:()=>J,trampolineAsync:()=>Ze,uuidV4:()=>Ne});var q=class{key;val;next;constructor(e,t){this.key=e,this.val=t,this.next=null}},he=class a{static DEFAULT_CAPACITY=16;static LOAD_FACTOR=.75;constructor(e=a.DEFAULT_CAPACITY,t){this._hashFn=t||this._defaultHashFn,this._capacity=Math.max(e,a.DEFAULT_CAPACITY),this._size=0,this._buckets=new Array(this._capacity).fill(null)}_capacity;get capacity(){return this._capacity}set capacity(e){this._capacity=e}_size;get size(){return this._size}_buckets;get buckets(){return this._buckets}set buckets(e){this._buckets=e}_hashFn;get hashFn(){return this._hashFn}set hashFn(e){this._hashFn=e}set(e,t){let r=this._hash(e),i=new q(e,t);if(!this._buckets[r])this._buckets[r]=i;else{let n=this._buckets[r];for(;n;){if(n.key===e){n.val=t;return}if(!n.next)break;n=n.next}n.next=i}this._size++,this._size/this._capacity>=a.LOAD_FACTOR&&this._expand()}get(e){let t=this._hash(e),r=this._buckets[t];for(;r;){if(r.key===e)return r.val;r=r.next}}delete(e){let t=this._hash(e),r=this._buckets[t],i=null;for(;r;){if(r.key===e){i?i.next=r.next:this._buckets[t]=r.next,this._size--,r.next=null;return}i=r,r=r.next}}_defaultHashFn(e){return(typeof e=="string"?this._murmurStringHashFn(e):this._objectHash(e))%this._capacity}_multiplicativeStringHashFn(e){let t=String(e),r=0;for(let i=0;i<t.length;i++){let n=t.charCodeAt(i),s=.618033988749895,o=1<<30;r=(r*s+n)%o}return Math.abs(r)}_murmurStringHashFn(e){let t=String(e),i=0;for(let n=0;n<t.length;n++){let s=t.charCodeAt(n);i=(i^s)*1540483477,i=(i^i>>>15)*668265261,i=i^i>>>15}return Math.abs(i)}_hash(e){return this.hashFn(e)}_stringHash(e){let t=0;for(let r=0;r<e.length;r++)t=t*31+e.charCodeAt(r)&4294967295;return t}_objectHash(e){return this._stringHash(JSON.stringify(e))}_expand(){let e=this._capacity*2,t=new Array(e).fill(null);for(let r of this._buckets){let i=r;for(;i;){let n=this._hash(i.key),s=new q(i.key,i.val);if(!t[n])t[n]=s;else{let o=t[n];for(;o.next;)o=o.next;o.next=s}i=i.next}}this._buckets=t,this._capacity=e}};var ue=class extends Map{constructor(e){super(),e!==void 0&&(this._joint=e)}_joint="_";get joint(){return this._joint}has(e){return super.has(e.join(this._joint))}set(e,t){return super.set(e.join(this._joint),t)}get(e){return super.get(e.join(this._joint))}delete(e){return super.delete(e.join(this._joint))}_setJoint(e){this._joint=e}};var de=class extends Set{constructor(e){super(),e!==void 0&&(this._joint=e)}_joint="_";get joint(){return this._joint}has(e){return super.has(e.join(this._joint))}add(e){return super.add(e.join(this._joint))}delete(e){return super.delete(e.join(this._joint))}_setJoint(e){this._joint=e}};var fe=class{};var ce=class{};var pe=class{constructor(e=16,t=.75,r){this._initialCapacity=e,this._loadFactor=t,this._capacityMultiplier=2,this._size=0,this._table=new Array(e),this._hashFn=r||(i=>{let n=String(i),s=0;for(let o=0;o<n.length;o++)s+=n.charCodeAt(o);return s%this.table.length})}_initialCapacity;get initialCapacity(){return this._initialCapacity}set initialCapacity(e){this._initialCapacity=e}_loadFactor;get loadFactor(){return this._loadFactor}set loadFactor(e){this._loadFactor=e}_capacityMultiplier;get capacityMultiplier(){return this._capacityMultiplier}set capacityMultiplier(e){this._capacityMultiplier=e}_size;get size(){return this._size}set size(e){this._size=e}_table;get table(){return this._table}set table(e){this._table=e}_hashFn;get hashFn(){return this._hashFn}set hashFn(e){this._hashFn=e}set(e,t){this.size/this.table.length>=this.loadFactor&&this.resizeTable(this.table.length*this.capacityMultiplier);let i=this._hash(e);this.table[i]||(this.table[i]=[]);for(let n=0;n<this.table[i].length;n++)if(this.table[i][n][0]===e){this.table[i][n][1]=t;return}this.table[i].push([e,t]),this.size++}get(e){let t=this._hash(e);if(this.table[t]){for(let[r,i]of this.table[t])if(r===e)return i}}delete(e){let t=this._hash(e);if(this.table[t]){for(let r=0;r<this.table[t].length;r++)if(this.table[t][r][0]===e){this.table[t].splice(r,1),this.size--,this.size/this.table.length<this.loadFactor/this.capacityMultiplier&&this.resizeTable(this.table.length/this.capacityMultiplier);return}}}*entries(){for(let e of this.table)if(e)for(let[t,r]of e)yield[t,r]}[Symbol.iterator](){return this.entries()}clear(){this.size=0,this.table=new Array(this.initialCapacity)}isEmpty(){return this.size===0}_hash(e){return this._hashFn(e)}resizeTable(e){let t=new Array(e);for(let r of this._table)if(r)for(let[i,n]of r){let s=this._hash(i)%e;t[s]||(t[s]=[]),t[s].push([i,n])}this._table=t}};var w=class{constructor(e){this._val=e,this._next=null}_val;get val(){return this._val}set val(e){this._val=e}_next;get next(){return this._next}set next(e){this._next=e}},j=class a{constructor(){this._head=null,this._tail=null,this._length=0}_head;get head(){return this._head}set head(e){this._head=e}_tail;get tail(){return this._tail}set tail(e){this._tail=e}_length;get length(){return this._length}static fromArray(e){let t=new a;for(let r of e)t.push(r);return t}getLength(){return this._length}push(e){let t=new w(e);this.head?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),this._length++}pop(){if(!this.head)return;if(this.head===this.tail){let r=this.head.val;return this.head=null,this.tail=null,this._length--,r}let e=this.head;for(;e.next!==this.tail;)e=e.next;let t=this.tail.val;return e.next=null,this.tail=e,this._length--,t}shift(){if(!this.head)return;let e=this.head;return this.head=this.head.next,this._length--,e.val}unshift(e){let t=new w(e);this.head?(t.next=this.head,this.head=t):(this.head=t,this.tail=t),this._length++}getAt(e){if(e<0||e>=this.length)return;let t=this.head;for(let r=0;r<e;r++)t=t.next;return t.val}getNodeAt(e){let t=this.head;for(let r=0;r<e;r++)t=t.next;return t}deleteAt(e){if(e<0||e>=this.length)return;if(e===0)return this.shift();if(e===this.length-1)return this.pop();let t=this.getNodeAt(e-1),r=t.next;return t.next=r.next,this._length--,r.val}delete(e){let t;e instanceof w?t=e.val:t=e;let r=this.head,i=null;for(;r;){if(r.val===t)return i===null?(this.head=r.next,r===this.tail&&(this.tail=null)):(i.next=r.next,r===this.tail&&(this.tail=i)),this._length--,!0;i=r,r=r.next}return!1}insertAt(e,t){if(e<0||e>this.length)return!1;if(e===0)return this.unshift(t),!0;if(e===this.length)return this.push(t),!0;let r=new w(t),i=this.getNodeAt(e-1);return r.next=i.next,i.next=r,this._length++,!0}isEmpty(){return this.length===0}clear(){this._head=null,this._tail=null,this._length=0}toArray(){let e=[],t=this.head;for(;t;)e.push(t.val),t=t.next;return e}reverse(){if(!this.head||this.head===this.tail)return;let e=null,t=this.head,r=null;for(;t;)r=t.next,t.next=e,e=t,t=r;[this.head,this.tail]=[this.tail,this.head]}find(e){let t=this.head;for(;t;){if(e(t.val))return t.val;t=t.next}return null}indexOf(e){let t=0,r=this.head;for(;r;){if(r.val===e)return t;t++,r=r.next}return-1}findNode(e){let t=this.head;for(;t;){if(t.val===e)return t;t=t.next}return null}insertBefore(e,t){if(!this.head)return!1;let r;if(e instanceof w?r=e.val:r=e,this.head.val===r)return this.unshift(t),!0;let i=this.head;for(;i.next;){if(i.next.val===r){let n=new w(t);return n.next=i.next,i.next=n,this._length++,!0}i=i.next}return!1}insertAfter(e,t){let r;if(e instanceof w?r=e:r=this.findNode(e),r){let i=new w(t);return i.next=r.next,r.next=i,r===this.tail&&(this.tail=i),this._length++,!0}return!1}countOccurrences(e){let t=0,r=this.head;for(;r;)r.val===e&&t++,r=r.next;return t}*[Symbol.iterator](){let e=this.head;for(;e;)yield e.val,e=e.next}};var k=class{constructor(e){this._val=e,this._next=null,this._prev=null}_val;get val(){return this._val}set val(e){this._val=e}_next;get next(){return this._next}set next(e){this._next=e}_prev;get prev(){return this._prev}set prev(e){this._prev=e}},P=class a{constructor(){this._head=null,this._tail=null,this._length=0}_head;get head(){return this._head}set head(e){this._head=e}_tail;get tail(){return this._tail}set tail(e){this._tail=e}_length;get length(){return this._length}get size(){return this.length}static fromArray(e){let t=new a;for(let r of e)t.push(r);return t}push(e){let t=new k(e);this.head?(t.prev=this.tail,this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),this._length++}addLast(e){this.push(e)}pop(){if(!this.tail)return;let e=this.tail;return this.head===this.tail?(this.head=null,this.tail=null):(this.tail=e.prev,this.tail.next=null),this._length--,e.val}pollLast(){return this.pop()}shift(){if(!this.head)return;let e=this.head;return this.head===this.tail?(this.head=null,this.tail=null):(this.head=e.next,this.head.prev=null),this._length--,e.val}pollFirst(){return this.shift()}unshift(e){let t=new k(e);this.head?(t.next=this.head,this.head.prev=t,this.head=t):(this.head=t,this.tail=t),this._length++}addFirst(e){this.unshift(e)}peekFirst(){return this.head?.val}peekLast(){return this.tail?.val}getAt(e){if(e<0||e>=this.length)return;let t=this.head;for(let r=0;r<e;r++)t=t.next;return t.val}getNodeAt(e){if(e<0||e>=this.length)return null;let t=this.head;for(let r=0;r<e;r++)t=t.next;return t}findNode(e){let t=this.head;for(;t;){if(t.val===e)return t;t=t.next}return null}insertAt(e,t){if(e<0||e>this.length)return!1;if(e===0)return this.unshift(t),!0;if(e===this.length)return this.push(t),!0;let r=new k(t),i=this.getNodeAt(e-1),n=i.next;return r.prev=i,r.next=n,i.next=r,n.prev=r,this._length++,!0}deleteAt(e){if(e<0||e>=this.length)return;if(e===0)return this.shift();if(e===this.length-1)return this.pop();let t=this.getNodeAt(e),r=t.prev,i=t.next;return r.next=i,i.prev=r,this._length--,t.val}delete(e){let t;if(e instanceof k?t=e:t=this.findNode(e),t){if(t===this.head)this.shift();else if(t===this.tail)this.pop();else{let r=t.prev,i=t.next;r.next=i,i.prev=r,this._length--}return!0}return!1}toArray(){let e=[],t=this.head;for(;t;)e.push(t.val),t=t.next;return e}isEmpty(){return this.length===0}clear(){this._head=null,this._tail=null,this._length=0}find(e){let t=this.head;for(;t;){if(e(t.val))return t.val;t=t.next}return null}indexOf(e){let t=0,r=this.head;for(;r;){if(r.val===e)return t;t++,r=r.next}return-1}findLast(e){let t=this.tail;for(;t;){if(e(t.val))return t.val;t=t.prev}return null}toArrayReverse(){let e=[],t=this.tail;for(;t;)e.push(t.val),t=t.prev;return e}reverse(){let e=this.head;for([this.head,this.tail]=[this.tail,this.head];e;){let t=e.next;[e.prev,e.next]=[e.next,e.prev],e=t}}forEach(e){let t=this.head,r=0;for(;t;)e(t.val,r),t=t.next,r++}map(e){let t=new a,r=this.head;for(;r;)t.push(e(r.val)),r=r.next;return t}filter(e){let t=new a,r=this.head;for(;r;)e(r.val)&&t.push(r.val),r=r.next;return t}reduce(e,t){let r=t,i=this.head;for(;i;)r=e(r,i.val),i=i.next;return r}insertAfter(e,t){let r;if(e instanceof k?r=e:r=this.findNode(e),r){let i=new k(t);return i.next=r.next,r.next&&(r.next.prev=i),i.prev=r,r.next=i,r===this.tail&&(this.tail=i),this._length++,!0}return!1}insertBefore(e,t){let r;if(e instanceof k?r=e:r=this.findNode(e),r){let i=new k(t);return i.prev=r.prev,r.prev&&(r.prev.next=i),i.next=r,r.prev=i,r===this.head&&(this.head=i),this._length++,!0}return!1}};var U=class{key;value;forward;constructor(e,t,r){this.key=e,this.value=t,this.forward=new Array(r)}},ge=class{constructor(e=16,t=.5){this._head=new U(null,null,e),this._level=0,this._maxLevel=e,this._probability=t}_head;get head(){return this._head}set head(e){this._head=e}_level;get level(){return this._level}set level(e){this._level=e}_maxLevel;get maxLevel(){return this._maxLevel}set maxLevel(e){this._maxLevel=e}_probability;get probability(){return this._probability}set probability(e){this._probability=e}add(e,t){let r=new U(e,t,this.randomLevel()),i=new Array(this.maxLevel).fill(this.head),n=this.head;for(let s=this.level-1;s>=0;s--){for(;n.forward[s]&&n.forward[s].key<e;)n=n.forward[s];i[s]=n}for(let s=0;s<r.forward.length;s++)r.forward[s]=i[s].forward[s],i[s].forward[s]=r;r.forward[0]!==null&&(this.level=Math.max(this.level,r.forward.length))}get(e){let t=this.head;for(let r=this.level-1;r>=0;r--)for(;t.forward[r]&&t.forward[r].key<e;)t=t.forward[r];if(t=t.forward[0],t&&t.key===e)return t.value}delete(e){let t=new Array(this.maxLevel).fill(this.head),r=this.head;for(let i=this.level-1;i>=0;i--){for(;r.forward[i]&&r.forward[i].key<e;)r=r.forward[i];t[i]=r}if(r=r.forward[0],r&&r.key===e){for(let i=0;i<this.level&&t[i].forward[i]===r;i++)t[i].forward[i]=r.forward[i];for(;this.level>0&&this.head.forward[this.level-1]===null;)this.level--;return!0}return!1}randomLevel(){let e=1;for(;Math.random()<this.probability&&e<this.maxLevel;)e++;return e}};var me=class a{_elements;constructor(e){this._elements=Array.isArray(e)?e:[]}static fromArray(e){return new a(e)}isEmpty(){return this._elements.length===0}size(){return this._elements.length}peek(){return this.isEmpty()?null:this._elements[this._elements.length-1]}push(e){return this._elements.push(e),this}pop(){return this.isEmpty()?null:this._elements.pop()||null}toArray(){return this._elements.slice()}clear(){this._elements=[]}clone(){return new a(this._elements.slice())}};var ye=class extends j{enqueue(e){this.push(e)}dequeue(){return this.shift()}peek(){return this.head?.val}},B=class a{constructor(e){this._nodes=e||[],this._offset=0}_nodes;get nodes(){return this._nodes}set nodes(e){this._nodes=e}_offset;get offset(){return this._offset}set offset(e){this._offset=e}get size(){return this.nodes.length-this.offset}static fromArray(e){return new a(e)}push(e){return this.nodes.push(e),this}shift(){if(this.size===0)return;let e=this.peek();return this.offset+=1,this.offset*2<this.nodes.length||(this.nodes=this.nodes.slice(this.offset),this.offset=0),e}peek(){return this.size>0?this.nodes[this.offset]:void 0}peekLast(){return this.size>0?this.nodes[this.nodes.length-1]:void 0}enqueue(e){this.push(e)}dequeue(){return this.shift()}getAt(e){return this.nodes[e]}isEmpty(){return this.size===0}toArray(){return this.nodes.slice(this.offset)}clear(){this.nodes=[],this.offset=0}clone(){return new a(this.nodes.slice(this.offset))}*[Symbol.iterator](){for(let e of this.nodes)yield e}};var _e=class extends P{},be=class{constructor(e){e!==void 0&&(this._capacity=e)}_nodes={};get nodes(){return this._nodes}_capacity=Number.MAX_SAFE_INTEGER;get capacity(){return this._capacity}set capacity(e){this._capacity=e}_first=-1;get first(){return this._first}set first(e){this._first=e}_last=-1;get last(){return this._last}set last(e){this._last=e}_size=0;get size(){return this._size}addFirst(e){if(this._size===0){let t=Math.floor(this._capacity/2);this._first=t,this._last=t}else this._first--;this._nodes[this._first]=e,this._size++}addLast(e){if(this._size===0){let t=Math.floor(this._capacity/2);this._first=t,this._last=t}else this._last++;this._nodes[this._last]=e,this._size++}pollFirst(){if(!this._size)return;let e=this.peekFirst();return delete this._nodes[this._first],this._first++,this._size--,e}peekFirst(){if(this._size)return this._nodes[this._first]}pollLast(){if(!this._size)return;let e=this.peekLast();return delete this._nodes[this._last],this._last--,this._size--,e}peekLast(){if(this._size)return this._nodes[this._last]}get(e){return this._nodes[this._first+e]||null}isEmpty(){return this._size<=0}_seNodes(e){this._nodes=e}_setSize(e){this._size=e}},xe=class{_nodes=[];get size(){return this._nodes.length}addLast(e){return this._nodes.push(e)}pollLast(){return this._nodes.pop()??null}pollFirst(){return this._nodes.shift()??null}addFirst(e){return this._nodes.unshift(e)}peekFirst(){return this._nodes[0]??null}peekLast(){return this._nodes[this._nodes.length-1]??null}get(e){return this._nodes[e]??null}set(e,t){return this._nodes[e]=t}insert(e,t){return this._nodes.splice(e,0,t)}delete(e){return this._nodes.splice(e,1)}isEmpty(){return this._nodes.length===0}};var Ne=function(){return"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g,function(a){let e=Math.random()*16|0;return(a=="x"?e:e&3|8).toString(16)})},v=function(a,e){let t=-1,r=a?a.length:0,i=[];for(;++t<r;){let n=a[t];e(n,t,a)&&(i.push(n),Array.prototype.splice.call(a,t--,1),r--)}return i},Ee=Symbol("thunk"),Ve=a=>typeof a=="function"&&a.__THUNK__===Ee,Te=a=>{let e=()=>a();return e.__THUNK__=Ee,e},J=a=>Object.assign((...t)=>{let r=a(...t);for(;Ve(r)&&typeof r=="function";)r=r();return r},{cont:(...t)=>Te(()=>a(...t))}),Ze=a=>Object.assign(async(...t)=>{let r=await a(...t);for(;Ve(r)&&typeof r=="function";)r=await r();return r},{cont:(...t)=>Te(()=>a(...t))}),ve=a=>a<=0?0:1<<31-Math.clz32(a);var K=class a{nodes=[];comparator;constructor(e){this.comparator=e}get size(){return this.nodes.length}get leaf(){return this.nodes[this.size-1]??void 0}static heapify(e,t){let r=new a(t);return r.nodes=[...e],r.fix(),r}add(e){return this.push(e)}push(e){return this.nodes.push(e),this.bubbleUp(this.nodes.length-1),this}poll(){if(this.nodes.length===0)return;if(this.nodes.length===1)return this.nodes.pop();let e=this.nodes[0];return this.nodes[0]=this.nodes.pop(),this.sinkDown(0),e}pop(){return this.poll()}peek(){if(this.nodes.length!==0)return this.nodes[0]}isEmpty(){return this.size===0}clear(){this.nodes=[]}refill(e){this.nodes=e,this.fix()}has(e){return this.nodes.includes(e)}dfs(e){let t=[],r=i=>{i<this.size&&(e==="in"?(r(2*i+1),t.push(this.nodes[i]),r(2*i+2)):e==="pre"?(t.push(this.nodes[i]),r(2*i+1),r(2*i+2)):e==="post"&&(r(2*i+1),r(2*i+2),t.push(this.nodes[i])))};return r(0),t}toArray(){return[...this.nodes]}getNodes(){return this.nodes}clone(){let e=new a(this.comparator);return e.nodes=[...this.nodes],e}sort(){let e=[],t=this.clone();for(;t.size!==0;){let r=t.poll();r&&e.push(r)}return e}bubbleUp(e){let t=this.nodes[e];for(;e>0;){let r=Math.floor((e-1)/2),i=this.nodes[r];if(this.comparator(t,i)<0)this.nodes[e]=i,this.nodes[r]=t,e=r;else break}}sinkDown(e){let t=2*e+1,r=2*e+2,i=this.nodes.length,n=e;if(t<i&&this.comparator(this.nodes[t],this.nodes[n])<0&&(n=t),r<i&&this.comparator(this.nodes[r],this.nodes[n])<0&&(n=r),n!==e){let s=this.nodes[e];this.nodes[e]=this.nodes[n],this.nodes[n]=s,this.sinkDown(n)}}fix(){for(let e=Math.floor(this.size/2);e>=0;e--)this.sinkDown(e)}},Z=class{element;degree;left;right;child;parent;marked;constructor(e,t=0){this.element=e,this.degree=t,this.marked=!1}},we=class{root;size=0;min;comparator;constructor(e){if(this.clear(),this.comparator=e||this.defaultComparator,typeof this.comparator!="function")throw new Error("FibonacciHeap constructor: given comparator should be a function.")}clear(){this.root=void 0,this.min=void 0,this.size=0}add(e){return this.push(e)}push(e){let t=this.createNode(e);return t.left=t,t.right=t,this.mergeWithRoot(t),(!this.min||this.comparator(t.element,this.min.element)<=0)&&(this.min=t),this.size++,this}peek(){return this.min?this.min.element:void 0}consumeLinkedList(e){let t=[];if(!e)return t;let r=e,i=!1;for(;!(r===e&&i);)r===e&&(i=!0),r&&(t.push(r),r=r.right);return t}mergeWithChild(e,t){e.child?(t.right=e.child.right,t.left=e.child,e.child.right.left=t,e.child.right=t):e.child=t}poll(){return this.pop()}pop(){if(this.size===0)return;let e=this.min;if(e.child){let t=this.consumeLinkedList(e.child);for(let r of t)this.mergeWithRoot(r),r.parent=void 0}return this.removeFromRoot(e),e===e.right?(this.min=void 0,this.root=void 0):(this.min=e.right,this.consolidate()),this.size--,e.element}merge(e){if(e.size!==0){if(this.root&&e.root){let t=this.root,r=e.root,i=t.right,n=r.left;t.right=r,r.left=t,i.left=n,n.right=i}(!this.min||e.min&&this.comparator(e.min.element,this.min.element)<0)&&(this.min=e.min),this.size+=e.size,e.clear()}}defaultComparator(e,t){return e<t?-1:e>t?1:0}createNode(e){return new Z(e)}mergeWithRoot(e){this.root?(e.right=this.root.right,e.left=this.root,this.root.right.left=e,this.root.right=e):this.root=e}removeFromRoot(e){this.root===e&&(this.root=e.right),e.left&&(e.left.right=e.right),e.right&&(e.right.left=e.left)}link(e,t){this.removeFromRoot(e),e.left=e,e.right=e,this.mergeWithChild(t,e),t.degree++,e.parent=t}consolidate(){let e=new Array(this.size),t=this.consumeLinkedList(this.root),r,i,n,s;for(let o of t){for(r=o,n=r.degree;e[n];)i=e[n],this.comparator(r.element,i.element)>0&&(s=r,r=i,i=s),this.link(i,r),e[n]=void 0,n++;e[n]=r}for(let o=0;o<this.size;o++)e[o]&&this.comparator(e[o].element,this.min.element)<=0&&(this.min=e[o])}};var ke=class extends K{constructor(e=(t,r)=>{if(typeof t=="number"&&typeof r=="number")return r-t;throw new Error("The a, b params of compare function must be number")}){super(e)}};var Be=class extends K{constructor(e=(t,r)=>{if(typeof t=="number"&&typeof r=="number")return t-r;throw new Error("The a, b params of compare function must be number")}){super(e)}};var S=class extends K{constructor(e){super(e)}};var Me=class extends S{constructor(e=(t,r)=>{if(typeof t=="number"&&typeof r=="number")return t-r;throw new Error("The a, b params of compare function must be number")}){super(e)}};var Ke=class extends S{constructor(e=(t,r)=>{if(typeof t=="number"&&typeof r=="number")return r-t;throw new Error("The a, b params of compare function must be number")}){super(e)}};var V=class{constructor(e,t){this._key=e,this._val=t}_key;get key(){return this._key}set key(e){this._key=e}_val;get val(){return this._val}set val(e){this._val=e}},L=class{constructor(e,t){this._weight=e!==void 0?e:1,this._val=t,this._hashCode=Ne()}_val;get val(){return this._val}set val(e){this._val=e}_weight;get weight(){return this._weight}set weight(e){this._weight=e}_hashCode;get hashCode(){return this._hashCode}_setHashCode(e){this._hashCode=e}},C=class{_vertices=new Map;get vertices(){return this._vertices}getVertex(e){return this._vertices.get(e)||null}hasVertex(e){return this._vertices.has(this._getVertexKey(e))}addVertex(e,t){if(e instanceof V)return this._addVertexOnly(e);{let r=this.createVertex(e,t);return this._addVertexOnly(r)}}removeVertex(e){let t=this._getVertexKey(e);return this._vertices.delete(t)}removeAllVertices(e){let t=[];for(let r of e)t.push(this.removeVertex(r));return t.length>0}hasEdge(e,t){return!!this.getEdge(e,t)}addEdge(e,t,r,i){if(e instanceof L)return this._addEdgeOnly(e);if(t instanceof V||typeof t=="string"||typeof t=="number"){if(!(this.hasVertex(e)&&this.hasVertex(t)))return!1;e instanceof V&&(e=e.key),t instanceof V&&(t=t.key);let n=this.createEdge(e,t,r,i);return this._addEdgeOnly(n)}else throw new Error("dest must be a Vertex or vertex key while srcOrEdge is an Edge")}setEdgeWeight(e,t,r){let i=this.getEdge(e,t);return i?(i.weight=r,!0):!1}getAllPathsBetween(e,t){let r=[],i=this._getVertex(e),n=this._getVertex(t);if(!(i&&n))return[];let s=(o,l,h,d)=>{h.set(o,!0),o===l&&r.push([i,...d]);let _=this.getNeighbors(o);for(let g of _)h.get(g)||(d.push(g),s(g,l,h,d),v(d,x=>x===g));h.set(o,!1)};return s(i,n,new Map,[]),r}getPathSumWeight(e){let t=0;for(let r=0;r<e.length;r++)t+=this.getEdge(e[r],e[r+1])?.weight||0;return t}getMinCostBetween(e,t,r){if(r===void 0&&(r=!1),r){let i=this.getAllPathsBetween(e,t),n=1/0;for(let s of i)n=Math.min(this.getPathSumWeight(s),n);return n}else{let i=this._getVertex(t),n=this._getVertex(e);if(!(n&&i))return null;let s=new Map,o=new B([n]);s.set(n,!0);let l=0;for(;o.size>0;){for(let h=0;h<o.size;h++){let d=o.shift();if(d===i)return l;if(d!==void 0){let _=this.getNeighbors(d);for(let g of _)s.has(g)||(s.set(g,!0),o.push(g))}}l++}return null}}getMinPathBetween(e,t,r){if(r===void 0&&(r=!1),r){let i=this.getAllPathsBetween(e,t),n=1/0,s=-1,o=0;for(let l of i){let h=this.getPathSumWeight(l);h<n&&(n=h,s=o),o++}return i[s]||null}else{let i=[],n=this._getVertex(e),s=this._getVertex(t);if(!(n&&s))return[];let o=(l,h,d,_)=>{if(d.set(l,!0),l===h){i=[n,..._];return}let g=this.getNeighbors(l);for(let x of g)d.get(x)||(_.push(x),o(x,h,d,_),v(_,E=>E===x));d.set(l,!1)};return o(n,s,new Map,[]),i}}dijkstraWithoutHeap(e,t,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1),t===void 0&&(t=null);let n=1/0,s=null,o=[],l=[],h=this._vertices,d=new Map,_=new Set,g=new Map,x=this._getVertex(e),E=t?this._getVertex(t):null;if(!x)return null;for(let u of h){let f=u[1];f instanceof V&&d.set(f,1/0)}d.set(x,0),g.set(x,null);let m=()=>{let u=1/0,f=null;for(let[p,y]of d)_.has(p)||y<u&&(u=y,f=p);return f},b=u=>{for(let f of h){let p=f[1];if(p instanceof V){let y=[p],c=g.get(p);for(;c;)y.push(c),c=g.get(c);let N=y.reverse();f[1]===u&&(o=N),l.push(N)}}};for(let u=1;u<h.size;u++){let f=m();if(f){if(_.add(f),E&&E===f)return r&&(n=d.get(E)||1/0),i&&b(E),{distMap:d,preMap:g,seen:_,paths:l,minDist:n,minPath:o};let p=this.getNeighbors(f);for(let y of p)if(!_.has(y)){let c=this.getEdge(f,y);if(c){let N=d.get(f),T=d.get(y);N!==void 0&&T!==void 0&&c.weight+N<T&&(d.set(y,c.weight+N),g.set(y,f))}}}}return r&&d.forEach((u,f)=>{f!==x&&u<n&&(n=u,i&&(s=f))}),i&&b(s),{distMap:d,preMap:g,seen:_,paths:l,minDist:n,minPath:o}}dijkstra(e,t,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1),t===void 0&&(t=null);let n=1/0,s=null,o=[],l=[],h=this._vertices,d=new Map,_=new Set,g=new Map,x=this._getVertex(e),E=t?this._getVertex(t):null;if(!x)return null;for(let u of h){let f=u[1];f instanceof V&&d.set(f,1/0)}let m=new S((u,f)=>u.key-f.key);m.add({key:0,val:x}),d.set(x,0),g.set(x,null);let b=u=>{for(let f of h){let p=f[1];if(p instanceof V){let y=[p],c=g.get(p);for(;c;)y.push(c),c=g.get(c);let N=y.reverse();f[1]===u&&(o=N),l.push(N)}}};for(;m.size>0;){let u=m.poll(),f=u?.key,p=u?.val;if(f!==void 0&&p){if(_.add(p),E&&E===p)return r&&(n=d.get(E)||1/0),i&&b(E),{distMap:d,preMap:g,seen:_,paths:l,minDist:n,minPath:o};let y=this.getNeighbors(p);for(let c of y)if(!_.has(c)){let N=this.getEdge(p,c)?.weight;if(typeof N=="number"){let T=d.get(c);T&&f+N<T&&(m.add({key:f+N,val:c}),g.set(c,p),d.set(c,f+N))}}}}return r&&d.forEach((u,f)=>{f!==x&&u<n&&(n=u,i&&(s=f))}),i&&b(s),{distMap:d,preMap:g,seen:_,paths:l,minDist:n,minPath:o}}bellmanFord(e,t,r,i){r===void 0&&(r=!1),i===void 0&&(i=!1);let n=this._getVertex(e),s=[],o=new Map,l=new Map,h=1/0,d=[],_;if(t&&(_=!1),!n)return{hasNegativeCycle:_,distMap:o,preMap:l,paths:s,min:h,minPath:d};let g=this._vertices,x=g.size,E=this.edgeSet(),m=E.length;this._vertices.forEach(u=>{o.set(u,1/0)}),o.set(n,0);for(let u=1;u<x;++u)for(let f=0;f<m;++f){let p=this.getEndsOfEdge(E[f]);if(p){let[y,c]=p,N=E[f].weight,T=o.get(y),D=o.get(c);T!==void 0&&D!==void 0&&o.get(y)!==1/0&&T+N<D&&(o.set(c,T+N),i&&l.set(c,y))}}let b=null;if(r&&o.forEach((u,f)=>{f!==n&&u<h&&(h=u,i&&(b=f))}),i)for(let u of g){let f=u[1];if(f instanceof V){let p=[f],y=l.get(f);for(;y!==void 0;)p.push(y),y=l.get(y);let c=p.reverse();u[1]===b&&(d=c),s.push(c)}}for(let u=0;u<m;++u){let f=this.getEndsOfEdge(E[u]);if(f){let[p]=f,y=E[u].weight,c=o.get(p);c&&c!==1/0&&c+y<c&&(_=!0)}}return{hasNegativeCycle:_,distMap:o,preMap:l,paths:s,min:h,minPath:d}}floyd(){let e=[...this._vertices],t=e.length,r=[],i=[];for(let n=0;n<t;n++){r[n]=[],i[n]=[];for(let s=0;s<t;s++)i[n][s]=null}for(let n=0;n<t;n++)for(let s=0;s<t;s++)r[n][s]=this.getEdge(e[n][1],e[s][1])?.weight||1/0;for(let n=0;n<t;n++)for(let s=0;s<t;s++)for(let o=0;o<t;o++)r[s][o]>r[s][n]+r[n][o]&&(r[s][o]=r[s][n]+r[n][o],i[s][o]=e[n][1]);return{costs:r,predecessor:i}}tarjan(e,t,r,i){e===void 0&&(e=!1),t===void 0&&(t=!1),r===void 0&&(r=!1),i===void 0&&(i=!1);let s=new Map,o=new Map,l=this._vertices;l.forEach(u=>{s.set(u,-1),o.set(u,1/0)});let[h]=l.values(),d=[],_=[],g=0,x=(u,f)=>{g++,s.set(u,g),o.set(u,g);let p=this.getNeighbors(u),y=0;for(let c of p)if(c!==f){s.get(c)===-1&&(y++,x(c,u));let N=o.get(c),T=o.get(u);T!==void 0&&N!==void 0&&o.set(u,Math.min(T,N));let D=s.get(u);if(N!==void 0&&D!==void 0&&(e&&(u===h&&y>=2||u!==h&&N>=D)&&d.push(u),t&&N>D)){let Pe=this.getEdge(u,c);Pe&&_.push(Pe)}}};x(h,null);let E=new Map,m=()=>{let u=new Map;return o.forEach((f,p)=>{u.has(f)?u.get(f)?.push(p):u.set(f,[p])}),u};r&&(E=m());let b=new Map;if(i){let u=new Map;u.size<1&&(u=m()),u.forEach((f,p)=>{f.length>1&&b.set(p,f)})}return{dfnMap:s,lowMap:o,bridges:_,articulationPoints:d,SCCs:E,cycles:b}}_addVertexOnly(e){return this.hasVertex(e)?!1:(this._vertices.set(e.key,e),!0)}_getVertex(e){let t=this._getVertexKey(e);return this._vertices.get(t)||null}_getVertexKey(e){return e instanceof V?e.key:e}_setVertices(e){this._vertices=e}};var F=class extends V{constructor(e,t){super(e,t)}},A=class extends L{constructor(e,t,r,i){super(r,i),this._src=e,this._dest=t}_src;get src(){return this._src}set src(e){this._src=e}_dest;get dest(){return this._dest}set dest(e){this._dest=e}},Y=class extends C{constructor(){super()}_outEdgeMap=new Map;get outEdgeMap(){return this._outEdgeMap}_inEdgeMap=new Map;get inEdgeMap(){return this._inEdgeMap}createVertex(e,t){return new F(e,t??e)}createEdge(e,t,r,i){return new A(e,t,r??1,i)}getEdge(e,t){let r=[];if(e!==null&&t!==null){let i=this._getVertex(e),n=this._getVertex(t);if(i&&n){let s=this._outEdgeMap.get(i);s&&(r=s.filter(o=>o.dest===n.key))}}return r[0]||null}removeEdgeSrcToDest(e,t){let r=this._getVertex(e),i=this._getVertex(t),n=null;if(!r||!i)return null;let s=this._outEdgeMap.get(r);s&&v(s,l=>l.dest===i.key);let o=this._inEdgeMap.get(i);return o&&(n=v(o,l=>l.src===r.key)[0]||null),n}removeEdge(e){let t=null,r=this._getVertex(e.src),i=this._getVertex(e.dest);if(r&&i){let n=this._outEdgeMap.get(r);n&&n.length>0&&v(n,o=>o.src===r.key);let s=this._inEdgeMap.get(i);s&&s.length>0&&(t=v(s,o=>o.dest===i.key)[0])}return t}removeEdgesBetween(e,t){let r=[];if(e&&t){let i=this.removeEdgeSrcToDest(e,t),n=this.removeEdgeSrcToDest(t,e);i&&r.push(i),n&&r.push(n)}return r}incomingEdgesOf(e){let t=this._getVertex(e);return t?this.inEdgeMap.get(t)||[]:[]}outgoingEdgesOf(e){let t=this._getVertex(e);return t?this._outEdgeMap.get(t)||[]:[]}degreeOf(e){return this.outDegreeOf(e)+this.inDegreeOf(e)}inDegreeOf(e){return this.incomingEdgesOf(e).length}outDegreeOf(e){return this.outgoingEdgesOf(e).length}edgesOf(e){return[...this.outgoingEdgesOf(e),...this.incomingEdgesOf(e)]}getEdgeSrc(e){return this._getVertex(e.src)}getEdgeDest(e){return this._getVertex(e.dest)}getDestinations(e){if(e===null)return[];let t=[],r=this.outgoingEdgesOf(e);for(let i of r){let n=this.getEdgeDest(i);n&&t.push(n)}return t}topologicalSort(e){e=e??"key";let t=new Map;for(let s of this.vertices)t.set(s[1],0);let r=[],i=!1,n=s=>{t.set(s,1);let o=this.getDestinations(s);for(let l of o){let h=t.get(l);h===0?n(l):h===1&&(i=!0)}t.set(s,2),r.push(s)};for(let s of this.vertices)t.get(s[1])===0&&n(s[1]);return i?null:(e==="key"&&(r=r.map(s=>s instanceof F?s.key:s)),r.reverse())}edgeSet(){let e=[];return this._outEdgeMap.forEach(t=>{e=[...e,...t]}),e}getNeighbors(e){let t=[],r=this._getVertex(e);if(r){let i=this.outgoingEdgesOf(r);for(let n of i){let s=this._getVertex(n.dest);s&&t.push(s)}}return t}getEndsOfEdge(e){if(!this.hasEdge(e.src,e.dest))return null;let t=this._getVertex(e.src),r=this._getVertex(e.dest);return t&&r?[t,r]:null}_addEdgeOnly(e){if(!(this.hasVertex(e.src)&&this.hasVertex(e.dest)))return!1;let t=this._getVertex(e.src),r=this._getVertex(e.dest);if(t&&r){let i=this._outEdgeMap.get(t);i?i.push(e):this._outEdgeMap.set(t,[e]);let n=this._inEdgeMap.get(r);return n?n.push(e):this._inEdgeMap.set(r,[e]),!0}else return!1}_setOutEdgeMap(e){this._outEdgeMap=e}_setInEdgeMap(e){this._inEdgeMap=e}};var $=class extends V{constructor(e,t){super(e,t)}},ee=class extends L{constructor(e,t,r,i){super(r,i),this._vertices=[e,t]}_vertices;get vertices(){return this._vertices}set vertices(e){this._vertices=e}},Se=class extends C{constructor(){super(),this._edges=new Map}_edges;get edges(){return this._edges}createVertex(e,t){return new $(e,t??e)}createEdge(e,t,r,i){return new ee(e,t,r??1,i)}getEdge(e,t){let r=[];if(e!==null&&t!==null){let i=this._getVertex(e),n=this._getVertex(t);i&&n&&(r=this._edges.get(i)?.filter(s=>s.vertices.includes(n.key)))}return r&&r[0]||null}removeEdgeBetween(e,t){let r=this._getVertex(e),i=this._getVertex(t);if(!r||!i)return null;let n=this._edges.get(r),s=null;n&&(s=v(n,l=>l.vertices.includes(i.key))[0]||null);let o=this._edges.get(i);return o&&v(o,l=>l.vertices.includes(r.key)),s}removeEdge(e){return this.removeEdgeBetween(e.vertices[0],e.vertices[1])}degreeOf(e){let t=this._getVertex(e);return t&&this._edges.get(t)?.length||0}edgesOf(e){let t=this._getVertex(e);return t?this._edges.get(t)||[]:[]}edgeSet(){let e=new Set;return this._edges.forEach(t=>{t.forEach(r=>{e.add(r)})}),[...e]}getNeighbors(e){let t=[],r=this._getVertex(e);if(r){let i=this.edgesOf(r);for(let n of i){let s=this._getVertex(n.vertices.filter(o=>o!==r.key)[0]);s&&t.push(s)}}return t}getEndsOfEdge(e){if(!this.hasEdge(e.vertices[0],e.vertices[1]))return null;let t=this._getVertex(e.vertices[0]),r=this._getVertex(e.vertices[1]);return t&&r?[t,r]:null}_addEdgeOnly(e){for(let t of e.vertices){let r=this._getVertex(t);if(r===null)return!1;if(r){let i=this._edges.get(r);i?i.push(e):this._edges.set(r,[e])}}return!0}_setEdges(e){this._edges=e}};var te=class extends F{constructor(e,t,r,i){super(e,i),this._lat=t,this._long=r}_lat;get lat(){return this._lat}set lat(e){this._lat=e}_long;get long(){return this._long}set long(e){this._long=e}},re=class extends A{constructor(e,t,r,i){super(e,t,r,i)}},Le=class extends Y{constructor(e,t){super(),this._origin=e,this._bottomRight=t}_origin=[0,0];get origin(){return this._origin}set origin(e){this._origin=e}_bottomRight;get bottomRight(){return this._bottomRight}set bottomRight(e){this._bottomRight=e}createVertex(e,t,r=this.origin[0],i=this.origin[1]){return new te(e,r,i,t)}createEdge(e,t,r,i){return new re(e,t,r,i)}};var G=(t=>(t.ITERATIVE="ITERATIVE",t.RECURSIVE="RECURSIVE",t))(G||{}),ie=(o=>(o.ROOT="ROOT",o.LEFT="LEFT",o.RIGHT="RIGHT",o.ROOT_LEFT="ROOT_LEFT",o.ROOT_RIGHT="ROOT_RIGHT",o.ISOLATED="ISOLATED",o.MAL_NODE="MAL_NODE",o))(ie||{});var Re=(t=>(t.RED="RED",t.BLACK="BLACK",t))(Re||{});var Ue=(r=>(r.VAL="VAL",r.NODE="NODE",r.ID="ID",r))(Ue||{});var ne=(r=>(r.lt="lt",r.eq="eq",r.gt="gt",r))(ne||{});var R=class{key;val;parent;constructor(e,t){this.key=e,this.val=t}_left;get left(){return this._left}set left(e){e&&(e.parent=this),this._left=e}_right;get right(){return this._right}set right(e){e&&(e.parent=this),this._right=e}get familyPosition(){let e=this;return e.parent?e.parent.left===e?e.left||e.right?"ROOT_LEFT":"LEFT":e.parent.right===e?e.left||e.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":e.left||e.right?"ROOT":"ISOLATED"}},W=class{_loopType="ITERATIVE";constructor(e){if(e!==void 0){let{iterationType:t="ITERATIVE"}=e;this._loopType=t}}_root=null;get root(){return this._root}_size=0;get size(){return this._size}get iterationType(){return this._loopType}set iterationType(e){this._loopType=e}createNode(e,t){return new R(e,t)}clear(){this._root=null,this._size=0}isEmpty(){return this.size===0}add(e,t){let r=(o,l)=>{let h=new B([o]);for(;h.size>0;){let d=h.shift();if(d){if(l&&d.key===l.key)return;let _=this._addTo(l,d);if(_!==void 0)return _;d.left&&h.push(d.left),d.right&&h.push(d.right)}else return}},i,n;if(e===null)n=null;else if(typeof e=="number")n=this.createNode(e,t);else if(e instanceof R)n=e;else return;let s=e?this.get(e,this._defaultCallbackByKey):void 0;return this.root?s?(s.val=t,i=s):i=r(this.root,n):(this._setRoot(n),n!==null?this._setSize(1):this._setSize(0),i=this.root),i}addMany(e,t){let r=[];for(let i=0;i<e.length;i++){let n=e[i];if(n instanceof R){r.push(this.add(n.key,n.val));continue}if(n===null){r.push(this.add(null));continue}let s=t?.[i];r.push(this.add(n,s))}return r}refill(e,t){return this.clear(),e.length===this.addMany(e,t).length}delete(e){let t=[];if(!this.root)return t;let r=typeof e=="number"?this.get(e):e;if(!r)return t;let i=r?.parent?r.parent:null,n=null,s=r;if(r.left){let o=r.left?this.getRightMost(r.left):null;if(o){let l=o.parent;s=this._swap(r,o),l&&(l.right===o?l.right=o.left:l.left=o.left,n=l)}}else if(!i)r.right!==void 0&&this._setRoot(r.right);else{let{familyPosition:o}=r;o==="LEFT"||o==="ROOT_LEFT"?i.left=r.right:(o==="RIGHT"||o==="ROOT_RIGHT")&&(i.right=r.right),n=i}return this._setSize(this.size-1),t.push({deleted:s,needBalanced:n}),t}getDepth(e,t=this.root){typeof e=="number"&&(e=this.get(e)),typeof t=="number"&&(t=this.get(t));let r=0;for(;e?.parent;){if(e===t)return r;r++,e=e.parent}return r}getHeight(e=this.root,t=this.iterationType){if(typeof e=="number"&&(e=this.get(e)),!e)return-1;if(t==="RECURSIVE"){let r=i=>{if(!i)return-1;let n=r(i.left),s=r(i.right);return Math.max(n,s)+1};return r(e)}else{if(!e)return-1;let r=[{node:e,depth:0}],i=0;for(;r.length>0;){let{node:n,depth:s}=r.pop();n.left&&r.push({node:n.left,depth:s+1}),n.right&&r.push({node:n.right,depth:s+1}),i=Math.max(i,s)}return i}}getMinHeight(e=this.root,t=this.iterationType){if(!e)return-1;if(t==="RECURSIVE"){let r=i=>{if(!i||!i.left&&!i.right)return 0;let n=r(i.left),s=r(i.right);return Math.min(n,s)+1};return r(e)}else{let r=[],i=e,n=null,s=new Map;for(;r.length>0||i;)if(i)r.push(i),i=i.left;else if(i=r[r.length-1],!i.right||n===i.right){if(i=r.pop(),i){let o=i.left?s.get(i.left)??-1:-1,l=i.right?s.get(i.right)??-1:-1;s.set(i,1+Math.min(o,l)),n=i,i=null}}else i=i.right;return s.get(e)??-1}}isPerfectlyBalanced(e=this.root){return this.getMinHeight(e)+1>=this.getHeight(e)}getNodes(e,t=this._defaultCallbackByKey,r=!1,i=this.root,n=this.iterationType){if(!i)return[];let s=[];if(n==="RECURSIVE"){let o=l=>{t(l)===e&&(s.push(l),r)||!l.left&&!l.right||(l.left&&o(l.left),l.right&&o(l.right))};o(i)}else{let o=new B([i]);for(;o.size>0;){let l=o.shift();if(l){if(t(l)===e&&(s.push(l),r))return s;l.left&&o.push(l.left),l.right&&o.push(l.right)}}}return s}has(e,t=this._defaultCallbackByKey,r=this.root,i=this.iterationType){return this.getNodes(e,t,!0,r,i).length>0}get(e,t=this._defaultCallbackByKey,r=this.root,i=this.iterationType){return this.getNodes(e,t,!0,r,i)[0]??null}getPathToRoot(e,t=!0){let r=[];for(;e.parent;)r.push(e),e=e.parent;return r.push(e),t?r.reverse():r}getLeftMost(e=this.root,t=this.iterationType){if(typeof e=="number"&&(e=this.get(e)),!e)return e;if(t==="RECURSIVE"){let r=i=>i.left?r(i.left):i;return r(e)}else{let r=J(i=>i.left?r.cont(i.left):i);return r(e)}}getRightMost(e=this.root,t=this.iterationType){if(!e)return e;if(t==="RECURSIVE"){let r=i=>i.right?r(i.right):i;return r(e)}else{let r=J(i=>i.right?r.cont(i.right):i);return r(e)}}isSubtreeBST(e,t=this.iterationType){if(!e)return!0;if(t==="RECURSIVE"){let r=(i,n,s)=>i?i.key<=n||i.key>=s?!1:r(i.left,n,i.key)&&r(i.right,i.key,s):!0;return r(e,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER)}else{let r=[],i=Number.MIN_SAFE_INTEGER,n=e;for(;n||r.length>0;){for(;n;)r.push(n),n=n.left;if(n=r.pop(),!n||i>=n.key)return!1;i=n.key,n=n.right}return!0}}isBST(e=this.iterationType){return this.root===null?!0:this.isSubtreeBST(this.root,e)}subTreeTraverse(e=this._defaultCallbackByKey,t=this.root,r=this.iterationType){typeof t=="number"&&(t=this.get(t));let i=[];if(!t)return i;if(r==="RECURSIVE"){let n=s=>{i.push(e(s)),s.left&&n(s.left),s.right&&n(s.right)};n(t)}else{let n=[t];for(;n.length>0;){let s=n.pop();i.push(e(s)),s.right&&n.push(s.right),s.left&&n.push(s.left)}}return i}dfs(e=this._defaultCallbackByKey,t="in",r=this.root,i="ITERATIVE"){if(!r)return[];let n=[];if(i==="RECURSIVE"){let s=o=>{switch(t){case"in":o.left&&s(o.left),n.push(e(o)),o.right&&s(o.right);break;case"pre":n.push(e(o)),o.left&&s(o.left),o.right&&s(o.right);break;case"post":o.left&&s(o.left),o.right&&s(o.right),n.push(e(o));break}};s(r)}else{let s=[{opt:0,node:r}];for(;s.length>0;){let o=s.pop();if(!(!o||!o.node))if(o.opt===1)n.push(e(o.node));else switch(t){case"in":s.push({opt:0,node:o.node.right}),s.push({opt:1,node:o.node}),s.push({opt:0,node:o.node.left});break;case"pre":s.push({opt:0,node:o.node.right}),s.push({opt:0,node:o.node.left}),s.push({opt:1,node:o.node});break;case"post":s.push({opt:1,node:o.node}),s.push({opt:0,node:o.node.right}),s.push({opt:0,node:o.node.left});break;default:s.push({opt:0,node:o.node.right}),s.push({opt:1,node:o.node}),s.push({opt:0,node:o.node.left});break}}}return n}bfs(e=this._defaultCallbackByKey,t=!1,r=this.root,i=this.iterationType){if(!r)return[];let n=[];if(i==="RECURSIVE"){let s=(o,l)=>{e&&n.push(e(o,t?l:void 0)),o.left&&s(o.left,l+1),o.right&&s(o.right,l+1)};s(r,0)}else{let s=[[r,0]];for(;s.length>0;){let o=s.pop(),[l,h]=o;e&&n.push(e(l,t?h:void 0)),l.right&&s.push([l.right,h+1]),l.left&&s.push([l.left,h+1])}}return n}getPredecessor(e){if(e.left){let t=e.left;for(;!t||t.right&&t.right!==e;)t&&(t=t.right);return t}else return e}morris(e=this._defaultCallbackByKey,t="in",r=this.root){if(r===null)return[];let i=[],n=r,s=l=>{let h=null,d=null;for(;l;)d=l.right,l.right=h,h=l,l=d;return h},o=l=>{let h=s(l),d=h;for(;d;)i.push(e(d)),d=d.right;s(h)};switch(t){case"in":for(;n;){if(n.left){let l=this.getPredecessor(n);if(l.right)l.right=null;else{l.right=n,n=n.left;continue}}i.push(e(n)),n=n.right}break;case"pre":for(;n;){if(n.left){let l=this.getPredecessor(n);if(l.right)l.right=null;else{l.right=n,i.push(e(n)),n=n.left;continue}}else i.push(e(n));n=n.right}break;case"post":for(;n;){if(n.left){let l=this.getPredecessor(n);if(l.right===null){l.right=n,n=n.left;continue}else l.right=null,o(n.left)}n=n.right}o(r);break}return i}_swap(e,t){let{key:r,val:i}=t,n=this.createNode(r,i);return n&&(t.key=e.key,t.val=e.val,e.key=n.key,e.val=n.val),t}_defaultCallbackByKey=e=>e.key;_addTo(e,t){if(t)return t.left===void 0?(t.left=e,e&&this._setSize(this.size+1),t.left):t.right===void 0?(t.right=e,e&&this._setSize(this.size+1),t.right):void 0}_setRoot(e){e&&(e.parent=void 0),this._root=e}_setSize(e){this._size=e}};var M=class extends R{constructor(e,t){super(e,t)}},I=class extends W{constructor(e){if(super(e),e!==void 0){let{comparator:t}=e;t!==void 0&&(this._comparator=t)}}createNode(e,t){return new M(e,t)}add(e,t){let r=null,i=null;if(e instanceof M?i=e:typeof e=="number"?i=this.createNode(e,t):e===null&&(i=null),this.root===null)this._setRoot(i),this._setSize(this.size+1),r=this.root;else{let n=this.root,s=!0;for(;s;)n!==null&&i!==null?this._compare(n.key,i.key)==="eq"?(i&&(n.val=i.val),s=!1,r=n):this._compare(n.key,i.key)==="gt"?n.left===void 0?(i&&(i.parent=n),n.left=i,this._setSize(this.size+1),s=!1,r=n.left):n.left&&(n=n.left):this._compare(n.key,i.key)==="lt"&&(n.right===void 0?(i&&(i.parent=n),n.right=i,this._setSize(this.size+1),s=!1,r=n.right):n.right&&(n=n.right)):s=!1}return r}addMany(e,t,r=!0,i=this.iterationType){function n(m){return m.indexOf(null)===-1}if(!r||!n(e))return super.addMany(e,t);let s=[],o=e.map((m,b)=>[m,t?.[b]]),l=[];function h(m){for(let[b]of m)if(b instanceof M)return!0;return!1}function d(m){for(let[b]of m)if(typeof b=="number")return!0;return!1}let _=[],g=[];if(h(o))l=o.sort((m,b)=>m[0].key-b[0].key);else if(d(o))l=o.sort((m,b)=>m[0]-b[0]);else throw new Error("Invalid input keysOrNodes");_=l.map(([m])=>m),g=l.map(([,m])=>m);let x=(m,b)=>{if(m.length===0)return;let u=Math.floor((m.length-1)/2),f=this.add(m[u],b?.[u]);s.push(f),x(m.slice(0,u),b?.slice(0,u)),x(m.slice(u+1),b?.slice(u+1))},E=()=>{let b=[[0,l.length-1]];for(;b.length>0;){let u=b.pop();if(u){let[f,p]=u;if(f<=p){let y=f+Math.floor((p-f)/2),c=this.add(_[y],g?.[y]);s.push(c),b.push([y+1,p]),b.push([f,y-1])}}}};return i==="RECURSIVE"?x(_,g):E(),s}get(e,t=this._defaultCallbackByKey,r=this.root,i=this.iterationType){return this.getNodes(e,t,!0,r,i)[0]??null}lastKey(e=this.root,t=this.iterationType){return this._compare(0,1)==="lt"?this.getRightMost(e,t)?.key??0:this._compare(0,1)==="gt"?this.getLeftMost(e,t)?.key??0:this.getRightMost(e,t)?.key??0}getNodes(e,t=this._defaultCallbackByKey,r=!1,i=this.root,n=this.iterationType){if(!i)return[];let s=[];if(n==="RECURSIVE"){let o=l=>{t(l)===e&&(s.push(l),r)||!l.left&&!l.right||(t===this._defaultCallbackByKey?(this._compare(l.key,e)==="gt"&&l.left&&o(l.left),this._compare(l.key,e)==="lt"&&l.right&&o(l.right)):(l.left&&o(l.left),l.right&&o(l.right)))};o(i)}else{let o=new B([i]);for(;o.size>0;){let l=o.shift();if(l){if(t(l)===e&&(s.push(l),r))return s;t===this._defaultCallbackByKey?(this._compare(l.key,e)==="gt"&&l.left&&o.push(l.left),this._compare(l.key,e)==="lt"&&l.right&&o.push(l.right)):(l.left&&o.push(l.left),l.right&&o.push(l.right))}}}return s}lesserOrGreaterTraverse(e=this._defaultCallbackByKey,t="lt",r=this.root,i=this.iterationType){typeof r=="number"&&(r=this.get(r));let n=[];if(!r)return n;let s=r.key;if(!this.root)return n;if(i==="RECURSIVE"){let o=l=>{this._compare(l.key,s)===t&&n.push(e(l)),!(!l.left&&!l.right)&&(l.left&&this._compare(l.left.key,s)===t&&o(l.left),l.right&&this._compare(l.right.key,s)===t&&o(l.right))};return o(this.root),n}else{let o=new B([this.root]);for(;o.size>0;){let l=o.shift();l&&(this._compare(l.key,s)===t&&n.push(e(l)),l.left&&this._compare(l.left.key,s)===t&&o.push(l.left),l.right&&this._compare(l.right.key,s)===t&&o.push(l.right))}return n}}perfectlyBalance(e=this.iterationType){let t=this.dfs(i=>i,"in"),r=t.length;if(this.clear(),t.length<1)return!1;if(e==="RECURSIVE"){let i=(n,s)=>{if(n>s)return;let o=n+Math.floor((s-n)/2),l=t[o];this.add(l.key,l.val),i(n,o-1),i(o+1,s)};return i(0,r-1),!0}else{let i=[[0,r-1]];for(;i.length>0;){let n=i.pop();if(n){let[s,o]=n;if(s<=o){let l=s+Math.floor((o-s)/2),h=t[l];this.add(h.key,h.val),i.push([l+1,o]),i.push([s,l-1])}}}return!0}}isAVLBalanced(e=this.iterationType){if(!this.root)return!0;let t=!0;if(e==="RECURSIVE"){let r=i=>{if(!i)return 0;let n=r(i.left),s=r(i.right);return Math.abs(n-s)>1&&(t=!1),Math.max(n,s)+1};r(this.root)}else{let r=[],i=this.root,n=null,s=new Map;for(;r.length>0||i;)if(i)r.push(i),i=i.left;else if(i=r[r.length-1],!i.right||n===i.right){if(i=r.pop(),i){let o=i.left?s.get(i.left)??-1:-1,l=i.right?s.get(i.right)??-1:-1;if(Math.abs(o-l)>1)return!1;s.set(i,1+Math.max(o,l)),n=i,i=null}}else i=i.right}return t}_comparator=(e,t)=>e-t;_compare(e,t){let r=this._comparator(e,t);return r>0?"gt":r<0?"lt":"eq"}};var Ce=class{_freq;_max;constructor({frequency:e=0,max:t}){this._freq=e,this._max=t,this._freqMap={0:0},this._msb=ve(t),this._negativeCount=e<0?t:0}_freqMap;get freqMap(){return this._freqMap}set freqMap(e){this._freqMap=e}_msb;get msb(){return this._msb}set msb(e){this._msb=e}_negativeCount;get negativeCount(){return this._negativeCount}set negativeCount(e){this._negativeCount=e}get freq(){return this._freq}get max(){return this._max}readSingle(e){return this._checkIndex(e),this._readSingle(e)}update(e,t){this._checkIndex(e);let r=this._readSingle(e);this._update(e,t),this._updateNegativeCount(r,r+t)}writeSingle(e,t){this._checkIndex(e),this._writeSingle(e,t)}read(e){if(!Number.isInteger(e))throw new Error("Invalid count");return this._read(Math.max(Math.min(e,this.max),0))}lowerBound(e){if(this.negativeCount>0)throw new Error("Sequence is not non-descending");return this._binarySearch(e,(t,r)=>t<r)}upperBound(e){if(this.negativeCount>0)throw new Error("Must not be descending");return this._binarySearch(e,(t,r)=>t<=r)}_getFrequency(e){return e in this.freqMap?this.freqMap[e]:this.freq*(e&-e)}_updateFrequency(e,t){this.freqMap[e]=this._getFrequency(e)+t}_checkIndex(e){if(!Number.isInteger(e))throw new Error("Invalid index: Index must be an integer.");if(e<0||e>=this.max)throw new Error("Index out of range: Index must be within the range [0, this.max).")}_readSingle(e){e=e+1;let t=this._getFrequency(e),r=e-(e&-e);for(e--;e!==r;)t-=this._getFrequency(e),e-=e&-e;return t}_updateNegativeCount(e,t){e<0&&t>=0?this.negativeCount--:e>=0&&t<0&&this.negativeCount++}_update(e,t){for(e=e+1;e<=this.max;)this._updateFrequency(e,t),e+=e&-e}_writeSingle(e,t){let r=this._readSingle(e);this._update(e,t-r),this._updateNegativeCount(r,t)}_read(e){let t=e,r=0;for(;t;)r+=this._getFrequency(t),t-=t&-t;return r}_binarySearch(e,t){let r=0,i=this.msb<<1,n=e;for(;i>r+1;){let s=r+i>>1,o=this._getFrequency(s);s<=this.max&&t(o,n)?(n-=o,r=s):i=s}return r}};var z=class{constructor(e,t,r,i){this._start=e,this._end=t,this._sum=r,this._val=i||null}_start=0;get start(){return this._start}set start(e){this._start=e}_end=0;get end(){return this._end}set end(e){this._end=e}_val=null;get val(){return this._val}set val(e){this._val=e}_sum=0;get sum(){return this._sum}set sum(e){this._sum=e}_left=null;get left(){return this._left}set left(e){this._left=e}_right=null;get right(){return this._right}set right(e){this._right=e}},Fe=class{constructor(e,t,r){t=t||0,r=r||e.length-1,this._values=e,this._start=t,this._end=r,e.length>0?this._root=this.build(t,r):(this._root=null,this._values=[])}_values=[];get values(){return this._values}_start=0;get start(){return this._start}_end;get end(){return this._end}_root;get root(){return this._root}build(e,t){if(e>t)return new z(e,t,0);if(e===t)return new z(e,t,this._values[e]);let r=e+Math.floor((t-e)/2),i=this.build(e,r),n=this.build(r+1,t),s=new z(e,t,i.sum+n.sum);return s.left=i,s.right=n,s}updateNode(e,t,r){let i=this.root||null;if(!i)return;let n=(s,o,l,h)=>{if(s.start===s.end&&s.start===o){s.sum=l,h!==void 0&&(s.val=h);return}let d=s.start+Math.floor((s.end-s.start)/2);o<=d?s.left&&n(s.left,o,l,h):s.right&&n(s.right,o,l,h),s.left&&s.right&&(s.sum=s.left.sum+s.right.sum)};n(i,e,t,r)}querySumByRange(e,t){let r=this.root||null;if(!r)return 0;if(e<0||t>=this.values.length||e>t)return NaN;let i=(n,s,o)=>{if(s<=n.start&&o>=n.end)return n.sum;let l=n.start+Math.floor((n.end-n.start)/2);if(o<=l)return n.left?i(n.left,s,o):NaN;if(s>l)return n.right?i(n.right,s,o):NaN;{let h=0,d=0;return n.left&&(h=i(n.left,s,l)),n.right&&(d=i(n.right,l+1,o)),h+d}};return i(r,e,t)}_setValues(e){this._values=e}_setStart(e){this._start=e}_setEnd(e){this._end=e}_setRoot(e){this._root=e}};var H=class extends M{height;constructor(e,t){super(e,t),this.height=0}},X=class extends I{constructor(e){super(e)}createNode(e,t){return new H(e,t)}add(e,t){let r=super.add(e,t);return r&&this._balancePath(r),r}delete(e){let t=super.delete(e);for(let{needBalanced:r}of t)r&&this._balancePath(r);return t}_swap(e,t){let{key:r,val:i,height:n}=t,s=this.createNode(r,i);return s&&(s.height=n,t.key=e.key,t.val=e.val,t.height=e.height,e.key=s.key,e.val=s.val,e.height=s.height),t}_balanceFactor(e){return e.right?e.left?e.right.height-e.left.height:+e.height:-e.height}_updateHeight(e){if(!e.left&&!e.right)e.height=0;else if(e.left)e.right?e.height=1+Math.max(e.right.height,e.left.height):e.height=1+e.left.height;else{let t=e.right?e.right.height:0;e.height=1+t}}_balancePath(e){let t=this.getPathToRoot(e,!1);for(let r=0;r<t.length;r++){let i=t[r];switch(this._updateHeight(i),this._balanceFactor(i)){case-2:i&&i.left&&(this._balanceFactor(i.left)<=0?this._balanceLL(i):this._balanceLR(i));break;case 2:i&&i.right&&(this._balanceFactor(i.right)>=0?this._balanceRR(i):this._balanceRL(i))}}}_balanceLL(e){let t=e.parent,r=e.left;e.parent=r,r&&r.right&&(r.right.parent=e),r&&(r.parent=t),e===this.root?r&&this._setRoot(r):t?.left===e?t.left=r:t&&(t.right=r),r&&(e.left=r.right,r.right=e),this._updateHeight(e),r&&this._updateHeight(r)}_balanceLR(e){let t=e.parent,r=e.left,i=null;r&&(i=r.right),e&&(e.parent=i),r&&(r.parent=i),i&&(i.left&&(i.left.parent=r),i.right&&(i.right.parent=e),i.parent=t),e===this.root?i&&this._setRoot(i):t&&(t.left===e?t.left=i:t.right=i),i&&(e.left=i.right,r&&(r.right=i.left),i.left=r,i.right=e),this._updateHeight(e),r&&this._updateHeight(r),i&&this._updateHeight(i)}_balanceRR(e){let t=e.parent,r=e.right;e.parent=r,r&&(r.left&&(r.left.parent=e),r.parent=t),e===this.root?r&&this._setRoot(r):t&&(t.left===e?t.left=r:t.right=r),r&&(e.right=r.left,r.left=e),this._updateHeight(e),r&&this._updateHeight(r)}_balanceRL(e){let t=e.parent,r=e.right,i=null;r&&(i=r.left),e.parent=i,r&&(r.parent=i),i&&(i.left&&(i.left.parent=e),i.right&&(i.right.parent=r),i.parent=t),e===this.root?i&&this._setRoot(i):t&&(t.left===e?t.left=i:t.right=i),i&&(e.right=i.left),r&&i&&(r.left=i.right),i&&(i.left=e),i&&(i.right=r),this._updateHeight(e),r&&this._updateHeight(r),i&&this._updateHeight(i)}};var se=class extends M{constructor(e,t){super(e,t),this._color="RED"}_color;get color(){return this._color}set color(e){this._color=e}},Ie=class extends I{constructor(e){super(e)}createNode(e,t){return new se(e,t)}};var O=class extends H{count;constructor(e,t,r=1){super(e,t),this.count=r}},De=class extends X{constructor(e){super(e)}_count=0;get count(){return this._count}createNode(e,t,r){return new O(e,t,r)}add(e,t,r=1){let i,n;if(e instanceof O?n=this.createNode(e.key,e.val,e.count):e===null?n=null:n=this.createNode(e,t,r),!this.root)this._setRoot(n),this._setSize(this.size+1),n&&this._setCount(this.count+n.count),i=this.root;else{let s=this.root,o=!0;for(;o;)s?n&&(this._compare(s.key,n.key)==="eq"?(s.val=n.val,s.count+=n.count,this._setCount(this.count+n.count),o=!1,i=s):this._compare(s.key,n.key)==="gt"?s.left===void 0?(s.left=n,this._setSize(this.size+1),this._setCount(this.count+n.count),o=!1,i=s.left):s.left&&(s=s.left):this._compare(s.key,n.key)==="lt"&&(s.right===void 0?(s.right=n,this._setSize(this.size+1),this._setCount(this.count+n.count),o=!1,i=s.right):s.right&&(s=s.right))):o=!1}return i&&this._balancePath(i),i}_addTo(e,t){if(t)return t.left===void 0?(t.left=e,e!==null&&(this._setSize(this.size+1),this._setCount(this.count+e.count)),t.left):t.right===void 0?(t.right=e,e!==null&&(this._setSize(this.size+1),this._setCount(this.count+e.count)),t.right):void 0}addMany(e,t){let r=[];for(let i=0;i<e.length;i++){let n=e[i];if(n instanceof O){r.push(this.add(n.key,n.val,n.count));continue}if(n===null){r.push(this.add(NaN,null,0));continue}r.push(this.add(n,t?.[i],1))}return r}perfectlyBalance(e=this.iterationType){let t=this.dfs(i=>i,"in"),r=t.length;if(t.length<1)return!1;if(this.clear(),e==="RECURSIVE"){let i=(n,s)=>{if(n>s)return;let o=n+Math.floor((s-n)/2),l=t[o];this.add(l.key,l.val,l.count),i(n,o-1),i(o+1,s)};return i(0,r-1),!0}else{let i=[[0,r-1]];for(;i.length>0;){let n=i.pop();if(n){let[s,o]=n;if(s<=o){let l=s+Math.floor((o-s)/2),h=t[l];this.add(h.key,h.val,h.count),i.push([l+1,o]),i.push([s,l-1])}}}return!0}}delete(e,t=!1){let r=[];if(!this.root)return r;let i=this.get(e);if(!i)return r;let n=i?.parent?i.parent:null,s=null,o=i;if(i.count>1&&!t)i.count--,this._setCount(this.count-1);else{if(i.left){let l=i.left?this.getRightMost(i.left):null;if(l){let h=l.parent;o=this._swap(i,l),h&&(h.right===l?h.right=l.left:h.left=l.left,s=h)}}else if(!n)i.right!==void 0&&this._setRoot(i.right);else{let{familyPosition:l}=i;l==="LEFT"||l==="ROOT_LEFT"?n.left=i.right:(l==="RIGHT"||l==="ROOT_RIGHT")&&(n.right=i.right),s=n}this._setSize(this.size-1),this._setCount(this.count-o.count)}return r.push({deleted:o,needBalanced:s}),s&&this._balancePath(s),r}clear(){super.clear(),this._setCount(0)}_swap(e,t){let{key:r,val:i,count:n,height:s}=t,o=this.createNode(r,i,n);return o&&(o.height=s,t.key=e.key,t.val=e.val,t.count=e.count,t.height=e.height,e.key=o.key,e.val=o.val,e.count=o.count,e.height=o.height),t}_setCount(e){this._count=e}};var Ae=class a{constructor(e,t,r){this._key=e,this._value=t||void 0,this._children=r||[]}_key;get key(){return this._key}set key(e){this._key=e}_value;get value(){return this._value}set value(e){this._value=e}_children;get children(){return this._children}set children(e){this._children=e}addChildren(e){this.children||(this.children=[]),e instanceof a?this.children.push(e):this.children=this.children.concat(e)}getHeight(){let e=0;if(this){let t=(r,i)=>{i>e&&(e=i);let{children:n}=r;if(n)for(let s=0,o=n.length;s<o;s++)t(n[s],i+1)};t(this,0)}return e}};var ze=class{_matrix;constructor(e){let{row:t,col:r,initialVal:i}=e;this._matrix=new Array(t).fill(void 0).map(()=>new Array(r).fill(i||0))}toArray(){return this._matrix}};var oe=class a{constructor(e=0,t=0,r=1){this.x=e;this.y=t;this.w=r}get isZero(){return this.x===0&&this.y===0}get length(){return Math.sqrt(this.x*this.x+this.y*this.y)}get lengthSq(){return this.x*this.x+this.y*this.y}get rounded(){return new a(Math.round(this.x),Math.round(this.y))}static add(e,t){return new a(e.x+t.x,e.y+t.y)}static subtract(e,t){return new a(e.x-t.x,e.y-t.y)}static subtractValue(e,t){return new a(e.x-t,e.y-t)}static multiply(e,t){return new a(e.x*t,e.y*t)}static divide(e,t){return new a(e.x/t,e.y/t)}static equals(e,t){return e.x===t.x&&e.y===t.y}static equalsRounded(e,t,r=12){let i=a.abs(a.subtract(e,t));return i.x<r&&i.y<r}static normalize(e){let t=e.length;return t>2220446049250313e-31?a.divide(e,t):e}static truncate(e,t){return e.length>t?a.multiply(a.normalize(e),t):e}static perp(e){return new a(-e.y,e.x)}static reverse(e){return new a(-e.x,-e.y)}static abs(e){return new a(Math.abs(e.x),Math.abs(e.y))}static dot(e,t){return e.x*t.x+e.y*t.y}static distance(e,t){let r=t.y-e.y,i=t.x-e.x;return Math.sqrt(r*r+i*i)}static distanceSq(e,t){let r=t.y-e.y,i=t.x-e.x;return r*r+i*i}static sign(e,t){return e.y*t.x>e.x*t.y?-1:1}static angle(e){let t=new a(0,-1),r=Math.acos(a.dot(e,t)/(e.length*t.length));return a.sign(e,t)===1?Math.PI*2-r:r}static random(e,t){let r=Math.floor(Math.random()*e-e/2),i=Math.floor(Math.random()*t-t/2);return new a(r,i)}zero(){this.x=0,this.y=0}},He=oe;var Oe=class a{_matrix;constructor(e){typeof e>"u"?this._matrix=a.identity:e instanceof He?(this._matrix=a.identity,this._matrix[0][0]=e.x,this._matrix[1][0]=e.y,this._matrix[2][0]=e.w):this._matrix=e}static get empty(){return[[],[],[]]}static get identity(){return[[1,0,0],[0,1,0],[0,0,1]]}get m(){return this._matrix}static add(e,t){let r=a.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++)r[i][n]=e.m[i][n]+t.m[i][n];return new a(r)}static subtract(e,t){let r=a.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++)r[i][n]=e.m[i][n]-t.m[i][n];return new a(r)}static multiply(e,t){let r=a.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++){r[i][n]=0;for(let s=0;s<3;s++)r[i][n]+=e.m[i][s]*t.m[s][n]}return new a(r)}static multiplyByValue(e,t){let r=a.empty;for(let i=0;i<3;i++)for(let n=0;n<3;n++)r[i][n]=e.m[i][n]*t;return new a(r)}static multiplyByVector(e,t){return a.multiply(e,new a(t)).toVector()}static view(e,t){let i=e/2,n=t/2,s=Math.cos(Math.PI);return new a([[1,0,i],[0,s*1,n],[0,0,1]])}static scale(e){return a.multiplyByValue(new a,e)}static rotate(e){let t=Math.cos(e),r=Math.sin(e);return new a([[t,-r,0],[r,t,0],[0,0,1]])}static translate(e){return new a([[1,0,e.x],[0,1,e.y],[0,0,e.w]])}toVector(){return new He(this._matrix[0][0],this._matrix[1][0])}};var le=class a{direction;turn;constructor(e,t){this.direction=e,this.turn=()=>new a(t[e],t)}},qe=class{onMove;_matrix;_cur;_character;_VISITED;constructor({matrix:e,turning:t,onMove:r,init:{cur:i,charDir:n,VISITED:s}}){this._matrix=e,this._cur=i,this._character=new le(n,t),this.onMove=r,this.onMove&&this.onMove(this._cur),this._VISITED=s,this._matrix[this._cur[0]][this._cur[1]]=this._VISITED}start(){for(;this.check(this._character.direction)||this.check(this._character.turn().direction);){let{direction:e}=this._character;this.check(e)?this.move(e):this.check(this._character.turn().direction)&&(this._character=this._character.turn())}}check(e){let t,r,i=this._matrix,[n,s]=this._cur;switch(e){case"up":if(r=i[n-1],!r)return!1;t=r[s];break;case"right":t=i[n][s+1];break;case"down":if(r=i[n+1],!r)return!1;t=r[s];break;case"left":t=i[n][s-1];break}return t!==void 0&&t!==this._VISITED}move(e){switch(e){case"up":this._cur[0]--;break;case"right":this._cur[1]++;break;case"down":this._cur[0]++;break;case"left":this._cur[1]--;break}let[t,r]=this._cur;this._matrix[t][r]=this._VISITED,this.onMove&&this.onMove(this._cur)}};var Q=class{constructor(e){this._key=e,this._isEnd=!1,this._children=new Map}_key;get key(){return this._key}set key(e){this._key=e}_children;get children(){return this._children}set children(e){this._children=e}_isEnd;get isEnd(){return this._isEnd}set isEnd(e){this._isEnd=e}},je=class{_caseSensitive;constructor(e,t=!0){if(this._root=new Q(""),this._caseSensitive=t,e)for(let r of e)this.add(r)}_root;get root(){return this._root}set root(e){this._root=e}add(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let i=t.children.get(r);i||(i=new Q(r),t.children.set(r,i)),t=i}return t.isEnd=!0,!0}has(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let i=t.children.get(r);if(!i)return!1;t=i}return t.isEnd}delete(e){e=this._caseProcess(e);let t=!1,r=(i,n)=>{let s=e[n],o=i.children.get(s);return o?n===e.length-1?o.isEnd?(o.children.size>0?o.isEnd=!1:i.children.delete(s),t=!0,!0):!1:r(o,n+1)&&!i.isEnd&&o.children.size===0?(i.children.delete(s),!0):!1:!1};return r(this.root,0),t}getHeight(){let e=this.root,t=0;if(e){let r=(i,n)=>{n>t&&(t=n);let{children:s}=i;if(s)for(let o of s.entries())r(o[1],n+1)};r(e,0)}return t}hasPurePrefix(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let i=t.children.get(r);if(!i)return!1;t=i}return!t.isEnd}hasPrefix(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let i=t.children.get(r);if(!i)return!1;t=i}return!0}hasCommonPrefix(e){e=this._caseProcess(e);let t="",r=i=>{if(t+=i.key,t!==e&&!i.isEnd)if(i&&i.children&&i.children.size===1)r(Array.from(i.children.values())[0]);else return};return r(this.root),t===e}getLongestCommonPrefix(){let e="",t=r=>{if(e+=r.key,!r.isEnd)if(r&&r.children&&r.children.size===1)t(Array.from(r.children.values())[0]);else return};return t(this.root),e}getWords(e="",t=Number.MAX_SAFE_INTEGER){e=this._caseProcess(e);let r=[],i=0;function n(o,l){for(let h of o.children.keys()){let d=o.children.get(h);d!==void 0&&n(d,l.concat(h))}if(o.isEnd){if(i>t-1)return;r.push(l),i++}}let s=this.root;if(e)for(let o of e){let l=s.children.get(o);l&&(s=l)}return s!==this.root&&n(s,e),r}_caseProcess(e){return this._caseSensitive||(e=e.toLowerCase()),e}};return Je($e);})();
2
+ /**
3
+ * data-structure-typed
4
+ *
5
+ * @author Tyler Zeng
6
+ * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
7
+ * @license MIT License
8
+ */
9
+ /**
10
+ * @license MIT
11
+ * @copyright Tyler Zeng <zrwusa@gmail.com>
12
+ * @class
13
+ */
14
+ /**
15
+ * data-structure-typed
16
+ * @author Kirk Qi
17
+ * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
18
+ * @license MIT License
19
+ */
20
+ /**
21
+ * data-structure-typed
22
+ *
23
+ * @author Kirk Qi
24
+ * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
25
+ * @license MIT License
26
+ */
27
+ //# sourceMappingURL=index.global.js.map