@vertexvis/viewer 0.13.1 → 0.13.2-canary.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.
- package/dist/cjs/{browser.esm-31b03292.js → browser.esm-c51162f8.js} +1 -1
- package/dist/cjs/{bundle.esm-dc0a8361.js → bundle.esm-1b8b1f36.js} +34 -0
- package/dist/cjs/{config-90ee43d5.js → config-91efd353.js} +2 -2
- package/dist/cjs/{cursors-ad2fd395.js → cursors-14827f58.js} +1 -1
- package/dist/cjs/{dom-dd265f48.js → dom-c697cf99.js} +1 -1
- package/dist/cjs/{entities-aa59890e.js → entities-0829b4a4.js} +3 -3
- package/dist/cjs/index.cjs.js +13 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{mapper-f6e6cafe.js → mapper-67af470b.js} +2 -2
- package/dist/cjs/{markup-fb1553b1.js → markup-835f2e83.js} +2 -2
- package/dist/cjs/{measurement-aba1e0e8.js → measurement-8e0ce89a.js} +2 -2
- package/dist/cjs/{model-4ec0c36e.js → model-78241d4f.js} +1 -1
- package/dist/cjs/{overlays-40c6cbc7.js → overlays-06786e52.js} +2 -2
- package/dist/cjs/{png-decoder-27d25eed.js → png-decoder-01b76242.js} +1 -1
- package/dist/cjs/{results-bc325974.js → results-7a694238.js} +1 -1
- package/dist/cjs/{scene-d420fd26.js → scene-23535fc0.js} +176 -85
- package/dist/cjs/{streamAttributes-d6236448.js → streamAttributes-f13c1a96.js} +1431 -41
- package/dist/cjs/{utils-f80be307.js → utils-4a02e54b.js} +1 -1
- package/dist/cjs/{utils-545b1865.js → utils-5cc32a26.js} +1 -1
- package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +11 -11
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +6 -6
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +10 -10
- package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +8 -8
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer.cjs.entry.js +198 -79
- package/dist/cjs/viewer.cjs.js +1 -1
- package/dist/cjs/{viewport-8c39089f.js → viewport-052809c7.js} +1 -1
- package/dist/collection/components/viewer/viewer.js +68 -4
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +3 -3
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +3 -3
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +3 -3
- package/dist/collection/index.js +2 -2
- package/dist/collection/lib/errors.js +8 -1
- package/dist/collection/lib/interactions/index.js +3 -1
- package/dist/collection/lib/interactions/interactionApi.js +4 -25
- package/dist/collection/lib/interactions/interactionApiOrthographic.js +50 -0
- package/dist/collection/lib/interactions/interactionApiPerspective.js +50 -0
- package/dist/collection/lib/mappers/frameStreaming.js +27 -5
- package/dist/collection/lib/rendering/matrices.js +13 -4
- package/dist/collection/lib/scenes/__mocks__/mocks.js +2 -2
- package/dist/collection/lib/scenes/camera.js +149 -77
- package/dist/collection/lib/scenes/mapper.js +3 -2
- package/dist/collection/lib/scenes/scene.js +23 -9
- package/dist/collection/lib/types/clippingPlanes.js +54 -17
- package/dist/collection/lib/types/depthBuffer.js +1 -1
- package/dist/collection/lib/types/frame.js +88 -23
- package/dist/collection/lib/types/frameCamera.js +81 -6
- package/dist/collection/lib/types/viewport.js +1 -1
- package/dist/collection/testing/fixtures.js +23 -10
- package/dist/collection/testing/viewer.js +5 -3
- package/dist/custom-elements/index.js +1821 -194
- package/dist/esm/{browser.esm-59e914f6.js → browser.esm-48f051a3.js} +1 -1
- package/dist/esm/{bundle.esm-d899b2d5.js → bundle.esm-df3a8a42.js} +35 -1
- package/dist/esm/{config-604c644e.js → config-3a5d3ea3.js} +2 -2
- package/dist/esm/{cursors-a7ec4adb.js → cursors-45f23dfe.js} +1 -1
- package/dist/esm/{dom-780d25be.js → dom-18d9ac79.js} +1 -1
- package/dist/esm/{entities-759d97cd.js → entities-60dfd79d.js} +3 -3
- package/dist/esm/index.js +12 -12
- package/dist/esm/index.mjs +12 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.mjs +1 -1
- package/dist/esm/{mapper-4b815e31.js → mapper-adf23dc4.js} +2 -2
- package/dist/esm/{markup-1d177b4a.js → markup-accb6b5c.js} +2 -2
- package/dist/esm/{measurement-12cdbf5c.js → measurement-6cd457a6.js} +2 -2
- package/dist/esm/{model-e5a4f00f.js → model-4982c15d.js} +1 -1
- package/dist/esm/{overlays-1919b192.js → overlays-1783a61a.js} +2 -2
- package/dist/esm/{png-decoder-3f1fa486.js → png-decoder-f35def4c.js} +1 -1
- package/dist/esm/{results-994bdb50.js → results-93d45acc.js} +1 -1
- package/dist/esm/{scene-2c2460d5.js → scene-2d8bdccc.js} +176 -85
- package/dist/esm/{streamAttributes-d623bb60.js → streamAttributes-87a3605c.js} +1426 -43
- package/dist/esm/{utils-5e57bf24.js → utils-9f4b25ec.js} +1 -1
- package/dist/esm/{utils-83a19677.js → utils-ed2346c0.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +4 -4
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
- package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup.entry.js +4 -4
- package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
- package/dist/esm/vertex-viewer-measurement-distance.entry.js +11 -11
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +6 -6
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +10 -10
- package/dist/esm/vertex-viewer-measurement-tool.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurements.entry.js +8 -8
- package/dist/esm/vertex-viewer-view-cube.entry.js +3 -3
- package/dist/esm/vertex-viewer.entry.js +198 -79
- package/dist/esm/viewer.js +1 -1
- package/dist/esm/{viewport-01c886ea.js → viewport-6d4c0af0.js} +1 -1
- package/dist/types/components/viewer/viewer.d.ts +8 -0
- package/dist/types/components/viewer-dom-renderer/renderer2d.d.ts +2 -2
- package/dist/types/components/viewer-dom-renderer/renderer3d.d.ts +3 -3
- package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/utils.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +2 -2
- package/dist/types/components.d.ts +15 -7
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/errors.d.ts +3 -0
- package/dist/types/lib/interactions/index.d.ts +2 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +20 -21
- package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +21 -0
- package/dist/types/lib/interactions/interactionApiPerspective.d.ts +21 -0
- package/dist/types/lib/mappers/frameStreaming.d.ts +2 -0
- package/dist/types/lib/scenes/__mocks__/mocks.d.ts +2 -2
- package/dist/types/lib/scenes/camera.d.ts +100 -37
- package/dist/types/lib/scenes/scene.d.ts +1 -1
- package/dist/types/lib/types/clippingPlanes.d.ts +3 -1
- package/dist/types/lib/types/depthBuffer.d.ts +4 -4
- package/dist/types/lib/types/frame.d.ts +54 -11
- package/dist/types/lib/types/frameCamera.d.ts +21 -2
- package/dist/types/lib/types/viewport.d.ts +2 -3
- package/dist/types/testing/fixtures.d.ts +4 -2
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/{p-3f6ac74f.js → p-014561cd.js} +1 -1
- package/dist/viewer/p-121f2b40.js +18 -0
- package/dist/viewer/p-18ec4fed.js +4 -0
- package/dist/viewer/{p-e2297df2.entry.js → p-1acd0e56.entry.js} +1 -1
- package/dist/viewer/{p-da2f4a56.js → p-25dfee48.js} +1 -1
- package/dist/viewer/p-2e75198d.js +4 -0
- package/dist/viewer/p-38c06c25.js +4 -0
- package/dist/viewer/{p-67446e35.js → p-463151e0.js} +1 -1
- package/dist/viewer/{p-301660cf.js → p-546ae240.js} +1 -1
- package/dist/viewer/{p-d00e9203.js → p-6120a219.js} +1 -1
- package/dist/viewer/p-61db972b.js +4 -0
- package/dist/viewer/{p-a0df0e0c.js → p-6d9d3553.js} +1 -1
- package/dist/viewer/{p-f8d01b8a.entry.js → p-7c5bee8e.entry.js} +1 -1
- package/dist/viewer/{p-8decee06.entry.js → p-8de749a5.entry.js} +1 -1
- package/dist/viewer/{p-081e6873.js → p-8df35eee.js} +1 -1
- package/dist/viewer/{p-671c113c.entry.js → p-923b616f.entry.js} +1 -1
- package/dist/viewer/p-9b1ecc71.js +4 -0
- package/dist/viewer/{p-3810c24d.js → p-9fd5fc8e.js} +1 -1
- package/dist/viewer/p-b2d4c0cf.entry.js +4 -0
- package/dist/viewer/{p-364ce21c.js → p-b8bc15ec.js} +1 -1
- package/dist/viewer/{p-439220c6.js → p-b8f027eb.js} +1 -1
- package/dist/viewer/p-bc7f0ad6.entry.js +4 -0
- package/dist/viewer/{p-2cefb1b0.js → p-ce0fe8be.js} +1 -1
- package/dist/viewer/p-d939ecd3.entry.js +4 -0
- package/dist/viewer/{p-25eaab00.entry.js → p-de7eecce.entry.js} +1 -1
- package/dist/viewer/{p-4985fad5.js → p-e3fff448.js} +1 -1
- package/dist/viewer/{p-6e80f8b0.entry.js → p-e4934f47.entry.js} +1 -1
- package/dist/viewer/{p-df292b56.entry.js → p-e8f6cba6.entry.js} +1 -1
- package/dist/viewer/{p-353cfc7a.entry.js → p-ee86bed2.entry.js} +1 -1
- package/dist/viewer/{p-c62cb926.entry.js → p-f359a9ac.entry.js} +1 -1
- package/dist/viewer/{p-e07377fa.entry.js → p-fa7f2d0c.entry.js} +1 -1
- package/dist/viewer/{p-915d95ad.entry.js → p-ffde162f.entry.js} +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +8 -8
- package/dist/viewer/p-085e908a.js +0 -4
- package/dist/viewer/p-0aba71fd.js +0 -18
- package/dist/viewer/p-423410be.js +0 -4
- package/dist/viewer/p-432267bc.entry.js +0 -4
- package/dist/viewer/p-7cad9bf4.js +0 -4
- package/dist/viewer/p-d90f2f6d.entry.js +0 -4
- package/dist/viewer/p-f755af5a.entry.js +0 -4
- package/dist/viewer/p-f7cb7e59.js +0 -4
- package/dist/viewer/p-fe11d694.js +0 -4
|
@@ -3,6 +3,7 @@ import { decodePng } from '../../workers/png-decoder-pool';
|
|
|
3
3
|
import * as ClippingPlanes from './clippingPlanes';
|
|
4
4
|
import { DepthBuffer } from './depthBuffer';
|
|
5
5
|
import { FeatureMap } from './featureMap';
|
|
6
|
+
import * as FrameCamera from './frameCamera';
|
|
6
7
|
export class Frame {
|
|
7
8
|
constructor(correlationIds, sequenceNumber, dimensions, image, scene, depthBufferBytes, featureMapBytes) {
|
|
8
9
|
this.correlationIds = correlationIds;
|
|
@@ -55,19 +56,14 @@ export class FrameScene {
|
|
|
55
56
|
this.hasChanged = hasChanged;
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
|
-
export class
|
|
59
|
-
constructor(position, lookAt, up, near, far, aspectRatio
|
|
59
|
+
export class FrameCameraBase {
|
|
60
|
+
constructor(position, lookAt, up, near, far, aspectRatio) {
|
|
60
61
|
this.position = position;
|
|
61
62
|
this.lookAt = lookAt;
|
|
62
63
|
this.up = up;
|
|
63
64
|
this.near = near;
|
|
64
65
|
this.far = far;
|
|
65
66
|
this.aspectRatio = aspectRatio;
|
|
66
|
-
this.fovY = fovY;
|
|
67
|
-
}
|
|
68
|
-
static fromBoundingBox(camera, boundingBox, aspectRatio) {
|
|
69
|
-
const { near, far } = ClippingPlanes.fromBoundingBoxAndLookAtCamera(boundingBox, camera);
|
|
70
|
-
return new FramePerspectiveCamera(camera.position, camera.lookAt, camera.up, near, far, aspectRatio, 45);
|
|
71
67
|
}
|
|
72
68
|
get direction() {
|
|
73
69
|
return Vector3.normalize(this.viewVector);
|
|
@@ -90,22 +86,14 @@ export class FramePerspectiveCamera {
|
|
|
90
86
|
get projectionViewMatrix() {
|
|
91
87
|
return this.computeCameraMatrices().projectionViewMatrix;
|
|
92
88
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this.cameraMatrices = {
|
|
101
|
-
viewMatrix,
|
|
102
|
-
worldMatrix,
|
|
103
|
-
projectionMatrix,
|
|
104
|
-
projectionMatrixInverse,
|
|
105
|
-
projectionViewMatrix,
|
|
106
|
-
};
|
|
89
|
+
static fromBoundingBox(camera, boundingBox, aspectRatio) {
|
|
90
|
+
const { near, far } = ClippingPlanes.fromBoundingBoxAndLookAtCamera(boundingBox, camera);
|
|
91
|
+
if (FrameCamera.isOrthographicFrameCamera(camera)) {
|
|
92
|
+
return new FrameOrthographicCamera(camera.viewVector, camera.lookAt, camera.up, near, far, aspectRatio, camera.fovHeight);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return new FramePerspectiveCamera(camera.position, camera.lookAt, camera.up, near, far, aspectRatio, 45);
|
|
107
96
|
}
|
|
108
|
-
return this.cameraMatrices;
|
|
109
97
|
}
|
|
110
98
|
/**
|
|
111
99
|
* Checks if the given point, in world space, is behind the near plane
|
|
@@ -136,5 +124,82 @@ export class FramePerspectiveCamera {
|
|
|
136
124
|
const pt = Plane.intersectLine(nearP, vl);
|
|
137
125
|
return pt != null ? Vector3.add(pt, position) : undefined;
|
|
138
126
|
}
|
|
127
|
+
computeCameraMatrices() {
|
|
128
|
+
if (this.cameraMatrices == null) {
|
|
129
|
+
return {
|
|
130
|
+
viewMatrix: Matrix4.makeIdentity(),
|
|
131
|
+
worldMatrix: Matrix4.makeIdentity(),
|
|
132
|
+
projectionMatrix: Matrix4.makeIdentity(),
|
|
133
|
+
projectionMatrixInverse: Matrix4.makeIdentity(),
|
|
134
|
+
projectionViewMatrix: Matrix4.makeIdentity(),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return this.cameraMatrices;
|
|
138
|
+
}
|
|
139
|
+
updateCameraMatrices(cameraMatrices) {
|
|
140
|
+
this.cameraMatrices = cameraMatrices;
|
|
141
|
+
return this.cameraMatrices;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export class FramePerspectiveCamera extends FrameCameraBase {
|
|
145
|
+
constructor(position, lookAt, up, near, far, aspectRatio, fovY) {
|
|
146
|
+
super(position, lookAt, up, near, far, aspectRatio);
|
|
147
|
+
this.position = position;
|
|
148
|
+
this.lookAt = lookAt;
|
|
149
|
+
this.up = up;
|
|
150
|
+
this.near = near;
|
|
151
|
+
this.far = far;
|
|
152
|
+
this.aspectRatio = aspectRatio;
|
|
153
|
+
this.fovY = fovY;
|
|
154
|
+
}
|
|
155
|
+
computeCameraMatrices() {
|
|
156
|
+
if (this.cameraMatrices == null) {
|
|
157
|
+
const viewMatrix = Matrix4.makeLookAtView(this.position, this.lookAt, this.up);
|
|
158
|
+
const worldMatrix = Matrix4.invert(viewMatrix);
|
|
159
|
+
const projectionMatrix = Matrix4.makePerspective(this.near, this.far, this.fovY, this.aspectRatio);
|
|
160
|
+
const projectionMatrixInverse = Matrix4.invert(projectionMatrix);
|
|
161
|
+
const projectionViewMatrix = Matrix4.multiply(projectionMatrix, viewMatrix);
|
|
162
|
+
return super.updateCameraMatrices({
|
|
163
|
+
viewMatrix,
|
|
164
|
+
worldMatrix,
|
|
165
|
+
projectionMatrix,
|
|
166
|
+
projectionMatrixInverse,
|
|
167
|
+
projectionViewMatrix,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return this.cameraMatrices;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export class FrameOrthographicCamera extends FrameCameraBase {
|
|
174
|
+
constructor(viewVector, lookAt, up, near, far, aspectRatio, fovHeight) {
|
|
175
|
+
super(Vector3.add(lookAt, Vector3.negate(viewVector)), lookAt, up, near, far, aspectRatio);
|
|
176
|
+
this.lookAt = lookAt;
|
|
177
|
+
this.up = up;
|
|
178
|
+
this.near = near;
|
|
179
|
+
this.far = far;
|
|
180
|
+
this.aspectRatio = aspectRatio;
|
|
181
|
+
this.fovHeight = fovHeight;
|
|
182
|
+
this.top = fovHeight * 0.5;
|
|
183
|
+
this.bottom = -this.top;
|
|
184
|
+
this.right = this.top * aspectRatio;
|
|
185
|
+
this.left = -this.right;
|
|
186
|
+
}
|
|
187
|
+
computeCameraMatrices() {
|
|
188
|
+
if (this.cameraMatrices == null) {
|
|
189
|
+
const viewMatrix = Matrix4.makeLookAtView(this.position, this.lookAt, this.up);
|
|
190
|
+
const worldMatrix = Matrix4.invert(viewMatrix);
|
|
191
|
+
const projectionMatrix = Matrix4.makeOrthographic(this.left, this.right, this.bottom, this.top, this.near, this.far);
|
|
192
|
+
const projectionMatrixInverse = Matrix4.invert(projectionMatrix);
|
|
193
|
+
const projectionViewMatrix = Matrix4.multiply(projectionMatrix, viewMatrix);
|
|
194
|
+
return super.updateCameraMatrices({
|
|
195
|
+
viewMatrix,
|
|
196
|
+
worldMatrix,
|
|
197
|
+
projectionMatrix,
|
|
198
|
+
projectionMatrixInverse,
|
|
199
|
+
projectionViewMatrix,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return this.cameraMatrices;
|
|
203
|
+
}
|
|
139
204
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2ZyYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFFTCxPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxLQUFLLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxLQUFLLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFHN0MsTUFBTSxPQUFPLEtBQUs7RUFJaEIsWUFDa0IsY0FBd0IsRUFDeEIsY0FBc0IsRUFDdEIsVUFBaUMsRUFDakMsS0FBaUIsRUFDakIsS0FBaUIsRUFDaEIsZ0JBQXdDLEVBQ3hDLGVBQXVDO0lBTnhDLG1CQUFjLEdBQWQsY0FBYyxDQUFVO0lBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO0lBQ3RCLGVBQVUsR0FBVixVQUFVLENBQXVCO0lBQ2pDLFVBQUssR0FBTCxLQUFLLENBQVk7SUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO0lBQ3hDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtFQUN2RCxDQUFDO0VBRUcsS0FBSyxDQUFDLFdBQVc7SUFDdEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFO01BQ2xDLElBQUksQ0FBQyxpQkFBaUI7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUk7VUFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FB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
|
|
@@ -1,9 +1,84 @@
|
|
|
1
|
-
import { Vector3 } from '@vertexvis/geometry';
|
|
2
|
-
export function
|
|
1
|
+
import { Angle, Vector3 } from '@vertexvis/geometry';
|
|
2
|
+
export function isPerspectiveFrameCamera(camera) {
|
|
3
|
+
return camera.position != null;
|
|
4
|
+
}
|
|
5
|
+
export function isOrthographicFrameCamera(camera) {
|
|
6
|
+
const asOrtho = camera;
|
|
7
|
+
return asOrtho.viewVector != null && asOrtho.fovHeight != null;
|
|
8
|
+
}
|
|
9
|
+
export function withPositionAndViewVector(camera) {
|
|
10
|
+
if (isOrthographicFrameCamera(camera)) {
|
|
11
|
+
return Object.assign(Object.assign({}, camera), { position: Vector3.add(camera.lookAt, Vector3.negate(camera.viewVector)) });
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return Object.assign(Object.assign({}, camera), { viewVector: Vector3.subtract(camera.lookAt, camera.position) });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function createPerspective(data = {}) {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
3
19
|
return {
|
|
4
|
-
position: data.position
|
|
5
|
-
lookAt: data.lookAt
|
|
6
|
-
up: data.up
|
|
20
|
+
position: (_a = data.position) !== null && _a !== void 0 ? _a : Vector3.forward(),
|
|
21
|
+
lookAt: (_b = data.lookAt) !== null && _b !== void 0 ? _b : Vector3.origin(),
|
|
22
|
+
up: (_c = data.up) !== null && _c !== void 0 ? _c : Vector3.up(),
|
|
23
|
+
fovY: (_d = data.fovY) !== null && _d !== void 0 ? _d : 45,
|
|
7
24
|
};
|
|
8
25
|
}
|
|
9
|
-
|
|
26
|
+
export function createOrthographic(data = {}) {
|
|
27
|
+
var _a, _b, _c, _d;
|
|
28
|
+
return {
|
|
29
|
+
viewVector: (_a = data.viewVector) !== null && _a !== void 0 ? _a : Vector3.back(),
|
|
30
|
+
lookAt: (_b = data.lookAt) !== null && _b !== void 0 ? _b : Vector3.origin(),
|
|
31
|
+
up: (_c = data.up) !== null && _c !== void 0 ? _c : Vector3.up(),
|
|
32
|
+
fovHeight: (_d = data.fovHeight) !== null && _d !== void 0 ? _d : 1.0,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function toOrthographic(data) {
|
|
36
|
+
const viewVector = Vector3.subtract(data.lookAt, data.position);
|
|
37
|
+
return {
|
|
38
|
+
viewVector,
|
|
39
|
+
up: data.up,
|
|
40
|
+
lookAt: data.lookAt,
|
|
41
|
+
fovHeight: 2 *
|
|
42
|
+
Vector3.magnitude(viewVector) *
|
|
43
|
+
Math.tan(Angle.toRadians(data.fovY / 2.0)),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function toPerspective(data, fovY = 45) {
|
|
47
|
+
const expectedMagnitude = data.fovHeight / (2 * Math.tan(Angle.toRadians(fovY / 2)));
|
|
48
|
+
const receivedMagnitude = Vector3.magnitude(data.viewVector);
|
|
49
|
+
const magnitudeScale = expectedMagnitude / receivedMagnitude;
|
|
50
|
+
return {
|
|
51
|
+
position: Vector3.add(data.lookAt, Vector3.negate(Vector3.scale(magnitudeScale, data.viewVector))),
|
|
52
|
+
up: data.up,
|
|
53
|
+
lookAt: data.lookAt,
|
|
54
|
+
fovY,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function toProtobuf(camera) {
|
|
58
|
+
if (isOrthographicFrameCamera(camera)) {
|
|
59
|
+
return {
|
|
60
|
+
orthographic: {
|
|
61
|
+
viewVector: Object.assign({}, camera.viewVector),
|
|
62
|
+
lookAt: Object.assign({}, camera.lookAt),
|
|
63
|
+
up: Object.assign({}, camera.up),
|
|
64
|
+
fovHeight: camera.fovHeight,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
else if (isPerspectiveFrameCamera(camera)) {
|
|
69
|
+
return {
|
|
70
|
+
perspective: {
|
|
71
|
+
position: Object.assign({}, camera.position),
|
|
72
|
+
lookAt: Object.assign({}, camera.lookAt),
|
|
73
|
+
up: Object.assign({}, camera.up),
|
|
74
|
+
},
|
|
75
|
+
position: Object.assign({}, camera.position),
|
|
76
|
+
lookAt: Object.assign({}, camera.lookAt),
|
|
77
|
+
up: Object.assign({}, camera.up),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return Object.assign({}, camera);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVDYW1lcmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL2ZyYW1lQ2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFrQnJELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsTUFBNEI7RUFFNUIsT0FBUSxNQUFpQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsTUFBNEI7RUFFNUIsTUFBTSxPQUFPLEdBQUcsTUFBaUMsQ0FBQztFQUNsRCxPQUFPLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBbUI7RUFJM0QsSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUNyQyx1Q0FDSyxNQUFNLEtBQ1QsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUN2RTtHQUNIO09BQU07SUFDTCx1Q0FDSyxNQUFNLEtBQ1QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQzVEO0dBQ0g7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixPQUF3QyxFQUFFOztFQUUxQyxPQUFPO0lBQ0wsUUFBUSxFQUFFLE1BQUEsSUFBSSxDQUFDLFFBQVEsbUNBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtJQUM1QyxNQUFNLEVBQUUsTUFBQSxJQUFJLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUMsTUFB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
|
|
@@ -136,4 +136,4 @@ export class Viewport {
|
|
|
136
136
|
return Dimensions.create(this.width, this.height);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzL3ZpZXdwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsS0FBSyxFQUNMLEdBQUcsRUFDSCxTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFLN0I7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7RUFNbkI7RUFDRTs7S0FFRztFQUNhLEtBQWE7RUFFN0I7O0tBRUc7RUFDYSxNQUFjO0lBTGQsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUtiLFdBQU0sR0FBTixNQUFNLENBQVE7SUFFOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztFQUNuRCxDQUFDO0VBRUQ7Ozs7S0FJRztFQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBaUM7SUFDNUQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUMzRCxDQUFDO0VBRUQ7Ozs7OztLQU1HO0VBQ0kseUJBQXlCLENBQUMsR0FBb0I7SUFDbkQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUNqQixHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUNyQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ3ZDLENBQUM7RUFDSixDQUFDO0VBRUQ7Ozs7OztLQU1HO0VBQ0ksd0JBQXdCLENBQzdCLE9BQXdCLEVBQ3hCLG9CQUFxQztJQUVyQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8s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
|
|
@@ -4,14 +4,9 @@ import { encode } from 'fast-png';
|
|
|
4
4
|
import { PointToPointHitTester } from '../components/viewer-measurement-distance/hitTest';
|
|
5
5
|
import { fromPbFrame } from '../lib/mappers';
|
|
6
6
|
import { DepthBuffer, FeatureMap, Orientation, STENCIL_BUFFER_FEATURE_VALUE, StencilBuffer, Viewport, } from '../lib/types';
|
|
7
|
-
|
|
7
|
+
const baseDrawFramePayload = {
|
|
8
8
|
sequenceNumber: 1,
|
|
9
9
|
sceneAttributes: {
|
|
10
|
-
camera: {
|
|
11
|
-
position: { x: 0, y: 0, z: 100 },
|
|
12
|
-
lookAt: { x: 0, y: 0, z: 0 },
|
|
13
|
-
up: { x: 0, y: 1, z: 0 },
|
|
14
|
-
},
|
|
15
10
|
visibleBoundingBox: {
|
|
16
11
|
xmin: -100,
|
|
17
12
|
ymin: -100,
|
|
@@ -34,8 +29,26 @@ export const drawFramePayload = {
|
|
|
34
29
|
image: makeImagePng(100, 50),
|
|
35
30
|
depthBuffer: { value: makeDepthImagePng(100, 50) },
|
|
36
31
|
};
|
|
37
|
-
export
|
|
38
|
-
|
|
32
|
+
export const drawFramePayloadPerspective = Object.assign(Object.assign({}, baseDrawFramePayload), { sceneAttributes: Object.assign(Object.assign({}, baseDrawFramePayload.sceneAttributes), { camera: {
|
|
33
|
+
perspective: {
|
|
34
|
+
position: { x: 0, y: 0, z: 100 },
|
|
35
|
+
lookAt: { x: 0, y: 0, z: 0 },
|
|
36
|
+
up: { x: 0, y: 1, z: 0 },
|
|
37
|
+
},
|
|
38
|
+
} }) });
|
|
39
|
+
export const drawFramePayloadOrthographic = Object.assign(Object.assign({}, baseDrawFramePayload), { sceneAttributes: Object.assign(Object.assign({}, baseDrawFramePayload.sceneAttributes), { camera: {
|
|
40
|
+
orthographic: {
|
|
41
|
+
viewVector: { x: 0, y: 0, z: -100 },
|
|
42
|
+
lookAt: { x: 0, y: 0, z: 0 },
|
|
43
|
+
up: { x: 0, y: 1, z: 0 },
|
|
44
|
+
fovHeight: 100,
|
|
45
|
+
},
|
|
46
|
+
} }) });
|
|
47
|
+
export function makePerspectiveFrame() {
|
|
48
|
+
return Mapper.ifInvalidThrow(fromPbFrame(Orientation.DEFAULT))(drawFramePayloadPerspective);
|
|
49
|
+
}
|
|
50
|
+
export function makeOrthographicFrame() {
|
|
51
|
+
return Mapper.ifInvalidThrow(fromPbFrame(Orientation.DEFAULT))(drawFramePayloadOrthographic);
|
|
39
52
|
}
|
|
40
53
|
export function makeImagePng(width, height) {
|
|
41
54
|
const data = new Uint8ClampedArray(width * height * 4);
|
|
@@ -59,7 +72,7 @@ export function makeDepthImageBytes(width, height, value = 2 ** 16 - 1) {
|
|
|
59
72
|
return data.fill(value);
|
|
60
73
|
}
|
|
61
74
|
export function makeDepthBuffer(width, height, value = 2 ** 16 - 1) {
|
|
62
|
-
return DepthBuffer.fromPng({ data: makeDepthImageBytes(width, height, value) },
|
|
75
|
+
return DepthBuffer.fromPng({ data: makeDepthImageBytes(width, height, value) }, makePerspectiveFrame().scene.camera, makeImageAttributes(width, height));
|
|
63
76
|
}
|
|
64
77
|
export function makeStencilImageBytes(width, height, fill) {
|
|
65
78
|
const data = new Uint8Array(width * height * 3);
|
|
@@ -117,4 +130,4 @@ export function makeHitProvider({ hitTester, raycaster, }) {
|
|
|
117
130
|
raycaster: async () => raycaster !== null && raycaster !== void 0 ? raycaster : defaultRaycaster,
|
|
118
131
|
};
|
|
119
132
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRSxPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUUxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxVQUFVLEVBR1YsV0FBVyxFQUNYLDRCQUE0QixFQUM1QixhQUFhLEVBQ2IsUUFBUSxHQUNULE1BQU0sY0FBYyxDQUFDO0FBRXRCLE1BQU0sb0JBQW9CLEdBQThCO0VBQ3RELGNBQWMsRUFBRSxDQUFDO0VBQ2pCLGVBQWUsRUFBRTtJQUNmLGtCQUFrQixFQUFFO01BQ2xCLElBQUksRUFBRSxDQUFDLEdBQUc7TUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFHO01BQ1YsSUFBSSxFQUFFLENBQUMsR0FBRztNQUNWLElBQUksRUFBRSxHQUFHO01BQ1QsSUFBSSxFQUFFLEdBQUc7TUFDVCxJQUFJLEVBQUUsR0FBRztLQUNWO0lBQ0QsZUFBZSxFQUFFO01BQ2YsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztLQUM3RDtJQUNELFVBQVUsRUFBRSxLQUFLO0dBQ2xCO0VBQ0QsZUFBZSxFQUFFO0lBQ2YsZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFN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
|
|
@@ -27,12 +27,14 @@ export async function loadViewerStreamKey(urn, { viewer, stream, ws }, { token =
|
|
|
27
27
|
// Emit frame drawn on next event loop
|
|
28
28
|
await connecting;
|
|
29
29
|
await Async.delay(10);
|
|
30
|
-
ws.receiveMessage(encode(StreamFixtures.Requests.drawFrame({
|
|
30
|
+
ws.receiveMessage(encode(StreamFixtures.Requests.drawFrame({
|
|
31
|
+
payload: Fixtures.drawFramePayloadPerspective,
|
|
32
|
+
})));
|
|
31
33
|
await loaded;
|
|
32
34
|
}
|
|
33
35
|
export function receiveFrame(ws, transformPayload) {
|
|
34
36
|
ws.receiveMessage(encode(StreamFixtures.Requests.drawFrame({
|
|
35
|
-
payload: transformPayload === null || transformPayload === void 0 ? void 0 : transformPayload(Fixtures.
|
|
37
|
+
payload: transformPayload === null || transformPayload === void 0 ? void 0 : transformPayload(Fixtures.drawFramePayloadPerspective),
|
|
36
38
|
})));
|
|
37
39
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Rpbmcvdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxJQUFJLGNBQWMsRUFDMUIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBWWxDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyw4QkFBOEIsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsOEJBQThCLENBQUM7QUFFbkQsTUFBTSxVQUFVLGdCQUFnQjtFQUk5QixNQUFNLEVBQUUsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7RUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsR0FBVyxFQUNYLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQTBCLEVBQzlDLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBaUMsRUFBRTtFQUUzRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxpQkFBaUIsQ0FDakQsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFDbkMsTUFBTSxFQUFFO01BQ04sS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEtBQUs7UUFDWixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLO09BQ3hDO0tBQ0Y7R0FDRixDQUFDLENBQUMsUUFBUSxDQUNaLENBQUM7RUFDRixJQUFJO0tBQ0QsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUM7S0FDekIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUVuRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDN0MsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUMvQixDQUFDO0VBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUVoQyxzQ0FBc0M7RUFDdEMsTUFBTSxVQUFVLENBQUM7RUFDakIsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ3RCLEVBQUUsQ0FBQyxjQUFjLENBQ2YsTUFBTSxDQUNKLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxRQUFRLENBQUMsMkJBQTJCO0dBQzlDLENBQUMsQ0FDSCxDQUNGLENBQUM7RUFDRixNQUFNLE1BQU0sQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixFQUF1QixFQUN2QixnQkFFZ0Q7RUFFaEQsRUFBRSxDQUFDLGNBQWMsQ0FDZixNQUFNLENBQ0osY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDaEMsT0FBTyxFQUFFLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFHLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQztHQUNsRSxDQUFDLENBQ0gsQ0FDRixDQUFDO0FBQ0osQ0FBQyJ9
|