@kontur.candy/tools 2.178.2 → 2.180.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +3 -3
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
- package/distr/Common/KCLangRuntimeUtils.js +25 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +2 -2
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +3 -2
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +41 -21
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +39 -19
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +2 -2
|
@@ -283,24 +283,24 @@
|
|
|
283
283
|
}), u.send(void 0 === i._bodyInit ? null : i._bodyInit);
|
|
284
284
|
});
|
|
285
285
|
}
|
|
286
|
-
function
|
|
286
|
+
function S(t, e) {
|
|
287
287
|
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
|
|
288
288
|
}
|
|
289
|
-
function
|
|
289
|
+
function P(t, e) {
|
|
290
290
|
for (var r = 0; r < e.length; r++) {
|
|
291
291
|
var n = e[r];
|
|
292
292
|
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n);
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
function T(t, e, r) {
|
|
296
|
-
return e &&
|
|
296
|
+
return e && P(t.prototype, e), r && P(t, r), Object.defineProperty(t, "prototype", {
|
|
297
297
|
writable: !1
|
|
298
298
|
}), t;
|
|
299
299
|
}
|
|
300
300
|
_.polyfill = !0, n.fetch || (n.fetch = _, n.Headers = p, n.Request = E, n.Response = k);
|
|
301
301
|
var x = function () {
|
|
302
302
|
function t() {
|
|
303
|
-
|
|
303
|
+
S(this, t);
|
|
304
304
|
}
|
|
305
305
|
return T(t, null, [{
|
|
306
306
|
key: "script",
|
|
@@ -374,12 +374,12 @@
|
|
|
374
374
|
});
|
|
375
375
|
};
|
|
376
376
|
}
|
|
377
|
-
function
|
|
378
|
-
return
|
|
377
|
+
function D(t, e) {
|
|
378
|
+
return D = Object.setPrototypeOf || function (t, e) {
|
|
379
379
|
return t.__proto__ = e, t;
|
|
380
|
-
},
|
|
380
|
+
}, D(t, e);
|
|
381
381
|
}
|
|
382
|
-
function
|
|
382
|
+
function R(t, e) {
|
|
383
383
|
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
|
|
384
384
|
t.prototype = Object.create(e && e.prototype, {
|
|
385
385
|
constructor: {
|
|
@@ -389,7 +389,7 @@
|
|
|
389
389
|
}
|
|
390
390
|
}), Object.defineProperty(t, "prototype", {
|
|
391
391
|
writable: !1
|
|
392
|
-
}), e &&
|
|
392
|
+
}), e && D(t, e);
|
|
393
393
|
}
|
|
394
394
|
function U(t) {
|
|
395
395
|
return U = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) {
|
|
@@ -410,7 +410,7 @@
|
|
|
410
410
|
var n = [null];
|
|
411
411
|
n.push.apply(n, e);
|
|
412
412
|
var o = new (Function.bind.apply(t, n))();
|
|
413
|
-
return r &&
|
|
413
|
+
return r && D(o, r.prototype), o;
|
|
414
414
|
}, M.apply(null, arguments);
|
|
415
415
|
}
|
|
416
416
|
function N(t) {
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
writable: !0,
|
|
434
434
|
configurable: !0
|
|
435
435
|
}
|
|
436
|
-
}),
|
|
436
|
+
}), D(n, t);
|
|
437
437
|
}, N(t);
|
|
438
438
|
}
|
|
439
439
|
function V(t) {
|
|
@@ -465,18 +465,18 @@
|
|
|
465
465
|
};
|
|
466
466
|
}
|
|
467
467
|
var G = function (t) {
|
|
468
|
-
|
|
468
|
+
R(r, t);
|
|
469
469
|
var e = V(r);
|
|
470
470
|
function r() {
|
|
471
|
-
return
|
|
471
|
+
return S(this, r), e.call(this, "Operation not implemented");
|
|
472
472
|
}
|
|
473
473
|
return T(r);
|
|
474
474
|
}(function (t) {
|
|
475
|
-
|
|
475
|
+
R(r, t);
|
|
476
476
|
var e = V(r);
|
|
477
477
|
function r(t) {
|
|
478
478
|
var n;
|
|
479
|
-
return
|
|
479
|
+
return S(this, r), (n = e.call(this, t)).name = n.constructor.name, n;
|
|
480
480
|
}
|
|
481
481
|
return T(r);
|
|
482
482
|
}(N(Error)));
|
|
@@ -656,10 +656,10 @@
|
|
|
656
656
|
}
|
|
657
657
|
}
|
|
658
658
|
return {
|
|
659
|
-
next:
|
|
659
|
+
next: S
|
|
660
660
|
};
|
|
661
661
|
}
|
|
662
|
-
function
|
|
662
|
+
function S() {
|
|
663
663
|
return {
|
|
664
664
|
value: void 0,
|
|
665
665
|
done: !0
|
|
@@ -827,7 +827,7 @@
|
|
|
827
827
|
}
|
|
828
828
|
var Y = function () {
|
|
829
829
|
function t(e) {
|
|
830
|
-
|
|
830
|
+
S(this, t), this.form = void 0, this.form = e;
|
|
831
831
|
}
|
|
832
832
|
var r, n, o;
|
|
833
833
|
return T(t, [{
|
|
@@ -890,6 +890,26 @@
|
|
|
890
890
|
})), function (t) {
|
|
891
891
|
return n.apply(this, arguments);
|
|
892
892
|
})
|
|
893
|
+
}, {
|
|
894
|
+
key: "getModalUnitOpenedInstance",
|
|
895
|
+
value: function (t) {
|
|
896
|
+
throw new Error("Method not implemented.");
|
|
897
|
+
}
|
|
898
|
+
}, {
|
|
899
|
+
key: "getTabsState",
|
|
900
|
+
value: function () {
|
|
901
|
+
throw new Error("Method not implemented.");
|
|
902
|
+
}
|
|
903
|
+
}, {
|
|
904
|
+
key: "navigate",
|
|
905
|
+
value: function (t) {
|
|
906
|
+
throw new Error("Method not implemented.");
|
|
907
|
+
}
|
|
908
|
+
}, {
|
|
909
|
+
key: "importEmployerDocuments",
|
|
910
|
+
value: function (t) {
|
|
911
|
+
throw new Error("Method not implemented.");
|
|
912
|
+
}
|
|
893
913
|
}, {
|
|
894
914
|
key: "importEmployees",
|
|
895
915
|
value: function (t, e) {
|
|
@@ -1305,4 +1325,4 @@
|
|
|
1305
1325
|
};
|
|
1306
1326
|
t.g.CF = rt;
|
|
1307
1327
|
}();
|
|
1308
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0IiwiZSIsInIiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwibGVuZ3RoIiwibiIsIkFycmF5IiwiZyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsInNlbGYiLCJvIiwiaSIsIlN5bWJvbCIsImEiLCJCbG9iIiwidSIsInMiLCJjIiwibCIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwiaW5kZXhPZiIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImYiLCJTdHJpbmciLCJ0ZXN0IiwiVHlwZUVycm9yIiwidG9Mb3dlckNhc2UiLCJoIiwiZCIsIm5leHQiLCJzaGlmdCIsImRvbmUiLCJpdGVyYXRvciIsInAiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiaXNBcnJheSIsImdldE93blByb3BlcnR5TmFtZXMiLCJ5IiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0IiwidiIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsIm0iLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJiIiwic2xpY2UiLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsInNldCIsImJ1ZmZlciIsInciLCJfaW5pdEJvZHkiLCJfYm9keUluaXQiLCJfYm9keVRleHQiLCJpc1Byb3RvdHlwZU9mIiwiX2JvZHlCbG9iIiwiRm9ybURhdGEiLCJfYm9keUZvcm1EYXRhIiwiVVJMU2VhcmNoUGFyYW1zIiwiRGF0YVZpZXciLCJfYm9keUFycmF5QnVmZmVyIiwiaGVhZGVycyIsImdldCIsInR5cGUiLCJibG9iIiwicmVzb2x2ZSIsIkVycm9yIiwiYXJyYXlCdWZmZXIiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImZvcm1EYXRhIiwiTyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXMiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJwdXNoIiwidmFsdWVzIiwiZW50cmllcyIsIkUiLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwidHJpbSIsInNwbGl0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiayIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiaiIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwiQSIsIkRPTUV4Y2VwdGlvbiIsIm1lc3NhZ2UiLCJuYW1lIiwic3RhY2siLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciIsIl8iLCJhYm9ydGVkIiwiWE1MSHR0cFJlcXVlc3QiLCJhYm9ydCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInN1YnN0ciIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwic2V0UmVxdWVzdEhlYWRlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbmQiLCJQIiwiUyIsImtleSIsIlQiLCJwb2x5ZmlsbCIsImZldGNoIiwiSGVhZGVycyIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIngiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiQiIsIkJvb2xlYW4iLCJDIiwiYXV0aG9yaXplZCIsImNhdWxkcm9uQXBpVXJsIiwiaXNUZXN0U2VydmVyIiwicmVuZGVyQ2FjaGluZ0ZvcklFOCIsIm5vcm1hbGl6YXRpb25PblNlcnZlciIsIm5vcm1hdGl2ZVVybCIsInJlc291cmNlc1ZlcnNpb24iLCJrb250dXJEb21haW5zIiwiSSIsIkwiLCJGIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJSIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJEIiwiVSIsImdldFByb3RvdHlwZU9mIiwiTSIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJ2YWx1ZU9mIiwiYmluZCIsIk4iLCJNYXAiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiViIsIlJlZmVyZW5jZUVycm9yIiwiRyIsInoiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiYXJnIiwid3JhcCIsIl9pbnZva2UiLCJfX2F3YWl0IiwiZGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsInJldHVybiIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJtYXJrIiwiYXdyYXAiLCJBc3luY0l0ZXJhdG9yIiwiYXN5bmMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInN0b3AiLCJydmFsIiwiY29tcGxldGUiLCJmaW5pc2giLCJjYXRjaCIsImRlbGVnYXRlWWllbGQiLCJxIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiSCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiWiIsIiQiLCJYIiwicmVkdWNlIiwiWSIsImZvcm0iLCJwaWNrbGlzdHNQcm92aWRlciIsImdldERpZ2VzdEFwaVBpY2tsaXN0IiwicXVlcnkiLCJldmVudE1hbmFnZXIiLCJvbiIsIm9mZiIsImNoYW5nZVNldCIsInN0b3BBdXRvc2VuZCIsInVubW91bnQiLCJtb2RlbCIsImdldENodW5rIiwic2V0dGluZ3MiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiZmlsbCIsImNvbmNhdCIsIkoiLCJXIiwiSyIsIlEiLCJDRiIsImtlZm9ybXNVcmwiLCJ0dCIsImVuY29kZVVSSUNvbXBvbmVudCIsImV0Iiwic2VhcmNoIiwiZmluZCIsImZyb20iLCJydCIsInN0YXJ0IiwibnMiLCJkcmFmdElkIiwiUmVnRXhwIiwiaG9zdCIsInJlc291cmNlWm9uZSIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsIkF1dGhvcml6YXRpb24iLCJnZnYiLCJlbmdpbmVWZXJzaW9uIiwic2hvd05hdmlnYXRpb25TaWRlYmFyIiwib25SZW1vdmVBdHRhY2htZW50IiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJlbnRyeVBvaW50Iiwic3R5bGVTaGVldCIsInNjcmlwdCIsInRoZW1lIiwiZGVmYXVsdCIsInB1YmxpY0Zvcm0iLCJ0ZW1wbGF0ZXNBcGkiLCJyZW5kZXJGb3JtIiwicGFydGlhbFJlbmRlcmluZ0ZvcklFOCJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50U2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY29uc3RydWN0LmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3dyYXBOYXRpdmVTdXBlci5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXNOYXRpdmVGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9UeXBpbmdVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufSIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwidmFyIGdsb2JhbCA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnbG9iYWwsXG4gIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBnbG9iYWwgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGdsb2JhbCAmJlxuICAgICdCbG9iJyBpbiBnbG9iYWwgJiZcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIGdsb2JhbCxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ2xvYmFsXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICAgIHJldHVybiBpc0NvbnN1bWVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3RlZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxudmFyIG1ldGhvZHMgPSBbJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BPU1QnLCAnUFVUJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWxcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnbG9iYWwuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGdsb2JhbC5sb2NhdGlvbi5ocmVmID8gZ2xvYmFsLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyICYmXG4gICAgICAgIHJlcXVlc3QuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpICYmXG4gICAgICAgIHJlcXVlc3QuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpLmluZGV4T2YoJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluaXQgJiYgdHlwZW9mIGluaXQuaGVhZGVycyA9PT0gJ29iamVjdCcgJiYgIShpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSkge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5pdC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZ2xvYmFsLmZldGNoKSB7XG4gIGdsb2JhbC5mZXRjaCA9IGZldGNoXG4gIGdsb2JhbC5IZWFkZXJzID0gSGVhZGVyc1xuICBnbG9iYWwuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZ2xvYmFsLlJlc3BvbnNlID0gUmVzcG9uc2Vcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59IiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsImZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsaWVudFNldHRpbmdzID0ge1xuICAgIGF1dGhvcml6ZWQ6IHBhcnNlQm9vbChcInthdXRob3JpemVkfVwiKSxcbiAgICBjYXVsZHJvbkFwaVVybDogXCJ7Y2F1bGRyb25BcGlVcmx9XCIsXG4gICAgaXNUZXN0U2VydmVyOiBwYXJzZUJvb2woXCJ7aXNUZXN0U2VydmVyfVwiKSxcbiAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cmVuZGVyQ2FjaGluZ0ZvcklFOH1cIiksXG4gICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBwYXJzZUJvb2woXCJ7bm9ybWFsaXphdGlvbk9uU2VydmVyfVwiKSxcbiAgICBub3JtYXRpdmVVcmw6IFwie25vcm1hdGl2ZVVybH1cIixcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBcIntyZXNvdXJjZXNWZXJzaW9ufVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICB9IDogZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gIH0sIF90eXBlb2Yob2JqKTtcbn0iLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gIHRyeSB7XG4gICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5mby5kb25lKSB7XG4gICAgcmVzb2x2ZSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG5cbiAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cblxuICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn0iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn0iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmltcG9ydCBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgZnJvbSBcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgaWYgKGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSB7XG4gICAgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0O1xuICB9IGVsc2Uge1xuICAgIF9jb25zdHJ1Y3QgPSBmdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgICAgIHZhciBhID0gW251bGxdO1xuICAgICAgYS5wdXNoLmFwcGx5KGEsIGFyZ3MpO1xuICAgICAgdmFyIENvbnN0cnVjdG9yID0gRnVuY3Rpb24uYmluZC5hcHBseShQYXJlbnQsIGEpO1xuICAgICAgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7XG4gICAgICBpZiAoQ2xhc3MpIHNldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX2NvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSIsImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVGdW5jdGlvbiBmcm9tIFwiLi9pc05hdGl2ZUZ1bmN0aW9uLmpzXCI7XG5pbXBvcnQgY29uc3RydWN0IGZyb20gXCIuL2NvbnN0cnVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykge1xuICB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiID8gbmV3IE1hcCgpIDogdW5kZWZpbmVkO1xuXG4gIF93cmFwTmF0aXZlU3VwZXIgPSBmdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7XG4gICAgaWYgKENsYXNzID09PSBudWxsIHx8ICFpc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzO1xuXG4gICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfY2FjaGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpO1xuXG4gICAgICBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgV3JhcHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKENsYXNzLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTtcbiAgfTtcblxuICByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24oZm4pIHtcbiAgcmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZm4pLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpICE9PSAtMTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBzZWxmO1xufSIsImV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIk9wZXJhdGlvbiBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90U3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlID8/IFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHByb2dyYW0gc3RhdGVcIiArIChtZXNzYWdlICE9IHVuZGVmaW5lZCA/IFwiOiBcIiArIG1lc3NhZ2UgOiBcIlwiKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFyZ3VtZW50RXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYXJndW1lbnROYW1lOiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBtZXNzYWdlICE9IHVuZGVmaW5lZCA/IGAke21lc3NhZ2V9IChhcmd1bWVudDogJHthcmd1bWVudE5hbWV9KWAgOiBgSW52YWxpZCBhcmd1bWVudCB2YWx1ZTogJHthcmd1bWVudE5hbWV9YFxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFR5cGluZ0Vycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgdHlwaW5nXCIpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0FwaSwgRmlhc0NsaWVudEluaXRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IElDYW5keUNvbXBvbmVudEhhbmRsZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db21wb25lbnRIYW5kbGVSZWdpc3RyeS9JQ2FuZHlDb21wb25lbnRIYW5kbGVcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25QYXRoTWFwcGVyIH0gZnJvbSBcIi4uLy4uL0luamVjdGFibGVNb2R1bGVzL0luamVjdGFibGVFbmdpbmVNb2R1bGVzXCI7XG5cbmltcG9ydCB7IElMZWdhY3lGb3JtIH0gZnJvbSBcIi4vSUxlZ2FjeUZvcm1cIjtcblxuZXhwb3J0IHR5cGUgTW9kZWxFdmVudFBhdGggPVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHBhdGg/OiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZyk6IE1vZGVsRXZlbnRQYXRoIHtcbiAgICBpZiAoZmllbGROYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoLCBmaWVsZE5hbWVdO1xuICAgIH1cbiAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGhdO1xuICAgIH1cbiAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl07XG59XG5cbmZ1bmN0aW9uIG1hcENodW5rVmFsdWVzKGNodW5rOiBSZWFkb25seU1vZGVsQ2h1bmspOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2h1bmspXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBjaHVua1twYXRoXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2h1bmtbcGF0aF0sIFwidmFsdWVcIikpXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaHVua1twYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgW3BhdGhdOiByZXN1bHQudmFsdWUgfTtcbiAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUNodW5rVmFsdWVzKGNodW5rczogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pik6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgcmV0dXJuIGNodW5rcy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIGNodW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgLi4uY2h1bmssXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmNsYXNzIExlZ2FjeVB1YmxpY0Zvcm0gaW1wbGVtZW50cyBJUHVibGljRm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBJTGVnYWN5Rm9ybTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb3JtOiBJTGVnYWN5Rm9ybSkge1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ5SGlnaGxhbmRlclBhdGhzKHBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8SUNhbmR5Q29tcG9uZW50SGFuZGxlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXZpZ2F0aW9uUGF0aE1hcHBlcigpOiBOYXZpZ2F0aW9uUGF0aE1hcHBlciB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiYXRjaFVwZGF0ZSh1cGRhdGVQcm9jOiAodXBkYXRlQWNjZXNzb3I6IElVcGRhdGVGb3JtTW9kZWxBY2Nlc3NvcikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuQ2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFcnJvckxvZyhlcnJvckxvZzogUGFydGlhbDxTZXJ2ZXJFcnJvckxvZz4pOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHZhbGlkYXRlQ2hpbGRyZW5CeVBhdGgocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBfX0lOVEVSTkFMX19pbXBvcnRGcm9tRW1wbG95ZWVTZXJ2aWNlKCk6IFByb21pc2U8RW1wbG95ZWVbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX19JTlRFUk5BTF9fZ2V0U2VsZWN0RnVuY3Rpb25Gb3JEaXNhYmxlRW1wbG95ZWVJblNTKFxuICAgICAgICBwYXRoU3BlYzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTwoZW1wbG95ZWU6IEVtcGxveWVlKSA9PiBib29sZWFuPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZWVzKGVtcGxveWVlczogRW1wbG95ZWVbXSwgb3B0aW9ucz86IHsgc2NlbmFyaW8/OiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJpbnQocHJpbnRUeXBlOiBQcmludFR5cGUsIGJvZHk/OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgcHVibGljIHJ1bk1hc3NBY3Rpb24oYWN0aW9uSWQ6IHN0cmluZywgcGFyYW1ldGVycz86IE1hc3NBY3Rpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCeUdJZChnSWQ6IHN0cmluZywgZmlsdGVyPzogRGlnZXN0UXVlcnlGaWx0ZXIpOiBQcm9taXNlPFBpY2tsaXN0UXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnBpY2tsaXN0c1Byb3ZpZGVyLmdldERpZ2VzdEFwaVBpY2tsaXN0KGdJZCkucXVlcnkoZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb24oZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmYoZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgbGlzdGVuZXI6IHVua25vd24pOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICB0aHJvdyBFcnJvcihcImZvcm0ub25Nb2RlbENoYW5nZSgpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZvcm0uY2hhbmdlU2V0LnN0b3BBdXRvc2VuZCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnVubW91bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51bm1vdW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRvdXJTdGVwcygpOiBTdGVwW10ge1xuICAgICAgICAvLyBGb3Igb2xkIGtld2ViXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUg0K3RgtC+INCyINGB0YLQsNGA0YvRhSDQtNCy0LjQttC60LDRhSDRgtGD0YIg0YLQsNC60L7QuSDQstGL0LfQvtCyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkYXRvci52YWxpZGF0ZUFsbChrZXlzKTtcbiAgICB9XG4gICAgcHVibGljIGdldEFkZGl0aW9uYWxFbXBsb3llZUluZm8oZmlsdGVyczogR2V0RW1wbG95ZWVMaXN0UmVxdWVzdCk6IFByb21pc2U8RW1wbG95ZWVMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVsb2FkSW5uZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V29ya2luZ0V2ZW50c0ZvckVtcGxveWVlKGZpbHRlcnM6IEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0KTogUHJvbWlzZTxXb3JraW5nRXZlbnRMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVN1YnRyZWUoXG4gICAgICAgIHNvdXJjZUJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhcmdldEJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIGRvTm90Q29weVBhdGhzPzogc3RyaW5nW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1dWlkR2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vZGFsKG9wdGlvbnM6IE1vZGFsT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWN0aW9uKG9wdGlvbnM6IEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsSW5pdFNlY3Rpb24ob3B0aW9uczogQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWFzQXBpQ2xpZW50KG9wdGlvbnM6IEZpYXNDbGllbnRJbml0T3B0aW9ucyk6IEZpYXNBcGkge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRW1wbG95ZWVFZGl0b3IoZW1wbG95ZWVJZDogc3RyaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlKHBhdGg6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXMocGF0aDogc3RyaW5nLCBpbnN0YW5jZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzT25Db250cm9sSWZFeGlzdChwYXRoOiBCaW5kaW5nUGF0aCk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRvRmllbGRzVG9BdXRvVmFsdWUocGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVuc3VyZUluc3RhbmNlRnVsbHlMb2FkZWQoXG4gICAgICAgIGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICAuLi5pbnN0YW5jZXM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlc0J5UnVsZXMocnVsZXM6IEluc3RhbmNlc0RlbGV0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURucCgpOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm06IElGb3JtKTogSVB1YmxpY0Zvcm0ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbmV3IExlZ2FjeVB1YmxpY0Zvcm0oZm9ybSBhcyBJTGVnYWN5Rm9ybSk7XG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1udWxsLWtleXdvcmQgbm8tYW55IG5vLXVuc2FmZS1hbnkgKi9cbmltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuaW1wb3J0IHsgQWxsSWNvbk5hbWVzIH0gZnJvbSBcInJlYWN0LXVpXCI7XG5cbmltcG9ydCB7IEVycm9yRmlyc3RDYWxsYmFjaywgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHsgTG9hZEludG9Eb2N1bWVudCB9IGZyb20gXCIuLi8uLi9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQgfSBmcm9tIFwiLi4vVHlwZXMvSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2VcIjtcbmltcG9ydCB7IGdldENsaWVudERyYWZ0SW5mb1VybCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybFwiO1xuaW1wb3J0IHsgQVVPT3B0aW9ucyB9IGZyb20gXCIuLi9UeXBlcy9BVU9PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dEV2ZW50c1N0YXRpYyB9IGZyb20gXCIuLi8uLi9Db250cm9scy9JbnRlcm5hbHMvTGF5b3V0RXZlbnRzL0xheW91dEV2ZW50c1wiO1xuXG5pbXBvcnQgeyBjbGllbnRTZXR0aW5ncyB9IGZyb20gXCIuL0NsaWVudFNldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIH0gZnJvbSBcIi4vTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtXCI7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG50eXBlIEVuZ2luZUVudHJ5UG9pbnQgPSAoKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkRlc2NyaXB0aW9uIHtcbiAgICBpY29uOiBBbGxJY29uTmFtZXM7XG4gICAgdGV4dD86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICAgIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gICAgaGludD86IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpZD86IHN0cmluZztcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlbmRlckZvcm1TZXR0aW5ncyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uLCByZXNvdXJjZXNWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgdjogcmVzb3VyY2VzVmVyc2lvbiwgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xuICAgIGV2ZW50RW1pdHRlcj86IExheW91dEV2ZW50c1N0YXRpYztcbiAgICBlbXBsb3llcklkPzogc3RyaW5nO1xuICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcj86IGJvb2xlYW47XG4gICAgb25SZW1vdmVBdHRhY2htZW50PzogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBjbGllbnRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1ZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGV4dGVuZGVkU2V0dGluZ3MudGhlbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEVycm9yIHx8ICFnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYGR5bmFtaWMgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZnYgJHtnZnZ9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4dGVuZGVkU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzQXBpOiBvcHRpb25zLnRlbXBsYXRlc0FwaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtOiByZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBDYW5keUNsaWVudEV4cG9ydHM6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVudHJ5UG9pbnQ6IHt9LFxuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4fVwiKSxcbiAgICBrZWZvcm1zVXJsOiBcIntrZWZvcm1zVXJsfVwiLFxufTtcblxuZ2xvYmFsLkNGID0gQ2FuZHlDbGllbnRFeHBvcnRzO1xuXG5leHBvcnQgeyBDYW5keUNsaWVudEV4cG9ydHMgfTtcbiIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcblxuICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcblxuICB2YXIgX3MsIF9lO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztFQUNBLElBQUlBLENBQUEsR0FBc0IsQ0FBQztFQ0RaLFNBQVNDLEVBQWdCRCxDQUFBLEVBQUtDLENBQUEsRUFBS0MsQ0FBQTtJQVloRCxPQVhJRCxDQUFBLElBQU9ELENBQUEsR0FDVEcsTUFBQSxDQUFPQyxjQUFBLENBQWVKLENBQUEsRUFBS0MsQ0FBQSxFQUFLO01BQzlCSSxLQUFBLEVBQU9ILENBQUE7TUFDUEksVUFBQSxHQUFZO01BQ1pDLFlBQUEsR0FBYztNQUNkQyxRQUFBLEdBQVU7SUFBQSxLQUdaUixDQUFBLENBQUlDLENBQUEsSUFBT0MsQ0FBQSxFQUdORixDQUNUO0VBQUE7RUNiZSxTQUFTRSxFQUFrQkYsQ0FBQSxFQUFLQyxDQUFBO0lBQUEsQ0FDbEMsUUFBUEEsQ0FBQSxJQUFlQSxDQUFBLEdBQU1ELENBQUEsQ0FB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
|
|
1328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0IiwiZSIsInIiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwibGVuZ3RoIiwibiIsIkFycmF5IiwiZyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsInNlbGYiLCJvIiwiaSIsIlN5bWJvbCIsImEiLCJCbG9iIiwidSIsInMiLCJjIiwibCIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwiaW5kZXhPZiIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImYiLCJTdHJpbmciLCJ0ZXN0IiwiVHlwZUVycm9yIiwidG9Mb3dlckNhc2UiLCJoIiwiZCIsIm5leHQiLCJzaGlmdCIsImRvbmUiLCJpdGVyYXRvciIsInAiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiaXNBcnJheSIsImdldE93blByb3BlcnR5TmFtZXMiLCJ5IiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0IiwidiIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsIm0iLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJiIiwic2xpY2UiLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsInNldCIsImJ1ZmZlciIsInciLCJfaW5pdEJvZHkiLCJfYm9keUluaXQiLCJfYm9keVRleHQiLCJpc1Byb3RvdHlwZU9mIiwiX2JvZHlCbG9iIiwiRm9ybURhdGEiLCJfYm9keUZvcm1EYXRhIiwiVVJMU2VhcmNoUGFyYW1zIiwiRGF0YVZpZXciLCJfYm9keUFycmF5QnVmZmVyIiwiaGVhZGVycyIsImdldCIsInR5cGUiLCJibG9iIiwicmVzb2x2ZSIsIkVycm9yIiwiYXJyYXlCdWZmZXIiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImZvcm1EYXRhIiwiTyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXMiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJwdXNoIiwidmFsdWVzIiwiZW50cmllcyIsIkUiLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwidHJpbSIsInNwbGl0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiayIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiaiIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwiQSIsIkRPTUV4Y2VwdGlvbiIsIm1lc3NhZ2UiLCJuYW1lIiwic3RhY2siLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciIsIl8iLCJhYm9ydGVkIiwiWE1MSHR0cFJlcXVlc3QiLCJhYm9ydCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInN1YnN0ciIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwic2V0UmVxdWVzdEhlYWRlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbmQiLCJTIiwiUCIsImtleSIsIlQiLCJwb2x5ZmlsbCIsImZldGNoIiwiSGVhZGVycyIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIngiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiQiIsIkJvb2xlYW4iLCJDIiwiYXV0aG9yaXplZCIsImNhdWxkcm9uQXBpVXJsIiwiaXNUZXN0U2VydmVyIiwicmVuZGVyQ2FjaGluZ0ZvcklFOCIsIm5vcm1hbGl6YXRpb25PblNlcnZlciIsIm5vcm1hdGl2ZVVybCIsInJlc291cmNlc1ZlcnNpb24iLCJrb250dXJEb21haW5zIiwiSSIsIkwiLCJGIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJEIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJSIiwiVSIsImdldFByb3RvdHlwZU9mIiwiTSIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJ2YWx1ZU9mIiwiYmluZCIsIk4iLCJNYXAiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiViIsIlJlZmVyZW5jZUVycm9yIiwiRyIsInoiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiYXJnIiwid3JhcCIsIl9pbnZva2UiLCJfX2F3YWl0IiwiZGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsInJldHVybiIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJtYXJrIiwiYXdyYXAiLCJBc3luY0l0ZXJhdG9yIiwiYXN5bmMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInN0b3AiLCJydmFsIiwiY29tcGxldGUiLCJmaW5pc2giLCJjYXRjaCIsImRlbGVnYXRlWWllbGQiLCJxIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiSCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiWiIsIiQiLCJYIiwicmVkdWNlIiwiWSIsImZvcm0iLCJwaWNrbGlzdHNQcm92aWRlciIsImdldERpZ2VzdEFwaVBpY2tsaXN0IiwicXVlcnkiLCJldmVudE1hbmFnZXIiLCJvbiIsIm9mZiIsImNoYW5nZVNldCIsInN0b3BBdXRvc2VuZCIsInVubW91bnQiLCJtb2RlbCIsImdldENodW5rIiwic2V0dGluZ3MiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiZmlsbCIsImNvbmNhdCIsIkoiLCJXIiwiSyIsIlEiLCJDRiIsImtlZm9ybXNVcmwiLCJ0dCIsImVuY29kZVVSSUNvbXBvbmVudCIsImV0Iiwic2VhcmNoIiwiZmluZCIsImZyb20iLCJydCIsInN0YXJ0IiwibnMiLCJkcmFmdElkIiwiUmVnRXhwIiwiaG9zdCIsInJlc291cmNlWm9uZSIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsIkF1dGhvcml6YXRpb24iLCJnZnYiLCJlbmdpbmVWZXJzaW9uIiwic2hvd05hdmlnYXRpb25TaWRlYmFyIiwib25SZW1vdmVBdHRhY2htZW50IiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJlbnRyeVBvaW50Iiwic3R5bGVTaGVldCIsInNjcmlwdCIsInRoZW1lIiwiZGVmYXVsdCIsInB1YmxpY0Zvcm0iLCJ0ZW1wbGF0ZXNBcGkiLCJyZW5kZXJGb3JtIiwicGFydGlhbFJlbmRlcmluZ0ZvcklFOCJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50U2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY29uc3RydWN0LmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3dyYXBOYXRpdmVTdXBlci5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXNOYXRpdmVGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9UeXBpbmdVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufSIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwidmFyIGdsb2JhbCA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnbG9iYWwsXG4gIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBnbG9iYWwgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGdsb2JhbCAmJlxuICAgICdCbG9iJyBpbiBnbG9iYWwgJiZcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIGdsb2JhbCxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ2xvYmFsXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICAgIHJldHVybiBpc0NvbnN1bWVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3RlZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxudmFyIG1ldGhvZHMgPSBbJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BPU1QnLCAnUFVUJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWxcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnbG9iYWwuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGdsb2JhbC5sb2NhdGlvbi5ocmVmID8gZ2xvYmFsLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyICYmXG4gICAgICAgIHJlcXVlc3QuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpICYmXG4gICAgICAgIHJlcXVlc3QuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpLmluZGV4T2YoJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluaXQgJiYgdHlwZW9mIGluaXQuaGVhZGVycyA9PT0gJ29iamVjdCcgJiYgIShpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSkge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5pdC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZ2xvYmFsLmZldGNoKSB7XG4gIGdsb2JhbC5mZXRjaCA9IGZldGNoXG4gIGdsb2JhbC5IZWFkZXJzID0gSGVhZGVyc1xuICBnbG9iYWwuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZ2xvYmFsLlJlc3BvbnNlID0gUmVzcG9uc2Vcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59IiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsImZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsaWVudFNldHRpbmdzID0ge1xuICAgIGF1dGhvcml6ZWQ6IHBhcnNlQm9vbChcInthdXRob3JpemVkfVwiKSxcbiAgICBjYXVsZHJvbkFwaVVybDogXCJ7Y2F1bGRyb25BcGlVcmx9XCIsXG4gICAgaXNUZXN0U2VydmVyOiBwYXJzZUJvb2woXCJ7aXNUZXN0U2VydmVyfVwiKSxcbiAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cmVuZGVyQ2FjaGluZ0ZvcklFOH1cIiksXG4gICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBwYXJzZUJvb2woXCJ7bm9ybWFsaXphdGlvbk9uU2VydmVyfVwiKSxcbiAgICBub3JtYXRpdmVVcmw6IFwie25vcm1hdGl2ZVVybH1cIixcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBcIntyZXNvdXJjZXNWZXJzaW9ufVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICB9IDogZnVuY3Rpb24gKG9iaikge1xuICAgIHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gIH0sIF90eXBlb2Yob2JqKTtcbn0iLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gIHRyeSB7XG4gICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5mby5kb25lKSB7XG4gICAgcmVzb2x2ZSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG5cbiAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cblxuICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn0iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn0iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmltcG9ydCBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgZnJvbSBcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgaWYgKGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSB7XG4gICAgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0O1xuICB9IGVsc2Uge1xuICAgIF9jb25zdHJ1Y3QgPSBmdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgICAgIHZhciBhID0gW251bGxdO1xuICAgICAgYS5wdXNoLmFwcGx5KGEsIGFyZ3MpO1xuICAgICAgdmFyIENvbnN0cnVjdG9yID0gRnVuY3Rpb24uYmluZC5hcHBseShQYXJlbnQsIGEpO1xuICAgICAgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7XG4gICAgICBpZiAoQ2xhc3MpIHNldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX2NvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSIsImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVGdW5jdGlvbiBmcm9tIFwiLi9pc05hdGl2ZUZ1bmN0aW9uLmpzXCI7XG5pbXBvcnQgY29uc3RydWN0IGZyb20gXCIuL2NvbnN0cnVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykge1xuICB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiID8gbmV3IE1hcCgpIDogdW5kZWZpbmVkO1xuXG4gIF93cmFwTmF0aXZlU3VwZXIgPSBmdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7XG4gICAgaWYgKENsYXNzID09PSBudWxsIHx8ICFpc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzO1xuXG4gICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBfY2FjaGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpO1xuXG4gICAgICBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgV3JhcHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKENsYXNzLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTtcbiAgfTtcblxuICByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24oZm4pIHtcbiAgcmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZm4pLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpICE9PSAtMTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBzZWxmO1xufSIsImV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIk9wZXJhdGlvbiBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90U3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlID8/IFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHByb2dyYW0gc3RhdGVcIiArIChtZXNzYWdlICE9IHVuZGVmaW5lZCA/IFwiOiBcIiArIG1lc3NhZ2UgOiBcIlwiKSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFyZ3VtZW50RXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYXJndW1lbnROYW1lOiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBtZXNzYWdlICE9IHVuZGVmaW5lZCA/IGAke21lc3NhZ2V9IChhcmd1bWVudDogJHthcmd1bWVudE5hbWV9KWAgOiBgSW52YWxpZCBhcmd1bWVudCB2YWx1ZTogJHthcmd1bWVudE5hbWV9YFxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFR5cGluZ0Vycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgdHlwaW5nXCIpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0FwaSwgRmlhc0NsaWVudEluaXRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IElDYW5keUNvbXBvbmVudEhhbmRsZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db21wb25lbnRIYW5kbGVSZWdpc3RyeS9JQ2FuZHlDb21wb25lbnRIYW5kbGVcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25QYXRoTWFwcGVyIH0gZnJvbSBcIi4uLy4uL0luamVjdGFibGVNb2R1bGVzL0luamVjdGFibGVFbmdpbmVNb2R1bGVzXCI7XG5pbXBvcnQgeyBJbXBvcnRFbXBsb3llckRvY3VtZW50c09wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vU3RhZmZTZXJ2aWNlSW50ZWdyYXRpb24vRW1wbG95ZWVTZXJ2aWNlVHlwZXNcIjtcbmltcG9ydCB7IFRhYkluZm9zU3RhdGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvTXVsdGlDb250cm9scy9UYWJzL1N0b3JlL1RhYkluZm9zU3RhdGVcIjtcblxuaW1wb3J0IHsgSUxlZ2FjeUZvcm0gfSBmcm9tIFwiLi9JTGVnYWN5Rm9ybVwiO1xuXG5leHBvcnQgdHlwZSBNb2RlbEV2ZW50UGF0aCA9XG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl1cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxDaGFuZ2VFdmVudFBhdGgocGF0aD86IHN0cmluZywgZmllbGROYW1lPzogc3RyaW5nKTogTW9kZWxFdmVudFBhdGgge1xuICAgIGlmIChmaWVsZE5hbWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGgsIGZpZWxkTmFtZV07XG4gICAgfVxuICAgIGlmIChwYXRoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aF07XG4gICAgfVxuICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXTtcbn1cblxuZnVuY3Rpb24gbWFwQ2h1bmtWYWx1ZXMoY2h1bms6IFJlYWRvbmx5TW9kZWxDaHVuayk6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjaHVuaylcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IGNodW5rW3BhdGhdICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaHVua1twYXRoXSwgXCJ2YWx1ZVwiKSlcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNodW5rW3BhdGhdO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBbcGF0aF06IHJlc3VsdC52YWx1ZSB9O1xuICAgICAgICB9KTtcbn1cblxuZnVuY3Rpb24gcmVkdWNlQ2h1bmtWYWx1ZXMoY2h1bmtzOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+KTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICByZXR1cm4gY2h1bmtzLnJlZHVjZShcbiAgICAgICAgKHJlc3VsdCwgY2h1bmspID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAuLi5jaHVuayxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgKTtcbn1cblxuY2xhc3MgTGVnYWN5UHVibGljRm9ybSBpbXBsZW1lbnRzIElQdWJsaWNGb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IElMZWdhY3lGb3JtO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZvcm06IElMZWdhY3lGb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlQnlIaWdobGFuZGVyUGF0aHMocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdmlnYXRpb25QYXRoTWFwcGVyKCk6IE5hdmlnYXRpb25QYXRoTWFwcGVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGJhdGNoVXBkYXRlKHVwZGF0ZVByb2M6ICh1cGRhdGVBY2Nlc3NvcjogSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5DaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBQYXJ0aWFsPFNlcnZlckVycm9yTG9nPik6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIF9fSU5URVJOQUxfX2ltcG9ydEZyb21FbXBsb3llZVNlcnZpY2UoKTogUHJvbWlzZTxFbXBsb3llZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MoXG4gICAgICAgIHBhdGhTcGVjOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPChlbXBsb3llZTogRW1wbG95ZWUpID0+IGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGFsVW5pdE9wZW5lZEluc3RhbmNlKHBhZ2VJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYWJzU3RhdGUoKTogVGFiSW5mb3NTdGF0ZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZShuYXZpZ2F0aW9uUGF0aDogc3RyaW5nKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVyRG9jdW1lbnRzKG9wdGlvbnM6IEltcG9ydEVtcGxveWVyRG9jdW1lbnRzT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZWVzKGVtcGxveWVlczogRW1wbG95ZWVbXSwgb3B0aW9ucz86IHsgc2NlbmFyaW8/OiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJpbnQocHJpbnRUeXBlOiBQcmludFR5cGUsIGJvZHk/OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgcHVibGljIHJ1bk1hc3NBY3Rpb24oYWN0aW9uSWQ6IHN0cmluZywgcGFyYW1ldGVycz86IE1hc3NBY3Rpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCeUdJZChnSWQ6IHN0cmluZywgZmlsdGVyPzogRGlnZXN0UXVlcnlGaWx0ZXIpOiBQcm9taXNlPFBpY2tsaXN0UXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnBpY2tsaXN0c1Byb3ZpZGVyLmdldERpZ2VzdEFwaVBpY2tsaXN0KGdJZCkucXVlcnkoZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb24oZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmYoZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgbGlzdGVuZXI6IHVua25vd24pOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICB0aHJvdyBFcnJvcihcImZvcm0ub25Nb2RlbENoYW5nZSgpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZvcm0uY2hhbmdlU2V0LnN0b3BBdXRvc2VuZCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnVubW91bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51bm1vdW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRvdXJTdGVwcygpOiBTdGVwW10ge1xuICAgICAgICAvLyBGb3Igb2xkIGtld2ViXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUg0K3RgtC+INCyINGB0YLQsNGA0YvRhSDQtNCy0LjQttC60LDRhSDRgtGD0YIg0YLQsNC60L7QuSDQstGL0LfQvtCyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkYXRvci52YWxpZGF0ZUFsbChrZXlzKTtcbiAgICB9XG4gICAgcHVibGljIGdldEFkZGl0aW9uYWxFbXBsb3llZUluZm8oZmlsdGVyczogR2V0RW1wbG95ZWVMaXN0UmVxdWVzdCk6IFByb21pc2U8RW1wbG95ZWVMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVsb2FkSW5uZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V29ya2luZ0V2ZW50c0ZvckVtcGxveWVlKGZpbHRlcnM6IEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0KTogUHJvbWlzZTxXb3JraW5nRXZlbnRMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVN1YnRyZWUoXG4gICAgICAgIHNvdXJjZUJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhcmdldEJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIGRvTm90Q29weVBhdGhzPzogc3RyaW5nW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1dWlkR2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vZGFsKG9wdGlvbnM6IE1vZGFsT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWN0aW9uKG9wdGlvbnM6IEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsSW5pdFNlY3Rpb24ob3B0aW9uczogQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWFzQXBpQ2xpZW50KG9wdGlvbnM6IEZpYXNDbGllbnRJbml0T3B0aW9ucyk6IEZpYXNBcGkge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRW1wbG95ZWVFZGl0b3IoZW1wbG95ZWVJZDogc3RyaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlKHBhdGg6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXMocGF0aDogc3RyaW5nLCBpbnN0YW5jZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzT25Db250cm9sSWZFeGlzdChwYXRoOiBCaW5kaW5nUGF0aCk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRvRmllbGRzVG9BdXRvVmFsdWUocGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVuc3VyZUluc3RhbmNlRnVsbHlMb2FkZWQoXG4gICAgICAgIGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICAuLi5pbnN0YW5jZXM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlc0J5UnVsZXMocnVsZXM6IEluc3RhbmNlc0RlbGV0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURucCgpOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm06IElGb3JtKTogSVB1YmxpY0Zvcm0ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbmV3IExlZ2FjeVB1YmxpY0Zvcm0oZm9ybSBhcyBJTGVnYWN5Rm9ybSk7XG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1udWxsLWtleXdvcmQgbm8tYW55IG5vLXVuc2FmZS1hbnkgKi9cbmltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuaW1wb3J0IHsgQWxsSWNvbk5hbWVzIH0gZnJvbSBcInJlYWN0LXVpXCI7XG5cbmltcG9ydCB7IEVycm9yRmlyc3RDYWxsYmFjaywgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHsgTG9hZEludG9Eb2N1bWVudCB9IGZyb20gXCIuLi8uLi9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQgfSBmcm9tIFwiLi4vVHlwZXMvSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2VcIjtcbmltcG9ydCB7IGdldENsaWVudERyYWZ0SW5mb1VybCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybFwiO1xuaW1wb3J0IHsgQVVPT3B0aW9ucyB9IGZyb20gXCIuLi9UeXBlcy9BVU9PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dEV2ZW50c1N0YXRpYyB9IGZyb20gXCIuLi8uLi9Db250cm9scy9JbnRlcm5hbHMvTGF5b3V0RXZlbnRzL0xheW91dEV2ZW50c1wiO1xuXG5pbXBvcnQgeyBjbGllbnRTZXR0aW5ncyB9IGZyb20gXCIuL0NsaWVudFNldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIH0gZnJvbSBcIi4vTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtXCI7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG50eXBlIEVuZ2luZUVudHJ5UG9pbnQgPSAoKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkRlc2NyaXB0aW9uIHtcbiAgICBpY29uOiBBbGxJY29uTmFtZXM7XG4gICAgdGV4dD86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICAgIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gICAgaGludD86IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpZD86IHN0cmluZztcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlbmRlckZvcm1TZXR0aW5ncyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uLCByZXNvdXJjZXNWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgdjogcmVzb3VyY2VzVmVyc2lvbiwgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xuICAgIGV2ZW50RW1pdHRlcj86IExheW91dEV2ZW50c1N0YXRpYztcbiAgICBlbXBsb3llcklkPzogc3RyaW5nO1xuICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcj86IGJvb2xlYW47XG4gICAgb25SZW1vdmVBdHRhY2htZW50PzogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBjbGllbnRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1ZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGV4dGVuZGVkU2V0dGluZ3MudGhlbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEVycm9yIHx8ICFnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYGR5bmFtaWMgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZnYgJHtnZnZ9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4dGVuZGVkU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzQXBpOiBvcHRpb25zLnRlbXBsYXRlc0FwaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtOiByZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBDYW5keUNsaWVudEV4cG9ydHM6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVudHJ5UG9pbnQ6IHt9LFxuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4fVwiKSxcbiAgICBrZWZvcm1zVXJsOiBcIntrZWZvcm1zVXJsfVwiLFxufTtcblxuZ2xvYmFsLkNGID0gQ2FuZHlDbGllbnRFeHBvcnRzO1xuXG5leHBvcnQgeyBDYW5keUNsaWVudEV4cG9ydHMgfTtcbiIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcblxuICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcblxuICB2YXIgX3MsIF9lO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztFQUNBLElBQUlBLENBQUEsR0FBc0IsQ0FBQztFQ0RaLFNBQVNDLEVBQWdCRCxDQUFBLEVBQUtDLENBQUEsRUFBS0MsQ0FBQTtJQVloRCxPQVhJRCxDQUFBLElBQU9ELENBQUEsR0FDVEcsTUFBQSxDQUFPQyxjQUFBLENBQWVKLENBQUEsRUFBS0MsQ0FBQSxFQUFLO01BQzlCSSxLQUFBLEVBQU9ILENBQUE7TUFDUEksVUFBQSxHQUFZO01BQ1pDLFlBQUEsR0FBYztNQUNkQyxRQUFBLEdBQVU7SUFBQSxLQUdaUixDQUFBLENBQUlDLENBQUEsSUFBT0MsQ0FBQSxFQUdORixDQUNUO0VBQUE7RUNiZSxTQUFTRSxFQUFrQkYsQ0FBQSxFQUFLQyxDQUFBO0lBQUEsQ0FDbEMsUUFBUEEsQ0FBQSxJQUFlQSxDQUFBLEdBQU1ELENBQUEsQ0FBSVMsTUFBQSxNQUFRUixDQUFBLEdBQU1ELENBQUEsQ0FBSVMsTUFBQTtJQUUvQyxLQUFLLElBQUlQLENBQUEsR0FBSSxHQUFHUSxDQUFBLEdBQU8sSUFBSUMsS0FBQSxDQUFNVixDQUFBLEdBQU1DLENBQUEsR0FBSUQsQ0FBQSxF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
|