@kepler.gl/components 3.3.0-alpha.7 → 3.3.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/cjs/common/data-table/grid.js +2 -2
  2. package/dist/cjs/common/data-table/index.js +3 -3
  3. package/dist/cjs/common/file-uploader/file-upload.js +250 -40
  4. package/dist/cjs/common/icons/circle.js +54 -0
  5. package/dist/cjs/common/icons/index.js +8 -1
  6. package/dist/cjs/common/item-selector/item-selector.js +2 -2
  7. package/dist/cjs/common/portaled.js +3 -3
  8. package/dist/cjs/common/time-range-slider.js +2 -2
  9. package/dist/cjs/common/timeline-slider.js +2 -2
  10. package/dist/cjs/editor/editor.js +2 -2
  11. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
  12. package/dist/cjs/filters/time-widget.js +2 -2
  13. package/dist/cjs/map/layer-hover-info.js +2 -2
  14. package/dist/cjs/map/map-control.js +2 -2
  15. package/dist/cjs/map/map-draw-panel.js +10 -1
  16. package/dist/cjs/map-container.js +2 -2
  17. package/dist/cjs/map-view-state-context.js +3 -3
  18. package/dist/cjs/modal-container.js +2 -2
  19. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  20. package/dist/cjs/modals/cloud-tile.js +39 -10
  21. package/dist/cjs/modals/image-modal-container.js +2 -2
  22. package/dist/cjs/modals/load-data-modal.js +3 -3
  23. package/dist/cjs/modals/load-storage-map.js +9 -6
  24. package/dist/cjs/modals/save-map-modal.js +4 -3
  25. package/dist/cjs/modals/share-map-modal.js +5 -4
  26. package/dist/cjs/modals/swipe-export-video-preview.js +2 -2
  27. package/dist/cjs/plot-container.js +12 -5
  28. package/dist/cjs/side-panel/common/dataset-info.js +2 -2
  29. package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
  30. package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
  31. package/dist/common/icons/circle.d.ts +10 -0
  32. package/dist/common/icons/index.d.ts +1 -0
  33. package/dist/esm/common/data-table/grid.js +2 -2
  34. package/dist/esm/common/data-table/index.js +3 -3
  35. package/dist/esm/common/file-uploader/file-upload.js +251 -41
  36. package/dist/esm/common/icons/circle.js +48 -0
  37. package/dist/esm/common/icons/index.js +2 -1
  38. package/dist/esm/common/item-selector/item-selector.js +2 -2
  39. package/dist/esm/common/portaled.js +3 -3
  40. package/dist/esm/common/time-range-slider.js +2 -2
  41. package/dist/esm/common/timeline-slider.js +2 -2
  42. package/dist/esm/editor/editor.js +2 -2
  43. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
  44. package/dist/esm/filters/time-widget.js +2 -2
  45. package/dist/esm/map/layer-hover-info.js +2 -2
  46. package/dist/esm/map/map-control.js +2 -2
  47. package/dist/esm/map/map-draw-panel.js +11 -2
  48. package/dist/esm/map-container.js +2 -2
  49. package/dist/esm/map-view-state-context.js +3 -3
  50. package/dist/esm/modal-container.js +2 -2
  51. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  52. package/dist/esm/modals/cloud-tile.js +39 -10
  53. package/dist/esm/modals/image-modal-container.js +2 -2
  54. package/dist/esm/modals/load-data-modal.js +3 -3
  55. package/dist/esm/modals/load-storage-map.js +8 -3
  56. package/dist/esm/modals/save-map-modal.js +4 -3
  57. package/dist/esm/modals/share-map-modal.js +5 -4
  58. package/dist/esm/modals/swipe-export-video-preview.js +2 -2
  59. package/dist/esm/plot-container.js +12 -5
  60. package/dist/esm/side-panel/common/dataset-info.js +2 -2
  61. package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
  62. package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
  63. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  64. package/package.json +17 -18
@@ -1,3 +1,4 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
3
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
4
  import _createClass from "@babel/runtime/helpers/esm/createClass";
@@ -7,11 +8,14 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
7
8
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
8
9
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
9
10
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject0, _templateObject1, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;
11
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
10
12
  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; } } }; }
11
13
  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; } }
12
14
  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; }
13
15
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
14
16
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
19
  // SPDX-License-Identifier: MIT
16
20
  // Copyright contributors to the kepler.gl project
17
21
 
@@ -22,12 +26,13 @@ import UploadButton from './upload-button';
22
26
  import { DragNDrop, FileType } from '../icons';
23
27
  import FileUploadProgress from './file-upload-progress';
24
28
  import FileDrop from './file-drop';
25
- import { isChrome } from '@kepler.gl/utils';
26
- import { GUIDES_FILE_FORMAT_DOC } from '@kepler.gl/constants';
27
- import Markdown from 'markdown-to-jsx';
28
- // Breakpoints
29
+ import { GUIDES_FILE_FORMAT_DOC, REMOTE_FILE_FORMATS } from '@kepler.gl/constants';
29
30
  import { FormattedMessage } from '@kepler.gl/localization';
31
+ import { fetchRemoteFileAsKeplerFile, getFileNameForRemoteUrl, isRemoteDatasetUrl } from '@kepler.gl/processors';
30
32
  import { media } from '@kepler.gl/styles';
33
+ import { isChrome, getApplicationConfig } from '@kepler.gl/utils';
34
+ import Markdown from 'markdown-to-jsx';
35
+ import { Button, InputLight } from '../styled-components';
31
36
  import LinkRenderer from '../link-renderer';
32
37
  var fileIconColor = '#D3D8E0';
33
38
  var StyledUploadMessage = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 14px;\n margin-bottom: 12px;\n\n ", ";\n"])), function (props) {
@@ -36,22 +41,53 @@ var StyledUploadMessage = styled.div(_templateObject || (_templateObject = _tagg
36
41
  export var WarningMsg = styled.span(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin-top: 10px;\n color: ", ";\n font-weight: 500;\n"])), function (props) {
37
42
  return props.theme.errorColor;
38
43
  });
39
- var StyledFileDrop = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n background-color: white;\n border-radius: 4px;\n border-style: ", ";\n border-width: 1px;\n border-color: ", ";\n text-align: center;\n width: 100%;\n padding: 48px 8px 0;\n height: 360px;\n\n .file-upload-or {\n color: ", ";\n padding-right: 4px;\n }\n\n .file-type-row {\n opacity: 0.5;\n }\n ", ";\n"])), function (props) {
44
+ var StyledFileDrop = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n background-color: white;\n border-radius: 4px;\n border-style: ", ";\n border-width: 1px;\n border-color: ", ";\n text-align: center;\n width: 100%;\n min-height: 360px;\n padding: 24px 12px 16px;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .file-type-row {\n opacity: 0.5;\n }\n ", ";\n"])), function (props) {
40
45
  return props.$dragOver ? 'solid' : 'dashed';
41
46
  }, function (props) {
42
47
  return props.$dragOver ? props.theme.textColorLT : props.theme.subtextColorLT;
48
+ }, media.portable(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n padding: 16px 8px 12px;\n min-height: 280px;\n "]))));
49
+ var StyledDropBody = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n flex: 1;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-evenly;\n"])));
50
+ var StyledActionLine = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n\n .upload-button {\n font-size: 14px;\n font-weight: 600;\n color: ", ";\n text-decoration: none;\n }\n"])), function (props) {
51
+ return props.theme.modalTitleColor;
43
52
  }, function (props) {
44
53
  return props.theme.linkBtnColor;
45
- }, media.portable(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n padding: 16px 4px 0;\n "]))));
46
- var MsgWrapper = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 20px;\n height: 36px;\n"])), function (props) {
47
- return props.theme.modalTitleColor;
48
54
  });
49
- var StyledDragNDropIcon = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n color: ", ";\n margin-bottom: 48px;\n\n display: flex;\n justify-content: center;\n\n ", ";\n ", ";\n"])), fileIconColor, media.portable(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n margin-bottom: 16px;\n "]))), media.palm(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n margin-bottom: 8px;\n "]))));
50
- var StyledFileTypeFow = styled.div(_templateObject0 || (_templateObject0 = _taggedTemplateLiteral(["\n margin-bottom: 24px;\n ", ";\n ", ";\n"])), media.portable(_templateObject1 || (_templateObject1 = _taggedTemplateLiteral(["\n margin-bottom: 16px;\n "]))), media.palm(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n margin-bottom: 8px;\n "]))));
51
- var StyledFileUpload = styled.div(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n .file-drop {\n position: relative;\n }\n"])));
52
- var StyledMessage = styled.div(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 32px;\n\n .loading-action {\n margin-right: 10px;\n }\n .loading-spinner {\n margin-left: 10px;\n }\n"])));
53
- var StyledDragFileWrapper = styled.div(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n margin-bottom: 32px;\n ", ";\n ", ";\n"])), media.portable(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n margin-bottom: 24px;\n "]))), media.portable(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n margin-bottom: 16px;\n "]))));
54
- var StyledDisclaimer = styled(StyledMessage)(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n margin: 0 auto;\n"])));
55
+ var StyledDragNDropIcon = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n color: ", ";\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n"])), fileIconColor);
56
+ var StyledFileTypeFow = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n width: 100%;\n"])));
57
+ var StyledFileUpload = styled.div(_templateObject0 || (_templateObject0 = _taggedTemplateLiteral(["\n .file-drop {\n position: relative;\n }\n"])));
58
+ var StyledMessage = styled.div(_templateObject1 || (_templateObject1 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 32px;\n\n .loading-action {\n margin-right: 10px;\n }\n .loading-spinner {\n margin-left: 10px;\n }\n"])));
59
+ var StyledDragFileWrapper = styled.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n"])));
60
+ var StyledDisclaimer = styled(StyledMessage)(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n flex-shrink: 0;\n margin: 12px 12px 0;\n"])));
61
+ var StyledRemoteUrlForm = styled.div(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n width: 100%;\n max-width: 420px;\n margin: 8px auto 0;\n"])));
62
+ var StyledRemoteUrlRow = styled.div(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n gap: 8px;\n align-items: stretch;\n justify-content: center;\n width: 100%;\n"])));
63
+ var StyledRemoteUrlInput = styled(InputLight)(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n flex: 1;\n min-width: 0;\n max-width: 300px;\n"])));
64
+ var StyledRemoteFormatSelect = styled.select(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n ", ";\n width: 88px;\n flex-shrink: 0;\n height: auto;\n box-sizing: border-box;\n padding: 0 6px;\n cursor: pointer;\n"])), function (props) {
65
+ return props.theme.inputLT;
66
+ });
67
+ var StyledRemoteFetchButton = styled(Button)(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n height: auto;\n box-sizing: border-box;\n padding: 0 12px;\n flex-shrink: 0;\n"])));
68
+ var REMOTE_DOWNLOAD_SHARE = 0.85;
69
+ function scaleFileProgress(progress, start, end) {
70
+ return Object.keys(progress).reduce(function (accu, key) {
71
+ var item = progress[key];
72
+ accu[key] = _objectSpread(_objectSpread({}, item), {}, {
73
+ percent: start + (item.percent || 0) * (end - start)
74
+ });
75
+ return accu;
76
+ }, {});
77
+ }
78
+ function getCombinedLoadProgress(_ref) {
79
+ var fileLoading = _ref.fileLoading,
80
+ fileLoadingProgress = _ref.fileLoadingProgress,
81
+ remoteProgress = _ref.remoteProgress;
82
+ var isRemoteFetch = Object.keys(remoteProgress).length > 0;
83
+ if (!isRemoteFetch) {
84
+ return fileLoadingProgress;
85
+ }
86
+ if (fileLoading) {
87
+ return scaleFileProgress(fileLoadingProgress, REMOTE_DOWNLOAD_SHARE, 1);
88
+ }
89
+ return scaleFileProgress(remoteProgress, 0, REMOTE_DOWNLOAD_SHARE);
90
+ }
55
91
  function FileUploadFactory() {
56
92
  /** @augments {Component<FileUploadProps>} */
57
93
  var FileUpload = /*#__PURE__*/function (_Component) {
@@ -66,7 +102,12 @@ function FileUploadFactory() {
66
102
  dragOver: false,
67
103
  fileLoading: false,
68
104
  files: [],
69
- errorFiles: []
105
+ errorFiles: [],
106
+ remoteUrl: '',
107
+ remoteFormat: 'auto',
108
+ remoteError: null,
109
+ remoteLoading: false,
110
+ remoteProgress: {}
70
111
  });
71
112
  _defineProperty(_this, "frame", /*#__PURE__*/createRef());
72
113
  _defineProperty(_this, "_isValidFileType", function (filename) {
@@ -119,6 +160,122 @@ function FileUploadFactory() {
119
160
  dragOver: newState
120
161
  });
121
162
  });
163
+ _defineProperty(_this, "_onRemoteUrlChange", function (event) {
164
+ var remoteUrl = event.target.value;
165
+ _this.setState({
166
+ remoteUrl: remoteUrl,
167
+ remoteError: remoteUrl && !isRemoteDatasetUrl(remoteUrl) ? {
168
+ message: 'Incorrect URL'
169
+ } : null
170
+ });
171
+ });
172
+ _defineProperty(_this, "_onRemoteFormatChange", function (event) {
173
+ _this.setState({
174
+ remoteFormat: event.target.value
175
+ });
176
+ });
177
+ _defineProperty(_this, "_onRemoteUrlKeyDown", function (event) {
178
+ if (event.key === 'Enter') {
179
+ event.preventDefault();
180
+ _this._handleLoadRemoteFile();
181
+ }
182
+ });
183
+ _defineProperty(_this, "_handleLoadRemoteFile", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
184
+ var _this$state, remoteUrl, remoteFormat, remoteError, intl, showFormatSelector, format, fileName, downloading, lastUpdate, file;
185
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
186
+ while (1) switch (_context.prev = _context.next) {
187
+ case 0:
188
+ _this$state = _this.state, remoteUrl = _this$state.remoteUrl, remoteFormat = _this$state.remoteFormat, remoteError = _this$state.remoteError;
189
+ intl = _this.props.intl;
190
+ showFormatSelector = getApplicationConfig().enableRemoteFileFormatSelector;
191
+ format = showFormatSelector && remoteFormat !== 'auto' ? remoteFormat : undefined;
192
+ if (!(!remoteUrl || remoteError || _this.state.remoteLoading)) {
193
+ _context.next = 7;
194
+ break;
195
+ }
196
+ if (!remoteUrl) {
197
+ _this.setState({
198
+ remoteError: {
199
+ message: 'Incorrect URL'
200
+ }
201
+ });
202
+ }
203
+ return _context.abrupt("return");
204
+ case 7:
205
+ if (isRemoteDatasetUrl(remoteUrl)) {
206
+ _context.next = 10;
207
+ break;
208
+ }
209
+ _this.setState({
210
+ remoteError: {
211
+ message: 'Incorrect URL'
212
+ }
213
+ });
214
+ return _context.abrupt("return");
215
+ case 10:
216
+ fileName = getFileNameForRemoteUrl(remoteUrl, format);
217
+ downloading = intl.formatMessage({
218
+ id: 'fileUploader.downloading'
219
+ });
220
+ _this.setState({
221
+ remoteLoading: true,
222
+ remoteError: null,
223
+ remoteProgress: _defineProperty({}, fileName, {
224
+ fileName: fileName,
225
+ percent: 0,
226
+ message: downloading,
227
+ error: null
228
+ })
229
+ });
230
+ _context.prev = 13;
231
+ lastUpdate = 0;
232
+ _context.next = 17;
233
+ return fetchRemoteFileAsKeplerFile(remoteUrl, format, function (_ref3) {
234
+ var percent = _ref3.percent;
235
+ var now = Date.now();
236
+ if (percent < 1 && now - lastUpdate < 100) {
237
+ return;
238
+ }
239
+ lastUpdate = now;
240
+ _this.setState(function (prev) {
241
+ var name = Object.keys(prev.remoteProgress)[0] || fileName;
242
+ return {
243
+ remoteProgress: _defineProperty({}, name, {
244
+ fileName: name,
245
+ percent: percent,
246
+ message: downloading,
247
+ error: null
248
+ })
249
+ };
250
+ });
251
+ });
252
+ case 17:
253
+ file = _context.sent;
254
+ _this.setState({
255
+ files: [file],
256
+ errorFiles: [],
257
+ dragOver: false
258
+ }, function () {
259
+ return _this.props.onFileUpload([file]);
260
+ });
261
+ _context.next = 24;
262
+ break;
263
+ case 21:
264
+ _context.prev = 21;
265
+ _context.t0 = _context["catch"](13);
266
+ _this.setState({
267
+ remoteLoading: false,
268
+ remoteProgress: {},
269
+ remoteError: {
270
+ message: _context.t0 instanceof Error ? _context.t0.message : "Failed to load ".concat(remoteUrl)
271
+ }
272
+ });
273
+ case 24:
274
+ case "end":
275
+ return _context.stop();
276
+ }
277
+ }, _callee, null, [[13, 21]]);
278
+ })));
122
279
  return _this;
123
280
  }
124
281
  _inherits(FileUpload, _Component);
@@ -126,10 +283,15 @@ function FileUploadFactory() {
126
283
  key: "render",
127
284
  value: function render() {
128
285
  var _this2 = this;
129
- var _this$state = this.state,
130
- dragOver = _this$state.dragOver,
131
- files = _this$state.files,
132
- errorFiles = _this$state.errorFiles;
286
+ var _this$state2 = this.state,
287
+ dragOver = _this$state2.dragOver,
288
+ files = _this$state2.files,
289
+ errorFiles = _this$state2.errorFiles,
290
+ remoteUrl = _this$state2.remoteUrl,
291
+ remoteFormat = _this$state2.remoteFormat,
292
+ remoteError = _this$state2.remoteError,
293
+ remoteLoading = _this$state2.remoteLoading,
294
+ remoteProgress = _this$state2.remoteProgress;
133
295
  var _this$props = this.props,
134
296
  fileLoading = _this$props.fileLoading,
135
297
  fileLoadingProgress = _this$props.fileLoadingProgress,
@@ -140,6 +302,7 @@ function FileUploadFactory() {
140
302
  fileExtensions = _this$props2$fileExte === void 0 ? [] : _this$props2$fileExte,
141
303
  _this$props2$fileForm = _this$props2.fileFormatNames,
142
304
  fileFormatNames = _this$props2$fileForm === void 0 ? [] : _this$props2$fileForm;
305
+ var showFormatSelector = getApplicationConfig().enableRemoteFileFormatSelector;
143
306
  var fileUploadInfoText = "".concat(intl.formatMessage({
144
307
  id: 'fileUploader.configUploadMessage'
145
308
  }, {
@@ -172,7 +335,7 @@ function FileUploadFactory() {
172
335
  }
173
336
  }, fileUploadInfoText)), /*#__PURE__*/React.createElement(StyledFileDrop, {
174
337
  $dragOver: dragOver
175
- }, /*#__PURE__*/React.createElement(StyledFileTypeFow, {
338
+ }, /*#__PURE__*/React.createElement(StyledDropBody, null, /*#__PURE__*/React.createElement(StyledFileTypeFow, {
176
339
  className: "file-type-row"
177
340
  }, fileExtensions.map(function (ext) {
178
341
  return /*#__PURE__*/React.createElement(FileType, {
@@ -181,34 +344,77 @@ function FileUploadFactory() {
181
344
  height: "50px",
182
345
  fontSize: "9px"
183
346
  });
184
- })), fileLoading ? /*#__PURE__*/React.createElement(FileUploadProgress, {
185
- fileLoadingProgress: fileLoadingProgress,
347
+ })), fileLoading || remoteLoading ? /*#__PURE__*/React.createElement(FileUploadProgress, {
348
+ fileLoadingProgress: getCombinedLoadProgress({
349
+ fileLoading: fileLoading,
350
+ fileLoadingProgress: fileLoadingProgress,
351
+ remoteProgress: remoteProgress
352
+ }),
186
353
  theme: theme
187
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
354
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledDragNDropIcon, {
188
355
  style: {
189
356
  opacity: dragOver ? 0.5 : 1
190
357
  },
191
358
  className: "file-upload-display-message"
192
- }, /*#__PURE__*/React.createElement(StyledDragNDropIcon, null, /*#__PURE__*/React.createElement(DragNDrop, {
193
- height: "44px"
194
- })), errorFiles.length ? /*#__PURE__*/React.createElement(WarningMsg, null, /*#__PURE__*/React.createElement(FormattedMessage, {
359
+ }, /*#__PURE__*/React.createElement(DragNDrop, {
360
+ height: "36px"
361
+ }), errorFiles.length ? /*#__PURE__*/React.createElement(WarningMsg, null, /*#__PURE__*/React.createElement(FormattedMessage, {
195
362
  id: 'fileUploader.fileNotSupported',
196
363
  values: {
197
364
  errorFiles: errorFiles.join(', ')
198
365
  }
199
- })) : null), !files.length ? /*#__PURE__*/React.createElement(StyledDragFileWrapper, null, /*#__PURE__*/React.createElement(MsgWrapper, null, /*#__PURE__*/React.createElement(FormattedMessage, {
200
- id: 'fileUploader.message'
201
- })), /*#__PURE__*/React.createElement("span", {
202
- className: "file-upload-or"
203
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
204
- id: 'fileUploader.or'
205
- })), /*#__PURE__*/React.createElement(UploadButton, {
206
- onUpload: this._handleFileInput
366
+ })) : null), !files.length ? /*#__PURE__*/React.createElement(StyledDragFileWrapper, null, /*#__PURE__*/React.createElement(StyledActionLine, null, /*#__PURE__*/React.createElement(FormattedMessage, {
367
+ id: 'fileUploader.dropMessage',
368
+ values: {
369
+ browse: /*#__PURE__*/React.createElement(UploadButton, {
370
+ key: "browse",
371
+ onUpload: this._handleFileInput
372
+ }, intl.formatMessage({
373
+ id: 'fileUploader.browseFiles'
374
+ }))
375
+ }
376
+ })), /*#__PURE__*/React.createElement(StyledRemoteUrlForm, {
377
+ className: "file-uploader__remote-url",
378
+ onClick: function onClick(event) {
379
+ return event.stopPropagation();
380
+ }
381
+ }, /*#__PURE__*/React.createElement(StyledRemoteUrlRow, null, /*#__PURE__*/React.createElement(StyledRemoteUrlInput, {
382
+ type: "url",
383
+ value: remoteUrl,
384
+ "aria-label": intl.formatMessage({
385
+ id: 'fileUploader.urlPlaceholder'
386
+ }),
387
+ placeholder: intl.formatMessage({
388
+ id: 'fileUploader.urlPlaceholder'
389
+ }),
390
+ onChange: this._onRemoteUrlChange,
391
+ onKeyDown: this._onRemoteUrlKeyDown,
392
+ disabled: remoteLoading
393
+ }), showFormatSelector ? /*#__PURE__*/React.createElement(StyledRemoteFormatSelect, {
394
+ "aria-label": intl.formatMessage({
395
+ id: 'fileUploader.format'
396
+ }),
397
+ value: remoteFormat,
398
+ onChange: this._onRemoteFormatChange,
399
+ disabled: remoteLoading
400
+ }, REMOTE_FILE_FORMATS.map(function (format) {
401
+ return /*#__PURE__*/React.createElement("option", {
402
+ key: format,
403
+ value: format
404
+ }, format === 'auto' ? intl.formatMessage({
405
+ id: 'fileUploader.formatAuto'
406
+ }) : format.toUpperCase());
407
+ })) : null, /*#__PURE__*/React.createElement(StyledRemoteFetchButton, {
408
+ type: "button",
409
+ cta: true,
410
+ small: true,
411
+ disabled: !remoteUrl || remoteLoading,
412
+ onClick: this._handleLoadRemoteFile
207
413
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
208
- id: 'fileUploader.browseFiles'
209
- }))) : null, /*#__PURE__*/React.createElement(StyledDisclaimer, null, /*#__PURE__*/React.createElement(FormattedMessage, {
414
+ id: 'fileUploader.fetch'
415
+ }))), remoteError ? /*#__PURE__*/React.createElement(WarningMsg, null, remoteError.message) : null)) : null)), fileLoading || remoteLoading ? null : /*#__PURE__*/React.createElement(StyledDisclaimer, null, /*#__PURE__*/React.createElement(FormattedMessage, {
210
416
  id: 'fileUploader.disclaimer'
211
- }))))) : null, /*#__PURE__*/React.createElement(WarningMsg, null, isChrome() ? /*#__PURE__*/React.createElement(FormattedMessage, {
417
+ })))) : null, /*#__PURE__*/React.createElement(WarningMsg, null, isChrome() ? /*#__PURE__*/React.createElement(FormattedMessage, {
212
418
  id: 'fileUploader.chromeMessage'
213
419
  }) : ''));
214
420
  }
@@ -218,12 +424,16 @@ function FileUploadFactory() {
218
424
  if (state.fileLoading && props.fileLoading === false && state.files.length) {
219
425
  return {
220
426
  files: [],
221
- fileLoading: props.fileLoading
427
+ fileLoading: props.fileLoading,
428
+ remoteLoading: false,
429
+ remoteProgress: {}
222
430
  };
223
431
  }
224
- return {
432
+ return _objectSpread({
225
433
  fileLoading: props.fileLoading
226
- };
434
+ }, props.fileLoading ? {
435
+ remoteLoading: false
436
+ } : {});
227
437
  }
228
438
  }]);
229
439
  }(Component);
@@ -231,4 +441,4 @@ function FileUploadFactory() {
231
441
  }
232
442
  export default FileUploadFactory;
233
443
  export var FileUpload = FileUploadFactory();
234
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZVJlZiIsInN0eWxlZCIsImluamVjdEludGwiLCJVcGxvYWRCdXR0b24iLCJEcmFnTkRyb3AiLCJGaWxlVHlwZSIsIkZpbGVVcGxvYWRQcm9ncmVzcyIsIkZpbGVEcm9wIiwiaXNDaHJvbWUiLCJHVUlERVNfRklMRV9GT1JNQVRfRE9DIiwiTWFya2Rvd24iLCJGb3JtYXR0ZWRNZXNzYWdlIiwibWVkaWEiLCJMaW5rUmVuZGVyZXIiLCJmaWxlSWNvbkNvbG9yIiwiU3R5bGVkVXBsb2FkTWVzc2FnZSIsImRpdiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yTFQiLCJwb3J0YWJsZSIsIl90ZW1wbGF0ZU9iamVjdDIiLCJXYXJuaW5nTXNnIiwic3BhbiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJlcnJvckNvbG9yIiwiU3R5bGVkRmlsZURyb3AiLCJfdGVtcGxhdGVPYmplY3Q0IiwiJGRyYWdPdmVyIiwic3VidGV4dENvbG9yTFQiLCJsaW5rQnRuQ29sb3IiLCJfdGVtcGxhdGVPYmplY3Q1IiwiTXNnV3JhcHBlciIsIl90ZW1wbGF0ZU9iamVjdDYiLCJtb2RhbFRpdGxlQ29sb3IiLCJTdHlsZWREcmFnTkRyb3BJY29uIiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJwYWxtIiwiX3RlbXBsYXRlT2JqZWN0OSIsIlN0eWxlZEZpbGVUeXBlRm93IiwiX3RlbXBsYXRlT2JqZWN0MCIsIl90ZW1wbGF0ZU9iamVjdDEiLCJfdGVtcGxhdGVPYmplY3QxMCIsIlN0eWxlZEZpbGVVcGxvYWQiLCJfdGVtcGxhdGVPYmplY3QxMSIsIlN0eWxlZE1lc3NhZ2UiLCJfdGVtcGxhdGVPYmplY3QxMiIsIlN0eWxlZERyYWdGaWxlV3JhcHBlciIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiX3RlbXBsYXRlT2JqZWN0MTQiLCJfdGVtcGxhdGVPYmplY3QxNSIsIlN0eWxlZERpc2NsYWltZXIiLCJfdGVtcGxhdGVPYmplY3QxNiIsIkZpbGVVcGxvYWRGYWN0b3J5IiwiRmlsZVVwbG9hZCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImRyYWdPdmVyIiwiZmlsZUxvYWRpbmciLCJmaWxlcyIsImVycm9yRmlsZXMiLCJmaWxlbmFtZSIsIl90aGlzJHByb3BzJGZpbGVFeHRlbiIsImZpbGVFeHRlbnNpb25zIiwiZmlsZUV4dCIsImZpbmQiLCJleHQiLCJlbmRzV2l0aCIsIkJvb2xlYW4iLCJmaWxlTGlzdCIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmlsdGVyIiwiX3RoaXMkcHJvcHMkZGlzYWJsZUV4IiwiZGlzYWJsZUV4dGVuc2lvbkZpbHRlciIsImZpbGVzVG9Mb2FkIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImZpbGUiLCJ2YWx1ZSIsIl9pc1ZhbGlkRmlsZVR5cGUiLCJuYW1lIiwicHVzaCIsImVyciIsImUiLCJmIiwibmV4dFN0YXRlIiwic2V0U3RhdGUiLCJvbkZpbGVVcGxvYWQiLCJuZXdTdGF0ZSIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHN0YXRlIiwic3RhdGUiLCJfdGhpcyRwcm9wcyIsImZpbGVMb2FkaW5nUHJvZ3Jlc3MiLCJpbnRsIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMyJGZpbGVFeHRlIiwiX3RoaXMkcHJvcHMyJGZpbGVGb3JtIiwiZmlsZUZvcm1hdE5hbWVzIiwiZmlsZVVwbG9hZEluZm9UZXh0IiwiZm9ybWF0TWVzc2FnZSIsImlkIiwibWFwIiwiZm9ybWF0Iiwiam9pbiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJyZWYiLCJmcmFtZSIsImN1cnJlbnQiLCJkb2N1bWVudCIsIm9uRHJhZ092ZXIiLCJfdG9nZ2xlRHJhZ1N0YXRlIiwib25EcmFnTGVhdmUiLCJvbkRyb3AiLCJfaGFuZGxlRmlsZUlucHV0Iiwib3B0aW9ucyIsIm92ZXJyaWRlcyIsImEiLCJjb21wb25lbnQiLCJoZWlnaHQiLCJmb250U2l6ZSIsIkZyYWdtZW50Iiwic3R5bGUiLCJvcGFjaXR5IiwidmFsdWVzIiwib25VcGxvYWQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2ZpbGUtdXBsb2FkZXIvZmlsZS11cGxvYWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7aW5qZWN0SW50bCwgV3JhcHBlZENvbXBvbmVudFByb3BzfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBVcGxvYWRCdXR0b24gZnJvbSAnLi91cGxvYWQtYnV0dG9uJztcbmltcG9ydCB7RHJhZ05Ecm9wLCBGaWxlVHlwZX0gZnJvbSAnLi4vaWNvbnMnO1xuaW1wb3J0IEZpbGVVcGxvYWRQcm9ncmVzcyBmcm9tICcuL2ZpbGUtdXBsb2FkLXByb2dyZXNzJztcbmltcG9ydCBGaWxlRHJvcCBmcm9tICcuL2ZpbGUtZHJvcCc7XG5pbXBvcnQge0ZpbGVMb2FkaW5nLCBGaWxlTG9hZGluZ1Byb2dyZXNzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtpc0Nocm9tZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0dVSURFU19GSUxFX0ZPUk1BVF9ET0N9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBNYXJrZG93biBmcm9tICdtYXJrZG93bi10by1qc3gnO1xuLy8gQnJlYWtwb2ludHNcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHttZWRpYX0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuXG5pbXBvcnQgTGlua1JlbmRlcmVyIGZyb20gJy4uL2xpbmstcmVuZGVyZXInO1xuXG5jb25zdCBmaWxlSWNvbkNvbG9yID0gJyNEM0Q4RTAnO1xuXG5jb25zdCBTdHlsZWRVcGxvYWRNZXNzYWdlID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICBmb250LXNpemU6IDE0cHg7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG5cbiAgJHttZWRpYS5wb3J0YWJsZWBcbiAgICBmb250LXNpemU6IDEycHg7XG4gIGB9O1xuYDtcblxuZXhwb3J0IGNvbnN0IFdhcm5pbmdNc2cgPSBzdHlsZWQuc3BhbmBcbiAgbWFyZ2luLXRvcDogMTBweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZXJyb3JDb2xvcn07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkRmlsZURyb3BQcm9wcyB7XG4gICRkcmFnT3Zlcj86IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZEZpbGVEcm9wID0gc3R5bGVkLmRpdjxTdHlsZWRGaWxlRHJvcFByb3BzPmBcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyLXN0eWxlOiAke3Byb3BzID0+IChwcm9wcy4kZHJhZ092ZXIgPyAnc29saWQnIDogJ2Rhc2hlZCcpfTtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuJGRyYWdPdmVyID8gcHJvcHMudGhlbWUudGV4dENvbG9yTFQgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JMVCl9O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA0OHB4IDhweCAwO1xuICBoZWlnaHQ6IDM2MHB4O1xuXG4gIC5maWxlLXVwbG9hZC1vciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGlua0J0bkNvbG9yfTtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gIH1cblxuICAuZmlsZS10eXBlLXJvdyB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgcGFkZGluZzogMTZweCA0cHggMDtcbiAgYH07XG5gO1xuXG5jb25zdCBNc2dXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxUaXRsZUNvbG9yfTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBoZWlnaHQ6IDM2cHg7XG5gO1xuXG5jb25zdCBTdHlsZWREcmFnTkRyb3BJY29uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7ZmlsZUljb25Db2xvcn07XG4gIG1hcmdpbi1ib3R0b206IDQ4cHg7XG5cbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgJHttZWRpYS5wb3J0YWJsZWBcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBgfTtcbiAgJHttZWRpYS5wYWxtYFxuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgYH07XG5gO1xuXG5jb25zdCBTdHlsZWRGaWxlVHlwZUZvdyA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgYH07XG4gICR7bWVkaWEucGFsbWBcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIGB9O1xuYDtcblxuY29uc3QgU3R5bGVkRmlsZVVwbG9hZCA9IHN0eWxlZC5kaXZgXG4gIC5maWxlLWRyb3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAzMnB4O1xuXG4gIC5sb2FkaW5nLWFjdGlvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG4gIC5sb2FkaW5nLXNwaW5uZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWREcmFnRmlsZVdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tYm90dG9tOiAzMnB4O1xuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIGB9O1xuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGB9O1xuYDtcblxuY29uc3QgU3R5bGVkRGlzY2xhaW1lciA9IHN0eWxlZChTdHlsZWRNZXNzYWdlKWBcbiAgbWFyZ2luOiAwIGF1dG87XG5gO1xuXG50eXBlIEZpbGVVcGxvYWRQcm9wcyA9IHtcbiAgb25GaWxlVXBsb2FkOiAoZmlsZXM6IEZpbGVbXSkgPT4gdm9pZDtcbiAgZmlsZUxvYWRpbmc6IEZpbGVMb2FkaW5nIHwgZmFsc2U7XG4gIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IEZpbGVMb2FkaW5nUHJvZ3Jlc3M7XG4gIHRoZW1lOiBvYmplY3Q7XG4gIC8qKiBBIGxpc3Qgb2YgbmFtZXMgb2Ygc3VwcG9ydGVkIGZvcm1hdHMgc3VpdGFibGUgdG8gcHJlc2VudCB0byB1c2VyICovXG4gIGZpbGVGb3JtYXROYW1lcz86IHN0cmluZ1tdO1xuICAvKiogQSBsaXN0IG9mIHR5cGljYWxseSAzIGxldHRlciBleHRlbnNpb25zICh3aXRob3V0ICcuJykgZm9yIGZpbGUgbWF0Y2hpbmcgKi9cbiAgZmlsZUV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIFNldCB0byB0cnVlIGlmIGFwcCB3YW50cyB0byBkbyBpdHMgb3duIGZpbGUgZmlsdGVyaW5nICovXG4gIGRpc2FibGVFeHRlbnNpb25GaWx0ZXI/OiBib29sZWFuO1xufSAmIFdyYXBwZWRDb21wb25lbnRQcm9wcztcblxuZnVuY3Rpb24gRmlsZVVwbG9hZEZhY3RvcnkoKSB7XG4gIC8qKiBAYXVnbWVudHMge0NvbXBvbmVudDxGaWxlVXBsb2FkUHJvcHM+fSAqL1xuICBjbGFzcyBGaWxlVXBsb2FkIGV4dGVuZHMgQ29tcG9uZW50PEZpbGVVcGxvYWRQcm9wcz4ge1xuICAgIHN0YXRlID0ge1xuICAgICAgZHJhZ092ZXI6IGZhbHNlLFxuICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlLFxuICAgICAgZmlsZXM6IFtdLFxuICAgICAgZXJyb3JGaWxlczogW11cbiAgICB9O1xuXG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIGlmIChzdGF0ZS5maWxlTG9hZGluZyAmJiBwcm9wcy5maWxlTG9hZGluZyA9PT0gZmFsc2UgJiYgc3RhdGUuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICAgIGZpbGVMb2FkaW5nOiBwcm9wcy5maWxlTG9hZGluZ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmlsZUxvYWRpbmc6IHByb3BzLmZpbGVMb2FkaW5nXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZyYW1lID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gICAgX2lzVmFsaWRGaWxlVHlwZSA9IGZpbGVuYW1lID0+IHtcbiAgICAgIGNvbnN0IHtmaWxlRXh0ZW5zaW9ucyA9IFtdfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBmaWxlRXh0ID0gZmlsZUV4dGVuc2lvbnMuZmluZChleHQgPT4gZmlsZW5hbWUuZW5kc1dpdGgoZXh0KSk7XG5cbiAgICAgIHJldHVybiBCb29sZWFuKGZpbGVFeHQpO1xuICAgIH07XG5cbiAgICAvKiogQHBhcmFtIHtGaWxlTGlzdH0gZmlsZUxpc3QgKi9cbiAgICBfaGFuZGxlRmlsZUlucHV0ID0gKGZpbGVMaXN0OiBGaWxlTGlzdCwgZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlcyA9IFsuLi5maWxlTGlzdF0uZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICBjb25zdCB7ZGlzYWJsZUV4dGVuc2lvbkZpbHRlciA9IGZhbHNlfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIC8vIFRPRE8gLSBtb3ZlIHRoaXMgY29kZSBvdXQgb2YgdGhlIGNvbXBvbmVudFxuICAgICAgY29uc3QgZmlsZXNUb0xvYWQ6IEZpbGVbXSA9IFtdO1xuICAgICAgY29uc3QgZXJyb3JGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoZGlzYWJsZUV4dGVuc2lvbkZpbHRlciB8fCB0aGlzLl9pc1ZhbGlkRmlsZVR5cGUoZmlsZS5uYW1lKSkge1xuICAgICAgICAgIGZpbGVzVG9Mb2FkLnB1c2goZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3JGaWxlcy5wdXNoKGZpbGUubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dFN0YXRlID0ge2ZpbGVzOiBmaWxlc1RvTG9hZCwgZXJyb3JGaWxlcywgZHJhZ092ZXI6IGZhbHNlfTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUsICgpID0+XG4gICAgICAgIG5leHRTdGF0ZS5maWxlcy5sZW5ndGggPyB0aGlzLnByb3BzLm9uRmlsZVVwbG9hZChuZXh0U3RhdGUuZmlsZXMpIDogbnVsbFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgX3RvZ2dsZURyYWdTdGF0ZSA9IG5ld1N0YXRlID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2RyYWdPdmVyOiBuZXdTdGF0ZX0pO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7ZHJhZ092ZXIsIGZpbGVzLCBlcnJvckZpbGVzfSA9IHRoaXMuc3RhdGU7XG4gICAgICBjb25zdCB7ZmlsZUxvYWRpbmcsIGZpbGVMb2FkaW5nUHJvZ3Jlc3MsIHRoZW1lLCBpbnRsfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7ZmlsZUV4dGVuc2lvbnMgPSBbXSwgZmlsZUZvcm1hdE5hbWVzID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGZpbGVVcGxvYWRJbmZvVGV4dCA9IGAke2ludGwuZm9ybWF0TWVzc2FnZShcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnZmlsZVVwbG9hZGVyLmNvbmZpZ1VwbG9hZE1lc3NhZ2UnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlRm9ybWF0TmFtZXM6IGZpbGVGb3JtYXROYW1lcy5tYXAoZm9ybWF0ID0+IGAqKiR7Zm9ybWF0fSoqYCkuam9pbignLCAnKVxuICAgICAgICB9XG4gICAgICApfSgke0dVSURFU19GSUxFX0ZPUk1BVF9ET0N9KS5gO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZEZpbGVVcGxvYWQgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRlclwiIHJlZj17dGhpcy5mcmFtZX0+XG4gICAgICAgICAge0ZpbGVEcm9wID8gKFxuICAgICAgICAgICAgPEZpbGVEcm9wXG4gICAgICAgICAgICAgIGZyYW1lPXt0aGlzLmZyYW1lLmN1cnJlbnQgfHwgZG9jdW1lbnR9XG4gICAgICAgICAgICAgIG9uRHJhZ092ZXI9eygpID0+IHRoaXMuX3RvZ2dsZURyYWdTdGF0ZSh0cnVlKX1cbiAgICAgICAgICAgICAgb25EcmFnTGVhdmU9eygpID0+IHRoaXMuX3RvZ2dsZURyYWdTdGF0ZShmYWxzZSl9XG4gICAgICAgICAgICAgIG9uRHJvcD17dGhpcy5faGFuZGxlRmlsZUlucHV0fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWxlLXVwbG9hZGVyX19maWxlLWRyb3BcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3R5bGVkVXBsb2FkTWVzc2FnZSBjbGFzc05hbWU9XCJmaWxlLXVwbG9hZF9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxNYXJrZG93blxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17e1xuICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IExpbmtSZW5kZXJlclxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7ZmlsZVVwbG9hZEluZm9UZXh0fVxuICAgICAgICAgICAgICAgIDwvTWFya2Rvd24+XG4gICAgICAgICAgICAgIDwvU3R5bGVkVXBsb2FkTWVzc2FnZT5cbiAgICAgICAgICAgICAgPFN0eWxlZEZpbGVEcm9wICRkcmFnT3Zlcj17ZHJhZ092ZXJ9PlxuICAgICAgICAgICAgICAgIDxTdHlsZWRGaWxlVHlwZUZvdyBjbGFzc05hbWU9XCJmaWxlLXR5cGUtcm93XCI+XG4gICAgICAgICAgICAgICAgICB7ZmlsZUV4dGVuc2lvbnMubWFwKGV4dCA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxGaWxlVHlwZSBrZXk9e2V4dH0gZXh0PXtleHR9IGhlaWdodD1cIjUwcHhcIiBmb250U2l6ZT1cIjlweFwiIC8+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L1N0eWxlZEZpbGVUeXBlRm93PlxuICAgICAgICAgICAgICAgIHtmaWxlTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgIDxGaWxlVXBsb2FkUHJvZ3Jlc3MgZmlsZUxvYWRpbmdQcm9ncmVzcz17ZmlsZUxvYWRpbmdQcm9ncmVzc30gdGhlbWU9e3RoZW1lfSAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tvcGFjaXR5OiBkcmFnT3ZlciA/IDAuNSA6IDF9fVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpbGUtdXBsb2FkLWRpc3BsYXktbWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkRHJhZ05Ecm9wSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEcmFnTkRyb3AgaGVpZ2h0PVwiNDRweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWREcmFnTkRyb3BJY29uPlxuXG4gICAgICAgICAgICAgICAgICAgICAge2Vycm9yRmlsZXMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFdhcm5pbmdNc2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydmaWxlVXBsb2FkZXIuZmlsZU5vdFN1cHBvcnRlZCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7ZXJyb3JGaWxlczogZXJyb3JGaWxlcy5qb2luKCcsICcpfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvV2FybmluZ01zZz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHshZmlsZXMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWREcmFnRmlsZVdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TXNnV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydmaWxlVXBsb2FkZXIubWVzc2FnZSd9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01zZ1dyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmaWxlLXVwbG9hZC1vclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2ZpbGVVcGxvYWRlci5vcid9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VXBsb2FkQnV0dG9uIG9uVXBsb2FkPXt0aGlzLl9oYW5kbGVGaWxlSW5wdXR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2ZpbGVVcGxvYWRlci5icm93c2VGaWxlcyd9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1VwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZERyYWdGaWxlV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZERpc2NsYWltZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydmaWxlVXBsb2FkZXIuZGlzY2xhaW1lcid9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRGlzY2xhaW1lcj5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU3R5bGVkRmlsZURyb3A+XG4gICAgICAgICAgICA8L0ZpbGVEcm9wPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFdhcm5pbmdNc2c+XG4gICAgICAgICAgICB7aXNDaHJvbWUoKSA/IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnZmlsZVVwbG9hZGVyLmNocm9tZU1lc3NhZ2UnfSAvPiA6ICcnfVxuICAgICAgICAgIDwvV2FybmluZ01zZz5cbiAgICAgICAgPC9TdHlsZWRGaWxlVXBsb2FkPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5qZWN0SW50bChGaWxlVXBsb2FkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRmlsZVVwbG9hZEZhY3Rvcnk7XG5leHBvcnQgY29uc3QgRmlsZVVwbG9hZCA9IEZpbGVVcGxvYWRGYWN0b3J5KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPQSxLQUFLLElBQUdDLFNBQVMsRUFBRUMsU0FBUyxRQUFPLE9BQU87QUFDakQsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxTQUFRQyxVQUFVLFFBQThCLFlBQVk7QUFDNUQsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUMxQyxTQUFRQyxTQUFTLEVBQUVDLFFBQVEsUUFBTyxVQUFVO0FBQzVDLE9BQU9DLGtCQUFrQixNQUFNLHdCQUF3QjtBQUN2RCxPQUFPQyxRQUFRLE1BQU0sYUFBYTtBQUdsQyxTQUFRQyxRQUFRLFFBQU8sa0JBQWtCO0FBQ3pDLFNBQVFDLHNCQUFzQixRQUFPLHNCQUFzQjtBQUMzRCxPQUFPQyxRQUFRLE1BQU0saUJBQWlCO0FBQ3RDO0FBQ0EsU0FBUUMsZ0JBQWdCLFFBQU8seUJBQXlCO0FBQ3hELFNBQVFDLEtBQUssUUFBTyxtQkFBbUI7QUFFdkMs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
444
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZVJlZiIsInN0eWxlZCIsImluamVjdEludGwiLCJVcGxvYWRCdXR0b24iLCJEcmFnTkRyb3AiLCJGaWxlVHlwZSIsIkZpbGVVcGxvYWRQcm9ncmVzcyIsIkZpbGVEcm9wIiwiR1VJREVTX0ZJTEVfRk9STUFUX0RPQyIsIlJFTU9URV9GSUxFX0ZPUk1BVFMiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiZmV0Y2hSZW1vdGVGaWxlQXNLZXBsZXJGaWxlIiwiZ2V0RmlsZU5hbWVGb3JSZW1vdGVVcmwiLCJpc1JlbW90ZURhdGFzZXRVcmwiLCJtZWRpYSIsImlzQ2hyb21lIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJNYXJrZG93biIsIkJ1dHRvbiIsIklucHV0TGlnaHQiLCJMaW5rUmVuZGVyZXIiLCJmaWxlSWNvbkNvbG9yIiwiU3R5bGVkVXBsb2FkTWVzc2FnZSIsImRpdiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yTFQiLCJwb3J0YWJsZSIsIl90ZW1wbGF0ZU9iamVjdDIiLCJXYXJuaW5nTXNnIiwic3BhbiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJlcnJvckNvbG9yIiwiU3R5bGVkRmlsZURyb3AiLCJfdGVtcGxhdGVPYmplY3Q0IiwiJGRyYWdPdmVyIiwic3VidGV4dENvbG9yTFQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiU3R5bGVkRHJvcEJvZHkiLCJfdGVtcGxhdGVPYmplY3Q2IiwiU3R5bGVkQWN0aW9uTGluZSIsIl90ZW1wbGF0ZU9iamVjdDciLCJtb2RhbFRpdGxlQ29sb3IiLCJsaW5rQnRuQ29sb3IiLCJTdHlsZWREcmFnTkRyb3BJY29uIiwiX3RlbXBsYXRlT2JqZWN0OCIsIlN0eWxlZEZpbGVUeXBlRm93IiwiX3RlbXBsYXRlT2JqZWN0OSIsIlN0eWxlZEZpbGVVcGxvYWQiLCJfdGVtcGxhdGVPYmplY3QwIiwiU3R5bGVkTWVzc2FnZSIsIl90ZW1wbGF0ZU9iamVjdDEiLCJTdHlsZWREcmFnRmlsZVdyYXBwZXIiLCJfdGVtcGxhdGVPYmplY3QxMCIsIlN0eWxlZERpc2NsYWltZXIiLCJfdGVtcGxhdGVPYmplY3QxMSIsIlN0eWxlZFJlbW90ZVVybEZvcm0iLCJfdGVtcGxhdGVPYmplY3QxMiIsIlN0eWxlZFJlbW90ZVVybFJvdyIsIl90ZW1wbGF0ZU9iamVjdDEzIiwiU3R5bGVkUmVtb3RlVXJsSW5wdXQiLCJfdGVtcGxhdGVPYmplY3QxNCIsIlN0eWxlZFJlbW90ZUZvcm1hdFNlbGVjdCIsInNlbGVjdCIsIl90ZW1wbGF0ZU9iamVjdDE1IiwiaW5wdXRMVCIsIlN0eWxlZFJlbW90ZUZldGNoQnV0dG9uIiwiX3RlbXBsYXRlT2JqZWN0MTYiLCJSRU1PVEVfRE9XTkxPQURfU0hBUkUiLCJzY2FsZUZpbGVQcm9ncmVzcyIsInByb2dyZXNzIiwic3RhcnQiLCJlbmQiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwiYWNjdSIsImtleSIsIml0ZW0iLCJfb2JqZWN0U3ByZWFkIiwicGVyY2VudCIsImdldENvbWJpbmVkTG9hZFByb2dyZXNzIiwiX3JlZiIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInJlbW90ZVByb2dyZXNzIiwiaXNSZW1vdGVGZXRjaCIsImxlbmd0aCIsIkZpbGVVcGxvYWRGYWN0b3J5IiwiRmlsZVVwbG9hZCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImRyYWdPdmVyIiwiZmlsZXMiLCJlcnJvckZpbGVzIiwicmVtb3RlVXJsIiwicmVtb3RlRm9ybWF0IiwicmVtb3RlRXJyb3IiLCJyZW1vdGVMb2FkaW5nIiwiZmlsZW5hbWUiLCJfdGhpcyRwcm9wcyRmaWxlRXh0ZW4iLCJmaWxlRXh0ZW5zaW9ucyIsImZpbGVFeHQiLCJmaW5kIiwiZXh0IiwiZW5kc1dpdGgiLCJCb29sZWFuIiwiZmlsZUxpc3QiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsIl90b0NvbnN1bWFibGVBcnJheSIsImZpbHRlciIsIl90aGlzJHByb3BzJGRpc2FibGVFeCIsImRpc2FibGVFeHRlbnNpb25GaWx0ZXIiLCJmaWxlc1RvTG9hZCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJmaWxlIiwidmFsdWUiLCJfaXNWYWxpZEZpbGVUeXBlIiwibmFtZSIsInB1c2giLCJlcnIiLCJlIiwiZiIsIm5leHRTdGF0ZSIsInNldFN0YXRlIiwib25GaWxlVXBsb2FkIiwibmV3U3RhdGUiLCJ0YXJnZXQiLCJtZXNzYWdlIiwicHJldmVudERlZmF1bHQiLCJfaGFuZGxlTG9hZFJlbW90ZUZpbGUiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl90aGlzJHN0YXRlIiwiaW50bCIsInNob3dGb3JtYXRTZWxlY3RvciIsImZvcm1hdCIsImZpbGVOYW1lIiwiZG93bmxvYWRpbmciLCJsYXN0VXBkYXRlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0YXRlIiwiZW5hYmxlUmVtb3RlRmlsZUZvcm1hdFNlbGVjdG9yIiwidW5kZWZpbmVkIiwiYWJydXB0IiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiZXJyb3IiLCJfcmVmMyIsIm5vdyIsIkRhdGUiLCJzZW50IiwidDAiLCJFcnJvciIsInN0b3AiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRzdGF0ZTIiLCJfdGhpcyRwcm9wcyIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzMiRmaWxlRXh0ZSIsIl90aGlzJHByb3BzMiRmaWxlRm9ybSIsImZpbGVGb3JtYXROYW1lcyIsImZpbGVVcGxvYWRJbmZvVGV4dCIsIm1hcCIsImpvaW4iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwicmVmIiwiZnJhbWUiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJvbkRyYWdPdmVyIiwiX3RvZ2dsZURyYWdTdGF0ZSIsIm9uRHJhZ0xlYXZlIiwib25Ecm9wIiwiX2hhbmRsZUZpbGVJbnB1dCIsIm9wdGlvbnMiLCJvdmVycmlkZXMiLCJhIiwiY29tcG9uZW50IiwiaGVpZ2h0IiwiZm9udFNpemUiLCJGcmFnbWVudCIsInN0eWxlIiwib3BhY2l0eSIsInZhbHVlcyIsImJyb3dzZSIsIm9uVXBsb2FkIiwib25DbGljayIsInR5cGUiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiX29uUmVtb3RlVXJsQ2hhbmdlIiwib25LZXlEb3duIiwiX29uUmVtb3RlVXJsS2V5RG93biIsImRpc2FibGVkIiwiX29uUmVtb3RlRm9ybWF0Q2hhbmdlIiwidG9VcHBlckNhc2UiLCJjdGEiLCJzbWFsbCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtpbmplY3RJbnRsLCBXcmFwcGVkQ29tcG9uZW50UHJvcHN9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IFVwbG9hZEJ1dHRvbiBmcm9tICcuL3VwbG9hZC1idXR0b24nO1xuaW1wb3J0IHtEcmFnTkRyb3AsIEZpbGVUeXBlfSBmcm9tICcuLi9pY29ucyc7XG5pbXBvcnQgRmlsZVVwbG9hZFByb2dyZXNzIGZyb20gJy4vZmlsZS11cGxvYWQtcHJvZ3Jlc3MnO1xuaW1wb3J0IEZpbGVEcm9wIGZyb20gJy4vZmlsZS1kcm9wJztcbmltcG9ydCB7RmlsZUxvYWRpbmcsIEZpbGVMb2FkaW5nUHJvZ3Jlc3N9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge0dVSURFU19GSUxFX0ZPUk1BVF9ET0MsIFJFTU9URV9GSUxFX0ZPUk1BVFN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgZmV0Y2hSZW1vdGVGaWxlQXNLZXBsZXJGaWxlLFxuICBnZXRGaWxlTmFtZUZvclJlbW90ZVVybCxcbiAgaXNSZW1vdGVEYXRhc2V0VXJsXG59IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge21lZGlhfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge2lzQ2hyb21lLCBnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnbWFya2Rvd24tdG8tanN4JztcblxuaW1wb3J0IHtCdXR0b24sIElucHV0TGlnaHR9IGZyb20gJy4uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBMaW5rUmVuZGVyZXIgZnJvbSAnLi4vbGluay1yZW5kZXJlcic7XG5cbmNvbnN0IGZpbGVJY29uQ29sb3IgPSAnI0QzRDhFMCc7XG5cbmNvbnN0IFN0eWxlZFVwbG9hZE1lc3NhZ2UgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcblxuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgYH07XG5gO1xuXG5leHBvcnQgY29uc3QgV2FybmluZ01zZyA9IHN0eWxlZC5zcGFuYFxuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvckNvbG9yfTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbmA7XG5cbmludGVyZmFjZSBTdHlsZWRGaWxlRHJvcFByb3BzIHtcbiAgJGRyYWdPdmVyPzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRmlsZURyb3AgPSBzdHlsZWQuZGl2PFN0eWxlZEZpbGVEcm9wUHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3JkZXItc3R5bGU6ICR7cHJvcHMgPT4gKHByb3BzLiRkcmFnT3ZlciA/ICdzb2xpZCcgOiAnZGFzaGVkJyl9O1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+IChwcm9wcy4kZHJhZ092ZXIgPyBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVCA6IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckxUKX07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDM2MHB4O1xuICBwYWRkaW5nOiAyNHB4IDEycHggMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAuZmlsZS10eXBlLXJvdyB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgcGFkZGluZzogMTZweCA4cHggMTJweDtcbiAgICBtaW4taGVpZ2h0OiAyODBweDtcbiAgYH07XG5gO1xuXG5jb25zdCBTdHlsZWREcm9wQm9keSA9IHN0eWxlZC5kaXZgXG4gIGZsZXg6IDE7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcbmA7XG5cbmNvbnN0IFN0eWxlZEFjdGlvbkxpbmUgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tb2RhbFRpdGxlQ29sb3J9O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuXG4gIC51cGxvYWQtYnV0dG9uIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5rQnRuQ29sb3J9O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRHJhZ05Ecm9wSWNvbiA9IHN0eWxlZC5kaXZgXG4gIGNvbG9yOiAke2ZpbGVJY29uQ29sb3J9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IFN0eWxlZEZpbGVUeXBlRm93ID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRGaWxlVXBsb2FkID0gc3R5bGVkLmRpdmBcbiAgLmZpbGUtZHJvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRNZXNzYWdlID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDMycHg7XG5cbiAgLmxvYWRpbmctYWN0aW9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cbiAgLmxvYWRpbmctc3Bpbm5lciB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdGaWxlV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkRGlzY2xhaW1lciA9IHN0eWxlZChTdHlsZWRNZXNzYWdlKWBcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbjogMTJweCAxMnB4IDA7XG5gO1xuXG5jb25zdCBTdHlsZWRSZW1vdGVVcmxGb3JtID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDQyMHB4O1xuICBtYXJnaW46IDhweCBhdXRvIDA7XG5gO1xuXG5jb25zdCBTdHlsZWRSZW1vdGVVcmxSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDhweDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZFJlbW90ZVVybElucHV0ID0gc3R5bGVkKElucHV0TGlnaHQpYFxuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7XG4gIG1heC13aWR0aDogMzAwcHg7XG5gO1xuXG5jb25zdCBTdHlsZWRSZW1vdGVGb3JtYXRTZWxlY3QgPSBzdHlsZWQuc2VsZWN0YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0TFR9O1xuICB3aWR0aDogODhweDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGhlaWdodDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMCA2cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbmA7XG5cbmNvbnN0IFN0eWxlZFJlbW90ZUZldGNoQnV0dG9uID0gc3R5bGVkKEJ1dHRvbilgXG4gIGhlaWdodDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBmbGV4LXNocmluazogMDtcbmA7XG5cbmNvbnN0IFJFTU9URV9ET1dOTE9BRF9TSEFSRSA9IDAuODU7XG5cbmZ1bmN0aW9uIHNjYWxlRmlsZVByb2dyZXNzKFxuICBwcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcyxcbiAgc3RhcnQ6IG51bWJlcixcbiAgZW5kOiBudW1iZXJcbik6IEZpbGVMb2FkaW5nUHJvZ3Jlc3Mge1xuICByZXR1cm4gT2JqZWN0LmtleXMocHJvZ3Jlc3MpLnJlZHVjZTxGaWxlTG9hZGluZ1Byb2dyZXNzPigoYWNjdSwga2V5KSA9PiB7XG4gICAgY29uc3QgaXRlbSA9IHByb2dyZXNzW2tleV07XG4gICAgYWNjdVtrZXldID0ge1xuICAgICAgLi4uaXRlbSxcbiAgICAgIHBlcmNlbnQ6IHN0YXJ0ICsgKGl0ZW0ucGVyY2VudCB8fCAwKSAqIChlbmQgLSBzdGFydClcbiAgICB9O1xuICAgIHJldHVybiBhY2N1O1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldENvbWJpbmVkTG9hZFByb2dyZXNzKHtcbiAgZmlsZUxvYWRpbmcsXG4gIGZpbGVMb2FkaW5nUHJvZ3Jlc3MsXG4gIHJlbW90ZVByb2dyZXNzXG59OiB7XG4gIGZpbGVMb2FkaW5nOiBGaWxlTG9hZGluZyB8IGZhbHNlO1xuICBmaWxlTG9hZGluZ1Byb2dyZXNzOiBGaWxlTG9hZGluZ1Byb2dyZXNzO1xuICByZW1vdGVQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbn0pOiBGaWxlTG9hZGluZ1Byb2dyZXNzIHtcbiAgY29uc3QgaXNSZW1vdGVGZXRjaCA9IE9iamVjdC5rZXlzKHJlbW90ZVByb2dyZXNzKS5sZW5ndGggPiAwO1xuICBpZiAoIWlzUmVtb3RlRmV0Y2gpIHtcbiAgICByZXR1cm4gZmlsZUxvYWRpbmdQcm9ncmVzcztcbiAgfVxuICBpZiAoZmlsZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gc2NhbGVGaWxlUHJvZ3Jlc3MoZmlsZUxvYWRpbmdQcm9ncmVzcywgUkVNT1RFX0RPV05MT0FEX1NIQVJFLCAxKTtcbiAgfVxuICByZXR1cm4gc2NhbGVGaWxlUHJvZ3Jlc3MocmVtb3RlUHJvZ3Jlc3MsIDAsIFJFTU9URV9ET1dOTE9BRF9TSEFSRSk7XG59XG5cbnR5cGUgRmlsZVVwbG9hZFByb3BzID0ge1xuICBvbkZpbGVVcGxvYWQ6IChmaWxlczogRmlsZVtdKSA9PiB2b2lkO1xuICBmaWxlTG9hZGluZzogRmlsZUxvYWRpbmcgfCBmYWxzZTtcbiAgZmlsZUxvYWRpbmdQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbiAgdGhlbWU6IG9iamVjdDtcbiAgLyoqIEEgbGlzdCBvZiBuYW1lcyBvZiBzdXBwb3J0ZWQgZm9ybWF0cyBzdWl0YWJsZSB0byBwcmVzZW50IHRvIHVzZXIgKi9cbiAgZmlsZUZvcm1hdE5hbWVzPzogc3RyaW5nW107XG4gIC8qKiBBIGxpc3Qgb2YgdHlwaWNhbGx5IDMgbGV0dGVyIGV4dGVuc2lvbnMgKHdpdGhvdXQgJy4nKSBmb3IgZmlsZSBtYXRjaGluZyAqL1xuICBmaWxlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xuICAvKiogU2V0IHRvIHRydWUgaWYgYXBwIHdhbnRzIHRvIGRvIGl0cyBvd24gZmlsZSBmaWx0ZXJpbmcgKi9cbiAgZGlzYWJsZUV4dGVuc2lvbkZpbHRlcj86IGJvb2xlYW47XG59ICYgV3JhcHBlZENvbXBvbmVudFByb3BzO1xuXG50eXBlIEZpbGVVcGxvYWRTdGF0ZSA9IHtcbiAgZHJhZ092ZXI6IGJvb2xlYW47XG4gIGZpbGVMb2FkaW5nOiBGaWxlTG9hZGluZyB8IGZhbHNlO1xuICBmaWxlczogRmlsZVtdO1xuICBlcnJvckZpbGVzOiBzdHJpbmdbXTtcbiAgcmVtb3RlVXJsOiBzdHJpbmc7XG4gIHJlbW90ZUZvcm1hdDogc3RyaW5nO1xuICByZW1vdGVFcnJvcjoge21lc3NhZ2U6IHN0cmluZ30gfCBudWxsO1xuICByZW1vdGVMb2FkaW5nOiBib29sZWFuO1xuICByZW1vdGVQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbn07XG5cbmZ1bmN0aW9uIEZpbGVVcGxvYWRGYWN0b3J5KCkge1xuICAvKiogQGF1Z21lbnRzIHtDb21wb25lbnQ8RmlsZVVwbG9hZFByb3BzPn0gKi9cbiAgY2xhc3MgRmlsZVVwbG9hZCBleHRlbmRzIENvbXBvbmVudDxGaWxlVXBsb2FkUHJvcHMsIEZpbGVVcGxvYWRTdGF0ZT4ge1xuICAgIHN0YXRlOiBGaWxlVXBsb2FkU3RhdGUgPSB7XG4gICAgICBkcmFnT3ZlcjogZmFsc2UsXG4gICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICBmaWxlczogW10sXG4gICAgICBlcnJvckZpbGVzOiBbXSxcbiAgICAgIHJlbW90ZVVybDogJycsXG4gICAgICByZW1vdGVGb3JtYXQ6ICdhdXRvJyxcbiAgICAgIHJlbW90ZUVycm9yOiBudWxsLFxuICAgICAgcmVtb3RlTG9hZGluZzogZmFsc2UsXG4gICAgICByZW1vdGVQcm9ncmVzczoge31cbiAgICB9O1xuXG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIGlmIChzdGF0ZS5maWxlTG9hZGluZyAmJiBwcm9wcy5maWxlTG9hZGluZyA9PT0gZmFsc2UgJiYgc3RhdGUuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICAgIGZpbGVMb2FkaW5nOiBwcm9wcy5maWxlTG9hZGluZyxcbiAgICAgICAgICByZW1vdGVMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICByZW1vdGVQcm9ncmVzczoge31cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVMb2FkaW5nOiBwcm9wcy5maWxlTG9hZGluZyxcbiAgICAgICAgLi4uKHByb3BzLmZpbGVMb2FkaW5nID8ge3JlbW90ZUxvYWRpbmc6IGZhbHNlfSA6IHt9KVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmcmFtZSA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcblxuICAgIF9pc1ZhbGlkRmlsZVR5cGUgPSBmaWxlbmFtZSA9PiB7XG4gICAgICBjb25zdCB7ZmlsZUV4dGVuc2lvbnMgPSBbXX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgZmlsZUV4dCA9IGZpbGVFeHRlbnNpb25zLmZpbmQoZXh0ID0+IGZpbGVuYW1lLmVuZHNXaXRoKGV4dCkpO1xuXG4gICAgICByZXR1cm4gQm9vbGVhbihmaWxlRXh0KTtcbiAgICB9O1xuXG4gICAgLyoqIEBwYXJhbSB7RmlsZUxpc3R9IGZpbGVMaXN0ICovXG4gICAgX2hhbmRsZUZpbGVJbnB1dCA9IChmaWxlTGlzdDogRmlsZUxpc3QsIGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXMgPSBbLi4uZmlsZUxpc3RdLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgY29uc3Qge2Rpc2FibGVFeHRlbnNpb25GaWx0ZXIgPSBmYWxzZX0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAvLyBUT0RPIC0gbW92ZSB0aGlzIGNvZGUgb3V0IG9mIHRoZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGZpbGVzVG9Mb2FkOiBGaWxlW10gPSBbXTtcbiAgICAgIGNvbnN0IGVycm9yRmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgaWYgKGRpc2FibGVFeHRlbnNpb25GaWx0ZXIgfHwgdGhpcy5faXNWYWxpZEZpbGVUeXBlKGZpbGUubmFtZSkpIHtcbiAgICAgICAgICBmaWxlc1RvTG9hZC5wdXNoKGZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVycm9yRmlsZXMucHVzaChmaWxlLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHtmaWxlczogZmlsZXNUb0xvYWQsIGVycm9yRmlsZXMsIGRyYWdPdmVyOiBmYWxzZX07XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUobmV4dFN0YXRlLCAoKSA9PlxuICAgICAgICBuZXh0U3RhdGUuZmlsZXMubGVuZ3RoID8gdGhpcy5wcm9wcy5vbkZpbGVVcGxvYWQobmV4dFN0YXRlLmZpbGVzKSA6IG51bGxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIF90b2dnbGVEcmFnU3RhdGUgPSBuZXdTdGF0ZSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtkcmFnT3ZlcjogbmV3U3RhdGV9KTtcbiAgICB9O1xuXG4gICAgX29uUmVtb3RlVXJsQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgcmVtb3RlVXJsID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHJlbW90ZVVybCxcbiAgICAgICAgcmVtb3RlRXJyb3I6IHJlbW90ZVVybCAmJiAhaXNSZW1vdGVEYXRhc2V0VXJsKHJlbW90ZVVybCkgPyB7bWVzc2FnZTogJ0luY29ycmVjdCBVUkwnfSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25SZW1vdGVGb3JtYXRDaGFuZ2UgPSAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxTZWxlY3RFbGVtZW50PikgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7cmVtb3RlRm9ybWF0OiBldmVudC50YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX29uUmVtb3RlVXJsS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9oYW5kbGVMb2FkUmVtb3RlRmlsZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfaGFuZGxlTG9hZFJlbW90ZUZpbGUgPSBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB7cmVtb3RlVXJsLCByZW1vdGVGb3JtYXQsIHJlbW90ZUVycm9yfSA9IHRoaXMuc3RhdGU7XG4gICAgICBjb25zdCB7aW50bH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qgc2hvd0Zvcm1hdFNlbGVjdG9yID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVSZW1vdGVGaWxlRm9ybWF0U2VsZWN0b3I7XG4gICAgICBjb25zdCBmb3JtYXQgPVxuICAgICAgICBzaG93Rm9ybWF0U2VsZWN0b3IgJiYgcmVtb3RlRm9ybWF0ICE9PSAnYXV0bycgPyByZW1vdGVGb3JtYXQgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIXJlbW90ZVVybCB8fCByZW1vdGVFcnJvciB8fCB0aGlzLnN0YXRlLnJlbW90ZUxvYWRpbmcpIHtcbiAgICAgICAgaWYgKCFyZW1vdGVVcmwpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtyZW1vdGVFcnJvcjoge21lc3NhZ2U6ICdJbmNvcnJlY3QgVVJMJ319KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzUmVtb3RlRGF0YXNldFVybChyZW1vdGVVcmwpKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3JlbW90ZUVycm9yOiB7bWVzc2FnZTogJ0luY29ycmVjdCBVUkwnfX0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gZ2V0RmlsZU5hbWVGb3JSZW1vdGVVcmwocmVtb3RlVXJsLCBmb3JtYXQpO1xuICAgICAgY29uc3QgZG93bmxvYWRpbmcgPSBpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAnZmlsZVVwbG9hZGVyLmRvd25sb2FkaW5nJ30pO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHJlbW90ZUxvYWRpbmc6IHRydWUsXG4gICAgICAgIHJlbW90ZUVycm9yOiBudWxsLFxuICAgICAgICByZW1vdGVQcm9ncmVzczoge1xuICAgICAgICAgIFtmaWxlTmFtZV06IHtcbiAgICAgICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAgICAgcGVyY2VudDogMCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGRvd25sb2FkaW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgbGFzdFVwZGF0ZSA9IDA7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmZXRjaFJlbW90ZUZpbGVBc0tlcGxlckZpbGUocmVtb3RlVXJsLCBmb3JtYXQsICh7cGVyY2VudH0pID0+IHtcbiAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGlmIChwZXJjZW50IDwgMSAmJiBub3cgLSBsYXN0VXBkYXRlIDwgMTAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhc3RVcGRhdGUgPSBub3c7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShwcmV2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBPYmplY3Qua2V5cyhwcmV2LnJlbW90ZVByb2dyZXNzKVswXSB8fCBmaWxlTmFtZTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHJlbW90ZVByb2dyZXNzOiB7XG4gICAgICAgICAgICAgICAgW25hbWVdOiB7XG4gICAgICAgICAgICAgICAgICBmaWxlTmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgIHBlcmNlbnQsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkb3dubG9hZGluZyxcbiAgICAgICAgICAgICAgICAgIGVycm9yOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWxlczogW2ZpbGVdLFxuICAgICAgICAgICAgZXJyb3JGaWxlczogW10sXG4gICAgICAgICAgICBkcmFnT3ZlcjogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHRoaXMucHJvcHMub25GaWxlVXBsb2FkKFtmaWxlXSlcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHJlbW90ZUxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIHJlbW90ZVByb2dyZXNzOiB7fSxcbiAgICAgICAgICByZW1vdGVFcnJvcjoge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBgRmFpbGVkIHRvIGxvYWQgJHtyZW1vdGVVcmx9YFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtkcmFnT3ZlciwgZmlsZXMsIGVycm9yRmlsZXMsIHJlbW90ZVVybCwgcmVtb3RlRm9ybWF0LCByZW1vdGVFcnJvciwgcmVtb3RlTG9hZGluZywgcmVtb3RlUHJvZ3Jlc3N9ID1cbiAgICAgICAgdGhpcy5zdGF0ZTtcbiAgICAgIGNvbnN0IHtmaWxlTG9hZGluZywgZmlsZUxvYWRpbmdQcm9ncmVzcywgdGhlbWUsIGludGx9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtmaWxlRXh0ZW5zaW9ucyA9IFtdLCBmaWxlRm9ybWF0TmFtZXMgPSBbXX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qgc2hvd0Zvcm1hdFNlbGVjdG9yID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5lbmFibGVSZW1vdGVGaWxlRm9ybWF0U2VsZWN0b3I7XG4gICAgICBjb25zdCBmaWxlVXBsb2FkSW5mb1RleHQgPSBgJHtpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2ZpbGVVcGxvYWRlci5jb25maWdVcGxvYWRNZXNzYWdlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmlsZUZvcm1hdE5hbWVzOiBmaWxlRm9ybWF0TmFtZXMubWFwKGZvcm1hdCA9PiBgKioke2Zvcm1hdH0qKmApLmpvaW4oJywgJylcbiAgICAgICAgfVxuICAgICAgKX0oJHtHVUlERVNfRklMRV9GT1JNQVRfRE9DfSkuYDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRGaWxlVXBsb2FkIGNsYXNzTmFtZT1cImZpbGUtdXBsb2FkZXJcIiByZWY9e3RoaXMuZnJhbWV9PlxuICAgICAgICAgIHtGaWxlRHJvcCA/IChcbiAgICAgICAgICAgIDxGaWxlRHJvcFxuICAgICAgICAgICAgICBmcmFtZT17dGhpcy5mcmFtZS5jdXJyZW50IHx8IGRvY3VtZW50fVxuICAgICAgICAgICAgICBvbkRyYWdPdmVyPXsoKSA9PiB0aGlzLl90b2dnbGVEcmFnU3RhdGUodHJ1ZSl9XG4gICAgICAgICAgICAgIG9uRHJhZ0xlYXZlPXsoKSA9PiB0aGlzLl90b2dnbGVEcmFnU3RhdGUoZmFsc2UpfVxuICAgICAgICAgICAgICBvbkRyb3A9e3RoaXMuX2hhbmRsZUZpbGVJbnB1dH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRlcl9fZmlsZS1kcm9wXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN0eWxlZFVwbG9hZE1lc3NhZ2UgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRfX21lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8TWFya2Rvd25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3tcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBMaW5rUmVuZGVyZXJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2ZpbGVVcGxvYWRJbmZvVGV4dH1cbiAgICAgICAgICAgICAgICA8L01hcmtkb3duPlxuICAgICAgICAgICAgICA8L1N0eWxlZFVwbG9hZE1lc3NhZ2U+XG4gICAgICAgICAgICAgIDxTdHlsZWRGaWxlRHJvcCAkZHJhZ092ZXI9e2RyYWdPdmVyfT5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRHJvcEJvZHk+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkRmlsZVR5cGVGb3cgY2xhc3NOYW1lPVwiZmlsZS10eXBlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICB7ZmlsZUV4dGVuc2lvbnMubWFwKGV4dCA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEZpbGVUeXBlIGtleT17ZXh0fSBleHQ9e2V4dH0gaGVpZ2h0PVwiNTBweFwiIGZvbnRTaXplPVwiOXB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEZpbGVUeXBlRm93PlxuICAgICAgICAgICAgICAgICAge2ZpbGVMb2FkaW5nIHx8IHJlbW90ZUxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxGaWxlVXBsb2FkUHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlTG9hZGluZ1Byb2dyZXNzPXtnZXRDb21iaW5lZExvYWRQcm9ncmVzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVQcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZERyYWdORHJvcEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7b3BhY2l0eTogZHJhZ092ZXIgPyAwLjUgOiAxfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpbGUtdXBsb2FkLWRpc3BsYXktbWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERyYWdORHJvcCBoZWlnaHQ9XCIzNnB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvckZpbGVzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFdhcm5pbmdNc2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsnZmlsZVVwbG9hZGVyLmZpbGVOb3RTdXBwb3J0ZWQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7ZXJyb3JGaWxlczogZXJyb3JGaWxlcy5qb2luKCcsICcpfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1dhcm5pbmdNc2c+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZERyYWdORHJvcEljb24+XG4gICAgICAgICAgICAgICAgICAgICAgeyFmaWxlcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkRHJhZ0ZpbGVXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQWN0aW9uTGluZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydmaWxlVXBsb2FkZXIuZHJvcE1lc3NhZ2UnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZTogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVcGxvYWRCdXR0b24ga2V5PVwiYnJvd3NlXCIgb25VcGxvYWQ9e3RoaXMuX2hhbmRsZUZpbGVJbnB1dH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ2ZpbGVVcGxvYWRlci5icm93c2VGaWxlcyd9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZEFjdGlvbkxpbmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRSZW1vdGVVcmxGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRlcl9fcmVtb3RlLXVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkUmVtb3RlVXJsUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFJlbW90ZVVybElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cmVtb3RlVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZmlsZVVwbG9hZGVyLnVybFBsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdmaWxlVXBsb2FkZXIudXJsUGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5fb25SZW1vdGVVcmxDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5fb25SZW1vdGVVcmxLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cmVtb3RlTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0Zvcm1hdFNlbGVjdG9yID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkUmVtb3RlRm9ybWF0U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ2ZpbGVVcGxvYWRlci5mb3JtYXQnfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3JlbW90ZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5fb25SZW1vdGVGb3JtYXRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlbW90ZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7UkVNT1RFX0ZJTEVfRk9STUFUUy5tYXAoZm9ybWF0ID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtmb3JtYXR9IHZhbHVlPXtmb3JtYXR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0ID09PSAnYXV0bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdmaWxlVXBsb2FkZXIuZm9ybWF0QXV0byd9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZm9ybWF0LnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRSZW1vdGVGb3JtYXRTZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRSZW1vdGVGZXRjaEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshcmVtb3RlVXJsIHx8IHJlbW90ZUxvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuX2hhbmRsZUxvYWRSZW1vdGVGaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2ZpbGVVcGxvYWRlci5mZXRjaCd9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFJlbW90ZUZldGNoQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkUmVtb3RlVXJsUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZW1vdGVFcnJvciA/IDxXYXJuaW5nTXNnPntyZW1vdGVFcnJvci5tZXNzYWdlfTwvV2FybmluZ01zZz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFJlbW90ZVVybEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZERyYWdGaWxlV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvU3R5bGVkRHJvcEJvZHk+XG4gICAgICAgICAgICAgICAge2ZpbGVMb2FkaW5nIHx8IHJlbW90ZUxvYWRpbmcgPyBudWxsIDogKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZERpc2NsYWltZXI+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnZmlsZVVwbG9hZGVyLmRpc2NsYWltZXInfSAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWREaXNjbGFpbWVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU3R5bGVkRmlsZURyb3A+XG4gICAgICAgICAgICA8L0ZpbGVEcm9wPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFdhcm5pbmdNc2c+XG4gICAgICAgICAgICB7aXNDaHJvbWUoKSA/IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnZmlsZVVwbG9hZGVyLmNocm9tZU1lc3NhZ2UnfSAvPiA6ICcnfVxuICAgICAgICAgIDwvV2FybmluZ01zZz5cbiAgICAgICAgPC9TdHlsZWRGaWxlVXBsb2FkPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5qZWN0SW50bChGaWxlVXBsb2FkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRmlsZVVwbG9hZEZhY3Rvcnk7XG5leHBvcnQgY29uc3QgRmlsZVVwbG9hZCA9IEZpbGVVcGxvYWRGYWN0b3J5KCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUEsT0FBT0EsS0FBSyxJQUFHQyxTQUFTLEVBQUVDLFNBQVMsUUFBTyxPQUFPO0FBQ2pELE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsU0FBUUMsVUFBVSxRQUE4QixZQUFZO0FBQzVELE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFDMUMsU0FBUUMsU0FBUyxFQUFFQyxRQUFRLFFBQU8sVUFBVTtBQUM1QyxPQUFPQyxrQkFBa0IsTUFBTSx3QkFBd0I7QUFDdkQsT0FBT0MsUUFBUSxNQUFNLGFBQWE7QUFHbEMsU0FBUUMsc0JBQXNCLEVBQUVD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
@@ -0,0 +1,48 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
4
+ import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
5
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
6
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
7
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
9
+ // SPDX-License-Identifier: MIT
10
+ // Copyright contributors to the kepler.gl project
11
+
12
+ import React, { Component } from 'react';
13
+ import Base from './base';
14
+ var Circle = /*#__PURE__*/function (_Component) {
15
+ function Circle() {
16
+ _classCallCheck(this, Circle);
17
+ return _callSuper(this, Circle, arguments);
18
+ }
19
+ _inherits(Circle, _Component);
20
+ return _createClass(Circle, [{
21
+ key: "render",
22
+ value: function render() {
23
+ return /*#__PURE__*/React.createElement(Base, this.props, /*#__PURE__*/React.createElement("circle", {
24
+ cx: "11",
25
+ cy: "8",
26
+ r: "6",
27
+ stroke: "currentColor",
28
+ fill: "transparent",
29
+ strokeWidth: "1.5"
30
+ }), /*#__PURE__*/React.createElement("circle", {
31
+ cx: "11",
32
+ cy: "8",
33
+ r: "1.5"
34
+ }), /*#__PURE__*/React.createElement("path", {
35
+ fillRule: "evenodd",
36
+ clipRule: "evenodd",
37
+ d: "M17 10C18.1046 10 19 9.10457 19 8C19 6.89543 18.1046 6 17 6C15.8954 6 15 6.89543 15 8C15 9.10457 15.8954 10 17 10Z"
38
+ }));
39
+ }
40
+ }]);
41
+ }(Component);
42
+ _defineProperty(Circle, "defaultProps", {
43
+ height: '16px',
44
+ predefinedClassName: 'data-ex-icons-circle',
45
+ viewBox: '0 0 22 16'
46
+ });
47
+ export { Circle as default };
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIkJhc2UiLCJDaXJjbGUiLCJfQ29tcG9uZW50IiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsImFyZ3VtZW50cyIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsInByb3BzIiwiY3giLCJjeSIsInIiLCJzdHJva2UiLCJmaWxsIiwic3Ryb2tlV2lkdGgiLCJmaWxsUnVsZSIsImNsaXBSdWxlIiwiZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImhlaWdodCIsInByZWRlZmluZWRDbGFzc05hbWUiLCJ2aWV3Qm94IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vaWNvbnMvY2lyY2xlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCYXNlLCB7QmFzZVByb3BzfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaXJjbGUgZXh0ZW5kcyBDb21wb25lbnQ8UGFydGlhbDxCYXNlUHJvcHM+PiB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgaGVpZ2h0OiAnMTZweCcsXG4gICAgcHJlZGVmaW5lZENsYXNzTmFtZTogJ2RhdGEtZXgtaWNvbnMtY2lyY2xlJyxcbiAgICB2aWV3Qm94OiAnMCAwIDIyIDE2J1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJhc2Ugey4uLnRoaXMucHJvcHN9PlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjhcIiByPVwiNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGZpbGw9XCJ0cmFuc3BhcmVudFwiIHN0cm9rZVdpZHRoPVwiMS41XCIgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCI4XCIgcj1cIjEuNVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTcgMTBDMTguMTA0NiAxMCAxOSA5LjEwNDU3IDE5IDhDMTkgNi44OTU0MyAxOC4xMDQ2IDYgMTcgNkMxNS44OTU0IDYgMTUgNi44OTU0MyAxNSA4QzE1IDkuMTA0NTcgMTUuODk1NCAxMCAxNyAxMFpcIlxuICAgICAgICAvPlxuICAgICAgPC9CYXNlPlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsU0FBUyxRQUFPLE9BQU87QUFDdEMsT0FBT0MsSUFBSSxNQUFtQixRQUFRO0FBQUMsSUFFbEJDLE1BQU0sMEJBQUFDLFVBQUE7RUFBQSxTQUFBRCxPQUFBO0lBQUFFLGVBQUEsT0FBQUYsTUFBQTtJQUFBLE9BQUFHLFVBQUEsT0FBQUgsTUFBQSxFQUFBSSxTQUFBO0VBQUE7RUFBQUMsU0FBQSxDQUFBTCxNQUFBLEVBQUFDLFVBQUE7RUFBQSxPQUFBSyxZQUFBLENBQUFOLE1BQUE7SUFBQU8sR0FBQTtJQUFBQyxLQUFBLEVBT3pCLFNBQUFDLE1BQU1BLENBQUEsRUFBRztNQUNQLG9CQUNFWixLQUFBLENBQUFhLGFBQUEsQ0FBQ1gsSUFBSSxFQUFLLElBQUksQ0FBQ1ksS0FBSyxlQUNsQmQsS0FBQSxDQUFBYSxhQUFBO1FBQVFFLEVBQUUsRUFBQyxJQUFJO1FBQUNDLEVBQUUsRUFBQyxHQUFHO1FBQUNDLENBQUMsRUFBQyxHQUFHO1FBQUNDLE1BQU0sRUFBQyxjQUFjO1FBQUNDLElBQUksRUFBQyxhQUFhO1FBQUNDLFdBQVcsRUFBQztNQUFLLENBQUUsQ0FBQyxlQUMxRnBCLEtBQUEsQ0FBQWEsYUFBQTtRQUFRRSxFQUFFLEVBQUMsSUFBSTtRQUFDQyxFQUFFLEVBQUMsR0FBRztRQUFDQyxDQUFDLEVBQUM7TUFBSyxDQUFFLENBQUMsZUFDakNqQixLQUFBLENBQUFhLGFBQUE7UUFDRVEsUUFBUSxFQUFDLFNBQVM7UUFDbEJDLFFBQVEsRUFBQyxTQUFTO1FBQ2xCQyxDQUFDLEVBQUM7TUFBb0gsQ0FDdkgsQ0FDRyxDQUFDO0lBRVg7RUFBQztBQUFBLEVBbkJpQ3RCLFNBQVM7QUFBQXVCLGVBQUEsQ0FBeEJyQixNQUFNLGtCQUNIO0VBQ3BCc0IsTUFBTSxFQUFFLE1BQU07RUFDZEMsbUJBQW1CLEVBQUUsc0JBQXNCO0VBQzNDQyxPQUFPLEVBQUU7QUFDWCxDQUFDO0FBQUEsU0FMa0J4QixNQUFNLElBQUF5QixPQUFBIiwiaWdub3JlTGlzdCI6W119