@kepler.gl/deckgl-layers 3.3.0-alpha.5 → 3.3.0-alpha.7
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/3d-building-layer/3d-building-layer.js +66 -0
- package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
- package/dist/cjs/3d-building-layer/types.js +6 -0
- package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
- package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
- package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
- package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
- package/dist/cjs/globe/atmosphere-layer.js +341 -0
- package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
- package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
- package/dist/cjs/globe/globe-layers.js +574 -0
- package/dist/cjs/globe/globe-stars-layer.js +99 -0
- package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
- package/dist/cjs/globe/globe-view.js +404 -0
- package/dist/{globe → cjs/globe}/index.js +19 -1
- package/dist/cjs/globe/mvt-label-layer.js +190 -0
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
- package/dist/{index.js → cjs/index.js} +1 -1
- package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
- package/dist/cjs/layer-utils/cluster-utils.js +93 -0
- package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
- package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
- package/dist/cjs/layer-utils/shader-utils.js +38 -0
- package/dist/cjs/line-layer/line-layer.js +95 -0
- package/dist/cjs/raster/images.js +271 -0
- package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
- package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
- package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
- package/dist/cjs/raster/types.js +6 -0
- package/dist/cjs/raster/util.js +139 -0
- package/dist/cjs/raster/webgl/color/colormap.js +45 -0
- package/dist/cjs/raster/webgl/color/filter.js +58 -0
- package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
- package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
- package/dist/cjs/raster/webgl/color/saturation.js +42 -0
- package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
- package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
- package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
- package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
- package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
- package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
- package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
- package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
- package/dist/cjs/raster/webgl/texture/mask.js +50 -0
- package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
- package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
- package/dist/cjs/raster/webgl/types.js +6 -0
- package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
- package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
- package/dist/cjs/wms/wms-layer.js +624 -0
- package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
- package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
- package/dist/esm/3d-building-layer/types.js +3 -0
- package/dist/esm/cluster-layer/cluster-layer.js +286 -0
- package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
- package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
- package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
- package/dist/esm/globe/atmosphere-layer.js +335 -0
- package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
- package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
- package/dist/esm/globe/globe-layers.js +566 -0
- package/dist/esm/globe/globe-stars-layer.js +92 -0
- package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
- package/dist/esm/globe/globe-view.js +398 -0
- package/dist/esm/globe/index.js +26 -0
- package/dist/esm/globe/mvt-label-layer.js +187 -0
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/layer-utils/aggregation-utils.js +172 -0
- package/dist/esm/layer-utils/cluster-utils.js +86 -0
- package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
- package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
- package/dist/esm/layer-utils/shader-utils.js +32 -0
- package/dist/esm/line-layer/line-layer.js +91 -0
- package/dist/esm/raster/images.js +267 -0
- package/dist/esm/raster/pipeline-validation-patch.js +94 -0
- package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
- package/dist/esm/raster/raster-processing-uniforms.js +118 -0
- package/dist/esm/raster/types.js +3 -0
- package/dist/esm/raster/util.js +134 -0
- package/dist/esm/raster/webgl/color/colormap.js +39 -0
- package/dist/esm/raster/webgl/color/filter.js +52 -0
- package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
- package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
- package/dist/esm/raster/webgl/color/saturation.js +36 -0
- package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
- package/dist/esm/raster/webgl/index.js +26 -0
- package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
- package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
- package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
- package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
- package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
- package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
- package/dist/esm/raster/webgl/texture/mask.js +44 -0
- package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
- package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
- package/dist/esm/raster/webgl/types.js +3 -0
- package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
- package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
- package/dist/esm/wms/wms-layer.js +619 -0
- package/dist/globe/atmosphere-layer.d.ts +22 -1
- package/dist/globe/globe-stars-layer.d.ts +5 -0
- package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
- package/dist/globe/index.d.ts +2 -2
- package/dist/wms/wms-layer.d.ts +8 -0
- package/package.json +19 -10
- package/dist/3d-building-layer/3d-building-layer.js +0 -66
- package/dist/3d-building-layer/3d-building-utils.js +0 -166
- package/dist/3d-building-layer/types.js +0 -6
- package/dist/cluster-layer/cluster-layer.js +0 -292
- package/dist/column-layer/enhanced-column-layer.js +0 -160
- package/dist/deckgl-extensions/filter-shader-module.js +0 -26
- package/dist/globe/atmosphere-layer.js +0 -220
- package/dist/globe/enhanced-multi-icon-layer.js +0 -63
- package/dist/globe/globe-depth-disk-layer.js +0 -145
- package/dist/globe/globe-layers.js +0 -569
- package/dist/globe/globe-stars-layer.js +0 -69
- package/dist/globe/globe-view.js +0 -404
- package/dist/globe/mvt-label-layer.js +0 -190
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
- package/dist/layer-utils/aggregation-utils.js +0 -181
- package/dist/layer-utils/cluster-utils.js +0 -93
- package/dist/layer-utils/cpu-aggregator.js +0 -798
- package/dist/layer-utils/globe-cell-utils.js +0 -173
- package/dist/layer-utils/shader-utils.js +0 -38
- package/dist/line-layer/line-layer.js +0 -95
- package/dist/raster/images.js +0 -271
- package/dist/raster/pipeline-validation-patch.js +0 -101
- package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer.js +0 -287
- package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
- package/dist/raster/raster-mesh-layer/matrix.js +0 -18
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
- package/dist/raster/raster-processing-uniforms.js +0 -124
- package/dist/raster/types.js +0 -6
- package/dist/raster/util.js +0 -139
- package/dist/raster/webgl/color/colormap.js +0 -45
- package/dist/raster/webgl/color/filter.js +0 -58
- package/dist/raster/webgl/color/gamma-contrast.js +0 -68
- package/dist/raster/webgl/color/linear-rescale.js +0 -35
- package/dist/raster/webgl/color/saturation.js +0 -42
- package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
- package/dist/raster/webgl/spectral-indices/evi.js +0 -26
- package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
- package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
- package/dist/raster/webgl/spectral-indices/savi.js +0 -21
- package/dist/raster/webgl/texture/combine-bands.js +0 -65
- package/dist/raster/webgl/texture/mask.js +0 -50
- package/dist/raster/webgl/texture/reorder-bands.js +0 -72
- package/dist/raster/webgl/texture/rgba-image.js +0 -34
- package/dist/raster/webgl/types.js +0 -6
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
- package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
- package/dist/wms/wms-layer.js +0 -594
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
4
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
5
|
+
import _get from "@babel/runtime/helpers/esm/get";
|
|
6
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
7
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
11
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
12
|
+
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
13
|
+
// SPDX-License-Identifier: MIT
|
|
14
|
+
// Copyright contributors to the kepler.gl project
|
|
15
|
+
|
|
16
|
+
import { COORDINATE_SYSTEM } from '@deck.gl/core';
|
|
17
|
+
import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
|
|
18
|
+
import { PlaneGeometry } from '@luma.gl/engine';
|
|
19
|
+
import { Vector3 } from '@math.gl/core';
|
|
20
|
+
import { editShader } from '../layer-utils/shader-utils';
|
|
21
|
+
// luma.gl 9's PlaneGeometry ignores `radius`; pass explicit type/xlen/ylen so we
|
|
22
|
+
// get a [-1, 1] quad (a `radius: 1` plane would only span [-0.5, 0.5]).
|
|
23
|
+
var PLANE_GEOMETRY = new PlaneGeometry({
|
|
24
|
+
type: 'x,y',
|
|
25
|
+
xlen: 2,
|
|
26
|
+
ylen: 2
|
|
27
|
+
});
|
|
28
|
+
var DEPTH_DISK_PARAMETERS = {
|
|
29
|
+
// Depth writes only happen with depthTest enabled. The disk is opaque-black-ish
|
|
30
|
+
// and used purely to fill the depth buffer so far-side geometry (arcs/lines) is
|
|
31
|
+
// occluded by the planet.
|
|
32
|
+
depthTest: true,
|
|
33
|
+
cull: false
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// Earth radius in meters. The disk geometry is a [-1, 1] plane; we scale it into
|
|
37
|
+
// METERS in the vertex shader (like the atmosphere SphereGeometry, whose radius is
|
|
38
|
+
// ~6.4e6 m) and let SimpleMeshLayer's stock projection map it onto the globe —
|
|
39
|
+
// exactly the working path the atmosphere mesh layers use.
|
|
40
|
+
var DEPTH_DISK_FULL_RADIUS = 6.371e6;
|
|
41
|
+
|
|
42
|
+
// Globe common space uses GLOBE_RADIUS = 256 units (see deck.gl's project_globe_).
|
|
43
|
+
// The disk orientation math is done in that 256-unit common space (matching
|
|
44
|
+
// viewport.cameraPosition), then the resulting radius/shift ratios are converted to
|
|
45
|
+
// meters for the shader, since the disk geometry is expressed in meters.
|
|
46
|
+
export var GLOBE_COMMON_RADIUS = 256;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Creates a view-oriented disk positioned along the direction from the globe's center to the camera.
|
|
50
|
+
* The disk is a cross-section of the globe between the front (visible) and back side, and it fills
|
|
51
|
+
* the depth buffer so anything on the far side of the globe (e.g. arcs/lines) is depth-culled and
|
|
52
|
+
* hidden behind the planet.
|
|
53
|
+
*/
|
|
54
|
+
export var GlobeDepthDiskLayer = /*#__PURE__*/function (_SimpleMeshLayer) {
|
|
55
|
+
function GlobeDepthDiskLayer() {
|
|
56
|
+
_classCallCheck(this, GlobeDepthDiskLayer);
|
|
57
|
+
return _callSuper(this, GlobeDepthDiskLayer, arguments);
|
|
58
|
+
}
|
|
59
|
+
_inherits(GlobeDepthDiskLayer, _SimpleMeshLayer);
|
|
60
|
+
return _createClass(GlobeDepthDiskLayer, [{
|
|
61
|
+
key: "getShaders",
|
|
62
|
+
value: function getShaders() {
|
|
63
|
+
var shaders = _superPropGet(GlobeDepthDiskLayer, "getShaders", this, 3)([]);
|
|
64
|
+
|
|
65
|
+
// Override the local `pos` computation: reorient the flat [-1,1] plane to face
|
|
66
|
+
// the camera, scale it to meters, and shift it toward the camera along the view
|
|
67
|
+
// axis so it sits at the globe's silhouette cross-section. The stock
|
|
68
|
+
// project_position_to_clipspace call is left untouched so the disk projects onto
|
|
69
|
+
// the globe through the exact same (working) path the atmosphere mesh layers use.
|
|
70
|
+
var vs = editShader(shaders.vs, 'globe depth disk vs', 'vec3 pos = (instanceModelMatrix * positions) * simpleMesh.sizeScale + instanceTranslation;', "mat3 u_matDepthDiskOrientation = mat3(\n u_depthDiskOrientCol0,\n u_depthDiskOrientCol1,\n u_depthDiskOrientCol2\n );\n vec3 pos = (u_matDepthDiskOrientation * positions) * u_depthDiskRadius;\n vDepthDiskPos = pos;\n pos = pos + u_directionToCamera * u_depthDiskShift;\n ");
|
|
71
|
+
var inject = {
|
|
72
|
+
'vs:#decl': "\n uniform vec3 u_depthDiskOrientCol0;\n uniform vec3 u_depthDiskOrientCol1;\n uniform vec3 u_depthDiskOrientCol2;\n uniform vec3 u_directionToCamera;\n uniform float u_depthDiskShift;\n uniform float u_depthDiskRadius;\n out vec3 vDepthDiskPos;\n ",
|
|
73
|
+
'fs:#decl': "\n uniform float u_depthDiskRadius;\n in vec3 vDepthDiskPos;\n ",
|
|
74
|
+
'fs:#main-start': "\n if (length(vDepthDiskPos) > u_depthDiskRadius) {\n discard;\n }\n "
|
|
75
|
+
};
|
|
76
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
|
77
|
+
vs: vs,
|
|
78
|
+
inject: inject
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}, {
|
|
82
|
+
key: "draw",
|
|
83
|
+
value: function draw(_ref) {
|
|
84
|
+
var uniforms = _ref.uniforms;
|
|
85
|
+
var normalizedRadius = GLOBE_COMMON_RADIUS;
|
|
86
|
+
var camPos = new Vector3(this.context.viewport.cameraPosition);
|
|
87
|
+
var camDir = camPos.clone().normalize();
|
|
88
|
+
var topDir = new Vector3(0, 0, 1);
|
|
89
|
+
var sideDir = camDir.clone().cross(topDir);
|
|
90
|
+
var sidePoint = sideDir.clone().scale(normalizedRadius);
|
|
91
|
+
var camToSide = sidePoint.clone().subtract(camPos).normalize();
|
|
92
|
+
var adjustedSidePoint = camToSide.cross(topDir).scale(-normalizedRadius);
|
|
93
|
+
var shiftToCamera = camDir.dot(adjustedSidePoint);
|
|
94
|
+
var adjustedDiskRadius = Math.sqrt(normalizedRadius * normalizedRadius - shiftToCamera * shiftToCamera);
|
|
95
|
+
|
|
96
|
+
// Camera-facing orientation: the plane's local X/Y axes map to world `right`/`up`
|
|
97
|
+
// (both perpendicular to the camera direction), and local Z maps to `forward`.
|
|
98
|
+
// Columns are handed to the shader as vec3s to avoid Matrix3 row/column ambiguity.
|
|
99
|
+
var forward = camDir.clone();
|
|
100
|
+
var right = topDir.clone().cross(forward).normalize();
|
|
101
|
+
var up = forward.clone().cross(right).normalize();
|
|
102
|
+
var model = this.state.model;
|
|
103
|
+
if (model) {
|
|
104
|
+
// Use the same uniform-delivery mechanism as the (working) atmosphere layers:
|
|
105
|
+
// raw `uniform` declarations + assignment to model.props.uniforms.
|
|
106
|
+
model.props.uniforms = _objectSpread(_objectSpread({}, model.props.uniforms), {}, {
|
|
107
|
+
// mat3(col0, col1, col2) in GLSL is column-major; mat3 * (x, y, 0) = x*right + y*up.
|
|
108
|
+
u_depthDiskOrientCol0: [right[0], right[1], right[2]],
|
|
109
|
+
u_depthDiskOrientCol1: [up[0], up[1], up[2]],
|
|
110
|
+
u_depthDiskOrientCol2: [forward[0], forward[1], forward[2]],
|
|
111
|
+
u_directionToCamera: [camDir[0], camDir[1], camDir[2]],
|
|
112
|
+
// Convert the common-space (256-unit) radius/shift to meters, since the disk
|
|
113
|
+
// geometry (and therefore `pos`) is expressed in meters.
|
|
114
|
+
u_depthDiskShift: shiftToCamera / normalizedRadius * DEPTH_DISK_FULL_RADIUS,
|
|
115
|
+
u_depthDiskRadius: adjustedDiskRadius / normalizedRadius * DEPTH_DISK_FULL_RADIUS
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
_superPropGet(GlobeDepthDiskLayer, "draw", this, 3)([{
|
|
119
|
+
uniforms: uniforms
|
|
120
|
+
}]);
|
|
121
|
+
}
|
|
122
|
+
}]);
|
|
123
|
+
}(SimpleMeshLayer);
|
|
124
|
+
_defineProperty(GlobeDepthDiskLayer, "layerName", 'GlobeDepthDiskLayer');
|
|
125
|
+
export var getGlobeDepthDiskLayer = function getGlobeDepthDiskLayer(_ref2) {
|
|
126
|
+
var fillColor = _ref2.fillColor;
|
|
127
|
+
return new GlobeDepthDiskLayer({
|
|
128
|
+
id: 'globe-depth-disk-layer',
|
|
129
|
+
data: [[0, 0, 0]],
|
|
130
|
+
coordinateOrigin: [0, 0, 0],
|
|
131
|
+
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
132
|
+
getPosition: function getPosition(d) {
|
|
133
|
+
return d;
|
|
134
|
+
},
|
|
135
|
+
getColor: fillColor !== null && fillColor !== void 0 ? fillColor : [0, 0, 0],
|
|
136
|
+
mesh: PLANE_GEOMETRY,
|
|
137
|
+
parameters: DEPTH_DISK_PARAMETERS
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT09SRElOQVRFX1NZU1RFTSIsIlNpbXBsZU1lc2hMYXllciIsIlBsYW5lR2VvbWV0cnkiLCJWZWN0b3IzIiwiZWRpdFNoYWRlciIsIlBMQU5FX0dFT01FVFJZIiwidHlwZSIsInhsZW4iLCJ5bGVuIiwiREVQVEhfRElTS19QQVJBTUVURVJTIiwiZGVwdGhUZXN0IiwiY3VsbCIsIkRFUFRIX0RJU0tfRlVMTF9SQURJVVMiLCJHTE9CRV9DT01NT05fUkFESVVTIiwiR2xvYmVEZXB0aERpc2tMYXllciIsIl9TaW1wbGVNZXNoTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiYXJndW1lbnRzIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJnZXRTaGFkZXJzIiwic2hhZGVycyIsIl9zdXBlclByb3BHZXQiLCJ2cyIsImluamVjdCIsIl9vYmplY3RTcHJlYWQiLCJkcmF3IiwiX3JlZiIsInVuaWZvcm1zIiwibm9ybWFsaXplZFJhZGl1cyIsImNhbVBvcyIsImNvbnRleHQiLCJ2aWV3cG9ydCIsImNhbWVyYVBvc2l0aW9uIiwiY2FtRGlyIiwiY2xvbmUiLCJub3JtYWxpemUiLCJ0b3BEaXIiLCJzaWRlRGlyIiwiY3Jvc3MiLCJzaWRlUG9pbnQiLCJzY2FsZSIsImNhbVRvU2lkZSIsInN1YnRyYWN0IiwiYWRqdXN0ZWRTaWRlUG9pbnQiLCJzaGlmdFRvQ2FtZXJhIiwiZG90IiwiYWRqdXN0ZWREaXNrUmFkaXVzIiwiTWF0aCIsInNxcnQiLCJmb3J3YXJkIiwicmlnaHQiLCJ1cCIsIm1vZGVsIiwic3RhdGUiLCJwcm9wcyIsInVfZGVwdGhEaXNrT3JpZW50Q29sMCIsInVfZGVwdGhEaXNrT3JpZW50Q29sMSIsInVfZGVwdGhEaXNrT3JpZW50Q29sMiIsInVfZGlyZWN0aW9uVG9DYW1lcmEiLCJ1X2RlcHRoRGlza1NoaWZ0IiwidV9kZXB0aERpc2tSYWRpdXMiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiX3JlZjIiLCJmaWxsQ29sb3IiLCJpZCIsImRhdGEiLCJjb29yZGluYXRlT3JpZ2luIiwiY29vcmRpbmF0ZVN5c3RlbSIsIkNBUlRFU0lBTiIsImdldFBvc2l0aW9uIiwiZCIsImdldENvbG9yIiwibWVzaCIsInBhcmFtZXRlcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvZ2xvYmUtZGVwdGgtZGlzay1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2ltcGxlTWVzaExheWVyfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQge1BsYW5lR2VvbWV0cnl9IGZyb20gJ0BsdW1hLmdsL2VuZ2luZSc7XG5pbXBvcnQge1ZlY3RvcjN9IGZyb20gJ0BtYXRoLmdsL2NvcmUnO1xuXG5pbXBvcnQge2VkaXRTaGFkZXJ9IGZyb20gJy4uL2xheWVyLXV0aWxzL3NoYWRlci11dGlscyc7XG5pbXBvcnQgdHlwZSB7UkdCQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vLyBsdW1hLmdsIDkncyBQbGFuZUdlb21ldHJ5IGlnbm9yZXMgYHJhZGl1c2A7IHBhc3MgZXhwbGljaXQgdHlwZS94bGVuL3lsZW4gc28gd2Vcbi8vIGdldCBhIFstMSwgMV0gcXVhZCAoYSBgcmFkaXVzOiAxYCBwbGFuZSB3b3VsZCBvbmx5IHNwYW4gWy0wLjUsIDAuNV0pLlxuY29uc3QgUExBTkVfR0VPTUVUUlkgPSBuZXcgUGxhbmVHZW9tZXRyeSh7XG4gIHR5cGU6ICd4LHknLFxuICB4bGVuOiAyLFxuICB5bGVuOiAyXG59IGFzIGFueSk7XG5cbmNvbnN0IERFUFRIX0RJU0tfUEFSQU1FVEVSUyA9IHtcbiAgLy8gRGVwdGggd3JpdGVzIG9ubHkgaGFwcGVuIHdpdGggZGVwdGhUZXN0IGVuYWJsZWQuIFRoZSBkaXNrIGlzIG9wYXF1ZS1ibGFjay1pc2hcbiAgLy8gYW5kIHVzZWQgcHVyZWx5IHRvIGZpbGwgdGhlIGRlcHRoIGJ1ZmZlciBzbyBmYXItc2lkZSBnZW9tZXRyeSAoYXJjcy9saW5lcykgaXNcbiAgLy8gb2NjbHVkZWQgYnkgdGhlIHBsYW5ldC5cbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBjdWxsOiBmYWxzZVxufTtcblxuLy8gRWFydGggcmFkaXVzIGluIG1ldGVycy4gVGhlIGRpc2sgZ2VvbWV0cnkgaXMgYSBbLTEsIDFdIHBsYW5lOyB3ZSBzY2FsZSBpdCBpbnRvXG4vLyBNRVRFUlMgaW4gdGhlIHZlcnRleCBzaGFkZXIgKGxpa2UgdGhlIGF0bW9zcGhlcmUgU3BoZXJlR2VvbWV0cnksIHdob3NlIHJhZGl1cyBpc1xuLy8gfjYuNGU2IG0pIGFuZCBsZXQgU2ltcGxlTWVzaExheWVyJ3Mgc3RvY2sgcHJvamVjdGlvbiBtYXAgaXQgb250byB0aGUgZ2xvYmUg4oCUXG4vLyBleGFjdGx5IHRoZSB3b3JraW5nIHBhdGggdGhlIGF0bW9zcGhlcmUgbWVzaCBsYXllcnMgdXNlLlxuY29uc3QgREVQVEhfRElTS19GVUxMX1JBRElVUyA9IDYuMzcxZTY7XG5cbi8vIEdsb2JlIGNvbW1vbiBzcGFjZSB1c2VzIEdMT0JFX1JBRElVUyA9IDI1NiB1bml0cyAoc2VlIGRlY2suZ2wncyBwcm9qZWN0X2dsb2JlXykuXG4vLyBUaGUgZGlzayBvcmllbnRhdGlvbiBtYXRoIGlzIGRvbmUgaW4gdGhhdCAyNTYtdW5pdCBjb21tb24gc3BhY2UgKG1hdGNoaW5nXG4vLyB2aWV3cG9ydC5jYW1lcmFQb3NpdGlvbiksIHRoZW4gdGhlIHJlc3VsdGluZyByYWRpdXMvc2hpZnQgcmF0aW9zIGFyZSBjb252ZXJ0ZWQgdG9cbi8vIG1ldGVycyBmb3IgdGhlIHNoYWRlciwgc2luY2UgdGhlIGRpc2sgZ2VvbWV0cnkgaXMgZXhwcmVzc2VkIGluIG1ldGVycy5cbmV4cG9ydCBjb25zdCBHTE9CRV9DT01NT05fUkFESVVTID0gMjU2O1xuXG4vKipcbiAqIENyZWF0ZXMgYSB2aWV3LW9yaWVudGVkIGRpc2sgcG9zaXRpb25lZCBhbG9uZyB0aGUgZGlyZWN0aW9uIGZyb20gdGhlIGdsb2JlJ3MgY2VudGVyIHRvIHRoZSBjYW1lcmEuXG4gKiBUaGUgZGlzayBpcyBhIGNyb3NzLXNlY3Rpb24gb2YgdGhlIGdsb2JlIGJldHdlZW4gdGhlIGZyb250ICh2aXNpYmxlKSBhbmQgYmFjayBzaWRlLCBhbmQgaXQgZmlsbHNcbiAqIHRoZSBkZXB0aCBidWZmZXIgc28gYW55dGhpbmcgb24gdGhlIGZhciBzaWRlIG9mIHRoZSBnbG9iZSAoZS5nLiBhcmNzL2xpbmVzKSBpcyBkZXB0aC1jdWxsZWQgYW5kXG4gKiBoaWRkZW4gYmVoaW5kIHRoZSBwbGFuZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBHbG9iZURlcHRoRGlza0xheWVyIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueT4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0dsb2JlRGVwdGhEaXNrTGF5ZXInO1xuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgLy8gT3ZlcnJpZGUgdGhlIGxvY2FsIGBwb3NgIGNvbXB1dGF0aW9uOiByZW9yaWVudCB0aGUgZmxhdCBbLTEsMV0gcGxhbmUgdG8gZmFjZVxuICAgIC8vIHRoZSBjYW1lcmEsIHNjYWxlIGl0IHRvIG1ldGVycywgYW5kIHNoaWZ0IGl0IHRvd2FyZCB0aGUgY2FtZXJhIGFsb25nIHRoZSB2aWV3XG4gICAgLy8gYXhpcyBzbyBpdCBzaXRzIGF0IHRoZSBnbG9iZSdzIHNpbGhvdWV0dGUgY3Jvc3Mtc2VjdGlvbi4gVGhlIHN0b2NrXG4gICAgLy8gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UgY2FsbCBpcyBsZWZ0IHVudG91Y2hlZCBzbyB0aGUgZGlzayBwcm9qZWN0cyBvbnRvXG4gICAgLy8gdGhlIGdsb2JlIHRocm91Z2ggdGhlIGV4YWN0IHNhbWUgKHdvcmtpbmcpIHBhdGggdGhlIGF0bW9zcGhlcmUgbWVzaCBsYXllcnMgdXNlLlxuICAgIGNvbnN0IHZzID0gZWRpdFNoYWRlcihcbiAgICAgIHNoYWRlcnMudnMsXG4gICAgICAnZ2xvYmUgZGVwdGggZGlzayB2cycsXG4gICAgICAndmVjMyBwb3MgPSAoaW5zdGFuY2VNb2RlbE1hdHJpeCAqIHBvc2l0aW9ucykgKiBzaW1wbGVNZXNoLnNpemVTY2FsZSArIGluc3RhbmNlVHJhbnNsYXRpb247JyxcbiAgICAgIGBtYXQzIHVfbWF0RGVwdGhEaXNrT3JpZW50YXRpb24gPSBtYXQzKFxuICAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wwLFxuICAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wxLFxuICAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wyXG4gICAgICAgKTtcbiAgICAgICB2ZWMzIHBvcyA9ICh1X21hdERlcHRoRGlza09yaWVudGF0aW9uICogcG9zaXRpb25zKSAqIHVfZGVwdGhEaXNrUmFkaXVzO1xuICAgICAgIHZEZXB0aERpc2tQb3MgPSBwb3M7XG4gICAgICAgcG9zID0gcG9zICsgdV9kaXJlY3Rpb25Ub0NhbWVyYSAqIHVfZGVwdGhEaXNrU2hpZnQ7XG4gICAgICBgXG4gICAgKTtcblxuICAgIGNvbnN0IGluamVjdCA9IHtcbiAgICAgICd2czojZGVjbCc6IGBcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGVwdGhEaXNrT3JpZW50Q29sMDtcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGVwdGhEaXNrT3JpZW50Q29sMTtcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGVwdGhEaXNrT3JpZW50Q29sMjtcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGlyZWN0aW9uVG9DYW1lcmE7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9kZXB0aERpc2tTaGlmdDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2RlcHRoRGlza1JhZGl1cztcbiAgICAgICAgb3V0IHZlYzMgdkRlcHRoRGlza1BvcztcbiAgICAgIGAsXG4gICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9kZXB0aERpc2tSYWRpdXM7XG4gICAgICAgIGluIHZlYzMgdkRlcHRoRGlza1BvcztcbiAgICAgIGAsXG4gICAgICAnZnM6I21haW4tc3RhcnQnOiBgXG4gICAgICAgIGlmIChsZW5ndGgodkRlcHRoRGlza1BvcykgPiB1X2RlcHRoRGlza1JhZGl1cykge1xuICAgICAgICAgIGRpc2NhcmQ7XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNoYWRlcnMsXG4gICAgICB2cyxcbiAgICAgIGluamVjdFxuICAgIH07XG4gIH1cblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRSYWRpdXMgPSBHTE9CRV9DT01NT05fUkFESVVTO1xuXG4gICAgY29uc3QgY2FtUG9zID0gbmV3IFZlY3RvcjMoKHRoaXMuY29udGV4dC52aWV3cG9ydCBhcyBhbnkpLmNhbWVyYVBvc2l0aW9uKTtcbiAgICBjb25zdCBjYW1EaXIgPSBjYW1Qb3MuY2xvbmUoKS5ub3JtYWxpemUoKTtcbiAgICBjb25zdCB0b3BEaXIgPSBuZXcgVmVjdG9yMygwLCAwLCAxKTtcbiAgICBjb25zdCBzaWRlRGlyID0gY2FtRGlyLmNsb25lKCkuY3Jvc3ModG9wRGlyKTtcbiAgICBjb25zdCBzaWRlUG9pbnQgPSBzaWRlRGlyLmNsb25lKCkuc2NhbGUobm9ybWFsaXplZFJhZGl1cyk7XG5cbiAgICBjb25zdCBjYW1Ub1NpZGUgPSBzaWRlUG9pbnQuY2xvbmUoKS5zdWJ0cmFjdChjYW1Qb3MpLm5vcm1hbGl6ZSgpO1xuICAgIGNvbnN0IGFkanVzdGVkU2lkZVBvaW50ID0gY2FtVG9TaWRlLmNyb3NzKHRvcERpcikuc2NhbGUoLW5vcm1hbGl6ZWRSYWRpdXMpO1xuXG4gICAgY29uc3Qgc2hpZnRUb0NhbWVyYSA9IGNhbURpci5kb3QoYWRqdXN0ZWRTaWRlUG9pbnQpO1xuICAgIGNvbnN0IGFkanVzdGVkRGlza1JhZGl1cyA9IE1hdGguc3FydChcbiAgICAgIG5vcm1hbGl6ZWRSYWRpdXMgKiBub3JtYWxpemVkUmFkaXVzIC0gc2hpZnRUb0NhbWVyYSAqIHNoaWZ0VG9DYW1lcmFcbiAgICApO1xuXG4gICAgLy8gQ2FtZXJhLWZhY2luZyBvcmllbnRhdGlvbjogdGhlIHBsYW5lJ3MgbG9jYWwgWC9ZIGF4ZXMgbWFwIHRvIHdvcmxkIGByaWdodGAvYHVwYFxuICAgIC8vIChib3RoIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGNhbWVyYSBkaXJlY3Rpb24pLCBhbmQgbG9jYWwgWiBtYXBzIHRvIGBmb3J3YXJkYC5cbiAgICAvLyBDb2x1bW5zIGFyZSBoYW5kZWQgdG8gdGhlIHNoYWRlciBhcyB2ZWMzcyB0byBhdm9pZCBNYXRyaXgzIHJvdy9jb2x1bW4gYW1iaWd1aXR5LlxuICAgIGNvbnN0IGZvcndhcmQgPSBjYW1EaXIuY2xvbmUoKTtcbiAgICBjb25zdCByaWdodCA9IHRvcERpci5jbG9uZSgpLmNyb3NzKGZvcndhcmQpLm5vcm1hbGl6ZSgpO1xuICAgIGNvbnN0IHVwID0gZm9yd2FyZC5jbG9uZSgpLmNyb3NzKHJpZ2h0KS5ub3JtYWxpemUoKTtcblxuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zdGF0ZS5tb2RlbDtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIC8vIFVzZSB0aGUgc2FtZSB1bmlmb3JtLWRlbGl2ZXJ5IG1lY2hhbmlzbSBhcyB0aGUgKHdvcmtpbmcpIGF0bW9zcGhlcmUgbGF5ZXJzOlxuICAgICAgLy8gcmF3IGB1bmlmb3JtYCBkZWNsYXJhdGlvbnMgKyBhc3NpZ25tZW50IHRvIG1vZGVsLnByb3BzLnVuaWZvcm1zLlxuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAvLyBtYXQzKGNvbDAsIGNvbDEsIGNvbDIpIGluIEdMU0wgaXMgY29sdW1uLW1ham9yOyBtYXQzICogKHgsIHksIDApID0geCpyaWdodCArIHkqdXAuXG4gICAgICAgIHVfZGVwdGhEaXNrT3JpZW50Q29sMDogW3JpZ2h0WzBdLCByaWdodFsxXSwgcmlnaHRbMl1dLFxuICAgICAgICB1X2RlcHRoRGlza09yaWVudENvbDE6IFt1cFswXSwgdXBbMV0sIHVwWzJdXSxcbiAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wyOiBbZm9yd2FyZFswXSwgZm9yd2FyZFsxXSwgZm9yd2FyZFsyXV0sXG4gICAgICAgIHVfZGlyZWN0aW9uVG9DYW1lcmE6IFtjYW1EaXJbMF0sIGNhbURpclsxXSwgY2FtRGlyWzJdXSxcbiAgICAgICAgLy8gQ29udmVydCB0aGUgY29tbW9uLXNwYWNlICgyNTYtdW5pdCkgcmFkaXVzL3NoaWZ0IHRvIG1ldGVycywgc2luY2UgdGhlIGRpc2tcbiAgICAgICAgLy8gZ2VvbWV0cnkgKGFuZCB0aGVyZWZvcmUgYHBvc2ApIGlzIGV4cHJlc3NlZCBpbiBtZXRlcnMuXG4gICAgICAgIHVfZGVwdGhEaXNrU2hpZnQ6IChzaGlmdFRvQ2FtZXJhIC8gbm9ybWFsaXplZFJhZGl1cykgKiBERVBUSF9ESVNLX0ZVTExfUkFESVVTLFxuICAgICAgICB1X2RlcHRoRGlza1JhZGl1czogKGFkanVzdGVkRGlza1JhZGl1cyAvIG5vcm1hbGl6ZWRSYWRpdXMpICogREVQVEhfRElTS19GVUxMX1JBRElVU1xuICAgICAgfTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyh7dW5pZm9ybXN9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVEZXB0aERpc2tMYXllciA9ICh7ZmlsbENvbG9yfToge2ZpbGxDb2xvcj86IFJHQkNvbG9yfSkgPT4ge1xuICByZXR1cm4gbmV3IEdsb2JlRGVwdGhEaXNrTGF5ZXIoe1xuICAgIGlkOiAnZ2xvYmUtZGVwdGgtZGlzay1sYXllcicsXG4gICAgZGF0YTogW1swLCAwLCAwXV0sXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKGQ6IG51bWJlcltdKSA9PiBkLFxuICAgIGdldENvbG9yOiAoZmlsbENvbG9yID8/IFswLCAwLCAwXSkgYXMgYW55LFxuICAgIG1lc2g6IFBMQU5FX0dFT01FVFJZLFxuICAgIHBhcmFtZXRlcnM6IERFUFRIX0RJU0tfUEFSQU1FVEVSU1xuICB9IGFzIGFueSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLGlCQUFpQixRQUFPLGVBQWU7QUFDL0MsU0FBUUMsZUFBZSxRQUFPLHNCQUFzQjtBQUNwRCxTQUFRQyxhQUFhLFFBQU8saUJBQWlCO0FBQzdDLFNBQVFDLE9BQU8sUUFBTyxlQUFlO0FBRXJDLFNBQVFDLFVBQVUsUUFBTyw2QkFBNkI7QUFHdEQ7QUFDQTtBQUNBLElBQU1DLGNBQWMsR0FBRyxJQUFJSCxhQUFhLENBQUM7RUFDdkNJLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxDQUFDO0VBQ1BDLElBQUksRUFBRTtBQUNSLENBQVEsQ0FBQztBQUVULElBQU1DLHFCQUFxQixHQUFHO0VBQzVCO0VBQ0E7RUFDQTtFQUNBQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxJQUFJLEVBQUU7QUFDUixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsc0JBQXNCLEdBQUcsT0FBTzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLG1CQUFtQixHQUFHLEdBQUc7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQWFDLG1CQUFtQiwwQkFBQUMsZ0JBQUE7RUFBQSxTQUFBRCxvQkFBQTtJQUFBRSxlQUFBLE9BQUFGLG1CQUFB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
|