highmark-cli 0.0.135 → 0.0.138

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/lib/view.js CHANGED
@@ -5,14 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  Object.defineProperty(exports, "default", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return View;
8
+ return _default;
9
9
  }
10
10
  });
11
+ var _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
11
12
  var _necessary = require("necessary");
12
13
  var _easy = require("easy");
13
14
  var _leaf = /*#__PURE__*/ _interop_require_default(require("./view/div/leaf"));
15
+ var _menu = /*#__PURE__*/ _interop_require_default(require("./view/div/menu"));
16
+ var _touch = /*#__PURE__*/ _interop_require_default(require("./mixins/touch"));
14
17
  var _tree = require("./utilities/tree");
15
18
  var _element = require("./utilities/element");
19
+ var _selectors = require("./selectors");
16
20
  var _constants = require("./constants");
17
21
  function _assert_this_initialized(self) {
18
22
  if (self === void 0) {
@@ -109,6 +113,16 @@ function _set_prototype_of(o, p) {
109
113
  };
110
114
  return _set_prototype_of(o, p);
111
115
  }
116
+ function _tagged_template_literal(strings, raw) {
117
+ if (!raw) {
118
+ raw = strings.slice(0);
119
+ }
120
+ return Object.freeze(Object.defineProperties(strings, {
121
+ raw: {
122
+ value: Object.freeze(raw)
123
+ }
124
+ }));
125
+ }
112
126
  function _type_of(obj) {
113
127
  "@swc/helpers - typeof";
114
128
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
@@ -163,6 +177,15 @@ function _create_super(Derived) {
163
177
  return _possible_constructor_return(this, result);
164
178
  };
165
179
  }
180
+ function _templateObject() {
181
+ var data = _tagged_template_literal([
182
+ "\n\n width: 100%;\n height: 100%;\n overflow: hidden;\n touch-action: none;\n \n .native-gestures {\n touch-action: auto;\n }\n \n"
183
+ ]);
184
+ _templateObject = function _templateObject() {
185
+ return data;
186
+ };
187
+ return data;
188
+ }
166
189
  var ENTER_KEY_CODE = _necessary.keyCodes.ENTER_KEY_CODE, ESCAPE_KEY_CODE = _necessary.keyCodes.ESCAPE_KEY_CODE, BACKSPACE_KEY_CODE = _necessary.keyCodes.BACKSPACE_KEY_CODE, ARROW_UP_KEY_CODE = _necessary.keyCodes.ARROW_UP_KEY_CODE, ARROW_DOWN_KEY_CODE = _necessary.keyCodes.ARROW_DOWN_KEY_CODE, ARROW_LEFT_KEY_CODE = _necessary.keyCodes.ARROW_LEFT_KEY_CODE, ARROW_RIGHT_KEY_CODE = _necessary.keyCodes.ARROW_RIGHT_KEY_CODE;
167
190
  var View = /*#__PURE__*/ function(Element) {
168
191
  _inherits(View, Element);
@@ -171,35 +194,88 @@ var View = /*#__PURE__*/ function(Element) {
171
194
  _class_call_check(this, View);
172
195
  var _this;
173
196
  _this = _super.apply(this, arguments);
197
+ _define_property(_assert_this_initialized(_this), "doubleTapCustomHandler", function(event, element) {
198
+ _this.enableNativeGestures();
199
+ });
200
+ _define_property(_assert_this_initialized(_this), "pinchStartCustomHandler", function(event, element) {
201
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
202
+ if (nativeGesturesEnabled) {
203
+ return;
204
+ }
205
+ var zoom = _this.getZoom(), startZoom = zoom; ///
206
+ _this.setStartZoom(startZoom);
207
+ });
208
+ _define_property(_assert_this_initialized(_this), "pinchMoveCustomHandler", function(event, element, ratio) {
209
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
210
+ if (nativeGesturesEnabled) {
211
+ return;
212
+ }
213
+ var startZoom = _this.getStartZoom(), zoom = startZoom * Math.sqrt(ratio);
214
+ _this.setZoom(zoom);
215
+ _this.zoom(zoom);
216
+ });
174
217
  _define_property(_assert_this_initialized(_this), "swipeRightCustomHandler", function(event, element) {
175
- var swipesDisabled = _this.areSwipesDisabled();
176
- if (swipesDisabled) {
218
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
219
+ if (nativeGesturesEnabled) {
177
220
  return;
178
221
  }
179
- _this.disableSwipes();
180
222
  _this.showLeftLeafDiv();
181
- _this.waitToEnableSwipes();
182
223
  });
183
224
  _define_property(_assert_this_initialized(_this), "swipeLeftCustomHandler", function(event, element) {
184
- var swipesDisabled = _this.areSwipesDisabled();
185
- if (swipesDisabled) {
225
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
226
+ if (nativeGesturesEnabled) {
186
227
  return;
187
228
  }
188
- _this.disableSwipes();
189
229
  _this.showRightLeftDiv();
190
- _this.waitToEnableSwipes();
191
230
  });
192
- _define_property(_assert_this_initialized(_this), "tapCustomHandler", function(event, element) {
193
- ///
231
+ _define_property(_assert_this_initialized(_this), "swipeDownCustomHandler", function(event, element, top, left, speed) {
232
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
233
+ if (nativeGesturesEnabled) {
234
+ return;
235
+ }
236
+ var direction = _constants.DOWN_DIRECTION;
237
+ _this.scroll(speed, direction);
238
+ });
239
+ _define_property(_assert_this_initialized(_this), "swipeUpCustomHandler", function(event, element, top, left, speed) {
240
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
241
+ if (nativeGesturesEnabled) {
242
+ return;
243
+ }
244
+ var height = _this.getHeight(), bottom = height - top;
245
+ if (bottom < _constants.MENU_DIV_SWIPE_BOTTOM) {
246
+ _this.showMenuDiv();
247
+ return;
248
+ }
249
+ var direction = _constants.UP_DIRECTION;
250
+ _this.scroll(speed, direction);
194
251
  });
195
- _define_property(_assert_this_initialized(_this), "clickHandler", function(event, element) {
196
- var pageX = event.pageX, width = _this.getWidth(), clickWidthRatio = pageX / width;
197
- if (clickWidthRatio < _constants.MAXIMUM_CLICK_WIDTH_RATIO) {
198
- _this.showLeftLeafDiv();
252
+ _define_property(_assert_this_initialized(_this), "dragStartCustomHandler", function(event, element) {
253
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
254
+ if (nativeGesturesEnabled) {
255
+ return;
256
+ }
257
+ var scrollTop = _this.getScrollTop(), startScrollTop = scrollTop; ///
258
+ _this.setStartScrollTop(startScrollTop);
259
+ });
260
+ _define_property(_assert_this_initialized(_this), "dragDownCustomHandler", function(event, element, top, left) {
261
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
262
+ if (nativeGesturesEnabled) {
263
+ return;
199
264
  }
200
- if (1 - clickWidthRatio < _constants.MAXIMUM_CLICK_WIDTH_RATIO) {
201
- _this.showRightLeftDiv();
265
+ var startScrollTop = _this.getStartScrollTop(), scrollTop = startScrollTop - top;
266
+ _this.setScrollTop(scrollTop);
267
+ });
268
+ _define_property(_assert_this_initialized(_this), "dragUpCustomHandler", function(event, element, top, left) {
269
+ var nativeGesturesEnabled = _this.areNativeGesturesEnabled();
270
+ if (nativeGesturesEnabled) {
271
+ return;
202
272
  }
273
+ var startScrollTop = _this.getStartScrollTop(), scrollTop = startScrollTop - top;
274
+ _this.setScrollTop(scrollTop);
275
+ });
276
+ _define_property(_assert_this_initialized(_this), "tapCustomHandler", function(event, element) {
277
+ alert("view tap...");
278
+ _this.disableNativeGestures();
203
279
  });
204
280
  _define_property(_assert_this_initialized(_this), "keyDownHandler", function(event, element) {
205
281
  var keyCode = event.keyCode;
@@ -208,14 +284,12 @@ var View = /*#__PURE__*/ function(Element) {
208
284
  case ARROW_RIGHT_KEY_CODE:
209
285
  {
210
286
  _this.showRightLeftDiv();
211
- event.preventDefault();
212
287
  break;
213
288
  }
214
289
  case BACKSPACE_KEY_CODE:
215
290
  case ARROW_LEFT_KEY_CODE:
216
291
  {
217
292
  _this.showLeftLeafDiv();
218
- event.preventDefault();
219
293
  break;
220
294
  }
221
295
  case ESCAPE_KEY_CODE:
@@ -225,13 +299,11 @@ var View = /*#__PURE__*/ function(Element) {
225
299
  case ARROW_UP_KEY_CODE:
226
300
  {
227
301
  _this.showFirstLeftDiv();
228
- event.preventDefault();
229
302
  break;
230
303
  }
231
304
  case ARROW_DOWN_KEY_CODE:
232
305
  {
233
306
  _this.showLastLeafDiv();
234
- event.preventDefault();
235
307
  break;
236
308
  }
237
309
  }
@@ -239,31 +311,81 @@ var View = /*#__PURE__*/ function(Element) {
239
311
  return _this;
240
312
  }
241
313
  _create_class(View, [
314
+ {
315
+ key: "zoomOut",
316
+ value: function zoomOut() {
317
+ var zoom = this.getZoom();
318
+ zoom /= _constants.ZOOM_RATIO;
319
+ this.setZoom(zoom);
320
+ this.zoom(zoom);
321
+ }
322
+ },
323
+ {
324
+ key: "zoomIn",
325
+ value: function zoomIn() {
326
+ var zoom = this.getZoom();
327
+ zoom *= _constants.ZOOM_RATIO;
328
+ this.setZoom(zoom);
329
+ this.zoom(zoom);
330
+ }
331
+ },
332
+ {
333
+ key: "zoom",
334
+ value: function zoom(zoom) {
335
+ var displayedLeafDiv = this.findDisplayedLeafDiv();
336
+ displayedLeafDiv.zoom(zoom);
337
+ }
338
+ },
339
+ {
340
+ key: "scroll",
341
+ value: function scroll(speed, direction) {
342
+ var _this = this;
343
+ var scrollTop = this.getScrollTop();
344
+ scrollTop += speed * _constants.SCROLL_DELAY;
345
+ this.setScrollTop(scrollTop);
346
+ var interval = this.getInterval();
347
+ if (interval !== null) {
348
+ clearInterval(interval);
349
+ }
350
+ interval = setInterval(function() {
351
+ speed = speed - direction * _constants.DECELERATION;
352
+ if (speed * direction < 0) {
353
+ clearInterval(interval);
354
+ interval = null;
355
+ _this.setInterval(interval);
356
+ }
357
+ var scrollTop = _this.getScrollTop();
358
+ scrollTop += speed * _constants.SCROLL_DELAY;
359
+ _this.setScrollTop(scrollTop);
360
+ }, _constants.SCROLL_DELAY);
361
+ this.setInterval(interval);
362
+ }
363
+ },
242
364
  {
243
365
  key: "showFirstLeftDiv",
244
366
  value: function showFirstLeftDiv() {
245
- var showingLeafDiv = this.findShowingLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(showingLeafDiv), nextIndex = 0, previousIndex = index; ///
367
+ var displayedLeafDiv = this.findDisplayedLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(displayedLeafDiv), nextIndex = 0, previousIndex = index; ///
246
368
  this.showNextLeafDiv(nextIndex, previousIndex);
247
369
  }
248
370
  },
249
371
  {
250
372
  key: "showLeftLeafDiv",
251
373
  value: function showLeftLeafDiv() {
252
- var showingLeafDiv = this.findShowingLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(showingLeafDiv), nextIndex = index - 1, previousIndex = index; ///
374
+ var displayedLeafDiv = this.findDisplayedLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(displayedLeafDiv), nextIndex = index - 1, previousIndex = index; ///
253
375
  this.showNextLeafDiv(nextIndex, previousIndex);
254
376
  }
255
377
  },
256
378
  {
257
379
  key: "showRightLeftDiv",
258
380
  value: function showRightLeftDiv() {
259
- var showingLeafDiv = this.findShowingLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(showingLeafDiv), nextIndex = index + 1, previousIndex = index; ///
381
+ var displayedLeafDiv = this.findDisplayedLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(displayedLeafDiv), nextIndex = index + 1, previousIndex = index; ///
260
382
  this.showNextLeafDiv(nextIndex, previousIndex);
261
383
  }
262
384
  },
263
385
  {
264
386
  key: "showLastLeafDiv",
265
387
  value: function showLastLeafDiv() {
266
- var showingLeafDiv = this.findShowingLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(showingLeafDiv), nextIndex = leafDivs.length - 1, previousIndex = index; ///
388
+ var displayedLeafDiv = this.findDisplayedLeafDiv(), leafDivs = this.getLeafDivs(), index = leafDivs.indexOf(displayedLeafDiv), leafDivsLength = leafDivs.length, nextIndex = leafDivsLength - 1, previousIndex = index; ///
267
389
  this.showNextLeafDiv(nextIndex, previousIndex);
268
390
  }
269
391
  },
@@ -272,12 +394,28 @@ var View = /*#__PURE__*/ function(Element) {
272
394
  value: function showNextLeafDiv(nextIndex, previousIndex) {
273
395
  var leafDivs = this.getLeafDivs(), leafDivsLength = leafDivs.length, previousLeafDiv = leafDivs[previousIndex];
274
396
  if (nextIndex === -1 || nextIndex === previousIndex || nextIndex === leafDivsLength) {
275
- previousLeafDiv.wiggle();
276
397
  return;
277
398
  }
278
- var nextLeafDiv = leafDivs[nextIndex];
279
- nextLeafDiv.show();
280
399
  previousLeafDiv.hide();
400
+ var nextLeafDiv = leafDivs[nextIndex], zoom = this.getZoom();
401
+ nextLeafDiv.zoom(zoom);
402
+ setTimeout(function() {
403
+ var scrollTop = 0;
404
+ nextLeafDiv.setScrollTop(scrollTop);
405
+ nextLeafDiv.show();
406
+ }, _constants.SHOW_DELAY);
407
+ }
408
+ },
409
+ {
410
+ key: "enableNativeGestures",
411
+ value: function enableNativeGestures() {
412
+ this.addClass("native-gestures");
413
+ }
414
+ },
415
+ {
416
+ key: "disableNativeGestures",
417
+ value: function disableNativeGestures() {
418
+ this.removeClass("native-gestures");
281
419
  }
282
420
  },
283
421
  {
@@ -288,39 +426,37 @@ var View = /*#__PURE__*/ function(Element) {
288
426
  }
289
427
  },
290
428
  {
291
- key: "findShowingLeafDiv",
292
- value: function findShowingLeafDiv() {
293
- var leafDivs = this.getLeafDivs(), showingLeafDiv = leafDivs.find(function(leafDiv) {
294
- var showing = leafDiv.isShowing();
295
- if (showing) {
429
+ key: "findDisplayedLeafDiv",
430
+ value: function findDisplayedLeafDiv() {
431
+ var leafDivs = this.getLeafDivs(), displayedLeafDiv = leafDivs.find(function(leafDiv) {
432
+ var displayed = leafDiv.isDisplayed();
433
+ if (displayed) {
296
434
  return true;
297
435
  }
298
436
  });
299
- return showingLeafDiv;
437
+ return displayedLeafDiv;
300
438
  }
301
439
  },
302
440
  {
303
- key: "disableSwipes",
304
- value: function disableSwipes() {
305
- var swipesDisabled = true;
306
- this.setSwipesDisabled(swipesDisabled);
441
+ key: "retrieveLeafDivs",
442
+ value: function retrieveLeafDivs() {
443
+ var viewChildDivDOMElementNodeList = document.querySelectorAll(_selectors.VIEW_CHILD_DIVS_SELECTOR), viewChildDivDOMElements = (0, _tree.leafNodesFromNodeList)(viewChildDivDOMElementNodeList), leafDivs = (0, _element.elementsFromDOMElements)(viewChildDivDOMElements, _leaf.default);
444
+ return leafDivs;
307
445
  }
308
446
  },
309
447
  {
310
- key: "enableSwipes",
311
- value: function enableSwipes() {
312
- var swipesDisabled = false;
313
- this.setSwipesDisabled(swipesDisabled);
448
+ key: "getZoom",
449
+ value: function getZoom() {
450
+ var zoom = this.getState().zoom;
451
+ return zoom;
314
452
  }
315
453
  },
316
454
  {
317
- key: "waitToEnableSwipes",
318
- value: function waitToEnableSwipes() {
319
- var _this = this;
320
- var delay = _constants.ENABLE_SWIPES_DELAY;
321
- setTimeout(function() {
322
- _this.enableSwipes();
323
- }, delay);
455
+ key: "setZoom",
456
+ value: function setZoom(zoom) {
457
+ this.updateState({
458
+ zoom: zoom
459
+ });
324
460
  }
325
461
  },
326
462
  {
@@ -339,54 +475,116 @@ var View = /*#__PURE__*/ function(Element) {
339
475
  }
340
476
  },
341
477
  {
342
- key: "areSwipesDisabled",
343
- value: function areSwipesDisabled() {
344
- var swipesDisabled = this.getState().swipesDisabled;
345
- return swipesDisabled;
478
+ key: "getInterval",
479
+ value: function getInterval() {
480
+ var interval = this.getState().interval;
481
+ return interval;
346
482
  }
347
483
  },
348
484
  {
349
- key: "setSwipesDisabled",
350
- value: function setSwipesDisabled(swipesDisabled) {
485
+ key: "setInterval",
486
+ value: function setInterval1(interval) {
351
487
  this.updateState({
352
- swipesDisabled: swipesDisabled
488
+ interval: interval
353
489
  });
354
490
  }
355
491
  },
492
+ {
493
+ key: "getStartZoom",
494
+ value: function getStartZoom() {
495
+ var startZoom = this.getState().startZoom;
496
+ return startZoom;
497
+ }
498
+ },
499
+ {
500
+ key: "setStartZoom",
501
+ value: function setStartZoom(startZoom) {
502
+ this.updateState({
503
+ startZoom: startZoom
504
+ });
505
+ }
506
+ },
507
+ {
508
+ key: "getStartScrollTop",
509
+ value: function getStartScrollTop() {
510
+ var startScrollTop = this.getState().startScrollTop;
511
+ return startScrollTop;
512
+ }
513
+ },
514
+ {
515
+ key: "setStartScrollTop",
516
+ value: function setStartScrollTop(startScrollTop) {
517
+ this.updateState({
518
+ startScrollTop: startScrollTop
519
+ });
520
+ }
521
+ },
522
+ {
523
+ key: "areNativeGesturesEnabled",
524
+ value: function areNativeGesturesEnabled() {
525
+ var nativeGesturesEnabled = this.hasClass("native-gestures");
526
+ return nativeGesturesEnabled;
527
+ }
528
+ },
356
529
  {
357
530
  key: "setInitialState",
358
531
  value: function setInitialState() {
359
- var _this = this;
360
- var viewChildDivDOMElementNodeList = document.querySelectorAll(_constants.VIEW_CHILD_DIVS_SELECTOR), viewChildDivDOMElements = (0, _tree.leafNodesFromNodeList)(viewChildDivDOMElementNodeList), leafDivs = (0, _element.elementsFromDOMElements)(viewChildDivDOMElements, function() {
361
- return /*#__PURE__*/ React.createElement(_leaf.default, {
362
- onCustomTap: _this.tapCustomHandler,
363
- onCustomSwipeLeft: _this.swipeLeftCustomHandler,
364
- onCustomSwipeRight: _this.swipeRightCustomHandler
365
- });
366
- }), swipesDisabled = false;
532
+ var zoom = 1, leafDivs = this.retrieveLeafDivs(), interval = null, startZoom = null, startScrollTop = null;
367
533
  this.setState({
534
+ zoom: zoom,
368
535
  leafDivs: leafDivs,
369
- swipesDisabled: swipesDisabled
536
+ interval: interval,
537
+ startZoom: startZoom,
538
+ startScrollTop: startScrollTop
370
539
  });
371
540
  }
372
541
  },
373
542
  {
374
543
  key: "didMount",
375
544
  value: function didMount() {
376
- this.onClick(this.clickHandler);
545
+ this.enableTouch();
546
+ this.onCustomTap(this.tapCustomHandler);
547
+ this.onCustomDragUp(this.dragUpCustomHandler);
548
+ this.onCustomDragDown(this.dragDownCustomHandler);
549
+ this.onCustomDragStart(this.dragStartCustomHandler);
550
+ this.onCustomSwipeUp(this.swipeUpCustomHandler);
551
+ this.onCustomSwipeDown(this.swipeDownCustomHandler);
552
+ this.onCustomSwipeLeft(this.swipeLeftCustomHandler);
553
+ this.onCustomSwipeRight(this.swipeRightCustomHandler);
554
+ this.onCustomPinchMove(this.pinchMoveCustomHandler);
555
+ this.onCustomPinchStart(this.pinchStartCustomHandler);
556
+ this.onCustomDoubleTap(this.doubleTapCustomHandler);
377
557
  _easy.window.onKeyDown(this.keyDownHandler);
378
558
  }
379
559
  },
380
560
  {
381
561
  key: "willUnmount",
382
562
  value: function willUnmount() {
383
- this.offClick(this.clickHandler);
563
+ this.offCustomTap(this.tapCustomHandler);
564
+ this.offCustomDragUp(this.dragUpCustomHandler);
565
+ this.offCustomDragDown(this.dragDownCustomHandler);
566
+ this.offCustomDragStart(this.dragStartCustomHandler);
567
+ this.offCustomSwipeUp(this.swipeUpCustomHandler);
568
+ this.offCustomSwipeDown(this.swipeDownCustomHandler);
569
+ this.offCustomSwipeLeft(this.swipeLeftCustomHandler);
570
+ this.offCustomSwipeRight(this.swipeRightCustomHandler);
571
+ this.offCustomPinchMove(this.pinchMoveCustomHandler);
572
+ this.offCustomPinchStart(this.pinchStartCustomHandler);
573
+ this.offCustomDoubleTap(this.doubleTapCustomHandler);
574
+ this.disableTouch();
384
575
  _easy.window.offKeyDown(this.keyDownHandler);
385
576
  }
386
577
  },
578
+ {
579
+ key: "childElements",
580
+ value: function childElements() {
581
+ return /*#__PURE__*/ React.createElement(_menu.default, null);
582
+ }
583
+ },
387
584
  {
388
585
  key: "initialise",
389
586
  value: function initialise() {
587
+ this.assignContext();
390
588
  this.setInitialState();
391
589
  this.forEachLeafDiv(function(leafDiv, index) {
392
590
  index === 0 ? leafDiv.show() : leafDiv.hide();
@@ -400,5 +598,7 @@ _define_property(View, "tagName", "div");
400
598
  _define_property(View, "defaultProperties", {
401
599
  className: "view"
402
600
  });
601
+ Object.assign(View.prototype, _touch.default);
602
+ var _default = (0, _easywithstyle.default)(View)(_templateObject());
403
603
 
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92aWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBrZXlDb2RlcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIHdpbmRvdyB9IGZyb20gXCJlYXN5XCI7XG5cbmltcG9ydCBMZWFmRGl2IGZyb20gXCIuL3ZpZXcvZGl2L2xlYWZcIjtcblxuaW1wb3J0IHsgbGVhZk5vZGVzRnJvbU5vZGVMaXN0IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3RyZWVcIjtcbmltcG9ydCB7IGVsZW1lbnRzRnJvbURPTUVsZW1lbnRzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IEVOQUJMRV9TV0lQRVNfREVMQVksIE1BWElNVU1fQ0xJQ0tfV0lEVEhfUkFUSU8sIFZJRVdfQ0hJTERfRElWU19TRUxFQ1RPUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IEVOVEVSX0tFWV9DT0RFLFxuICAgICAgICBFU0NBUEVfS0VZX0NPREUsXG4gICAgICAgIEJBQ0tTUEFDRV9LRVlfQ09ERSxcbiAgICAgICAgQVJST1dfVVBfS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX0RPV05fS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX0xFRlRfS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX1JJR0hUX0tFWV9DT0RFIH0gPSBrZXlDb2RlcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlldyBleHRlbmRzIEVsZW1lbnQge1xuICBzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN3aXBlc0Rpc2FibGVkID0gdGhpcy5hcmVTd2lwZXNEaXNhYmxlZCgpO1xuXG4gICAgaWYgKHN3aXBlc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlU3dpcGVzKCk7XG4gICAgdGhpcy5zaG93TGVmdExlYWZEaXYoKTtcbiAgICB0aGlzLndhaXRUb0VuYWJsZVN3aXBlcygpO1xuICB9XG5cbiAgc3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN3aXBlc0Rpc2FibGVkID0gdGhpcy5hcmVTd2lwZXNEaXNhYmxlZCgpO1xuXG4gICAgaWYgKHN3aXBlc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlU3dpcGVzKCk7XG4gICAgdGhpcy5zaG93UmlnaHRMZWZ0RGl2KCk7XG4gICAgdGhpcy53YWl0VG9FbmFibGVTd2lwZXMoKTtcbiAgfVxuXG4gIHRhcEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcbiAgICAvLy9cbiAgfVxuXG4gIGNsaWNrSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHsgcGFnZVggfSA9IGV2ZW50LFxuICAgICAgICAgIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpLFxuICAgICAgICAgIGNsaWNrV2lkdGhSYXRpbyA9IHBhZ2VYIC8gd2lkdGg7XG5cbiAgICBpZiAoY2xpY2tXaWR0aFJhdGlvIDwgTUFYSU1VTV9DTElDS19XSURUSF9SQVRJTykge1xuICAgICAgdGhpcy5zaG93TGVmdExlYWZEaXYoKTtcbiAgICB9XG5cbiAgICBpZiAoKDEgLSBjbGlja1dpZHRoUmF0aW8pIDwgTUFYSU1VTV9DTElDS19XSURUSF9SQVRJTykge1xuICAgICAgdGhpcy5zaG93UmlnaHRMZWZ0RGl2KCk7XG4gICAgfVxuICB9XG5cbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB7IGtleUNvZGUgfSA9IGV2ZW50O1xuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIEVOVEVSX0tFWV9DT0RFOlxuICAgICAgY2FzZSBBUlJPV19SSUdIVF9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dSaWdodExlZnREaXYoKTtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEJBQ0tTUEFDRV9LRVlfQ09ERTpcbiAgICAgIGNhc2UgQVJST1dfTEVGVF9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dMZWZ0TGVhZkRpdigpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRVNDQVBFX0tFWV9DT0RFOiB7XG4gICAgICAgIC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEFSUk9XX1VQX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd0ZpcnN0TGVmdERpdigpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgQVJST1dfRE9XTl9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dMYXN0TGVhZkRpdigpO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd0ZpcnN0TGVmdERpdigpIHtcbiAgICBjb25zdCBzaG93aW5nTGVhZkRpdiA9IHRoaXMuZmluZFNob3dpbmdMZWFmRGl2KCksXG4gICAgICAgICAgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBsZWFmRGl2cy5pbmRleE9mKHNob3dpbmdMZWFmRGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSAwLFxuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpbmRleDsgIC8vL1xuXG4gICAgdGhpcy5zaG93TmV4dExlYWZEaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4KTtcbiAgfVxuXG4gIHNob3dMZWZ0TGVhZkRpdigpIHtcbiAgICBjb25zdCBzaG93aW5nTGVhZkRpdiA9IHRoaXMuZmluZFNob3dpbmdMZWFmRGl2KCksXG4gICAgICAgICAgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBsZWFmRGl2cy5pbmRleE9mKHNob3dpbmdMZWFmRGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBpbmRleCAtIDEsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICB0aGlzLnNob3dOZXh0TGVhZkRpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd1JpZ2h0TGVmdERpdigpIHtcbiAgICBjb25zdCBzaG93aW5nTGVhZkRpdiA9IHRoaXMuZmluZFNob3dpbmdMZWFmRGl2KCksXG4gICAgICAgICAgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBsZWFmRGl2cy5pbmRleE9mKHNob3dpbmdMZWFmRGl2KSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBpbmRleCArIDEsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICB0aGlzLnNob3dOZXh0TGVhZkRpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd0xhc3RMZWFmRGl2KCkge1xuICAgIGNvbnN0IHNob3dpbmdMZWFmRGl2ID0gdGhpcy5maW5kU2hvd2luZ0xlYWZEaXYoKSxcbiAgICAgICAgICBsZWFmRGl2cyA9IHRoaXMuZ2V0TGVhZkRpdnMoKSxcbiAgICAgICAgICBpbmRleCA9IGxlYWZEaXZzLmluZGV4T2Yoc2hvd2luZ0xlYWZEaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGxlYWZEaXZzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICB0aGlzLnNob3dOZXh0TGVhZkRpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd05leHRMZWFmRGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCkge1xuICAgIGNvbnN0IGxlYWZEaXZzID0gdGhpcy5nZXRMZWFmRGl2cygpLFxuICAgICAgICAgIGxlYWZEaXZzTGVuZ3RoID0gbGVhZkRpdnMubGVuZ3RoLFxuICAgICAgICAgIHByZXZpb3VzTGVhZkRpdiA9IGxlYWZEaXZzW3ByZXZpb3VzSW5kZXhdO1xuXG4gICAgaWYgKChuZXh0SW5kZXggPT09IC0xKSB8fCAobmV4dEluZGV4ID09PSBwcmV2aW91c0luZGV4KSB8fCAobmV4dEluZGV4ID09PSBsZWFmRGl2c0xlbmd0aCkpIHtcbiAgICAgIHByZXZpb3VzTGVhZkRpdi53aWdnbGUoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRMZWFmRGl2ID0gbGVhZkRpdnNbbmV4dEluZGV4XTtcblxuICAgIG5leHRMZWFmRGl2LnNob3coKTtcblxuICAgIHByZXZpb3VzTGVhZkRpdi5oaWRlKCk7XG4gIH1cblxuICBmb3JFYWNoTGVhZkRpdihjYWxsYmFjaykge1xuICAgIGNvbnN0IGxlYWZEaXZzID0gdGhpcy5nZXRMZWFmRGl2cygpO1xuXG4gICAgbGVhZkRpdnMuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cblxuICBmaW5kU2hvd2luZ0xlYWZEaXYoKSB7XG4gICAgY29uc3QgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgc2hvd2luZ0xlYWZEaXYgPSBsZWFmRGl2cy5maW5kKChsZWFmRGl2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaG93aW5nID0gbGVhZkRpdi5pc1Nob3dpbmcoKTtcblxuICAgICAgICAgICAgaWYgKHNob3dpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gc2hvd2luZ0xlYWZEaXY7XG4gIH1cblxuICBkaXNhYmxlU3dpcGVzKCkge1xuICAgIGNvbnN0IHN3aXBlc0Rpc2FibGVkID0gdHJ1ZTtcblxuICAgIHRoaXMuc2V0U3dpcGVzRGlzYWJsZWQoc3dpcGVzRGlzYWJsZWQpO1xuICB9XG5cbiAgZW5hYmxlU3dpcGVzKCkge1xuICAgIGNvbnN0IHN3aXBlc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldFN3aXBlc0Rpc2FibGVkKHN3aXBlc0Rpc2FibGVkKTtcbiAgfVxuXG4gIHdhaXRUb0VuYWJsZVN3aXBlcygpIHtcbiAgICBjb25zdCBkZWxheSA9IEVOQUJMRV9TV0lQRVNfREVMQVk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZW5hYmxlU3dpcGVzKCk7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgZ2V0TGVhZkRpdnMoKSB7XG4gICAgY29uc3QgeyBsZWFmRGl2cyB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xuXG4gICAgcmV0dXJuIGxlYWZEaXZzO1xuICB9XG5cbiAgc2V0TGVmdERpdnMobGVhZkRpdnMpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgIGxlYWZEaXZzXG4gICAgfSk7XG4gIH1cblxuICBhcmVTd2lwZXNEaXNhYmxlZCgpIHtcbiAgICBjb25zdCB7IHN3aXBlc0Rpc2FibGVkIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gc3dpcGVzRGlzYWJsZWQ7XG4gIH1cblxuICBzZXRTd2lwZXNEaXNhYmxlZChzd2lwZXNEaXNhYmxlZCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgc3dpcGVzRGlzYWJsZWRcbiAgICB9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxTdGF0ZSgpIHtcbiAgICBjb25zdCB2aWV3Q2hpbGREaXZET01FbGVtZW50Tm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFZJRVdfQ0hJTERfRElWU19TRUxFQ1RPUiksXG4gICAgICAgICAgdmlld0NoaWxkRGl2RE9NRWxlbWVudHMgPSBsZWFmTm9kZXNGcm9tTm9kZUxpc3Qodmlld0NoaWxkRGl2RE9NRWxlbWVudE5vZGVMaXN0KSwgIC8vL1xuICAgICAgICAgIGxlYWZEaXZzID0gZWxlbWVudHNGcm9tRE9NRWxlbWVudHModmlld0NoaWxkRGl2RE9NRWxlbWVudHMsICgpID0+XG5cbiAgICAgICAgICAgIDxMZWFmRGl2IG9uQ3VzdG9tVGFwPXt0aGlzLnRhcEN1c3RvbUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICBvbkN1c3RvbVN3aXBlTGVmdD17dGhpcy5zd2lwZUxlZnRDdXN0b21IYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgb25DdXN0b21Td2lwZVJpZ2h0PXt0aGlzLnN3aXBlUmlnaHRDdXN0b21IYW5kbGVyfSAvPlxuXG4gICAgICAgICAgKSxcbiAgICAgICAgICBzd2lwZXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBsZWFmRGl2cyxcbiAgICAgIHN3aXBlc0Rpc2FibGVkXG4gICAgfSk7XG4gIH1cblxuICBkaWRNb3VudCgpIHtcbiAgICB0aGlzLm9uQ2xpY2sodGhpcy5jbGlja0hhbmRsZXIpO1xuXG4gICAgd2luZG93Lm9uS2V5RG93bih0aGlzLmtleURvd25IYW5kbGVyKTtcbiAgfVxuXG4gIHdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMub2ZmQ2xpY2sodGhpcy5jbGlja0hhbmRsZXIpO1xuXG4gICAgd2luZG93Lm9mZktleURvd24odGhpcy5rZXlEb3duSGFuZGxlcik7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG5cbiAgICB0aGlzLmZvckVhY2hMZWFmRGl2KChsZWFmRGl2LCBpbmRleCkgPT4ge1xuICAgICAgKGluZGV4ID09PSAwKSA/XG4gICAgICAgIGxlYWZEaXYuc2hvdygpIDpcbiAgICAgICAgICBsZWFmRGl2LmhpZGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJkaXZcIjtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZpZXdcIlxuICB9O1xufVxuIl0sIm5hbWVzIjpbIlZpZXciLCJFTlRFUl9LRVlfQ09ERSIsImtleUNvZGVzIiwiRVNDQVBFX0tFWV9DT0RFIiwiQkFDS1NQQUNFX0tFWV9DT0RFIiwiQVJST1dfVVBfS0VZX0NPREUiLCJBUlJPV19ET1dOX0tFWV9DT0RFIiwiQVJST1dfTEVGVF9LRVlfQ09ERSIsIkFSUk9XX1JJR0hUX0tFWV9DT0RFIiwic3dpcGVSaWdodEN1c3RvbUhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJzd2lwZXNEaXNhYmxlZCIsImFyZVN3aXBlc0Rpc2FibGVkIiwiZGlzYWJsZVN3aXBlcyIsInNob3dMZWZ0TGVhZkRpdiIsIndhaXRUb0VuYWJsZVN3aXBlcyIsInN3aXBlTGVmdEN1c3RvbUhhbmRsZXIiLCJzaG93UmlnaHRMZWZ0RGl2IiwidGFwQ3VzdG9tSGFuZGxlciIsImNsaWNrSGFuZGxlciIsInBhZ2VYIiwid2lkdGgiLCJnZXRXaWR0aCIsImNsaWNrV2lkdGhSYXRpbyIsIk1BWElNVU1fQ0xJQ0tfV0lEVEhfUkFUSU8iLCJrZXlEb3duSGFuZGxlciIsImtleUNvZGUiLCJwcmV2ZW50RGVmYXVsdCIsInNob3dGaXJzdExlZnREaXYiLCJzaG93TGFzdExlYWZEaXYiLCJzaG93aW5nTGVhZkRpdiIsImZpbmRTaG93aW5nTGVhZkRpdiIsImxlYWZEaXZzIiwiZ2V0TGVhZkRpdnMiLCJpbmRleCIsImluZGV4T2YiLCJuZXh0SW5kZXgiLCJwcmV2aW91c0luZGV4Iiwic2hvd05leHRMZWFmRGl2IiwibGVuZ3RoIiwibGVhZkRpdnNMZW5ndGgiLCJwcmV2aW91c0xlYWZEaXYiLCJ3aWdnbGUiLCJuZXh0TGVhZkRpdiIsInNob3ciLCJoaWRlIiwiZm9yRWFjaExlYWZEaXYiLCJjYWxsYmFjayIsImZvckVhY2giLCJmaW5kIiwibGVhZkRpdiIsInNob3dpbmciLCJpc1Nob3dpbmciLCJzZXRTd2lwZXNEaXNhYmxlZCIsImVuYWJsZVN3aXBlcyIsImRlbGF5IiwiRU5BQkxFX1NXSVBFU19ERUxBWSIsInNldFRpbWVvdXQiLCJnZXRTdGF0ZSIsInNldExlZnREaXZzIiwidXBkYXRlU3RhdGUiLCJzZXRJbml0aWFsU3RhdGUiLCJ2aWV3Q2hpbGREaXZET01FbGVtZW50Tm9kZUxpc3QiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJWSUVXX0NISUxEX0RJVlNfU0VMRUNUT1IiLCJ2aWV3Q2hpbGREaXZET01FbGVtZW50cyIsImxlYWZOb2Rlc0Zyb21Ob2RlTGlzdCIsImVsZW1lbnRzRnJvbURPTUVsZW1lbnRzIiwiTGVhZkRpdiIsIm9uQ3VzdG9tVGFwIiwib25DdXN0b21Td2lwZUxlZnQiLCJvbkN1c3RvbVN3aXBlUmlnaHQiLCJzZXRTdGF0ZSIsImRpZE1vdW50Iiwib25DbGljayIsIndpbmRvdyIsIm9uS2V5RG93biIsIndpbGxVbm1vdW50Iiwib2ZmQ2xpY2siLCJvZmZLZXlEb3duIiwiaW5pdGlhbGlzZSIsIkVsZW1lbnQiLCJ0YWdOYW1lIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
604
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92aWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjtcblxuaW1wb3J0IHsga2V5Q29kZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCB3aW5kb3cgfSBmcm9tIFwiZWFzeVwiO1xuXG5pbXBvcnQgTGVhZkRpdiBmcm9tIFwiLi92aWV3L2Rpdi9sZWFmXCI7XG5pbXBvcnQgTWVudURpdiBmcm9tIFwiLi92aWV3L2Rpdi9tZW51XCI7XG5pbXBvcnQgdG91Y2hNaXhpbnMgZnJvbSBcIi4vbWl4aW5zL3RvdWNoXCI7XG5cbmltcG9ydCB7IGxlYWZOb2Rlc0Zyb21Ob2RlTGlzdCB9IGZyb20gXCIuL3V0aWxpdGllcy90cmVlXCI7XG5pbXBvcnQgeyBlbGVtZW50c0Zyb21ET01FbGVtZW50cyB9IGZyb20gXCIuL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBWSUVXX0NISUxEX0RJVlNfU0VMRUNUT1IgfSBmcm9tIFwiLi9zZWxlY3RvcnNcIjtcbmltcG9ydCB7IFNIT1dfREVMQVksIFpPT01fUkFUSU8sIFNDUk9MTF9ERUxBWSwgVVBfRElSRUNUSU9OLCBERUNFTEVSQVRJT04sIERPV05fRElSRUNUSU9OLCBNRU5VX0RJVl9TV0lQRV9CT1RUT00gfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBFTlRFUl9LRVlfQ09ERSxcbiAgICAgICAgRVNDQVBFX0tFWV9DT0RFLFxuICAgICAgICBCQUNLU1BBQ0VfS0VZX0NPREUsXG4gICAgICAgIEFSUk9XX1VQX0tFWV9DT0RFLFxuICAgICAgICBBUlJPV19ET1dOX0tFWV9DT0RFLFxuICAgICAgICBBUlJPV19MRUZUX0tFWV9DT0RFLFxuICAgICAgICBBUlJPV19SSUdIVF9LRVlfQ09ERSB9ID0ga2V5Q29kZXM7XG5cbmNsYXNzIFZpZXcgZXh0ZW5kcyBFbGVtZW50IHtcbiAgZG91YmxlVGFwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIHRoaXMuZW5hYmxlTmF0aXZlR2VzdHVyZXMoKTtcbiAgfVxuXG4gIHBpbmNoU3RhcnRDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgY29uc3QgbmF0aXZlR2VzdHVyZXNFbmFibGVkID0gdGhpcy5hcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQoKTtcblxuICAgIGlmIChuYXRpdmVHZXN0dXJlc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB6b29tID0gdGhpcy5nZXRab29tKCksXG4gICAgICAgICAgc3RhcnRab29tID0gem9vbTsgLy8vXG5cbiAgICB0aGlzLnNldFN0YXJ0Wm9vbShzdGFydFpvb20pO1xuICB9XG5cbiAgcGluY2hNb3ZlQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgcmF0aW8pID0+IHtcbiAgICBjb25zdCBuYXRpdmVHZXN0dXJlc0VuYWJsZWQgPSB0aGlzLmFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCgpO1xuXG4gICAgaWYgKG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0Wm9vbSA9IHRoaXMuZ2V0U3RhcnRab29tKCksXG4gICAgICAgICAgem9vbSA9IHN0YXJ0Wm9vbSAqIE1hdGguc3FydChyYXRpbyk7XG5cbiAgICB0aGlzLnNldFpvb20oem9vbSk7XG5cbiAgICB0aGlzLnpvb20oem9vbSk7XG4gIH1cblxuICBzd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCA9IHRoaXMuYXJlTmF0aXZlR2VzdHVyZXNFbmFibGVkKCk7XG5cbiAgICBpZiAobmF0aXZlR2VzdHVyZXNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TGVmdExlYWZEaXYoKTtcbiAgfVxuXG4gIHN3aXBlTGVmdEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBuYXRpdmVHZXN0dXJlc0VuYWJsZWQgPSB0aGlzLmFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCgpO1xuXG4gICAgaWYgKG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1JpZ2h0TGVmdERpdigpO1xuICB9XG5cbiAgc3dpcGVEb3duQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0LCBzcGVlZCkgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCA9IHRoaXMuYXJlTmF0aXZlR2VzdHVyZXNFbmFibGVkKCk7XG5cbiAgICBpZiAobmF0aXZlR2VzdHVyZXNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gRE9XTl9ESVJFQ1RJT047XG5cbiAgICB0aGlzLnNjcm9sbChzcGVlZCwgZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHN3aXBlVXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQsIHNwZWVkKSA9PiB7XG4gICAgY29uc3QgbmF0aXZlR2VzdHVyZXNFbmFibGVkID0gdGhpcy5hcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQoKTtcblxuICAgIGlmIChuYXRpdmVHZXN0dXJlc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpLFxuICAgICAgICAgIGJvdHRvbSA9IGhlaWdodCAtIHRvcDtcblxuICAgIGlmIChib3R0b20gPCBNRU5VX0RJVl9TV0lQRV9CT1RUT00pIHtcbiAgICAgIHRoaXMuc2hvd01lbnVEaXYoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IFVQX0RJUkVDVElPTjtcblxuICAgIHRoaXMuc2Nyb2xsKHNwZWVkLCBkaXJlY3Rpb24pO1xuICB9XG5cbiAgZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCA9IHRoaXMuYXJlTmF0aXZlR2VzdHVyZXNFbmFibGVkKCk7XG5cbiAgICBpZiAobmF0aXZlR2VzdHVyZXNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKSxcbiAgICAgICAgICBzdGFydFNjcm9sbFRvcCA9IHNjcm9sbFRvcDsgLy8vXG5cbiAgICB0aGlzLnNldFN0YXJ0U2Nyb2xsVG9wKHN0YXJ0U2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGRyYWdEb3duQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgdG9wLCBsZWZ0KSA9PiB7XG4gICAgY29uc3QgbmF0aXZlR2VzdHVyZXNFbmFibGVkID0gdGhpcy5hcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQoKTtcblxuICAgIGlmIChuYXRpdmVHZXN0dXJlc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IHRoaXMuZ2V0U3RhcnRTY3JvbGxUb3AoKSxcbiAgICAgICAgICBzY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCAtIHRvcDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBkcmFnVXBDdXN0b21IYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50LCB0b3AsIGxlZnQpID0+IHtcbiAgICBjb25zdCBuYXRpdmVHZXN0dXJlc0VuYWJsZWQgPSB0aGlzLmFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCgpO1xuXG4gICAgaWYgKG5hdGl2ZUdlc3R1cmVzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gdGhpcy5nZXRTdGFydFNjcm9sbFRvcCgpLFxuICAgICAgICAgIHNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wIC0gdG9wO1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgfVxuXG4gIHRhcEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcblxuICAgIGFsZXJ0KFwidmlldyB0YXAuLi5cIilcblxuICAgIHRoaXMuZGlzYWJsZU5hdGl2ZUdlc3R1cmVzKCk7XG4gIH1cblxuICBrZXlEb3duSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XG5cbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgIGNhc2UgRU5URVJfS0VZX0NPREU6XG4gICAgICBjYXNlIEFSUk9XX1JJR0hUX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0TGVmdERpdigpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEJBQ0tTUEFDRV9LRVlfQ09ERTpcbiAgICAgIGNhc2UgQVJST1dfTEVGVF9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dMZWZ0TGVhZkRpdigpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEVTQ0FQRV9LRVlfQ09ERToge1xuICAgICAgICAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBBUlJPV19VUF9LRVlfQ09ERToge1xuICAgICAgICB0aGlzLnNob3dGaXJzdExlZnREaXYoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBBUlJPV19ET1dOX0tFWV9DT0RFOiB7XG4gICAgICAgIHRoaXMuc2hvd0xhc3RMZWFmRGl2KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICBsZXQgem9vbSA9IHRoaXMuZ2V0Wm9vbSgpO1xuXG4gICAgem9vbSAvPSBaT09NX1JBVElPO1xuXG4gICAgdGhpcy5zZXRab29tKHpvb20pO1xuXG4gICAgdGhpcy56b29tKHpvb20pO1xuICB9XG5cbiAgem9vbUluKCkge1xuICAgIGxldCB6b29tID0gdGhpcy5nZXRab29tKCk7XG5cbiAgICB6b29tICo9IFpPT01fUkFUSU87XG5cbiAgICB0aGlzLnNldFpvb20oem9vbSk7XG5cbiAgICB0aGlzLnpvb20oem9vbSk7XG4gIH1cblxuICB6b29tKHpvb20pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRMZWFmRGl2ID0gdGhpcy5maW5kRGlzcGxheWVkTGVhZkRpdigpO1xuXG4gICAgZGlzcGxheWVkTGVhZkRpdi56b29tKHpvb20pO1xuICB9XG5cbiAgc2Nyb2xsKHNwZWVkLCBkaXJlY3Rpb24pIHtcbiAgICBsZXQgc2Nyb2xsVG9wID0gdGhpcy5nZXRTY3JvbGxUb3AoKTtcblxuICAgIHNjcm9sbFRvcCArPSBzcGVlZCAqIFNDUk9MTF9ERUxBWTtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG5cbiAgICBsZXQgaW50ZXJ2YWwgPSB0aGlzLmdldEludGVydmFsKCk7XG5cbiAgICBpZiAoaW50ZXJ2YWwgIT09IG51bGwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc3BlZWQgPSBzcGVlZCAtIGRpcmVjdGlvbiAqIERFQ0VMRVJBVElPTjtcblxuICAgICAgaWYgKChzcGVlZCAqIGRpcmVjdGlvbikgPCAwKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuXG4gICAgICAgIGludGVydmFsID0gbnVsbDtcblxuICAgICAgICB0aGlzLnNldEludGVydmFsKGludGVydmFsKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNjcm9sbFRvcCA9IHRoaXMuZ2V0U2Nyb2xsVG9wKCk7XG5cbiAgICAgIHNjcm9sbFRvcCArPSBzcGVlZCAqIFNDUk9MTF9ERUxBWTtcblxuICAgICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgICB9LCBTQ1JPTExfREVMQVkpO1xuXG4gICAgdGhpcy5zZXRJbnRlcnZhbChpbnRlcnZhbCk7XG4gIH1cblxuICBzaG93Rmlyc3RMZWZ0RGl2KCkge1xuICAgIGNvbnN0IGRpc3BsYXllZExlYWZEaXYgPSB0aGlzLmZpbmREaXNwbGF5ZWRMZWFmRGl2KCksXG4gICAgICAgICAgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBsZWFmRGl2cy5pbmRleE9mKGRpc3BsYXllZExlYWZEaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IDAsXG4gICAgICAgICAgcHJldmlvdXNJbmRleCA9IGluZGV4OyAgLy8vXG5cbiAgICB0aGlzLnNob3dOZXh0TGVhZkRpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgc2hvd0xlZnRMZWFmRGl2KCkge1xuICAgIGNvbnN0IGRpc3BsYXllZExlYWZEaXYgPSB0aGlzLmZpbmREaXNwbGF5ZWRMZWFmRGl2KCksXG4gICAgICAgICAgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBsZWFmRGl2cy5pbmRleE9mKGRpc3BsYXllZExlYWZEaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGluZGV4IC0gMSxcbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaW5kZXg7ICAvLy9cblxuICAgIHRoaXMuc2hvd05leHRMZWFmRGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCk7XG4gIH1cblxuICBzaG93UmlnaHRMZWZ0RGl2KCkge1xuICAgIGNvbnN0IGRpc3BsYXllZExlYWZEaXYgPSB0aGlzLmZpbmREaXNwbGF5ZWRMZWFmRGl2KCksXG4gICAgICAgICAgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgaW5kZXggPSBsZWFmRGl2cy5pbmRleE9mKGRpc3BsYXllZExlYWZEaXYpLFxuICAgICAgICAgIG5leHRJbmRleCA9IGluZGV4ICsgMSxcbiAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaW5kZXg7ICAvLy9cblxuICAgIHRoaXMuc2hvd05leHRMZWFmRGl2KG5leHRJbmRleCwgcHJldmlvdXNJbmRleCk7XG4gIH1cblxuICBzaG93TGFzdExlYWZEaXYoKSB7XG4gICAgY29uc3QgZGlzcGxheWVkTGVhZkRpdiA9IHRoaXMuZmluZERpc3BsYXllZExlYWZEaXYoKSxcbiAgICAgICAgICBsZWFmRGl2cyA9IHRoaXMuZ2V0TGVhZkRpdnMoKSxcbiAgICAgICAgICBpbmRleCA9IGxlYWZEaXZzLmluZGV4T2YoZGlzcGxheWVkTGVhZkRpdiksXG4gICAgICAgICAgbGVhZkRpdnNMZW5ndGggPSBsZWFmRGl2cy5sZW5ndGgsXG4gICAgICAgICAgbmV4dEluZGV4ID0gbGVhZkRpdnNMZW5ndGggLSAxLFxuICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBpbmRleDsgIC8vL1xuXG4gICAgdGhpcy5zaG93TmV4dExlYWZEaXYobmV4dEluZGV4LCBwcmV2aW91c0luZGV4KTtcbiAgfVxuXG4gIHNob3dOZXh0TGVhZkRpdihuZXh0SW5kZXgsIHByZXZpb3VzSW5kZXgpIHtcbiAgICBjb25zdCBsZWFmRGl2cyA9IHRoaXMuZ2V0TGVhZkRpdnMoKSxcbiAgICAgICAgICBsZWFmRGl2c0xlbmd0aCA9IGxlYWZEaXZzLmxlbmd0aCxcbiAgICAgICAgICBwcmV2aW91c0xlYWZEaXYgPSBsZWFmRGl2c1twcmV2aW91c0luZGV4XTtcblxuICAgIGlmICgobmV4dEluZGV4ID09PSAtMSkgfHwgKG5leHRJbmRleCA9PT0gcHJldmlvdXNJbmRleCkgfHwgKG5leHRJbmRleCA9PT0gbGVhZkRpdnNMZW5ndGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJldmlvdXNMZWFmRGl2LmhpZGUoKTtcblxuICAgIGNvbnN0IG5leHRMZWFmRGl2ID0gbGVhZkRpdnNbbmV4dEluZGV4XSxcbiAgICAgICAgICB6b29tID0gdGhpcy5nZXRab29tKCk7XG5cbiAgICBuZXh0TGVhZkRpdi56b29tKHpvb20pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSAwO1xuXG4gICAgICBuZXh0TGVhZkRpdi5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcblxuICAgICAgbmV4dExlYWZEaXYuc2hvdygpO1xuICAgIH0sIFNIT1dfREVMQVkpO1xuICB9XG5cbiAgZW5hYmxlTmF0aXZlR2VzdHVyZXMoKSB7XG4gICAgdGhpcy5hZGRDbGFzcyhcIm5hdGl2ZS1nZXN0dXJlc1wiKTtcbiAgfVxuXG4gIGRpc2FibGVOYXRpdmVHZXN0dXJlcygpIHtcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwibmF0aXZlLWdlc3R1cmVzXCIpO1xuICB9XG5cbiAgZm9yRWFjaExlYWZEaXYoY2FsbGJhY2spIHtcbiAgICBjb25zdCBsZWFmRGl2cyA9IHRoaXMuZ2V0TGVhZkRpdnMoKTtcblxuICAgIGxlYWZEaXZzLmZvckVhY2goY2FsbGJhY2spO1xuICB9XG5cbiAgZmluZERpc3BsYXllZExlYWZEaXYoKSB7XG4gICAgY29uc3QgbGVhZkRpdnMgPSB0aGlzLmdldExlYWZEaXZzKCksXG4gICAgICAgICAgZGlzcGxheWVkTGVhZkRpdiA9IGxlYWZEaXZzLmZpbmQoKGxlYWZEaXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXllZCA9IGxlYWZEaXYuaXNEaXNwbGF5ZWQoKTtcblxuICAgICAgICAgICAgaWYgKGRpc3BsYXllZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBkaXNwbGF5ZWRMZWFmRGl2O1xuICB9XG5cbiAgcmV0cmlldmVMZWFmRGl2cygpIHtcbiAgICBjb25zdCB2aWV3Q2hpbGREaXZET01FbGVtZW50Tm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFZJRVdfQ0hJTERfRElWU19TRUxFQ1RPUiksXG4gICAgICAgICAgdmlld0NoaWxkRGl2RE9NRWxlbWVudHMgPSBsZWFmTm9kZXNGcm9tTm9kZUxpc3Qodmlld0NoaWxkRGl2RE9NRWxlbWVudE5vZGVMaXN0KSwgIC8vL1xuICAgICAgICAgIGxlYWZEaXZzID0gZWxlbWVudHNGcm9tRE9NRWxlbWVudHModmlld0NoaWxkRGl2RE9NRWxlbWVudHMsIExlYWZEaXYpO1xuXG4gICAgcmV0dXJuIGxlYWZEaXZzO1xuICB9XG5cbiAgZ2V0Wm9vbSgpIHtcbiAgICBjb25zdCB7IHpvb20gfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiB6b29tO1xuICB9XG5cbiAgc2V0Wm9vbSh6b29tKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICB6b29tXG4gICAgfSk7XG4gIH1cblxuICBnZXRMZWFmRGl2cygpIHtcbiAgICBjb25zdCB7IGxlYWZEaXZzIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gbGVhZkRpdnM7XG4gIH1cblxuICBzZXRMZWZ0RGl2cyhsZWFmRGl2cykge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgbGVhZkRpdnNcbiAgICB9KTtcbiAgfVxuXG4gIGdldEludGVydmFsKCkge1xuICAgIGNvbnN0IHsgaW50ZXJ2YWwgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiBpbnRlcnZhbDtcbiAgfVxuXG4gIHNldEludGVydmFsKGludGVydmFsKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBpbnRlcnZhbFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3RhcnRab29tKCkge1xuICAgIGNvbnN0IHsgc3RhcnRab29tIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gc3RhcnRab29tO1xuICB9XG5cbiAgc2V0U3RhcnRab29tKHN0YXJ0Wm9vbSkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgc3RhcnRab29tXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdGFydFNjcm9sbFRvcCgpIHtcbiAgICBjb25zdCB7IHN0YXJ0U2Nyb2xsVG9wIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gc3RhcnRTY3JvbGxUb3A7XG4gIH1cblxuICBzZXRTdGFydFNjcm9sbFRvcChzdGFydFNjcm9sbFRvcCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgc3RhcnRTY3JvbGxUb3BcbiAgICB9KTtcbiAgfVxuXG4gIGFyZU5hdGl2ZUdlc3R1cmVzRW5hYmxlZCgpIHtcbiAgICBjb25zdCBuYXRpdmVHZXN0dXJlc0VuYWJsZWQgPSB0aGlzLmhhc0NsYXNzKFwibmF0aXZlLWdlc3R1cmVzXCIpO1xuXG4gICAgcmV0dXJuIG5hdGl2ZUdlc3R1cmVzRW5hYmxlZDtcbiAgfVxuXG4gIHNldEluaXRpYWxTdGF0ZSgpIHtcbiAgICBjb25zdCB6b29tID0gMSxcbiAgICAgICAgICBsZWFmRGl2cyA9IHRoaXMucmV0cmlldmVMZWFmRGl2cygpLFxuICAgICAgICAgIGludGVydmFsID0gbnVsbCxcbiAgICAgICAgICBzdGFydFpvb20gPSBudWxsLFxuICAgICAgICAgIHN0YXJ0U2Nyb2xsVG9wID0gbnVsbDtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgem9vbSxcbiAgICAgIGxlYWZEaXZzLFxuICAgICAgaW50ZXJ2YWwsXG4gICAgICBzdGFydFpvb20sXG4gICAgICBzdGFydFNjcm9sbFRvcFxuICAgIH0pO1xuICB9XG5cbiAgZGlkTW91bnQoKSB7XG4gICAgdGhpcy5lbmFibGVUb3VjaCgpO1xuXG4gICAgdGhpcy5vbkN1c3RvbVRhcCh0aGlzLnRhcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21EcmFnVXAodGhpcy5kcmFnVXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tRHJhZ0Rvd24odGhpcy5kcmFnRG93bkN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21EcmFnU3RhcnQodGhpcy5kcmFnU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU3dpcGVVcCh0aGlzLnN3aXBlVXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tU3dpcGVEb3duKHRoaXMuc3dpcGVEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vbkN1c3RvbVN3aXBlTGVmdCh0aGlzLnN3aXBlTGVmdEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21Td2lwZVJpZ2h0KHRoaXMuc3dpcGVSaWdodEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub25DdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tUGluY2hTdGFydCh0aGlzLnBpbmNoU3RhcnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9uQ3VzdG9tRG91YmxlVGFwKHRoaXMuZG91YmxlVGFwQ3VzdG9tSGFuZGxlcik7XG5cbiAgICB3aW5kb3cub25LZXlEb3duKHRoaXMua2V5RG93bkhhbmRsZXIpO1xuICB9XG5cbiAgd2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5vZmZDdXN0b21UYXAodGhpcy50YXBDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbURyYWdVcCh0aGlzLmRyYWdVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ0Rvd24odGhpcy5kcmFnRG93bkN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tRHJhZ1N0YXJ0KHRoaXMuZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZVVwKHRoaXMuc3dpcGVVcEN1c3RvbUhhbmRsZXIpO1xuICAgIHRoaXMub2ZmQ3VzdG9tU3dpcGVEb3duKHRoaXMuc3dpcGVEb3duQ3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Td2lwZUxlZnQodGhpcy5zd2lwZUxlZnRDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVN3aXBlUmlnaHQodGhpcy5zd2lwZVJpZ2h0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21QaW5jaE1vdmUodGhpcy5waW5jaE1vdmVDdXN0b21IYW5kbGVyKTtcbiAgICB0aGlzLm9mZkN1c3RvbVBpbmNoU3RhcnQodGhpcy5waW5jaFN0YXJ0Q3VzdG9tSGFuZGxlcik7XG4gICAgdGhpcy5vZmZDdXN0b21Eb3VibGVUYXAodGhpcy5kb3VibGVUYXBDdXN0b21IYW5kbGVyKTtcblxuICAgIHRoaXMuZGlzYWJsZVRvdWNoKCk7XG5cbiAgICB3aW5kb3cub2ZmS2V5RG93bih0aGlzLmtleURvd25IYW5kbGVyKTtcbiAgfVxuXG4gIGNoaWxkRWxlbWVudHMoKSB7XG4gICAgcmV0dXJuIChcblxuICAgICAgPE1lbnVEaXYvPlxuXG4gICAgKTtcbiAgfVxuXG4gIGluaXRpYWxpc2UoKSB7XG4gICAgdGhpcy5hc3NpZ25Db250ZXh0KCk7XG5cbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xuXG4gICAgdGhpcy5mb3JFYWNoTGVhZkRpdigobGVhZkRpdiwgaW5kZXgpID0+IHtcbiAgICAgIChpbmRleCA9PT0gMCkgP1xuICAgICAgICBsZWFmRGl2LnNob3coKSA6XG4gICAgICAgICAgbGVhZkRpdi5oaWRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgdGFnTmFtZSA9IFwiZGl2XCI7XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wZXJ0aWVzID0ge1xuICAgIGNsYXNzTmFtZTogXCJ2aWV3XCJcbiAgfTtcbn1cblxuT2JqZWN0LmFzc2lnbihWaWV3LnByb3RvdHlwZSwgdG91Y2hNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGUoVmlldylgXG5cbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xuICBcbiAgLm5hdGl2ZS1nZXN0dXJlcyB7XG4gICAgdG91Y2gtYWN0aW9uOiBhdXRvO1xuICB9XG4gICAgXG5gO1xuIl0sIm5hbWVzIjpbIkVOVEVSX0tFWV9DT0RFIiwia2V5Q29kZXMiLCJFU0NBUEVfS0VZX0NPREUiLCJCQUNLU1BBQ0VfS0VZX0NPREUiLCJBUlJPV19VUF9LRVlfQ09ERSIsIkFSUk9XX0RPV05fS0VZX0NPREUiLCJBUlJPV19MRUZUX0tFWV9DT0RFIiwiQVJST1dfUklHSFRfS0VZX0NPREUiLCJWaWV3IiwiZG91YmxlVGFwQ3VzdG9tSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsImVuYWJsZU5hdGl2ZUdlc3R1cmVzIiwicGluY2hTdGFydEN1c3RvbUhhbmRsZXIiLCJuYXRpdmVHZXN0dXJlc0VuYWJsZWQiLCJhcmVOYXRpdmVHZXN0dXJlc0VuYWJsZWQiLCJ6b29tIiwiZ2V0Wm9vbSIsInN0YXJ0Wm9vbSIsInNldFN0YXJ0Wm9vbSIsInBpbmNoTW92ZUN1c3RvbUhhbmRsZXIiLCJyYXRpbyIsImdldFN0YXJ0Wm9vbSIsIk1hdGgiLCJzcXJ0Iiwic2V0Wm9vbSIsInN3aXBlUmlnaHRDdXN0b21IYW5kbGVyIiwic2hvd0xlZnRMZWFmRGl2Iiwic3dpcGVMZWZ0Q3VzdG9tSGFuZGxlciIsInNob3dSaWdodExlZnREaXYiLCJzd2lwZURvd25DdXN0b21IYW5kbGVyIiwidG9wIiwibGVmdCIsInNwZWVkIiwiZGlyZWN0aW9uIiwiRE9XTl9ESVJFQ1RJT04iLCJzY3JvbGwiLCJzd2lwZVVwQ3VzdG9tSGFuZGxlciIsImhlaWdodCIsImdldEhlaWdodCIsImJvdHRvbSIsIk1FTlVfRElWX1NXSVBFX0JPVFRPTSIsInNob3dNZW51RGl2IiwiVVBfRElSRUNUSU9OIiwiZHJhZ1N0YXJ0Q3VzdG9tSGFuZGxlciIsInNjcm9sbFRvcCIsImdldFNjcm9sbFRvcCIsInN0YXJ0U2Nyb2xsVG9wIiwic2V0U3RhcnRTY3JvbGxUb3AiLCJkcmFnRG93bkN1c3RvbUhhbmRsZXIiLCJnZXRTdGFydFNjcm9sbFRvcCIsInNldFNjcm9sbFRvcCIsImRyYWdVcEN1c3RvbUhhbmRsZXIiLCJ0YXBDdXN0b21IYW5kbGVyIiwiYWxlcnQiLCJkaXNhYmxlTmF0aXZlR2VzdHVyZXMiLCJrZXlEb3duSGFuZGxlciIsImtleUNvZGUiLCJzaG93Rmlyc3RMZWZ0RGl2Iiwic2hvd0xhc3RMZWFmRGl2Iiwiem9vbU91dCIsIlpPT01fUkFUSU8iLCJ6b29tSW4iLCJkaXNwbGF5ZWRMZWFmRGl2IiwiZmluZERpc3BsYXllZExlYWZEaXYiLCJTQ1JPTExfREVMQVkiLCJpbnRlcnZhbCIsImdldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsInNldEludGVydmFsIiwiREVDRUxFUkFUSU9OIiwibGVhZkRpdnMiLCJnZXRMZWFmRGl2cyIsImluZGV4IiwiaW5kZXhPZiIsIm5leHRJbmRleCIsInByZXZpb3VzSW5kZXgiLCJzaG93TmV4dExlYWZEaXYiLCJsZWFmRGl2c0xlbmd0aCIsImxlbmd0aCIsInByZXZpb3VzTGVhZkRpdiIsImhpZGUiLCJuZXh0TGVhZkRpdiIsInNldFRpbWVvdXQiLCJzaG93IiwiU0hPV19ERUxBWSIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJmb3JFYWNoTGVhZkRpdiIsImNhbGxiYWNrIiwiZm9yRWFjaCIsImZpbmQiLCJsZWFmRGl2IiwiZGlzcGxheWVkIiwiaXNEaXNwbGF5ZWQiLCJyZXRyaWV2ZUxlYWZEaXZzIiwidmlld0NoaWxkRGl2RE9NRWxlbWVudE5vZGVMaXN0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiVklFV19DSElMRF9ESVZTX1NFTEVDVE9SIiwidmlld0NoaWxkRGl2RE9NRWxlbWVudHMiLCJsZWFmTm9kZXNGcm9tTm9kZUxpc3QiLCJlbGVtZW50c0Zyb21ET01FbGVtZW50cyIsIkxlYWZEaXYiLCJnZXRTdGF0ZSIsInVwZGF0ZVN0YXRlIiwic2V0TGVmdERpdnMiLCJoYXNDbGFzcyIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiZGlkTW91bnQiLCJlbmFibGVUb3VjaCIsIm9uQ3VzdG9tVGFwIiwib25DdXN0b21EcmFnVXAiLCJvbkN1c3RvbURyYWdEb3duIiwib25DdXN0b21EcmFnU3RhcnQiLCJvbkN1c3RvbVN3aXBlVXAiLCJvbkN1c3RvbVN3aXBlRG93biIsIm9uQ3VzdG9tU3dpcGVMZWZ0Iiwib25DdXN0b21Td2lwZVJpZ2h0Iiwib25DdXN0b21QaW5jaE1vdmUiLCJvbkN1c3RvbVBpbmNoU3RhcnQiLCJvbkN1c3RvbURvdWJsZVRhcCIsIndpbmRvdyIsIm9uS2V5RG93biIsIndpbGxVbm1vdW50Iiwib2ZmQ3VzdG9tVGFwIiwib2ZmQ3VzdG9tRHJhZ1VwIiwib2ZmQ3VzdG9tRHJhZ0Rvd24iLCJvZmZDdXN0b21EcmFnU3RhcnQiLCJvZmZDdXN0b21Td2lwZVVwIiwib2ZmQ3VzdG9tU3dpcGVEb3duIiwib2ZmQ3VzdG9tU3dpcGVMZWZ0Iiwib2ZmQ3VzdG9tU3dpcGVSaWdodCIsIm9mZkN1c3RvbVBpbmNoTW92ZSIsIm9mZkN1c3RvbVBpbmNoU3RhcnQiLCJvZmZDdXN0b21Eb3VibGVUYXAiLCJkaXNhYmxlVG91Y2giLCJvZmZLZXlEb3duIiwiY2hpbGRFbGVtZW50cyIsIk1lbnVEaXYiLCJpbml0aWFsaXNlIiwiYXNzaWduQ29udGV4dCIsIkVsZW1lbnQiLCJ0YWdOYW1lIiwiZGVmYXVsdFByb3BlcnRpZXMiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJ0b3VjaE1peGlucyIsIndpdGhTdHlsZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "highmark-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.135",
4
+ "version": "0.0.138",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/highmark-cli",
7
7
  "description": "Extensible, styleable Markdown.",
@@ -20,11 +20,11 @@
20
20
  },
21
21
  "devDependencies": {
22
22
  "@swc/core": "1.2.52",
23
- "easy": "^16.0.19",
24
- "easy-layout": "^6.0.144",
25
- "easy-with-style": "^3.0.348",
23
+ "easy": "^16.0.21",
24
+ "easy-layout": "^6.0.145",
25
+ "easy-with-style": "^3.0.349",
26
26
  "esbuild": "^0.9.2",
27
- "juxtapose": "^4.0.80",
27
+ "juxtapose": "^4.0.81",
28
28
  "watchful-cli": "^1.7.44"
29
29
  },
30
30
  "scripts": {
package/src/client.js CHANGED
@@ -9,7 +9,7 @@ import { Body, Element } from "easy";
9
9
  import View from "./view";
10
10
 
11
11
  import { elementFromDOMElement } from "./utilities/element";
12
- import { LOADING_DIV_SELECTOR, VIEW_DIV_SELECTOR } from "./constants";
12
+ import { LOADING_DIV_SELECTOR, VIEW_DIV_SELECTOR } from "./selectors";
13
13
 
14
14
  const { renderStyles } = withStyle;
15
15
 
@@ -17,11 +17,7 @@ renderStyles();
17
17
 
18
18
  const viewDOMElement = document.querySelector(VIEW_DIV_SELECTOR),
19
19
  body = new Body(),
20
- view = elementFromDOMElement(viewDOMElement, () =>
21
-
22
- <View/>
23
-
24
- ); ///
20
+ view = elementFromDOMElement(viewDOMElement, View); ///
25
21
 
26
22
  body.mount(view);
27
23