@drawtonomy/sdk 0.6.0 → 0.8.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.
- package/README.ja.md +36 -0
- package/README.md +16 -2
- package/dist/exporter/index.d.ts +4 -0
- package/dist/exporter/index.d.ts.map +1 -1
- package/dist/exporter/index.js +9 -3
- package/dist/exporter/index.js.map +1 -1
- package/dist/exporter/lanelet2.d.ts +26 -0
- package/dist/exporter/lanelet2.d.ts.map +1 -0
- package/dist/exporter/lanelet2.js +261 -0
- package/dist/exporter/lanelet2.js.map +1 -0
- package/dist/exporter/opendrive.d.ts.map +1 -1
- package/dist/exporter/opendrive.js +54 -1
- package/dist/exporter/opendrive.js.map +1 -1
- package/dist/exporter/osmParser.d.ts +54 -0
- package/dist/exporter/osmParser.d.ts.map +1 -0
- package/dist/exporter/osmParser.js +247 -0
- package/dist/exporter/osmParser.js.map +1 -0
- package/dist/exporter/osmToShapes.d.ts +107 -0
- package/dist/exporter/osmToShapes.d.ts.map +1 -0
- package/dist/exporter/osmToShapes.js +370 -0
- package/dist/exporter/osmToShapes.js.map +1 -0
- package/dist/exporter/projection.d.ts +36 -0
- package/dist/exporter/projection.d.ts.map +1 -0
- package/dist/exporter/projection.js +65 -0
- package/dist/exporter/projection.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -6
- package/LICENSE +0 -190
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
// Convert parsed Lanelet2 OSM data into the shape primitives that the
|
|
2
|
+
// drawtonomy editor consumes (points, linestrings, lanes).
|
|
3
|
+
//
|
|
4
|
+
// The output is the intermediate `ImportedShapes` structure used by the
|
|
5
|
+
// editor's import flow — not a full DrawtonomySnapshot — because the editor
|
|
6
|
+
// needs per-shape positioning + bounds to drive its chunked import (camera
|
|
7
|
+
// alignment, progress reporting, etc.). Callers can wrap the result into
|
|
8
|
+
// shapes themselves.
|
|
9
|
+
import { latLonToCanvas } from './osmParser';
|
|
10
|
+
/** Default allocator: monotonic counter per shape kind. */
|
|
11
|
+
export function createShapeIdAllocator() {
|
|
12
|
+
const counters = { point: 0, linestring: 0, lane: 0 };
|
|
13
|
+
return {
|
|
14
|
+
next(kind) {
|
|
15
|
+
const id = `shape:${kind}_${counters[kind]}`;
|
|
16
|
+
counters[kind] += 1;
|
|
17
|
+
return id;
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function getMiddlePoint(points) {
|
|
22
|
+
if (points.length === 0)
|
|
23
|
+
return { x: 0, y: 0 };
|
|
24
|
+
if (points.length === 1)
|
|
25
|
+
return points[0];
|
|
26
|
+
if (points.length === 2) {
|
|
27
|
+
return {
|
|
28
|
+
x: (points[0].x + points[1].x) / 2,
|
|
29
|
+
y: (points[0].y + points[1].y) / 2,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return points[Math.floor(points.length / 2)];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Decide whether to reverse the left and/or right boundary so the lane is
|
|
36
|
+
* interpreted consistently by the editor.
|
|
37
|
+
*
|
|
38
|
+
* In Lanelet2, the way's node order defines the lane direction (the left
|
|
39
|
+
* boundary's direction is the lane's direction). This routine preserves that
|
|
40
|
+
* direction whenever possible, only flipping a boundary when needed to keep
|
|
41
|
+
* the right-of-left invariant.
|
|
42
|
+
*/
|
|
43
|
+
export function alignBoundaries(leftPoints, rightPoints) {
|
|
44
|
+
if (leftPoints.length < 2 || rightPoints.length < 2) {
|
|
45
|
+
return { invertLeft: false, invertRight: false };
|
|
46
|
+
}
|
|
47
|
+
const getEffective = (points, invert) => invert ? [...points].reverse() : points;
|
|
48
|
+
const areParallel = (left, right) => {
|
|
49
|
+
const ls = left[0], le = left[left.length - 1];
|
|
50
|
+
const rs = right[0], re = right[right.length - 1];
|
|
51
|
+
const parallelDist = Math.hypot(ls.x - rs.x, ls.y - rs.y) + Math.hypot(le.x - re.x, le.y - re.y);
|
|
52
|
+
const crossDist = Math.hypot(ls.x - re.x, ls.y - re.y) + Math.hypot(le.x - rs.x, le.y - rs.y);
|
|
53
|
+
return parallelDist <= crossDist;
|
|
54
|
+
};
|
|
55
|
+
const isRightOnRightSide = (left, right) => {
|
|
56
|
+
if (left.length < 2 || right.length < 1)
|
|
57
|
+
return false;
|
|
58
|
+
const leftDir = {
|
|
59
|
+
x: left[left.length - 1].x - left[0].x,
|
|
60
|
+
y: left[left.length - 1].y - left[0].y,
|
|
61
|
+
};
|
|
62
|
+
const leftMid = getMiddlePoint(left);
|
|
63
|
+
const rightMid = getMiddlePoint(right);
|
|
64
|
+
const leftToRight = {
|
|
65
|
+
x: rightMid.x - leftMid.x,
|
|
66
|
+
y: rightMid.y - leftMid.y,
|
|
67
|
+
};
|
|
68
|
+
// Cross product. In screen coordinates (Y points down), the sign is
|
|
69
|
+
// inverted vs. standard math convention; positive means "right is on the
|
|
70
|
+
// right of left".
|
|
71
|
+
const cross = leftDir.x * leftToRight.y - leftDir.y * leftToRight.x;
|
|
72
|
+
if (Math.abs(cross) < 1e-6) {
|
|
73
|
+
// Converging boundaries: fall back to comparing start-to-start.
|
|
74
|
+
const leftToRightStart = {
|
|
75
|
+
x: right[0].x - left[0].x,
|
|
76
|
+
y: right[0].y - left[0].y,
|
|
77
|
+
};
|
|
78
|
+
const crossStart = leftDir.x * leftToRightStart.y - leftDir.y * leftToRightStart.x;
|
|
79
|
+
return crossStart > 0;
|
|
80
|
+
}
|
|
81
|
+
return cross > 0;
|
|
82
|
+
};
|
|
83
|
+
if (areParallel(leftPoints, rightPoints) && isRightOnRightSide(leftPoints, rightPoints)) {
|
|
84
|
+
return { invertLeft: false, invertRight: false };
|
|
85
|
+
}
|
|
86
|
+
const rightInverted = getEffective(rightPoints, true);
|
|
87
|
+
if (areParallel(leftPoints, rightInverted) && isRightOnRightSide(leftPoints, rightInverted)) {
|
|
88
|
+
return { invertLeft: false, invertRight: true };
|
|
89
|
+
}
|
|
90
|
+
const leftInverted = getEffective(leftPoints, true);
|
|
91
|
+
if (areParallel(leftInverted, rightPoints) && isRightOnRightSide(leftInverted, rightPoints)) {
|
|
92
|
+
return { invertLeft: true, invertRight: false };
|
|
93
|
+
}
|
|
94
|
+
if (areParallel(leftInverted, rightInverted) && isRightOnRightSide(leftInverted, rightInverted)) {
|
|
95
|
+
return { invertLeft: true, invertRight: true };
|
|
96
|
+
}
|
|
97
|
+
if (areParallel(leftPoints, rightPoints)) {
|
|
98
|
+
return { invertLeft: false, invertRight: false };
|
|
99
|
+
}
|
|
100
|
+
if (areParallel(leftPoints, rightInverted)) {
|
|
101
|
+
return { invertLeft: false, invertRight: true };
|
|
102
|
+
}
|
|
103
|
+
return { invertLeft: false, invertRight: false };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Detect lane connectivity (next/prev) by matching the boundary endpoints of
|
|
107
|
+
* one lane to the start of another. Runs in O(n) using start/end node hash
|
|
108
|
+
* maps.
|
|
109
|
+
*/
|
|
110
|
+
function detectLaneConnections(laneInfos) {
|
|
111
|
+
const connections = new Map();
|
|
112
|
+
laneInfos.forEach(info => {
|
|
113
|
+
connections.set(info.laneId, { next: [], prev: [] });
|
|
114
|
+
});
|
|
115
|
+
const getEffectiveNodes = (lane) => {
|
|
116
|
+
const leftStart = lane.invertLeft ? lane.leftLastNode : lane.leftFirstNode;
|
|
117
|
+
const leftEnd = lane.invertLeft ? lane.leftFirstNode : lane.leftLastNode;
|
|
118
|
+
const rightStart = lane.invertRight ? lane.rightLastNode : lane.rightFirstNode;
|
|
119
|
+
const rightEnd = lane.invertRight ? lane.rightFirstNode : lane.rightLastNode;
|
|
120
|
+
return { leftStart, leftEnd, rightStart, rightEnd };
|
|
121
|
+
};
|
|
122
|
+
const startNodeMap = new Map();
|
|
123
|
+
const endNodeMap = new Map();
|
|
124
|
+
for (const lane of laneInfos) {
|
|
125
|
+
const nodes = getEffectiveNodes(lane);
|
|
126
|
+
const startKey = `${nodes.leftStart}|${nodes.rightStart}`;
|
|
127
|
+
const endKey = `${nodes.leftEnd}|${nodes.rightEnd}`;
|
|
128
|
+
if (!startNodeMap.has(startKey))
|
|
129
|
+
startNodeMap.set(startKey, []);
|
|
130
|
+
startNodeMap.get(startKey).push(lane.laneId);
|
|
131
|
+
if (!endNodeMap.has(endKey))
|
|
132
|
+
endNodeMap.set(endKey, []);
|
|
133
|
+
endNodeMap.get(endKey).push(lane.laneId);
|
|
134
|
+
}
|
|
135
|
+
for (const lane of laneInfos) {
|
|
136
|
+
const nodes = getEffectiveNodes(lane);
|
|
137
|
+
const endKey = `${nodes.leftEnd}|${nodes.rightEnd}`;
|
|
138
|
+
const nextLaneIds = startNodeMap.get(endKey);
|
|
139
|
+
if (!nextLaneIds)
|
|
140
|
+
continue;
|
|
141
|
+
const conn = connections.get(lane.laneId);
|
|
142
|
+
for (const nextLaneId of nextLaneIds) {
|
|
143
|
+
if (nextLaneId === lane.laneId)
|
|
144
|
+
continue;
|
|
145
|
+
if (!conn.next.includes(nextLaneId)) {
|
|
146
|
+
conn.next.push(nextLaneId);
|
|
147
|
+
const nextConn = connections.get(nextLaneId);
|
|
148
|
+
if (!nextConn.prev.includes(lane.laneId)) {
|
|
149
|
+
nextConn.prev.push(lane.laneId);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return connections;
|
|
155
|
+
}
|
|
156
|
+
function emptyBounds() {
|
|
157
|
+
return {
|
|
158
|
+
minX: Infinity,
|
|
159
|
+
maxX: -Infinity,
|
|
160
|
+
minY: Infinity,
|
|
161
|
+
maxY: -Infinity,
|
|
162
|
+
centerX: 0,
|
|
163
|
+
centerY: 0,
|
|
164
|
+
width: 0,
|
|
165
|
+
height: 0,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Convert parsed OSM data into editor-ready point/linestring/lane records.
|
|
170
|
+
*
|
|
171
|
+
* Pass `selectedLaneIds` to restrict to a subset of lanelet relations
|
|
172
|
+
* (selective import); leave it `undefined` to import every `type=lanelet`
|
|
173
|
+
* relation.
|
|
174
|
+
*/
|
|
175
|
+
export function osmToShapes(osmData, options = {}) {
|
|
176
|
+
const idAllocator = options.idAllocator ?? createShapeIdAllocator();
|
|
177
|
+
const result = {
|
|
178
|
+
points: [],
|
|
179
|
+
linestrings: [],
|
|
180
|
+
lanes: [],
|
|
181
|
+
bounds: emptyBounds(),
|
|
182
|
+
};
|
|
183
|
+
// Compute the projection center.
|
|
184
|
+
let minLat = Infinity, maxLat = -Infinity;
|
|
185
|
+
let minLon = Infinity, maxLon = -Infinity;
|
|
186
|
+
osmData.nodes.forEach(node => {
|
|
187
|
+
if (node.lat < minLat)
|
|
188
|
+
minLat = node.lat;
|
|
189
|
+
if (node.lat > maxLat)
|
|
190
|
+
maxLat = node.lat;
|
|
191
|
+
if (node.lon < minLon)
|
|
192
|
+
minLon = node.lon;
|
|
193
|
+
if (node.lon > maxLon)
|
|
194
|
+
maxLon = node.lon;
|
|
195
|
+
});
|
|
196
|
+
// For files emitted by drawtonomy, honor the embedded origin so page
|
|
197
|
+
// coordinates round-trip exactly. Otherwise center on the bbox.
|
|
198
|
+
const centerLat = osmData.drawtonomyOrigin?.lat ?? (minLat + maxLat) / 2;
|
|
199
|
+
const centerLon = osmData.drawtonomyOrigin?.lon ?? (minLon + maxLon) / 2;
|
|
200
|
+
result.originLatLon = { lat: centerLat, lon: centerLon };
|
|
201
|
+
const osmNodeToPointId = new Map();
|
|
202
|
+
const osmWayToLinestringId = new Map();
|
|
203
|
+
const pointIdToPoint = new Map();
|
|
204
|
+
const linestringIdToLinestring = new Map();
|
|
205
|
+
// Only `type=lanelet` relations become lanes. Other relation types
|
|
206
|
+
// (regulatory_element, multipolygon, etc.) are preserved verbatim via the
|
|
207
|
+
// OSM sidecar.
|
|
208
|
+
let laneletRelations = osmData.relations.filter(r => r.tags.type === 'lanelet');
|
|
209
|
+
if (options.selectedLaneIds) {
|
|
210
|
+
const selected = new Set(options.selectedLaneIds);
|
|
211
|
+
laneletRelations = laneletRelations.filter(r => selected.has(r.id));
|
|
212
|
+
}
|
|
213
|
+
// Collect ways and nodes referenced by the chosen lanelets.
|
|
214
|
+
const usedWayIds = new Set();
|
|
215
|
+
const usedNodeIds = new Set();
|
|
216
|
+
for (const relation of laneletRelations) {
|
|
217
|
+
for (const member of relation.members) {
|
|
218
|
+
if (member.type === 'way')
|
|
219
|
+
usedWayIds.add(member.ref);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
for (const wayId of usedWayIds) {
|
|
223
|
+
const way = osmData.ways.get(wayId);
|
|
224
|
+
if (!way)
|
|
225
|
+
continue;
|
|
226
|
+
for (const ref of way.nodeRefs)
|
|
227
|
+
usedNodeIds.add(ref);
|
|
228
|
+
}
|
|
229
|
+
// Materialize points (one per OSM node, shared across boundaries).
|
|
230
|
+
for (const nodeId of usedNodeIds) {
|
|
231
|
+
const node = osmData.nodes.get(nodeId);
|
|
232
|
+
if (!node)
|
|
233
|
+
continue;
|
|
234
|
+
const { x, y } = latLonToCanvas(node.lat, node.lon, centerLat, centerLon);
|
|
235
|
+
const pointId = idAllocator.next('point');
|
|
236
|
+
osmNodeToPointId.set(nodeId, pointId);
|
|
237
|
+
const data = { id: pointId, x, y, osmId: nodeId };
|
|
238
|
+
result.points.push(data);
|
|
239
|
+
pointIdToPoint.set(pointId, data);
|
|
240
|
+
}
|
|
241
|
+
// Materialize linestrings (one per used way).
|
|
242
|
+
for (const wayId of usedWayIds) {
|
|
243
|
+
const way = osmData.ways.get(wayId);
|
|
244
|
+
if (!way)
|
|
245
|
+
continue;
|
|
246
|
+
const pointIds = [];
|
|
247
|
+
for (const nodeRef of way.nodeRefs) {
|
|
248
|
+
const pid = osmNodeToPointId.get(nodeRef);
|
|
249
|
+
if (pid)
|
|
250
|
+
pointIds.push(pid);
|
|
251
|
+
}
|
|
252
|
+
if (pointIds.length < 2)
|
|
253
|
+
continue;
|
|
254
|
+
const firstPoint = pointIdToPoint.get(pointIds[0]);
|
|
255
|
+
if (!firstPoint)
|
|
256
|
+
continue;
|
|
257
|
+
const linestringId = idAllocator.next('linestring');
|
|
258
|
+
osmWayToLinestringId.set(wayId, linestringId);
|
|
259
|
+
const data = {
|
|
260
|
+
id: linestringId,
|
|
261
|
+
x: firstPoint.x,
|
|
262
|
+
y: firstPoint.y,
|
|
263
|
+
pointIds,
|
|
264
|
+
osmId: wayId,
|
|
265
|
+
attributes: {
|
|
266
|
+
type: way.tags.type || 'line_thin',
|
|
267
|
+
subtype: way.tags.subtype || 'solid',
|
|
268
|
+
width: way.tags.width || '0.2',
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
result.linestrings.push(data);
|
|
272
|
+
linestringIdToLinestring.set(linestringId, data);
|
|
273
|
+
}
|
|
274
|
+
// Materialize lanes and collect info for connectivity detection.
|
|
275
|
+
const laneInfos = [];
|
|
276
|
+
for (const relation of laneletRelations) {
|
|
277
|
+
let leftWayId = null;
|
|
278
|
+
let rightWayId = null;
|
|
279
|
+
let leftBoundaryId = null;
|
|
280
|
+
let rightBoundaryId = null;
|
|
281
|
+
for (const member of relation.members) {
|
|
282
|
+
if (member.type !== 'way')
|
|
283
|
+
continue;
|
|
284
|
+
const linestringId = osmWayToLinestringId.get(member.ref);
|
|
285
|
+
if (!linestringId)
|
|
286
|
+
continue;
|
|
287
|
+
if (member.role === 'left') {
|
|
288
|
+
leftBoundaryId = linestringId;
|
|
289
|
+
leftWayId = member.ref;
|
|
290
|
+
}
|
|
291
|
+
else if (member.role === 'right') {
|
|
292
|
+
rightBoundaryId = linestringId;
|
|
293
|
+
rightWayId = member.ref;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (!leftBoundaryId || !rightBoundaryId || !leftWayId || !rightWayId)
|
|
297
|
+
continue;
|
|
298
|
+
const leftWay = osmData.ways.get(leftWayId);
|
|
299
|
+
const rightWay = osmData.ways.get(rightWayId);
|
|
300
|
+
const leftLinestring = linestringIdToLinestring.get(leftBoundaryId);
|
|
301
|
+
const rightLinestring = linestringIdToLinestring.get(rightBoundaryId);
|
|
302
|
+
if (!leftWay || !rightWay || !leftLinestring || !rightLinestring)
|
|
303
|
+
continue;
|
|
304
|
+
const getPointCoords = (pointIds) => pointIds
|
|
305
|
+
.map(pid => pointIdToPoint.get(pid))
|
|
306
|
+
.filter((p) => p !== undefined)
|
|
307
|
+
.map(p => ({ x: p.x, y: p.y }));
|
|
308
|
+
const { invertLeft, invertRight } = alignBoundaries(getPointCoords(leftLinestring.pointIds), getPointCoords(rightLinestring.pointIds));
|
|
309
|
+
const laneId = idAllocator.next('lane');
|
|
310
|
+
laneInfos.push({
|
|
311
|
+
osmId: relation.id,
|
|
312
|
+
laneId,
|
|
313
|
+
leftWayId,
|
|
314
|
+
rightWayId,
|
|
315
|
+
leftFirstNode: leftWay.nodeRefs[0],
|
|
316
|
+
leftLastNode: leftWay.nodeRefs[leftWay.nodeRefs.length - 1],
|
|
317
|
+
rightFirstNode: rightWay.nodeRefs[0],
|
|
318
|
+
rightLastNode: rightWay.nodeRefs[rightWay.nodeRefs.length - 1],
|
|
319
|
+
invertLeft,
|
|
320
|
+
invertRight,
|
|
321
|
+
});
|
|
322
|
+
result.lanes.push({
|
|
323
|
+
id: laneId,
|
|
324
|
+
x: leftLinestring.x,
|
|
325
|
+
y: leftLinestring.y,
|
|
326
|
+
leftBoundaryId,
|
|
327
|
+
rightBoundaryId,
|
|
328
|
+
invertLeft,
|
|
329
|
+
invertRight,
|
|
330
|
+
osmId: relation.id,
|
|
331
|
+
attributes: {
|
|
332
|
+
type: 'lanelet',
|
|
333
|
+
subtype: relation.tags.subtype || 'road',
|
|
334
|
+
location: relation.tags.location || 'urban',
|
|
335
|
+
one_way: relation.tags.one_way || 'yes',
|
|
336
|
+
speed_limit: relation.tags.speed_limit || '30',
|
|
337
|
+
turn_direction: relation.tags.turn_direction || 'straight',
|
|
338
|
+
},
|
|
339
|
+
next: [],
|
|
340
|
+
prev: [],
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
const connections = detectLaneConnections(laneInfos);
|
|
344
|
+
for (const lane of result.lanes) {
|
|
345
|
+
const conn = connections.get(lane.id);
|
|
346
|
+
if (conn) {
|
|
347
|
+
lane.next = conn.next;
|
|
348
|
+
lane.prev = conn.prev;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Bounds across all materialized points.
|
|
352
|
+
for (const point of result.points) {
|
|
353
|
+
if (point.x < result.bounds.minX)
|
|
354
|
+
result.bounds.minX = point.x;
|
|
355
|
+
if (point.x > result.bounds.maxX)
|
|
356
|
+
result.bounds.maxX = point.x;
|
|
357
|
+
if (point.y < result.bounds.minY)
|
|
358
|
+
result.bounds.minY = point.y;
|
|
359
|
+
if (point.y > result.bounds.maxY)
|
|
360
|
+
result.bounds.maxY = point.y;
|
|
361
|
+
}
|
|
362
|
+
if (result.points.length > 0) {
|
|
363
|
+
result.bounds.width = result.bounds.maxX - result.bounds.minX;
|
|
364
|
+
result.bounds.height = result.bounds.maxY - result.bounds.minY;
|
|
365
|
+
result.bounds.centerX = result.bounds.minX + result.bounds.width / 2;
|
|
366
|
+
result.bounds.centerY = result.bounds.minY + result.bounds.height / 2;
|
|
367
|
+
}
|
|
368
|
+
return result;
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=osmToShapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"osmToShapes.js","sourceRoot":"","sources":["../../src/exporter/osmToShapes.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,2DAA2D;AAC3D,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,qBAAqB;AAGrB,OAAO,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAA;AAW1D,2DAA2D;AAC3D,MAAM,UAAU,sBAAsB;IACpC,MAAM,QAAQ,GAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAC7E,OAAO;QACL,IAAI,CAAC,IAAI;YACP,MAAM,EAAE,GAAG,SAAS,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAa,CAAA;YACvD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,OAAO,EAAE,CAAA;QACX,CAAC;KACF,CAAA;AACH,CAAC;AA8ED,SAAS,cAAc,CAAC,MAAiB;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAClC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;SACnC,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAqB,EACrB,WAAsB;IAEtB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IAClD,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAiB,EAAE,MAAe,EAAE,EAAE,CAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAEzC,MAAM,WAAW,GAAG,CAAC,IAAe,EAAE,KAAgB,EAAE,EAAE;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC9C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAChG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7F,OAAO,YAAY,IAAI,SAAS,CAAA;IAClC,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,CAAC,IAAe,EAAE,KAAgB,EAAE,EAAE;QAC/D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAErD,MAAM,OAAO,GAAG;YACd,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC,CAAA;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QAEtC,MAAM,WAAW,GAAG;YAClB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YACzB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;SAC1B,CAAA;QAED,oEAAoE;QACpE,yEAAyE;QACzE,kBAAkB;QAClB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAA;QAEnE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;YAC3B,gEAAgE;YAChE,MAAM,gBAAgB,GAAG;gBACvB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B,CAAA;YACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAA;YAClF,OAAO,UAAU,GAAG,CAAC,CAAA;QACvB,CAAC;QAED,OAAO,KAAK,GAAG,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,IAAI,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QACxF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IAClD,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IACrD,IAAI,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5F,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACjD,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACnD,IAAI,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5F,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IACjD,CAAC;IAED,IAAI,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC;QAChG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IAClD,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACjD,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;AAClD,CAAC;AAeD;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,SAAqB;IAErB,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8C,CAAA;IACzE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,CAAC,IAAc,EAAE,EAAE;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAA;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAA;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAA;QAC5E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;IACrD,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAA;IACjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAA;IAE/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAA;QACzD,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC/D,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACvD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QACnD,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW;YAAE,SAAQ;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,CAAA;QAC1C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,UAAU,KAAK,IAAI,CAAC,MAAM;gBAAE,SAAQ;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;gBAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC,QAAQ;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC,QAAQ;QACf,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;KACV,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,UAA8B,EAAE;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,sBAAsB,EAAE,CAAA;IACnE,MAAM,MAAM,GAAmB;QAC7B,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,WAAW,EAAE;KACtB,CAAA;IAED,iCAAiC;IACjC,IAAI,MAAM,GAAG,QAAQ,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAA;IACzC,IAAI,MAAM,GAAG,QAAQ,EAAE,MAAM,GAAG,CAAC,QAAQ,CAAA;IACzC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA;QACxC,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA;QACxC,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA;QACxC,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACxE,MAAM,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;IAExD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmB,CAAA;IACnD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAmB,CAAA;IACvD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAA;IACvD,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAA8B,CAAA;IAEtE,mEAAmE;IACnE,0EAA0E;IAC1E,eAAe;IACf,IAAI,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAC/E,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACjD,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,4DAA4D;IAC5D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IACrC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;gBAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ;YAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACtD,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI;YAAE,SAAQ;QACnB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QACzE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACzC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACrC,MAAM,IAAI,GAAkB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAED,8CAA8C;IAC9C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,SAAQ;QAEjC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU;YAAE,SAAQ;QAEzB,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnD,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAuB;YAC/B,EAAE,EAAE,YAAY;YAChB,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,CAAC,EAAE,UAAU,CAAC,CAAC;YACf,QAAQ;YACR,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW;gBAClC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO;gBACpC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK;aAC/B;SACF,CAAA;QACD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,wBAAwB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAClD,CAAC;IAED,iEAAiE;IACjE,MAAM,SAAS,GAAe,EAAE,CAAA;IAChC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,SAAS,GAAkB,IAAI,CAAA;QACnC,IAAI,UAAU,GAAkB,IAAI,CAAA;QACpC,IAAI,cAAc,GAAkB,IAAI,CAAA;QACxC,IAAI,eAAe,GAAkB,IAAI,CAAA;QACzC,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;gBAAE,SAAQ;YACnC,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACzD,IAAI,CAAC,YAAY;gBAAE,SAAQ;YAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,cAAc,GAAG,YAAY,CAAA;gBAC7B,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;YACxB,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACnC,eAAe,GAAG,YAAY,CAAA;gBAC9B,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;YACzB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;YAAE,SAAQ;QAE9E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC7C,MAAM,cAAc,GAAG,wBAAwB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACnE,MAAM,eAAe,GAAG,wBAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QACrE,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe;YAAE,SAAQ;QAE1E,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAa,EAAE,CACvD,QAAQ;aACL,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,eAAe,CACjD,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,EACvC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CACzC,CAAA;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,SAAS,CAAC,IAAI,CAAC;YACb,KAAK,EAAE,QAAQ,CAAC,EAAE;YAClB,MAAM;YACN,SAAS;YACT,UAAU;YACV,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3D,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9D,UAAU;YACV,WAAW;SACZ,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,MAAM;YACV,CAAC,EAAE,cAAc,CAAC,CAAC;YACnB,CAAC,EAAE,cAAc,CAAC,CAAC;YACnB,cAAc;YACd,eAAe;YACf,UAAU;YACV,WAAW;YACX,KAAK,EAAE,QAAQ,CAAC,EAAE;YAClB,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM;gBACxC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO;gBAC3C,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;gBACvC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI;gBAC9C,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,IAAI,UAAU;aAC3D;YACD,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;SACT,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;IACpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;QAC9D,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;QAC9D,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;QAC9D,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAA;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;QAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;QACpE,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACvE,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geographic anchor expressed as WGS84 lat/lon (and optional heading).
|
|
3
|
+
* Used to derive a local PROJ string anchored at this point.
|
|
4
|
+
*/
|
|
5
|
+
export interface GeoOrigin {
|
|
6
|
+
lat: number;
|
|
7
|
+
lon: number;
|
|
8
|
+
/** Heading of the local page +x axis clockwise from north, in radians. */
|
|
9
|
+
headingRad?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Fallback PROJ string used when no geographic origin is available. It still
|
|
13
|
+
* declares WGS84 explicitly so downstream tools see a defined CRS rather than
|
|
14
|
+
* an empty <geoReference>.
|
|
15
|
+
*/
|
|
16
|
+
export declare const FALLBACK_GEO_REFERENCE = "+proj=longlat +datum=WGS84 +no_defs";
|
|
17
|
+
/**
|
|
18
|
+
* Build a Transverse Mercator (tmerc) PROJ.4 string anchored at the given
|
|
19
|
+
* lat/lon. tmerc is preferred over UTM for small-area maps (sub-km) because
|
|
20
|
+
* it avoids UTM zone boundary distortion and minimises error near the origin.
|
|
21
|
+
*/
|
|
22
|
+
export declare function latLonToTmercProj(lat: number, lon: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* Build a UTM PROJ.4 string for the UTM zone containing the given lon. The
|
|
25
|
+
* hemisphere is selected from the sign of lat. Use this when the consumer
|
|
26
|
+
* expects a globally-named UTM zone rather than a tmerc-at-origin.
|
|
27
|
+
*/
|
|
28
|
+
export declare function latLonToUtmProj(lat: number, lon: number): string;
|
|
29
|
+
/**
|
|
30
|
+
* Choose a PROJ.4 string for the given origin. Defaults to tmerc-at-origin,
|
|
31
|
+
* which is appropriate for the small-area maps that this SDK typically
|
|
32
|
+
* exports. Falls back to a generic WGS84 longlat string when origin is absent
|
|
33
|
+
* or malformed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function originToProjString(origin: GeoOrigin | undefined | null, method?: 'tmerc' | 'utm'): string;
|
|
36
|
+
//# sourceMappingURL=projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../src/exporter/projection.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wCAAwC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYlE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EACpC,MAAM,GAAE,OAAO,GAAG,KAAe,GAChC,MAAM,CAaR"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// PROJ.4 string helpers used by the OpenDRIVE exporter to populate
|
|
2
|
+
// <header><geoReference>.
|
|
3
|
+
//
|
|
4
|
+
// OpenDRIVE 1.8 expects the <geoReference> child of <header> to declare the
|
|
5
|
+
// coordinate reference system as a PROJ.4 string (or similar). Without it,
|
|
6
|
+
// downstream tools (esmini, RoadRunner, CARLA, asam-qc-opendrive) cannot
|
|
7
|
+
// interpret the map's coordinates consistently.
|
|
8
|
+
//
|
|
9
|
+
// No external dependencies — these are pure formatting helpers.
|
|
10
|
+
/**
|
|
11
|
+
* Fallback PROJ string used when no geographic origin is available. It still
|
|
12
|
+
* declares WGS84 explicitly so downstream tools see a defined CRS rather than
|
|
13
|
+
* an empty <geoReference>.
|
|
14
|
+
*/
|
|
15
|
+
export const FALLBACK_GEO_REFERENCE = '+proj=longlat +datum=WGS84 +no_defs';
|
|
16
|
+
/**
|
|
17
|
+
* Build a Transverse Mercator (tmerc) PROJ.4 string anchored at the given
|
|
18
|
+
* lat/lon. tmerc is preferred over UTM for small-area maps (sub-km) because
|
|
19
|
+
* it avoids UTM zone boundary distortion and minimises error near the origin.
|
|
20
|
+
*/
|
|
21
|
+
export function latLonToTmercProj(lat, lon) {
|
|
22
|
+
return [
|
|
23
|
+
'+proj=tmerc',
|
|
24
|
+
`+lat_0=${lat.toFixed(8)}`,
|
|
25
|
+
`+lon_0=${lon.toFixed(8)}`,
|
|
26
|
+
'+k=1',
|
|
27
|
+
'+x_0=0',
|
|
28
|
+
'+y_0=0',
|
|
29
|
+
'+datum=WGS84',
|
|
30
|
+
'+units=m',
|
|
31
|
+
'+no_defs',
|
|
32
|
+
].join(' ');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build a UTM PROJ.4 string for the UTM zone containing the given lon. The
|
|
36
|
+
* hemisphere is selected from the sign of lat. Use this when the consumer
|
|
37
|
+
* expects a globally-named UTM zone rather than a tmerc-at-origin.
|
|
38
|
+
*/
|
|
39
|
+
export function latLonToUtmProj(lat, lon) {
|
|
40
|
+
const zone = Math.floor((lon + 180) / 6) + 1;
|
|
41
|
+
const parts = ['+proj=utm', `+zone=${zone}`];
|
|
42
|
+
if (lat < 0)
|
|
43
|
+
parts.push('+south');
|
|
44
|
+
parts.push('+datum=WGS84', '+units=m', '+no_defs');
|
|
45
|
+
return parts.join(' ');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Choose a PROJ.4 string for the given origin. Defaults to tmerc-at-origin,
|
|
49
|
+
* which is appropriate for the small-area maps that this SDK typically
|
|
50
|
+
* exports. Falls back to a generic WGS84 longlat string when origin is absent
|
|
51
|
+
* or malformed.
|
|
52
|
+
*/
|
|
53
|
+
export function originToProjString(origin, method = 'tmerc') {
|
|
54
|
+
if (!origin ||
|
|
55
|
+
typeof origin.lat !== 'number' ||
|
|
56
|
+
typeof origin.lon !== 'number' ||
|
|
57
|
+
!Number.isFinite(origin.lat) ||
|
|
58
|
+
!Number.isFinite(origin.lon)) {
|
|
59
|
+
return FALLBACK_GEO_REFERENCE;
|
|
60
|
+
}
|
|
61
|
+
return method === 'utm'
|
|
62
|
+
? latLonToUtmProj(origin.lat, origin.lon)
|
|
63
|
+
: latLonToTmercProj(origin.lat, origin.lon);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/exporter/projection.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,0BAA0B;AAC1B,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,gDAAgD;AAChD,EAAE;AACF,gEAAgE;AAahE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,qCAAqC,CAAA;AAE3E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,GAAW;IACxD,OAAO;QACL,aAAa;QACb,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC1B,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC1B,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,UAAU;QACV,UAAU;KACX,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;IAC5C,IAAI,GAAG,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAoC,EACpC,SAA0B,OAAO;IAEjC,IACE,CAAC,MAAM;QACP,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAC9B,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;QAC9B,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAC5B,CAAC;QACD,OAAO,sBAAsB,CAAA;IAC/B,CAAC;IACD,OAAO,MAAM,KAAK,KAAK;QACrB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;QACzC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -192,6 +192,17 @@ export interface DrawtonomySnapshot {
|
|
|
192
192
|
y: number;
|
|
193
193
|
z: number;
|
|
194
194
|
};
|
|
195
|
+
/**
|
|
196
|
+
* Optional geographic anchor for the scene, expressed as WGS84 lat/lon plus
|
|
197
|
+
* an optional heading of the page +x axis clockwise from north (radians).
|
|
198
|
+
* When present, the OpenDRIVE exporter uses this to populate
|
|
199
|
+
* <header><geoReference> with a PROJ.4 string.
|
|
200
|
+
*/
|
|
201
|
+
origin?: {
|
|
202
|
+
lat: number;
|
|
203
|
+
lon: number;
|
|
204
|
+
headingRad?: number;
|
|
205
|
+
};
|
|
195
206
|
}
|
|
196
207
|
export type ExtensionCapability = 'shapes:write' | 'shapes:read' | 'snapshot:read' | 'snapshot:export' | 'viewport:read' | 'selection:read' | 'ui:panel' | 'ui:notify';
|
|
197
208
|
export interface ExtensionManifest {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drawtonomy/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "SDK for building drawtonomy extensions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
"dist",
|
|
16
16
|
"README.md"
|
|
17
17
|
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"prepublishOnly": "pnpm build"
|
|
22
|
+
},
|
|
18
23
|
"keywords": [
|
|
19
24
|
"drawtonomy",
|
|
20
25
|
"extension",
|
|
@@ -27,9 +32,5 @@
|
|
|
27
32
|
"jsdom": "29.0.1",
|
|
28
33
|
"typescript": "5.9.3",
|
|
29
34
|
"vitest": "4.1.2"
|
|
30
|
-
},
|
|
31
|
-
"scripts": {
|
|
32
|
-
"build": "tsc",
|
|
33
|
-
"test": "vitest run"
|
|
34
35
|
}
|
|
35
|
-
}
|
|
36
|
+
}
|