@mentra/miniapp 0.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/README.md +259 -0
  2. package/dist/background/index.d.ts +60 -0
  3. package/dist/background/index.d.ts.map +1 -0
  4. package/dist/background/index.js +25 -0
  5. package/dist/background/index.js.map +1 -0
  6. package/dist/background/register.d.ts +38 -0
  7. package/dist/background/register.d.ts.map +1 -0
  8. package/dist/background/register.js +75 -0
  9. package/dist/background/register.js.map +1 -0
  10. package/dist/dev-reload.d.ts +21 -0
  11. package/dist/dev-reload.d.ts.map +1 -0
  12. package/dist/dev-reload.js +62 -0
  13. package/dist/dev-reload.js.map +1 -0
  14. package/dist/envelope.d.ts +23 -0
  15. package/dist/envelope.d.ts.map +1 -0
  16. package/dist/envelope.js +47 -0
  17. package/dist/envelope.js.map +1 -0
  18. package/dist/globals.d.ts +54 -0
  19. package/dist/globals.d.ts.map +1 -0
  20. package/dist/globals.js +12 -0
  21. package/dist/globals.js.map +1 -0
  22. package/dist/index.d.ts +59 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +31 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/modules/actions.d.ts +54 -0
  27. package/dist/modules/actions.d.ts.map +1 -0
  28. package/dist/modules/actions.js +122 -0
  29. package/dist/modules/actions.js.map +1 -0
  30. package/dist/modules/auth.d.ts +25 -0
  31. package/dist/modules/auth.d.ts.map +1 -0
  32. package/dist/modules/auth.js +52 -0
  33. package/dist/modules/auth.js.map +1 -0
  34. package/dist/modules/base64.d.ts +16 -0
  35. package/dist/modules/base64.d.ts.map +1 -0
  36. package/dist/modules/base64.js +92 -0
  37. package/dist/modules/base64.js.map +1 -0
  38. package/dist/modules/blob.d.ts +161 -0
  39. package/dist/modules/blob.d.ts.map +1 -0
  40. package/dist/modules/blob.js +277 -0
  41. package/dist/modules/blob.js.map +1 -0
  42. package/dist/modules/camera.d.ts +170 -0
  43. package/dist/modules/camera.d.ts.map +1 -0
  44. package/dist/modules/camera.js +116 -0
  45. package/dist/modules/camera.js.map +1 -0
  46. package/dist/modules/cloud.d.ts +34 -0
  47. package/dist/modules/cloud.d.ts.map +1 -0
  48. package/dist/modules/cloud.js +70 -0
  49. package/dist/modules/cloud.js.map +1 -0
  50. package/dist/modules/dashboard.d.ts +16 -0
  51. package/dist/modules/dashboard.d.ts.map +1 -0
  52. package/dist/modules/dashboard.js +27 -0
  53. package/dist/modules/dashboard.js.map +1 -0
  54. package/dist/modules/display.d.ts +106 -0
  55. package/dist/modules/display.d.ts.map +1 -0
  56. package/dist/modules/display.js +57 -0
  57. package/dist/modules/display.js.map +1 -0
  58. package/dist/modules/events.d.ts +160 -0
  59. package/dist/modules/events.d.ts.map +1 -0
  60. package/dist/modules/events.js +168 -0
  61. package/dist/modules/events.js.map +1 -0
  62. package/dist/modules/glasses.d.ts +28 -0
  63. package/dist/modules/glasses.d.ts.map +1 -0
  64. package/dist/modules/glasses.js +39 -0
  65. package/dist/modules/glasses.js.map +1 -0
  66. package/dist/modules/heading.d.ts +16 -0
  67. package/dist/modules/heading.d.ts.map +1 -0
  68. package/dist/modules/heading.js +20 -0
  69. package/dist/modules/heading.js.map +1 -0
  70. package/dist/modules/imu.d.ts +31 -0
  71. package/dist/modules/imu.d.ts.map +1 -0
  72. package/dist/modules/imu.js +40 -0
  73. package/dist/modules/imu.js.map +1 -0
  74. package/dist/modules/input.d.ts +34 -0
  75. package/dist/modules/input.d.ts.map +1 -0
  76. package/dist/modules/input.js +50 -0
  77. package/dist/modules/input.js.map +1 -0
  78. package/dist/modules/led.d.ts +35 -0
  79. package/dist/modules/led.d.ts.map +1 -0
  80. package/dist/modules/led.js +39 -0
  81. package/dist/modules/led.js.map +1 -0
  82. package/dist/modules/location.d.ts +27 -0
  83. package/dist/modules/location.d.ts.map +1 -0
  84. package/dist/modules/location.js +35 -0
  85. package/dist/modules/location.js.map +1 -0
  86. package/dist/modules/mic.d.ts +44 -0
  87. package/dist/modules/mic.d.ts.map +1 -0
  88. package/dist/modules/mic.js +67 -0
  89. package/dist/modules/mic.js.map +1 -0
  90. package/dist/modules/miniapps.d.ts +72 -0
  91. package/dist/modules/miniapps.d.ts.map +1 -0
  92. package/dist/modules/miniapps.js +48 -0
  93. package/dist/modules/miniapps.js.map +1 -0
  94. package/dist/modules/navigation.d.ts +326 -0
  95. package/dist/modules/navigation.d.ts.map +1 -0
  96. package/dist/modules/navigation.js +386 -0
  97. package/dist/modules/navigation.js.map +1 -0
  98. package/dist/modules/permissions.d.ts +58 -0
  99. package/dist/modules/permissions.d.ts.map +1 -0
  100. package/dist/modules/permissions.js +66 -0
  101. package/dist/modules/permissions.js.map +1 -0
  102. package/dist/modules/phone.d.ts +95 -0
  103. package/dist/modules/phone.d.ts.map +1 -0
  104. package/dist/modules/phone.js +110 -0
  105. package/dist/modules/phone.js.map +1 -0
  106. package/dist/modules/pivots/engine.d.ts +169 -0
  107. package/dist/modules/pivots/engine.d.ts.map +1 -0
  108. package/dist/modules/pivots/engine.js +779 -0
  109. package/dist/modules/pivots/engine.js.map +1 -0
  110. package/dist/modules/pivots/geometry.d.ts +84 -0
  111. package/dist/modules/pivots/geometry.d.ts.map +1 -0
  112. package/dist/modules/pivots/geometry.js +371 -0
  113. package/dist/modules/pivots/geometry.js.map +1 -0
  114. package/dist/modules/pivots/instructions.d.ts +139 -0
  115. package/dist/modules/pivots/instructions.d.ts.map +1 -0
  116. package/dist/modules/pivots/instructions.js +280 -0
  117. package/dist/modules/pivots/instructions.js.map +1 -0
  118. package/dist/modules/speaker.d.ts +169 -0
  119. package/dist/modules/speaker.d.ts.map +1 -0
  120. package/dist/modules/speaker.js +251 -0
  121. package/dist/modules/speaker.js.map +1 -0
  122. package/dist/modules/storage.d.ts +50 -0
  123. package/dist/modules/storage.d.ts.map +1 -0
  124. package/dist/modules/storage.js +99 -0
  125. package/dist/modules/storage.js.map +1 -0
  126. package/dist/modules/stream.d.ts +129 -0
  127. package/dist/modules/stream.d.ts.map +1 -0
  128. package/dist/modules/stream.js +52 -0
  129. package/dist/modules/stream.js.map +1 -0
  130. package/dist/modules/system.d.ts +45 -0
  131. package/dist/modules/system.d.ts.map +1 -0
  132. package/dist/modules/system.js +42 -0
  133. package/dist/modules/system.js.map +1 -0
  134. package/dist/modules/transcription.d.ts +75 -0
  135. package/dist/modules/transcription.d.ts.map +1 -0
  136. package/dist/modules/transcription.js +106 -0
  137. package/dist/modules/transcription.js.map +1 -0
  138. package/dist/modules/translation.d.ts +59 -0
  139. package/dist/modules/translation.d.ts.map +1 -0
  140. package/dist/modules/translation.js +119 -0
  141. package/dist/modules/translation.js.map +1 -0
  142. package/dist/modules/ui.d.ts +186 -0
  143. package/dist/modules/ui.d.ts.map +1 -0
  144. package/dist/modules/ui.js +293 -0
  145. package/dist/modules/ui.js.map +1 -0
  146. package/dist/protocol.d.ts +299 -0
  147. package/dist/protocol.d.ts.map +1 -0
  148. package/dist/protocol.js +325 -0
  149. package/dist/protocol.js.map +1 -0
  150. package/dist/react/MentraProvider.d.ts +33 -0
  151. package/dist/react/MentraProvider.d.ts.map +1 -0
  152. package/dist/react/MentraProvider.js +15 -0
  153. package/dist/react/MentraProvider.js.map +1 -0
  154. package/dist/react/MiniappHeader.d.ts +44 -0
  155. package/dist/react/MiniappHeader.d.ts.map +1 -0
  156. package/dist/react/MiniappHeader.js +32 -0
  157. package/dist/react/MiniappHeader.js.map +1 -0
  158. package/dist/react/index.d.ts +13 -0
  159. package/dist/react/index.d.ts.map +1 -0
  160. package/dist/react/index.js +9 -0
  161. package/dist/react/index.js.map +1 -0
  162. package/dist/react/useCapabilities.d.ts +26 -0
  163. package/dist/react/useCapabilities.d.ts.map +1 -0
  164. package/dist/react/useCapabilities.js +27 -0
  165. package/dist/react/useCapabilities.js.map +1 -0
  166. package/dist/react/useCapsuleHeaderStyle.d.ts +27 -0
  167. package/dist/react/useCapsuleHeaderStyle.d.ts.map +1 -0
  168. package/dist/react/useCapsuleHeaderStyle.js +36 -0
  169. package/dist/react/useCapsuleHeaderStyle.js.map +1 -0
  170. package/dist/react/useColorScheme.d.ts +18 -0
  171. package/dist/react/useColorScheme.d.ts.map +1 -0
  172. package/dist/react/useColorScheme.js +24 -0
  173. package/dist/react/useColorScheme.js.map +1 -0
  174. package/dist/react/useConnected.d.ts +17 -0
  175. package/dist/react/useConnected.d.ts.map +1 -0
  176. package/dist/react/useConnected.js +39 -0
  177. package/dist/react/useConnected.js.map +1 -0
  178. package/dist/react/useRpc.d.ts +29 -0
  179. package/dist/react/useRpc.d.ts.map +1 -0
  180. package/dist/react/useRpc.js +82 -0
  181. package/dist/react/useRpc.js.map +1 -0
  182. package/dist/react/useSafeArea.d.ts +21 -0
  183. package/dist/react/useSafeArea.d.ts.map +1 -0
  184. package/dist/react/useSafeArea.js +22 -0
  185. package/dist/react/useSafeArea.js.map +1 -0
  186. package/dist/session.d.ts +312 -0
  187. package/dist/session.d.ts.map +1 -0
  188. package/dist/session.js +653 -0
  189. package/dist/session.js.map +1 -0
  190. package/dist/sub-path-types.test-d.d.ts +28 -0
  191. package/dist/sub-path-types.test-d.d.ts.map +1 -0
  192. package/dist/sub-path-types.test-d.js +37 -0
  193. package/dist/sub-path-types.test-d.js.map +1 -0
  194. package/dist/transport/auto.d.ts +35 -0
  195. package/dist/transport/auto.d.ts.map +1 -0
  196. package/dist/transport/auto.js +125 -0
  197. package/dist/transport/auto.js.map +1 -0
  198. package/dist/transport/dispatch.d.ts +43 -0
  199. package/dist/transport/dispatch.d.ts.map +1 -0
  200. package/dist/transport/dispatch.js +91 -0
  201. package/dist/transport/dispatch.js.map +1 -0
  202. package/dist/transport/local-socket.d.ts +28 -0
  203. package/dist/transport/local-socket.d.ts.map +1 -0
  204. package/dist/transport/local-socket.js +80 -0
  205. package/dist/transport/local-socket.js.map +1 -0
  206. package/dist/transport/mock.d.ts +54 -0
  207. package/dist/transport/mock.d.ts.map +1 -0
  208. package/dist/transport/mock.js +207 -0
  209. package/dist/transport/mock.js.map +1 -0
  210. package/dist/transport/postmessage.d.ts +36 -0
  211. package/dist/transport/postmessage.d.ts.map +1 -0
  212. package/dist/transport/postmessage.js +78 -0
  213. package/dist/transport/postmessage.js.map +1 -0
  214. package/dist/transport/types.d.ts +25 -0
  215. package/dist/transport/types.d.ts.map +1 -0
  216. package/dist/transport/types.js +11 -0
  217. package/dist/transport/types.js.map +1 -0
  218. package/dist/ui/index.d.ts +98 -0
  219. package/dist/ui/index.d.ts.map +1 -0
  220. package/dist/ui/index.js +32 -0
  221. package/dist/ui/index.js.map +1 -0
  222. package/package.json +84 -0
  223. package/src/background/index.ts +152 -0
  224. package/src/background/register.ts +85 -0
  225. package/src/dev-reload.ts +60 -0
  226. package/src/envelope.ts +54 -0
  227. package/src/globals.ts +62 -0
  228. package/src/index.ts +171 -0
  229. package/src/modules/actions.ts +156 -0
  230. package/src/modules/auth.ts +68 -0
  231. package/src/modules/base64.ts +87 -0
  232. package/src/modules/blob.ts +341 -0
  233. package/src/modules/camera.ts +242 -0
  234. package/src/modules/cloud.ts +94 -0
  235. package/src/modules/dashboard.ts +31 -0
  236. package/src/modules/display.ts +122 -0
  237. package/src/modules/events.ts +291 -0
  238. package/src/modules/glasses.ts +44 -0
  239. package/src/modules/heading.ts +23 -0
  240. package/src/modules/imu.ts +44 -0
  241. package/src/modules/input.ts +71 -0
  242. package/src/modules/led.ts +61 -0
  243. package/src/modules/location.ts +39 -0
  244. package/src/modules/mic.ts +74 -0
  245. package/src/modules/miniapps.ts +90 -0
  246. package/src/modules/navigation.ts +670 -0
  247. package/src/modules/permissions.ts +84 -0
  248. package/src/modules/phone.ts +155 -0
  249. package/src/modules/pivots/engine.ts +863 -0
  250. package/src/modules/pivots/geometry.ts +409 -0
  251. package/src/modules/pivots/instructions.ts +343 -0
  252. package/src/modules/speaker.ts +335 -0
  253. package/src/modules/storage.ts +109 -0
  254. package/src/modules/stream.ts +163 -0
  255. package/src/modules/system.ts +76 -0
  256. package/src/modules/transcription.ts +145 -0
  257. package/src/modules/translation.ts +149 -0
  258. package/src/modules/ui.ts +498 -0
  259. package/src/protocol.ts +378 -0
  260. package/src/react/MentraProvider.tsx +50 -0
  261. package/src/react/MiniappHeader.tsx +122 -0
  262. package/src/react/index.ts +12 -0
  263. package/src/react/useCapabilities.ts +29 -0
  264. package/src/react/useCapsuleHeaderStyle.ts +54 -0
  265. package/src/react/useColorScheme.ts +26 -0
  266. package/src/react/useConnected.ts +47 -0
  267. package/src/react/useRpc.ts +106 -0
  268. package/src/react/useSafeArea.ts +40 -0
  269. package/src/session.ts +886 -0
  270. package/src/sub-path-types.test-d.ts +49 -0
  271. package/src/transport/auto.ts +143 -0
  272. package/src/transport/dispatch.ts +106 -0
  273. package/src/transport/local-socket.ts +93 -0
  274. package/src/transport/mock.ts +251 -0
  275. package/src/transport/postmessage.ts +95 -0
  276. package/src/transport/types.ts +26 -0
  277. package/src/ui/index.ts +122 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/modules/pivots/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @fileoverview Private geometry helpers for the pivot engine.
3
+ *
4
+ * Lifted (with light edits) from the Navigation miniapp's
5
+ * `src/client/lib/geometry/{geometry,pivots}.ts`. Lives inside the
6
+ * SDK now so the public `navigation.getPivots()` / `onPivot()` APIs
7
+ * are fully self-contained — no consumer has to ship its own
8
+ * polyline-simplification + pivot-extraction code.
9
+ *
10
+ * Not exported from the SDK barrel. Internal only.
11
+ */
12
+ import type { LatLng } from "../navigation";
13
+ export type PivotDirection = "left" | "right";
14
+ /** Raw pivot returned by `extractPivots` — pre-enrichment, geometry only. */
15
+ export type RawPivot = {
16
+ lat: number;
17
+ lng: number;
18
+ direction: PivotDirection;
19
+ /** Index of this point in the *simplified* polyline (post-RDP). */
20
+ simplifiedRouteIndex: number;
21
+ /** Approximate index in the ORIGINAL polyline (pre-RDP). Best-effort lookup. */
22
+ rawRouteIndex: number;
23
+ /** Signed heading delta in degrees: +right, -left. */
24
+ headingDelta: number;
25
+ };
26
+ /** Great-circle distance in meters (haversine). */
27
+ export declare function haversineMeters(a: LatLng, b: LatLng): number;
28
+ /** Compass bearing from `a` to `b`, in degrees [0, 360). */
29
+ export declare function bearingDeg(a: LatLng, b: LatLng): number;
30
+ /** Smallest signed difference: target - actual, in [-180, 180]. */
31
+ export declare function signedAngleDiff(target: number, actual: number): number;
32
+ /**
33
+ * Extract raw turn pivots from a polyline. Returns a sparse list of
34
+ * meaningful turns — STRAIGHT segments, polyline noise, and tiny
35
+ * wobbles are filtered out.
36
+ *
37
+ * Algorithm:
38
+ * 1. RDP-simplify with epsilon = 5m
39
+ * 2. Accumulate consecutive same-direction bends into runs
40
+ * 3. Emit one pivot per run whose summed heading delta clears 25°
41
+ * 4. Merge same-direction pivots within 25m of each other
42
+ */
43
+ export declare function extractPivots(rawPoints: LatLng[]): RawPivot[];
44
+ /** Raw crossing leg returned by `extractCrossings`. */
45
+ export type RawCrossing = {
46
+ /** Polyline index of the curb on the user's current sidewalk (start of leg). */
47
+ startIndex: number;
48
+ /** Polyline index of the curb on the far sidewalk (end of leg). */
49
+ endIndex: number;
50
+ /** Coords at startIndex, surfaced for convenience. */
51
+ lat: number;
52
+ lng: number;
53
+ };
54
+ /**
55
+ * Detect crosswalk-shaped micro-legs in a route polyline. A crossing
56
+ * is a short leg (<maxLegMeters) that turns sharply (>minBendDeg) off
57
+ * the previous leg and is followed by a sharp turn *back* to roughly
58
+ * the original direction — the classic "step off the sidewalk → walk
59
+ * across → step back onto the sidewalk" shape.
60
+ *
61
+ * The shape check alone isn't enough though: at every intersection
62
+ * Google's polyline traces small perpendicular curb-cut bends even when
63
+ * the user is walking straight through on the SAME sidewalk. To filter
64
+ * those out we also require a meaningful perpendicular displacement —
65
+ * the route after the crossing must continue on the OTHER side of the
66
+ * pre-crossing path, not curve back onto it.
67
+ *
68
+ * Returns each crossing as the polyline indices that bracket the leg
69
+ * we'd skip. The engine wraps each into a synthetic `CROSS_STREET`
70
+ * pivot so glasses HUDs can announce "Cross the road" alongside the
71
+ * usual turn maneuvers.
72
+ */
73
+ export declare function extractCrossings(points: LatLng[], opts?: {
74
+ maxLegMeters?: number;
75
+ minBendDeg?: number;
76
+ minSidewalkSwitchMeters?: number;
77
+ }): RawCrossing[];
78
+ /**
79
+ * Cumulative haversine distance along a polyline from index 0 to
80
+ * each point. Returned array is the same length as `points` —
81
+ * `cumulative[i]` is meters from start to `points[i]`.
82
+ */
83
+ export declare function cumulativeDistances(points: LatLng[]): number[];
84
+ //# sourceMappingURL=geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/modules/pivots/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AAEzC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAA;AAE7C,6EAA6E;AAC7E,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,cAAc,CAAA;IACzB,mEAAmE;IACnE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAiBD,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAmDD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAwI7D;AAED,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAM,GACxF,WAAW,EAAE,CA6Cf;AA+CD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO9D"}
@@ -0,0 +1,371 @@
1
+ /**
2
+ * @fileoverview Private geometry helpers for the pivot engine.
3
+ *
4
+ * Lifted (with light edits) from the Navigation miniapp's
5
+ * `src/client/lib/geometry/{geometry,pivots}.ts`. Lives inside the
6
+ * SDK now so the public `navigation.getPivots()` / `onPivot()` APIs
7
+ * are fully self-contained — no consumer has to ship its own
8
+ * polyline-simplification + pivot-extraction code.
9
+ *
10
+ * Not exported from the SDK barrel. Internal only.
11
+ */
12
+ const TURN_THRESHOLD_DEG = 15;
13
+ const SAME_DIR_MERGE_M = 25;
14
+ const RDP_EPSILON_M = 5;
15
+ const MIN_BEND_PER_POINT_DEG = 10;
16
+ const STRAIGHT_SEGMENT_BREAK_M = 1;
17
+ /**
18
+ * Pivots within this radius of each other are treated as one
19
+ * intersection and collapsed into a single net-direction pivot. The
20
+ * Routes API + walking polylines often split a single perceived turn
21
+ * (e.g. crossing a 6-way intersection diagonally) into multiple tight
22
+ * left/right/left zigzag pivots over ~10-20m. Merging them keeps the
23
+ * UI announcing one turn per real-world intersection.
24
+ */
25
+ const INTERSECTION_CLUSTER_M = 30;
26
+ /** Great-circle distance in meters (haversine). */
27
+ export function haversineMeters(a, b) {
28
+ const R = 6371000;
29
+ const toRad = (d) => (d * Math.PI) / 180;
30
+ const dLat = toRad(b.lat - a.lat);
31
+ const dLng = toRad(b.lng - a.lng);
32
+ const lat1 = toRad(a.lat);
33
+ const lat2 = toRad(b.lat);
34
+ const x = Math.sin(dLat / 2) ** 2 + Math.sin(dLng / 2) ** 2 * Math.cos(lat1) * Math.cos(lat2);
35
+ return 2 * R * Math.asin(Math.sqrt(x));
36
+ }
37
+ /** Compass bearing from `a` to `b`, in degrees [0, 360). */
38
+ export function bearingDeg(a, b) {
39
+ const toRad = (d) => (d * Math.PI) / 180;
40
+ const toDeg = (r) => (r * 180) / Math.PI;
41
+ const lat1 = toRad(a.lat);
42
+ const lat2 = toRad(b.lat);
43
+ const dLng = toRad(b.lng - a.lng);
44
+ const y = Math.sin(dLng) * Math.cos(lat2);
45
+ const x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLng);
46
+ return (toDeg(Math.atan2(y, x)) + 360) % 360;
47
+ }
48
+ /** Smallest signed difference: target - actual, in [-180, 180]. */
49
+ export function signedAngleDiff(target, actual) {
50
+ return ((target - actual + 540) % 360) - 180;
51
+ }
52
+ /**
53
+ * Ramer-Douglas-Peucker polyline simplification. Returns indices into
54
+ * the ORIGINAL `points` array that survive the pass.
55
+ */
56
+ function rdpSimplify(points, epsilonMeters) {
57
+ if (points.length < 3)
58
+ return points.map((_, i) => i);
59
+ const keep = new Array(points.length).fill(false);
60
+ keep[0] = true;
61
+ keep[points.length - 1] = true;
62
+ const stack = [[0, points.length - 1]];
63
+ while (stack.length) {
64
+ const [lo, hi] = stack.pop();
65
+ let maxDist = 0;
66
+ let maxIdx = -1;
67
+ for (let i = lo + 1; i < hi; i++) {
68
+ const d = perpDistMeters(points[i], points[lo], points[hi]);
69
+ if (d > maxDist) {
70
+ maxDist = d;
71
+ maxIdx = i;
72
+ }
73
+ }
74
+ if (maxIdx !== -1 && maxDist > epsilonMeters) {
75
+ keep[maxIdx] = true;
76
+ stack.push([lo, maxIdx], [maxIdx, hi]);
77
+ }
78
+ }
79
+ const out = [];
80
+ for (let i = 0; i < keep.length; i++)
81
+ if (keep[i])
82
+ out.push(i);
83
+ return out;
84
+ }
85
+ /** Perpendicular distance from `p` to the infinite line a–b, in meters. */
86
+ function perpDistMeters(p, a, b) {
87
+ const mPerDegLat = 111320;
88
+ const mPerDegLng = 111320 * Math.cos((a.lat * Math.PI) / 180);
89
+ const bx = (b.lng - a.lng) * mPerDegLng;
90
+ const by = (b.lat - a.lat) * mPerDegLat;
91
+ const px = (p.lng - a.lng) * mPerDegLng;
92
+ const py = (p.lat - a.lat) * mPerDegLat;
93
+ const dx = bx;
94
+ const dy = by;
95
+ const len = Math.sqrt(dx * dx + dy * dy);
96
+ if (len === 0)
97
+ return Math.sqrt(px * px + py * py);
98
+ return Math.abs(dx * -py - -px * dy) / len;
99
+ }
100
+ /**
101
+ * Extract raw turn pivots from a polyline. Returns a sparse list of
102
+ * meaningful turns — STRAIGHT segments, polyline noise, and tiny
103
+ * wobbles are filtered out.
104
+ *
105
+ * Algorithm:
106
+ * 1. RDP-simplify with epsilon = 5m
107
+ * 2. Accumulate consecutive same-direction bends into runs
108
+ * 3. Emit one pivot per run whose summed heading delta clears 25°
109
+ * 4. Merge same-direction pivots within 25m of each other
110
+ */
111
+ export function extractPivots(rawPoints) {
112
+ if (rawPoints.length < 3)
113
+ return [];
114
+ const keptIdx = rdpSimplify(rawPoints, RDP_EPSILON_M);
115
+ const simplified = keptIdx.map((i) => rawPoints[i]);
116
+ if (simplified.length < 3)
117
+ return [];
118
+ // Per-point signed deltas
119
+ const deltas = [];
120
+ for (let i = 1; i < simplified.length - 1; i++) {
121
+ const inBearing = bearingDeg(simplified[i - 1], simplified[i]);
122
+ const outBearing = bearingDeg(simplified[i], simplified[i + 1]);
123
+ deltas.push(signedAngleDiff(outBearing, inBearing));
124
+ }
125
+ const candidates = [];
126
+ let runStart = -1;
127
+ let runSum = 0;
128
+ let runSign = 0;
129
+ const flushRun = (endExclusive) => {
130
+ if (runStart === -1)
131
+ return;
132
+ if (Math.abs(runSum) >= TURN_THRESHOLD_DEG) {
133
+ let bestIdx = runStart;
134
+ let bestAbs = 0;
135
+ for (let k = runStart; k < endExclusive; k++) {
136
+ const a = Math.abs(deltas[k]);
137
+ if (a > bestAbs) {
138
+ bestAbs = a;
139
+ bestIdx = k;
140
+ }
141
+ }
142
+ const simplifiedIdx = bestIdx + 1;
143
+ candidates.push({
144
+ lat: simplified[simplifiedIdx].lat,
145
+ lng: simplified[simplifiedIdx].lng,
146
+ direction: runSum > 0 ? "right" : "left",
147
+ simplifiedRouteIndex: simplifiedIdx,
148
+ rawRouteIndex: keptIdx[simplifiedIdx],
149
+ headingDelta: runSum,
150
+ });
151
+ }
152
+ runStart = -1;
153
+ runSum = 0;
154
+ runSign = 0;
155
+ };
156
+ let metersSinceLastBend = 0;
157
+ for (let k = 0; k < deltas.length; k++) {
158
+ const d = deltas[k];
159
+ const sign = d > 0 ? 1 : d < 0 ? -1 : 0;
160
+ const segLen = haversineMeters(simplified[k + 1], simplified[k + 2]);
161
+ if (sign === 0 || Math.abs(d) < MIN_BEND_PER_POINT_DEG) {
162
+ if (runStart !== -1) {
163
+ if (sign === runSign || sign === 0)
164
+ runSum += d;
165
+ metersSinceLastBend += segLen;
166
+ if (metersSinceLastBend >= STRAIGHT_SEGMENT_BREAK_M) {
167
+ flushRun(k + 1);
168
+ }
169
+ }
170
+ continue;
171
+ }
172
+ if (runStart === -1) {
173
+ runStart = k;
174
+ runSum = d;
175
+ runSign = sign;
176
+ metersSinceLastBend = segLen;
177
+ }
178
+ else if (sign === runSign) {
179
+ if (metersSinceLastBend >= STRAIGHT_SEGMENT_BREAK_M) {
180
+ flushRun(k);
181
+ runStart = k;
182
+ runSum = d;
183
+ runSign = sign;
184
+ }
185
+ else {
186
+ runSum += d;
187
+ }
188
+ metersSinceLastBend = segLen;
189
+ }
190
+ else {
191
+ flushRun(k);
192
+ runStart = k;
193
+ runSum = d;
194
+ runSign = sign;
195
+ metersSinceLastBend = segLen;
196
+ }
197
+ }
198
+ flushRun(deltas.length);
199
+ // Merge same-direction pivots that are close together.
200
+ const merged = [];
201
+ for (const p of candidates) {
202
+ const last = merged[merged.length - 1];
203
+ if (last &&
204
+ last.direction === p.direction &&
205
+ haversineMeters({ lat: last.lat, lng: last.lng }, { lat: p.lat, lng: p.lng }) < SAME_DIR_MERGE_M) {
206
+ if (Math.abs(p.headingDelta) > Math.abs(last.headingDelta)) {
207
+ merged[merged.length - 1] = p;
208
+ }
209
+ continue;
210
+ }
211
+ merged.push(p);
212
+ }
213
+ // Intersection-cluster merge: collapse pivots within
214
+ // INTERSECTION_CLUSTER_M of each other regardless of direction. The
215
+ // resulting pivot inherits the net heading delta — if a tight
216
+ // left→right→left zigzag at one intersection nets out to a right
217
+ // turn, the merged pivot is a right. The anchor lat/lng is the pivot
218
+ // with the largest individual heading delta in the cluster (most
219
+ // likely to be the "real" turn vertex). We tag the merged pivot with
220
+ // the SUMMED `headingDelta` so consumers can still see how sharp the
221
+ // net turn was.
222
+ const clustered = [];
223
+ for (const p of merged) {
224
+ const last = clustered[clustered.length - 1];
225
+ if (last && haversineMeters({ lat: last.lat, lng: last.lng }, { lat: p.lat, lng: p.lng }) < INTERSECTION_CLUSTER_M) {
226
+ const netDelta = last.headingDelta + p.headingDelta;
227
+ // Anchor on whichever pivot had the larger absolute bend — that's
228
+ // typically the geometric vertex of the actual turn.
229
+ const anchor = Math.abs(p.headingDelta) > Math.abs(last.headingDelta) ? p : last;
230
+ clustered[clustered.length - 1] = {
231
+ ...anchor,
232
+ direction: netDelta > 0 ? "right" : "left",
233
+ headingDelta: netDelta,
234
+ };
235
+ continue;
236
+ }
237
+ clustered.push(p);
238
+ }
239
+ // Discard clusters whose NET turn fell back below the threshold
240
+ // (e.g. a left followed by an equal-magnitude right that cancels out
241
+ // — a pure jog with no real direction change).
242
+ return clustered.filter((p) => Math.abs(p.headingDelta) >= TURN_THRESHOLD_DEG);
243
+ }
244
+ /**
245
+ * Detect crosswalk-shaped micro-legs in a route polyline. A crossing
246
+ * is a short leg (<maxLegMeters) that turns sharply (>minBendDeg) off
247
+ * the previous leg and is followed by a sharp turn *back* to roughly
248
+ * the original direction — the classic "step off the sidewalk → walk
249
+ * across → step back onto the sidewalk" shape.
250
+ *
251
+ * The shape check alone isn't enough though: at every intersection
252
+ * Google's polyline traces small perpendicular curb-cut bends even when
253
+ * the user is walking straight through on the SAME sidewalk. To filter
254
+ * those out we also require a meaningful perpendicular displacement —
255
+ * the route after the crossing must continue on the OTHER side of the
256
+ * pre-crossing path, not curve back onto it.
257
+ *
258
+ * Returns each crossing as the polyline indices that bracket the leg
259
+ * we'd skip. The engine wraps each into a synthetic `CROSS_STREET`
260
+ * pivot so glasses HUDs can announce "Cross the road" alongside the
261
+ * usual turn maneuvers.
262
+ */
263
+ export function extractCrossings(points, opts = {}) {
264
+ const maxLeg = opts.maxLegMeters ?? 25;
265
+ const minBend = opts.minBendDeg ?? 60;
266
+ // Minimum perpendicular distance from the post-crossing line back to
267
+ // the pre-crossing line. ~4m is wider than any sidewalk + GPS noise
268
+ // and narrower than a typical road. A real sidewalk-switch easily
269
+ // clears this; a curb-cut zigzag at a crosswalk you DON'T take stays
270
+ // well under it.
271
+ const minSwitch = opts.minSidewalkSwitchMeters ?? 4;
272
+ // How far past the crossing's end to sample for the displacement
273
+ // check. ~10m gives the polyline room to resume its post-crossing
274
+ // direction without being influenced by an immediate follow-on turn.
275
+ const sampleMeters = 10;
276
+ const out = [];
277
+ if (points.length < 4)
278
+ return out;
279
+ for (let i = 1; i < points.length - 2; i++) {
280
+ const prev = points[i - 1];
281
+ const here = points[i];
282
+ const next = points[i + 1];
283
+ const afterNext = points[i + 2];
284
+ const legOut = haversineMeters(here, next);
285
+ if (legOut >= maxLeg)
286
+ continue;
287
+ const bearIn = bearingDeg(prev, here);
288
+ const bearOut = bearingDeg(here, next);
289
+ const bend = Math.abs(signedAngleDiff(bearIn, bearOut));
290
+ if (bend <= minBend)
291
+ continue;
292
+ const bearAfter = bearingDeg(next, afterNext);
293
+ const bendBack = Math.abs(signedAngleDiff(bearOut, bearAfter));
294
+ const inOutDelta = Math.abs(signedAngleDiff(bearIn, bearAfter));
295
+ if (!(bendBack > minBend && inOutDelta < minBend))
296
+ continue;
297
+ // Displacement gate. Walk ~sampleMeters along the post-crossing
298
+ // polyline from `next` and ask: how far is that point from the
299
+ // pre-crossing line (extended forward through `here`)? Pass-through
300
+ // crosswalk traces have the route curving back to the same side
301
+ // (displacement ≈ 0). Real sidewalk-switches leave the route on
302
+ // the opposite side (displacement ≈ road width).
303
+ const sample = walkAlongPolyline(points, i + 1, sampleMeters);
304
+ if (!sample)
305
+ continue;
306
+ const displacement = perpDistanceMeters(sample, prev, here);
307
+ if (displacement < minSwitch)
308
+ continue;
309
+ out.push({ startIndex: i, endIndex: i + 1, lat: here.lat, lng: here.lng });
310
+ }
311
+ return out;
312
+ }
313
+ /**
314
+ * Walk forward from polyline index `startIdx` by `meters` and return
315
+ * the interpolated LatLng. Returns null when the remaining polyline
316
+ * is shorter than `meters` (we'd be measuring noise at the tail).
317
+ */
318
+ function walkAlongPolyline(points, startIdx, meters) {
319
+ if (startIdx >= points.length - 1)
320
+ return null;
321
+ let remaining = meters;
322
+ let idx = startIdx;
323
+ while (idx < points.length - 1) {
324
+ const a = points[idx];
325
+ const b = points[idx + 1];
326
+ const segLen = haversineMeters(a, b);
327
+ if (remaining <= segLen) {
328
+ const t = segLen > 0 ? remaining / segLen : 0;
329
+ return { lat: a.lat + (b.lat - a.lat) * t, lng: a.lng + (b.lng - a.lng) * t };
330
+ }
331
+ remaining -= segLen;
332
+ idx++;
333
+ }
334
+ return null;
335
+ }
336
+ /**
337
+ * Perpendicular distance in meters from `p` to the infinite line
338
+ * through `a → b`. Local-flat-earth projection — fine for the scales
339
+ * we're checking (a single intersection's worth of polyline).
340
+ */
341
+ function perpDistanceMeters(p, a, b) {
342
+ const mPerDegLat = 111320;
343
+ const mPerDegLng = 111320 * Math.cos((a.lat * Math.PI) / 180);
344
+ const ax = a.lng * mPerDegLng;
345
+ const ay = a.lat * mPerDegLat;
346
+ const bx = b.lng * mPerDegLng;
347
+ const by = b.lat * mPerDegLat;
348
+ const px = p.lng * mPerDegLng;
349
+ const py = p.lat * mPerDegLat;
350
+ const dx = bx - ax;
351
+ const dy = by - ay;
352
+ const len = Math.sqrt(dx * dx + dy * dy);
353
+ if (len === 0)
354
+ return Math.hypot(px - ax, py - ay);
355
+ // |cross product| / |line vector| = perpendicular distance.
356
+ return Math.abs(dx * (py - ay) - dy * (px - ax)) / len;
357
+ }
358
+ /**
359
+ * Cumulative haversine distance along a polyline from index 0 to
360
+ * each point. Returned array is the same length as `points` —
361
+ * `cumulative[i]` is meters from start to `points[i]`.
362
+ */
363
+ export function cumulativeDistances(points) {
364
+ const out = new Array(points.length);
365
+ out[0] = 0;
366
+ for (let i = 1; i < points.length; i++) {
367
+ out[i] = out[i - 1] + haversineMeters(points[i - 1], points[i]);
368
+ }
369
+ return out;
370
+ }
371
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/modules/pivots/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,aAAa,GAAG,CAAC,CAAA;AACvB,MAAM,sBAAsB,GAAG,EAAE,CAAA;AACjC,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAClC;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,EAAE,CAAA;AAEjC,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,CAAC,GAAG,OAAS,CAAA;IACnB,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7F,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC7C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;IAChD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5F,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAC9C,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc;IAC5D,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAC9C,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAgB,EAAE,aAAqB;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAErD,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACd,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAE9B,MAAM,KAAK,GAA4B,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,EAAG,CAAA;QAC7B,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,MAAM,GAAG,CAAC,CAAC,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3D,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,CAAA;gBACX,MAAM,GAAG,CAAC,CAAA;YACZ,CAAC;QACH,CAAC;QACD,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;YACnB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9D,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,2EAA2E;AAC3E,SAAS,cAAc,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACrD,MAAM,UAAU,GAAG,MAAO,CAAA;IAC1B,MAAM,UAAU,GAAG,MAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;IACvC,MAAM,EAAE,GAAG,EAAE,CAAA;IACb,MAAM,EAAE,GAAG,EAAE,CAAA;IACb,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IACxC,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAA;AAC5C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,SAAmB;IAC/C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IACrD,MAAM,UAAU,GAAa,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAEpC,0BAA0B;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,UAAU,GAAe,EAAE,CAAA;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;IACjB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,EAAE;QACxC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,OAAM;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC3C,IAAI,OAAO,GAAG,QAAQ,CAAA;YACtB,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,CAAA;oBACX,OAAO,GAAG,CAAC,CAAA;gBACb,CAAC;YACH,CAAC;YACD,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,CAAA;YACjC,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG;gBAClC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG;gBAClC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBACxC,oBAAoB,EAAE,aAAa;gBACnC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;gBACrC,YAAY,EAAE,MAAM;aACrB,CAAC,CAAA;QACJ,CAAC;QACD,QAAQ,GAAG,CAAC,CAAC,CAAA;QACb,MAAM,GAAG,CAAC,CAAA;QACV,OAAO,GAAG,CAAC,CAAA;IACb,CAAC,CAAA;IAED,IAAI,mBAAmB,GAAG,CAAC,CAAA;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACnB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEpE,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,sBAAsB,EAAE,CAAC;YACvD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,CAAC;oBAAE,MAAM,IAAI,CAAC,CAAA;gBAC/C,mBAAmB,IAAI,MAAM,CAAA;gBAC7B,IAAI,mBAAmB,IAAI,wBAAwB,EAAE,CAAC;oBACpD,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACjB,CAAC;YACH,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,CAAA;YACZ,MAAM,GAAG,CAAC,CAAA;YACV,OAAO,GAAG,IAAI,CAAA;YACd,mBAAmB,GAAG,MAAM,CAAA;QAC9B,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,mBAAmB,IAAI,wBAAwB,EAAE,CAAC;gBACpD,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACX,QAAQ,GAAG,CAAC,CAAA;gBACZ,MAAM,GAAG,CAAC,CAAA;gBACV,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,CAAA;YACb,CAAC;YACD,mBAAmB,GAAG,MAAM,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,CAAC,CAAC,CAAA;YACX,QAAQ,GAAG,CAAC,CAAA;YACZ,MAAM,GAAG,CAAC,CAAA;YACV,OAAO,GAAG,IAAI,CAAA;YACd,mBAAmB,GAAG,MAAM,CAAA;QAC9B,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAEvB,uDAAuD;IACvD,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IACE,IAAI;YACJ,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAC9B,eAAe,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAC,CAAC,GAAG,gBAAgB,EAC5F,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;YACD,SAAQ;QACV,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,qDAAqD;IACrD,oEAAoE;IACpE,8DAA8D;IAC9D,iEAAiE;IACjE,qEAAqE;IACrE,iEAAiE;IACjE,qEAAqE;IACrE,qEAAqE;IACrE,gBAAgB;IAChB,MAAM,SAAS,GAAe,EAAE,CAAA;IAChC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC5C,IAAI,IAAI,IAAI,eAAe,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAC,CAAC,GAAG,sBAAsB,EAAE,CAAC;YAC/G,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAA;YACnD,kEAAkE;YAClE,qDAAqD;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAChF,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;gBAChC,GAAG,MAAM;gBACT,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBAC1C,YAAY,EAAE,QAAQ;aACvB,CAAA;YACD,SAAQ;QACV,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,gEAAgE;IAChE,qEAAqE;IACrE,+CAA+C;IAC/C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,CAAA;AAChF,CAAC;AAaD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAgB,EAChB,OAAuF,EAAE;IAEzF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;IACrC,qEAAqE;IACrE,oEAAoE;IACpE,kEAAkE;IAClE,qEAAqE;IACrE,iBAAiB;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAA;IACnD,iEAAiE;IACjE,kEAAkE;IAClE,qEAAqE;IACrE,MAAM,YAAY,GAAG,EAAE,CAAA;IACvB,MAAM,GAAG,GAAkB,EAAE,CAAA;IAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,MAAM,IAAI,MAAM;YAAE,SAAQ;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACvD,IAAI,IAAI,IAAI,OAAO;YAAE,SAAQ;QAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;QAC/D,IAAI,CAAC,CAAC,QAAQ,GAAG,OAAO,IAAI,UAAU,GAAG,OAAO,CAAC;YAAE,SAAQ;QAE3D,gEAAgE;QAChE,+DAA+D;QAC/D,oEAAoE;QACpE,gEAAgE;QAChE,gEAAgE;QAChE,iDAAiD;QACjD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM;YAAE,SAAQ;QACrB,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3D,IAAI,YAAY,GAAG,SAAS;YAAE,SAAQ;QAEtC,GAAG,CAAC,IAAI,CAAC,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,MAAgB,EAAE,QAAgB,EAAE,MAAc;IAC3E,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,SAAS,GAAG,MAAM,CAAA;IACtB,IAAI,GAAG,GAAG,QAAQ,CAAA;IAClB,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7C,OAAO,EAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,CAAA;QAC7E,CAAC;QACD,SAAS,IAAI,MAAM,CAAA;QACnB,GAAG,EAAE,CAAA;IACP,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACzD,MAAM,UAAU,GAAG,MAAO,CAAA;IAC1B,MAAM,UAAU,GAAG,MAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;IAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAClB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IACxC,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAClD,4DAA4D;IAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAgB;IAClD,MAAM,GAAG,GAAa,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}