single-scripture-rcl 3.4.13 → 3.4.14-beta.15
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.
|
@@ -15,6 +15,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
15
15
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
16
16
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
17
17
|
import "core-js/modules/es.array.last-index-of.js";
|
|
18
|
+
import "core-js/modules/es.array.concat.js";
|
|
18
19
|
import "core-js/modules/es.array.is-array.js";
|
|
19
20
|
import "core-js/modules/es.symbol.js";
|
|
20
21
|
import "core-js/modules/es.symbol.description.js";
|
|
@@ -51,10 +52,10 @@ import "core-js/modules/es.object.set-prototype-of.js";
|
|
|
51
52
|
import "core-js/modules/es.array.reverse.js";
|
|
52
53
|
// @ts-ignore
|
|
53
54
|
import * as React from 'react';
|
|
54
|
-
import { AlignmentHelpers, UsfmFileConversionHelpers, usfmHelpers } from 'word-aligner-rcl';
|
|
55
|
+
import { AlignmentHelpers, migrateOriginalLanguageHelpers, UsfmFileConversionHelpers, usfmHelpers } from 'word-aligner-rcl';
|
|
55
56
|
import { isEqual } from '@react-hookz/deep-equal';
|
|
56
57
|
import { BookObjectsType, ScriptureConfig, ScriptureReference, ServerConfig, VerseObjectsType } from '../types';
|
|
57
|
-
import {
|
|
58
|
+
import { getAlignments, getScriptureResourceSettings } from '../utils/ScriptureSettings';
|
|
58
59
|
import { ORIGINAL_SOURCE } from '../utils';
|
|
59
60
|
import { getVersesForRef } from './useScripture';
|
|
60
61
|
/**
|
|
@@ -239,6 +240,16 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
239
240
|
}
|
|
240
241
|
return verseObjects;
|
|
241
242
|
}, [originalScriptureBookObjects, chapter, verse, projectId]);
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* get current verseObjects
|
|
246
|
+
* @param {VerseObjectsType} _updatedVerseObjects - optional overrides updatedVerseObjects
|
|
247
|
+
*/
|
|
248
|
+
function getCurrentVerseObjects() {
|
|
249
|
+
var _updatedVerseObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : updatedVerseObjects;
|
|
250
|
+
var currentVerseObjects_ = _updatedVerseObjects || initialVerseObjects;
|
|
251
|
+
return currentVerseObjects_;
|
|
252
|
+
}
|
|
242
253
|
React.useEffect(function () {
|
|
243
254
|
// update alignment status when aligner is hidden
|
|
244
255
|
var notEmpty = !!initialVerseObjects;
|
|
@@ -247,7 +258,7 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
247
258
|
// skip if aligner is being shown
|
|
248
259
|
if (notEmpty) {
|
|
249
260
|
// skip if empty
|
|
250
|
-
var currentVerseObjects_ =
|
|
261
|
+
var currentVerseObjects_ = getCurrentVerseObjects();
|
|
251
262
|
if (!enableAlignment) {
|
|
252
263
|
aligned_ = true;
|
|
253
264
|
} else if (newVerseText && newVerseText !== initialVerseText) {
|
|
@@ -289,7 +300,7 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
289
300
|
}
|
|
290
301
|
if (verseTextChanged && newVerseText) {
|
|
291
302
|
console.log("getChanges - applying new text:", newVerseText);
|
|
292
|
-
var currentVerseObjects_ = updatedVerseObjects_
|
|
303
|
+
var currentVerseObjects_ = getCurrentVerseObjects(updatedVerseObjects_);
|
|
293
304
|
updatedVerseObjects_ && console.log("getChanges - applying updated alignments");
|
|
294
305
|
var _AlignmentHelpers$upd2 = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseObjects_, newVerseText),
|
|
295
306
|
targetVerseObjects = _AlignmentHelpers$upd2.targetVerseObjects;
|
|
@@ -314,6 +325,52 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
314
325
|
return {};
|
|
315
326
|
}
|
|
316
327
|
|
|
328
|
+
/**
|
|
329
|
+
* compare initial alignments with final to see if changed
|
|
330
|
+
* @param {string} prefix
|
|
331
|
+
* @param {VerseObjectsType} _updatedVerseObjects
|
|
332
|
+
* @param {VerseObjectsType} _initialVerseObjects
|
|
333
|
+
* @returns {boolean} true if changed
|
|
334
|
+
*/
|
|
335
|
+
function isMigrated(prefix) {
|
|
336
|
+
var _updatedVerseObjects = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : updatedVerseObjects;
|
|
337
|
+
var _initialVerseObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : initialVerseObjects;
|
|
338
|
+
var updatedAlignments = getAlignments(_updatedVerseObjects);
|
|
339
|
+
var initialAlignments = getAlignments(_initialVerseObjects);
|
|
340
|
+
var same = updatedAlignments.length === initialAlignments.length; // first make sure lengths are the same
|
|
341
|
+
var firstDiff;
|
|
342
|
+
if (same) {
|
|
343
|
+
// even if lengths are the same double check each alignment
|
|
344
|
+
for (var i = 0; i < updatedAlignments.length; i++) {
|
|
345
|
+
var updatedAlignment = updatedAlignments[i];
|
|
346
|
+
var initialAlignment = initialAlignments[i];
|
|
347
|
+
if (!isEqual(updatedAlignment, initialAlignment)) {
|
|
348
|
+
firstDiff = i;
|
|
349
|
+
same = false;
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
var different = !same;
|
|
355
|
+
if (different) {
|
|
356
|
+
console.log("".concat(prefix, " - target verse alignments migrated to match original language, first difference is at ").concat(firstDiff), updatedVerseObjects, initialVerseObjects);
|
|
357
|
+
}
|
|
358
|
+
return different;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* do alignments migration
|
|
363
|
+
* @param {string} prefix
|
|
364
|
+
* @param {VerseObjectsType} updatedVerseObjects
|
|
365
|
+
*/
|
|
366
|
+
function migrateAlignments(prefix) {
|
|
367
|
+
var updatedVerseObjects = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
368
|
+
updatedVerseObjects = updatedVerseObjects || getCurrentVerseObjects();
|
|
369
|
+
var _updatedVerseObjects = migrateOriginalLanguageHelpers.migrateTargetAlignmentsToOriginal(updatedVerseObjects, originalVerseObjects);
|
|
370
|
+
isMigrated(prefix, _updatedVerseObjects, updatedVerseObjects);
|
|
371
|
+
return _updatedVerseObjects;
|
|
372
|
+
}
|
|
373
|
+
|
|
317
374
|
/**
|
|
318
375
|
* callback for when user clicked on alignment button - will show if not already shown
|
|
319
376
|
*/
|
|
@@ -326,7 +383,7 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
326
383
|
*/
|
|
327
384
|
function _handleAlignmentClick() {
|
|
328
385
|
_handleAlignmentClick = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
329
|
-
var _alignerData,
|
|
386
|
+
var _alignerData, originalVerseUsfm, _updatedVerseObjects, targetVerseUSFM, _AlignmentHelpers$par, wordBank, alignments;
|
|
330
387
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
331
388
|
while (1) switch (_context.prev = _context.next) {
|
|
332
389
|
case 0:
|
|
@@ -341,11 +398,13 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
341
398
|
if (!alignerData) {
|
|
342
399
|
// if word aligner not shown
|
|
343
400
|
console.log("handleAlignmentClick - toggle ON alignment");
|
|
344
|
-
targetVerseUSFM = getCurrentVerseUsfm(updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText);
|
|
345
401
|
originalVerseUsfm = null;
|
|
402
|
+
_updatedVerseObjects = updatedVerseObjects;
|
|
346
403
|
if (originalVerseObjects) {
|
|
347
404
|
originalVerseUsfm = UsfmFileConversionHelpers.convertVerseDataToUSFM(originalVerseObjects);
|
|
405
|
+
_updatedVerseObjects = migrateAlignments('handleAlignmentClick()');
|
|
348
406
|
}
|
|
407
|
+
targetVerseUSFM = getCurrentVerseUsfm(_updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText);
|
|
349
408
|
_AlignmentHelpers$par = AlignmentHelpers.parseUsfmToWordAlignerData(targetVerseUSFM, originalVerseUsfm), wordBank = _AlignmentHelpers$par.targetWords, alignments = _AlignmentHelpers$par.verseAlignments;
|
|
350
409
|
_alignerData = {
|
|
351
410
|
wordBank: wordBank,
|
|
@@ -375,7 +434,7 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
375
434
|
}
|
|
376
435
|
function updateVerseWithNewAlignments() {
|
|
377
436
|
var _newAlignments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : newAlignments;
|
|
378
|
-
var currentVerseObjects_ =
|
|
437
|
+
var currentVerseObjects_ = getCurrentVerseObjects();
|
|
379
438
|
var targetVerseText = newVerseText || UsfmFileConversionHelpers.convertVerseDataToUSFM(currentVerseObjects_);
|
|
380
439
|
var verseUsfm = AlignmentHelpers.addAlignmentsToVerseUSFM(_newAlignments.targetWords, _newAlignments.verseAlignments, targetVerseText);
|
|
381
440
|
var alignedVerseObjects = usfmHelpers.usfmVerseToJson(verseUsfm);
|
|
@@ -455,13 +514,17 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
455
514
|
if (enableEdit) {
|
|
456
515
|
if (editing_ !== editing) {
|
|
457
516
|
_newVerseText = _newVerseText || initialVerseText;
|
|
458
|
-
_updatedVerseObjects = updatedVerseObjects;
|
|
517
|
+
_updatedVerseObjects = updatedVerseObjects || currentVerseObjects;
|
|
459
518
|
_verseTextChanged = _newVerseText !== initialVerseText;
|
|
460
519
|
newState = {
|
|
461
520
|
editing: editing_,
|
|
462
521
|
newVerseText: _newVerseText,
|
|
463
522
|
verseTextChanged: _verseTextChanged
|
|
464
523
|
};
|
|
524
|
+
if (editing_) {
|
|
525
|
+
// by default do migration of alignments to match latest original language
|
|
526
|
+
_updatedVerseObjects = migrateAlignments('setEditing()', _updatedVerseObjects);
|
|
527
|
+
}
|
|
465
528
|
if (!_verseTextChanged) {
|
|
466
529
|
// fallback to make sure text from verseObjects matches current text
|
|
467
530
|
verseText = UsfmFileConversionHelpers.getUsfmForVerseContent({
|
|
@@ -488,7 +551,8 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
488
551
|
return _setEditing.apply(this, arguments);
|
|
489
552
|
}
|
|
490
553
|
function setVerseChanged(changed, newVerseText, _initialVerseText) {
|
|
491
|
-
var
|
|
554
|
+
var _targetVerseObjects = currentVerseObjects || initialVerseObjects;
|
|
555
|
+
var _AlignmentHelpers$upd3 = AlignmentHelpers.updateAlignmentsToTargetVerse(_targetVerseObjects, newVerseText),
|
|
492
556
|
targetVerseText = _AlignmentHelpers$upd3.targetVerseText;
|
|
493
557
|
var aligned = isUsfmAligned(targetVerseText, originalVerseObjects);
|
|
494
558
|
var verseTextChanged = newVerseText !== initialVerseText;
|
|
@@ -582,4 +646,4 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
582
646
|
}
|
|
583
647
|
};
|
|
584
648
|
}
|
|
585
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJTZXJ2ZXJDb25maWciLCJWZXJzZU9iamVjdHNUeXBlIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsInZlcnNlT2JqZWN0c0hhdmVXb3JkcyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9vcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9BbGlnbm1lbnRIZWxwZXJzJGV4dCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJhbGxTcGFjZXMiLCJ0ZXh0IiwiaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5IiwiaW5pdGlhbFZlcnNlVGV4dCIsImNoYW5nZWQiLCJsZW5ndGhEaWZmZXJlbmNlIiwiZmlyc3RQYXJ0T2ZJbml0aWFsIiwic3Vic3RyaW5nIiwibGFzdENoYXJzIiwicG9zIiwibGFzdEluZGV4T2YiLCJsYXN0VXNmbVRhZyIsImVuZHNXaXRoUXVvdGUiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiX3JlZiIsImN1cnJlbnRJbmRleCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJodHRwQ29uZmlnIiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwiX1JlYWN0JHVzZVN0YXRlMiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX3N0YXRlIiwiY2hhcHRlciIsInZlcnNlIiwicHJvamVjdElkIiwiYmFzaWNSZWZlcmVuY2UiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2xlYXJDaGFuZ2VzIiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwiYm9va0lkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfdmVyc2VSZWZlcmVuY2UkdmVyc2UiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJfbmV3U3RhdGUiLCJ1cGRhdGVkVmVyc2VPYmplY3RzXyIsInVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQyIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyR2ZXJzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfY2FsbGVlIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJfQWxpZ25tZW50SGVscGVycyRwYXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEiLCJ0YXJnZXRXb3JkcyIsInZlcnNlQWxpZ25tZW50cyIsImVycm9yTWVzc2FnZSIsIl9uZXdBbGlnbm1lbnRzIiwidmVyc2VVc2ZtIiwiYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNIiwiYWxpZ25lZFZlcnNlT2JqZWN0cyIsInVzZm1WZXJzZVRvSnNvbiIsInNhdmVBbGlnbm1lbnQiLCJjYWxsU2V0U2F2ZWRTdGF0ZSIsImNhbmNlbEFsaWdubWVudCIsInNldEVkaXRpbmciLCJfeCIsIl9zZXRFZGl0aW5nIiwiX2NhbGxlZTIiLCJlZGl0aW5nXyIsIl9uZXdWZXJzZVRleHQiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsIl92ZXJzZVRleHRDaGFuZ2VkIiwidmVyc2VUZXh0IiwiX0FsaWdubWVudEhlbHBlcnMkdXBkNCIsIl9hbGlnbm1lbnRzQ2hhbmdlZCIsIl9hcmdzMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwic2V0VmVyc2VDaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJfQWxpZ25tZW50SGVscGVycyR1cGQzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBbGlnbm1lbnRIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB1c2ZtSGVscGVycyxcbn0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7XG4gIEJvb2tPYmplY3RzVHlwZSxcbiAgU2NyaXB0dXJlQ29uZmlnLFxuICBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIFNlcnZlckNvbmZpZyxcbiAgVmVyc2VPYmplY3RzVHlwZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzLCB2ZXJzZU9iamVjdHNIYXZlV29yZHMgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG50eXBlIExhbmd1YWdlVHlwZSA9IHtcbiAgbGFuZ3VhZ2VJZDogc3RyaW5nLCAvLyBzaG9ydCBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgXCJlblwiXG4gIGRpcmVjdGlvbjogc3RyaW5nLCAvLyBsYW5ndWFnZSBkaXJlY3Rpb24gXCJsdHJcIiBvciBcInJ0bFwiXG59O1xuXG5pbnRlcmZhY2UgQWxpZ25lckRhdGFUeXBlIHtcbiAgICB3b3JkQmFuaz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmRiYW5rIHdvcmQgKHRhcmdldCBsYW5ndWFnZSB3b3JkcykgaW4gZm9ybWF0IG5lZWRlZCBieSB3b3JkLWFsaWduZXItcmNsXG4gICAgYWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIC8vIGlmIHByZXNlbnQgdGhlbiB3ZSBkb24ndCBoYXZlIG5lY2Vzc2FyeSBkYXRhIHRvIGRvIGFsaWdubWVudFxufVxuXG5pbnRlcmZhY2UgQWxpZ25lclJlc3VsdHNEYXRhVHlwZSB7XG4gICAgdGFyZ2V0V29yZHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB0YXJnZXQgbGFuZ3VhZ2Ugd29yZHMgaW4gZm9ybWF0IHVzZWQgaW4gd29yZC1hbGlnbmVyLXJjbFxuICAgIHZlcnNlQWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgdXNlZCBieSB3b3JkLWFsaWduZXItcmNsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIHtcbiAgLy8gaW5kZXggdG8gdXNlIGZvciBib29rIChlLmcuIGAwMWAgZm9yIGBHRU5gKVxuICBib29rSW5kZXg6IHN0cmluZyxcbiAgLy8gY3VycmVudCB2ZXJzZSBzZWxlY3RlZCBmcm9tIGluaXRpYWxWZXJzZU9iamVjdHNbXVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gcmVmZXJlbmNlIGZvciB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50XG4gIGN1cnJlbnRWZXJzZVJlZjogU2NyaXB0dXJlUmVmZXJlbmNlLFxuICAvLyBpZiB0cnVlIHRoZW4gZWRpdGluZyBpcyBhbGxvd2VkXG4gIGVuYWJsZUVkaXQ6IGJvb2xlYW4sXG4gIC8vIGlmIHRydWUgdGhlbiBhbGlnbm1lbnQgaXMgYWxsb3dlZFxuICBlbmFibGVBbGlnbm1lbnQ6IGJvb2xlYW4sXG4gIC8vIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciBodHRwIGNvbW11bmljYXRpb25cbiAgaHR0cENvbmZpZzogU2VydmVyQ29uZmlnLFxuICAvLyBhcnJheSBvZiB0aGUgaW5pdGlhbCB2ZXJzZU9iamVjdHMgZm9yIGN1cnJlbnQgcmVmZXJlbmNlXG4gIGluaXRpYWxWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gIC8vIGluaXRpYWwgdGV4dCBmb3IgdmVyc2VcbiAgaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nLFxuICAvLyBmbGFnIHRoYXQgd2UgYXJlIHdvcmtpbmcgb24gTlQgYm9va1xuICBpc05ld1Rlc3RhbWVudDogYm9vbGVhbixcbiAgLy8gdXNlciBuYW1lIG9mIGxvZ2dlZCBpbiB1c2VyXG4gIGxvZ2dlZEluVXNlcjogc3RyaW5nLFxuICAvLyBvd25lciB0byB1c2Ugd2hlbiBmZXRjaGluZyBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZXNcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBzdHJpbmcsXG4gIC8vIHVybCBmb3IgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHJlcG9cbiAgb3JpZ2luYWxSZXBvVXJsOiBzdHJpbmcsXG4gIC8vIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLy8gZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBzY3JpcHR1cmUgbG9hZGVkXG4gIHNjcmlwdHVyZUNvbmZpZzogU2NyaXB0dXJlQ29uZmlnLFxuICAvLyBzZXR0aW5ncyB0byBiZSB1c2VkIGZvciBzY3JpcHR1cmVcbiAgc2NyaXB0dXJlU2V0dGluZ3M6IHsgfSxcbiAgLy8gY2FsbGJhY2sgdG8gc2F2ZSBjdXJyZW50IHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBjaGFuZ2VzXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb24sXG4gIC8vIHNvdXJjZSBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgYGhib2BcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZVR5cGUsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gb3JpZ2luYWxWZXJzZU9iamVjdHNcbiAqL1xuZnVuY3Rpb24gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk06c3RyaW5nLCBvcmlnaW5hbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlKTpib29sZWFuIHtcbiAgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gb3JpZ2luYWxWZXJzZU9iamVjdHMgOiBudWxsIC8vIG1ha2Ugc3VyZSBub3QgcGFzc2luZyBlbXB0eSBBcnJheVxuICBjb25zdCB7IGFsaWdubWVudHMsIHdvcmRCYW5rIH0gPSBBbGlnbm1lbnRIZWxwZXJzLmV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxufVxuXG4vKipcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IGluaXRpYWxWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyc2VUZXh0Q2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICovXG5mdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgaW5pdGlhbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQ6c3RyaW5nKTpzdHJpbmcge1xuICBsZXQgdGFyZ2V0VmVyc2VVU0ZNID0gbnVsbFxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gdGFyZ2V0VmVyc2VUZXh0XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICB9XG4gIHJldHVybiB0YXJnZXRWZXJzZVVTRk1cbn1cblxuLyoqXG4gKiByZXR1cm4gdHJ1ZSBpZiBvbmx5IHNwYWNlcyBpbiBjb250ZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICovXG5mdW5jdGlvbiBhbGxTcGFjZXModGV4dDpzdHJpbmcpOmJvb2xlYW4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGV4dFtpXSAhPT0gJyAnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIHRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbml0aWFsVmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseShuZXdWZXJzZVRleHQ6c3RyaW5nLCBpbml0aWFsVmVyc2VUZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGxldCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgaWYgKGNoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7IC8vIG1ha2Ugc3VyZSBpdCdzIHNpZ25pZmljYW50XG4gICAgY29uc3QgbGVuZ3RoRGlmZmVyZW5jZSA9IG5ld1ZlcnNlVGV4dC5sZW5ndGggLSBpbml0aWFsVmVyc2VUZXh0Py5sZW5ndGhcbiAgICBjb25zdCBmaXJzdFBhcnRPZkluaXRpYWwgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKDAsIGluaXRpYWxWZXJzZVRleHQubGVuZ3RoKVxuXG4gICAgaWYgKChsZW5ndGhEaWZmZXJlbmNlID4gMCkgJiYgKGluaXRpYWxWZXJzZVRleHQgPT09IGZpcnN0UGFydE9mSW5pdGlhbCkpIHsgLy8gaWYgaW5pdGlhbCBwYXJ0cyBtYXRjaFxuICAgICAgLy8gYWRkIGV4ZW1wdGlvbiBpZiB0aGUgdXNmbSBlbmRzIHdpdGggYSBxdW90ZSB0YWdcbiAgICAgIGNvbnN0IGxhc3RDaGFycyA9IG5ld1ZlcnNlVGV4dC5zdWJzdHJpbmcobmV3VmVyc2VUZXh0Lmxlbmd0aCAtIGxlbmd0aERpZmZlcmVuY2UpXG4gICAgICBjb25zdCBwb3MgPSBuZXdWZXJzZVRleHQubGFzdEluZGV4T2YoJ1xcXFwnKVxuICAgICAgY29uc3QgbGFzdFVzZm1UYWcgPSBuZXdWZXJzZVRleHRbcG9zICsgMV1cbiAgICAgIGNvbnN0IGVuZHNXaXRoUXVvdGUgPSAocG9zID4gMCkgJiYgKGxhc3RVc2ZtVGFnID09PSAncScpXG5cbiAgICAgIGlmIChlbmRzV2l0aFF1b3RlICYmIGFsbFNwYWNlcyhsYXN0Q2hhcnMpKSB7XG4gICAgICAgIGNoYW5nZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hhbmdlZFxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIHR5cGUgU3RhdGVUeXBlcyA9IHtcbiAgICBhbGlnbmVkOiBib29sZWFuLFxuICAgIGFsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUsXG4gICAgZWRpdGluZzogYm9vbGVhbixcbiAgICBuZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlLFxuICAgIG5ld1ZlcnNlVGV4dDogc3RyaW5nLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbixcbiAgfVxuXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IF9zdGF0ZTogU3RhdGVUeXBlcyA9IHN0YXRlIC8vIFRyaWNreTogd29yay1hcm91bmQgZm9yIGJ1ZyB0aGF0IHN0YW5kYXJkIHR5cGVzY3JpcHQgdHlwZSBjYXN0aW5nIGRvZXMgbm90IHdvcmsgaW4gLnRzeCBmaWxlc1xuICBjb25zdCB7XG4gICAgYWxpZ25lZCxcbiAgICBhbGlnbmVyRGF0YSxcbiAgICBlZGl0aW5nLFxuICAgIG5ld0FsaWdubWVudHMsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgfSA9IF9zdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBwcm9qZWN0SWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBib29rSWQgPSBwcm9qZWN0SWRcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gICAgYm9va0lkLCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXywgaXNOZXdUZXN0YW1lbnQsIG9yaWdpbmFsUmVwb1VybCxcbiAgKVxuXG4gIGlmICghZW5hYmxlQWxpZ25tZW50KSB7IC8vIGlmIG5vdCBlbmFibGVkLCB0aGVuIHdlIGRvbid0IGZldGNoIHJlc291cmNlXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBudWxsXG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4geyAvLyBnZXQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzRm9yUmVmKGJhc2ljUmVmZXJlbmNlLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5sYW5ndWFnZUlkKVxuXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZmVyZW5jZSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICBjb25zdCBvcmlnVmVyc2VPYmplY3RzID0gdmVyc2VSZWZlcmVuY2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG5cbiAgICAgICAgICBpZiAob3JpZ1ZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodmVyc2VPYmplY3RzLCBvcmlnVmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzXG4gIH0sIFtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgYWxpZ25tZW50IHN0YXR1cyB3aGVuIGFsaWduZXIgaXMgaGlkZGVuXG4gICAgY29uc3Qgbm90RW1wdHkgPSAhIWluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBsZXQgYWxpZ25lZF8gPSBmYWxzZVxuXG4gICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBza2lwIGlmIGFsaWduZXIgaXMgYmVpbmcgc2hvd25cbiAgICAgIGlmIChub3RFbXB0eSkgeyAvLyBza2lwIGlmIGVtcHR5XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgICAgICAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgICAgICBhbGlnbmVkXyA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWZXJzZVRleHQgJiYgKG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZChyZXN1bHRzPy50YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWxpZ25lZCAhPT0gYWxpZ25lZF8pIHtcbiAgICAgICAgc2V0U3RhdGUoeyBhbGlnbmVkOiBhbGlnbmVkXyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2luaXRpYWxWZXJzZU9iamVjdHMsIGFsaWduZXJEYXRhLCBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQsIGVuYWJsZUFsaWdubWVudCwgb3JpZ2luYWxWZXJzZU9iamVjdHNdKVxuXG4gIC8qKlxuICAgKiBnZXQgY2hhbmdlcyBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIG9wdGlvbmFsbHkgcGFzcyBpbiBuZXcgc3RhdGUgKHRvIG92ZXJyaWRlIHN0YXRlKVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q2hhbmdlcyhuZXdTdGF0ZSA9IHt9KSB7XG4gICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBzdGFydGVkICR7Y3VycmVudEluZGV4fSAtIHBhc3NlZCBzdGF0ZWAsIG5ld1N0YXRlKVxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIHN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdBbGlnbm1lbnRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSA9IF9uZXdTdGF0ZVxuICAgIGxldCB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcblxuICAgIGlmIChuZXdBbGlnbm1lbnRzKSB7IC8vIGlmIHVuc2F2ZWQgYWxpZ25tZW50IGNoYW5nZXMsIGFwcGx5IHRoZW1cbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdW5zYXZlZCBhbGlnbm1lbnRzfWApXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoKVxuICAgIH1cblxuICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyBuZXcgdGV4dDpgLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHNfKSB7XG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgcmVmLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiB1cGRhdGVkVmVyc2VPYmplY3RzXyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYWxpZ25tZW50IGJ1dHRvbiAtIHdpbGwgc2hvdyBpZiBub3QgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWxpZ25tZW50Q2xpY2soKSB7XG4gICAgaWYgKGVuYWJsZUFsaWdubWVudCkge1xuICAgICAgbGV0IF9hbGlnbmVyRGF0YTogQWxpZ25lckRhdGFUeXBlID0gbnVsbFxuICAgICAgYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBpZiB3b3JkIGFsaWduZXIgbm90IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIHRvZ2dsZSBPTiBhbGlnbm1lbnRgKVxuICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgbGV0IG9yaWdpbmFsVmVyc2VVc2ZtID0gbnVsbFxuXG4gICAgICAgIGlmIChvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIG9yaWdpbmFsVmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRhcmdldFdvcmRzOiB3b3JkQmFuayxcbiAgICAgICAgICB2ZXJzZUFsaWdubWVudHM6IGFsaWdubWVudHMsXG4gICAgICAgIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZVVzZm0pXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IHsgd29yZEJhbmssIGFsaWdubWVudHMgfVxuXG4gICAgICAgIGlmICghYWxpZ25tZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgX2FsaWduZXJEYXRhLmVycm9yTWVzc2FnZSA9ICdUaGVyZSBhcmUgbm8gd29yZHMgdG8gYWxpZ24gaW4gdGhlIE9yaWdpbmFsIGxhbmd1YWdlJ1xuICAgICAgICB9IGVsc2UgaWYgKCF3b3JkQmFuaz8ubGVuZ3RoKSB7XG4gICAgICAgICAgX2FsaWduZXJEYXRhLmVycm9yTWVzc2FnZSA9ICdUaGVyZSBhcmUgbm8gd29yZHMgdG8gYWxpZ24gaW4gdGhlIExpdGVyYWwvU2ltcGxpZmllZCBTY3JpcHR1cmUgVGV4dCdcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy8gd29yZCBhbGlnbmVyIGN1cnJlbnRseSBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSBhbGlnbm1lbnQgYWxyZWFkeSBzaG93bmApXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IGFsaWduZXJEYXRhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBfYWxpZ25lckRhdGEgfSlcbiAgICAgIGNvbnNvbGUubG9nKF9hbGlnbmVyRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHVwZGF0ZWQgdmVyc2Ugb2JqZWN0cyBhZnRlciBhbGlnbm1lbnRzIGNoYW5nZWRcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSA9IG5ld0FsaWdubWVudHMpOlZlcnNlT2JqZWN0c1R5cGUge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0IHx8IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICBjb25zdCB2ZXJzZVVzZm0gPSBBbGlnbm1lbnRIZWxwZXJzLmFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTShfbmV3QWxpZ25tZW50cy50YXJnZXRXb3JkcywgX25ld0FsaWdubWVudHMudmVyc2VBbGlnbm1lbnRzLCB0YXJnZXRWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih2ZXJzZVVzZm0pXG4gICAgcmV0dXJuIGFsaWduZWRWZXJzZU9iamVjdHNcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIHNhdmUgY3VycmVudCBhbGlnbm1lbnRzIGluIHdvcmQgYWxpZ25lci4gIEdlbmVyYXRlcyBuZXcgdmVyc2UgY29udGVudCBhbmQgc2F2ZXMgaW4gc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUFsaWdubWVudChfbmV3QWxpZ25tZW50czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbmV3QWxpZ25tZW50c2AsIF9uZXdBbGlnbm1lbnRzKVxuXG4gICAgaWYgKF9uZXdBbGlnbm1lbnRzKSB7XG4gICAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cylcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBhbGlnbmVkVmVyc2VPYmplY3RzYCwgYWxpZ25lZFZlcnNlT2JqZWN0cylcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IGFsaWduZWRWZXJzZU9iamVjdHMsXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHRydWUsIG5ld1N0YXRlIClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5vIGFsaWdubWVudCBjaGFuZ2VzYClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBjYW5jZWwgd29yayBpbiB3b3JkIGFsaWduZXIuICBDYWxjdWxhdGVzIGFuZCBkaXNwbGF5cyBjdXJyZW50IGFsaWdubWVudCB2YWxpZCBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKi9cbiAgZnVuY3Rpb24gY2FuY2VsQWxpZ25tZW50KCkge1xuICAgIGNvbnNvbGUubG9nKGBjYW5jZWxBbGlnbm1lbnQoKWApXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBudWxsLCBhbGlnbmVkIH0pXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIGJ1dHRvbiB0byBzZXQgZWRpdGluZyBzdGF0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmdfIC0gaWYgdHJ1ZSwgZWRpdG9yIGlzIHNob3duLCBvdGhlcndpc2UgZWRpdG9yIGlzIGhpZGRlblxuICAgKiBAcGFyYW0ge3N0cmluZ30gX25ld1ZlcnNlVGV4dCAtIG9wdGlvbmFsIHZlcnNlIHRleHRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGZ1bmN0aW9uIHNldEVkaXRpbmcoZWRpdGluZ186IGJvb2xlYW4sIF9uZXdWZXJzZVRleHQ6IHN0cmluZyA9IG5ld1ZlcnNlVGV4dCkge1xuICAgIGlmIChlbmFibGVFZGl0KSB7XG4gICAgICBpZiAoZWRpdGluZ18gIT09IGVkaXRpbmcpIHtcbiAgICAgICAgX25ld1ZlcnNlVGV4dCA9IF9uZXdWZXJzZVRleHQgfHwgaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBsZXQgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBfbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAgIGVkaXRpbmc6IGVkaXRpbmdfLFxuICAgICAgICAgIG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCxcbiAgICAgICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2ZXJzZVRleHRDaGFuZ2VkKSB7XG4gICAgICAgICAgLy8gZmFsbGJhY2sgdG8gbWFrZSBzdXJlIHRleHQgZnJvbSB2ZXJzZU9iamVjdHMgbWF0Y2hlcyBjdXJyZW50IHRleHRcbiAgICAgICAgICBjb25zdCB2ZXJzZVRleHQgPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQoeyB2ZXJzZU9iamVjdHM6IGN1cnJlbnRWZXJzZU9iamVjdHMgfSApXG5cbiAgICAgICAgICBpZiAoaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5KHZlcnNlVGV4dCwgX25ld1ZlcnNlVGV4dCkpIHtcbiAgICAgICAgICAgIC8vIGFwcGx5IGFsaWdubWVudCB0byBjdXJyZW50IHRleHRcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXG4gICAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyB1cGRhdGUgdmVyc2VPYmplY3RzIHRvIG1hdGNoIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgbmV3U3RhdGVbJ3VwZGF0ZWRWZXJzZU9iamVjdHMnXSA9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgIGNvbnN0IF9hbGlnbm1lbnRzQ2hhbmdlZCA9IChfdXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhaXNFcXVhbChpbml0aWFsVmVyc2VPYmplY3RzLCBfdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHZlcnNlVGV4dENoYW5nZWQgfHwgX2FsaWdubWVudHNDaGFuZ2VkLCBuZXdTdGF0ZSApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZyb20gdGhlIGVkaXQgb25DaGFuZ2UgZXZlbnQgdG8gdXBkYXRlIGVkaXQgc3RhdGUgdmFyaWFibGVzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hhbmdlZCAtIHRydWUgaWYgdGhlIG5ld1ZlcnNlVGV4dCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgaW5pdGlhbFZlcnNlVGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gY3VycmVudCBjaGFuZ2VkIHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IF9pbml0aWFsVmVyc2VUZXh0IC0gaW5pdGlhbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZDogYm9vbGVhbiwgbmV3VmVyc2VUZXh0OiBzdHJpbmcsIF9pbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgYWxpZ25lZCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGdlbmVyYXRlIG5ldyB2ZXJzZU9iamVjdHMgdG8gZGlzcGxheSBpbiBTY3JpcHR1cmVQYW5lXG4gICAgaWYgKGluaXRpYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odGFyZ2V0VmVyc2VVU0ZNKVxuICAgICAgcmV0dXJuIGN1cnJlbnRWZXJzZU9iamVjdHNfXG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsVmVyc2VPYmplY3RzXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHRdKVxuXG4gIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzOmJvb2xlYW4gPSBSZWFjdC51c2VNZW1vKCAoKSA9PiB7IC8vIGlmIHZlcnNlIGhhcyBiZWVuIGVkaXRlZCBvciBhbGlnbm1lbnQgY2hhbmdlZCwgdGhlbiBpbmRpY2F0ZSB3ZSBoYXZlIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2ZXJzZVRleHRDaGFuZ2VkIHx8ICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIHVwZGF0ZWRWZXJzZU9iamVjdHMpKVxuICAgIHJldHVybiBjaGFuZ2VkXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgdG8gc2NyaXB0dXJlIGNhcmQgdG8gdXBkYXRlZCB3aXRoIGxhdGVzdCBzdGF0ZSBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5zYXZlZENoYW5nZXNfXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfOiBib29sZWFuLCBuZXdTdGF0ZToge30gPSB7IH0gKSB7XG4gICAgY29uc3QgX25ld1N0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgY2FsbFNldFNhdmVkU3RhdGUgLSBuZXcgc3RhdGVgLCBfbmV3U3RhdGUpXG4gICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsICF1bnNhdmVkQ2hhbmdlc18sIHtcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBzdGF0ZTogX25ld1N0YXRlLFxuICAgIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZXQgc2F2ZWQgY2hhbmdlcyB3aGVuZXZlciB1c2VyIGVkaXRzIHZlcnNlIHRleHQgb3IgYWxpZ25tZW50cyBvciBpZiBhbGlnbm1lbnRzIGFyZSBvcGVuXG4gICAgY29uc3QgdW5zYXZlZENoYW5nZXNfID0gdW5zYXZlZENoYW5nZXMgfHwgISFhbGlnbmVyRGF0YVxuICAgIGNhbGxTZXRTYXZlZFN0YXRlKHVuc2F2ZWRDaGFuZ2VzXylcbiAgfSwgW3Vuc2F2ZWRDaGFuZ2VzLCBhbGlnbmVyRGF0YV0pXG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIGFsaWdubWVudHMgYXJlIGJlaW5nIGNoYW5nZWRcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSByZXN1bHRzXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlXG4gICAqL1xuICBmdW5jdGlvbiBvbkFsaWdubWVudHNDaGFuZ2UocmVzdWx0czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSk6Ym9vbGVhbiB7XG4gICAgY29uc29sZS5sb2coYG9uQWxpZ25tZW50c0NoYW5nZSgpIC0gYWxpZ25tZW50IGNoYW5nZWQsIHJlc3VsdHNgLCByZXN1bHRzKSAvLyBtZXJnZSBhbGlnbm1lbnRzIGludG8gdGFyZ2V0IHZlcnNlIGFuZCBjb252ZXJ0IHRvIFVTRk1cbiAgICBjb25zdCB7IHRhcmdldFdvcmRzLCB2ZXJzZUFsaWdubWVudHMgfSA9IHJlc3VsdHNcbiAgICBjb25zdCBhbGlnbm1lbnRDb21wbGV0ZSA9IEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUodGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cylcbiAgICBjb25zb2xlLmxvZyhgQWxpZ25tZW50cyBhcmUgJHthbGlnbm1lbnRDb21wbGV0ZSA/ICdDT01QTEVURSEnIDogJ2luY29tcGxldGUnfWApXG4gICAgc2V0U3RhdGUoeyBuZXdBbGlnbm1lbnRzOiByZXN1bHRzLCBhbGlnbmVkOiBhbGlnbm1lbnRDb21wbGV0ZSB9KVxuICAgIHJldHVybiBhbGlnbm1lbnRDb21wbGV0ZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjYW5jZWxBbGlnbm1lbnQsXG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBnZXRDaGFuZ2VzLFxuICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2ssXG4gICAgICBvbkFsaWdubWVudHNDaGFuZ2UsXG4gICAgICBzYXZlQWxpZ25tZW50LFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGVuYWJsZUVkaXQsXG4gICAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgICBpbml0aWFsVmVyc2VUZXh0LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIHJlZmVyZW5jZTogYmFzaWNSZWZlcmVuY2UsXG4gICAgICBzb3VyY2VMYW5ndWFnZSxcbiAgICAgIHRhcmdldExhbmd1YWdlLFxuICAgICAgdGl0bGUsXG4gICAgICB1bnNhdmVkQ2hhbmdlcyxcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENB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
|
|
649
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIm1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJTZXJ2ZXJDb25maWciLCJWZXJzZU9iamVjdHNUeXBlIiwiZ2V0QWxpZ25tZW50cyIsImdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MiLCJPUklHSU5BTF9TT1VSQ0UiLCJnZXRWZXJzZXNGb3JSZWYiLCJpc1VzZm1BbGlnbmVkIiwidGFyZ2V0VmVyc2VVU0ZNIiwib3JpZ2luYWxWZXJzZU9iamVjdHMiLCJfb3JpZ2luYWxWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyRleHQiLCJleHRyYWN0QWxpZ25tZW50c0Zyb21UYXJnZXRWZXJzZSIsImFsaWdubWVudHMiLCJ3b3JkQmFuayIsImFyZUFsZ25tZW50c0NvbXBsZXRlIiwiZ2V0Q3VycmVudFZlcnNlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0Q2hhbmdlZCIsIm5ld1ZlcnNlVGV4dCIsImN1cnJlbnRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZVRleHQiLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwiYWxsU3BhY2VzIiwidGV4dCIsImhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseSIsImluaXRpYWxWZXJzZVRleHQiLCJjaGFuZ2VkIiwibGVuZ3RoRGlmZmVyZW5jZSIsImZpcnN0UGFydE9mSW5pdGlhbCIsInN1YnN0cmluZyIsImxhc3RDaGFycyIsInBvcyIsImxhc3RJbmRleE9mIiwibGFzdFVzZm1UYWciLCJlbmRzV2l0aFF1b3RlIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIl9yZWYiLCJjdXJyZW50SW5kZXgiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50IiwiaHR0cENvbmZpZyIsImlzTmV3VGVzdGFtZW50Iiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsIm9yaWdpbmFsUmVwb1VybCIsInJlZmVyZW5jZSIsInNjcmlwdHVyZUNvbmZpZyIsInNjcmlwdHVyZVNldHRpbmdzIiwic2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJzdGFydEVkaXRCcmFuY2giLCJ0YXJnZXRMYW5ndWFnZSIsInRpdGxlIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJlZGl0aW5nIiwibmV3QWxpZ25tZW50cyIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl9zdGF0ZSIsImNoYXB0ZXIiLCJ2ZXJzZSIsInByb2plY3RJZCIsImJhc2ljUmVmZXJlbmNlIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNsZWFyQ2hhbmdlcyIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYXJTdGF0ZSIsIm9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfIiwicmVzb3VyY2VJZCIsImJvb2tJZCIsIm9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MiLCJyZXNvdXJjZUxpbmsiLCJ1c2VNZW1vIiwidmVyc2VPYmplY3RzIiwidmVyc2VzIiwibGFuZ3VhZ2VJZCIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX3ZlcnNlUmVmZXJlbmNlJHZlcnNlIiwidmVyc2VSZWZlcmVuY2UiLCJvcmlnVmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiZ2V0Q3VycmVudFZlcnNlT2JqZWN0cyIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidXNlRWZmZWN0Iiwibm90RW1wdHkiLCJhbGlnbmVkXyIsInJlc3VsdHMiLCJnZXRDaGFuZ2VzIiwiX25ld1N0YXRlIiwidXBkYXRlZFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkMiIsInRhcmdldFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVDb25maWckdmVycyIsInJlZiIsInZlcnNlc0ZvclJlZiIsImlzTWlncmF0ZWQiLCJwcmVmaXgiLCJfaW5pdGlhbFZlcnNlT2JqZWN0cyIsInVwZGF0ZWRBbGlnbm1lbnRzIiwiaW5pdGlhbEFsaWdubWVudHMiLCJzYW1lIiwiZmlyc3REaWZmIiwidXBkYXRlZEFsaWdubWVudCIsImluaXRpYWxBbGlnbm1lbnQiLCJkaWZmZXJlbnQiLCJtaWdyYXRlQWxpZ25tZW50cyIsIm1pZ3JhdGVUYXJnZXRBbGlnbm1lbnRzVG9PcmlnaW5hbCIsImhhbmRsZUFsaWdubWVudENsaWNrIiwiX2hhbmRsZUFsaWdubWVudENsaWNrIiwiX2NhbGxlZSIsIl9hbGlnbmVyRGF0YSIsIm9yaWdpbmFsVmVyc2VVc2ZtIiwiX0FsaWdubWVudEhlbHBlcnMkcGFyIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhIiwidGFyZ2V0V29yZHMiLCJ2ZXJzZUFsaWdubWVudHMiLCJlcnJvck1lc3NhZ2UiLCJfbmV3QWxpZ25tZW50cyIsInZlcnNlVXNmbSIsImFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTSIsImFsaWduZWRWZXJzZU9iamVjdHMiLCJ1c2ZtVmVyc2VUb0pzb24iLCJzYXZlQWxpZ25tZW50IiwiY2FsbFNldFNhdmVkU3RhdGUiLCJjYW5jZWxBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwiX3giLCJfc2V0RWRpdGluZyIsIl9jYWxsZWUyIiwiZWRpdGluZ18iLCJfbmV3VmVyc2VUZXh0IiwiX3ZlcnNlVGV4dENoYW5nZWQiLCJ2ZXJzZVRleHQiLCJfQWxpZ25tZW50SGVscGVycyR1cGQ0IiwiX2FsaWdubWVudHNDaGFuZ2VkIiwiX2FyZ3MyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiY3VycmVudFZlcnNlT2JqZWN0cyIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJzZXRWZXJzZUNoYW5nZWQiLCJfaW5pdGlhbFZlcnNlVGV4dCIsIl90YXJnZXRWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBbGlnbm1lbnRIZWxwZXJzLFxuICBtaWdyYXRlT3JpZ2luYWxMYW5ndWFnZUhlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHVzZm1IZWxwZXJzLFxufSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgQm9va09iamVjdHNUeXBlLFxuICBTY3JpcHR1cmVDb25maWcsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgU2VydmVyQ29uZmlnLFxuICBWZXJzZU9iamVjdHNUeXBlLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGdldEFsaWdubWVudHMsIGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG50eXBlIExhbmd1YWdlVHlwZSA9IHtcbiAgbGFuZ3VhZ2VJZDogc3RyaW5nLCAvLyBzaG9ydCBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgXCJlblwiXG4gIGRpcmVjdGlvbjogc3RyaW5nLCAvLyBsYW5ndWFnZSBkaXJlY3Rpb24gXCJsdHJcIiBvciBcInJ0bFwiXG59O1xuXG5pbnRlcmZhY2UgQWxpZ25lckRhdGFUeXBlIHtcbiAgICB3b3JkQmFuaz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmRiYW5rIHdvcmQgKHRhcmdldCBsYW5ndWFnZSB3b3JkcykgaW4gZm9ybWF0IG5lZWRlZCBieSB3b3JkLWFsaWduZXItcmNsXG4gICAgYWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIC8vIGlmIHByZXNlbnQgdGhlbiB3ZSBkb24ndCBoYXZlIG5lY2Vzc2FyeSBkYXRhIHRvIGRvIGFsaWdubWVudFxufVxuXG5pbnRlcmZhY2UgQWxpZ25lclJlc3VsdHNEYXRhVHlwZSB7XG4gICAgdGFyZ2V0V29yZHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB0YXJnZXQgbGFuZ3VhZ2Ugd29yZHMgaW4gZm9ybWF0IHVzZWQgaW4gd29yZC1hbGlnbmVyLXJjbFxuICAgIHZlcnNlQWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgdXNlZCBieSB3b3JkLWFsaWduZXItcmNsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIHtcbiAgLy8gaW5kZXggdG8gdXNlIGZvciBib29rIChlLmcuIGAwMWAgZm9yIGBHRU5gKVxuICBib29rSW5kZXg6IHN0cmluZyxcbiAgLy8gY3VycmVudCB2ZXJzZSBzZWxlY3RlZCBmcm9tIGluaXRpYWxWZXJzZU9iamVjdHNbXVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gcmVmZXJlbmNlIGZvciB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50XG4gIGN1cnJlbnRWZXJzZVJlZjogU2NyaXB0dXJlUmVmZXJlbmNlLFxuICAvLyBpZiB0cnVlIHRoZW4gZWRpdGluZyBpcyBhbGxvd2VkXG4gIGVuYWJsZUVkaXQ6IGJvb2xlYW4sXG4gIC8vIGlmIHRydWUgdGhlbiBhbGlnbm1lbnQgaXMgYWxsb3dlZFxuICBlbmFibGVBbGlnbm1lbnQ6IGJvb2xlYW4sXG4gIC8vIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciBodHRwIGNvbW11bmljYXRpb25cbiAgaHR0cENvbmZpZzogU2VydmVyQ29uZmlnLFxuICAvLyBhcnJheSBvZiB0aGUgaW5pdGlhbCB2ZXJzZU9iamVjdHMgZm9yIGN1cnJlbnQgcmVmZXJlbmNlXG4gIGluaXRpYWxWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gIC8vIGluaXRpYWwgdGV4dCBmb3IgdmVyc2VcbiAgaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nLFxuICAvLyBmbGFnIHRoYXQgd2UgYXJlIHdvcmtpbmcgb24gTlQgYm9va1xuICBpc05ld1Rlc3RhbWVudDogYm9vbGVhbixcbiAgLy8gdXNlciBuYW1lIG9mIGxvZ2dlZCBpbiB1c2VyXG4gIGxvZ2dlZEluVXNlcjogc3RyaW5nLFxuICAvLyBvd25lciB0byB1c2Ugd2hlbiBmZXRjaGluZyBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZXNcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBzdHJpbmcsXG4gIC8vIHVybCBmb3IgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHJlcG9cbiAgb3JpZ2luYWxSZXBvVXJsOiBzdHJpbmcsXG4gIC8vIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLy8gZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBzY3JpcHR1cmUgbG9hZGVkXG4gIHNjcmlwdHVyZUNvbmZpZzogU2NyaXB0dXJlQ29uZmlnLFxuICAvLyBzZXR0aW5ncyB0byBiZSB1c2VkIGZvciBzY3JpcHR1cmVcbiAgc2NyaXB0dXJlU2V0dGluZ3M6IHsgfSxcbiAgLy8gY2FsbGJhY2sgdG8gc2F2ZSBjdXJyZW50IHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBjaGFuZ2VzXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb24sXG4gIC8vIHNvdXJjZSBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgYGhib2BcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZVR5cGUsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gb3JpZ2luYWxWZXJzZU9iamVjdHNcbiAqL1xuZnVuY3Rpb24gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk06c3RyaW5nLCBvcmlnaW5hbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlKTpib29sZWFuIHtcbiAgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gb3JpZ2luYWxWZXJzZU9iamVjdHMgOiBudWxsIC8vIG1ha2Ugc3VyZSBub3QgcGFzc2luZyBlbXB0eSBBcnJheVxuICBjb25zdCB7IGFsaWdubWVudHMsIHdvcmRCYW5rIH0gPSBBbGlnbm1lbnRIZWxwZXJzLmV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxufVxuXG4vKipcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IGluaXRpYWxWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyc2VUZXh0Q2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICovXG5mdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgaW5pdGlhbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQ6c3RyaW5nKTpzdHJpbmcge1xuICBsZXQgdGFyZ2V0VmVyc2VVU0ZNID0gbnVsbFxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gdGFyZ2V0VmVyc2VUZXh0XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICB9XG4gIHJldHVybiB0YXJnZXRWZXJzZVVTRk1cbn1cblxuLyoqXG4gKiByZXR1cm4gdHJ1ZSBpZiBvbmx5IHNwYWNlcyBpbiBjb250ZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICovXG5mdW5jdGlvbiBhbGxTcGFjZXModGV4dDpzdHJpbmcpOmJvb2xlYW4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGV4dFtpXSAhPT0gJyAnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIHRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbml0aWFsVmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseShuZXdWZXJzZVRleHQ6c3RyaW5nLCBpbml0aWFsVmVyc2VUZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGxldCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgaWYgKGNoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7IC8vIG1ha2Ugc3VyZSBpdCdzIHNpZ25pZmljYW50XG4gICAgY29uc3QgbGVuZ3RoRGlmZmVyZW5jZSA9IG5ld1ZlcnNlVGV4dC5sZW5ndGggLSBpbml0aWFsVmVyc2VUZXh0Py5sZW5ndGhcbiAgICBjb25zdCBmaXJzdFBhcnRPZkluaXRpYWwgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKDAsIGluaXRpYWxWZXJzZVRleHQubGVuZ3RoKVxuXG4gICAgaWYgKChsZW5ndGhEaWZmZXJlbmNlID4gMCkgJiYgKGluaXRpYWxWZXJzZVRleHQgPT09IGZpcnN0UGFydE9mSW5pdGlhbCkpIHsgLy8gaWYgaW5pdGlhbCBwYXJ0cyBtYXRjaFxuICAgICAgLy8gYWRkIGV4ZW1wdGlvbiBpZiB0aGUgdXNmbSBlbmRzIHdpdGggYSBxdW90ZSB0YWdcbiAgICAgIGNvbnN0IGxhc3RDaGFycyA9IG5ld1ZlcnNlVGV4dC5zdWJzdHJpbmcobmV3VmVyc2VUZXh0Lmxlbmd0aCAtIGxlbmd0aERpZmZlcmVuY2UpXG4gICAgICBjb25zdCBwb3MgPSBuZXdWZXJzZVRleHQubGFzdEluZGV4T2YoJ1xcXFwnKVxuICAgICAgY29uc3QgbGFzdFVzZm1UYWcgPSBuZXdWZXJzZVRleHRbcG9zICsgMV1cbiAgICAgIGNvbnN0IGVuZHNXaXRoUXVvdGUgPSAocG9zID4gMCkgJiYgKGxhc3RVc2ZtVGFnID09PSAncScpXG5cbiAgICAgIGlmIChlbmRzV2l0aFF1b3RlICYmIGFsbFNwYWNlcyhsYXN0Q2hhcnMpKSB7XG4gICAgICAgIGNoYW5nZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hhbmdlZFxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIHR5cGUgU3RhdGVUeXBlcyA9IHtcbiAgICBhbGlnbmVkOiBib29sZWFuLFxuICAgIGFsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUsXG4gICAgZWRpdGluZzogYm9vbGVhbixcbiAgICBuZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlLFxuICAgIG5ld1ZlcnNlVGV4dDogc3RyaW5nLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbixcbiAgfVxuXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IF9zdGF0ZTogU3RhdGVUeXBlcyA9IHN0YXRlIC8vIFRyaWNreTogd29yay1hcm91bmQgZm9yIGJ1ZyB0aGF0IHN0YW5kYXJkIHR5cGVzY3JpcHQgdHlwZSBjYXN0aW5nIGRvZXMgbm90IHdvcmsgaW4gLnRzeCBmaWxlc1xuICBjb25zdCB7XG4gICAgYWxpZ25lZCxcbiAgICBhbGlnbmVyRGF0YSxcbiAgICBlZGl0aW5nLFxuICAgIG5ld0FsaWdubWVudHMsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgfSA9IF9zdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBwcm9qZWN0SWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBib29rSWQgPSBwcm9qZWN0SWRcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gICAgYm9va0lkLCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXywgaXNOZXdUZXN0YW1lbnQsIG9yaWdpbmFsUmVwb1VybCxcbiAgKVxuXG4gIGlmICghZW5hYmxlQWxpZ25tZW50KSB7IC8vIGlmIG5vdCBlbmFibGVkLCB0aGVuIHdlIGRvbid0IGZldGNoIHJlc291cmNlXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBudWxsXG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4geyAvLyBnZXQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzRm9yUmVmKGJhc2ljUmVmZXJlbmNlLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5sYW5ndWFnZUlkKVxuXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZmVyZW5jZSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICBjb25zdCBvcmlnVmVyc2VPYmplY3RzID0gdmVyc2VSZWZlcmVuY2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG5cbiAgICAgICAgICBpZiAob3JpZ1ZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodmVyc2VPYmplY3RzLCBvcmlnVmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzXG4gIH0sIFtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICAvKipcbiAgICogZ2V0IGN1cnJlbnQgdmVyc2VPYmplY3RzXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gX3VwZGF0ZWRWZXJzZU9iamVjdHMgLSBvcHRpb25hbCBvdmVycmlkZXMgdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q3VycmVudFZlcnNlT2JqZWN0cyhfdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSA9IHVwZGF0ZWRWZXJzZU9iamVjdHMpIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IF91cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBhbGlnbm1lbnQgc3RhdHVzIHdoZW4gYWxpZ25lciBpcyBoaWRkZW5cbiAgICBjb25zdCBub3RFbXB0eSA9ICEhaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGxldCBhbGlnbmVkXyA9IGZhbHNlXG5cbiAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIHNraXAgaWYgYWxpZ25lciBpcyBiZWluZyBzaG93blxuICAgICAgaWYgKG5vdEVtcHR5KSB7IC8vIHNraXAgaWYgZW1wdHlcbiAgICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSBnZXRDdXJyZW50VmVyc2VPYmplY3RzKClcblxuICAgICAgICBpZiAoIWVuYWJsZUFsaWdubWVudCkge1xuICAgICAgICAgIGFsaWduZWRfID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZlcnNlVGV4dCAmJiAobmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0KSkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHJlc3VsdHM/LnRhcmdldFZlcnNlVGV4dCwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGlnbmVkICE9PSBhbGlnbmVkXykge1xuICAgICAgICBzZXRTdGF0ZSh7IGFsaWduZWQ6IGFsaWduZWRfIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbaW5pdGlhbFZlcnNlT2JqZWN0cywgYWxpZ25lckRhdGEsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dCwgZW5hYmxlQWxpZ25tZW50LCBvcmlnaW5hbFZlcnNlT2JqZWN0c10pXG5cbiAgLyoqXG4gICAqIGdldCBjaGFuZ2VzIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlIC0gb3B0aW9uYWxseSBwYXNzIGluIG5ldyBzdGF0ZSAodG8gb3ZlcnJpZGUgc3RhdGUpXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDaGFuZ2VzKG5ld1N0YXRlID0ge30pIHtcbiAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIHN0YXJ0ZWQgJHtjdXJyZW50SW5kZXh9IC0gcGFzc2VkIHN0YXRlYCwgbmV3U3RhdGUpXG4gICAgY29uc3QgX25ld1N0YXRlID0ge1xuICAgICAgc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld0FsaWdubWVudHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9ID0gX25ld1N0YXRlXG4gICAgbGV0IHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuXG4gICAgaWYgKG5ld0FsaWdubWVudHMpIHsgLy8gaWYgdW5zYXZlZCBhbGlnbm1lbnQgY2hhbmdlcywgYXBwbHkgdGhlbVxuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1bnNhdmVkIGFsaWdubWVudHN9YClcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cygpXG4gICAgfVxuXG4gICAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIG5ldyB0ZXh0OmAsIG5ld1ZlcnNlVGV4dClcbiAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gZ2V0Q3VycmVudFZlcnNlT2JqZWN0cyh1cGRhdGVkVmVyc2VPYmplY3RzXylcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHNfKSB7XG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgcmVmLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiB1cGRhdGVkVmVyc2VPYmplY3RzXyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBjb21wYXJlIGluaXRpYWwgYWxpZ25tZW50cyB3aXRoIGZpbmFsIHRvIHNlZSBpZiBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBfdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IF9pbml0aWFsVmVyc2VPYmplY3RzXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIGNoYW5nZWRcbiAgICovXG4gIGZ1bmN0aW9uIGlzTWlncmF0ZWQocHJlZml4OnN0cmluZywgX3VwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSA9IHVwZGF0ZWRWZXJzZU9iamVjdHMsIF9pbml0aWFsVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUgPSBpbml0aWFsVmVyc2VPYmplY3RzKTpib29sZWFuIHtcbiAgICBjb25zdCB1cGRhdGVkQWxpZ25tZW50cyA9IGdldEFsaWdubWVudHMoX3VwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgY29uc3QgaW5pdGlhbEFsaWdubWVudHMgPSBnZXRBbGlnbm1lbnRzKF9pbml0aWFsVmVyc2VPYmplY3RzKVxuICAgIGxldCBzYW1lID0gdXBkYXRlZEFsaWdubWVudHMubGVuZ3RoID09PSBpbml0aWFsQWxpZ25tZW50cy5sZW5ndGggLy8gZmlyc3QgbWFrZSBzdXJlIGxlbmd0aHMgYXJlIHRoZSBzYW1lXG4gICAgbGV0IGZpcnN0RGlmZlxuXG4gICAgaWYgKHNhbWUpIHsgLy8gZXZlbiBpZiBsZW5ndGhzIGFyZSB0aGUgc2FtZSBkb3VibGUgY2hlY2sgZWFjaCBhbGlnbm1lbnRcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXBkYXRlZEFsaWdubWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEFsaWdubWVudCA9IHVwZGF0ZWRBbGlnbm1lbnRzW2ldXG4gICAgICAgIGNvbnN0IGluaXRpYWxBbGlnbm1lbnQgPSBpbml0aWFsQWxpZ25tZW50c1tpXVxuXG4gICAgICAgIGlmICghaXNFcXVhbCh1cGRhdGVkQWxpZ25tZW50LCBpbml0aWFsQWxpZ25tZW50KSkge1xuICAgICAgICAgIGZpcnN0RGlmZiA9IGlcbiAgICAgICAgICBzYW1lID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGlmZmVyZW50ID0gIXNhbWVcblxuICAgIGlmIChkaWZmZXJlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke3ByZWZpeH0gLSB0YXJnZXQgdmVyc2UgYWxpZ25tZW50cyBtaWdyYXRlZCB0byBtYXRjaCBvcmlnaW5hbCBsYW5ndWFnZSwgZmlyc3QgZGlmZmVyZW5jZSBpcyBhdCAke2ZpcnN0RGlmZn1gLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzKVxuICAgIH1cblxuICAgIHJldHVybiBkaWZmZXJlbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBkbyBhbGlnbm1lbnRzIG1pZ3JhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gbWlncmF0ZUFsaWdubWVudHMocHJlZml4OiBzdHJpbmcsIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUgPSBudWxsKTogVmVyc2VPYmplY3RzVHlwZSB7XG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgZ2V0Q3VycmVudFZlcnNlT2JqZWN0cygpXG4gICAgY29uc3QgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSBtaWdyYXRlT3JpZ2luYWxMYW5ndWFnZUhlbHBlcnMubWlncmF0ZVRhcmdldEFsaWdubWVudHNUb09yaWdpbmFsKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGlzTWlncmF0ZWQocHJlZml4LCBfdXBkYXRlZFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICByZXR1cm4gX3VwZGF0ZWRWZXJzZU9iamVjdHNcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYWxpZ25tZW50IGJ1dHRvbiAtIHdpbGwgc2hvdyBpZiBub3QgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWxpZ25tZW50Q2xpY2soKSB7XG4gICAgaWYgKGVuYWJsZUFsaWdubWVudCkge1xuICAgICAgbGV0IF9hbGlnbmVyRGF0YTogQWxpZ25lckRhdGFUeXBlID0gbnVsbFxuICAgICAgYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBpZiB3b3JkIGFsaWduZXIgbm90IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIHRvZ2dsZSBPTiBhbGlnbm1lbnRgKVxuICAgICAgICBsZXQgb3JpZ2luYWxWZXJzZVVzZm0gPSBudWxsXG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcblxuICAgICAgICBpZiAob3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICBvcmlnaW5hbFZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVBbGlnbm1lbnRzKCdoYW5kbGVBbGlnbm1lbnRDbGljaygpJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0oX3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdGFyZ2V0V29yZHM6IHdvcmRCYW5rLFxuICAgICAgICAgIHZlcnNlQWxpZ25tZW50czogYWxpZ25tZW50cyxcbiAgICAgICAgfSA9IEFsaWdubWVudEhlbHBlcnMucGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlVXNmbSlcbiAgICAgICAgX2FsaWduZXJEYXRhID0geyB3b3JkQmFuaywgYWxpZ25tZW50cyB9XG5cbiAgICAgICAgaWYgKCFhbGlnbm1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBfYWxpZ25lckRhdGEuZXJyb3JNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyB3b3JkcyB0byBhbGlnbiBpbiB0aGUgT3JpZ2luYWwgbGFuZ3VhZ2UnXG4gICAgICAgIH0gZWxzZSBpZiAoIXdvcmRCYW5rPy5sZW5ndGgpIHtcbiAgICAgICAgICBfYWxpZ25lckRhdGEuZXJyb3JNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyB3b3JkcyB0byBhbGlnbiBpbiB0aGUgTGl0ZXJhbC9TaW1wbGlmaWVkIFNjcmlwdHVyZSBUZXh0J1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgeyAvLyB3b3JkIGFsaWduZXIgY3VycmVudGx5IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIGFsaWdubWVudCBhbHJlYWR5IHNob3duYClcbiAgICAgICAgX2FsaWduZXJEYXRhID0gYWxpZ25lckRhdGFcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IF9hbGlnbmVyRGF0YSB9KVxuICAgICAgY29uc29sZS5sb2coX2FsaWduZXJEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFmdGVyIGFsaWdubWVudHMgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cyk6VmVyc2VPYmplY3RzVHlwZSB7XG4gICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSBnZXRDdXJyZW50VmVyc2VPYmplY3RzKClcbiAgICBjb25zdCB0YXJnZXRWZXJzZVRleHQgPSBuZXdWZXJzZVRleHQgfHwgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICAgIGNvbnN0IHZlcnNlVXNmbSA9IEFsaWdubWVudEhlbHBlcnMuYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNKF9uZXdBbGlnbm1lbnRzLnRhcmdldFdvcmRzLCBfbmV3QWxpZ25tZW50cy52ZXJzZUFsaWdubWVudHMsIHRhcmdldFZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXNmbUhlbHBlcnMudXNmbVZlcnNlVG9Kc29uKHZlcnNlVXNmbSlcbiAgICByZXR1cm4gYWxpZ25lZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gc2F2ZSBjdXJyZW50IGFsaWdubWVudHMgaW4gd29yZCBhbGlnbmVyLiAgR2VuZXJhdGVzIG5ldyB2ZXJzZSBjb250ZW50IGFuZCBzYXZlcyBpbiBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiBzYXZlQWxpZ25tZW50KF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cykge1xuICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBuZXdBbGlnbm1lbnRzYCwgX25ld0FsaWdubWVudHMpXG5cbiAgICBpZiAoX25ld0FsaWdubWVudHMpIHtcbiAgICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzKVxuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIGFsaWduZWRWZXJzZU9iamVjdHNgLCBhbGlnbmVkVmVyc2VPYmplY3RzKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogYWxpZ25lZFZlcnNlT2JqZWN0cyxcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgY2FsbFNldFNhdmVkU3RhdGUodHJ1ZSwgbmV3U3RhdGUgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbm8gYWxpZ25tZW50IGNoYW5nZXNgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIGNhbmNlbCB3b3JrIGluIHdvcmQgYWxpZ25lci4gIENhbGN1bGF0ZXMgYW5kIGRpc3BsYXlzIGN1cnJlbnQgYWxpZ25tZW50IHZhbGlkIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqL1xuICBmdW5jdGlvbiBjYW5jZWxBbGlnbm1lbnQoKSB7XG4gICAgY29uc29sZS5sb2coYGNhbmNlbEFsaWdubWVudCgpYClcbiAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IG51bGwsIGFsaWduZWQgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3IgYnV0dG9uIHRvIHNldCBlZGl0aW5nIHN0YXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWRpdGluZ18gLSBpZiB0cnVlLCBlZGl0b3IgaXMgc2hvd24sIG90aGVyd2lzZSBlZGl0b3IgaXMgaGlkZGVuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfbmV3VmVyc2VUZXh0IC0gb3B0aW9uYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbiAgYXN5bmMgZnVuY3Rpb24gc2V0RWRpdGluZyhlZGl0aW5nXzogYm9vbGVhbiwgX25ld1ZlcnNlVGV4dDogc3RyaW5nID0gbmV3VmVyc2VUZXh0KSB7XG4gICAgaWYgKGVuYWJsZUVkaXQpIHtcbiAgICAgIGlmIChlZGl0aW5nXyAhPT0gZWRpdGluZykge1xuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgY3VycmVudFZlcnNlT2JqZWN0c1xuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gX25ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nXyxcbiAgICAgICAgICBuZXdWZXJzZVRleHQ6IF9uZXdWZXJzZVRleHQsXG4gICAgICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlZGl0aW5nXyApIHsgLy8gYnkgZGVmYXVsdCBkbyBtaWdyYXRpb24gb2YgYWxpZ25tZW50cyB0byBtYXRjaCBsYXRlc3Qgb3JpZ2luYWwgbGFuZ3VhZ2VcbiAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVBbGlnbm1lbnRzKCdzZXRFZGl0aW5nKCknLCBfdXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmVyc2VUZXh0Q2hhbmdlZCkge1xuICAgICAgICAgIC8vIGZhbGxiYWNrIHRvIG1ha2Ugc3VyZSB0ZXh0IGZyb20gdmVyc2VPYmplY3RzIG1hdGNoZXMgY3VycmVudCB0ZXh0XG4gICAgICAgICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBjdXJyZW50VmVyc2VPYmplY3RzIH0gKVxuXG4gICAgICAgICAgaWYgKGhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseSh2ZXJzZVRleHQsIF9uZXdWZXJzZVRleHQpKSB7XG4gICAgICAgICAgICAvLyBhcHBseSBhbGlnbm1lbnQgdG8gY3VycmVudCB0ZXh0XG4gICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzLCBfbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB0YXJnZXRWZXJzZU9iamVjdHMgLy8gdXBkYXRlIHZlcnNlT2JqZWN0cyB0byBtYXRjaCBjdXJyZW50IHRleHRcbiAgICAgICAgICAgIG5ld1N0YXRlWyd1cGRhdGVkVmVyc2VPYmplY3RzJ10gPSBfdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgICBjb25zdCBfYWxpZ25tZW50c0NoYW5nZWQgPSAoX3VwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpKVxuICAgICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh2ZXJzZVRleHRDaGFuZ2VkIHx8IF9hbGlnbm1lbnRzQ2hhbmdlZCwgbmV3U3RhdGUgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmcm9tIHRoZSBlZGl0IG9uQ2hhbmdlIGV2ZW50IHRvIHVwZGF0ZSBlZGl0IHN0YXRlIHZhcmlhYmxlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoYW5nZWQgLSB0cnVlIGlmIHRoZSBuZXdWZXJzZVRleHQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGluaXRpYWxWZXJzZVRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dCAtIGN1cnJlbnQgY2hhbmdlZCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfaW5pdGlhbFZlcnNlVGV4dCAtIGluaXRpYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dDogc3RyaW5nLCBfaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgX3RhcmdldFZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKF90YXJnZXRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc186IGJvb2xlYW4sIG5ld1N0YXRlOiB7fSA9IHsgfSApIHtcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcbiAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgIXVuc2F2ZWRDaGFuZ2VzXywge1xuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIHN0YXRlOiBfbmV3U3RhdGUsXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCAhIWFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IHJlc3VsdHNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGVcbiAgICovXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlKTpib29sZWFuIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgZW5hYmxlRWRpdCxcbiAgICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcbiAgICAgIHNvdXJjZUxhbmd1YWdlLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxD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
|
|
@@ -29,6 +29,7 @@ import "core-js/modules/es.parse-int.js";
|
|
|
29
29
|
import "core-js/modules/es.string.match.js";
|
|
30
30
|
import "core-js/modules/es.array.index-of.js";
|
|
31
31
|
import "core-js/modules/es.string.trim.js";
|
|
32
|
+
import "core-js/modules/es.array.filter.js";
|
|
32
33
|
import "core-js/modules/es.array.is-array.js";
|
|
33
34
|
import "core-js/modules/es.symbol.js";
|
|
34
35
|
import "core-js/modules/es.symbol.description.js";
|
|
@@ -43,7 +44,6 @@ import "core-js/modules/es.date.to-primitive.js";
|
|
|
43
44
|
import "core-js/modules/es.number.constructor.js";
|
|
44
45
|
import "core-js/modules/es.object.define-property.js";
|
|
45
46
|
import "core-js/modules/es.object.keys.js";
|
|
46
|
-
import "core-js/modules/es.array.filter.js";
|
|
47
47
|
import "core-js/modules/es.object.get-own-property-descriptor.js";
|
|
48
48
|
import "core-js/modules/es.array.for-each.js";
|
|
49
49
|
import "core-js/modules/web.dom-collections.for-each.js";
|
|
@@ -465,4 +465,26 @@ export function verseObjectsHaveWords(verseObjects) {
|
|
|
465
465
|
}
|
|
466
466
|
return false;
|
|
467
467
|
}
|
|
468
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHIiwiTE9BRElOR19SRVNPVVJDRSIsIk1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHIiwiTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsIlNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHIiwiVEFSR0VUX0xJVEVSQUwiLCJUQVJHRVRfU0lNUExJRklFRCIsIlZlcnNlT2JqZWN0c1R5cGUiLCJESVNBQkxFX1dPUkRfUE9QT1ZFUiIsImdldFJlc291cmNlTGluayIsInNjcmlwdHVyZSIsInJlZiIsImJyYW5jaCIsImNvbmNhdCIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJwYXJzZVJlc291cmNlTGluayIsInJlc291cmNlTGluayIsIl9yZXNvdXJjZUxpbmskc3BsaXQiLCJzcGxpdCIsIl9yZXNvdXJjZUxpbmskc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJnZXRTY3JpcHR1cmVPYmplY3QiLCJfcmVmIiwidGl0bGUiLCJzZXJ2ZXIiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRWZXJzZURhdGFGcm9tU2NyaXBDb25maWciLCJzY3JpcHR1cmVDb25maWciLCJ2ZXJzZU51bSIsIl9zY3JpcHR1cmVDb25maWckdmVycyIsInZlcnNlc0ZvclJlZiIsImZpbmQiLCJ2ZXJzZVJlZiIsInZlcnNlIiwiaXNPcmlnaW5hbEJpYmxlIiwiaXNPcmlnIiwiY2xlYW51cEFjY291bnRTZXR0aW5ncyIsInNjcmlwdHVyZVNldHRpbmdzIiwiY3VycmVudE93bmVyIiwiY3VycmVudExhbmd1YWdlSWQiLCJzcGxpdFVybCIsIm9yaWdpbmFsUmVwb1VybCIsInVybCIsIlVSTCIsIm9yaWdpbiIsInBhdGhuYW1lIiwic2VhcmNoIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsImJvb2tJZCIsInNjcmlwdHVyZVNldHRpbmdzXyIsImlzTmV3VGVzdGFtZW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIl9zcGxpdFVybCIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsIl9yZWYyIiwibGFiZWwiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImhpc3RvcnkiLCJnZXRMYXRlc3QiLCJpbmRleCIsImZpbmRJdGVtSW5kZXhCeUtleSIsInNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnIiwib3B0aW9ucyIsImN1cnJlbnQiLCJhbGxvd1VzZXJJbnB1dCIsIm9uQ2hhbmdlIiwidmFsaWRhdGlvbkNCIiwiaXRlbSIsIm5ld0l0ZW0iLCJhZGRJdGVtVG9IaXN0b3J5IiwiZ2V0SXRlbUJ5VGl0bGUiLCJkZWxldGVJdGVtIiwiZGVsZXRlSW5kZXgiLCJyZW1vdmVJdGVtQnlJbmRleCIsImdldFJlcG9VcmwiLCJpc05UIiwicmVwb1VybCIsIl9yZXNvdXJjZUxpbmskc3BsaXQzIiwiX3Jlc291cmNlTGluayRzcGxpdDQiLCJlIiwiZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rIiwiZXJyb3JDb2RlIiwiZXJyb3JNc2ciLCJ2YWxpZGF0ZURjc1VybCIsInZhbGlkUmVwb1BhdGgiLCJ2YWxpZFVybCIsInBhcnRzIiwiX3BhcnRzIiwicHJvdG9jb2wiLCJob3N0IiwidXNlciIsInJlcG8iLCJob3N0UGFydHMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwicGFydCIsInZhbHVlIiwiZXJyIiwiZiIsIl9yZXBvJHNwbGl0IiwiX3JlcG8kc3BsaXQyIiwicHJvamVjdElkIiwiX3VudXNlZCIsImNvbnNvbGUiLCJsb2ciLCJnZXRSZXNvdXJjZUVycm9yTWVzc2FnZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFJlc291cmNlTGlua1NwZWNpZmljIiwiZml4T2NjdXJyZW5jZSIsIm9jY3VycmVuY2UiLCJwYXJzZUludCIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaSIsImwiLCJ2byIsInR5cGUiLCJvY2N1cnJlbmNlcyIsIndvcmQiLCJjaGlsZHJlbiIsIm5ld1ZvIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZmlsZW5hbWUiLCJfZmlsZW5hbWUkbWF0Y2giLCJyZWdleCIsImJvb2tOYW1lIiwibWF0Y2giLCJnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQiLCJiaWJsZVVzZm0iLCJpZEhlYWRlciIsInBvc0lkIiwiaW5kZXhPZiIsImlkU3RhcnQiLCJoZWFkZXJJZCIsInN1YnN0cmluZyIsInRyaW0iLCJoZWFkZXJCb29rSUQiLCJfaGVhZGVyQm9va0lEIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImZvdW5kV29yZHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQge1xuICBCT09LX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIExPQURJTkdfUkVTT1VSQ0UsXG4gIE1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHLFxuICBNQU5JRkVTVF9OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBOVF9PUklHX0xBTkcsXG4gIE5UX09SSUdfTEFOR19CSUJMRSxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG4gIE9UX09SSUdfTEFOR19CSUJMRSxcbiAgU0NSSVBUVVJFX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIFRBUkdFVF9MSVRFUkFMLFxuICBUQVJHRVRfU0lNUExJRklFRCxcbn0gZnJvbSAnLi9jb21tb24nXG5pbXBvcnQge1ZlcnNlT2JqZWN0c1R5cGV9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IERJU0FCTEVfV09SRF9QT1BPVkVSID0gdHJ1ZSAvLyBkaXNhYmxlIHdvcmQgcG9wb3ZlciBmb3IgZXZlcnkgc2NyaXB0dXJlIHBhbmUgYnV0IG9yaWdpbmFsIGxhbmd1YWdlc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZSkge1xuICBjb25zdCByZWYgPSBzY3JpcHR1cmUucmVmIHx8IHNjcmlwdHVyZS5icmFuY2hcbiAgcmV0dXJuIGAke3NjcmlwdHVyZS5vd25lcn0vJHtzY3JpcHR1cmUubGFuZ3VhZ2VJZH0vJHtzY3JpcHR1cmUucmVzb3VyY2VJZH0vJHtyZWZ9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXNvdXJjZUxpbmsocmVzb3VyY2VMaW5rKSB7XG4gIGNvbnN0IFtvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCwgcmVmXSA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gIHJldHVybiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlZixcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlT2JqZWN0KHtcbiAgdGl0bGUsXG4gIHNlcnZlcixcbiAgb3duZXIsXG4gIHJlZixcbiAgbGFuZ3VhZ2VJZCxcbiAgcmVzb3VyY2VJZCxcbiAgcmVzb3VyY2VMaW5rLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbn0pIHtcbiAgY29uc3Qgc2NyaXB0dXJlID0ge1xuICAgIHRpdGxlLFxuICAgIHNlcnZlcixcbiAgICBvd25lcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgcmVmLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgcmVzb3VyY2VMaW5rLFxuICB9XG5cbiAgaWYgKCFyZXNvdXJjZUxpbmspIHtcbiAgICBzY3JpcHR1cmUucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgIG93bmVyLFxuICAgICAgcmVmLFxuICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgfSlcbiAgfVxuICByZXR1cm4gc2NyaXB0dXJlXG59XG5cbi8qKlxuICogcmV0dXJuIHZlcnNlIGRhdGEgZ2l2ZW4gYSBzY3JpcHR1cmUgY29uZmlnIGFuZCB2ZXJzZSBudW1iZXJcbiAqIEBwYXJhbSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB2ZXJzZU51bVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VEYXRhRnJvbVNjcmlwQ29uZmlnKHNjcmlwdHVyZUNvbmZpZywgdmVyc2VOdW0pIHtcbiAgcmV0dXJuIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5maW5kKFxuICAgIHZlcnNlUmVmID0+IHZlcnNlUmVmLnZlcnNlID09PSB2ZXJzZU51bVxuICApXG59XG5cbi8qKlxuICogcmV0dXJuIHRydWUgaWYgcmVzb3VyY2UgaXMgYW4gb3JpZ2luYWwgbGFuZ3VhZ2UgYmlibGVcbiAqIEBwYXJhbSByZXNvdXJjZUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09yaWdpbmFsQmlibGUocmVzb3VyY2VJZCkge1xuICBjb25zdCBpc09yaWcgPSAoKHJlc291cmNlSWQgPT09IE5UX09SSUdfTEFOR19CSUJMRSkgfHwgKHJlc291cmNlSWQgPT09IE9UX09SSUdfTEFOR19CSUJMRSkgfHwgKHJlc291cmNlSWQgPT09IE9SSUdJTkFMX1NPVVJDRSkpXG4gIHJldHVybiBpc09yaWdcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgc2NyaXB0dXJlU2V0dGluZ3MgYXJlIHVwIHRvIGRhdGUgd2l0aCBjdXJyZW50IG93bmVyIGFuZCBsYW5ndWFnZVxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZVNldHRpbmdzXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwQWNjb3VudFNldHRpbmdzKHNjcmlwdHVyZVNldHRpbmdzOiBhbnksIGN1cnJlbnRPd25lcjogYW55LCBjdXJyZW50TGFuZ3VhZ2VJZDogYW55KSB7XG4gIGlmIChjdXJyZW50T3duZXIgJiYgKGN1cnJlbnRPd25lciAhPT0gc2NyaXB0dXJlU2V0dGluZ3Mub3duZXIpKSB7IC8vIGlmIG93bmVyIGNoYW5nZWQsIHVwZGF0ZSBzY3JpcHR1cmVTZXR0aW5nc1xuICAgIHNjcmlwdHVyZVNldHRpbmdzLm93bmVyID0gY3VycmVudE93bmVyXG4gIH1cblxuICBpZiAoY3VycmVudExhbmd1YWdlSWQgJiYgKGN1cnJlbnRMYW5ndWFnZUlkICE9PSBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkKSkgeyAvLyBpZiBsYW5ndWFnZSBjaGFuZ2VkLCB1cGRhdGUgc2NyaXB0dXJlU2V0dGluZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID0gY3VycmVudExhbmd1YWdlSWRcbiAgfVxufVxuXG4vKipcbiAqIHNlcGFyYXRlIFVSTCBpbnRvIHNlcnZlciBhbmQgcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRVcmwob3JpZ2luYWxSZXBvVXJsKSB7XG4gIGlmIChvcmlnaW5hbFJlcG9VcmwpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKG9yaWdpbmFsUmVwb1VybClcbiAgICBjb25zdCBzZXJ2ZXIgPSB1cmwub3JpZ2luXG4gICAgY29uc3QgcmVzb3VyY2VMaW5rID0gdXJsLnBhdGhuYW1lICsgKHVybC5zZWFyY2ggfHwgJycpXG4gICAgcmV0dXJuIHsgc2VydmVyLCByZXNvdXJjZUxpbmsgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG4vKipcbiAqIGdldCB0aGUgc2NyaXB0dXJlIHNldHRpbmdzIG5lZWRlZCBmb3IgZmV0Y2ggLSBmb3IgT3JpZ0xhbmcsIFVMVCwgR0xUIHdpbGwgcmVwbGFjZSBvd25lciBhbmQgbGFuZ3VhZ2VJZCB3aXRoIGNvcnJlY3QgdmFsdWVzXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlU2V0dGluZ3NfXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3VGVzdGFtZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxSZXBvVXJsIC0gb3B0aW9uYWwgcGF0aCB0byByZXBvIGZvciBvcmlnaW5hbCBsYW5ndWFnZVxuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRMYW5ndWFnZUlkIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBsYW5ndWFnZSBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50T3duZXIgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIG93bmVyIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgYm9va0lkLCBzY3JpcHR1cmVTZXR0aW5nc18sIGlzTmV3VGVzdGFtZW50LFxuICBvcmlnaW5hbFJlcG9Vcmw9bnVsbCxcbiAgY3VycmVudExhbmd1YWdlSWQ9bnVsbCxcbiAgY3VycmVudE93bmVyPW51bGwsXG4pIHtcbiAgY29uc3Qgc2NyaXB0dXJlU2V0dGluZ3MgPSB7IC4uLnNjcmlwdHVyZVNldHRpbmdzXyB9XG4gIHNjcmlwdHVyZVNldHRpbmdzLmRpc2FibGVXb3JkUG9wb3ZlciA9IERJU0FCTEVfV09SRF9QT1BPVkVSXG4gIGNvbnN0IHJlc291cmNlSWQgPSBzY3JpcHR1cmVTZXR0aW5nc18ucmVzb3VyY2VJZFxuXG4gIGlmIChyZXNvdXJjZUlkID09PSBPUklHSU5BTF9TT1VSQ0UpIHtcbiAgICAvLyBzZWxlY3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgQmlibGUgYmFzZWQgb24gd2hpY2ggdGVzdGFtZW50IHRoZSBib29rIGJlbG9uZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID0gaXNOZXdUZXN0YW1lbnQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkdcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUlkID0gaXNOZXdUZXN0YW1lbnRcbiAgICAgID8gTlRfT1JJR19MQU5HX0JJQkxFXG4gICAgICA6IE9UX09SSUdfTEFOR19CSUJMRVxuXG4gICAgaWYgKHNjcmlwdHVyZVNldHRpbmdzLm9yaWdpbmFsTGFuZ3VhZ2VPd25lcikge1xuICAgICAgc2NyaXB0dXJlU2V0dGluZ3Mub3duZXIgPSBzY3JpcHR1cmVTZXR0aW5ncy5vcmlnaW5hbExhbmd1YWdlT3duZXJcbiAgICB9XG5cbiAgICBpZiAob3JpZ2luYWxSZXBvVXJsKSB7IC8vIHVzZSB0aGlzIHVybCBpZiBkZWZpbmVkXG4gICAgICBjb25zdCB7IHNlcnZlciwgcmVzb3VyY2VMaW5rIH0gPSBzcGxpdFVybChvcmlnaW5hbFJlcG9VcmwpXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5zZXJ2ZXIgPSBzZXJ2ZXJcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IHJlc291cmNlTGlua1xuICAgIH0gZWxzZSB7IC8vIGZhbGwgYmFjayB0byBhcHAgZGVmYXVsdHNcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVTZXR0aW5ncylcbiAgICB9XG4gICAgc2NyaXB0dXJlU2V0dGluZ3MuZGlzYWJsZVdvcmRQb3BvdmVyID0gZmFsc2VcbiAgfSBlbHNlIGlmIChyZXNvdXJjZUlkID09PSBUQVJHRVRfTElURVJBTCkge1xuICAgIGNsZWFudXBBY2NvdW50U2V0dGluZ3Moc2NyaXB0dXJlU2V0dGluZ3MsIGN1cnJlbnRPd25lciwgY3VycmVudExhbmd1YWdlSWQpXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IHNjcmlwdHVyZVNldHRpbmdzLmxhbmd1YWdlSWQgPT09ICdlbicgPyAndWx0JyA6ICdnbHQnXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZVNldHRpbmdzKVxuICB9IGVsc2UgaWYgKHJlc291cmNlSWQgPT09IFRBUkdFVF9TSU1QTElGSUVEKSB7XG4gICAgY2xlYW51cEFjY291bnRTZXR0aW5ncyhzY3JpcHR1cmVTZXR0aW5ncywgY3VycmVudE93bmVyLCBjdXJyZW50TGFuZ3VhZ2VJZClcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUlkID0gc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9PT0gJ2VuJyA/ICd1c3QnIDogJ2dzdCdcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlU2V0dGluZ3MpXG4gIH1cbiAgcmV0dXJuIHNjcmlwdHVyZVNldHRpbmdzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICBsYWJlbCxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZXRTY3JpcHR1cmUsXG4gIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxufSkge1xuICBjb25zdCBoaXN0b3J5ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0TGF0ZXN0KClcbiAgbGV0IGluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZmluZEl0ZW1JbmRleEJ5S2V5KGhpc3RvcnksICdyZXNvdXJjZUxpbmsnLCByZXNvdXJjZUxpbmspXG5cbiAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0b3JDb25maWcgPSB7XG4gICAgbGFiZWwsIC8vIGxhYmVsIGZvciBjb21ib2JveFxuICAgIG9wdGlvbnM6IGhpc3RvcnksXG4gICAgY3VycmVudDogaW5kZXgsXG4gICAgYWxsb3dVc2VySW5wdXQ6IHRydWUsXG4gICAgb25DaGFuZ2U6ICh0aXRsZSwgaW5kZXgsIHZhbGlkYXRpb25DQj1udWxsKSA9PiB7XG4gICAgICBsZXQgaXRlbVxuXG4gICAgICBpZiAoKGluZGV4IDwgMCkgJiYgdGl0bGUpIHtcbiAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICB1cmw6IHRpdGxlLFxuICAgICAgICAgIHRpdGxlLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuYWRkSXRlbVRvSGlzdG9yeShuZXdJdGVtKVxuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgaXRlbSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpW2luZGV4XVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0SXRlbUJ5VGl0bGUodGl0bGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHNldFNjcmlwdHVyZShpdGVtLCB2YWxpZGF0aW9uQ0IpXG4gICAgICB9XG4gICAgfSxcbiAgICBkZWxldGVJdGVtOiB0aXRsZSA9PiB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0TGF0ZXN0KClcbiAgICAgIGNvbnN0IGRlbGV0ZUluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZmluZEl0ZW1JbmRleEJ5S2V5KGhpc3RvcnksICd0aXRsZScsIHRpdGxlKVxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QucmVtb3ZlSXRlbUJ5SW5kZXgoZGVsZXRlSW5kZXgpXG4gICAgfSxcbiAgfVxuXG4gIHJldHVybiBzY3JpcHR1cmVTZWxlY3RvckNvbmZpZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwb1VybChyZXNvdXJjZUxpbms6IHN0cmluZywgc2VydmVyOiBzdHJpbmcsIGlzTlQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBsZXQgcmVwb1VybFxuXG4gIHRyeSB7XG4gICAgbGV0IFtvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0gPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuXG4gICAgc3dpdGNoIChyZXNvdXJjZUlkKSB7XG4gICAgY2FzZSBPUklHSU5BTF9TT1VSQ0U6XG4gICAgICBsYW5ndWFnZUlkID0gaXNOVCA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFOR1xuICAgICAgcmVzb3VyY2VJZCA9IGlzTlRcbiAgICAgICAgPyBOVF9PUklHX0xBTkdfQklCTEVcbiAgICAgICAgOiBPVF9PUklHX0xBTkdfQklCTEVcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFRBUkdFVF9MSVRFUkFMOlxuICAgICAgcmVzb3VyY2VJZCA9IChsYW5ndWFnZUlkID09PSAnZW4nKSA/ICd1bHQnIDogJ2dsdCdcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFRBUkdFVF9TSU1QTElGSUVEOlxuICAgICAgcmVzb3VyY2VJZCA9IChsYW5ndWFnZUlkID09PSAnZW4nKSA/ICd1c3QnIDogJ2dzdCdcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlcG9VcmwgPSBgJHtvd25lcn0vJHtsYW5ndWFnZUlkfV8ke3Jlc291cmNlSWR9YFxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gcmVzb3VyY2VMaW5rIHdhcyBpbnZhbGlkXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBgJHtzZXJ2ZXIgfHwgJyd9LyR7cmVwb1VybH1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2VGb3JSZXNvdXJjZUxpbmsoXG4gIHJlc291cmNlTGluazogc3RyaW5nLFxuICBzZXJ2ZXI6IHN0cmluZyxcbiAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gIGlzTlQ6IGJvb2xlYW4pOiBzdHJpbmdcbntcbiAgY29uc3QgcmVwb1VybCA9IGdldFJlcG9VcmwocmVzb3VyY2VMaW5rLCBzZXJ2ZXIsIGlzTlQpXG4gIGNvbnN0IGVycm9yTXNnID0gZXJyb3JDb2RlICsgcmVwb1VybFxuICByZXR1cm4gZXJyb3JNc2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGNzVXJsKHVybCkge1xuICBsZXQgdmFsaWRSZXBvUGF0aCA9IGZhbHNlXG4gIGxldCB2YWxpZFVybCA9IGZhbHNlXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJ0cyA9IHVybC5zcGxpdCgnLycpXG4gICAgY29uc3QgW3Byb3RvY29sLCAsIGhvc3QsIHVzZXIsIHJlcG9dID0gcGFydHNcbiAgICB2YWxpZFVybCA9IChwcm90b2NvbCA9PT0gJ2h0dHBzOicpXG4gICAgY29uc3QgaG9zdFBhcnRzID0gaG9zdCA/IGhvc3Quc3BsaXQoJy4nKSA6IFtdXG5cbiAgICBpZiAoaG9zdFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICBmb3IgKGxldCBwYXJ0IG9mIGhvc3RQYXJ0cykge1xuICAgICAgICBpZiAoIXBhcnQpIHtcbiAgICAgICAgICB2YWxpZFVybCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZFVybCA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCBwcm90b2NvbCAmJiBob3N0ICYmIHVzZXIgJiYgcmVwbyApIHtcbiAgICAgIGNvbnN0IFtsYW5ndWFnZUlkLCBwcm9qZWN0SWRdID0gcmVwby5zcGxpdCgnXycpXG4gICAgICB2YWxpZFJlcG9QYXRoID0gbGFuZ3VhZ2VJZCAmJiBwcm9qZWN0SWRcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUubG9nKCdJbnZhbGlkIERDUyBVUkw6ICcgKyB1cmwpXG4gIH1cbiAgcmV0dXJuIHsgdmFsaWRVcmwsIHZhbGlkUmVwb1BhdGggfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UocmVzb3VyY2VTdGF0dXM6IG9iamVjdCkge1xuICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgaWYgKHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdKSB7XG4gICAgbWVzc2FnZSA9IE1BTklGRVNUX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tJTlZBTElEX01BTklGRVNUX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBNQU5JRkVTVF9JTlZBTElEX0VSUk9SX01TR1xuICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdHVzW0NPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBCT09LX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gU0NSSVBUVVJFX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vKipcbiAqIGRlY29kZSByZXNvdXJjZSBzdGF0dXMgaW50byBzdHJpbmcuICBDdXJyZW50bHkgb25seSBFbmdsaXNoXG4gKiBAcGFyYW0gcmVzb3VyY2VTdGF0dXMgLSBvYmplY3QgdGhhdCBjb250YWlucyBzdGF0ZSBhbmQgZXJyb3JzIHRoYXQgYXJlIGRldGVjdGVkXG4gKiBAcGFyYW0gc2VydmVyIC0gY29udGFpbnMgdGhlIHNlcnZlciBiZWluZyB1c2VkXG4gKiBAcGFyYW0gcmVzb3VyY2VMaW5rIC0gcGF0aCB0byByZXBvIG9uIHNlcnZlclxuICogQHBhcmFtIGlzTlQgLSB0cnVlIGlmIE5UIGJvb2tcbiAqIEByZXR1cm4gZW1wdHkgc3RyaW5nIGlmIG5vIGVycm9yLCBlbHNlIHJldHVybnMgdXNlciBlcnJvciBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXM6IG9iamVjdCwgc2VydmVyOiBzdHJpbmcsIHJlc291cmNlTGluazogc3RyaW5nLCBpc05UOiBib29sZWFuKSB7XG4gIGxldCBtZXNzYWdlID0gJydcblxuICBpZiAocmVzb3VyY2VTdGF0dXNbTE9BRElOR19TVEFURV0pIHtcbiAgICBtZXNzYWdlID0gTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSBnZXRSZXNvdXJjZUVycm9yTWVzc2FnZShyZXNvdXJjZVN0YXR1cylcblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rKHJlc291cmNlTGluaywgc2VydmVyLCBtZXNzYWdlLCBpc05UKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vKipcbiAqIGdlbmVyYXRlIHJlc291cmNlIHN0cmluZ1xuICogQHBhcmFtIG93bmVyXG4gKiBAcGFyYW0gbGFuZ3VhZ2VJZFxuICogQHBhcmFtIHByb2plY3RJZFxuICogQHBhcmFtIHJlZlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMaW5rU3BlY2lmaWMob3duZXI6IHN0cmluZywgbGFuZ3VhZ2VJZDogc3RyaW5nLCBwcm9qZWN0SWQ6IHN0cmluZywgcmVmOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBhcGkvdjEvcmVwb3MvJHtvd25lcn0vJHtsYW5ndWFnZUlkfV8ke3Byb2plY3RJZH0vY29udGVudHM/cmVmPSR7cmVmfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpeE9jY3VycmVuY2Uob2NjdXJyZW5jZSkge1xuICBpZiAodHlwZW9mIG9jY3VycmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KG9jY3VycmVuY2UpXG4gIH1cbiAgcmV0dXJuIG9jY3VycmVuY2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKSB7XG4gIGlmICh2ZXJzZU9iamVjdHM/Lmxlbmd0aCkge1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0c18gPSBbLi4udmVyc2VPYmplY3RzXVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB2ZXJzZU9iamVjdHNfLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3Qgdm8gPSB2ZXJzZU9iamVjdHNfW2ldXG5cbiAgICAgIGlmICh2by50eXBlID09PSAnd29yZCcgJiYgKHZvLm9jY3VycmVuY2UgfHwgdm8ub2NjdXJyZW5jZXMpKSB7XG4gICAgICAgIGNvbnN0IHdvcmQgPSB7IC4uLnZvIH1cblxuICAgICAgICBpZiAodm8ub2NjdXJyZW5jZSkge1xuICAgICAgICAgIHdvcmQub2NjdXJyZW5jZSA9IGZpeE9jY3VycmVuY2Uodm8ub2NjdXJyZW5jZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2by5vY2N1cnJlbmNlcykge1xuICAgICAgICAgIHdvcmQub2NjdXJyZW5jZXMgPSBmaXhPY2N1cnJlbmNlKHZvLm9jY3VycmVuY2VzKVxuICAgICAgICB9XG4gICAgICAgIHZlcnNlT2JqZWN0c19baV0gPSB3b3JkXG4gICAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2by5jaGlsZHJlbilcbiAgICAgICAgY29uc3QgbmV3Vm8gPSB7XG4gICAgICAgICAgLi4udm8sXG4gICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIH1cbiAgICAgICAgdmVyc2VPYmplY3RzX1tpXSA9IG5ld1ZvXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNfXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbi8qKlxuICogdGFrZSB0aGUgZmlsZW5hbWUgb2YgdGhlIGJvb2sgKGUuZy4gXCI1Ny1USVQudXNmbVwiKSBhbmQgcGFyc2Ugb3V0IHRoZSBib29rSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZVxuICogQHJldHVybiB7c3RyaW5nfSBib29rSWQgaWYgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSkge1xuICBjb25zdCByZWdleCA9IC9eKC4qPylcXC51c2ZtL1xuICBjb25zdCBib29rTmFtZSA9IGZpbGVuYW1lPy5tYXRjaChyZWdleCk/LlsxXVxuICByZXR1cm4gYm9va05hbWVcbn1cblxuLyoqXG4gKiBwYXJzZSB0aGUgVVNGTSB0byBmaW5kIGJvb2tJRCBpbiBoZWFkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm1cbiAqIEByZXR1cm4ge3N0cmluZ30gYm9va0lkIGlmIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQoYmlibGVVc2ZtKSB7XG4gIGNvbnN0IGlkSGVhZGVyID0gJ1xcXFxpZCAnXG4gIGNvbnN0IHBvc0lkID0gYmlibGVVc2ZtPy5pbmRleE9mKGlkSGVhZGVyKVxuXG4gIGlmIChwb3NJZCA+PSAwKSB7XG4gICAgY29uc3QgaWRTdGFydCA9IHBvc0lkICsgaWRIZWFkZXIubGVuZ3RoXG4gICAgbGV0IGhlYWRlcklkID0gYmlibGVVc2ZtPy5zdWJzdHJpbmcoIGlkU3RhcnQsIGlkU3RhcnQgKyAxMDApLnRyaW0oKVxuICAgIGxldCBoZWFkZXJCb29rSUQgPSBudWxsXG5cbiAgICBpZiAoaGVhZGVySWQ/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGhlYWRlckJvb2tJRCA9IGhlYWRlcklkPy5zcGxpdCgnICcpXG4gICAgICBoZWFkZXJCb29rSUQgPSBoZWFkZXJCb29rSUQ/LlswXS50cmltKClcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlckJvb2tJRFxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiB0aGVyZSBhcmUgYW55IHdvcmRzIGluIHZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB2ZXJzZU9iamVjdHMgLSBhcnJheSBvZiB2ZXJzZU9iamVjdHMgdG8gc2VhcmNoIGZvciB3b3Jkc1xuICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB3b3JkIGlzIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzZU9iamVjdHNIYXZlV29yZHModmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlKSB7XG4gIGlmICh2ZXJzZU9iamVjdHM/Lmxlbmd0aCkge1xuICAgIGZvciAoY29uc3Qgdm8gb2YgdmVyc2VPYmplY3RzKSB7XG4gICAgICBpZiAodm8udHlwZSA9PT0gJ3dvcmQnKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kV29yZHMgPSB2ZXJzZU9iamVjdHNIYXZlV29yZHModm8uY2hpbGRyZW4pXG5cbiAgICAgICAgaWYgKGZvdW5kV29yZHMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUNFQSx1QkFBdUIsRUFDdkJDLHNCQUFzQixFQUN0QkMsYUFBYSxFQUNiQyx5QkFBeUIsRUFDekJDLDBCQUEwQixRQUNyQix1QkFBdUI7QUFDOUIsU0FDRUMsd0JBQXdCLEVBQ3hCQyxnQkFBZ0IsRUFDaEJDLDBCQUEwQixFQUMxQkMsNEJBQTRCLEVBQzVCQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsNkJBQTZCLEVBQzdCQyxjQUFjLEVBQ2RDLGlCQUFpQixRQUNaLFVBQVU7QUFDakIsU0FBUUMsZ0JBQWdCLFFBQU8sVUFBVTtBQUV6QyxPQUFPLElBQU1DLG9CQUFvQixHQUFHLElBQUksRUFBQzs7QUFFekMsT0FBTyxTQUFTQyxlQUFlQSxDQUFDQyxTQUFTLEVBQUU7RUFDekMsSUFBTUMsR0FBRyxHQUFHRCxTQUFTLENBQUNDLEdBQUcsSUFBSUQsU0FBUyxDQUFDRSxNQUFNO0VBQzdDLFVBQUFDLE1BQUEsQ0FBVUgsU0FBUyxDQUFDSSxLQUFLLE9BQUFELE1BQUEsQ0FBSUgsU0FBUyxDQUFDSyxVQUFVLE9BQUFGLE1BQUEsQ0FBSUgsU0FBUyxDQUFDTSxVQUFVLE9BQUFILE1BQUEsQ0FBSUYsR0FBRztBQUNsRjtBQUVBLE9BQU8sU0FBU00saUJBQWlCQSxDQUFDQyxZQUFZLEVBQUU7RUFDOUMsSUFBQUMsbUJBQUEsR0FBNkNELFlBQVksQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUFBQyxvQkFBQSxHQUFBQyxjQUFBLENBQUFILG1CQUFBO0lBQTdETCxLQUFLLEdBQUFPLG9CQUFBO0lBQUVOLFVBQVUsR0FBQU0sb0JBQUE7SUFBRUwsVUFBVSxHQUFBSyxvQkFBQTtJQUFFVixHQUFHLEdBQUFVLG9CQUFBO0VBQ3pDLE9BQU87SUFDTFAsS0FBSyxFQUFMQSxLQUFLO0lBQ0xDLFVBQVUsRUFBVkEsVUFBVTtJQUNWQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkwsR0FBRyxFQUFIQTtFQUNGLENBQUM7QUFDSDtBQUVBLE9BQU8sU0FBU1ksa0JBQWtCQSxDQUFBQyxJQUFBLEVBVS9CO0VBQUEsSUFUREMsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFDTEMsTUFBTSxHQUFBRixJQUFBLENBQU5FLE1BQU07SUFDTlosS0FBSyxHQUFBVSxJQUFBLENBQUxWLEtBQUs7SUFDTEgsR0FBRyxHQUFBYSxJQUFBLENBQUhiLEdBQUc7SUFDSEksVUFBVSxHQUFBUyxJQUFBLENBQVZULFVBQVU7SUFDVkMsVUFBVSxHQUFBUSxJQUFBLENBQVZSLFVBQVU7SUFDVkUsWUFBWSxHQUFBTSxJQUFBLENBQVpOLFlBQVk7SUFDWlMsa0JBQWtCLEdBQUFILElBQUEsQ0FBbEJHLGtCQUFrQjtJQUNsQkMscUJBQXFCLEdBQUFKLElBQUEsQ0FBckJJLHFCQUFxQjtFQUVyQixJQUFNbEIsU0FBUyxHQUFHO0lBQ2hCZSxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05aLEtBQUssRUFBTEEsS0FBSztJQUNMYyxxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQmpCLEdBQUcsRUFBSEEsR0FBRztJQUNISSxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZXLGtCQUFrQixFQUFsQkEsa0JBQWtCO0lBQ2xCVCxZQUFZLEVBQVpBO0VBQ0YsQ0FBQztFQUVELElBQUksQ0FBQ0EsWUFBWSxFQUFFO0lBQ2pCUixTQUFTLENBQUNRLFlBQVksR0FBR1QsZUFBZSxDQUFDO01BQ3ZDSyxLQUFLLEVBQUxBLEtBQUs7TUFDTEgsR0FBRyxFQUFIQSxHQUFHO01BQ0hJLFVBQVUsRUFBVkEsVUFBVTtNQUNWQyxVQUFVLEVBQVZBO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7RUFDQSxPQUFPTixTQUFTO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNtQiwyQkFBMkJBLENBQUNDLGVBQWUsRUFBRUMsUUFBUSxFQUFFO0VBQUEsSUFBQUMscUJBQUE7RUFDckUsT0FBT0YsZUFBZSxhQUFmQSxlQUFlLGdCQUFBRSxxQkFBQSxHQUFmRixlQUFlLENBQUVHLFlBQVksY0FBQUQscUJBQUEsdUJBQTdCQSxxQkFBQSxDQUErQkUsSUFBSSxDQUN4QyxVQUFBQyxRQUFRO0lBQUEsT0FBSUEsUUFBUSxDQUFDQyxLQUFLLEtBQUtMLFFBQVE7RUFBQSxDQUN6QyxDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNNLGVBQWVBLENBQUNyQixVQUFVLEVBQUU7RUFDMUMsSUFBTXNCLE1BQU0sR0FBS3RCLFVBQVUsS0FBS2hCLGtCQUFrQixJQUFNZ0IsVUFBVSxLQUFLYixrQkFBbUIsSUFBS2EsVUFBVSxLQUFLZixlQUFpQjtFQUMvSCxPQUFPcUMsTUFBTTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0Msc0JBQXNCQSxDQUFDQyxpQkFBc0IsRUFBRUMsWUFBaUIsRUFBRUMsaUJBQXNCLEVBQUU7RUFDeEcsSUFBSUQsWUFBWSxJQUFLQSxZQUFZLEtBQUtELGlCQUFpQixDQUFDMUIsS0FBTSxFQUFFO0lBQUU7SUFDaEUwQixpQkFBaUIsQ0FBQzFCLEtBQUssR0FBRzJCLFlBQVk7RUFDeEM7RUFFQSxJQUFJQyxpQkFBaUIsSUFBS0EsaUJBQWlCLEtBQUtGLGlCQUFpQixDQUFDekIsVUFBVyxFQUFFO0lBQUU7SUFDL0V5QixpQkFBaUIsQ0FBQ3pCLFVBQVUsR0FBRzJCLGlCQUFpQjtFQUNsRDtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQyxRQUFRQSxDQUFDQyxlQUFlLEVBQUU7RUFDeEMsSUFBSUEsZUFBZSxFQUFFO0lBQ25CLElBQU1DLEdBQUcsR0FBRyxJQUFJQyxHQUFHLENBQUNGLGVBQWUsQ0FBQztJQUNwQyxJQUFNbEIsTUFBTSxHQUFHbUIsR0FBRyxDQUFDRSxNQUFNO0lBQ3pCLElBQU03QixZQUFZLEdBQUcyQixHQUFHLENBQUNHLFFBQVEsSUFBSUgsR0FBRyxDQUFDSSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RELE9BQU87TUFBRXZCLE1BQU0sRUFBTkEsTUFBTTtNQUFFUixZQUFZLEVBQVpBO0lBQWEsQ0FBQztFQUNqQztFQUNBLE9BQU8sQ0FBQyxDQUFDO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTZ0MsNEJBQTRCQSxDQUMxQ0MsTUFBTSxFQUFFQyxrQkFBa0IsRUFBRUMsY0FBYyxFQUkxQztFQUFBLElBSEFULGVBQWUsR0FBQVUsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUMsSUFBSTtFQUFBLElBQ3BCWixpQkFBaUIsR0FBQVksU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUMsSUFBSTtFQUFBLElBQ3RCYixZQUFZLEdBQUFhLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFDLElBQUk7RUFFakIsSUFBTWQsaUJBQWlCLEdBQUFpQixhQUFBLEtBQVFMLGtCQUFrQixDQUFFO0VBQ25EWixpQkFBaUIsQ0FBQ2Isa0JBQWtCLEdBQUduQixvQkFBb0I7RUFDM0QsSUFBTVEsVUFBVSxHQUFHb0Msa0JBQWtCLENBQUNwQyxVQUFVO0VBRWhELElBQUlBLFVBQVUsS0FBS2YsZUFBZSxFQUFFO0lBQ2xDO0lBQ0F1QyxpQkFBaUIsQ0FBQ3pCLFVBQVUsR0FBR3NDLGNBQWMsR0FBR3RELFlBQVksR0FBR0csWUFBWTtJQUMzRXNDLGlCQUFpQixDQUFDeEIsVUFBVSxHQUFHcUMsY0FBYyxHQUN6Q3JELGtCQUFrQixHQUNsQkcsa0JBQWtCO0lBRXRCLElBQUlxQyxpQkFBaUIsQ0FBQ1oscUJBQXFCLEVBQUU7TUFDM0NZLGlCQUFpQixDQUFDMUIsS0FBSyxHQUFHMEIsaUJBQWlCLENBQUNaLHFCQUFxQjtJQUNuRTtJQUVBLElBQUlnQixlQUFlLEVBQUU7TUFBRTtNQUNyQixJQUFBYyxTQUFBLEdBQWlDZixRQUFRLENBQUNDLGVBQWUsQ0FBQztRQUFsRGxCLE1BQU0sR0FBQWdDLFNBQUEsQ0FBTmhDLE1BQU07UUFBRVIsWUFBWSxHQUFBd0MsU0FBQSxDQUFaeEMsWUFBWTtNQUM1QnNCLGlCQUFpQixDQUFDZCxNQUFNLEdBQUdBLE1BQU07TUFDakNjLGlCQUFpQixDQUFDdEIsWUFBWSxHQUFHQSxZQUFZO0lBQy9DLENBQUMsTUFBTTtNQUFFO01BQ1BzQixpQkFBaUIsQ0FBQ3RCLFlBQVksR0FBR1QsZUFBZSxDQUFDK0IsaUJBQWlCLENBQUM7SUFDckU7SUFDQUEsaUJBQWlCLENBQUNiLGtCQUFrQixHQUFHLEtBQUs7RUFDOUMsQ0FBQyxNQUFNLElBQUlYLFVBQVUsS0FBS1gsY0FBYyxFQUFFO0lBQ3hDa0Msc0JBQXNCLENBQUNDLGlCQUFpQixFQUFFQyxZQUFZLEVBQUVDLGlCQUFpQixDQUFDO0lBQzFFRixpQkFBaUIsQ0FBQ3hCLFVBQVUsR0FBR3dCLGlCQUFpQixDQUFDekIsVUFBVSxLQUFLLElBQUksR0FBRyxLQUFLLEdBQUcsS0FBSztJQUNwRnlCLGlCQUFpQixDQUFDdEIsWUFBWSxHQUFHVCxlQUFlLENBQUMrQixpQkFBaUIsQ0FBQztFQUNyRSxDQUFDLE1BQU0sSUFBSXhCLFVBQVUsS0FBS1YsaUJBQWlCLEVBQUU7SUFDM0NpQyxzQkFBc0IsQ0FBQ0MsaUJBQWlCLEVBQUVDLFlBQVksRUFBRUMsaUJBQWlCLENBQUM7SUFDMUVGLGlCQUFpQixDQUFDeEIsVUFBVSxHQUFHd0IsaUJBQWlCLENBQUN6QixVQUFVLEtBQUssSUFBSSxHQUFHLEtBQUssR0FBRyxLQUFLO0lBQ3BGeUIsaUJBQWlCLENBQUN0QixZQUFZLEdBQUdULGVBQWUsQ0FBQytCLGlCQUFpQixDQUFDO0VBQ3JFO0VBQ0EsT0FBT0EsaUJBQWlCO0FBQzFCO0FBRUEsT0FBTyxTQUFTbUIsMkJBQTJCQSxDQUFBQyxLQUFBLEVBS3hDO0VBQUEsSUFKREMsS0FBSyxHQUFBRCxLQUFBLENBQUxDLEtBQUs7SUFDTDNDLFlBQVksR0FBQTBDLEtBQUEsQ0FBWjFDLFlBQVk7SUFDWjRDLFlBQVksR0FBQUYsS0FBQSxDQUFaRSxZQUFZO0lBQ1pDLG9CQUFvQixHQUFBSCxLQUFBLENBQXBCRyxvQkFBb0I7RUFFcEIsSUFBTUMsT0FBTyxHQUFHRCxvQkFBb0IsQ0FBQ0UsU0FBUyxDQUFDLENBQUM7RUFDaEQsSUFBSUMsS0FBSyxHQUFHSCxvQkFBb0IsQ0FBQ0ksa0JBQWtCLENBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUU5QyxZQUFZLENBQUM7RUFFMUYsSUFBTWtELHVCQUF1QixHQUFHO0lBQzlCUCxLQUFLLEVBQUxBLEtBQUs7SUFBRTtJQUNQUSxPQUFPLEVBQUVMLE9BQU87SUFDaEJNLE9BQU8sRUFBRUosS0FBSztJQUNkSyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsUUFBUSxFQUFFLFNBQUFBLFNBQUMvQyxLQUFLLEVBQUV5QyxLQUFLLEVBQXdCO01BQUEsSUFBdEJPLFlBQVksR0FBQW5CLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFDLElBQUk7TUFDeEMsSUFBSW9CLElBQUk7TUFFUixJQUFLUixLQUFLLEdBQUcsQ0FBQyxJQUFLekMsS0FBSyxFQUFFO1FBQ3hCLElBQU1rRCxPQUFPLEdBQUc7VUFDZDlCLEdBQUcsRUFBRXBCLEtBQUs7VUFDVkEsS0FBSyxFQUFMQTtRQUNGLENBQUM7UUFDRCxJQUFNeUMsTUFBSyxHQUFHSCxvQkFBb0IsQ0FBQ2EsZ0JBQWdCLENBQUNELE9BQU8sQ0FBQztRQUU1RCxJQUFJVCxNQUFLLElBQUksQ0FBQyxFQUFFO1VBQ2RRLElBQUksR0FBR1gsb0JBQW9CLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUNDLE1BQUssQ0FBQztRQUNoRDtNQUNGLENBQUMsTUFBTTtRQUNMUSxJQUFJLEdBQUdYLG9CQUFvQixDQUFDYyxjQUFjLENBQUNwRCxLQUFLLENBQUM7TUFDbkQ7TUFFQSxJQUFJaUQsSUFBSSxFQUFFO1FBQ1JaLFlBQVksQ0FBQ1ksSUFBSSxFQUFFRCxZQUFZLENBQUM7TUFDbEM7SUFDRixDQUFDO0lBQ0RLLFVBQVUsRUFBRSxTQUFBQSxXQUFBckQsS0FBSyxFQUFJO01BQ25CLElBQU11QyxPQUFPLEdBQUdELG9CQUFvQixDQUFDRSxTQUFTLENBQUMsQ0FBQztNQUNoRCxJQUFNYyxXQUFXLEdBQUdoQixvQkFBb0IsQ0FBQ0ksa0JBQWtCLENBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUV2QyxLQUFLLENBQUM7TUFDcEZzQyxvQkFBb0IsQ0FBQ2lCLGlCQUFpQixDQUFDRCxXQUFXLENBQUM7SUFDckQ7RUFDRixDQUFDO0VBRUQsT0FBT1gsdUJBQXVCO0FBQ2hDO0FBRUEsT0FBTyxTQUFTYSxVQUFVQSxDQUFDL0QsWUFBb0IsRUFBRVEsTUFBYyxFQUFFd0QsSUFBYSxFQUFVO0VBQ3RGLElBQUlDLE9BQU87RUFFWCxJQUFJO0lBQ0YsSUFBQUMsb0JBQUEsR0FBc0NsRSxZQUFZLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFBQWlFLG9CQUFBLEdBQUEvRCxjQUFBLENBQUE4RCxvQkFBQTtNQUF4RHRFLEtBQUssR0FBQXVFLG9CQUFBO01BQUV0RSxVQUFVLEdBQUFzRSxvQkFBQTtNQUFFckUsVUFBVSxHQUFBcUUsb0JBQUE7SUFFbEMsUUFBUXJFLFVBQVU7TUFDbEIsS0FBS2YsZUFBZTtRQUNsQmMsVUFBVSxHQUFHbUUsSUFBSSxHQUFHbkYsWUFBWSxHQUFHRyxZQUFZO1FBQy9DYyxVQUFVLEdBQUdrRSxJQUFJLEdBQ2JsRixrQkFBa0IsR0FDbEJHLGtCQUFrQjtRQUN0QjtNQUVGLEtBQUtFLGNBQWM7UUFDakJXLFVBQVUsR0FBSUQsVUFBVSxLQUFLLElBQUksR0FBSSxLQUFLLEdBQUcsS0FBSztRQUNsRDtNQUVGLEtBQUtULGlCQUFpQjtRQUNwQlUsVUFBVSxHQUFJRCxVQUFVLEtBQUssSUFBSSxHQUFJLEtBQUssR0FBRyxLQUFLO1FBQ2xEO0lBQ0Y7SUFDQW9FLE9BQU8sTUFBQXRFLE1BQUEsQ0FBTUMsS0FBSyxPQUFBRCxNQUFBLENBQUlFLFVBQVUsT0FBQUYsTUFBQSxDQUFJRyxVQUFVLENBQUU7RUFDbEQsQ0FBQyxDQUFDLE9BQU9zRSxDQUFDLEVBQUU7SUFDVjtFQUFBOztFQUdGO0VBQ0EsVUFBQXpFLE1BQUEsQ0FBVWEsTUFBTSxJQUFJLEVBQUUsT0FBQWIsTUFBQSxDQUFJc0UsT0FBTztBQUNuQztBQUVBLE9BQU8sU0FBU0ksOEJBQThCQSxDQUM1Q3JFLFlBQW9CLEVBQ3BCUSxNQUFjLEVBQ2Q4RCxTQUFpQixFQUNqQk4sSUFBYSxFQUNmO0VBQ0UsSUFBTUMsT0FBTyxHQUFHRixVQUFVLENBQUMvRCxZQUFZLEVBQUVRLE1BQU0sRUFBRXdELElBQUksQ0FBQztFQUN0RCxJQUFNTyxRQUFRLEdBQUdELFNBQVMsR0FBR0wsT0FBTztFQUNwQyxPQUFPTSxRQUFRO0FBQ2pCO0FBRUEsT0FBTyxTQUFTQyxjQUFjQSxDQUFDN0MsR0FBRyxFQUFFO0VBQ2xDLElBQUk4QyxhQUFhLEdBQUcsS0FBSztFQUN6QixJQUFJQyxRQUFRLEdBQUcsS0FBSztFQUVwQixJQUFJO0lBQ0YsSUFBTUMsS0FBSyxHQUFHaEQsR0FBRyxDQUFDekIsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM1QixJQUFBMEUsTUFBQSxHQUFBeEUsY0FBQSxDQUF1Q3VFLEtBQUs7TUFBckNFLFFBQVEsR0FBQUQsTUFBQTtNQUFJRSxJQUFJLEdBQUFGLE1BQUE7TUFBRUcsSUFBSSxHQUFBSCxNQUFBO01BQUVJLElBQUksR0FBQUosTUFBQTtJQUNuQ0YsUUFBUSxHQUFJRyxRQUFRLEtBQUssUUFBUztJQUNsQyxJQUFNSSxTQUFTLEdBQUdILElBQUksR0FBR0EsSUFBSSxDQUFDNUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7SUFFN0MsSUFBSStFLFNBQVMsQ0FBQzVDLE1BQU0sSUFBSSxDQUFDLEVBQUU7TUFBQSxJQUFBNkMsU0FBQSxHQUFBQywwQkFBQSxDQUNSRixTQUFTO1FBQUFHLEtBQUE7TUFBQTtRQUExQixLQUFBRixTQUFBLENBQUFHLENBQUEsTUFBQUQsS0FBQSxHQUFBRixTQUFBLENBQUFJLENBQUEsSUFBQUMsSUFBQSxHQUE0QjtVQUFBLElBQW5CQyxJQUFJLEdBQUFKLEtBQUEsQ0FBQUssS0FBQTtVQUNYLElBQUksQ0FBQ0QsSUFBSSxFQUFFO1lBQ1RkLFFBQVEsR0FBRyxLQUFLO1lBQ2hCO1VBQ0Y7UUFDRjtNQUFDLFNBQUFnQixHQUFBO1FBQUFSLFNBQUEsQ0FBQWQsQ0FBQSxDQUFBc0IsR0FBQTtNQUFBO1FBQUFSLFNBQUEsQ0FBQVMsQ0FBQTtNQUFBO0lBQ0gsQ0FBQyxNQUFNO01BQ0xqQixRQUFRLEdBQUcsS0FBSztJQUNsQjtJQUVBLElBQUtHLFFBQVEsSUFBSUMsSUFBSSxJQUFJQyxJQUFJLElBQUlDLElBQUksRUFBRztNQUN0QyxJQUFBWSxXQUFBLEdBQWdDWixJQUFJLENBQUM5RSxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQUEyRixZQUFBLEdBQUF6RixjQUFBLENBQUF3RixXQUFBO1FBQXhDL0YsVUFBVSxHQUFBZ0csWUFBQTtRQUFFQyxTQUFTLEdBQUFELFlBQUE7TUFDNUJwQixhQUFhLEdBQUc1RSxVQUFVLElBQUlpRyxTQUFTO0lBQ3pDO0VBQ0YsQ0FBQyxDQUFDLE9BQUFDLE9BQUEsRUFBTTtJQUNOQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxtQkFBbUIsR0FBR3RFLEdBQUcsQ0FBQztFQUN4QztFQUNBLE9BQU87SUFBRStDLFFBQVEsRUFBUkEsUUFBUTtJQUFFRCxhQUFhLEVBQWJBO0VBQWMsQ0FBQztBQUNwQztBQUVBLE9BQU8sU0FBU3lCLHVCQUF1QkEsQ0FBQ0MsY0FBc0IsRUFBRTtFQUM5RCxJQUFJQyxPQUFPLEdBQUcsRUFBRTtFQUVoQixJQUFJRCxjQUFjLENBQUM1SCx5QkFBeUIsQ0FBQyxFQUFFO0lBQzdDNkgsT0FBTyxHQUFHeEgsNEJBQTRCO0VBQ3hDLENBQUMsTUFBTSxJQUFJdUgsY0FBYyxDQUFDOUgsc0JBQXNCLENBQUMsRUFBRTtJQUNqRCtILE9BQU8sR0FBR3pILDBCQUEwQjtFQUN0QyxDQUFDLE1BQU0sSUFBSXdILGNBQWMsQ0FBQy9ILHVCQUF1QixDQUFDLEVBQUU7SUFDbERnSSxPQUFPLEdBQUczSCx3QkFBd0I7RUFDcEMsQ0FBQyxNQUFNLElBQUkwSCxjQUFjLENBQUMzSCwwQkFBMEIsQ0FBQyxFQUFFO0lBQ3JENEgsT0FBTyxHQUFHbEgsNkJBQTZCO0VBQ3pDO0VBQ0EsT0FBT2tILE9BQU87QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0Msa0JBQWtCQSxDQUFDRixjQUFzQixFQUFFM0YsTUFBYyxFQUFFUixZQUFvQixFQUFFZ0UsSUFBYSxFQUFFO0VBQzlHLElBQUlvQyxPQUFPLEdBQUcsRUFBRTtFQUVoQixJQUFJRCxjQUFjLENBQUM3SCxhQUFhLENBQUMsRUFBRTtJQUNqQzhILE9BQU8sR0FBRzFILGdCQUFnQjtFQUM1QixDQUFDLE1BQU07SUFDTDBILE9BQU8sR0FBR0YsdUJBQXVCLENBQUNDLGNBQWMsQ0FBQztJQUVqRCxJQUFJQyxPQUFPLEVBQUU7TUFDWEEsT0FBTyxHQUFHL0IsOEJBQThCLENBQUNyRSxZQUFZLEVBQUVRLE1BQU0sRUFBRTRGLE9BQU8sRUFBRXBDLElBQUksQ0FBQztJQUMvRTtFQUNGO0VBQ0EsT0FBT29DLE9BQU87QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNFLHVCQUF1QkEsQ0FBQzFHLEtBQWEsRUFBRUMsVUFBa0IsRUFBRWlHLFNBQWlCLEVBQUVyRyxHQUFXLEVBQUU7RUFDekcsdUJBQUFFLE1BQUEsQ0FBdUJDLEtBQUssT0FBQUQsTUFBQSxDQUFJRSxVQUFVLE9BQUFGLE1BQUEsQ0FBSW1HLFNBQVMsb0JBQUFuRyxNQUFBLENBQWlCRixHQUFHO0FBQzdFO0FBRUEsT0FBTyxTQUFTOEcsYUFBYUEsQ0FBQ0MsVUFBVSxFQUFFO0VBQ3hDLElBQUksT0FBT0EsVUFBVSxLQUFLLFFBQVEsRUFBRTtJQUNsQyxPQUFPQyxRQUFRLENBQUNELFVBQVUsQ0FBQztFQUM3QjtFQUNBLE9BQU9BLFVBQVU7QUFDbkI7QUFFQSxPQUFPLFNBQVNFLG1CQUFtQkEsQ0FBQ0MsWUFBWSxFQUFFO0VBQ2hELElBQUlBLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUV0RSxNQUFNLEVBQUU7SUFDeEIsSUFBTXVFLGFBQWEsR0FBQUMsa0JBQUEsQ0FBT0YsWUFBWSxDQUFDO0lBRXZDLEtBQUssSUFBSUcsQ0FBQyxHQUFHLENBQUMsRUFBRUMsQ0FBQyxHQUFHSCxhQUFhLENBQUN2RSxNQUFNLEVBQUV5RSxDQUFDLEdBQUdDLENBQUMsRUFBRUQsQ0FBQyxFQUFFLEVBQUU7TUFDcEQsSUFBTUUsRUFBRSxHQUFHSixhQUFhLENBQUNFLENBQUMsQ0FBQztNQUUzQixJQUFJRSxFQUFFLENBQUNDLElBQUksS0FBSyxNQUFNLEtBQUtELEVBQUUsQ0FBQ1IsVUFBVSxJQUFJUSxFQUFFLENBQUNFLFdBQVcsQ0FBQyxFQUFFO1FBQzNELElBQU1DLElBQUksR0FBQTVFLGFBQUEsS0FBUXlFLEVBQUUsQ0FBRTtRQUV0QixJQUFJQSxFQUFFLENBQUNSLFVBQVUsRUFBRTtVQUNqQlcsSUFBSSxDQUFDWCxVQUFVLEdBQUdELGFBQWEsQ0FBQ1MsRUFBRSxDQUFDUixVQUFVLENBQUM7UUFDaEQ7UUFFQSxJQUFJUSxFQUFFLENBQUNFLFdBQVcsRUFBRTtVQUNsQkMsSUFBSSxDQUFDRCxXQUFXLEdBQUdYLGFBQWEsQ0FBQ1MsRUFBRSxDQUFDRSxXQUFXLENBQUM7UUFDbEQ7UUFDQU4sYUFBYSxDQUFDRSxDQUFDLENBQUMsR0FBR0ssSUFBSTtNQUN6QixDQUFDLE1BQU0sSUFBSUgsRUFBRSxDQUFDSSxRQUFRLEVBQUU7UUFDdEIsSUFBTUEsUUFBUSxHQUFHVixtQkFBbUIsQ0FBQ00sRUFBRSxDQUFDSSxRQUFRLENBQUM7UUFDakQsSUFBTUMsS0FBSyxHQUFBOUUsYUFBQSxDQUFBQSxhQUFBLEtBQ055RSxFQUFFO1VBQ0xJLFFBQVEsRUFBUkE7UUFBUSxFQUNUO1FBQ0RSLGFBQWEsQ0FBQ0UsQ0FBQyxDQUFDLEdBQUdPLEtBQUs7TUFDMUI7SUFDRjtJQUNBLE9BQU9ULGFBQWE7RUFDdEI7RUFDQSxPQUFPLEVBQUU7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTVSwyQkFBMkJBLENBQUNDLFFBQVEsRUFBRTtFQUFBLElBQUFDLGVBQUE7RUFDcEQsSUFBTUMsS0FBSyxHQUFHLGNBQWM7RUFDNUIsSUFBTUMsUUFBUSxHQUFHSCxRQUFRLGFBQVJBLFFBQVEsZ0JBQUFDLGVBQUEsR0FBUkQsUUFBUSxDQUFFSSxLQUFLLENBQUNGLEtBQUssQ0FBQyxjQUFBRCxlQUFBLHVCQUF0QkEsZUFBQSxDQUF5QixDQUFDLENBQUM7RUFDNUMsT0FBT0UsUUFBUTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTRSwyQkFBMkJBLENBQUNDLFNBQVMsRUFBRTtFQUNyRCxJQUFNQyxRQUFRLEdBQUcsT0FBTztFQUN4QixJQUFNQyxLQUFLLEdBQUdGLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFRyxPQUFPLENBQUNGLFFBQVEsQ0FBQztFQUUxQyxJQUFJQyxLQUFLLElBQUksQ0FBQyxFQUFFO0lBQ2QsSUFBTUUsT0FBTyxHQUFHRixLQUFLLEdBQUdELFFBQVEsQ0FBQ3pGLE1BQU07SUFDdkMsSUFBSTZGLFFBQVEsR0FBR0wsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVNLFNBQVMsQ0FBRUYsT0FBTyxFQUFFQSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUNHLElBQUksQ0FBQyxDQUFDO0lBQ25FLElBQUlDLFlBQVksR0FBRyxJQUFJO0lBRXZCLElBQUksQ0FBQUgsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUU3RixNQUFNLElBQUcsQ0FBQyxFQUFFO01BQUEsSUFBQWlHLGFBQUE7TUFDeEJELFlBQVksR0FBR0gsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVoSSxLQUFLLENBQUMsR0FBRyxDQUFDO01BQ25DbUksWUFBWSxJQUFBQyxhQUFBLEdBQUdELFlBQVksY0FBQUMsYUFBQSx1QkFBWkEsYUFBQSxDQUFlLENBQUMsQ0FBQyxDQUFDRixJQUFJLENBQUMsQ0FBQztJQUN6QztJQUNBLE9BQU9DLFlBQVk7RUFDckI7RUFDQSxPQUFPLElBQUk7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTRSxxQkFBcUJBLENBQUM1QixZQUE4QixFQUFFO0VBQ3BFLElBQUlBLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUV0RSxNQUFNLEVBQUU7SUFBQSxJQUFBbUcsVUFBQSxHQUFBckQsMEJBQUEsQ0FDUHdCLFlBQVk7TUFBQThCLE1BQUE7SUFBQTtNQUE3QixLQUFBRCxVQUFBLENBQUFuRCxDQUFBLE1BQUFvRCxNQUFBLEdBQUFELFVBQUEsQ0FBQWxELENBQUEsSUFBQUMsSUFBQSxHQUErQjtRQUFBLElBQXBCeUIsRUFBRSxHQUFBeUIsTUFBQSxDQUFBaEQsS0FBQTtRQUNYLElBQUl1QixFQUFFLENBQUNDLElBQUksS0FBSyxNQUFNLEVBQUU7VUFDdEIsT0FBTyxJQUFJO1FBQ2IsQ0FBQyxNQUFNLElBQUlELEVBQUUsQ0FBQ0ksUUFBUSxFQUFFO1VBQ3RCLElBQU1zQixVQUFVLEdBQUdILHFCQUFxQixDQUFDdkIsRUFBRSxDQUFDSSxRQUFRLENBQUM7VUFFckQsSUFBSXNCLFVBQVUsRUFBRTtZQUNkLE9BQU8sSUFBSTtVQUNiO1FBQ0Y7TUFDRjtJQUFDLFNBQUFoRCxHQUFBO01BQUE4QyxVQUFBLENBQUFwRSxDQUFBLENBQUFzQixHQUFBO0lBQUE7TUFBQThDLFVBQUEsQ0FBQTdDLENBQUE7SUFBQTtFQUNIO0VBQ0EsT0FBTyxLQUFLO0FBQ2QifQ==
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* extract just the alignments from verseObjects
|
|
471
|
+
* @param {VerseObjectsType} verseObjects
|
|
472
|
+
* @returns {VerseObjectsType} - just alignments
|
|
473
|
+
*/
|
|
474
|
+
export function getAlignments(verseObjects) {
|
|
475
|
+
var alignmentsList = verseObjects.filter(function (vo) {
|
|
476
|
+
return vo.tag === 'zaln';
|
|
477
|
+
});
|
|
478
|
+
|
|
479
|
+
// remove endTag
|
|
480
|
+
for (var i = 0; i < alignmentsList.length; i++) {
|
|
481
|
+
var alignment = alignmentsList[i];
|
|
482
|
+
if (alignment.endTag) {
|
|
483
|
+
var _alignment = _objectSpread({}, alignment);
|
|
484
|
+
delete _alignment.endTag;
|
|
485
|
+
alignmentsList[i] = _alignment;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
return alignmentsList;
|
|
489
|
+
}
|
|
490
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHIiwiTE9BRElOR19SRVNPVVJDRSIsIk1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHIiwiTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsIlNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHIiwiVEFSR0VUX0xJVEVSQUwiLCJUQVJHRVRfU0lNUExJRklFRCIsIlZlcnNlT2JqZWN0c1R5cGUiLCJESVNBQkxFX1dPUkRfUE9QT1ZFUiIsImdldFJlc291cmNlTGluayIsInNjcmlwdHVyZSIsInJlZiIsImJyYW5jaCIsImNvbmNhdCIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJwYXJzZVJlc291cmNlTGluayIsInJlc291cmNlTGluayIsIl9yZXNvdXJjZUxpbmskc3BsaXQiLCJzcGxpdCIsIl9yZXNvdXJjZUxpbmskc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJnZXRTY3JpcHR1cmVPYmplY3QiLCJfcmVmIiwidGl0bGUiLCJzZXJ2ZXIiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRWZXJzZURhdGFGcm9tU2NyaXBDb25maWciLCJzY3JpcHR1cmVDb25maWciLCJ2ZXJzZU51bSIsIl9zY3JpcHR1cmVDb25maWckdmVycyIsInZlcnNlc0ZvclJlZiIsImZpbmQiLCJ2ZXJzZVJlZiIsInZlcnNlIiwiaXNPcmlnaW5hbEJpYmxlIiwiaXNPcmlnIiwiY2xlYW51cEFjY291bnRTZXR0aW5ncyIsInNjcmlwdHVyZVNldHRpbmdzIiwiY3VycmVudE93bmVyIiwiY3VycmVudExhbmd1YWdlSWQiLCJzcGxpdFVybCIsIm9yaWdpbmFsUmVwb1VybCIsInVybCIsIlVSTCIsIm9yaWdpbiIsInBhdGhuYW1lIiwic2VhcmNoIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsImJvb2tJZCIsInNjcmlwdHVyZVNldHRpbmdzXyIsImlzTmV3VGVzdGFtZW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIl9zcGxpdFVybCIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsIl9yZWYyIiwibGFiZWwiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImhpc3RvcnkiLCJnZXRMYXRlc3QiLCJpbmRleCIsImZpbmRJdGVtSW5kZXhCeUtleSIsInNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnIiwib3B0aW9ucyIsImN1cnJlbnQiLCJhbGxvd1VzZXJJbnB1dCIsIm9uQ2hhbmdlIiwidmFsaWRhdGlvbkNCIiwiaXRlbSIsIm5ld0l0ZW0iLCJhZGRJdGVtVG9IaXN0b3J5IiwiZ2V0SXRlbUJ5VGl0bGUiLCJkZWxldGVJdGVtIiwiZGVsZXRlSW5kZXgiLCJyZW1vdmVJdGVtQnlJbmRleCIsImdldFJlcG9VcmwiLCJpc05UIiwicmVwb1VybCIsIl9yZXNvdXJjZUxpbmskc3BsaXQzIiwiX3Jlc291cmNlTGluayRzcGxpdDQiLCJlIiwiZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rIiwiZXJyb3JDb2RlIiwiZXJyb3JNc2ciLCJ2YWxpZGF0ZURjc1VybCIsInZhbGlkUmVwb1BhdGgiLCJ2YWxpZFVybCIsInBhcnRzIiwiX3BhcnRzIiwicHJvdG9jb2wiLCJob3N0IiwidXNlciIsInJlcG8iLCJob3N0UGFydHMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwicGFydCIsInZhbHVlIiwiZXJyIiwiZiIsIl9yZXBvJHNwbGl0IiwiX3JlcG8kc3BsaXQyIiwicHJvamVjdElkIiwiX3VudXNlZCIsImNvbnNvbGUiLCJsb2ciLCJnZXRSZXNvdXJjZUVycm9yTWVzc2FnZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFJlc291cmNlTGlua1NwZWNpZmljIiwiZml4T2NjdXJyZW5jZSIsIm9jY3VycmVuY2UiLCJwYXJzZUludCIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaSIsImwiLCJ2byIsInR5cGUiLCJvY2N1cnJlbmNlcyIsIndvcmQiLCJjaGlsZHJlbiIsIm5ld1ZvIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZmlsZW5hbWUiLCJfZmlsZW5hbWUkbWF0Y2giLCJyZWdleCIsImJvb2tOYW1lIiwibWF0Y2giLCJnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQiLCJiaWJsZVVzZm0iLCJpZEhlYWRlciIsInBvc0lkIiwiaW5kZXhPZiIsImlkU3RhcnQiLCJoZWFkZXJJZCIsInN1YnN0cmluZyIsInRyaW0iLCJoZWFkZXJCb29rSUQiLCJfaGVhZGVyQm9va0lEIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImZvdW5kV29yZHMiLCJnZXRBbGlnbm1lbnRzIiwiYWxpZ25tZW50c0xpc3QiLCJmaWx0ZXIiLCJ0YWciLCJhbGlnbm1lbnQiLCJlbmRUYWciLCJfYWxpZ25tZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBJTlZBTElEX01BTklGRVNUX0VSUk9SLFxuICBMT0FESU5HX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUixcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuaW1wb3J0IHtcbiAgQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBMT0FESU5HX1JFU09VUkNFLFxuICBNQU5JRkVTVF9JTlZBTElEX0VSUk9SX01TRyxcbiAgTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyxcbiAgTlRfT1JJR19MQU5HLFxuICBOVF9PUklHX0xBTkdfQklCTEUsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxuICBPVF9PUklHX0xBTkdfQklCTEUsXG4gIFNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBUQVJHRVRfTElURVJBTCxcbiAgVEFSR0VUX1NJTVBMSUZJRUQsXG59IGZyb20gJy4vY29tbW9uJ1xuaW1wb3J0IHtWZXJzZU9iamVjdHNUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFX1dPUkRfUE9QT1ZFUiA9IHRydWUgLy8gZGlzYWJsZSB3b3JkIHBvcG92ZXIgZm9yIGV2ZXJ5IHNjcmlwdHVyZSBwYW5lIGJ1dCBvcmlnaW5hbCBsYW5ndWFnZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGluayhzY3JpcHR1cmUpIHtcbiAgY29uc3QgcmVmID0gc2NyaXB0dXJlLnJlZiB8fCBzY3JpcHR1cmUuYnJhbmNoXG4gIHJldHVybiBgJHtzY3JpcHR1cmUub3duZXJ9LyR7c2NyaXB0dXJlLmxhbmd1YWdlSWR9LyR7c2NyaXB0dXJlLnJlc291cmNlSWR9LyR7cmVmfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVzb3VyY2VMaW5rKHJlc291cmNlTGluaykge1xuICBjb25zdCBbb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQsIHJlZl0gPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuICByZXR1cm4ge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICByZWYsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdHVyZU9iamVjdCh7XG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIG93bmVyLFxuICByZWYsXG4gIGxhbmd1YWdlSWQsXG4gIHJlc291cmNlSWQsXG4gIHJlc291cmNlTGluayxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG59KSB7XG4gIGNvbnN0IHNjcmlwdHVyZSA9IHtcbiAgICB0aXRsZSxcbiAgICBzZXJ2ZXIsXG4gICAgb3duZXIsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHJlZixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIHJlc291cmNlTGluayxcbiAgfVxuXG4gIGlmICghcmVzb3VyY2VMaW5rKSB7XG4gICAgc2NyaXB0dXJlLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICBvd25lcixcbiAgICAgIHJlZixcbiAgICAgIGxhbmd1YWdlSWQsXG4gICAgICByZXNvdXJjZUlkLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIHNjcmlwdHVyZVxufVxuXG4vKipcbiAqIHJldHVybiB2ZXJzZSBkYXRhIGdpdmVuIGEgc2NyaXB0dXJlIGNvbmZpZyBhbmQgdmVyc2UgbnVtYmVyXG4gKiBAcGFyYW0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0gdmVyc2VOdW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlRGF0YUZyb21TY3JpcENvbmZpZyhzY3JpcHR1cmVDb25maWcsIHZlcnNlTnVtKSB7XG4gIHJldHVybiBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uZmluZChcbiAgICB2ZXJzZVJlZiA9PiB2ZXJzZVJlZi52ZXJzZSA9PT0gdmVyc2VOdW1cbiAgKVxufVxuXG4vKipcbiAqIHJldHVybiB0cnVlIGlmIHJlc291cmNlIGlzIGFuIG9yaWdpbmFsIGxhbmd1YWdlIGJpYmxlXG4gKiBAcGFyYW0gcmVzb3VyY2VJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcmlnaW5hbEJpYmxlKHJlc291cmNlSWQpIHtcbiAgY29uc3QgaXNPcmlnID0gKChyZXNvdXJjZUlkID09PSBOVF9PUklHX0xBTkdfQklCTEUpIHx8IChyZXNvdXJjZUlkID09PSBPVF9PUklHX0xBTkdfQklCTEUpIHx8IChyZXNvdXJjZUlkID09PSBPUklHSU5BTF9TT1VSQ0UpKVxuICByZXR1cm4gaXNPcmlnXG59XG5cbi8qKlxuICogbWFrZSBzdXJlIHNjcmlwdHVyZVNldHRpbmdzIGFyZSB1cCB0byBkYXRlIHdpdGggY3VycmVudCBvd25lciBhbmQgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVTZXR0aW5nc1xuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRPd25lciAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgb3duZXIgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudExhbmd1YWdlSWQgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIGxhbmd1YWdlIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cEFjY291bnRTZXR0aW5ncyhzY3JpcHR1cmVTZXR0aW5nczogYW55LCBjdXJyZW50T3duZXI6IGFueSwgY3VycmVudExhbmd1YWdlSWQ6IGFueSkge1xuICBpZiAoY3VycmVudE93bmVyICYmIChjdXJyZW50T3duZXIgIT09IHNjcmlwdHVyZVNldHRpbmdzLm93bmVyKSkgeyAvLyBpZiBvd25lciBjaGFuZ2VkLCB1cGRhdGUgc2NyaXB0dXJlU2V0dGluZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5vd25lciA9IGN1cnJlbnRPd25lclxuICB9XG5cbiAgaWYgKGN1cnJlbnRMYW5ndWFnZUlkICYmIChjdXJyZW50TGFuZ3VhZ2VJZCAhPT0gc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCkpIHsgLy8gaWYgbGFuZ3VhZ2UgY2hhbmdlZCwgdXBkYXRlIHNjcmlwdHVyZVNldHRpbmdzXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9IGN1cnJlbnRMYW5ndWFnZUlkXG4gIH1cbn1cblxuLyoqXG4gKiBzZXBhcmF0ZSBVUkwgaW50byBzZXJ2ZXIgYW5kIHJlc291cmNlIGxpbmtcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFJlcG9VcmxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VXJsKG9yaWdpbmFsUmVwb1VybCkge1xuICBpZiAob3JpZ2luYWxSZXBvVXJsKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChvcmlnaW5hbFJlcG9VcmwpXG4gICAgY29uc3Qgc2VydmVyID0gdXJsLm9yaWdpblxuICAgIGNvbnN0IHJlc291cmNlTGluayA9IHVybC5wYXRobmFtZSArICh1cmwuc2VhcmNoIHx8ICcnKVxuICAgIHJldHVybiB7IHNlcnZlciwgcmVzb3VyY2VMaW5rIH1cbiAgfVxuICByZXR1cm4ge31cbn1cblxuLyoqXG4gKiBnZXQgdGhlIHNjcmlwdHVyZSBzZXR0aW5ncyBuZWVkZWQgZm9yIGZldGNoIC0gZm9yIE9yaWdMYW5nLCBVTFQsIEdMVCB3aWxsIHJlcGxhY2Ugb3duZXIgYW5kIGxhbmd1YWdlSWQgd2l0aCBjb3JyZWN0IHZhbHVlc1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZVNldHRpbmdzX1xuICogQHBhcmFtIHtib29sZWFufSBpc05ld1Rlc3RhbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybCAtIG9wdGlvbmFsIHBhdGggdG8gcmVwbyBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gIGJvb2tJZCwgc2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxSZXBvVXJsPW51bGwsXG4gIGN1cnJlbnRMYW5ndWFnZUlkPW51bGwsXG4gIGN1cnJlbnRPd25lcj1udWxsLFxuKSB7XG4gIGNvbnN0IHNjcmlwdHVyZVNldHRpbmdzID0geyAuLi5zY3JpcHR1cmVTZXR0aW5nc18gfVxuICBzY3JpcHR1cmVTZXR0aW5ncy5kaXNhYmxlV29yZFBvcG92ZXIgPSBESVNBQkxFX1dPUkRfUE9QT1ZFUlxuICBjb25zdCByZXNvdXJjZUlkID0gc2NyaXB0dXJlU2V0dGluZ3NfLnJlc291cmNlSWRcblxuICBpZiAocmVzb3VyY2VJZCA9PT0gT1JJR0lOQUxfU09VUkNFKSB7XG4gICAgLy8gc2VsZWN0IG9yaWdpbmFsIGxhbmd1YWdlIEJpYmxlIGJhc2VkIG9uIHdoaWNoIHRlc3RhbWVudCB0aGUgYm9vayBiZWxvbmdzXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9IGlzTmV3VGVzdGFtZW50ID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IGlzTmV3VGVzdGFtZW50XG4gICAgICA/IE5UX09SSUdfTEFOR19CSUJMRVxuICAgICAgOiBPVF9PUklHX0xBTkdfQklCTEVcblxuICAgIGlmIChzY3JpcHR1cmVTZXR0aW5ncy5vcmlnaW5hbExhbmd1YWdlT3duZXIpIHtcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLm93bmVyID0gc2NyaXB0dXJlU2V0dGluZ3Mub3JpZ2luYWxMYW5ndWFnZU93bmVyXG4gICAgfVxuXG4gICAgaWYgKG9yaWdpbmFsUmVwb1VybCkgeyAvLyB1c2UgdGhpcyB1cmwgaWYgZGVmaW5lZFxuICAgICAgY29uc3QgeyBzZXJ2ZXIsIHJlc291cmNlTGluayB9ID0gc3BsaXRVcmwob3JpZ2luYWxSZXBvVXJsKVxuICAgICAgc2NyaXB0dXJlU2V0dGluZ3Muc2VydmVyID0gc2VydmVyXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSByZXNvdXJjZUxpbmtcbiAgICB9IGVsc2UgeyAvLyBmYWxsIGJhY2sgdG8gYXBwIGRlZmF1bHRzXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlU2V0dGluZ3MpXG4gICAgfVxuICAgIHNjcmlwdHVyZVNldHRpbmdzLmRpc2FibGVXb3JkUG9wb3ZlciA9IGZhbHNlXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VJZCA9PT0gVEFSR0VUX0xJVEVSQUwpIHtcbiAgICBjbGVhbnVwQWNjb3VudFNldHRpbmdzKHNjcmlwdHVyZVNldHRpbmdzLCBjdXJyZW50T3duZXIsIGN1cnJlbnRMYW5ndWFnZUlkKVxuICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlSWQgPSBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID09PSAnZW4nID8gJ3VsdCcgOiAnZ2x0J1xuICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVTZXR0aW5ncylcbiAgfSBlbHNlIGlmIChyZXNvdXJjZUlkID09PSBUQVJHRVRfU0lNUExJRklFRCkge1xuICAgIGNsZWFudXBBY2NvdW50U2V0dGluZ3Moc2NyaXB0dXJlU2V0dGluZ3MsIGN1cnJlbnRPd25lciwgY3VycmVudExhbmd1YWdlSWQpXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IHNjcmlwdHVyZVNldHRpbmdzLmxhbmd1YWdlSWQgPT09ICdlbicgPyAndXN0JyA6ICdnc3QnXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZVNldHRpbmdzKVxuICB9XG4gIHJldHVybiBzY3JpcHR1cmVTZXR0aW5nc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgbGFiZWwsXG4gIHJlc291cmNlTGluayxcbiAgc2V0U2NyaXB0dXJlLFxuICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbn0pIHtcbiAgY29uc3QgaGlzdG9yeSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpXG4gIGxldCBpbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmZpbmRJdGVtSW5kZXhCeUtleShoaXN0b3J5LCAncmVzb3VyY2VMaW5rJywgcmVzb3VyY2VMaW5rKVxuXG4gIGNvbnN0IHNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnID0ge1xuICAgIGxhYmVsLCAvLyBsYWJlbCBmb3IgY29tYm9ib3hcbiAgICBvcHRpb25zOiBoaXN0b3J5LFxuICAgIGN1cnJlbnQ6IGluZGV4LFxuICAgIGFsbG93VXNlcklucHV0OiB0cnVlLFxuICAgIG9uQ2hhbmdlOiAodGl0bGUsIGluZGV4LCB2YWxpZGF0aW9uQ0I9bnVsbCkgPT4ge1xuICAgICAgbGV0IGl0ZW1cblxuICAgICAgaWYgKChpbmRleCA8IDApICYmIHRpdGxlKSB7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgICAgICAgdXJsOiB0aXRsZSxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmFkZEl0ZW1Ub0hpc3RvcnkobmV3SXRlbSlcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgIGl0ZW0gPSBzY3JpcHR1cmVWZXJzaW9uSGlzdC5nZXRMYXRlc3QoKVtpbmRleF1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldEl0ZW1CeVRpdGxlKHRpdGxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBzZXRTY3JpcHR1cmUoaXRlbSwgdmFsaWRhdGlvbkNCKVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVsZXRlSXRlbTogdGl0bGUgPT4ge1xuICAgICAgY29uc3QgaGlzdG9yeSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpXG4gICAgICBjb25zdCBkZWxldGVJbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmZpbmRJdGVtSW5kZXhCeUtleShoaXN0b3J5LCAndGl0bGUnLCB0aXRsZSlcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnJlbW92ZUl0ZW1CeUluZGV4KGRlbGV0ZUluZGV4KVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gc2NyaXB0dXJlU2VsZWN0b3JDb25maWdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcG9VcmwocmVzb3VyY2VMaW5rOiBzdHJpbmcsIHNlcnZlcjogc3RyaW5nLCBpc05UOiBib29sZWFuKTogc3RyaW5nIHtcbiAgbGV0IHJlcG9VcmxcblxuICB0cnkge1xuICAgIGxldCBbb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdID0gcmVzb3VyY2VMaW5rLnNwbGl0KCcvJylcblxuICAgIHN3aXRjaCAocmVzb3VyY2VJZCkge1xuICAgIGNhc2UgT1JJR0lOQUxfU09VUkNFOlxuICAgICAgbGFuZ3VhZ2VJZCA9IGlzTlQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkdcbiAgICAgIHJlc291cmNlSWQgPSBpc05UXG4gICAgICAgID8gTlRfT1JJR19MQU5HX0JJQkxFXG4gICAgICAgIDogT1RfT1JJR19MQU5HX0JJQkxFXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUQVJHRVRfTElURVJBTDpcbiAgICAgIHJlc291cmNlSWQgPSAobGFuZ3VhZ2VJZCA9PT0gJ2VuJykgPyAndWx0JyA6ICdnbHQnXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUQVJHRVRfU0lNUExJRklFRDpcbiAgICAgIHJlc291cmNlSWQgPSAobGFuZ3VhZ2VJZCA9PT0gJ2VuJykgPyAndXN0JyA6ICdnc3QnXG4gICAgICBicmVha1xuICAgIH1cbiAgICByZXBvVXJsID0gYCR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH1fJHtyZXNvdXJjZUlkfWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHJlc291cmNlTGluayB3YXMgaW52YWxpZFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gYCR7c2VydmVyIHx8ICcnfS8ke3JlcG9Vcmx9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rKFxuICByZXNvdXJjZUxpbms6IHN0cmluZyxcbiAgc2VydmVyOiBzdHJpbmcsXG4gIGVycm9yQ29kZTogc3RyaW5nLFxuICBpc05UOiBib29sZWFuKTogc3RyaW5nXG57XG4gIGNvbnN0IHJlcG9VcmwgPSBnZXRSZXBvVXJsKHJlc291cmNlTGluaywgc2VydmVyLCBpc05UKVxuICBjb25zdCBlcnJvck1zZyA9IGVycm9yQ29kZSArIHJlcG9VcmxcbiAgcmV0dXJuIGVycm9yTXNnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURjc1VybCh1cmwpIHtcbiAgbGV0IHZhbGlkUmVwb1BhdGggPSBmYWxzZVxuICBsZXQgdmFsaWRVcmwgPSBmYWxzZVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFydHMgPSB1cmwuc3BsaXQoJy8nKVxuICAgIGNvbnN0IFtwcm90b2NvbCwgLCBob3N0LCB1c2VyLCByZXBvXSA9IHBhcnRzXG4gICAgdmFsaWRVcmwgPSAocHJvdG9jb2wgPT09ICdodHRwczonKVxuICAgIGNvbnN0IGhvc3RQYXJ0cyA9IGhvc3QgPyBob3N0LnNwbGl0KCcuJykgOiBbXVxuXG4gICAgaWYgKGhvc3RQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgZm9yIChsZXQgcGFydCBvZiBob3N0UGFydHMpIHtcbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgdmFsaWRVcmwgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRVcmwgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICggcHJvdG9jb2wgJiYgaG9zdCAmJiB1c2VyICYmIHJlcG8gKSB7XG4gICAgICBjb25zdCBbbGFuZ3VhZ2VJZCwgcHJvamVjdElkXSA9IHJlcG8uc3BsaXQoJ18nKVxuICAgICAgdmFsaWRSZXBvUGF0aCA9IGxhbmd1YWdlSWQgJiYgcHJvamVjdElkXG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLmxvZygnSW52YWxpZCBEQ1MgVVJMOiAnICsgdXJsKVxuICB9XG4gIHJldHVybiB7IHZhbGlkVXJsLCB2YWxpZFJlcG9QYXRoIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlRXJyb3JNZXNzYWdlKHJlc291cmNlU3RhdHVzOiBvYmplY3QpIHtcbiAgbGV0IG1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChyZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBNQU5JRkVTVF9OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0dXNbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gTUFOSUZFU1RfSU5WQUxJRF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tDT05URU5UX05PVF9GT1VORF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0dXNbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdKSB7XG4gICAgbWVzc2FnZSA9IFNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuLyoqXG4gKiBkZWNvZGUgcmVzb3VyY2Ugc3RhdHVzIGludG8gc3RyaW5nLiAgQ3VycmVudGx5IG9ubHkgRW5nbGlzaFxuICogQHBhcmFtIHJlc291cmNlU3RhdHVzIC0gb2JqZWN0IHRoYXQgY29udGFpbnMgc3RhdGUgYW5kIGVycm9ycyB0aGF0IGFyZSBkZXRlY3RlZFxuICogQHBhcmFtIHNlcnZlciAtIGNvbnRhaW5zIHRoZSBzZXJ2ZXIgYmVpbmcgdXNlZFxuICogQHBhcmFtIHJlc291cmNlTGluayAtIHBhdGggdG8gcmVwbyBvbiBzZXJ2ZXJcbiAqIEBwYXJhbSBpc05UIC0gdHJ1ZSBpZiBOVCBib29rXG4gKiBAcmV0dXJuIGVtcHR5IHN0cmluZyBpZiBubyBlcnJvciwgZWxzZSByZXR1cm5zIHVzZXIgZXJyb3IgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzOiBvYmplY3QsIHNlcnZlcjogc3RyaW5nLCByZXNvdXJjZUxpbms6IHN0cmluZywgaXNOVDogYm9vbGVhbikge1xuICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgaWYgKHJlc291cmNlU3RhdHVzW0xPQURJTkdfU1RBVEVdKSB7XG4gICAgbWVzc2FnZSA9IExPQURJTkdfUkVTT1VSQ0VcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UocmVzb3VyY2VTdGF0dXMpXG5cbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUZvclJlc291cmNlTGluayhyZXNvdXJjZUxpbmssIHNlcnZlciwgbWVzc2FnZSwgaXNOVClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuLyoqXG4gKiBnZW5lcmF0ZSByZXNvdXJjZSBzdHJpbmdcbiAqIEBwYXJhbSBvd25lclxuICogQHBhcmFtIGxhbmd1YWdlSWRcbiAqIEBwYXJhbSBwcm9qZWN0SWRcbiAqIEBwYXJhbSByZWZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGlua1NwZWNpZmljKG93bmVyOiBzdHJpbmcsIGxhbmd1YWdlSWQ6IHN0cmluZywgcHJvamVjdElkOiBzdHJpbmcsIHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiBgYXBpL3YxL3JlcG9zLyR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH1fJHtwcm9qZWN0SWR9L2NvbnRlbnRzP3JlZj0ke3JlZn1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhPY2N1cnJlbmNlKG9jY3VycmVuY2UpIHtcbiAgaWYgKHR5cGVvZiBvY2N1cnJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUludChvY2N1cnJlbmNlKVxuICB9XG4gIHJldHVybiBvY2N1cnJlbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cykge1xuICBpZiAodmVyc2VPYmplY3RzPy5sZW5ndGgpIHtcbiAgICBjb25zdCB2ZXJzZU9iamVjdHNfID0gWy4uLnZlcnNlT2JqZWN0c11cblxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdmVyc2VPYmplY3RzXy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZvID0gdmVyc2VPYmplY3RzX1tpXVxuXG4gICAgICBpZiAodm8udHlwZSA9PT0gJ3dvcmQnICYmICh2by5vY2N1cnJlbmNlIHx8IHZvLm9jY3VycmVuY2VzKSkge1xuICAgICAgICBjb25zdCB3b3JkID0geyAuLi52byB9XG5cbiAgICAgICAgaWYgKHZvLm9jY3VycmVuY2UpIHtcbiAgICAgICAgICB3b3JkLm9jY3VycmVuY2UgPSBmaXhPY2N1cnJlbmNlKHZvLm9jY3VycmVuY2UpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodm8ub2NjdXJyZW5jZXMpIHtcbiAgICAgICAgICB3b3JkLm9jY3VycmVuY2VzID0gZml4T2NjdXJyZW5jZSh2by5vY2N1cnJlbmNlcylcbiAgICAgICAgfVxuICAgICAgICB2ZXJzZU9iamVjdHNfW2ldID0gd29yZFxuICAgICAgfSBlbHNlIGlmICh2by5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNsZWFudXBWZXJzZU9iamVjdHModm8uY2hpbGRyZW4pXG4gICAgICAgIGNvbnN0IG5ld1ZvID0ge1xuICAgICAgICAgIC4uLnZvLFxuICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB9XG4gICAgICAgIHZlcnNlT2JqZWN0c19baV0gPSBuZXdWb1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzX1xuICB9XG4gIHJldHVybiBbXVxufVxuXG4vKipcbiAqIHRha2UgdGhlIGZpbGVuYW1lIG9mIHRoZSBib29rIChlLmcuIFwiNTctVElULnVzZm1cIikgYW5kIHBhcnNlIG91dCB0aGUgYm9va0lkXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWVcbiAqIEByZXR1cm4ge3N0cmluZ30gYm9va0lkIGlmIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgY29uc3QgcmVnZXggPSAvXiguKj8pXFwudXNmbS9cbiAgY29uc3QgYm9va05hbWUgPSBmaWxlbmFtZT8ubWF0Y2gocmVnZXgpPy5bMV1cbiAgcmV0dXJuIGJvb2tOYW1lXG59XG5cbi8qKlxuICogcGFyc2UgdGhlIFVTRk0gdG8gZmluZCBib29rSUQgaW4gaGVhZGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGJvb2tJZCBpZiBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmlibGVJZEZyb21Vc2ZtQ29udGVudElEKGJpYmxlVXNmbSkge1xuICBjb25zdCBpZEhlYWRlciA9ICdcXFxcaWQgJ1xuICBjb25zdCBwb3NJZCA9IGJpYmxlVXNmbT8uaW5kZXhPZihpZEhlYWRlcilcblxuICBpZiAocG9zSWQgPj0gMCkge1xuICAgIGNvbnN0IGlkU3RhcnQgPSBwb3NJZCArIGlkSGVhZGVyLmxlbmd0aFxuICAgIGxldCBoZWFkZXJJZCA9IGJpYmxlVXNmbT8uc3Vic3RyaW5nKCBpZFN0YXJ0LCBpZFN0YXJ0ICsgMTAwKS50cmltKClcbiAgICBsZXQgaGVhZGVyQm9va0lEID0gbnVsbFxuXG4gICAgaWYgKGhlYWRlcklkPy5sZW5ndGggPiAxKSB7XG4gICAgICBoZWFkZXJCb29rSUQgPSBoZWFkZXJJZD8uc3BsaXQoJyAnKVxuICAgICAgaGVhZGVyQm9va0lEID0gaGVhZGVyQm9va0lEPy5bMF0udHJpbSgpXG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJCb29rSURcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIGRldGVybWluZXMgaWYgdGhlcmUgYXJlIGFueSB3b3JkcyBpbiB2ZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdmVyc2VPYmplY3RzIC0gYXJyYXkgb2YgdmVyc2VPYmplY3RzIHRvIHNlYXJjaCBmb3Igd29yZHNcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgd29yZCBpcyBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyc2VPYmplY3RzSGF2ZVdvcmRzKHZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSkge1xuICBpZiAodmVyc2VPYmplY3RzPy5sZW5ndGgpIHtcbiAgICBmb3IgKGNvbnN0IHZvIG9mIHZlcnNlT2JqZWN0cykge1xuICAgICAgaWYgKHZvLnR5cGUgPT09ICd3b3JkJykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBlbHNlIGlmICh2by5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBmb3VuZFdvcmRzID0gdmVyc2VPYmplY3RzSGF2ZVdvcmRzKHZvLmNoaWxkcmVuKVxuXG4gICAgICAgIGlmIChmb3VuZFdvcmRzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBleHRyYWN0IGp1c3QgdGhlIGFsaWdubWVudHMgZnJvbSB2ZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdmVyc2VPYmplY3RzXG4gKiBAcmV0dXJucyB7VmVyc2VPYmplY3RzVHlwZX0gLSBqdXN0IGFsaWdubWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWdubWVudHModmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlKTpWZXJzZU9iamVjdHNUeXBlIHtcbiAgY29uc3QgYWxpZ25tZW50c0xpc3QgPSB2ZXJzZU9iamVjdHMuZmlsdGVyKHZvID0+IHZvLnRhZyA9PT0gJ3phbG4nKVxuXG4gIC8vIHJlbW92ZSBlbmRUYWdcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGlnbm1lbnRzTGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFsaWdubWVudCA9IGFsaWdubWVudHNMaXN0W2ldXG5cbiAgICBpZiAoYWxpZ25tZW50LmVuZFRhZykge1xuICAgICAgY29uc3QgX2FsaWdubWVudCA9IHsgLi4uYWxpZ25tZW50IH1cbiAgICAgIGRlbGV0ZSBfYWxpZ25tZW50LmVuZFRhZ1xuICAgICAgYWxpZ25tZW50c0xpc3RbaV0gPSBfYWxpZ25tZW50XG4gICAgfVxuICB9XG4gIHJldHVybiBhbGlnbm1lbnRzTGlzdFxufVxuXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQ0VBLHVCQUF1QixFQUN2QkMsc0JBQXNC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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.4.
|
|
4
|
+
"version": "3.4.14-beta.15",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|