@kepler.gl/utils 3.2.6 → 3.3.0-alpha.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/dist/aggregation.d.ts +1 -2
- package/dist/application-config.d.ts +4 -4
- package/dist/arrow-data-container.d.ts +2 -2
- package/dist/data-container-interface.d.ts +1 -1
- package/dist/data-container-utils.d.ts +1 -1
- package/dist/data-container-utils.js +1 -1
- package/dist/data-row.d.ts +2 -2
- package/dist/data-scale-utils.d.ts +11 -11
- package/dist/data-scale-utils.js +1 -1
- package/dist/data-utils.d.ts +1 -1
- package/dist/dataset-utils.d.ts +1 -1
- package/dist/effect-utils.d.ts +11 -8
- package/dist/effect-utils.js +121 -13
- package/dist/export-map-html.js +1 -3
- package/dist/export-utils.d.ts +2 -2
- package/dist/export-utils.js +1 -1
- package/dist/filter-utils.d.ts +6 -6
- package/dist/gl-utils.d.ts +7 -1
- package/dist/gl-utils.js +106 -15
- package/dist/index.d.ts +1 -1
- package/dist/index.js +15 -8
- package/dist/indexed-data-container.d.ts +2 -2
- package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +4 -5
- package/dist/map-style-utils/mapbox-utils.d.ts +2 -2
- package/dist/map-utils.d.ts +1 -1
- package/dist/notifications-utils.d.ts +4 -4
- package/dist/plot.d.ts +10 -10
- package/dist/row-data-container.d.ts +2 -2
- package/dist/utils.d.ts +3 -3
- package/package.json +8 -8
package/dist/effect-utils.js
CHANGED
|
@@ -14,33 +14,68 @@ var _constants = require("@kepler.gl/constants");
|
|
|
14
14
|
var _commonUtils = require("@kepler.gl/common-utils");
|
|
15
15
|
var _utils = require("./utils");
|
|
16
16
|
var _dataUtils = require("./data-utils");
|
|
17
|
-
|
|
17
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
18
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
19
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // SPDX-License-Identifier: MIT
|
|
18
20
|
// Copyright contributors to the kepler.gl project
|
|
19
|
-
|
|
20
21
|
// TODO isolate types - depends on @kepler.gl/schemas
|
|
21
22
|
|
|
23
|
+
// Retains the last LightingEffect deckEffect so we can keep it in the
|
|
24
|
+
// effects array (with shadows disabled) after the user removes the
|
|
25
|
+
// Light & Shadow effect from the UI. Without this, deck.gl calls
|
|
26
|
+
// cleanup() which removes the shadow shader module, but existing layer
|
|
27
|
+
// models still have shadow_uShadowMap bindings → texture errors.
|
|
28
|
+
var _lastLightingDeckEffect = null;
|
|
22
29
|
function computeDeckEffects(_ref) {
|
|
23
30
|
var visState = _ref.visState,
|
|
24
|
-
mapState = _ref.mapState
|
|
31
|
+
mapState = _ref.mapState,
|
|
32
|
+
isExport = _ref.isExport;
|
|
25
33
|
// TODO: 1) deck effects per deck context 2) preserved between draws
|
|
26
|
-
|
|
34
|
+
var hasLightingShadow = false;
|
|
35
|
+
var deckEffects = visState.effectOrder.map(function (effectId) {
|
|
27
36
|
var effect = (0, _utils.findById)(effectId)(visState.effects);
|
|
28
|
-
if (effect !== null && effect !== void 0 && effect.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
if (effect !== null && effect !== void 0 && effect.deckEffect) {
|
|
38
|
+
if (effect.isEnabled) {
|
|
39
|
+
updateEffect({
|
|
40
|
+
visState: visState,
|
|
41
|
+
mapState: mapState,
|
|
42
|
+
effect: effect
|
|
43
|
+
});
|
|
44
|
+
} else if (effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type) {
|
|
45
|
+
// Keep lighting effects in the array even when disabled to avoid
|
|
46
|
+
// removing the shadow shader module. Composite layer sublayers
|
|
47
|
+
// don't regenerate models when default shader modules change,
|
|
48
|
+
// leaving stale pipelines with shadow_uShadowMap bindings.
|
|
49
|
+
// Disabling shadow on the lights avoids visual effects.
|
|
50
|
+
disableLightingEffect(effect);
|
|
51
|
+
}
|
|
52
|
+
if (effect.isEnabled || effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type) {
|
|
53
|
+
if (effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type) {
|
|
54
|
+
hasLightingShadow = true;
|
|
55
|
+
if (!isExport) {
|
|
56
|
+
_lastLightingDeckEffect = effect.deckEffect;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return effect.deckEffect;
|
|
60
|
+
}
|
|
35
61
|
}
|
|
36
62
|
return null;
|
|
37
63
|
}).filter(function (effect) {
|
|
38
64
|
return effect;
|
|
39
65
|
});
|
|
66
|
+
if (!hasLightingShadow && _lastLightingDeckEffect) {
|
|
67
|
+
disableDeckLightingEffect(_lastLightingDeckEffect);
|
|
68
|
+
deckEffects.unshift(_lastLightingDeckEffect);
|
|
69
|
+
}
|
|
70
|
+
return deckEffects;
|
|
40
71
|
}
|
|
41
72
|
|
|
42
73
|
/**
|
|
43
|
-
* Always keep light & shadow effect at the top
|
|
74
|
+
* Always keep light & shadow effect at the top, then distance fog and
|
|
75
|
+
* surface fog right after it (before other post-processing effects).
|
|
76
|
+
* Both fog effects read the depth buffer from renderBuffers[0];
|
|
77
|
+
* subsequent effects clear depth during their render passes, so fog
|
|
78
|
+
* must run before that happens.
|
|
44
79
|
*/
|
|
45
80
|
var fixEffectOrder = exports.fixEffectOrder = function fixEffectOrder(effects, effectOrder) {
|
|
46
81
|
var lightShadowEffect = effects.find(function (effect) {
|
|
@@ -53,6 +88,30 @@ var fixEffectOrder = exports.fixEffectOrder = function fixEffectOrder(effects, e
|
|
|
53
88
|
effectOrder.unshift(lightShadowEffect.id);
|
|
54
89
|
}
|
|
55
90
|
}
|
|
91
|
+
var distanceFogEffect = effects.find(function (effect) {
|
|
92
|
+
return effect.type === _constants.DISTANCE_FOG_TYPE;
|
|
93
|
+
});
|
|
94
|
+
if (distanceFogEffect) {
|
|
95
|
+
var _ind = effectOrder.indexOf(distanceFogEffect.id);
|
|
96
|
+
var targetPos = lightShadowEffect ? 1 : 0;
|
|
97
|
+
if (_ind > targetPos) {
|
|
98
|
+
effectOrder.splice(_ind, 1);
|
|
99
|
+
effectOrder.splice(targetPos, 0, distanceFogEffect.id);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
var surfaceFogEffect = effects.find(function (effect) {
|
|
103
|
+
return effect.type === _constants.SURFACE_FOG_TYPE;
|
|
104
|
+
});
|
|
105
|
+
if (surfaceFogEffect) {
|
|
106
|
+
var _ind2 = effectOrder.indexOf(surfaceFogEffect.id);
|
|
107
|
+
var _targetPos = 0;
|
|
108
|
+
if (lightShadowEffect) _targetPos++;
|
|
109
|
+
if (distanceFogEffect) _targetPos++;
|
|
110
|
+
if (_ind2 > _targetPos) {
|
|
111
|
+
effectOrder.splice(_ind2, 1);
|
|
112
|
+
effectOrder.splice(_targetPos, 0, surfaceFogEffect.id);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
56
115
|
return effectOrder;
|
|
57
116
|
};
|
|
58
117
|
function reorderEffectOrder(effectOrder, originEffectId, destinationEffectId) {
|
|
@@ -76,6 +135,37 @@ function isDaytime(lat, lon, timestamp) {
|
|
|
76
135
|
return date >= sunrise && date <= sunset;
|
|
77
136
|
}
|
|
78
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Disable shadow rendering on a lighting effect without removing it.
|
|
140
|
+
* This keeps the shadow shader module registered and prevents stale
|
|
141
|
+
* texture binding errors in composite layer sublayers.
|
|
142
|
+
*/
|
|
143
|
+
function disableLightingEffect(effect) {
|
|
144
|
+
var deckEffect = effect.deckEffect;
|
|
145
|
+
if (!deckEffect) return;
|
|
146
|
+
disableDeckLightingEffect(deckEffect);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Disable shadow rendering directly on a deck.gl LightingEffect instance.
|
|
151
|
+
*/
|
|
152
|
+
function disableDeckLightingEffect(deckEffect) {
|
|
153
|
+
deckEffect.shadow = false;
|
|
154
|
+
deckEffect.outputUniformShadow = false;
|
|
155
|
+
var _iterator = _createForOfIteratorHelper(deckEffect.directionalLights || []),
|
|
156
|
+
_step;
|
|
157
|
+
try {
|
|
158
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
159
|
+
var light = _step.value;
|
|
160
|
+
light.shadow = false;
|
|
161
|
+
}
|
|
162
|
+
} catch (err) {
|
|
163
|
+
_iterator.e(err);
|
|
164
|
+
} finally {
|
|
165
|
+
_iterator.f();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
79
169
|
/**
|
|
80
170
|
* Update effect to match latest vis and map states
|
|
81
171
|
*/
|
|
@@ -84,6 +174,24 @@ function updateEffect(_ref2) {
|
|
|
84
174
|
mapState = _ref2.mapState,
|
|
85
175
|
effect = _ref2.effect;
|
|
86
176
|
if (effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type) {
|
|
177
|
+
var _deckEffect$direction, _deckEffect$direction2;
|
|
178
|
+
// Re-enable shadow rendering in case it was previously disabled
|
|
179
|
+
var deckEffect = effect.deckEffect;
|
|
180
|
+
var _iterator2 = _createForOfIteratorHelper(deckEffect.directionalLights || []),
|
|
181
|
+
_step2;
|
|
182
|
+
try {
|
|
183
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
184
|
+
var light = _step2.value;
|
|
185
|
+
light.shadow = true;
|
|
186
|
+
}
|
|
187
|
+
} catch (err) {
|
|
188
|
+
_iterator2.e(err);
|
|
189
|
+
} finally {
|
|
190
|
+
_iterator2.f();
|
|
191
|
+
}
|
|
192
|
+
deckEffect.shadow = (_deckEffect$direction = (_deckEffect$direction2 = deckEffect.directionalLights) === null || _deckEffect$direction2 === void 0 ? void 0 : _deckEffect$direction2.some(function (l) {
|
|
193
|
+
return l.shadow;
|
|
194
|
+
})) !== null && _deckEffect$direction !== void 0 ? _deckEffect$direction : false;
|
|
87
195
|
var timestamp = effect.parameters.timestamp;
|
|
88
196
|
var timeMode = effect.parameters.timeMode;
|
|
89
197
|
var sunLight = effect.deckEffect.directionalLights[0];
|
|
@@ -161,4 +269,4 @@ function validateEffectParameters() {
|
|
|
161
269
|
});
|
|
162
270
|
return result;
|
|
163
271
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VuY2FsYyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nsb25lRGVlcCIsIl9jb25zdGFudHMiLCJfY29tbW9uVXRpbHMiLCJfdXRpbHMiLCJfZGF0YVV0aWxzIiwiY29tcHV0ZURlY2tFZmZlY3RzIiwiX3JlZiIsInZpc1N0YXRlIiwibWFwU3RhdGUiLCJlZmZlY3RPcmRlciIsIm1hcCIsImVmZmVjdElkIiwiZWZmZWN0IiwiZmluZEJ5SWQiLCJlZmZlY3RzIiwiaXNFbmFibGVkIiwiZGVja0VmZmVjdCIsInVwZGF0ZUVmZmVjdCIsImZpbHRlciIsImZpeEVmZmVjdE9yZGVyIiwiZXhwb3J0cyIsImxpZ2h0U2hhZG93RWZmZWN0IiwiZmluZCIsInR5cGUiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsImluZCIsImluZGV4T2YiLCJpZCIsInNwbGljZSIsInVuc2hpZnQiLCJyZW9yZGVyRWZmZWN0T3JkZXIiLCJvcmlnaW5FZmZlY3RJZCIsImRlc3RpbmF0aW9uRWZmZWN0SWQiLCJhY3RpdmVJbmRleCIsIm92ZXJJbmRleCIsImFycmF5TW92ZSIsImlzRGF5dGltZSIsImxhdCIsImxvbiIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwiX1N1bkNhbGMkZ2V0VGltZXMiLCJTdW5DYWxjIiwiZ2V0VGltZXMiLCJzdW5yaXNlIiwic3Vuc2V0IiwiX3JlZjIiLCJwYXJhbWV0ZXJzIiwidGltZU1vZGUiLCJzdW5MaWdodCIsImRpcmVjdGlvbmFsTGlnaHRzIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyIsImN1cnJlbnQiLCJub3ciLCJhbmltYXRpb24iLCJfdmlzU3RhdGUkYW5pbWF0aW9uQ28iLCJhbmltYXRpb25Db25maWciLCJjdXJyZW50VGltZSIsImZpbHRlcnMiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJ2aWV3IiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJlbmxhcmdlZCIsInN5bmNlZFdpdGhMYXllclRpbWVsaW5lIiwiX2ZpbHRlciR2YWx1ZSQiLCJfZmlsdGVyJHZhbHVlIiwidmFsdWUiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsIm91dHB1dFVuaWZvcm1TaGFkb3ciLCJpbnRlbnNpdHkiLCJzdW5MaWdodEludGVuc2l0eSIsInZhbGlkYXRlRWZmZWN0UGFyYW1ldGVycyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImVmZmVjdERlc2NyaXB0aW9uIiwicmVzdWx0IiwiY2xvbmVEZWVwIiwiZm9yRWFjaCIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdFZhbHVlIiwibmFtZSIsIm1pbiIsIm1heCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInByb3BlcnR5IiwiQXJyYXkiLCJpc0FycmF5IiwidiIsImkiLCJfZGVmYXVsdFZhbHVlJGkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wIl0sInNvdXJjZXMiOlsiLi4vc3JjL2VmZmVjdC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgU3VuQ2FsYyBmcm9tICdzdW5jYWxjJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5cbmltcG9ydCB7UG9zdFByb2Nlc3NFZmZlY3R9IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuXG5pbXBvcnQge1xuICBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCxcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyxcbiAgRklMVEVSX1RZUEVTLFxuICBGSUxURVJfVklFV19UWVBFU1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge2FycmF5TW92ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZSwgRWZmZWN0LCBFZmZlY3RQcm9wcywgRWZmZWN0RGVzY3JpcHRpb259IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtmaW5kQnlJZH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge2NsYW1wfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuXG4vLyBUT0RPIGlzb2xhdGUgdHlwZXMgLSBkZXBlbmRzIG9uIEBrZXBsZXIuZ2wvc2NoZW1hc1xudHlwZSBWaXNTdGF0ZSA9IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNrRWZmZWN0cyh7XG4gIHZpc1N0YXRlLFxuICBtYXBTdGF0ZVxufToge1xuICB2aXNTdGF0ZTogVmlzU3RhdGU7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbn0pOiBQb3N0UHJvY2Vzc0VmZmVjdFtdIHtcbiAgLy8gVE9ETzogMSkgZGVjayBlZmZlY3RzIHBlciBkZWNrIGNvbnRleHQgMikgcHJlc2VydmVkIGJldHdlZW4gZHJhd3NcbiAgcmV0dXJuIHZpc1N0YXRlLmVmZmVjdE9yZGVyXG4gICAgLm1hcChlZmZlY3RJZCA9PiB7XG4gICAgICBjb25zdCBlZmZlY3QgPSBmaW5kQnlJZChlZmZlY3RJZCkodmlzU3RhdGUuZWZmZWN0cykgYXMgRWZmZWN0IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKGVmZmVjdD8uaXNFbmFibGVkICYmIGVmZmVjdC5kZWNrRWZmZWN0KSB7XG4gICAgICAgIHVwZGF0ZUVmZmVjdCh7dmlzU3RhdGUsIG1hcFN0YXRlLCBlZmZlY3R9KTtcbiAgICAgICAgcmV0dXJuIGVmZmVjdC5kZWNrRWZmZWN0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAuZmlsdGVyKGVmZmVjdCA9PiBlZmZlY3QpO1xufVxuXG4vKipcbiAqIEFsd2F5cyBrZWVwIGxpZ2h0ICYgc2hhZG93IGVmZmVjdCBhdCB0aGUgdG9wXG4gKi9cbmV4cG9ydCBjb25zdCBmaXhFZmZlY3RPcmRlciA9IChlZmZlY3RzOiBFZmZlY3RbXSwgZWZmZWN0T3JkZXI6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBsaWdodFNoYWRvd0VmZmVjdCA9IGVmZmVjdHMuZmluZChlZmZlY3QgPT4gZWZmZWN0LnR5cGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGUpO1xuICBpZiAobGlnaHRTaGFkb3dFZmZlY3QpIHtcbiAgICBjb25zdCBpbmQgPSBlZmZlY3RPcmRlci5pbmRleE9mKGxpZ2h0U2hhZG93RWZmZWN0LmlkKTtcbiAgICBpZiAoaW5kID4gMCkge1xuICAgICAgZWZmZWN0T3JkZXIuc3BsaWNlKGluZCwgMSk7XG4gICAgICBlZmZlY3RPcmRlci51bnNoaWZ0KGxpZ2h0U2hhZG93RWZmZWN0LmlkKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVmZmVjdE9yZGVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlb3JkZXJFZmZlY3RPcmRlcihcbiAgZWZmZWN0T3JkZXI6IHN0cmluZ1tdLFxuICBvcmlnaW5FZmZlY3RJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkVmZmVjdElkOiBzdHJpbmdcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBlZmZlY3RPcmRlci5pbmRleE9mKG9yaWdpbkVmZmVjdElkKTtcbiAgY29uc3Qgb3ZlckluZGV4ID0gZWZmZWN0T3JkZXIuaW5kZXhPZihkZXN0aW5hdGlvbkVmZmVjdElkKTtcbiAgcmV0dXJuIGFycmF5TW92ZShlZmZlY3RPcmRlciwgYWN0aXZlSW5kZXgsIG92ZXJJbmRleCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdGltZSBpcyBkYXl0aW1lIGF0IHRoZSBnaXZlbiBsb2NhdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxhdCBMYXRpdHVkZVxuICogQHBhcmFtIHtudW1iZXJ9IGxvbiBMb25naXR1ZGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lc3RhbXAgTWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVbml4IEVwb2NoXG4gKiBAcmV0dXJucyBib29sZWFuXG4gKi9cbmZ1bmN0aW9uIGlzRGF5dGltZShsYXQsIGxvbiwgdGltZXN0YW1wKSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICBjb25zdCB7c3VucmlzZSwgc3Vuc2V0fSA9IFN1bkNhbGMuZ2V0VGltZXMoZGF0ZSwgbGF0LCBsb24pO1xuICByZXR1cm4gZGF0ZSA+PSBzdW5yaXNlICYmIGRhdGUgPD0gc3Vuc2V0O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBlZmZlY3QgdG8gbWF0Y2ggbGF0ZXN0IHZpcyBhbmQgbWFwIHN0YXRlc1xuICovXG5mdW5jdGlvbiB1cGRhdGVFZmZlY3Qoe3Zpc1N0YXRlLCBtYXBTdGF0ZSwgZWZmZWN0fSkge1xuICBpZiAoZWZmZWN0LnR5cGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGUpIHtcbiAgICBsZXQge3RpbWVzdGFtcH0gPSBlZmZlY3QucGFyYW1ldGVycztcbiAgICBjb25zdCB7dGltZU1vZGV9ID0gZWZmZWN0LnBhcmFtZXRlcnM7XG4gICAgY29uc3Qgc3VuTGlnaHQgPSBlZmZlY3QuZGVja0VmZmVjdC5kaXJlY3Rpb25hbExpZ2h0c1swXTtcblxuICAgIC8vIHNldCB0aW1lc3RhbXAgZm9yIHNoYWRvd1xuICAgIGlmICh0aW1lTW9kZSA9PT0gTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5jdXJyZW50KSB7XG4gICAgICB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgc3VuTGlnaHQudGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0gZWxzZSBpZiAodGltZU1vZGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMuYW5pbWF0aW9uKSB7XG4gICAgICB0aW1lc3RhbXAgPSB2aXNTdGF0ZS5hbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgPz8gMDtcbiAgICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHZpc1N0YXRlLmZpbHRlcnMuZmluZChcbiAgICAgICAgICBmaWx0ZXIgPT5cbiAgICAgICAgICAgIGZpbHRlci50eXBlID09PSBGSUxURVJfVFlQRVMudGltZVJhbmdlICYmXG4gICAgICAgICAgICAoZmlsdGVyLnZpZXcgPT09IEZJTFRFUl9WSUVXX1RZUEVTLmVubGFyZ2VkIHx8IGZpbHRlci5zeW5jZWRXaXRoTGF5ZXJUaW1lbGluZSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgIHRpbWVzdGFtcCA9IGZpbHRlci52YWx1ZT8uWzBdID8/IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN1bkxpZ2h0LnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbiAgICB9XG5cbiAgICAvLyBvdXRwdXQgdW5pZm9ybSBzaGFkb3cgZHVyaW5nIG5pZ2h0dGltZVxuICAgIGlmIChpc0RheXRpbWUobWFwU3RhdGUubGF0aXR1ZGUsIG1hcFN0YXRlLmxvbmdpdHVkZSwgdGltZXN0YW1wKSkge1xuICAgICAgZWZmZWN0LmRlY2tFZmZlY3Qub3V0cHV0VW5pZm9ybVNoYWRvdyA9IGZhbHNlO1xuICAgICAgc3VuTGlnaHQuaW50ZW5zaXR5ID0gZWZmZWN0LnBhcmFtZXRlcnMuc3VuTGlnaHRJbnRlbnNpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVmZmVjdC5kZWNrRWZmZWN0Lm91dHB1dFVuaWZvcm1TaGFkb3cgPSB0cnVlO1xuICAgICAgc3VuTGlnaHQuaW50ZW5zaXR5ID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgcGFyYW1ldGVycyBmb3IgYW4gZWZmZWN0LCBjbGFtcHMgbnVtYmVycyB0byBhbGxvd2VkIHJhbmdlc1xuICogb3IgYXBwbGllcyBkZWZhdWx0IHZhbHVlcyBpbiBjYXNlIG9mIHdyb25nIG5vbi1udW1lcmljIHZhbHVlcy5cbiAqIEFsbCB1bmtub3duIHByb3BlcnRpZXMgYXJlbid0IG1vZGlmaWVkLlxuICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVycyBjYW5kaWRhdGUgZm9yIGFuIGVmZmVjdC5cbiAqIEBwYXJhbSBlZmZlY3REZXNjcmlwdGlvbiBEZXNjcmlwdGlvbiBvZiBhbiBlZmZlY3QuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzKFxuICBwYXJhbWV0ZXJzOiBFZmZlY3RQcm9wc1sncGFyYW1ldGVycyddID0ge30sXG4gIGVmZmVjdERlc2NyaXB0aW9uOiBFZmZlY3REZXNjcmlwdGlvblsncGFyYW1ldGVycyddXG4pOiBFZmZlY3RQcm9wc1sncGFyYW1ldGVycyddIHtcbiAgY29uc3QgcmVzdWx0ID0gY2xvbmVEZWVwKHBhcmFtZXRlcnMpO1xuICBlZmZlY3REZXNjcmlwdGlvbi5mb3JFYWNoKGRlc2NyaXB0aW9uID0+IHtcbiAgICBjb25zdCB7ZGVmYXVsdFZhbHVlLCBuYW1lLCB0eXBlLCBtaW4sIG1heH0gPSBkZXNjcmlwdGlvbjtcblxuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgbmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHJlc3VsdFtuYW1lXTtcblxuICAgIGlmICh0eXBlID09PSAnY29sb3InIHx8IHR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpKSByZXR1cm47XG4gICAgICBpZiAocHJvcGVydHkubGVuZ3RoICE9PSBkZWZhdWx0VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICByZXN1bHRbbmFtZV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHRWYWx1ZS5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHByb3BlcnR5W2ldO1xuICAgICAgICB2YWx1ZSA9IE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyBjbGFtcChbbWluLCBtYXhdLCB2YWx1ZSkgOiBkZWZhdWx0VmFsdWVbaV0gPz8gbWluO1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BlcnR5W2ldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyLmlzRmluaXRlKHByb3BlcnR5KSA/IGNsYW1wKFttaW4sIG1heF0sIHByb3BlcnR5KSA6IGRlZmF1bHRWYWx1ZSA/PyBtaW47XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUlBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQWpCQTtBQUNBOztBQWtCQTs7QUFHTyxTQUFTTSxrQkFBa0JBLENBQUFDLElBQUEsRUFNVjtFQUFBLElBTHRCQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtJQUNSQyxRQUFRLEdBQUFGLElBQUEsQ0FBUkUsUUFBUTtFQUtSO0VBQ0EsT0FBT0QsUUFBUSxDQUFDRSxXQUFXLENBQ3hCQyxHQUFHLENBQUMsVUFBQUMsUUFBUSxFQUFJO0lBQ2YsSUFBTUMsTUFBTSxHQUFHLElBQUFDLGVBQVEsRUFBQ0YsUUFBUSxDQUFDLENBQUNKLFFBQVEsQ0FBQ08sT0FBTyxDQUF1QjtJQUN6RSxJQUFJRixNQUFNLGFBQU5BLE1BQU0sZUFBTkEsTUFBTSxDQUFFRyxTQUFTLElBQUlILE1BQU0sQ0FBQ0ksVUFBVSxFQUFFO01B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
|
|
272
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VuY2FsYyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nsb25lRGVlcCIsIl9jb25zdGFudHMiLCJfY29tbW9uVXRpbHMiLCJfdXRpbHMiLCJfZGF0YVV0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfbGFzdExpZ2h0aW5nRGVja0VmZmVjdCIsImNvbXB1dGVEZWNrRWZmZWN0cyIsIl9yZWYiLCJ2aXNTdGF0ZSIsIm1hcFN0YXRlIiwiaXNFeHBvcnQiLCJoYXNMaWdodGluZ1NoYWRvdyIsImRlY2tFZmZlY3RzIiwiZWZmZWN0T3JkZXIiLCJtYXAiLCJlZmZlY3RJZCIsImVmZmVjdCIsImZpbmRCeUlkIiwiZWZmZWN0cyIsImRlY2tFZmZlY3QiLCJpc0VuYWJsZWQiLCJ1cGRhdGVFZmZlY3QiLCJ0eXBlIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1QiLCJkaXNhYmxlTGlnaHRpbmdFZmZlY3QiLCJmaWx0ZXIiLCJkaXNhYmxlRGVja0xpZ2h0aW5nRWZmZWN0IiwidW5zaGlmdCIsImZpeEVmZmVjdE9yZGVyIiwiZXhwb3J0cyIsImxpZ2h0U2hhZG93RWZmZWN0IiwiZmluZCIsImluZCIsImluZGV4T2YiLCJpZCIsInNwbGljZSIsImRpc3RhbmNlRm9nRWZmZWN0IiwiRElTVEFOQ0VfRk9HX1RZUEUiLCJ0YXJnZXRQb3MiLCJzdXJmYWNlRm9nRWZmZWN0IiwiU1VSRkFDRV9GT0dfVFlQRSIsInJlb3JkZXJFZmZlY3RPcmRlciIsIm9yaWdpbkVmZmVjdElkIiwiZGVzdGluYXRpb25FZmZlY3RJZCIsImFjdGl2ZUluZGV4Iiwib3ZlckluZGV4IiwiYXJyYXlNb3ZlIiwiaXNEYXl0aW1lIiwibGF0IiwibG9uIiwidGltZXN0YW1wIiwiZGF0ZSIsIkRhdGUiLCJfU3VuQ2FsYyRnZXRUaW1lcyIsIlN1bkNhbGMiLCJnZXRUaW1lcyIsInN1bnJpc2UiLCJzdW5zZXQiLCJzaGFkb3ciLCJvdXRwdXRVbmlmb3JtU2hhZG93IiwiX2l0ZXJhdG9yIiwiZGlyZWN0aW9uYWxMaWdodHMiLCJfc3RlcCIsImxpZ2h0IiwiZXJyIiwiX3JlZjIiLCJfZGVja0VmZmVjdCRkaXJlY3Rpb24iLCJfZGVja0VmZmVjdCRkaXJlY3Rpb24yIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInNvbWUiLCJsIiwicGFyYW1ldGVycyIsInRpbWVNb2RlIiwic3VuTGlnaHQiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTIiwiY3VycmVudCIsIm5vdyIsImFuaW1hdGlvbiIsIl92aXNTdGF0ZSRhbmltYXRpb25DbyIsImFuaW1hdGlvbkNvbmZpZyIsImN1cnJlbnRUaW1lIiwiZmlsdGVycyIsIkZJTFRFUl9UWVBFUyIsInRpbWVSYW5nZSIsInZpZXciLCJGSUxURVJfVklFV19UWVBFUyIsImVubGFyZ2VkIiwic3luY2VkV2l0aExheWVyVGltZWxpbmUiLCJfZmlsdGVyJHZhbHVlJCIsIl9maWx0ZXIkdmFsdWUiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImludGVuc2l0eSIsInN1bkxpZ2h0SW50ZW5zaXR5IiwidmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWZmZWN0RGVzY3JpcHRpb24iLCJyZXN1bHQiLCJjbG9uZURlZXAiLCJmb3JFYWNoIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0VmFsdWUiLCJtaW4iLCJtYXgiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInByb3BlcnR5IiwidiIsImkiLCJfZGVmYXVsdFZhbHVlJGkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wIl0sInNvdXJjZXMiOlsiLi4vc3JjL2VmZmVjdC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgU3VuQ2FsYyBmcm9tICdzdW5jYWxjJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5cbmltcG9ydCB0eXBlIHtFZmZlY3QgYXMgRGVja0VmZmVjdH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5cbmltcG9ydCB7XG4gIExJR0hUX0FORF9TSEFET1dfRUZGRUNULFxuICBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTLFxuICBGSUxURVJfVFlQRVMsXG4gIEZJTFRFUl9WSUVXX1RZUEVTLFxuICBESVNUQU5DRV9GT0dfVFlQRSxcbiAgU1VSRkFDRV9GT0dfVFlQRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge2FycmF5TW92ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZSwgRWZmZWN0LCBFZmZlY3RQcm9wcywgRWZmZWN0RGVzY3JpcHRpb259IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtmaW5kQnlJZH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge2NsYW1wfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuXG4vLyBUT0RPIGlzb2xhdGUgdHlwZXMgLSBkZXBlbmRzIG9uIEBrZXBsZXIuZ2wvc2NoZW1hc1xudHlwZSBWaXNTdGF0ZSA9IGFueTtcblxuLy8gUmV0YWlucyB0aGUgbGFzdCBMaWdodGluZ0VmZmVjdCBkZWNrRWZmZWN0IHNvIHdlIGNhbiBrZWVwIGl0IGluIHRoZVxuLy8gZWZmZWN0cyBhcnJheSAod2l0aCBzaGFkb3dzIGRpc2FibGVkKSBhZnRlciB0aGUgdXNlciByZW1vdmVzIHRoZVxuLy8gTGlnaHQgJiBTaGFkb3cgZWZmZWN0IGZyb20gdGhlIFVJLiBXaXRob3V0IHRoaXMsIGRlY2suZ2wgY2FsbHNcbi8vIGNsZWFudXAoKSB3aGljaCByZW1vdmVzIHRoZSBzaGFkb3cgc2hhZGVyIG1vZHVsZSwgYnV0IGV4aXN0aW5nIGxheWVyXG4vLyBtb2RlbHMgc3RpbGwgaGF2ZSBzaGFkb3dfdVNoYWRvd01hcCBiaW5kaW5ncyDihpIgdGV4dHVyZSBlcnJvcnMuXG5sZXQgX2xhc3RMaWdodGluZ0RlY2tFZmZlY3Q6IGFueSA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVja0VmZmVjdHMoe1xuICB2aXNTdGF0ZSxcbiAgbWFwU3RhdGUsXG4gIGlzRXhwb3J0XG59OiB7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG59KTogRGVja0VmZmVjdFtdIHtcbiAgLy8gVE9ETzogMSkgZGVjayBlZmZlY3RzIHBlciBkZWNrIGNvbnRleHQgMikgcHJlc2VydmVkIGJldHdlZW4gZHJhd3NcbiAgbGV0IGhhc0xpZ2h0aW5nU2hhZG93ID0gZmFsc2U7XG5cbiAgY29uc3QgZGVja0VmZmVjdHMgPSB2aXNTdGF0ZS5lZmZlY3RPcmRlclxuICAgIC5tYXAoZWZmZWN0SWQgPT4ge1xuICAgICAgY29uc3QgZWZmZWN0ID0gZmluZEJ5SWQoZWZmZWN0SWQpKHZpc1N0YXRlLmVmZmVjdHMpIGFzIEVmZmVjdCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChlZmZlY3Q/LmRlY2tFZmZlY3QpIHtcbiAgICAgICAgaWYgKGVmZmVjdC5pc0VuYWJsZWQpIHtcbiAgICAgICAgICB1cGRhdGVFZmZlY3Qoe3Zpc1N0YXRlLCBtYXBTdGF0ZSwgZWZmZWN0fSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWZmZWN0LnR5cGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGUpIHtcbiAgICAgICAgICAvLyBLZWVwIGxpZ2h0aW5nIGVmZmVjdHMgaW4gdGhlIGFycmF5IGV2ZW4gd2hlbiBkaXNhYmxlZCB0byBhdm9pZFxuICAgICAgICAgIC8vIHJlbW92aW5nIHRoZSBzaGFkb3cgc2hhZGVyIG1vZHVsZS4gQ29tcG9zaXRlIGxheWVyIHN1YmxheWVyc1xuICAgICAgICAgIC8vIGRvbid0IHJlZ2VuZXJhdGUgbW9kZWxzIHdoZW4gZGVmYXVsdCBzaGFkZXIgbW9kdWxlcyBjaGFuZ2UsXG4gICAgICAgICAgLy8gbGVhdmluZyBzdGFsZSBwaXBlbGluZXMgd2l0aCBzaGFkb3dfdVNoYWRvd01hcCBiaW5kaW5ncy5cbiAgICAgICAgICAvLyBEaXNhYmxpbmcgc2hhZG93IG9uIHRoZSBsaWdodHMgYXZvaWRzIHZpc3VhbCBlZmZlY3RzLlxuICAgICAgICAgIGRpc2FibGVMaWdodGluZ0VmZmVjdChlZmZlY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlZmZlY3QuaXNFbmFibGVkIHx8IGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKSB7XG4gICAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKSB7XG4gICAgICAgICAgICBoYXNMaWdodGluZ1NoYWRvdyA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIWlzRXhwb3J0KSB7XG4gICAgICAgICAgICAgIF9sYXN0TGlnaHRpbmdEZWNrRWZmZWN0ID0gZWZmZWN0LmRlY2tFZmZlY3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlZmZlY3QuZGVja0VmZmVjdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAuZmlsdGVyKGVmZmVjdCA9PiBlZmZlY3QpO1xuXG4gIGlmICghaGFzTGlnaHRpbmdTaGFkb3cgJiYgX2xhc3RMaWdodGluZ0RlY2tFZmZlY3QpIHtcbiAgICBkaXNhYmxlRGVja0xpZ2h0aW5nRWZmZWN0KF9sYXN0TGlnaHRpbmdEZWNrRWZmZWN0KTtcbiAgICBkZWNrRWZmZWN0cy51bnNoaWZ0KF9sYXN0TGlnaHRpbmdEZWNrRWZmZWN0KTtcbiAgfVxuXG4gIHJldHVybiBkZWNrRWZmZWN0cztcbn1cblxuLyoqXG4gKiBBbHdheXMga2VlcCBsaWdodCAmIHNoYWRvdyBlZmZlY3QgYXQgdGhlIHRvcCwgdGhlbiBkaXN0YW5jZSBmb2cgYW5kXG4gKiBzdXJmYWNlIGZvZyByaWdodCBhZnRlciBpdCAoYmVmb3JlIG90aGVyIHBvc3QtcHJvY2Vzc2luZyBlZmZlY3RzKS5cbiAqIEJvdGggZm9nIGVmZmVjdHMgcmVhZCB0aGUgZGVwdGggYnVmZmVyIGZyb20gcmVuZGVyQnVmZmVyc1swXTtcbiAqIHN1YnNlcXVlbnQgZWZmZWN0cyBjbGVhciBkZXB0aCBkdXJpbmcgdGhlaXIgcmVuZGVyIHBhc3Nlcywgc28gZm9nXG4gKiBtdXN0IHJ1biBiZWZvcmUgdGhhdCBoYXBwZW5zLlxuICovXG5leHBvcnQgY29uc3QgZml4RWZmZWN0T3JkZXIgPSAoZWZmZWN0czogRWZmZWN0W10sIGVmZmVjdE9yZGVyOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgbGlnaHRTaGFkb3dFZmZlY3QgPSBlZmZlY3RzLmZpbmQoZWZmZWN0ID0+IGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKTtcbiAgaWYgKGxpZ2h0U2hhZG93RWZmZWN0KSB7XG4gICAgY29uc3QgaW5kID0gZWZmZWN0T3JkZXIuaW5kZXhPZihsaWdodFNoYWRvd0VmZmVjdC5pZCk7XG4gICAgaWYgKGluZCA+IDApIHtcbiAgICAgIGVmZmVjdE9yZGVyLnNwbGljZShpbmQsIDEpO1xuICAgICAgZWZmZWN0T3JkZXIudW5zaGlmdChsaWdodFNoYWRvd0VmZmVjdC5pZCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlzdGFuY2VGb2dFZmZlY3QgPSBlZmZlY3RzLmZpbmQoZWZmZWN0ID0+IGVmZmVjdC50eXBlID09PSBESVNUQU5DRV9GT0dfVFlQRSk7XG4gIGlmIChkaXN0YW5jZUZvZ0VmZmVjdCkge1xuICAgIGNvbnN0IGluZCA9IGVmZmVjdE9yZGVyLmluZGV4T2YoZGlzdGFuY2VGb2dFZmZlY3QuaWQpO1xuICAgIGNvbnN0IHRhcmdldFBvcyA9IGxpZ2h0U2hhZG93RWZmZWN0ID8gMSA6IDA7XG4gICAgaWYgKGluZCA+IHRhcmdldFBvcykge1xuICAgICAgZWZmZWN0T3JkZXIuc3BsaWNlKGluZCwgMSk7XG4gICAgICBlZmZlY3RPcmRlci5zcGxpY2UodGFyZ2V0UG9zLCAwLCBkaXN0YW5jZUZvZ0VmZmVjdC5pZCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3VyZmFjZUZvZ0VmZmVjdCA9IGVmZmVjdHMuZmluZChlZmZlY3QgPT4gZWZmZWN0LnR5cGUgPT09IFNVUkZBQ0VfRk9HX1RZUEUpO1xuICBpZiAoc3VyZmFjZUZvZ0VmZmVjdCkge1xuICAgIGNvbnN0IGluZCA9IGVmZmVjdE9yZGVyLmluZGV4T2Yoc3VyZmFjZUZvZ0VmZmVjdC5pZCk7XG4gICAgbGV0IHRhcmdldFBvcyA9IDA7XG4gICAgaWYgKGxpZ2h0U2hhZG93RWZmZWN0KSB0YXJnZXRQb3MrKztcbiAgICBpZiAoZGlzdGFuY2VGb2dFZmZlY3QpIHRhcmdldFBvcysrO1xuICAgIGlmIChpbmQgPiB0YXJnZXRQb3MpIHtcbiAgICAgIGVmZmVjdE9yZGVyLnNwbGljZShpbmQsIDEpO1xuICAgICAgZWZmZWN0T3JkZXIuc3BsaWNlKHRhcmdldFBvcywgMCwgc3VyZmFjZUZvZ0VmZmVjdC5pZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVmZmVjdE9yZGVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlb3JkZXJFZmZlY3RPcmRlcihcbiAgZWZmZWN0T3JkZXI6IHN0cmluZ1tdLFxuICBvcmlnaW5FZmZlY3RJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkVmZmVjdElkOiBzdHJpbmdcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBlZmZlY3RPcmRlci5pbmRleE9mKG9yaWdpbkVmZmVjdElkKTtcbiAgY29uc3Qgb3ZlckluZGV4ID0gZWZmZWN0T3JkZXIuaW5kZXhPZihkZXN0aW5hdGlvbkVmZmVjdElkKTtcbiAgcmV0dXJuIGFycmF5TW92ZShlZmZlY3RPcmRlciwgYWN0aXZlSW5kZXgsIG92ZXJJbmRleCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdGltZSBpcyBkYXl0aW1lIGF0IHRoZSBnaXZlbiBsb2NhdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxhdCBMYXRpdHVkZVxuICogQHBhcmFtIHtudW1iZXJ9IGxvbiBMb25naXR1ZGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lc3RhbXAgTWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBVbml4IEVwb2NoXG4gKiBAcmV0dXJucyBib29sZWFuXG4gKi9cbmZ1bmN0aW9uIGlzRGF5dGltZShsYXQsIGxvbiwgdGltZXN0YW1wKSB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICBjb25zdCB7c3VucmlzZSwgc3Vuc2V0fSA9IFN1bkNhbGMuZ2V0VGltZXMoZGF0ZSwgbGF0LCBsb24pO1xuICByZXR1cm4gZGF0ZSA+PSBzdW5yaXNlICYmIGRhdGUgPD0gc3Vuc2V0O1xufVxuXG4vKipcbiAqIERpc2FibGUgc2hhZG93IHJlbmRlcmluZyBvbiBhIGxpZ2h0aW5nIGVmZmVjdCB3aXRob3V0IHJlbW92aW5nIGl0LlxuICogVGhpcyBrZWVwcyB0aGUgc2hhZG93IHNoYWRlciBtb2R1bGUgcmVnaXN0ZXJlZCBhbmQgcHJldmVudHMgc3RhbGVcbiAqIHRleHR1cmUgYmluZGluZyBlcnJvcnMgaW4gY29tcG9zaXRlIGxheWVyIHN1YmxheWVycy5cbiAqL1xuZnVuY3Rpb24gZGlzYWJsZUxpZ2h0aW5nRWZmZWN0KGVmZmVjdDogRWZmZWN0KSB7XG4gIGNvbnN0IGRlY2tFZmZlY3QgPSBlZmZlY3QuZGVja0VmZmVjdDtcbiAgaWYgKCFkZWNrRWZmZWN0KSByZXR1cm47XG4gIGRpc2FibGVEZWNrTGlnaHRpbmdFZmZlY3QoZGVja0VmZmVjdCk7XG59XG5cbi8qKlxuICogRGlzYWJsZSBzaGFkb3cgcmVuZGVyaW5nIGRpcmVjdGx5IG9uIGEgZGVjay5nbCBMaWdodGluZ0VmZmVjdCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gZGlzYWJsZURlY2tMaWdodGluZ0VmZmVjdChkZWNrRWZmZWN0OiBhbnkpIHtcbiAgZGVja0VmZmVjdC5zaGFkb3cgPSBmYWxzZTtcbiAgZGVja0VmZmVjdC5vdXRwdXRVbmlmb3JtU2hhZG93ID0gZmFsc2U7XG4gIGZvciAoY29uc3QgbGlnaHQgb2YgZGVja0VmZmVjdC5kaXJlY3Rpb25hbExpZ2h0cyB8fCBbXSkge1xuICAgIGxpZ2h0LnNoYWRvdyA9IGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVXBkYXRlIGVmZmVjdCB0byBtYXRjaCBsYXRlc3QgdmlzIGFuZCBtYXAgc3RhdGVzXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUVmZmVjdCh7dmlzU3RhdGUsIG1hcFN0YXRlLCBlZmZlY3R9KSB7XG4gIGlmIChlZmZlY3QudHlwZSA9PT0gTElHSFRfQU5EX1NIQURPV19FRkZFQ1QudHlwZSkge1xuICAgIC8vIFJlLWVuYWJsZSBzaGFkb3cgcmVuZGVyaW5nIGluIGNhc2UgaXQgd2FzIHByZXZpb3VzbHkgZGlzYWJsZWRcbiAgICBjb25zdCBkZWNrRWZmZWN0ID0gZWZmZWN0LmRlY2tFZmZlY3Q7XG4gICAgZm9yIChjb25zdCBsaWdodCBvZiBkZWNrRWZmZWN0LmRpcmVjdGlvbmFsTGlnaHRzIHx8IFtdKSB7XG4gICAgICBsaWdodC5zaGFkb3cgPSB0cnVlO1xuICAgIH1cbiAgICBkZWNrRWZmZWN0LnNoYWRvdyA9IGRlY2tFZmZlY3QuZGlyZWN0aW9uYWxMaWdodHM/LnNvbWUobCA9PiBsLnNoYWRvdykgPz8gZmFsc2U7XG5cbiAgICBsZXQge3RpbWVzdGFtcH0gPSBlZmZlY3QucGFyYW1ldGVycztcbiAgICBjb25zdCB7dGltZU1vZGV9ID0gZWZmZWN0LnBhcmFtZXRlcnM7XG4gICAgY29uc3Qgc3VuTGlnaHQgPSBlZmZlY3QuZGVja0VmZmVjdC5kaXJlY3Rpb25hbExpZ2h0c1swXTtcblxuICAgIC8vIHNldCB0aW1lc3RhbXAgZm9yIHNoYWRvd1xuICAgIGlmICh0aW1lTW9kZSA9PT0gTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5jdXJyZW50KSB7XG4gICAgICB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgc3VuTGlnaHQudGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0gZWxzZSBpZiAodGltZU1vZGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMuYW5pbWF0aW9uKSB7XG4gICAgICB0aW1lc3RhbXAgPSB2aXNTdGF0ZS5hbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgPz8gMDtcbiAgICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHZpc1N0YXRlLmZpbHRlcnMuZmluZChcbiAgICAgICAgICBmaWx0ZXIgPT5cbiAgICAgICAgICAgIGZpbHRlci50eXBlID09PSBGSUxURVJfVFlQRVMudGltZVJhbmdlICYmXG4gICAgICAgICAgICAoZmlsdGVyLnZpZXcgPT09IEZJTFRFUl9WSUVXX1RZUEVTLmVubGFyZ2VkIHx8IGZpbHRlci5zeW5jZWRXaXRoTGF5ZXJUaW1lbGluZSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgIHRpbWVzdGFtcCA9IGZpbHRlci52YWx1ZT8uWzBdID8/IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN1bkxpZ2h0LnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbiAgICB9XG5cbiAgICAvLyBvdXRwdXQgdW5pZm9ybSBzaGFkb3cgZHVyaW5nIG5pZ2h0dGltZVxuICAgIGlmIChpc0RheXRpbWUobWFwU3RhdGUubGF0aXR1ZGUsIG1hcFN0YXRlLmxvbmdpdHVkZSwgdGltZXN0YW1wKSkge1xuICAgICAgZWZmZWN0LmRlY2tFZmZlY3Qub3V0cHV0VW5pZm9ybVNoYWRvdyA9IGZhbHNlO1xuICAgICAgc3VuTGlnaHQuaW50ZW5zaXR5ID0gZWZmZWN0LnBhcmFtZXRlcnMuc3VuTGlnaHRJbnRlbnNpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVmZmVjdC5kZWNrRWZmZWN0Lm91dHB1dFVuaWZvcm1TaGFkb3cgPSB0cnVlO1xuICAgICAgc3VuTGlnaHQuaW50ZW5zaXR5ID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgcGFyYW1ldGVycyBmb3IgYW4gZWZmZWN0LCBjbGFtcHMgbnVtYmVycyB0byBhbGxvd2VkIHJhbmdlc1xuICogb3IgYXBwbGllcyBkZWZhdWx0IHZhbHVlcyBpbiBjYXNlIG9mIHdyb25nIG5vbi1udW1lcmljIHZhbHVlcy5cbiAqIEFsbCB1bmtub3duIHByb3BlcnRpZXMgYXJlbid0IG1vZGlmaWVkLlxuICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVycyBjYW5kaWRhdGUgZm9yIGFuIGVmZmVjdC5cbiAqIEBwYXJhbSBlZmZlY3REZXNjcmlwdGlvbiBEZXNjcmlwdGlvbiBvZiBhbiBlZmZlY3QuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzKFxuICBwYXJhbWV0ZXJzOiBFZmZlY3RQcm9wc1sncGFyYW1ldGVycyddID0ge30sXG4gIGVmZmVjdERlc2NyaXB0aW9uOiBFZmZlY3REZXNjcmlwdGlvblsncGFyYW1ldGVycyddXG4pOiBFZmZlY3RQcm9wc1sncGFyYW1ldGVycyddIHtcbiAgY29uc3QgcmVzdWx0ID0gY2xvbmVEZWVwKHBhcmFtZXRlcnMpO1xuICBlZmZlY3REZXNjcmlwdGlvbi5mb3JFYWNoKGRlc2NyaXB0aW9uID0+IHtcbiAgICBjb25zdCB7ZGVmYXVsdFZhbHVlLCBuYW1lLCB0eXBlLCBtaW4sIG1heH0gPSBkZXNjcmlwdGlvbjtcblxuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgbmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHJlc3VsdFtuYW1lXTtcblxuICAgIGlmICh0eXBlID09PSAnY29sb3InIHx8IHR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpKSByZXR1cm47XG4gICAgICBpZiAocHJvcGVydHkubGVuZ3RoICE9PSBkZWZhdWx0VmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICByZXN1bHRbbmFtZV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHRWYWx1ZS5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHByb3BlcnR5W2ldO1xuICAgICAgICB2YWx1ZSA9IE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyBjbGFtcChbbWluLCBtYXhdLCB2YWx1ZSkgOiBkZWZhdWx0VmFsdWVbaV0gPz8gbWluO1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BlcnR5W2ldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyLmlzRmluaXRlKHByb3BlcnR5KSA/IGNsYW1wKFttaW4sIG1heF0sIHByb3BlcnR5KSA6IGRlZmF1bHRWYWx1ZSA/PyBtaW47XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEs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
|
package/dist/export-map-html.js
CHANGED
|
@@ -8,8 +8,6 @@ var _constants = require("@kepler.gl/constants");
|
|
|
8
8
|
// SPDX-License-Identifier: MIT
|
|
9
9
|
// Copyright contributors to the kepler.gl project
|
|
10
10
|
|
|
11
|
-
// @ts-nocheck
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* This method is used to create an html file which will inlcude kepler and map data
|
|
15
13
|
* @param {Object} options Object that collects all necessary data to create the html file
|
|
@@ -22,4 +20,4 @@ var exportMapToHTML = exports.exportMapToHTML = function exportMapToHTML(options
|
|
|
22
20
|
var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.KEPLER_GL_VERSION;
|
|
23
21
|
return "\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"UTF-8\"/>\n <title>Kepler.gl embedded map</title>\n\n <!--Uber Font-->\n <link rel=\"stylesheet\" href=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/uber-fonts/4.0.0/superfine.css\">\n\n <!--Kepler css-->\n <link href=\"https://unpkg.com/kepler.gl@".concat(version, "/umd/keplergl.min.css\" rel=\"stylesheet\">\n\n <!--MapBox css-->\n <link href=\"https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css\" rel=\"stylesheet\">\n <link href=\"https://unpkg.com/maplibre-gl@^3/dist/maplibre-gl.css\" rel=\"stylesheet\">\n\n <!-\u2014 facebook open graph tags -->\n <meta property=\"og:url\" content=\"http://kepler.gl/\" />\n <meta property=\"og:title\" content=\"Large-scale WebGL-powered Geospatial Data Visualization Tool\" />\n <meta property=\"og:description\" content=\"Kepler.gl is a powerful web-based geospatial data analysis tool. Built on a high performance rendering engine and designed for large-scale data sets.\" />\n <meta property=\"og:site_name\" content=\"kepler.gl\" />\n <meta property=\"og:image\" content=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/kepler.gl-meta-tag.png\" />\n <meta property=\"og:image:type\" content=\"image/png\" />\n <meta property=\"og:image:width\" content=\"800\" />\n <meta property=\"og:image:height\" content=\"800\" />\n\n <!-\u2014 twitter card tags -->\n <meta name=\"twitter:card\" content=\"summary_large_image\">\n <meta name=\"twitter:site\" content=\"@openjsf\">\n <meta name=\"twitter:creator\" content=\"@openjsf\">\n <meta name=\"twitter:title\" content=\"Large-scale WebGL-powered Geospatial Data Visualization Tool\">\n <meta name=\"twitter:description\" content=\"Kepler.gl is a powerful web-based geospatial data analysis tool. Built on a high performance rendering engine and designed for large-scale data sets.\">\n <meta name=\"twitter:image\" content=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/kepler.gl-meta-tag.png\" />\n\n <!-- Load React/Redux -->\n <script src=\"https://unpkg.com/react@18.3.1/umd/react.production.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/redux@4.2.1/dist/redux.js\" crossorigin></script>\n <script src=\"https://unpkg.com/react-redux@8.1.2/dist/react-redux.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/styled-components@6.1.8/dist/styled-components.min.js\" crossorigin></script>\n\n <!-- Load Kepler.gl -->\n <script src=\"https://unpkg.com/kepler.gl@").concat(version, "/umd/keplergl.min.js\" crossorigin></script>\n\n <style type=\"text/css\">\n body {margin: 0; padding: 0; overflow: hidden;}\n </style>\n\n <!--MapBox token-->\n <!--\n SECURITY NOTE: Your Mapbox access token is embedded below in plain text.\n Anyone with access to this HTML file can see and use this token.\n Consider using a scoped token with URL restrictions to limit misuse.\n See: https://docs.mapbox.com/accounts/guides/tokens/#url-restrictions\n -->\n <script>\n /**\n * Provide your MapBox Token\n **/\n const MAPBOX_TOKEN = '").concat(options.mapboxApiAccessToken || 'PROVIDE_MAPBOX_TOKEN', "';\n const WARNING_MESSAGE = 'Please Provide a Mapbox Token in order to use Kepler.gl. Edit this file and fill out MAPBOX_TOKEN with your access key';\n </script>\n\n <!-- GA: Delete this as you wish, However to pat ourselves on the back, we only track anonymous pageview to understand how many people are using kepler.gl. -->\n <script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n ga('create', 'UA-64694404-19', {\n 'storage': 'none',\n 'clientId': localStorage.getItem('ga:clientId')\n });\n ga(function(tracker) {\n localStorage.setItem('ga:clientId', tracker.get('clientId'));\n });\n ga('set', 'checkProtocolTask', null); // Disable file protocol checking.\n ga('set', 'checkStorageTask', null); // Disable cookie storage checking.\n ga('set', 'historyImportTask', null); // Disable history checking (requires reading from cookies).\n ga('set', 'page', 'keplergl-html');\n ga('send', 'pageview');\n </script>\n </head>\n <body>\n <!-- We will put our React component inside this div. -->\n <div id=\"app\">\n <!-- Kepler.gl map will be placed here-->\n </div>\n\n <!-- Load our React component. -->\n <script>\n /* Validate Mapbox Token */\n if ((MAPBOX_TOKEN || '') === '' || MAPBOX_TOKEN === 'PROVIDE_MAPBOX_TOKEN') {\n alert(WARNING_MESSAGE);\n }\n\n /** STORE **/\n const reducers = (function createReducers(redux, keplerGl) {\n return redux.combineReducers({\n // mount keplerGl reducer\n keplerGl: keplerGl.keplerGlReducer.initialState({\n uiState: {\n readOnly: ").concat(options.mode === _constants.EXPORT_HTML_MAP_MODES.READ, ",\n currentModal: null\n }\n })\n });\n }(Redux, KeplerGl));\n\n const middleWares = (function createMiddlewares(keplerGl) {\n return keplerGl.enhanceReduxMiddleware([\n // Add other middlewares here\n ]);\n }(KeplerGl));\n\n const enhancers = (function craeteEnhancers(redux, middles) {\n return redux.applyMiddleware(...middles);\n }(Redux, middleWares));\n\n const store = (function createStore(redux, enhancers) {\n const initialState = {};\n\n return redux.createStore(\n reducers,\n initialState,\n redux.compose(enhancers)\n );\n }(Redux, enhancers));\n /** END STORE **/\n\n /** COMPONENTS **/\n var KeplerElement = (function makeKeplerElement(react, keplerGl, mapboxToken) {\n var LogoSvg = function LogoSvg() {\n return react.createElement(\n \"div\",\n { className: \"logo-container\", style: {position: 'fixed', zIndex: 10000, padding: '4px'} },\n react.createElement(\n \"svg\",\n {\n className: \"kepler_gl__logo\",\n width: \"107px\",\n height: \"21px\",\n viewBox: \"0 0 124 24\"\n },\n react.createElement(\n \"g\",\n { transform: \"translate(13.500000, 13.500000) rotate(45.000000) translate(-13.500000, -13.500000) translate(4.000000, 4.000000)\" },\n react.createElement(\"rect\", { x: \"0\", y: \"6\", transform: \"matrix(2.535181e-06 1 -1 2.535181e-06 18.1107 6.0369)\", fill: \"#535C6C\", width: \"12.1\", height: \"12.1\" }),\n react.createElement(\"rect\", { x: \"6\", y: \"0\", transform: \"matrix(2.535182e-06 1 -1 2.535182e-06 18.1107 -6.0369)\", fill:\"#1FBAD6\", width: \"12.1\", height: \"12.1\" })\n ),\n react.createElement(\n \"g\",\n {},\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M39,8.7h2.2l-2.8,4.2l2.9,5.1H39l-2.4-4.2h-1.3V18h-2V5l2-0.1v7.3h1.3L39,8.7z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M42.4,13.3c0-1.5,0.4-2.7,1.1-3.5s1.8-1.2,3.1-1.2c1.3,0,2.2,0.4,2.8,1.1c0.6,0.7,0.9,1.8,0.9,3.3 c0,0.4,0,0.8,0,1.1h-5.8c0,1.6,0.8,2.4,2.4,2.4c1,0,2-0.2,2.9-0.6l0.2,1.7c-0.4,0.2-0.9,0.4-1.4,0.5s-1.1,0.2-1.7,0.2 c-1.5,0-2.6-0.4-3.3-1.2C42.8,16.1,42.4,14.9,42.4,13.3z M46.6,10.1c-0.7,0-1.2,0.2-1.5,0.5c-0.4,0.4-0.6,0.9-0.6,1.7h4 c0-0.8-0.2-1.4-0.5-1.7S47.2,10.1,46.6,10.1z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M57.1,18.2c-1,0-1.8-0.3-2.3-0.9l0,0l0,1.3v2.5h-2V8.7h1.5l0.3,0.9h0c0.3-0.3,0.7-0.6,1.2-0.7 c0.4-0.2,0.9-0.3,1.4-0.3c1.2,0,2.1,0.4,2.7,1.1c0.6,0.7,0.9,2,0.9,3.7c0,1.6-0.3,2.8-1,3.7C59.2,17.8,58.3,18.2,57.1,18.2z M56.7,10.3c-0.4,0-0.8,0.1-1.1,0.2c-0.3,0.2-0.6,0.4-0.8,0.7v4.3c0.2,0.3,0.4,0.5,0.7,0.7c0.3,0.2,0.7,0.3,1.1,0.3 c0.7,0,1.2-0.2,1.6-0.7c0.4-0.5,0.5-1.3,0.5-2.5c0-0.8-0.1-1.4-0.2-1.8s-0.4-0.7-0.7-0.9C57.6,10.4,57.2,10.3,56.7,10.3z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M63.2,16V5l2-0.1v10.8c0,0.3,0.1,0.5,0.2,0.6c0.1,0.1,0.3,0.2,0.6,0.2c0.3,0,0.6,0,0.9-0.1V18 c-0.4,0.1-1,0.2-1.6,0.2c-0.8,0-1.3-0.2-1.7-0.5S63.2,16.8,63.2,16z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M68.2,13.3c0-1.5,0.4-2.7,1.1-3.5c0.7-0.8,1.8-1.2,3.1-1.2c1.3,0,2.2,0.4,2.8,1.1c0.6,0.7,0.9,1.8,0.9,3.3 c0,0.4,0,0.8,0,1.1h-5.8c0,1.6,0.8,2.4,2.4,2.4c1,0,2-0.2,2.9-0.6l0.2,1.7c-0.4,0.2-0.9,0.4-1.4,0.5s-1.1,0.2-1.7,0.2 c-1.5,0-2.6-0.4-3.3-1.2C68.6,16.1,68.2,14.9,68.2,13.3z M72.4,10.1c-0.7,0-1.2,0.2-1.5,0.5c-0.4,0.4-0.6,0.9-0.6,1.7h4 c0-0.8-0.2-1.4-0.5-1.7S73,10.1,72.4,10.1z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M80.2,8.7l0.1,1.7h0c0.3-0.6,0.7-1.1,1.1-1.4c0.4-0.3,1-0.5,1.6-0.5c0.4,0,0.7,0,1,0.1l-0.1,2 c-0.3-0.1-0.7-0.2-1-0.2c-0.7,0-1.3,0.3-1.7,0.8c-0.4,0.5-0.7,1.2-0.7,2.1V18h-2V8.7H80.2z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M83.8,17c0-0.8,0.4-1.2,1.2-1.2c0.8,0,1.2,0.4,1.2,1.2c0,0.8-0.4,1.1-1.2,1.1C84.2,18.2,83.8,17.8,83.8,17z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M88.5,18.7c0-0.8,0.4-1.4,1.2-1.8c-0.6-0.3-0.9-0.8-0.9-1.5c0-0.7,0.4-1.2,1.1-1.6c-0.3-0.3-0.6-0.6-0.7-0.9 c-0.2-0.4-0.2-0.8-0.2-1.3c0-1,0.3-1.8,0.9-2.3c0.6-0.5,1.6-0.8,2.8-0.8c0.5,0,1,0,1.4,0.1c0.4,0.1,0.8,0.2,1.1,0.4l2.4-0.2v1.5 h-1.5c0.2,0.4,0.2,0.8,0.2,1.3c0,1-0.3,1.7-0.9,2.2s-1.5,0.8-2.7,0.8c-0.7,0-1.2-0.1-1.6-0.2c-0.1,0.1-0.2,0.2-0.3,0.3 c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4c0.1,0.1,0.3,0.2,0.6,0.2l2.7,0.2c1,0.1,1.7,0.3,2.2,0.6c0.5,0.3,0.8,0.9,0.8,1.7 c0,0.6-0.2,1.1-0.5,1.5c-0.4,0.4-0.9,0.8-1.5,1c-0.7,0.2-1.5,0.4-2.4,0.4c-1.3,0-2.3-0.2-3-0.6C88.8,20.1,88.5,19.5,88.5,18.7z M95.1,18.4c0-0.3-0.1-0.5-0.3-0.7s-0.6-0.2-1.1-0.3l-2.7-0.3c-0.2,0.1-0.4,0.3-0.5,0.5c-0.1,0.2-0.2,0.4-0.2,0.6 c0,0.4,0.2,0.8,0.5,1c0.4,0.2,1,0.3,1.8,0.3C94.2,19.5,95.1,19.2,95.1,18.4z M94.3,11.5c0-0.6-0.1-1-0.4-1.2 c-0.3-0.2-0.7-0.3-1.3-0.3c-0.7,0-1.1,0.1-1.4,0.3c-0.3,0.2-0.4,0.6-0.4,1.2s0.1,1,0.4,1.2c0.3,0.2,0.7,0.3,1.4,0.3 c0.6,0,1.1-0.1,1.3-0.4S94.3,12,94.3,11.5z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M99.4,16V5l2-0.1v10.8c0,0.3,0.1,0.5,0.2,0.6c0.1,0.1,0.3,0.2,0.6,0.2c0.3,0,0.6,0,0.9-0.1V18 c-0.4,0.1-1,0.2-1.6,0.2c-0.8,0-1.3-0.2-1.7-0.5S99.4,16.8,99.4,16z\" })\n )\n )\n );\n };\n\n return function App() {\n var rootElm = react.useRef(null);\n var _useState = react.useState({\n width: window.innerWidth,\n height: window.innerHeight\n });\n var windowDimension = _useState[0];\n var setDimension = _useState[1];\n react.useEffect(function sideEffect(){\n function handleResize() {\n setDimension({width: window.innerWidth, height: window.innerHeight});\n };\n window.addEventListener('resize', handleResize);\n return function() {window.removeEventListener('resize', handleResize);};\n }, []);\n return react.createElement(\n 'div',\n {style: {position: 'absolute', left: 0, width: '100vw', height: '100vh'}},\n ").concat(options.mode === _constants.EXPORT_HTML_MAP_MODES.READ ? 'LogoSvg(),' : '', "\n react.createElement(keplerGl.KeplerGl, {\n mapboxApiAccessToken: mapboxToken,\n id: \"map\",\n width: windowDimension.width,\n height: windowDimension.height\n })\n )\n }\n }(React, KeplerGl, MAPBOX_TOKEN));\n\n const app = (function createReactReduxProvider(react, reactRedux, KeplerElement) {\n return react.createElement(\n reactRedux.Provider,\n {store},\n react.createElement(KeplerElement, null)\n )\n }(React, ReactRedux, KeplerElement));\n /** END COMPONENTS **/\n\n /** Render **/\n (function render(react, reactDOM, app) {\n const container = document.getElementById('app');\n const root = reactDOM.createRoot(container);\n root.render(app);\n }(React, ReactDOM, app));\n </script>\n <!-- The next script will show how to interact directly with Kepler map store -->\n <script>\n /**\n * Customize map.\n * In the following section you can use the store object to dispatch Kepler.gl actions\n * to add new data and customize behavior\n */\n (function customize(keplerGl, store) {\n const datasets = ").concat(JSON.stringify(options.datasets), ";\n const config = ").concat(JSON.stringify(options.config), ";\n\n const loadedData = keplerGl.KeplerGlSchema.load(\n datasets,\n config\n );\n\n // For some reason Kepler overwrites the config without extra wait time\n window.setTimeout(() => {\n store.dispatch(\n keplerGl.addDataToMap({\n datasets: loadedData.datasets,\n config: loadedData.config,\n options: {\n centerMap: false,\n },\n })\n );\n }, 500);\n }(KeplerGl, store))\n </script>\n </body>\n </html>\n ");
|
|
24
22
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImV4cG9ydE1hcFRvSFRNTCIsImV4cG9ydHMiLCJvcHRpb25zIiwidmVyc2lvbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIktFUExFUl9HTF9WRVJTSU9OIiwiY29uY2F0IiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtb2RlIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhc2V0cyIsImNvbmZpZyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtbWFwLWh0bWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7RVhQT1JUX0hUTUxfTUFQX01PREVTLCBLRVBMRVJfR0xfVkVSU0lPTn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIGFuIGh0bWwgZmlsZSB3aGljaCB3aWxsIGlubGN1ZGUga2VwbGVyIGFuZCBtYXAgZGF0YVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgT2JqZWN0IHRoYXQgY29sbGVjdHMgYWxsIG5lY2Vzc2FyeSBkYXRhIHRvICBjcmVhdGUgdGhlIGh0bWwgZmlsZVxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubWFwYm94QXBpQWNjZXNzVG9rZW4gTWFwYm94IHRva2VuIHVzZWQgdG8gZmV0Y2ggbWFwYm94IHRpbGVzXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IG9wdGlvbnMuZGF0YXNldHMgRGF0YSB0byBpbmNsdWRlIGluIHRoZSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLmNvbmZpZyB0aGlzIG9iamVjdCB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwga2VwbGVyLmdsIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24ge21hcFN0YXRlLCBtYXBTdHlsZSwgdmlzU3RhdGV9XG4gKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvbiB3aGljaCB2ZXJzaW9uIG9mIEtlcGxlci5nbCB0byBsb2FkLlxuICovXG5leHBvcnQgY29uc3QgZXhwb3J0TWFwVG9IVE1MID0gKG9wdGlvbnMsIHZlcnNpb24gPSBLRVBMRVJfR0xfVkVSU0lPTikgPT4ge1xuICByZXR1cm4gYFxuICAgIDwhRE9DVFlQRSBodG1sPlxuICAgIDxodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiLz5cbiAgICAgICAgPHRpdGxlPktlcGxlci5nbCBlbWJlZGRlZCBtYXA8L3RpdGxlPlxuXG4gICAgICAgIDwhLS1VYmVyIEZvbnQtLT5cbiAgICAgICAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC91YmVyLWZvbnRzLzQuMC4wL3N1cGVyZmluZS5jc3NcIj5cblxuICAgICAgICA8IS0tS2VwbGVyIGNzcy0tPlxuICAgICAgICA8bGluayBocmVmPVwiaHR0cHM6Ly91bnBrZy5jb20va2VwbGVyLmdsQCR7dmVyc2lvbn0vdW1kL2tlcGxlcmdsLm1pbi5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCI+XG5cbiAgICAgICAgPCEtLU1hcEJveCBjc3MtLT5cbiAgICAgICAgPGxpbmsgaHJlZj1cImh0dHBzOi8vYXBpLnRpbGVzLm1hcGJveC5jb20vbWFwYm94LWdsLWpzL3YxLjEuMS9tYXBib3gtZ2wuY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiPlxuICAgICAgICA8bGluayBocmVmPVwiaHR0cHM6Ly91bnBrZy5jb20vbWFwbGlicmUtZ2xAXjMvZGlzdC9tYXBsaWJyZS1nbC5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCI+XG5cbiAgICAgICAgPCEt4oCUIGZhY2Vib29rIG9wZW4gZ3JhcGggdGFncyAtLT5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzp1cmxcIiBjb250ZW50PVwiaHR0cDovL2tlcGxlci5nbC9cIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOnRpdGxlXCIgY29udGVudD1cIkxhcmdlLXNjYWxlIFdlYkdMLXBvd2VyZWQgR2Vvc3BhdGlhbCBEYXRhIFZpc3VhbGl6YXRpb24gVG9vbFwiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6ZGVzY3JpcHRpb25cIiBjb250ZW50PVwiS2VwbGVyLmdsIGlzIGEgcG93ZXJmdWwgd2ViLWJhc2VkIGdlb3NwYXRpYWwgZGF0YSBhbmFseXNpcyB0b29sLiBCdWlsdCBvbiBhIGhpZ2ggcGVyZm9ybWFuY2UgcmVuZGVyaW5nIGVuZ2luZSBhbmQgZGVzaWduZWQgZm9yIGxhcmdlLXNjYWxlIGRhdGEgc2V0cy5cIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOnNpdGVfbmFtZVwiIGNvbnRlbnQ9XCJrZXBsZXIuZ2xcIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOmltYWdlXCIgY29udGVudD1cImh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL2tlcGxlci5nbC1tZXRhLXRhZy5wbmdcIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOmltYWdlOnR5cGVcIiBjb250ZW50PVwiaW1hZ2UvcG5nXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZTp3aWR0aFwiIGNvbnRlbnQ9XCI4MDBcIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOmltYWdlOmhlaWdodFwiIGNvbnRlbnQ9XCI4MDBcIiAvPlxuXG4gICAgICAgIDwhLeKAlCB0d2l0dGVyIGNhcmQgdGFncyAtLT5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6Y2FyZFwiIGNvbnRlbnQ9XCJzdW1tYXJ5X2xhcmdlX2ltYWdlXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOnNpdGVcIiBjb250ZW50PVwiQG9wZW5qc2ZcIj5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6Y3JlYXRvclwiIGNvbnRlbnQ9XCJAb3BlbmpzZlwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjp0aXRsZVwiIGNvbnRlbnQ9XCJMYXJnZS1zY2FsZSBXZWJHTC1wb3dlcmVkIEdlb3NwYXRpYWwgRGF0YSBWaXN1YWxpemF0aW9uIFRvb2xcIj5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6ZGVzY3JpcHRpb25cIiBjb250ZW50PVwiS2VwbGVyLmdsIGlzIGEgcG93ZXJmdWwgd2ViLWJhc2VkIGdlb3NwYXRpYWwgZGF0YSBhbmFseXNpcyB0b29sLiBCdWlsdCBvbiBhIGhpZ2ggcGVyZm9ybWFuY2UgcmVuZGVyaW5nIGVuZ2luZSBhbmQgZGVzaWduZWQgZm9yIGxhcmdlLXNjYWxlIGRhdGEgc2V0cy5cIj5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6aW1hZ2VcIiBjb250ZW50PVwiaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wva2VwbGVyLmdsLW1ldGEtdGFnLnBuZ1wiIC8+XG5cbiAgICAgICAgPCEtLSBMb2FkIFJlYWN0L1JlZHV4IC0tPlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL3JlYWN0QDE4LjMuMS91bWQvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9yZWFjdC1kb21AMTguMy4xL3VtZC9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9yZWR1eEA0LjIuMS9kaXN0L3JlZHV4LmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vcmVhY3QtcmVkdXhAOC4xLjIvZGlzdC9yZWFjdC1yZWR1eC5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9zdHlsZWQtY29tcG9uZW50c0A2LjEuOC9kaXN0L3N0eWxlZC1jb21wb25lbnRzLm1pbi5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuXG4gICAgICAgIDwhLS0gTG9hZCBLZXBsZXIuZ2wgLS0+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20va2VwbGVyLmdsQCR7dmVyc2lvbn0vdW1kL2tlcGxlcmdsLm1pbi5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuXG4gICAgICAgIDxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj5cbiAgICAgICAgICBib2R5IHttYXJnaW46IDA7IHBhZGRpbmc6IDA7IG92ZXJmbG93OiBoaWRkZW47fVxuICAgICAgICA8L3N0eWxlPlxuXG4gICAgICAgIDwhLS1NYXBCb3ggdG9rZW4tLT5cbiAgICAgICAgPCEtLVxuICAgICAgICAgIFNFQ1VSSVRZIE5PVEU6IFlvdXIgTWFwYm94IGFjY2VzcyB0b2tlbiBpcyBlbWJlZGRlZCBiZWxvdyBpbiBwbGFpbiB0ZXh0LlxuICAgICAgICAgIEFueW9uZSB3aXRoIGFjY2VzcyB0byB0aGlzIEhUTUwgZmlsZSBjYW4gc2VlIGFuZCB1c2UgdGhpcyB0b2tlbi5cbiAgICAgICAgICBDb25zaWRlciB1c2luZyBhIHNjb3BlZCB0b2tlbiB3aXRoIFVSTCByZXN0cmljdGlvbnMgdG8gbGltaXQgbWlzdXNlLlxuICAgICAgICAgIFNlZTogaHR0cHM6Ly9kb2NzLm1hcGJveC5jb20vYWNjb3VudHMvZ3VpZGVzL3Rva2Vucy8jdXJsLXJlc3RyaWN0aW9uc1xuICAgICAgICAtLT5cbiAgICAgICAgPHNjcmlwdD5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBQcm92aWRlIHlvdXIgTWFwQm94IFRva2VuXG4gICAgICAgICAgICoqL1xuICAgICAgICAgIGNvbnN0IE1BUEJPWF9UT0tFTiA9ICcke29wdGlvbnMubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgJ1BST1ZJREVfTUFQQk9YX1RPS0VOJ30nO1xuICAgICAgICAgIGNvbnN0IFdBUk5JTkdfTUVTU0FHRSA9ICdQbGVhc2UgUHJvdmlkZSBhIE1hcGJveCBUb2tlbiBpbiBvcmRlciB0byB1c2UgS2VwbGVyLmdsLiBFZGl0IHRoaXMgZmlsZSBhbmQgZmlsbCBvdXQgTUFQQk9YX1RPS0VOIHdpdGggeW91ciBhY2Nlc3Mga2V5JztcbiAgICAgICAgPC9zY3JpcHQ+XG5cbiAgICAgICAgPCEtLSBHQTogRGVsZXRlIHRoaXMgYXMgeW91IHdpc2gsIEhvd2V2ZXIgdG8gcGF0IG91cnNlbHZlcyBvbiB0aGUgYmFjaywgd2Ugb25seSB0cmFjayBhbm9ueW1vdXMgcGFnZXZpZXcgdG8gdW5kZXJzdGFuZCBob3cgbWFueSBwZW9wbGUgYXJlIHVzaW5nIGtlcGxlci5nbC4gLS0+XG4gICAgICAgIDxzY3JpcHQ+XG4gICAgICAgICAgKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpe1xuICAgICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLFxuICAgICAgICAgIG09cy5nZXRFbGVtZW50c0J5VGFnTmFtZShvKVswXTthLmFzeW5jPTE7YS5zcmM9ZzttLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbSlcbiAgICAgICAgICB9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2FuYWx5dGljcy5qcycsJ2dhJyk7XG4gICAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS02NDY5NDQwNC0xOScsIHtcbiAgICAgICAgICAgICdzdG9yYWdlJzogJ25vbmUnLFxuICAgICAgICAgICAgJ2NsaWVudElkJzogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2dhOmNsaWVudElkJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBnYShmdW5jdGlvbih0cmFja2VyKSB7XG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdnYTpjbGllbnRJZCcsIHRyYWNrZXIuZ2V0KCdjbGllbnRJZCcpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBnYSgnc2V0JywgJ2NoZWNrUHJvdG9jb2xUYXNrJywgbnVsbCk7IC8vIERpc2FibGUgZmlsZSBwcm90b2NvbCBjaGVja2luZy5cbiAgICAgICAgICBnYSgnc2V0JywgJ2NoZWNrU3RvcmFnZVRhc2snLCBudWxsKTsgLy8gRGlzYWJsZSBjb29raWUgc3RvcmFnZSBjaGVja2luZy5cbiAgICAgICAgICBnYSgnc2V0JywgJ2hpc3RvcnlJbXBvcnRUYXNrJywgbnVsbCk7IC8vIERpc2FibGUgaGlzdG9yeSBjaGVja2luZyAocmVxdWlyZXMgcmVhZGluZyBmcm9tIGNvb2tpZXMpLlxuICAgICAgICAgIGdhKCdzZXQnLCAncGFnZScsICdrZXBsZXJnbC1odG1sJyk7XG4gICAgICAgICAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTtcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keT5cbiAgICAgICAgPCEtLSBXZSB3aWxsIHB1dCBvdXIgUmVhY3QgY29tcG9uZW50IGluc2lkZSB0aGlzIGRpdi4gLS0+XG4gICAgICAgIDxkaXYgaWQ9XCJhcHBcIj5cbiAgICAgICAgICA8IS0tIEtlcGxlci5nbCBtYXAgd2lsbCBiZSBwbGFjZWQgaGVyZS0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIExvYWQgb3VyIFJlYWN0IGNvbXBvbmVudC4gLS0+XG4gICAgICAgIDxzY3JpcHQ+XG4gICAgICAgICAgLyogVmFsaWRhdGUgTWFwYm94IFRva2VuICovXG4gICAgICAgICAgaWYgKChNQVBCT1hfVE9LRU4gfHwgJycpID09PSAnJyB8fCBNQVBCT1hfVE9LRU4gPT09ICdQUk9WSURFX01BUEJPWF9UT0tFTicpIHtcbiAgICAgICAgICAgIGFsZXJ0KFdBUk5JTkdfTUVTU0FHRSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLyoqIFNUT1JFICoqL1xuICAgICAgICAgIGNvbnN0IHJlZHVjZXJzID0gKGZ1bmN0aW9uIGNyZWF0ZVJlZHVjZXJzKHJlZHV4LCBrZXBsZXJHbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHV4LmNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgICAgICAgICAgIC8vIG1vdW50IGtlcGxlckdsIHJlZHVjZXJcbiAgICAgICAgICAgICAga2VwbGVyR2w6IGtlcGxlckdsLmtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGUoe1xuICAgICAgICAgICAgICAgIHVpU3RhdGU6IHtcbiAgICAgICAgICAgICAgICAgIHJlYWRPbmx5OiAke29wdGlvbnMubW9kZSA9PT0gRVhQT1JUX0hUTUxfTUFQX01PREVTLlJFQUR9LFxuICAgICAgICAgICAgICAgICAgY3VycmVudE1vZGFsOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfShSZWR1eCwgS2VwbGVyR2wpKTtcblxuICAgICAgICAgIGNvbnN0IG1pZGRsZVdhcmVzID0gKGZ1bmN0aW9uIGNyZWF0ZU1pZGRsZXdhcmVzKGtlcGxlckdsKSB7XG4gICAgICAgICAgICByZXR1cm4ga2VwbGVyR2wuZW5oYW5jZVJlZHV4TWlkZGxld2FyZShbXG4gICAgICAgICAgICAgIC8vIEFkZCBvdGhlciBtaWRkbGV3YXJlcyBoZXJlXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KEtlcGxlckdsKSk7XG5cbiAgICAgICAgICBjb25zdCBlbmhhbmNlcnMgPSAoZnVuY3Rpb24gY3JhZXRlRW5oYW5jZXJzKHJlZHV4LCBtaWRkbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdXguYXBwbHlNaWRkbGV3YXJlKC4uLm1pZGRsZXMpO1xuICAgICAgICAgIH0oUmVkdXgsIG1pZGRsZVdhcmVzKSk7XG5cbiAgICAgICAgICBjb25zdCBzdG9yZSA9IChmdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1eCwgZW5oYW5jZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7fTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlZHV4LmNyZWF0ZVN0b3JlKFxuICAgICAgICAgICAgICByZWR1Y2VycyxcbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICAgICAgICByZWR1eC5jb21wb3NlKGVuaGFuY2VycylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfShSZWR1eCwgZW5oYW5jZXJzKSk7XG4gICAgICAgICAgLyoqIEVORCBTVE9SRSAqKi9cblxuICAgICAgICAgIC8qKiBDT01QT05FTlRTICoqL1xuICAgICAgICAgIHZhciBLZXBsZXJFbGVtZW50ID0gKGZ1bmN0aW9uIG1ha2VLZXBsZXJFbGVtZW50KHJlYWN0LCBrZXBsZXJHbCwgbWFwYm94VG9rZW4pIHtcbiAgICAgICAgICAgIHZhciBMb2dvU3ZnID0gZnVuY3Rpb24gTG9nb1N2ZygpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogXCJsb2dvLWNvbnRhaW5lclwiLCBzdHlsZToge3Bvc2l0aW9uOiAnZml4ZWQnLCB6SW5kZXg6IDEwMDAwLCBwYWRkaW5nOiAnNHB4J30gfSxcbiAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIFwic3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwia2VwbGVyX2dsX19sb2dvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTA3cHhcIixcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMjFweFwiLFxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g6IFwiMCAwIDEyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgXCJnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKDEzLjUwMDAwMCwgMTMuNTAwMDAwKSByb3RhdGUoNDUuMDAwMDAwKSB0cmFuc2xhdGUoLTEzLjUwMDAwMCwgLTEzLjUwMDAwMCkgdHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMClcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHsgeDogXCIwXCIsIHk6IFwiNlwiLCB0cmFuc2Zvcm06IFwibWF0cml4KDIuNTM1MTgxZS0wNiAxIC0xIDIuNTM1MTgxZS0wNiAxOC4xMTA3IDYuMDM2OSlcIiwgZmlsbDogXCIjNTM1QzZDXCIsIHdpZHRoOiBcIjEyLjFcIiwgaGVpZ2h0OiBcIjEyLjFcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IHg6IFwiNlwiLCB5OiBcIjBcIiwgdHJhbnNmb3JtOiBcIm1hdHJpeCgyLjUzNTE4MmUtMDYgMSAtMSAyLjUzNTE4MmUtMDYgMTguMTEwNyAtNi4wMzY5KVwiLCBmaWxsOlwiIzFGQkFENlwiLCB3aWR0aDogXCIxMi4xXCIsIGhlaWdodDogXCIxMi4xXCIgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICBcImdcIixcbiAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTM5LDguN2gyLjJsLTIuOCw0LjJsMi45LDUuMUgzOWwtMi40LTQuMmgtMS4zVjE4aC0yVjVsMi0wLjF2Ny4zaDEuM0wzOSw4Ljd6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk00Mi40LDEzLjNjMC0xLjUsMC40LTIuNywxLjEtMy41czEuOC0xLjIsMy4xLTEuMmMxLjMsMCwyLjIsMC40LDIuOCwxLjFjMC42LDAuNywwLjksMS44LDAuOSwzLjMgYzAsMC40LDAsMC44LDAsMS4xaC01LjhjMCwxLjYsMC44LDIuNCwyLjQsMi40YzEsMCwyLTAuMiwyLjktMC42bDAuMiwxLjdjLTAuNCwwLjItMC45LDAuNC0xLjQsMC41cy0xLjEsMC4yLTEuNywwLjIgYy0xLjUsMC0yLjYtMC40LTMuMy0xLjJDNDIuOCwxNi4xLDQyLjQsMTQuOSw0Mi40LDEzLjN6IE00Ni42LDEwLjFjLTAuNywwLTEuMiwwLjItMS41LDAuNWMtMC40LDAuNC0wLjYsMC45LTAuNiwxLjdoNCBjMC0wLjgtMC4yLTEuNC0wLjUtMS43UzQ3LjIsMTAuMSw0Ni42LDEwLjF6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk01Ny4xLDE4LjJjLTEsMC0xLjgtMC4zLTIuMy0wLjlsMCwwbDAsMS4zdjIuNWgtMlY4LjdoMS41bDAuMywwLjloMGMwLjMtMC4zLDAuNy0wLjYsMS4yLTAuNyBjMC40LTAuMiwwLjktMC4zLDEuNC0wLjNjMS4yLDAsMi4xLDAuNCwyLjcsMS4xYzAuNiwwLjcsMC45LDIsMC45LDMuN2MwLDEuNi0wLjMsMi44LTEsMy43QzU5LjIsMTcuOCw1OC4zLDE4LjIsNTcuMSwxOC4yeiBNNTYuNywxMC4zYy0wLjQsMC0wLjgsMC4xLTEuMSwwLjJjLTAuMywwLjItMC42LDAuNC0wLjgsMC43djQuM2MwLjIsMC4zLDAuNCwwLjUsMC43LDAuN2MwLjMsMC4yLDAuNywwLjMsMS4xLDAuMyBjMC43LDAsMS4yLTAuMiwxLjYtMC43YzAuNC0wLjUsMC41LTEuMywwLjUtMi41YzAtMC44LTAuMS0xLjQtMC4yLTEuOHMtMC40LTAuNy0wLjctMC45QzU3LjYsMTAuNCw1Ny4yLDEwLjMsNTYuNywxMC4zelwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNNjMuMiwxNlY1bDItMC4xdjEwLjhjMCwwLjMsMC4xLDAuNSwwLjIsMC42YzAuMSwwLjEsMC4zLDAuMiwwLjYsMC4yYzAuMywwLDAuNiwwLDAuOS0wLjFWMTggYy0wLjQsMC4xLTEsMC4yLTEuNiwwLjJjLTAuOCwwLTEuMy0wLjItMS43LTAuNVM2My4yLDE2LjgsNjMuMiwxNnpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTY4LjIsMTMuM2MwLTEuNSwwLjQtMi43LDEuMS0zLjVjMC43LTAuOCwxLjgtMS4yLDMuMS0xLjJjMS4zLDAsMi4yLDAuNCwyLjgsMS4xYzAuNiwwLjcsMC45LDEuOCwwLjksMy4zIGMwLDAuNCwwLDAuOCwwLDEuMWgtNS44YzAsMS42LDAuOCwyLjQsMi40LDIuNGMxLDAsMi0wLjIsMi45LTAuNmwwLjIsMS43Yy0wLjQsMC4yLTAuOSwwLjQtMS40LDAuNXMtMS4xLDAuMi0xLjcsMC4yIGMtMS41LDAtMi42LTAuNC0zLjMtMS4yQzY4LjYsMTYuMSw2OC4yLDE0LjksNjguMiwxMy4zeiBNNzIuNCwxMC4xYy0wLjcsMC0xLjIsMC4yLTEuNSwwLjVjLTAuNCwwLjQtMC42LDAuOS0wLjYsMS43aDQgYzAtMC44LTAuMi0xLjQtMC41LTEuN1M3MywxMC4xLDcyLjQsMTAuMXpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTgwLjIsOC43bDAuMSwxLjdoMGMwLjMtMC42LDAuNy0xLjEsMS4xLTEuNGMwLjQtMC4zLDEtMC41LDEuNi0wLjVjMC40LDAsMC43LDAsMSwwLjFsLTAuMSwyIGMtMC4zLTAuMS0wLjctMC4yLTEtMC4yYy0wLjcsMC0xLjMsMC4zLTEuNywwLjhjLTAuNCwwLjUtMC43LDEuMi0wLjcsMi4xVjE4aC0yVjguN0g4MC4yelwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNODMuOCwxN2MwLTAuOCwwLjQtMS4yLDEuMi0xLjJjMC44LDAsMS4yLDAuNCwxLjIsMS4yYzAsMC44LTAuNCwxLjEtMS4yLDEuMUM4NC4yLDE4LjIsODMuOCwxNy44LDgzLjgsMTd6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk04OC41LDE4LjdjMC0wLjgsMC40LTEuNCwxLjItMS44Yy0wLjYtMC4zLTAuOS0wLjgtMC45LTEuNWMwLTAuNywwLjQtMS4yLDEuMS0xLjZjLTAuMy0wLjMtMC42LTAuNi0wLjctMC45IGMtMC4yLTAuNC0wLjItMC44LTAuMi0xLjNjMC0xLDAuMy0xLjgsMC45LTIuM2MwLjYtMC41LDEuNi0wLjgsMi44LTAuOGMwLjUsMCwxLDAsMS40LDAuMWMwLjQsMC4xLDAuOCwwLjIsMS4xLDAuNGwyLjQtMC4ydjEuNSBoLTEuNWMwLjIsMC40LDAuMiwwLjgsMC4yLDEuM2MwLDEtMC4zLDEuNy0wLjksMi4ycy0xLjUsMC44LTIuNywwLjhjLTAuNywwLTEuMi0wLjEtMS42LTAuMmMtMC4xLDAuMS0wLjIsMC4yLTAuMywwLjMgYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuNGMwLDAuMiwwLjEsMC4zLDAuMiwwLjRjMC4xLDAuMSwwLjMsMC4yLDAuNiwwLjJsMi43LDAuMmMxLDAuMSwxLjcsMC4zLDIuMiwwLjZjMC41LDAuMywwLjgsMC45LDAuOCwxLjcgYzAsMC42LTAuMiwxLjEtMC41LDEuNWMtMC40LDAuNC0wLjksMC44LTEuNSwxYy0wLjcsMC4yLTEuNSwwLjQtMi40LDAuNGMtMS4zLDAtMi4zLTAuMi0zLTAuNkM4OC44LDIwLjEsODguNSwxOS41LDg4LjUsMTguN3ogTTk1LjEsMTguNGMwLTAuMy0wLjEtMC41LTAuMy0wLjdzLTAuNi0wLjItMS4xLTAuM2wtMi43LTAuM2MtMC4yLDAuMS0wLjQsMC4zLTAuNSwwLjVjLTAuMSwwLjItMC4yLDAuNC0wLjIsMC42IGMwLDAuNCwwLjIsMC44LDAuNSwxYzAuNCwwLjIsMSwwLjMsMS44LDAuM0M5NC4yLDE5LjUsOTUuMSwxOS4yLDk1LjEsMTguNHogTTk0LjMsMTEuNWMwLTAuNi0wLjEtMS0wLjQtMS4yIGMtMC4zLTAuMi0wLjctMC4zLTEuMy0wLjNjLTAuNywwLTEuMSwwLjEtMS40LDAuM2MtMC4zLDAuMi0wLjQsMC42LTAuNCwxLjJzMC4xLDEsMC40LDEuMmMwLjMsMC4yLDAuNywwLjMsMS40LDAuMyBjMC42LDAsMS4xLTAuMSwxLjMtMC40Uzk0LjMsMTIsOTQuMywxMS41elwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNOTkuNCwxNlY1bDItMC4xdjEwLjhjMCwwLjMsMC4xLDAuNSwwLjIsMC42YzAuMSwwLjEsMC4zLDAuMiwwLjYsMC4yYzAuMywwLDAuNiwwLDAuOS0wLjFWMTggYy0wLjQsMC4xLTEsMC4yLTEuNiwwLjJjLTAuOCwwLTEuMy0wLjItMS43LTAuNVM5OS40LDE2LjgsOTkuNCwxNnpcIiB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIEFwcCgpIHtcbiAgICAgICAgICAgICAgdmFyIHJvb3RFbG0gPSByZWFjdC51c2VSZWYobnVsbCk7XG4gICAgICAgICAgICAgIHZhciBfdXNlU3RhdGUgPSByZWFjdC51c2VTdGF0ZSh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogd2luZG93LmlubmVySGVpZ2h0XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB2YXIgd2luZG93RGltZW5zaW9uID0gX3VzZVN0YXRlWzBdO1xuICAgICAgICAgICAgICB2YXIgc2V0RGltZW5zaW9uID0gX3VzZVN0YXRlWzFdO1xuICAgICAgICAgICAgICByZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gc2lkZUVmZmVjdCgpe1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVJlc2l6ZSgpIHtcbiAgICAgICAgICAgICAgICAgIHNldERpbWVuc2lvbih7d2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLCBoZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO307XG4gICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAge3N0eWxlOiB7cG9zaXRpb246ICdhYnNvbHV0ZScsIGxlZnQ6IDAsIHdpZHRoOiAnMTAwdncnLCBoZWlnaHQ6ICcxMDB2aCd9fSxcbiAgICAgICAgICAgICAgICAke29wdGlvbnMubW9kZSA9PT0gRVhQT1JUX0hUTUxfTUFQX01PREVTLlJFQUQgPyAnTG9nb1N2ZygpLCcgOiAnJ31cbiAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KGtlcGxlckdsLktlcGxlckdsLCB7XG4gICAgICAgICAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogbWFwYm94VG9rZW4sXG4gICAgICAgICAgICAgICAgICBpZDogXCJtYXBcIixcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3dEaW1lbnNpb24ud2lkdGgsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IHdpbmRvd0RpbWVuc2lvbi5oZWlnaHRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfShSZWFjdCwgS2VwbGVyR2wsIE1BUEJPWF9UT0tFTikpO1xuXG4gICAgICAgICAgY29uc3QgYXBwID0gKGZ1bmN0aW9uIGNyZWF0ZVJlYWN0UmVkdXhQcm92aWRlcihyZWFjdCwgcmVhY3RSZWR1eCwgS2VwbGVyRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgIHJlYWN0UmVkdXguUHJvdmlkZXIsXG4gICAgICAgICAgICAgIHtzdG9yZX0sXG4gICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoS2VwbGVyRWxlbWVudCwgbnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KFJlYWN0LCBSZWFjdFJlZHV4LCBLZXBsZXJFbGVtZW50KSk7XG4gICAgICAgICAgLyoqIEVORCBDT01QT05FTlRTICoqL1xuXG4gICAgICAgICAgLyoqIFJlbmRlciAqKi9cbiAgICAgICAgICAoZnVuY3Rpb24gcmVuZGVyKHJlYWN0LCByZWFjdERPTSwgYXBwKSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJyk7XG4gICAgICAgICAgICBjb25zdCByb290ID0gcmVhY3RET00uY3JlYXRlUm9vdChjb250YWluZXIpO1xuICAgICAgICAgICAgcm9vdC5yZW5kZXIoYXBwKTtcbiAgICAgICAgICB9KFJlYWN0LCBSZWFjdERPTSwgYXBwKSk7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8IS0tIFRoZSBuZXh0IHNjcmlwdCB3aWxsIHNob3cgaG93IHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGggS2VwbGVyIG1hcCBzdG9yZSAtLT5cbiAgICAgICAgPHNjcmlwdD5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBDdXN0b21pemUgbWFwLlxuICAgICAgICAgICAqIEluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiB5b3UgY2FuIHVzZSB0aGUgc3RvcmUgb2JqZWN0IHRvIGRpc3BhdGNoIEtlcGxlci5nbCBhY3Rpb25zXG4gICAgICAgICAgICogdG8gYWRkIG5ldyBkYXRhIGFuZCBjdXN0b21pemUgYmVoYXZpb3JcbiAgICAgICAgICAgKi9cbiAgICAgICAgICAoZnVuY3Rpb24gY3VzdG9taXplKGtlcGxlckdsLCBzdG9yZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YXNldHMgPSAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMuZGF0YXNldHMpfTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucy5jb25maWcpfTtcblxuICAgICAgICAgICAgY29uc3QgbG9hZGVkRGF0YSA9IGtlcGxlckdsLktlcGxlckdsU2NoZW1hLmxvYWQoXG4gICAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiBLZXBsZXIgb3ZlcndyaXRlcyB0aGUgY29uZmlnIHdpdGhvdXQgZXh0cmEgd2FpdCB0aW1lXG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgIGtlcGxlckdsLmFkZERhdGFUb01hcCh7XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0czogbG9hZGVkRGF0YS5kYXRhc2V0cyxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZzogbG9hZGVkRGF0YS5jb25maWcsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNlbnRlck1hcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH0oS2VwbGVyR2wsIHN0b3JlKSlcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICBgO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBSUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBSkE7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZUFBZSxHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSUUsT0FBTyxFQUFrQztFQUFBLElBQWhDQyxPQUFPLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHRyw0QkFBaUI7RUFDbEUsa1hBQUFDLE1BQUEsQ0FXZ0RMLE9BQU8seTRFQUFBSyxNQUFBLENBZ0NOTCxPQUFPLDBwQkFBQUssTUFBQSxDQWlCeEJOLE9BQU8sQ0FBQ08sb0JBQW9CLElBQUksc0JBQXNCLHFsRUFBQUQsTUFBQSxDQTJDMUROLE9BQU8sQ0FBQ1EsSUFBSSxLQUFLQyxnQ0FBcUIsQ0FBQ0MsSUFBSSwwb05BQUFKLE1BQUEsQ0FtRnZETixPQUFPLENBQUNRLElBQUksS0FBS0MsZ0NBQXFCLENBQUNDLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSwwMkNBQUFKLE1BQUEsQ0FtQ2xESyxJQUFJLENBQUNDLFNBQVMsQ0FBQ1osT0FBTyxDQUFDYSxRQUFRLENBQUMsb0NBQUFQLE1BQUEsQ0FDbENLLElBQUksQ0FBQ0MsU0FBUyxDQUFDWixPQUFPLENBQUNjLE1BQU0sQ0FBQztBQXdCM0QsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImV4cG9ydE1hcFRvSFRNTCIsImV4cG9ydHMiLCJvcHRpb25zIiwidmVyc2lvbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIktFUExFUl9HTF9WRVJTSU9OIiwiY29uY2F0IiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtb2RlIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhc2V0cyIsImNvbmZpZyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtbWFwLWh0bWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtFWFBPUlRfSFRNTF9NQVBfTU9ERVMsIEtFUExFUl9HTF9WRVJTSU9OfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjcmVhdGUgYW4gaHRtbCBmaWxlIHdoaWNoIHdpbGwgaW5sY3VkZSBrZXBsZXIgYW5kIG1hcCBkYXRhXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBPYmplY3QgdGhhdCBjb2xsZWN0cyBhbGwgbmVjZXNzYXJ5IGRhdGEgdG8gIGNyZWF0ZSB0aGUgaHRtbCBmaWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5tYXBib3hBcGlBY2Nlc3NUb2tlbiBNYXBib3ggdG9rZW4gdXNlZCB0byBmZXRjaCBtYXBib3ggdGlsZXNcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gb3B0aW9ucy5kYXRhc2V0cyBEYXRhIHRvIGluY2x1ZGUgaW4gdGhlIG1hcFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMuY29uZmlnIHRoaXMgb2JqZWN0IHdpbGwgY29udGFpbiB0aGUgZnVsbCBrZXBsZXIuZ2wgaW5zdGFuY2UgY29uZmlndXJhdGlvbiB7bWFwU3RhdGUsIG1hcFN0eWxlLCB2aXNTdGF0ZX1cbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uIHdoaWNoIHZlcnNpb24gb2YgS2VwbGVyLmdsIHRvIGxvYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBleHBvcnRNYXBUb0hUTUwgPSAob3B0aW9ucywgdmVyc2lvbiA9IEtFUExFUl9HTF9WRVJTSU9OKSA9PiB7XG4gIHJldHVybiBgXG4gICAgPCFET0NUWVBFIGh0bWw+XG4gICAgPGh0bWw+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPG1ldGEgY2hhcnNldD1cIlVURi04XCIvPlxuICAgICAgICA8dGl0bGU+S2VwbGVyLmdsIGVtYmVkZGVkIG1hcDwvdGl0bGU+XG5cbiAgICAgICAgPCEtLVViZXIgRm9udC0tPlxuICAgICAgICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cImh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL3ViZXItZm9udHMvNC4wLjAvc3VwZXJmaW5lLmNzc1wiPlxuXG4gICAgICAgIDwhLS1LZXBsZXIgY3NzLS0+XG4gICAgICAgIDxsaW5rIGhyZWY9XCJodHRwczovL3VucGtnLmNvbS9rZXBsZXIuZ2xAJHt2ZXJzaW9ufS91bWQva2VwbGVyZ2wubWluLmNzc1wiIHJlbD1cInN0eWxlc2hlZXRcIj5cblxuICAgICAgICA8IS0tTWFwQm94IGNzcy0tPlxuICAgICAgICA8bGluayBocmVmPVwiaHR0cHM6Ly9hcGkudGlsZXMubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvdjEuMS4xL21hcGJveC1nbC5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCI+XG4gICAgICAgIDxsaW5rIGhyZWY9XCJodHRwczovL3VucGtnLmNvbS9tYXBsaWJyZS1nbEBeMy9kaXN0L21hcGxpYnJlLWdsLmNzc1wiIHJlbD1cInN0eWxlc2hlZXRcIj5cblxuICAgICAgICA8IS3igJQgZmFjZWJvb2sgb3BlbiBncmFwaCB0YWdzIC0tPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOnVybFwiIGNvbnRlbnQ9XCJodHRwOi8va2VwbGVyLmdsL1wiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6dGl0bGVcIiBjb250ZW50PVwiTGFyZ2Utc2NhbGUgV2ViR0wtcG93ZXJlZCBHZW9zcGF0aWFsIERhdGEgVmlzdWFsaXphdGlvbiBUb29sXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzpkZXNjcmlwdGlvblwiIGNvbnRlbnQ9XCJLZXBsZXIuZ2wgaXMgYSBwb3dlcmZ1bCB3ZWItYmFzZWQgZ2Vvc3BhdGlhbCBkYXRhIGFuYWx5c2lzIHRvb2wuIEJ1aWx0IG9uIGEgaGlnaCBwZXJmb3JtYW5jZSByZW5kZXJpbmcgZW5naW5lIGFuZCBkZXNpZ25lZCBmb3IgbGFyZ2Utc2NhbGUgZGF0YSBzZXRzLlwiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6c2l0ZV9uYW1lXCIgY29udGVudD1cImtlcGxlci5nbFwiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6aW1hZ2VcIiBjb250ZW50PVwiaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wva2VwbGVyLmdsLW1ldGEtdGFnLnBuZ1wiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6aW1hZ2U6dHlwZVwiIGNvbnRlbnQ9XCJpbWFnZS9wbmdcIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOmltYWdlOndpZHRoXCIgY29udGVudD1cIjgwMFwiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6aW1hZ2U6aGVpZ2h0XCIgY29udGVudD1cIjgwMFwiIC8+XG5cbiAgICAgICAgPCEt4oCUIHR3aXR0ZXIgY2FyZCB0YWdzIC0tPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjpjYXJkXCIgY29udGVudD1cInN1bW1hcnlfbGFyZ2VfaW1hZ2VcIj5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6c2l0ZVwiIGNvbnRlbnQ9XCJAb3BlbmpzZlwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjpjcmVhdG9yXCIgY29udGVudD1cIkBvcGVuanNmXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOnRpdGxlXCIgY29udGVudD1cIkxhcmdlLXNjYWxlIFdlYkdMLXBvd2VyZWQgR2Vvc3BhdGlhbCBEYXRhIFZpc3VhbGl6YXRpb24gVG9vbFwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjpkZXNjcmlwdGlvblwiIGNvbnRlbnQ9XCJLZXBsZXIuZ2wgaXMgYSBwb3dlcmZ1bCB3ZWItYmFzZWQgZ2Vvc3BhdGlhbCBkYXRhIGFuYWx5c2lzIHRvb2wuIEJ1aWx0IG9uIGEgaGlnaCBwZXJmb3JtYW5jZSByZW5kZXJpbmcgZW5naW5lIGFuZCBkZXNpZ25lZCBmb3IgbGFyZ2Utc2NhbGUgZGF0YSBzZXRzLlwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjppbWFnZVwiIGNvbnRlbnQ9XCJodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC9rZXBsZXIuZ2wtbWV0YS10YWcucG5nXCIgLz5cblxuICAgICAgICA8IS0tIExvYWQgUmVhY3QvUmVkdXggLS0+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vcmVhY3RAMTguMy4xL3VtZC9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL3JlYWN0LWRvbUAxOC4zLjEvdW1kL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL3JlZHV4QDQuMi4xL2Rpc3QvcmVkdXguanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9yZWFjdC1yZWR1eEA4LjEuMi9kaXN0L3JlYWN0LXJlZHV4Lm1pbi5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL3N0eWxlZC1jb21wb25lbnRzQDYuMS44L2Rpc3Qvc3R5bGVkLWNvbXBvbmVudHMubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG5cbiAgICAgICAgPCEtLSBMb2FkIEtlcGxlci5nbCAtLT5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9rZXBsZXIuZ2xAJHt2ZXJzaW9ufS91bWQva2VwbGVyZ2wubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG5cbiAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPlxuICAgICAgICAgIGJvZHkge21hcmdpbjogMDsgcGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjt9XG4gICAgICAgIDwvc3R5bGU+XG5cbiAgICAgICAgPCEtLU1hcEJveCB0b2tlbi0tPlxuICAgICAgICA8IS0tXG4gICAgICAgICAgU0VDVVJJVFkgTk9URTogWW91ciBNYXBib3ggYWNjZXNzIHRva2VuIGlzIGVtYmVkZGVkIGJlbG93IGluIHBsYWluIHRleHQuXG4gICAgICAgICAgQW55b25lIHdpdGggYWNjZXNzIHRvIHRoaXMgSFRNTCBmaWxlIGNhbiBzZWUgYW5kIHVzZSB0aGlzIHRva2VuLlxuICAgICAgICAgIENvbnNpZGVyIHVzaW5nIGEgc2NvcGVkIHRva2VuIHdpdGggVVJMIHJlc3RyaWN0aW9ucyB0byBsaW1pdCBtaXN1c2UuXG4gICAgICAgICAgU2VlOiBodHRwczovL2RvY3MubWFwYm94LmNvbS9hY2NvdW50cy9ndWlkZXMvdG9rZW5zLyN1cmwtcmVzdHJpY3Rpb25zXG4gICAgICAgIC0tPlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFByb3ZpZGUgeW91ciBNYXBCb3ggVG9rZW5cbiAgICAgICAgICAgKiovXG4gICAgICAgICAgY29uc3QgTUFQQk9YX1RPS0VOID0gJyR7b3B0aW9ucy5tYXBib3hBcGlBY2Nlc3NUb2tlbiB8fCAnUFJPVklERV9NQVBCT1hfVE9LRU4nfSc7XG4gICAgICAgICAgY29uc3QgV0FSTklOR19NRVNTQUdFID0gJ1BsZWFzZSBQcm92aWRlIGEgTWFwYm94IFRva2VuIGluIG9yZGVyIHRvIHVzZSBLZXBsZXIuZ2wuIEVkaXQgdGhpcyBmaWxlIGFuZCBmaWxsIG91dCBNQVBCT1hfVE9LRU4gd2l0aCB5b3VyIGFjY2VzcyBrZXknO1xuICAgICAgICA8L3NjcmlwdD5cblxuICAgICAgICA8IS0tIEdBOiBEZWxldGUgdGhpcyBhcyB5b3Ugd2lzaCwgSG93ZXZlciB0byBwYXQgb3Vyc2VsdmVzIG9uIHRoZSBiYWNrLCB3ZSBvbmx5IHRyYWNrIGFub255bW91cyBwYWdldmlldyB0byB1bmRlcnN0YW5kIGhvdyBtYW55IHBlb3BsZSBhcmUgdXNpbmcga2VwbGVyLmdsLiAtLT5cbiAgICAgICAgPHNjcmlwdD5cbiAgICAgICAgICAoZnVuY3Rpb24oaSxzLG8sZyxyLGEsbSl7aVsnR29vZ2xlQW5hbHl0aWNzT2JqZWN0J109cjtpW3JdPWlbcl18fGZ1bmN0aW9uKCl7XG4gICAgICAgICAgKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksXG4gICAgICAgICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKVxuICAgICAgICAgIH0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTtcbiAgICAgICAgICBnYSgnY3JlYXRlJywgJ1VBLTY0Njk0NDA0LTE5Jywge1xuICAgICAgICAgICAgJ3N0b3JhZ2UnOiAnbm9uZScsXG4gICAgICAgICAgICAnY2xpZW50SWQnOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZ2E6Y2xpZW50SWQnKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGdhKGZ1bmN0aW9uKHRyYWNrZXIpIHtcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2dhOmNsaWVudElkJywgdHJhY2tlci5nZXQoJ2NsaWVudElkJykpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGdhKCdzZXQnLCAnY2hlY2tQcm90b2NvbFRhc2snLCBudWxsKTsgLy8gRGlzYWJsZSBmaWxlIHByb3RvY29sIGNoZWNraW5nLlxuICAgICAgICAgIGdhKCdzZXQnLCAnY2hlY2tTdG9yYWdlVGFzaycsIG51bGwpOyAvLyBEaXNhYmxlIGNvb2tpZSBzdG9yYWdlIGNoZWNraW5nLlxuICAgICAgICAgIGdhKCdzZXQnLCAnaGlzdG9yeUltcG9ydFRhc2snLCBudWxsKTsgLy8gRGlzYWJsZSBoaXN0b3J5IGNoZWNraW5nIChyZXF1aXJlcyByZWFkaW5nIGZyb20gY29va2llcykuXG4gICAgICAgICAgZ2EoJ3NldCcsICdwYWdlJywgJ2tlcGxlcmdsLWh0bWwnKTtcbiAgICAgICAgICBnYSgnc2VuZCcsICdwYWdldmlldycpO1xuICAgICAgICA8L3NjcmlwdD5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICA8IS0tIFdlIHdpbGwgcHV0IG91ciBSZWFjdCBjb21wb25lbnQgaW5zaWRlIHRoaXMgZGl2LiAtLT5cbiAgICAgICAgPGRpdiBpZD1cImFwcFwiPlxuICAgICAgICAgIDwhLS0gS2VwbGVyLmdsIG1hcCB3aWxsIGJlIHBsYWNlZCBoZXJlLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gTG9hZCBvdXIgUmVhY3QgY29tcG9uZW50LiAtLT5cbiAgICAgICAgPHNjcmlwdD5cbiAgICAgICAgICAvKiBWYWxpZGF0ZSBNYXBib3ggVG9rZW4gKi9cbiAgICAgICAgICBpZiAoKE1BUEJPWF9UT0tFTiB8fCAnJykgPT09ICcnIHx8IE1BUEJPWF9UT0tFTiA9PT0gJ1BST1ZJREVfTUFQQk9YX1RPS0VOJykge1xuICAgICAgICAgICAgYWxlcnQoV0FSTklOR19NRVNTQUdFKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiogU1RPUkUgKiovXG4gICAgICAgICAgY29uc3QgcmVkdWNlcnMgPSAoZnVuY3Rpb24gY3JlYXRlUmVkdWNlcnMocmVkdXgsIGtlcGxlckdsKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdXguY29tYmluZVJlZHVjZXJzKHtcbiAgICAgICAgICAgICAgLy8gbW91bnQga2VwbGVyR2wgcmVkdWNlclxuICAgICAgICAgICAgICBrZXBsZXJHbDoga2VwbGVyR2wua2VwbGVyR2xSZWR1Y2VyLmluaXRpYWxTdGF0ZSh7XG4gICAgICAgICAgICAgICAgdWlTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgcmVhZE9ubHk6ICR7b3B0aW9ucy5tb2RlID09PSBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRH0sXG4gICAgICAgICAgICAgICAgICBjdXJyZW50TW9kYWw6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KFJlZHV4LCBLZXBsZXJHbCkpO1xuXG4gICAgICAgICAgY29uc3QgbWlkZGxlV2FyZXMgPSAoZnVuY3Rpb24gY3JlYXRlTWlkZGxld2FyZXMoa2VwbGVyR2wpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXBsZXJHbC5lbmhhbmNlUmVkdXhNaWRkbGV3YXJlKFtcbiAgICAgICAgICAgICAgLy8gQWRkIG90aGVyIG1pZGRsZXdhcmVzIGhlcmVcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0oS2VwbGVyR2wpKTtcblxuICAgICAgICAgIGNvbnN0IGVuaGFuY2VycyA9IChmdW5jdGlvbiBjcmFldGVFbmhhbmNlcnMocmVkdXgsIG1pZGRsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1eC5hcHBseU1pZGRsZXdhcmUoLi4ubWlkZGxlcyk7XG4gICAgICAgICAgfShSZWR1eCwgbWlkZGxlV2FyZXMpKTtcblxuICAgICAgICAgIGNvbnN0IHN0b3JlID0gKGZ1bmN0aW9uIGNyZWF0ZVN0b3JlKHJlZHV4LCBlbmhhbmNlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt9O1xuXG4gICAgICAgICAgICByZXR1cm4gcmVkdXguY3JlYXRlU3RvcmUoXG4gICAgICAgICAgICAgIHJlZHVjZXJzLFxuICAgICAgICAgICAgICBpbml0aWFsU3RhdGUsXG4gICAgICAgICAgICAgIHJlZHV4LmNvbXBvc2UoZW5oYW5jZXJzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KFJlZHV4LCBlbmhhbmNlcnMpKTtcbiAgICAgICAgICAvKiogRU5EIFNUT1JFICoqL1xuXG4gICAgICAgICAgLyoqIENPTVBPTkVOVFMgKiovXG4gICAgICAgICAgdmFyIEtlcGxlckVsZW1lbnQgPSAoZnVuY3Rpb24gbWFrZUtlcGxlckVsZW1lbnQocmVhY3QsIGtlcGxlckdsLCBtYXBib3hUb2tlbikge1xuICAgICAgICAgICAgdmFyIExvZ29TdmcgPSBmdW5jdGlvbiBMb2dvU3ZnKCkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBcImxvZ28tY29udGFpbmVyXCIsIHN0eWxlOiB7cG9zaXRpb246ICdmaXhlZCcsIHpJbmRleDogMTAwMDAsIHBhZGRpbmc6ICc0cHgnfSB9LFxuICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgXCJzdmdcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJrZXBsZXJfZ2xfX2xvZ29cIixcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDdweFwiLFxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIyMXB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveDogXCIwIDAgMTI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICBcImdcIixcbiAgICAgICAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoMTMuNTAwMDAwLCAxMy41MDAwMDApIHJvdGF0ZSg0NS4wMDAwMDApIHRyYW5zbGF0ZSgtMTMuNTAwMDAwLCAtMTMuNTAwMDAwKSB0cmFuc2xhdGUoNC4wMDAwMDAsIDQuMDAwMDAwKVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyB4OiBcIjBcIiwgeTogXCI2XCIsIHRyYW5zZm9ybTogXCJtYXRyaXgoMi41MzUxODFlLTA2IDEgLTEgMi41MzUxODFlLTA2IDE4LjExMDcgNi4wMzY5KVwiLCBmaWxsOiBcIiM1MzVDNkNcIiwgd2lkdGg6IFwiMTIuMVwiLCBoZWlnaHQ6IFwiMTIuMVwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHsgeDogXCI2XCIsIHk6IFwiMFwiLCB0cmFuc2Zvcm06IFwibWF0cml4KDIuNTM1MTgyZS0wNiAxIC0xIDIuNTM1MTgyZS0wNiAxOC4xMTA3IC02LjAzNjkpXCIsIGZpbGw6XCIjMUZCQUQ2XCIsIHdpZHRoOiBcIjEyLjFcIiwgaGVpZ2h0OiBcIjEyLjFcIiB9KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgIFwiZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNMzksOC43aDIuMmwtMi44LDQuMmwyLjksNS4xSDM5bC0yLjQtNC4yaC0xLjNWMThoLTJWNWwyLTAuMXY3LjNoMS4zTDM5LDguN3pcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTQyLjQsMTMuM2MwLTEuNSwwLjQtMi43LDEuMS0zLjVzMS44LTEuMiwzLjEtMS4yYzEuMywwLDIuMiwwLjQsMi44LDEuMWMwLjYsMC43LDAuOSwxLjgsMC45LDMuMyBjMCwwLjQsMCwwLjgsMCwxLjFoLTUuOGMwLDEuNiwwLjgsMi40LDIuNCwyLjRjMSwwLDItMC4yLDIuOS0wLjZsMC4yLDEuN2MtMC40LDAuMi0wLjksMC40LTEuNCwwLjVzLTEuMSwwLjItMS43LDAuMiBjLTEuNSwwLTIuNi0wLjQtMy4zLTEuMkM0Mi44LDE2LjEsNDIuNCwxNC45LDQyLjQsMTMuM3ogTTQ2LjYsMTAuMWMtMC43LDAtMS4yLDAuMi0xLjUsMC41Yy0wLjQsMC40LTAuNiwwLjktMC42LDEuN2g0IGMwLTAuOC0wLjItMS40LTAuNS0xLjdTNDcuMiwxMC4xLDQ2LjYsMTAuMXpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTU3LjEsMTguMmMtMSwwLTEuOC0wLjMtMi4zLTAuOWwwLDBsMCwxLjN2Mi41aC0yVjguN2gxLjVsMC4zLDAuOWgwYzAuMy0wLjMsMC43LTAuNiwxLjItMC43IGMwLjQtMC4yLDAuOS0wLjMsMS40LTAuM2MxLjIsMCwyLjEsMC40LDIuNywxLjFjMC42LDAuNywwLjksMiwwLjksMy43YzAsMS42LTAuMywyLjgtMSwzLjdDNTkuMiwxNy44LDU4LjMsMTguMiw1Ny4xLDE4LjJ6IE01Ni43LDEwLjNjLTAuNCwwLTAuOCwwLjEtMS4xLDAuMmMtMC4zLDAuMi0wLjYsMC40LTAuOCwwLjd2NC4zYzAuMiwwLjMsMC40LDAuNSwwLjcsMC43YzAuMywwLjIsMC43LDAuMywxLjEsMC4zIGMwLjcsMCwxLjItMC4yLDEuNi0wLjdjMC40LTAuNSwwLjUtMS4zLDAuNS0yLjVjMC0wLjgtMC4xLTEuNC0wLjItMS44cy0wLjQtMC43LTAuNy0wLjlDNTcuNiwxMC40LDU3LjIsMTAuMyw1Ni43LDEwLjN6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk02My4yLDE2VjVsMi0wLjF2MTAuOGMwLDAuMywwLjEsMC41LDAuMiwwLjZjMC4xLDAuMSwwLjMsMC4yLDAuNiwwLjJjMC4zLDAsMC42LDAsMC45LTAuMVYxOCBjLTAuNCwwLjEtMSwwLjItMS42LDAuMmMtMC44LDAtMS4zLTAuMi0xLjctMC41UzYzLjIsMTYuOCw2My4yLDE2elwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNNjguMiwxMy4zYzAtMS41LDAuNC0yLjcsMS4xLTMuNWMwLjctMC44LDEuOC0xLjIsMy4xLTEuMmMxLjMsMCwyLjIsMC40LDIuOCwxLjFjMC42LDAuNywwLjksMS44LDAuOSwzLjMgYzAsMC40LDAsMC44LDAsMS4xaC01LjhjMCwxLjYsMC44LDIuNCwyLjQsMi40YzEsMCwyLTAuMiwyLjktMC42bDAuMiwxLjdjLTAuNCwwLjItMC45LDAuNC0xLjQsMC41cy0xLjEsMC4yLTEuNywwLjIgYy0xLjUsMC0yLjYtMC40LTMuMy0xLjJDNjguNiwxNi4xLDY4LjIsMTQuOSw2OC4yLDEzLjN6IE03Mi40LDEwLjFjLTAuNywwLTEuMiwwLjItMS41LDAuNWMtMC40LDAuNC0wLjYsMC45LTAuNiwxLjdoNCBjMC0wLjgtMC4yLTEuNC0wLjUtMS43UzczLDEwLjEsNzIuNCwxMC4xelwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNODAuMiw4LjdsMC4xLDEuN2gwYzAuMy0wLjYsMC43LTEuMSwxLjEtMS40YzAuNC0wLjMsMS0wLjUsMS42LTAuNWMwLjQsMCwwLjcsMCwxLDAuMWwtMC4xLDIgYy0wLjMtMC4xLTAuNy0wLjItMS0wLjJjLTAuNywwLTEuMywwLjMtMS43LDAuOGMtMC40LDAuNS0wLjcsMS4yLTAuNywyLjFWMThoLTJWOC43SDgwLjJ6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk04My44LDE3YzAtMC44LDAuNC0xLjIsMS4yLTEuMmMwLjgsMCwxLjIsMC40LDEuMiwxLjJjMCwwLjgtMC40LDEuMS0xLjIsMS4xQzg0LjIsMTguMiw4My44LDE3LjgsODMuOCwxN3pcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTg4LjUsMTguN2MwLTAuOCwwLjQtMS40LDEuMi0xLjhjLTAuNi0wLjMtMC45LTAuOC0wLjktMS41YzAtMC43LDAuNC0xLjIsMS4xLTEuNmMtMC4zLTAuMy0wLjYtMC42LTAuNy0wLjkgYy0wLjItMC40LTAuMi0wLjgtMC4yLTEuM2MwLTEsMC4zLTEuOCwwLjktMi4zYzAuNi0wLjUsMS42LTAuOCwyLjgtMC44YzAuNSwwLDEsMCwxLjQsMC4xYzAuNCwwLjEsMC44LDAuMiwxLjEsMC40bDIuNC0wLjJ2MS41IGgtMS41YzAuMiwwLjQsMC4yLDAuOCwwLjIsMS4zYzAsMS0wLjMsMS43LTAuOSwyLjJzLTEuNSwwLjgtMi43LDAuOGMtMC43LDAtMS4yLTAuMS0xLjYtMC4yYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuMyBjLTAuMSwwLjEtMC4xLDAuMi0wLjEsMC40YzAsMC4yLDAuMSwwLjMsMC4yLDAuNGMwLjEsMC4xLDAuMywwLjIsMC42LDAuMmwyLjcsMC4yYzEsMC4xLDEuNywwLjMsMi4yLDAuNmMwLjUsMC4zLDAuOCwwLjksMC44LDEuNyBjMCwwLjYtMC4yLDEuMS0wLjUsMS41Yy0wLjQsMC40LTAuOSwwLjgtMS41LDFjLTAuNywwLjItMS41LDAuNC0yLjQsMC40Yy0xLjMsMC0yLjMtMC4yLTMtMC42Qzg4LjgsMjAuMSw4OC41LDE5LjUsODguNSwxOC43eiBNOTUuMSwxOC40YzAtMC4zLTAuMS0wLjUtMC4zLTAuN3MtMC42LTAuMi0xLjEtMC4zbC0yLjctMC4zYy0wLjIsMC4xLTAuNCwwLjMtMC41LDAuNWMtMC4xLDAuMi0wLjIsMC40LTAuMiwwLjYgYzAsMC40LDAuMiwwLjgsMC41LDFjMC40LDAuMiwxLDAuMywxLjgsMC4zQzk0LjIsMTkuNSw5NS4xLDE5LjIsOTUuMSwxOC40eiBNOTQuMywxMS41YzAtMC42LTAuMS0xLTAuNC0xLjIgYy0wLjMtMC4yLTAuNy0wLjMtMS4zLTAuM2MtMC43LDAtMS4xLDAuMS0xLjQsMC4zYy0wLjMsMC4yLTAuNCwwLjYtMC40LDEuMnMwLjEsMSwwLjQsMS4yYzAuMywwLjIsMC43LDAuMywxLjQsMC4zIGMwLjYsMCwxLjEtMC4xLDEuMy0wLjRTOTQuMywxMiw5NC4zLDExLjV6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk05OS40LDE2VjVsMi0wLjF2MTAuOGMwLDAuMywwLjEsMC41LDAuMiwwLjZjMC4xLDAuMSwwLjMsMC4yLDAuNiwwLjJjMC4zLDAsMC42LDAsMC45LTAuMVYxOCBjLTAuNCwwLjEtMSwwLjItMS42LDAuMmMtMC44LDAtMS4zLTAuMi0xLjctMC41Uzk5LjQsMTYuOCw5OS40LDE2elwiIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gQXBwKCkge1xuICAgICAgICAgICAgICB2YXIgcm9vdEVsbSA9IHJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAgICAgICAgICAgdmFyIF91c2VTdGF0ZSA9IHJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgICAgICAgICB3aWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHZhciB3aW5kb3dEaW1lbnNpb24gPSBfdXNlU3RhdGVbMF07XG4gICAgICAgICAgICAgIHZhciBzZXREaW1lbnNpb24gPSBfdXNlU3RhdGVbMV07XG4gICAgICAgICAgICAgIHJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiBzaWRlRWZmZWN0KCl7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmVzaXplKCkge1xuICAgICAgICAgICAgICAgICAgc2V0RGltZW5zaW9uKHt3aWR0aDogd2luZG93LmlubmVyV2lkdGgsIGhlaWdodDogd2luZG93LmlubmVySGVpZ2h0fSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7fTtcbiAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICByZXR1cm4gcmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7c3R5bGU6IHtwb3NpdGlvbjogJ2Fic29sdXRlJywgbGVmdDogMCwgd2lkdGg6ICcxMDB2dycsIGhlaWdodDogJzEwMHZoJ319LFxuICAgICAgICAgICAgICAgICR7b3B0aW9ucy5tb2RlID09PSBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRCA/ICdMb2dvU3ZnKCksJyA6ICcnfVxuICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoa2VwbGVyR2wuS2VwbGVyR2wsIHtcbiAgICAgICAgICAgICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBtYXBib3hUb2tlbixcbiAgICAgICAgICAgICAgICAgIGlkOiBcIm1hcFwiLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpbmRvd0RpbWVuc2lvbi53aWR0aCxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogd2luZG93RGltZW5zaW9uLmhlaWdodFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KFJlYWN0LCBLZXBsZXJHbCwgTUFQQk9YX1RPS0VOKSk7XG5cbiAgICAgICAgICBjb25zdCBhcHAgPSAoZnVuY3Rpb24gY3JlYXRlUmVhY3RSZWR1eFByb3ZpZGVyKHJlYWN0LCByZWFjdFJlZHV4LCBLZXBsZXJFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVhY3QuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgcmVhY3RSZWR1eC5Qcm92aWRlcixcbiAgICAgICAgICAgICAge3N0b3JlfSxcbiAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChLZXBsZXJFbGVtZW50LCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0oUmVhY3QsIFJlYWN0UmVkdXgsIEtlcGxlckVsZW1lbnQpKTtcbiAgICAgICAgICAvKiogRU5EIENPTVBPTkVOVFMgKiovXG5cbiAgICAgICAgICAvKiogUmVuZGVyICoqL1xuICAgICAgICAgIChmdW5jdGlvbiByZW5kZXIocmVhY3QsIHJlYWN0RE9NLCBhcHApIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3QgPSByZWFjdERPTS5jcmVhdGVSb290KGNvbnRhaW5lcik7XG4gICAgICAgICAgICByb290LnJlbmRlcihhcHApO1xuICAgICAgICAgIH0oUmVhY3QsIFJlYWN0RE9NLCBhcHApKTtcbiAgICAgICAgPC9zY3JpcHQ+XG4gICAgICAgIDwhLS0gVGhlIG5leHQgc2NyaXB0IHdpbGwgc2hvdyBob3cgdG8gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCBLZXBsZXIgbWFwIHN0b3JlIC0tPlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEN1c3RvbWl6ZSBtYXAuXG4gICAgICAgICAgICogSW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uIHlvdSBjYW4gdXNlIHRoZSBzdG9yZSBvYmplY3QgdG8gZGlzcGF0Y2ggS2VwbGVyLmdsIGFjdGlvbnNcbiAgICAgICAgICAgKiB0byBhZGQgbmV3IGRhdGEgYW5kIGN1c3RvbWl6ZSBiZWhhdmlvclxuICAgICAgICAgICAqL1xuICAgICAgICAgIChmdW5jdGlvbiBjdXN0b21pemUoa2VwbGVyR2wsIHN0b3JlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhc2V0cyA9ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucy5kYXRhc2V0cyl9O1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gJHtKU09OLnN0cmluZ2lmeShvcHRpb25zLmNvbmZpZyl9O1xuXG4gICAgICAgICAgICBjb25zdCBsb2FkZWREYXRhID0ga2VwbGVyR2wuS2VwbGVyR2xTY2hlbWEubG9hZChcbiAgICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIEtlcGxlciBvdmVyd3JpdGVzIHRoZSBjb25maWcgd2l0aG91dCBleHRyYSB3YWl0IHRpbWVcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICAgICAga2VwbGVyR2wuYWRkRGF0YVRvTWFwKHtcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRzOiBsb2FkZWREYXRhLmRhdGFzZXRzLFxuICAgICAgICAgICAgICAgICAgY29uZmlnOiBsb2FkZWREYXRhLmNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyTWFwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgfShLZXBsZXJHbCwgc3RvcmUpKVxuICAgICAgICA8L3NjcmlwdD5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gIGA7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFIQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxlQUFlLEdBQUFDLE9BQUEsQ0FBQUQsZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJRSxPQUFPLEVBQWtDO0VBQUEsSUFBaENDLE9BQU8sR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUdHLDRCQUFpQjtFQUNsRSxrWEFBQUMsTUFBQSxDQVdnREwsT0FBTyx5NEVBQUFLLE1BQUEsQ0FnQ05MLE9BQU8sMHBCQUFBSyxNQUFBLENBaUJ4Qk4sT0FBTyxDQUFDTyxvQkFBb0IsSUFBSSxzQkFBc0IscWxFQUFBRCxNQUFBLENBMkMxRE4sT0FBTyxDQUFDUSxJQUFJLEtBQUtDLGdDQUFxQixDQUFDQyxJQUFJLDBvTkFBQUosTUFBQSxDQW1GdkROLE9BQU8sQ0FBQ1EsSUFBSSxLQUFLQyxnQ0FBcUIsQ0FBQ0MsSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLDAyQ0FBQUosTUFBQSxDQW1DbERLLElBQUksQ0FBQ0MsU0FBUyxDQUFDWixPQUFPLENBQUNhLFFBQVEsQ0FBQyxvQ0FBQVAsTUFBQSxDQUNsQ0ssSUFBSSxDQUFDQyxTQUFTLENBQUNaLE9BQU8sQ0FBQ2MsTUFBTSxDQUFDO0FBd0IzRCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
package/dist/export-utils.d.ts
CHANGED
|
@@ -23,12 +23,12 @@ export declare function downloadFile(fileBlob: Blob, fileName: string): void;
|
|
|
23
23
|
export declare function exportImage(uiStateExportImage: ExportImage, filename?: string): void;
|
|
24
24
|
export declare function exportToJsonString(data: any): any;
|
|
25
25
|
export declare function getMapJSON(state: any, options?: {
|
|
26
|
-
hasData?: boolean
|
|
26
|
+
hasData?: boolean;
|
|
27
27
|
}): any;
|
|
28
28
|
export declare function exportJson(state: any, options?: any): void;
|
|
29
29
|
export declare function exportHtml(state: any, options: any): void;
|
|
30
30
|
export declare function exportMap(state: any, options?: {
|
|
31
|
-
hasData?: boolean
|
|
31
|
+
hasData?: boolean;
|
|
32
32
|
}): {
|
|
33
33
|
map: any;
|
|
34
34
|
thumbnail: any;
|
package/dist/export-utils.js
CHANGED
|
@@ -198,4 +198,4 @@ var exporters = {
|
|
|
198
198
|
exportHtml: exportHtml
|
|
199
199
|
};
|
|
200
200
|
var _default = exports["default"] = exporters;
|
|
201
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl9nZXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9kb21Ub0ltYWdlIiwiX3V0aWxzIiwiX2V4cG9ydE1hcEh0bWwiLCJfYXBwbGljYXRpb25Db25maWciLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlZmF1bHRSZXNvbHV0aW9uIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJkZWZhdWx0UmF0aW8iLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiaXNNU0VkZ2UiLCJ3aW5kb3ciLCJCb29sZWFuIiwibmF2aWdhdG9yIiwibXNTYXZlT3JPcGVuQmxvYiIsImdldFNjYWxlRnJvbUltYWdlU2l6ZSIsImltYWdlVyIsInVuZGVmaW5lZCIsImltYWdlSCIsIm1hcFciLCJtYXBIIiwic29tZSIsImQiLCJiYXNlIiwibWFwQmFzZSIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsIl9yZWYiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyYXRpb0l0ZW0iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsInJlc29sdXRpb25JdGVtIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJfcmVzb2x1dGlvbkl0ZW0kZ2V0U2kiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJ3aWR0aCIsInNjYWxlZEhlaWdodCIsImhlaWdodCIsIl9yYXRpb0l0ZW0kZ2V0U2l6ZSIsIl9yZWYyIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJDVVNUT00iLCJzY2FsZSIsImNvbnZlcnRUb1BuZyIsInNvdXJjZUVsZW0iLCJvcHRpb25zIiwiZG9tdG9pbWFnZSIsInRvUG5nIiwiZGF0YVVSSXRvQmxvYiIsImRhdGFVUkkiLCJiaW5hcnkiLCJhdG9iIiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVOYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImV2dCIsIk1vdXNlRXZlbnQiLCJ2aWV3IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkaXNwYXRjaEV2ZW50IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJleHBvcnRJbWFnZSIsInVpU3RhdGVFeHBvcnRJbWFnZSIsImZpbGVuYW1lIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkZWZhdWx0SW1hZ2VOYW1lIiwiaW1hZ2VEYXRhVXJpIiwiZmlsZSIsImV4cG9ydFRvSnNvblN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiVHlwZUVycm9yIiwibWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0TWFwSlNPTiIsInN0YXRlIiwiZGVmYXVsdEV4cG9ydEpzb25TZXR0aW5ncyIsImhhc0RhdGEiLCJzY2hlbWEiLCJ2aXNTdGF0ZSIsImdldENvbmZpZ1RvU2F2ZSIsIm1hcFRvU2F2ZSIsInNhdmUiLCJ0aXRsZSIsImdldCIsInNldCIsImNvbmNhdCIsImdlbmVyYXRlSGFzaElkIiwiZXhwb3J0SnNvbiIsIm1hcCIsImluZm8iLCJzb3VyY2UiLCJhcHBOYW1lIiwiZGVmYXVsdEpzb25OYW1lIiwiZXhwb3J0SHRtbCIsInVzZXJNYXBib3hUb2tlbiIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwibW9kZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiZXhwb3J0TWFwVG9IVE1MIiwiZGVmYXVsdEh0bWxOYW1lIiwiZXhwb3J0TWFwIiwidWlTdGF0ZSIsInRodW1ibmFpbCIsImV4cG9ydGVycyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtCbG9iLCBVUkwsIGF0b2IsIFVpbnQ4QXJyYXksIEFycmF5QnVmZmVyLCBkb2N1bWVudH0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge1xuICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIHR5cGUgRXhwb3J0UmVzb2x1dGlvbk9wdGlvblxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0V4cG9ydEltYWdlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCBkb210b2ltYWdlIGZyb20gJy4vZG9tLXRvLWltYWdlJztcbmltcG9ydCB7c2V0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7ZXhwb3J0TWFwVG9IVE1MfSBmcm9tICcuL2V4cG9ydC1tYXAtaHRtbCc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5cbmNvbnN0IGRlZmF1bHRSZXNvbHV0aW9uID0gT25lWFJlc29sdXRpb25PcHRpb247XG5cbmNvbnN0IGRlZmF1bHRSYXRpbyA9IEZvdXJCeVRocmVlUmF0aW9PcHRpb247XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01TRWRnZSh3aW5kb3c6IFdpbmRvdyk6IGJvb2xlYW4ge1xuICAvLyBAdHMtaWdub3JlIG1zU2F2ZU9yT3BlbkJsb2Igd2FzIGEgcHJvcHJpZXRhcnkgYWRkaXRpb24gdG8gdGhlIE5hdmlnYXRvciBvYmplY3QsIGFkZGVkIGJ5IE1pY3Jvc29mdCBmb3IgSW50ZXJuZXQgRXhwbG9yZXIuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5uYXZpZ2F0b3IgJiYgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlRnJvbUltYWdlU2l6ZShpbWFnZVcgPSAwLCBpbWFnZUggPSAwLCBtYXBXID0gMCwgbWFwSCA9IDApIHtcbiAgaWYgKFtpbWFnZVcsIGltYWdlSCwgbWFwVywgbWFwSF0uc29tZShkID0+IGQgPD0gMCkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IGJhc2UgPSBpbWFnZVcgLyBpbWFnZUggPiAxID8gaW1hZ2VXIDogaW1hZ2VIO1xuICBjb25zdCBtYXBCYXNlID0gaW1hZ2VXIC8gaW1hZ2VIID4gMSA/IG1hcFcgOiBtYXBIO1xuICByZXR1cm4gYmFzZSAvIG1hcEJhc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUoe1xuICBtYXBXLFxuICBtYXBILFxuICByYXRpbyxcbiAgcmVzb2x1dGlvblxufToge1xuICBtYXBXOiBudW1iZXI7XG4gIG1hcEg6IG51bWJlcjtcbiAgcmF0aW86IGtleW9mIHR5cGVvZiBFWFBPUlRfSU1HX1JBVElPUztcbiAgcmVzb2x1dGlvbjogRXhwb3J0UmVzb2x1dGlvbk9wdGlvbjtcbn0pIHtcbiAgaWYgKG1hcFcgPD0gMCB8fCBtYXBIIDw9IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJhdGlvSXRlbSA9IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByYXRpbykgfHwgZGVmYXVsdFJhdGlvO1xuXG4gIGNvbnN0IHJlc29sdXRpb25JdGVtID1cbiAgICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByZXNvbHV0aW9uKSB8fCBkZWZhdWx0UmVzb2x1dGlvbjtcblxuICBjb25zdCB7d2lkdGg6IHNjYWxlZFdpZHRoLCBoZWlnaHQ6IHNjYWxlZEhlaWdodH0gPSByZXNvbHV0aW9uSXRlbS5nZXRTaXplKG1hcFcsIG1hcEgpO1xuXG4gIGNvbnN0IHt3aWR0aDogaW1hZ2VXLCBoZWlnaHQ6IGltYWdlSH0gPSByYXRpb0l0ZW0uZ2V0U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTtcblxuICBjb25zdCB7c2NhbGV9ID0gcmF0aW9JdGVtLmlkID09PSBFWFBPUlRfSU1HX1JBVElPUy5DVVNUT00gPyB7c2NhbGU6IHVuZGVmaW5lZH0gOiByZXNvbHV0aW9uSXRlbTtcblxuICByZXR1cm4ge1xuICAgIHNjYWxlLFxuICAgIGltYWdlVyxcbiAgICBpbWFnZUhcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1BuZyhzb3VyY2VFbGVtOiBIVE1MRWxlbWVudCwgb3B0aW9ucykge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSTogc3RyaW5nKTogQmxvYiB7XG4gIGNvbnN0IGJpbmFyeSA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuICAvLyBzZXBhcmF0ZSBvdXQgdGhlIG1pbWUgY29tcG9uZW50XG4gIGNvbnN0IG1pbWVTdHJpbmcgPSBkYXRhVVJJLnNwbGl0KCcsJylbMF0uc3BsaXQoJzonKVsxXS5zcGxpdCgnOycpWzBdO1xuXG4gIC8vIHdyaXRlIHRoZSBieXRlcyBvZiB0aGUgc3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyXG4gIGNvbnN0IGFiID0gbmV3IEFycmF5QnVmZmVyKGJpbmFyeS5sZW5ndGgpO1xuXG4gIC8vIGNyZWF0ZSBhIHZpZXcgaW50byB0aGUgYnVmZmVyXG4gIGNvbnN0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWFbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGaWxlKGZpbGVCbG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc01TRWRnZSh3aW5kb3cpKSB7XG4gICAgKHdpbmRvdy5uYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVPck9wZW5CbG9iKGZpbGVCbG9iLCBmaWxlTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIC8vIGluIHNvbWUgY2FzZXMgd2hlcmUgbWFwcyBhcmUgZW1iZWRkZWQsIGUuZy4gbmVlZCB0b1xuICAgIC8vIGNyZWF0ZSBhbmQgZGlzcGF0Y2ggYW4gZXZlbnQgc28gdGhhdCB0aGUgYnJvd3NlciBkb3dubG9hZHNcbiAgICAvLyB0aGUgZmlsZSBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gdGhlIHVybFxuICAgIGNvbnN0IGV2dCA9IG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHtcbiAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGxpbmsuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBpcyByZ2JcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRJbWFnZShcbiAgdWlTdGF0ZUV4cG9ydEltYWdlOiBFeHBvcnRJbWFnZSxcbiAgZmlsZW5hbWUgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRJbWFnZU5hbWVcbikge1xuICBjb25zdCB7aW1hZ2VEYXRhVXJpfSA9IHVpU3RhdGVFeHBvcnRJbWFnZTtcbiAgaWYgKGltYWdlRGF0YVVyaSkge1xuICAgIGNvbnN0IGZpbGUgPSBkYXRhVVJJdG9CbG9iKGltYWdlRGF0YVVyaSk7XG4gICAgZG93bmxvYWRGaWxlKGZpbGUsIGZpbGVuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0VG9Kc29uU3RyaW5nKGRhdGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgcmV0dXJuIGUubWVzc2FnZTtcbiAgICAvLyBOb24tU3RhbmRhcmQgRXJyb3IgT2JqZWN0IFByb3BlcnR5XG4gICAgcmV0dXJuIChlIGFzIGFueSkuZGVzY3JpcHRpb247XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MpIHtcbiAgY29uc3Qge2hhc0RhdGF9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2NoZW1hID0gc3RhdGUudmlzU3RhdGUuc2NoZW1hO1xuXG4gIGlmICghaGFzRGF0YSkge1xuICAgIHJldHVybiBzY2hlbWEuZ2V0Q29uZmlnVG9TYXZlKHN0YXRlKTtcbiAgfVxuXG4gIGxldCBtYXBUb1NhdmUgPSBzY2hlbWEuc2F2ZShzdGF0ZSk7XG4gIC8vIGFkZCBmaWxlIG5hbWUgaWYgdGl0bGUgaXMgbm90IHByb3ZpZGVkXG4gIGNvbnN0IHRpdGxlID0gZ2V0KG1hcFRvU2F2ZSwgWydpbmZvJywgJ3RpdGxlJ10pO1xuICBpZiAoIXRpdGxlIHx8ICF0aXRsZS5sZW5ndGgpIHtcbiAgICBtYXBUb1NhdmUgPSBzZXQoWydpbmZvJywgJ3RpdGxlJ10sIGBrZXBsZXJnbF8ke2dlbmVyYXRlSGFzaElkKDYpfWAsIG1hcFRvU2F2ZSk7XG4gIH1cbiAgcmV0dXJuIG1hcFRvU2F2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEpzb24oc3RhdGUsIG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gIGNvbnN0IG1hcCA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuICBtYXAuaW5mby5zb3VyY2UgPSAna2VwbGVyLmdsJztcbiAgY29uc3QgZmlsZUJsb2IgPSBuZXcgQmxvYihbZXhwb3J0VG9Kc29uU3RyaW5nKG1hcCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gIGNvbnN0IGZpbGVOYW1lID0gc3RhdGUuYXBwTmFtZSA/IGAke3N0YXRlLmFwcE5hbWV9Lmpzb25gIDogZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0SnNvbk5hbWU7XG4gIGRvd25sb2FkRmlsZShmaWxlQmxvYiwgZmlsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0SHRtbChzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7dXNlck1hcGJveFRva2VuLCBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiwgbW9kZX0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgLi4uZ2V0TWFwSlNPTihzdGF0ZSksXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46XG4gICAgICAodXNlck1hcGJveFRva2VuIHx8ICcnKSAhPT0gJycgPyB1c2VyTWFwYm94VG9rZW4gOiBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbixcbiAgICBtb2RlXG4gIH07XG5cbiAgY29uc3QgZmlsZUJsb2IgPSBuZXcgQmxvYihbZXhwb3J0TWFwVG9IVE1MKGRhdGEpXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSk7XG4gIGRvd25sb2FkRmlsZShcbiAgICBmaWxlQmxvYixcbiAgICBzdGF0ZS5hcHBOYW1lID8gYCR7c3RhdGUuYXBwTmFtZX0uaHRtbGAgOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRIdG1sTmFtZVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0TWFwKHN0YXRlLCBvcHRpb25zID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzKSB7XG4gIGNvbnN0IHtpbWFnZURhdGFVcml9ID0gc3RhdGUudWlTdGF0ZS5leHBvcnRJbWFnZTtcbiAgY29uc3QgdGh1bWJuYWlsOiBCbG9iIHwgbnVsbCA9IGltYWdlRGF0YVVyaSA/IGRhdGFVUkl0b0Jsb2IoaW1hZ2VEYXRhVXJpKSA6IG51bGw7XG4gIGNvbnN0IG1hcFRvU2F2ZSA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgbWFwOiBtYXBUb1NhdmUsXG4gICAgdGh1bWJuYWlsXG4gIH07XG59XG5cbmNvbnN0IGV4cG9ydGVycyA9IHtcbiAgZXhwb3J0SW1hZ2UsXG4gIGV4cG9ydEpzb24sXG4gIGV4cG9ydEh0bWxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4cG9ydGVy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
|
|
201
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl9nZXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9kb21Ub0ltYWdlIiwiX3V0aWxzIiwiX2V4cG9ydE1hcEh0bWwiLCJfYXBwbGljYXRpb25Db25maWciLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlZmF1bHRSZXNvbHV0aW9uIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJkZWZhdWx0UmF0aW8iLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiaXNNU0VkZ2UiLCJ3aW5kb3ciLCJCb29sZWFuIiwibmF2aWdhdG9yIiwibXNTYXZlT3JPcGVuQmxvYiIsImdldFNjYWxlRnJvbUltYWdlU2l6ZSIsImltYWdlVyIsInVuZGVmaW5lZCIsImltYWdlSCIsIm1hcFciLCJtYXBIIiwic29tZSIsImQiLCJiYXNlIiwibWFwQmFzZSIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsIl9yZWYiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyYXRpb0l0ZW0iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsInJlc29sdXRpb25JdGVtIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJfcmVzb2x1dGlvbkl0ZW0kZ2V0U2kiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJ3aWR0aCIsInNjYWxlZEhlaWdodCIsImhlaWdodCIsIl9yYXRpb0l0ZW0kZ2V0U2l6ZSIsIl9yZWYyIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJDVVNUT00iLCJzY2FsZSIsImNvbnZlcnRUb1BuZyIsInNvdXJjZUVsZW0iLCJvcHRpb25zIiwiZG9tdG9pbWFnZSIsInRvUG5nIiwiZGF0YVVSSXRvQmxvYiIsImRhdGFVUkkiLCJiaW5hcnkiLCJhdG9iIiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVOYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImV2dCIsIk1vdXNlRXZlbnQiLCJ2aWV3IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkaXNwYXRjaEV2ZW50IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJleHBvcnRJbWFnZSIsInVpU3RhdGVFeHBvcnRJbWFnZSIsImZpbGVuYW1lIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkZWZhdWx0SW1hZ2VOYW1lIiwiaW1hZ2VEYXRhVXJpIiwiZmlsZSIsImV4cG9ydFRvSnNvblN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiVHlwZUVycm9yIiwibWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0TWFwSlNPTiIsInN0YXRlIiwiZGVmYXVsdEV4cG9ydEpzb25TZXR0aW5ncyIsImhhc0RhdGEiLCJzY2hlbWEiLCJ2aXNTdGF0ZSIsImdldENvbmZpZ1RvU2F2ZSIsIm1hcFRvU2F2ZSIsInNhdmUiLCJ0aXRsZSIsImdldCIsInNldCIsImNvbmNhdCIsImdlbmVyYXRlSGFzaElkIiwiZXhwb3J0SnNvbiIsIm1hcCIsImluZm8iLCJzb3VyY2UiLCJhcHBOYW1lIiwiZGVmYXVsdEpzb25OYW1lIiwiZXhwb3J0SHRtbCIsInVzZXJNYXBib3hUb2tlbiIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwibW9kZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiZXhwb3J0TWFwVG9IVE1MIiwiZGVmYXVsdEh0bWxOYW1lIiwiZXhwb3J0TWFwIiwidWlTdGF0ZSIsInRodW1ibmFpbCIsImV4cG9ydGVycyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtCbG9iLCBVUkwsIGF0b2IsIFVpbnQ4QXJyYXksIEFycmF5QnVmZmVyLCBkb2N1bWVudH0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge1xuICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIHR5cGUgRXhwb3J0UmVzb2x1dGlvbk9wdGlvblxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0V4cG9ydEltYWdlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCBkb210b2ltYWdlIGZyb20gJy4vZG9tLXRvLWltYWdlJztcbmltcG9ydCB7c2V0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7ZXhwb3J0TWFwVG9IVE1MfSBmcm9tICcuL2V4cG9ydC1tYXAtaHRtbCc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5cbmNvbnN0IGRlZmF1bHRSZXNvbHV0aW9uID0gT25lWFJlc29sdXRpb25PcHRpb247XG5cbmNvbnN0IGRlZmF1bHRSYXRpbyA9IEZvdXJCeVRocmVlUmF0aW9PcHRpb247XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01TRWRnZSh3aW5kb3c6IFdpbmRvdyk6IGJvb2xlYW4ge1xuICAvLyBAdHMtaWdub3JlIG1zU2F2ZU9yT3BlbkJsb2Igd2FzIGEgcHJvcHJpZXRhcnkgYWRkaXRpb24gdG8gdGhlIE5hdmlnYXRvciBvYmplY3QsIGFkZGVkIGJ5IE1pY3Jvc29mdCBmb3IgSW50ZXJuZXQgRXhwbG9yZXIuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5uYXZpZ2F0b3IgJiYgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlRnJvbUltYWdlU2l6ZShpbWFnZVcgPSAwLCBpbWFnZUggPSAwLCBtYXBXID0gMCwgbWFwSCA9IDApIHtcbiAgaWYgKFtpbWFnZVcsIGltYWdlSCwgbWFwVywgbWFwSF0uc29tZShkID0+IGQgPD0gMCkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IGJhc2UgPSBpbWFnZVcgLyBpbWFnZUggPiAxID8gaW1hZ2VXIDogaW1hZ2VIO1xuICBjb25zdCBtYXBCYXNlID0gaW1hZ2VXIC8gaW1hZ2VIID4gMSA/IG1hcFcgOiBtYXBIO1xuICByZXR1cm4gYmFzZSAvIG1hcEJhc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUoe1xuICBtYXBXLFxuICBtYXBILFxuICByYXRpbyxcbiAgcmVzb2x1dGlvblxufToge1xuICBtYXBXOiBudW1iZXI7XG4gIG1hcEg6IG51bWJlcjtcbiAgcmF0aW86IGtleW9mIHR5cGVvZiBFWFBPUlRfSU1HX1JBVElPUztcbiAgcmVzb2x1dGlvbjogRXhwb3J0UmVzb2x1dGlvbk9wdGlvbjtcbn0pIHtcbiAgaWYgKG1hcFcgPD0gMCB8fCBtYXBIIDw9IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJhdGlvSXRlbSA9IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByYXRpbykgfHwgZGVmYXVsdFJhdGlvO1xuXG4gIGNvbnN0IHJlc29sdXRpb25JdGVtID1cbiAgICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByZXNvbHV0aW9uKSB8fCBkZWZhdWx0UmVzb2x1dGlvbjtcblxuICBjb25zdCB7d2lkdGg6IHNjYWxlZFdpZHRoLCBoZWlnaHQ6IHNjYWxlZEhlaWdodH0gPSByZXNvbHV0aW9uSXRlbS5nZXRTaXplKG1hcFcsIG1hcEgpO1xuXG4gIGNvbnN0IHt3aWR0aDogaW1hZ2VXLCBoZWlnaHQ6IGltYWdlSH0gPSByYXRpb0l0ZW0uZ2V0U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTtcblxuICBjb25zdCB7c2NhbGV9ID0gcmF0aW9JdGVtLmlkID09PSBFWFBPUlRfSU1HX1JBVElPUy5DVVNUT00gPyB7c2NhbGU6IHVuZGVmaW5lZH0gOiByZXNvbHV0aW9uSXRlbTtcblxuICByZXR1cm4ge1xuICAgIHNjYWxlLFxuICAgIGltYWdlVyxcbiAgICBpbWFnZUhcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1BuZyhzb3VyY2VFbGVtOiBIVE1MRWxlbWVudCwgb3B0aW9ucykge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSTogc3RyaW5nKTogQmxvYiB7XG4gIGNvbnN0IGJpbmFyeSA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuICAvLyBzZXBhcmF0ZSBvdXQgdGhlIG1pbWUgY29tcG9uZW50XG4gIGNvbnN0IG1pbWVTdHJpbmcgPSBkYXRhVVJJLnNwbGl0KCcsJylbMF0uc3BsaXQoJzonKVsxXS5zcGxpdCgnOycpWzBdO1xuXG4gIC8vIHdyaXRlIHRoZSBieXRlcyBvZiB0aGUgc3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyXG4gIGNvbnN0IGFiID0gbmV3IEFycmF5QnVmZmVyKGJpbmFyeS5sZW5ndGgpO1xuXG4gIC8vIGNyZWF0ZSBhIHZpZXcgaW50byB0aGUgYnVmZmVyXG4gIGNvbnN0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWFbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGaWxlKGZpbGVCbG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc01TRWRnZSh3aW5kb3cpKSB7XG4gICAgKHdpbmRvdy5uYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVPck9wZW5CbG9iKGZpbGVCbG9iLCBmaWxlTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIC8vIGluIHNvbWUgY2FzZXMgd2hlcmUgbWFwcyBhcmUgZW1iZWRkZWQsIGUuZy4gbmVlZCB0b1xuICAgIC8vIGNyZWF0ZSBhbmQgZGlzcGF0Y2ggYW4gZXZlbnQgc28gdGhhdCB0aGUgYnJvd3NlciBkb3dubG9hZHNcbiAgICAvLyB0aGUgZmlsZSBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gdGhlIHVybFxuICAgIGNvbnN0IGV2dCA9IG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHtcbiAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGxpbmsuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBpcyByZ2JcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRJbWFnZShcbiAgdWlTdGF0ZUV4cG9ydEltYWdlOiBFeHBvcnRJbWFnZSxcbiAgZmlsZW5hbWUgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRJbWFnZU5hbWVcbikge1xuICBjb25zdCB7aW1hZ2VEYXRhVXJpfSA9IHVpU3RhdGVFeHBvcnRJbWFnZTtcbiAgaWYgKGltYWdlRGF0YVVyaSkge1xuICAgIGNvbnN0IGZpbGUgPSBkYXRhVVJJdG9CbG9iKGltYWdlRGF0YVVyaSk7XG4gICAgZG93bmxvYWRGaWxlKGZpbGUsIGZpbGVuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0VG9Kc29uU3RyaW5nKGRhdGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgcmV0dXJuIGUubWVzc2FnZTtcbiAgICAvLyBOb24tU3RhbmRhcmQgRXJyb3IgT2JqZWN0IFByb3BlcnR5XG4gICAgcmV0dXJuIChlIGFzIGFueSkuZGVzY3JpcHRpb247XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3MpIHtcbiAgY29uc3Qge2hhc0RhdGF9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2NoZW1hID0gc3RhdGUudmlzU3RhdGUuc2NoZW1hO1xuXG4gIGlmICghaGFzRGF0YSkge1xuICAgIHJldHVybiBzY2hlbWEuZ2V0Q29uZmlnVG9TYXZlKHN0YXRlKTtcbiAgfVxuXG4gIGxldCBtYXBUb1NhdmUgPSBzY2hlbWEuc2F2ZShzdGF0ZSk7XG4gIC8vIGFkZCBmaWxlIG5hbWUgaWYgdGl0bGUgaXMgbm90IHByb3ZpZGVkXG4gIGNvbnN0IHRpdGxlID0gZ2V0KG1hcFRvU2F2ZSwgWydpbmZvJywgJ3RpdGxlJ10pO1xuICBpZiAoIXRpdGxlIHx8ICF0aXRsZS5sZW5ndGgpIHtcbiAgICBtYXBUb1NhdmUgPSBzZXQoWydpbmZvJywgJ3RpdGxlJ10sIGBrZXBsZXJnbF8ke2dlbmVyYXRlSGFzaElkKDYpfWAsIG1hcFRvU2F2ZSk7XG4gIH1cbiAgcmV0dXJuIG1hcFRvU2F2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEpzb24oc3RhdGUsIG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gIGNvbnN0IG1hcCA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuICBtYXAuaW5mby5zb3VyY2UgPSAna2VwbGVyLmdsJztcbiAgY29uc3QgZmlsZUJsb2IgPSBuZXcgQmxvYihbZXhwb3J0VG9Kc29uU3RyaW5nKG1hcCldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gIGNvbnN0IGZpbGVOYW1lID0gc3RhdGUuYXBwTmFtZSA/IGAke3N0YXRlLmFwcE5hbWV9Lmpzb25gIDogZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0SnNvbk5hbWU7XG4gIGRvd25sb2FkRmlsZShmaWxlQmxvYiwgZmlsZU5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0SHRtbChzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7dXNlck1hcGJveFRva2VuLCBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiwgbW9kZX0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgLi4uZ2V0TWFwSlNPTihzdGF0ZSksXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46XG4gICAgICAodXNlck1hcGJveFRva2VuIHx8ICcnKSAhPT0gJycgPyB1c2VyTWFwYm94VG9rZW4gOiBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbixcbiAgICBtb2RlXG4gIH07XG5cbiAgY29uc3QgZmlsZUJsb2IgPSBuZXcgQmxvYihbZXhwb3J0TWFwVG9IVE1MKGRhdGEpXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSk7XG4gIGRvd25sb2FkRmlsZShcbiAgICBmaWxlQmxvYixcbiAgICBzdGF0ZS5hcHBOYW1lID8gYCR7c3RhdGUuYXBwTmFtZX0uaHRtbGAgOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRlZmF1bHRIdG1sTmFtZVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0TWFwKHN0YXRlLCBvcHRpb25zID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzKSB7XG4gIGNvbnN0IHtpbWFnZURhdGFVcml9ID0gc3RhdGUudWlTdGF0ZS5leHBvcnRJbWFnZTtcbiAgY29uc3QgdGh1bWJuYWlsOiBCbG9iIHwgbnVsbCA9IGltYWdlRGF0YVVyaSA/IGRhdGFVUkl0b0Jsb2IoaW1hZ2VEYXRhVXJpKSA6IG51bGw7XG4gIGNvbnN0IG1hcFRvU2F2ZSA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgbWFwOiBtYXBUb1NhdmUsXG4gICAgdGh1bWJuYWlsXG4gIH07XG59XG5cbmNvbnN0IGV4cG9ydGVycyA9IHtcbiAgZXhwb3J0SW1hZ2UsXG4gIGV4cG9ydEpzb24sXG4gIGV4cG9ydEh0bWxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4cG9ydGVy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
|
package/dist/filter-utils.d.ts
CHANGED
|
@@ -7,17 +7,17 @@ export declare const durationHour: number;
|
|
|
7
7
|
export declare const durationDay: number;
|
|
8
8
|
export declare const durationWeek: number;
|
|
9
9
|
export declare const durationYear: number;
|
|
10
|
-
|
|
11
|
-
export
|
|
10
|
+
type VisState = any;
|
|
11
|
+
export type FilterResult = {
|
|
12
12
|
filteredIndexForDomain?: number[];
|
|
13
13
|
filteredIndex?: number[];
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export type FilterChanged = {
|
|
16
16
|
[key in keyof FilterRecord]: {
|
|
17
17
|
[key: string]: 'added' | 'deleted' | 'name_changed' | 'value_changed' | 'dataId_changed';
|
|
18
18
|
} | null;
|
|
19
19
|
};
|
|
20
|
-
export
|
|
20
|
+
export type dataValueAccessor = (data: {
|
|
21
21
|
index: number;
|
|
22
22
|
}) => number | null;
|
|
23
23
|
export declare const TimestampStepMap: {
|
|
@@ -129,7 +129,7 @@ export declare function canApplyFeatureFilter(feature: Feature | null): boolean;
|
|
|
129
129
|
* @param param.index Index of the row in data container.
|
|
130
130
|
* @returns Returns true to keep the element, or false otherwise.
|
|
131
131
|
*/
|
|
132
|
-
|
|
132
|
+
type filterFunction = (data: {
|
|
133
133
|
index: number;
|
|
134
134
|
}) => boolean;
|
|
135
135
|
/**
|
|
@@ -294,7 +294,7 @@ export declare function filterDatasetCPU<T extends StateType<K, L>, K extends Ke
|
|
|
294
294
|
/**
|
|
295
295
|
* Validate parsed filters with datasets and add filterProps to field
|
|
296
296
|
*/
|
|
297
|
-
|
|
297
|
+
type MinVisStateForFilter = Pick<VisState, 'layers' | 'datasets' | 'isMergingDatasets'>;
|
|
298
298
|
export declare function validateFiltersUpdateDatasets<S extends MinVisStateForFilter, K extends KeplerTableModel<K, L>, L extends {
|
|
299
299
|
config: {
|
|
300
300
|
dataId: string | null;
|
package/dist/gl-utils.d.ts
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Convert layer blending config to deck.gl 9.x parameters format.
|
|
3
|
+
* In deck.gl 9.x, blending is set via `parameters` prop using WebGPU-style string constants
|
|
4
|
+
* instead of calling setParameters with GL constants.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getLayerBlendingParameters(layerBlending: string): Record<string, string | boolean>;
|
|
7
|
+
export declare function patchDeckRendererForPostProcessing(): void;
|