diff --git a/api/api.json b/api/api.json index 74174aa5..4836fc00 100644 --- a/api/api.json +++ b/api/api.json @@ -12717,22 +12717,22 @@ ], "loc": { "start": { - "line": 135, + "line": 125, "column": 0 }, "end": { - "line": 172, - "column": 2 + "line": 162, + "column": 3 } }, "context": { "loc": { "start": { - "line": 174, + "line": 164, "column": 0 }, "end": { - "line": 449, + "line": 441, "column": 1 } }, @@ -12835,22 +12835,22 @@ ], "loc": { "start": { - "line": 191, + "line": 179, "column": 4 }, "end": { - "line": 195, - "column": 6 + "line": 183, + "column": 7 } }, "context": { "loc": { "start": { - "line": 196, + "line": 184, "column": 4 }, "end": { - "line": 196, + "line": 184, "column": 35 } }, @@ -12956,23 +12956,23 @@ ], "loc": { "start": { - "line": 198, + "line": 186, "column": 4 }, "end": { - "line": 201, - "column": 6 + "line": 189, + "column": 7 } }, "context": { "loc": { "start": { - "line": 202, + "line": 190, "column": 4 }, "end": { - "line": 202, - "column": 58 + "line": 190, + "column": 66 } }, "file": "/Users/tatecarson/Documents/webDev/ui/lib/interfaces/sequencer.js" @@ -13073,23 +13073,23 @@ ], "loc": { "start": { - "line": 204, + "line": 192, "column": 4 }, "end": { - "line": 207, - "column": 6 + "line": 195, + "column": 7 } }, "context": { "loc": { "start": { - "line": 208, + "line": 196, "column": 4 }, "end": { - "line": 208, - "column": 76 + "line": 196, + "column": 77 } }, "file": "/Users/tatecarson/Documents/webDev/ui/lib/interfaces/sequencer.js" @@ -13190,23 +13190,23 @@ ], "loc": { "start": { - "line": 211, + "line": 199, "column": 4 }, "end": { - "line": 214, - "column": 6 + "line": 202, + "column": 7 } }, "context": { "loc": { "start": { - "line": 215, + "line": 203, "column": 4 }, "end": { - "line": 215, - "column": 52 + "line": 203, + "column": 53 } }, "file": "/Users/tatecarson/Documents/webDev/ui/lib/interfaces/sequencer.js" @@ -13308,22 +13308,22 @@ ], "loc": { "start": { - "line": 342, + "line": 331, "column": 2 }, "end": { - "line": 345, + "line": 334, "column": 5 } }, "context": { "loc": { "start": { - "line": 346, + "line": 335, "column": 2 }, "end": { - "line": 352, + "line": 341, "column": 3 } }, @@ -13479,22 +13479,22 @@ "tags": [], "loc": { "start": { - "line": 354, + "line": 343, "column": 2 }, "end": { - "line": 356, + "line": 345, "column": 4 } }, "context": { "loc": { "start": { - "line": 357, + "line": 346, "column": 2 }, "end": { - "line": 359, + "line": 348, "column": 3 } }, @@ -13588,22 +13588,22 @@ "tags": [], "loc": { "start": { - "line": 361, + "line": 350, "column": 2 }, "end": { - "line": 363, + "line": 352, "column": 4 } }, "context": { "loc": { "start": { - "line": 364, + "line": 353, "column": 2 }, "end": { - "line": 368, + "line": 357, "column": 3 } }, @@ -13707,22 +13707,22 @@ ], "loc": { "start": { - "line": 418, + "line": 411, "column": 2 }, "end": { - "line": 421, + "line": 414, "column": 4 } }, "context": { "loc": { "start": { - "line": 422, + "line": 415, "column": 2 }, "end": { - "line": 424, + "line": 417, "column": 3 } }, @@ -13826,22 +13826,22 @@ ], "loc": { "start": { - "line": 433, + "line": 426, "column": 2 }, "end": { - "line": 436, + "line": 429, "column": 4 } }, "context": { "loc": { "start": { - "line": 437, + "line": 430, "column": 2 }, "end": { - "line": 439, + "line": 432, "column": 3 } }, diff --git a/arkit.svg b/arkit.svg deleted file mode 100644 index 8b8c3332..00000000 --- a/arkit.svg +++ /dev/null @@ -1,361 +0,0 @@ -buttonbuttontemplatecountercssparsedialdomdrunkenvelopeindexinteractioninterfaceinterfacesinterfaces/toggleintervaljqueryjs/Tone9mainmathmatrixmetermodels/togglemoustache.minmultislidernumberoscilloscopepanpan2dpianopositionprismrackradioradiobuttonrangerangesliderselectsequencesequencersliderslidertemplatesmoothspectrogramstepsvgtextbuttontilttouchtransformtuningutil/utilwebpack.config \ No newline at end of file diff --git a/dist/NexusUI.js b/dist/NexusUI.js index f3b02c0b..5802a9fd 100644 --- a/dist/NexusUI.js +++ b/dist/NexusUI.js @@ -9376,4 +9376,4 @@ return /******/ (function(modules) { // webpackBootstrap /******/ ]) }); ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAzODczMTYwNGU0MGY3OTRjYjU1OCIsIndlYnBhY2s6Ly8vLi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9wb3NpdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC9zdmcuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3V0aWwvbWF0aC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29yZS9pbnRlcmZhY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3V0aWwvZG9tLmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsL3V0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3V0aWwvdG91Y2guanMiLCJ3ZWJwYWNrOi8vLy4vfi9ldmVudHMvZXZlbnRzLmpzIiwid2VicGFjazovLy8uL2xpYi9tb2RlbHMvc3RlcC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC9pbnRlcmFjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvbW9kZWxzL3RvZ2dsZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zbGlkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2ludGVyZmFjZXMvdG9nZ2xlLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL2J1dHRvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tcG9uZW50cy9idXR0b250ZW1wbGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy90ZXh0YnV0dG9uLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL3JhZGlvYnV0dG9uLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL251bWJlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zZWxlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2ludGVyZmFjZXMvZGlhbC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9waWFuby5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zZXF1ZW5jZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21vZGVscy9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21vZGVscy9zZXF1ZW5jZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvbW9kZWxzL2RydW5rLmpzIiwid2VicGFjazovLy8uL2xpYi9tb2RlbHMvY291bnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9wYW4yZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy90aWx0LmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL211bHRpc2xpZGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL3Bhbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9lbnZlbG9wZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zcGVjdHJvZ3JhbS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9tZXRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9vc2NpbGxvc2NvcGUuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvcmUvcmFjay5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3R1bmluZy90dW5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21vZGVscy9yYWRpby5qcyIsIndlYnBhY2s6Ly8vLi9+L3dhYWNsb2NrL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vd2FhY2xvY2svbGliL1dBQUNsb2NrLmpzIiwid2VicGFjazovLy8uL34vcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovLy8uL2xpYi90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QUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDOztBQUVELGtCQUFhO2NBQUEseUJBQUc7O0FBRWQsYUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxFQUFFO0FBQzlCLGVBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7VUFDL0IsTUFBTTtBQUNMLGVBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUM7VUFDOUI7O0FBRUQsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUQsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7QUFFOUMsYUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxhQUFJ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QyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELGFBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLGFBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQzs7QUFHM0MsYUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLGFBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRSxhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRWxFLGFBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsYUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztBQUV2QyxhQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkUsYUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0s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QUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELGVBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELGVBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELGVBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELGVBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELGVBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ25ELE1BQU07QUFDTCxlQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdEQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUQsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsZUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFN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SUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDL0MsZUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDOUMsZUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDL0MsZUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7QUFDeEMsZUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDekMsZUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7O0FBRTNDLGVBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsZUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDN0MsZUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUU7QUFDcEMsZUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUU7QUFDdEMsZUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUNqQyxlQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUMvQyxlQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUMzQyxlQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQzs7QUFFekMsZUFBSSxDQUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxJQUFHO0FBQ0g7QUFDQTs7QUFFQSxJQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFrQyxpQ0FBaUM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXFDLGVBQWU7QUFDcEQ7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7OztBQ3pPQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBLEVBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQjtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXFDOztBQUVyQztBQUNBO0FBQ0E7O0FBRUEsNEJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLDZCQUE0QixVQUFVOzs7Ozs7O0FDdkx0QyxhQUFZLENBQUM7Ozs7OztLQUVKLEtBQUssdUJBQVEsQ0FBUyxFQUF0QixLQUFLOztLQUVPLFFBQVE7QUFFaEIsWUFGUSxRQUFRLENBRWYsSUFBSSxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7MkJBRlAsUUFBUTs7QUFJekIsU0FBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsU0FBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDYixTQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDOztBQUVyQixTQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsU0FBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7O0FBRWYsU0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLFlBQVcsRUFBRyxDQUFDOztBQUUxQyxTQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7QUFDWCxXQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7TUFDZDtJQUVGOztnQkFqQmtCLFFBQVE7QUFtQjNCLFdBQU07Y0FBQSxnQkFBQyxDQUFDLEVBQUU7O0FBRU4sYUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFaEIsYUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2Q7O0FBRUQsU0FBSTtjQUFBLGdCQUFHO0FBQ0wsYUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDaEIsYUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2Qjs7QUFFRCxVQUFLO2NBQUEsaUJBQUc7QUFDTixhQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNmLGFBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUMxSjs7QUFFRCxPQUFFO2NBQUEsWUFBQyxPQUFPLEVBQUU7QUFDVixhQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7QUFDWCxlQUFJLEtBQUssR0FBRyxPQUFPLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM5QixlQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUNwQixlQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7VUFDaEYsTUFBTTtBQUNMLGVBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1VBQ3JCO1FBQ0Y7Ozs7VUE1Q2tCLFFBQVE7OztrQkFBUixRQUFRLEMiLCJmaWxlIjoiLi9kaXN0L05leHVzVUkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJOZXh1c1wiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJOZXh1c1wiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAzODczMTYwNGU0MGY3OTRjYjU1OCIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IE5leHVzVUkgZnJvbSAnLi9saWIvbWFpbic7XG5cbmV4cG9ydCBkZWZhdWx0IE5leHVzVUk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9pbmRleC5qcyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEludGVyZmFjZXMgZnJvbSAnLi9pbnRlcmZhY2VzLyc7XG5pbXBvcnQgbWF0aCBmcm9tICcuL3V0aWwvbWF0aCc7XG5pbXBvcnQgUmFjayBmcm9tICcuL2NvcmUvcmFjayc7XG5pbXBvcnQgVHVuZSBmcm9tICcuL3R1bmluZy90dW5pbmcnO1xuaW1wb3J0ICogYXMgVHJhbnNmb3JtIGZyb20gJy4vdXRpbC90cmFuc2Zvcm0nO1xuXG5sZXQgQ291bnRlciA9IHJlcXVpcmUoJy4vbW9kZWxzL2NvdW50ZXInKTtcbmxldCBSYWRpbyA9IHJlcXVpcmUoJy4vbW9kZWxzL3JhZGlvJyk7XG5sZXQgRHJ1bmsgPSByZXF1aXJlKCcuL21vZGVscy9kcnVuaycpO1xubGV0IFNlcXVlbmNlID0gcmVxdWlyZSgnLi9tb2RlbHMvc2VxdWVuY2UnKTtcbmxldCBNYXRyaXggPSByZXF1aXJlKCcuL21vZGVscy9tYXRyaXgnKTtcblxuaW1wb3J0IFdBQUNsb2NrIGZyb20gJ3dhYWNsb2NrJztcbmltcG9ydCBJbnRlcnZhbCBmcm9tICcuL3RpbWUvaW50ZXJ2YWwnO1xuXG5cbi8qKlxuTmV4dXNVSSA9PiBjcmVhdGVkIGFzIE5leHVzXG4qL1xuXG5jbGFzcyBOZXh1c1VJIHtcblxuICAgIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcblxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gSW50ZXJmYWNlcykge1xuICAgICAgICAgICAgdGhpc1trZXldID0gSW50ZXJmYWNlc1trZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIG1hdGgpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IG1hdGhba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBDb3JlID0ge1xuICAgICAgICAgICdSYWNrJzogUmFja1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBNb2RlbHMgPSB7XG4gICAgICAgICAgJ0NvdW50ZXInOiBDb3VudGVyLFxuICAgICAgICAgICdSYWRpbyc6IFJhZGlvLFxuICAgICAgICAgICdEcnVuayc6IERydW5rLFxuICAgICAgICAgICdTZXF1ZW5jZSc6IFNlcXVlbmNlLFxuICAgICAgICAgICdNYXRyaXgnOiBNYXRyaXhcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gTW9kZWxzKSB7XG4gICAgICAgICAgdGhpc1trZXldID0gTW9kZWxzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gQ29yZSkge1xuICAgICAgICAgIHRoaXNba2V5XSA9IENvcmVba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBEZWZhdWx0Q29udGV4dCA9IHdpbmRvdy5BdWRpb0NvbnRleHQgfHwgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dDtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQgfHwgbmV3IERlZmF1bHRDb250ZXh0KCk7XG5cbiAgICAgICAgdGhpcy50dW5lID0gbmV3IFR1bmUoKTtcbiAgICAgICAgdGhpcy5ub3RlID0gdGhpcy50dW5lLm5vdGUuYmluZCh0aGlzLnR1bmUpO1xuXG4gICAgICAgIHRoaXMuY2xvY2sgPSBuZXcgV0FBQ2xvY2sodGhpcy5fY29udGV4dCk7XG4gICAgICAgIHRoaXMuY2xvY2suc3RhcnQoKTtcbiAgICAgICAgdGhpcy5JbnRlcnZhbCA9IEludGVydmFsO1xuXG4gICAgICAgIHRoaXMuY29sb3JzID0ge1xuICAgICAgICAgIGFjY2VudDogJyMyYmInLFxuICAgICAgICAgIGZpbGw6ICcjZWVlJyxcbiAgICAgICAgICBsaWdodDogJyNmZmYnLFxuICAgICAgICAgIGRhcms6ICcjMzMzJyxcbiAgICAgICAgICBtZWRpdW1MaWdodDogJyNjY2MnLFxuICAgICAgICAgIG1lZGl1bURhcms6ICcjNjY2J1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gVHJhbnNmb3JtO1xuICAgICAgICB0aGlzLmFkZCA9IFRyYW5zZm9ybS5hZGQ7XG5cblxuICAgICAgICB0aGlzLkFkZCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBrZXkgaW4gSW50ZXJmYWNlcykge1xuICAgICAgICAgIHRoaXMuQWRkW2tleV0gPSBUcmFuc2Zvcm0uYWRkLmJpbmQodGhpcyxrZXkpO1xuICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgLyogY3JlYXRlIGRlZmF1bHQgY29tcG9uZW50IHNpemUgKi9cbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICB2YXIgZXhpc3RpbmdTdHlsZXNoZWV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic3R5bGVcIik7XG4gICAgICAgIHZhciBkZWZhdWx0U2l6ZURlY2xhcmF0aW9uID0gJ1tuZXh1cy11aV17aGVpZ2h0OjUwMDBweDt3aWR0aDo1MDAwcHh9JztcbiAgICAgICAgdmFyIGRlZmF1bHRTdHlsZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICBkZWZhdWx0U3R5bGVOb2RlLnR5cGUgPSAndGV4dC9jc3MnO1xuICAgICAgICBkZWZhdWx0U3R5bGVOb2RlLmlubmVySFRNTCA9IGRlZmF1bHRTaXplRGVjbGFyYXRpb247XG4gICAgICAgIGlmIChleGlzdGluZ1N0eWxlc2hlZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgcGFyZW50ID0gZXhpc3RpbmdTdHlsZXNoZWV0c1swXS5wYXJlbnROb2RlXG4gICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSggZGVmYXVsdFN0eWxlTm9kZSwgZXhpc3RpbmdTdHlsZXNoZWV0c1swXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudC53cml0ZSgnPHN0eWxlPicrZGVmYXVsdFNpemVEZWNsYXJhdGlvbisnPFxcL3N0eWxlPicpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgICB9XG5cbiAgICBnZXQgY29udGV4dCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICAgIH1cblxuICAgIHNldCBjb250ZXh0KGN0eCkge1xuICAgICAgdGhpcy5jbG9jay5zdG9wKCk7XG4gICAgICB0aGlzLl9jb250ZXh0ID0gY3R4O1xuICAgICAgdGhpcy5jbG9jayA9IG5ldyBXQUFDbG9jayh0aGlzLmNvbnRleHQpO1xuICAgICAgdGhpcy5jbG9jay5zdGFydCgpO1xuICAgIH1cblxuXG5cbn1cblxubGV0IE5leHVzID0gbmV3IE5leHVzVUkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9ycygpIHtcbiAgICByZXR1cm4gTmV4dXMuY29sb3JzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHQoKSB7XG4gICAgcmV0dXJuIE5leHVzLmNvbnRleHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xvY2soKSB7XG4gICAgcmV0dXJuIE5leHVzLmNsb2NrO1xufVxuXG5leHBvcnQgZGVmYXVsdCBOZXh1cztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9tYWluLmpzIiwiZXhwb3J0IGRlZmF1bHQge1xuICBQb3NpdGlvbjogcmVxdWlyZSgnLi9wb3NpdGlvbicpLFxuICBTbGlkZXI6IHJlcXVpcmUoJy4vc2xpZGVyJyksXG4gIFRvZ2dsZTogcmVxdWlyZSgnLi90b2dnbGUnKSxcbi8qICBSYW5nZTogcmVxdWlyZSgnLi9yYW5nZXNsaWRlcicpLFxuICBXYXZlZm9ybTogcmVxdWlyZSgnLi93YXZlZm9ybScpLCAqL1xuICBCdXR0b246IHJlcXVpcmUoJy4vYnV0dG9uJyksXG4gIFRleHRCdXR0b246IHJlcXVpcmUoJy4vdGV4dGJ1dHRvbicpLFxuICBSYWRpb0J1dHRvbjogcmVxdWlyZSgnLi9yYWRpb2J1dHRvbicpLFxuICBOdW1iZXI6IHJlcXVpcmUoJy4vbnVtYmVyJyksXG4gIFNlbGVjdDogcmVxdWlyZSgnLi9zZWxlY3QnKSxcbiAgRGlhbDogcmVxdWlyZSgnLi9kaWFsJyksXG4gIFBpYW5vOiByZXF1aXJlKCcuL3BpYW5vJyksXG4gIFNlcXVlbmNlcjogcmVxdWlyZSgnLi9zZXF1ZW5jZXInKSxcbiAgUGFuMkQ6IHJlcXVpcmUoJy4vcGFuMmQnKSxcbiAgVGlsdDogcmVxdWlyZSgnLi90aWx0JyksXG4gIE11bHRpc2xpZGVyOiByZXF1aXJlKCcuL211bHRpc2xpZGVyJyksXG4gIFBhbjogcmVxdWlyZSgnLi9wYW4nKSxcbiAgRW52ZWxvcGU6IHJlcXVpcmUoJy4vZW52ZWxvcGUnKSxcbiAgU3BlY3Ryb2dyYW06IHJlcXVpcmUoJy4vc3BlY3Ryb2dyYW0nKSxcbiAgTWV0ZXI6IHJlcXVpcmUoJy4vbWV0ZXInKSxcbiAgT3NjaWxsb3Njb3BlOiByZXF1aXJlKCcuL29zY2lsbG9zY29wZScpXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvaW5kZXguanMiLCJcbid1c2Ugc3RyaWN0JztcblxubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcbmxldCBTdGVwID0gcmVxdWlyZSgnLi4vbW9kZWxzL3N0ZXAnKTtcbmltcG9ydCAqIGFzIEludGVyYWN0aW9uIGZyb20gJy4uL3V0aWwvaW50ZXJhY3Rpb24nO1xuXG4vKipcbiogUG9zaXRpb25cbipcbiogQGRlc2NyaXB0aW9uIFR3by1kaW1lbnNpb25hbCB0b3VjaCBzbGlkZXIuXG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwicG9zaXRpb25cIj48L3NwYW4+XG4qXG4qIEBleGFtcGxlXG4qIHZhciBwb3NpdGlvbiA9IG5ldyBOZXh1cy5Qb3NpdGlvbignI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciBwb3NpdGlvbiA9IG5ldyBOZXh1cy5Qb3NpdGlvbignI3RhcmdldCcse1xuKiAgICdzaXplJzogWzIwMCwyMDBdLFxuKiAgICdtb2RlJzogJ2Fic29sdXRlJywgIC8vIFwiYWJzb2x1dGVcIiBvciBcInJlbGF0aXZlXCJcbiogICAneCc6IDAuNSwgIC8vIGluaXRpYWwgeCB2YWx1ZVxuKiAgICdtaW5YJzogMCxcbiogICAnbWF4WCc6IDEsXG4qICAgJ3N0ZXBYJzogMCxcbiogICAneSc6IDAuNSwgIC8vIGluaXRpYWwgeSB2YWx1ZVxuKiAgICdtaW5ZJzogMCxcbiogICAnbWF4WSc6IDEsXG4qICAgJ3N0ZXBZJzogMFxuKiB9KVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyBhbiBvYmplY3Qgd2l0aCB4IGFuZCB5IHByb3BlcnRpZXMgY29udGFpbmluZyB0aGUgeCBhbmQgeSB2YWx1ZXMgb2YgdGhlIGludGVyZmFjZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogcG9zaXRpb24ub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9zaXRpb24gZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsyMDAsMjAwXSxcbiAgICAgICdtb2RlJzogJ2Fic29sdXRlJyxcbiAgICAgICdtaW5YJzogMCxcbiAgICAgICdtYXhYJzogMSxcbiAgICAgICdzdGVwWCc6IDAsXG4gICAgICAneCc6IDAuNSxcbiAgICAgICdtaW5ZJzogMCxcbiAgICAgICdtYXhZJzogMSxcbiAgICAgICdzdGVwWSc6IDAsXG4gICAgICAneSc6IDAuNVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cblxuICAgIHRoaXMuX3ggPSBuZXcgU3RlcCggdGhpcy5zZXR0aW5ncy5taW5YLCB0aGlzLnNldHRpbmdzLm1heFgsIHRoaXMuc2V0dGluZ3Muc3RlcFgsIHRoaXMuc2V0dGluZ3MueCApO1xuICAgIHRoaXMuX3kgPSBuZXcgU3RlcCggdGhpcy5zZXR0aW5ncy5taW5ZLCB0aGlzLnNldHRpbmdzLm1heFksIHRoaXMuc2V0dGluZ3Muc3RlcFksIHRoaXMuc2V0dGluZ3MueSApO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgIHg6IG5ldyBJbnRlcmFjdGlvbi5IYW5kbGUodGhpcy5zZXR0aW5ncy5tb2RlLCdob3Jpem9udGFsJyxbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pLFxuICAgICAgeTogbmV3IEludGVyYWN0aW9uLkhhbmRsZSh0aGlzLnNldHRpbmdzLm1vZGUsJ3ZlcnRpY2FsJyxbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pXG4gICAgfTtcbiAgICB0aGlzLnBvc2l0aW9uLngudmFsdWUgPSB0aGlzLl94Lm5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5wb3NpdGlvbi55LnZhbHVlID0gdGhpcy5feS5ub3JtYWxpemVkO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmtub2IgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5rbm9iKTtcbiAgICBcbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICAgIHRoaXMucG9zaXRpb24ueC5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcbiAgICAgIHRoaXMucG9zaXRpb24ueS5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcblxuICAgICAgdGhpcy5fbWluRGltZW5zaW9uID0gTWF0aC5taW4odGhpcy53aWR0aCx0aGlzLmhlaWdodCk7XG5cbiAgICAgIHRoaXMua25vYlJhZGl1cyA9IHtcbiAgICAgICAgb2ZmOiB+fih0aGlzLl9taW5EaW1lbnNpb24vMTAwKSAqIDUgKyA1LFxuICAgICAgfTtcbiAgICAgIHRoaXMua25vYlJhZGl1cy5vbiA9IHRoaXMua25vYlJhZGl1cy5vZmYgKiAyO1xuXG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aC8yKTtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodC8yKTtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYlJhZGl1cy5vZmYpO1xuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAvLyAgdGhpcy5rbm9iUmFkaXVzID0gMzA7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmtub2JSYWRpdXMub24pO1xuICAgIH0gZWxzZSB7XG4gICAgLy8gIHRoaXMua25vYlJhZGl1cyA9IDE1O1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgncicsdGhpcy5rbm9iUmFkaXVzLm9mZik7XG4gICAgfVxuXG4gICAgdGhpcy5rbm9iQ29vcmRpbmF0ZXMgPSB7XG4gICAgICB4OiB0aGlzLl94Lm5vcm1hbGl6ZWQgKiB0aGlzLndpZHRoLFxuICAgICAgeTogdGhpcy5oZWlnaHQgLSB0aGlzLl95Lm5vcm1hbGl6ZWQgKiB0aGlzLmhlaWdodFxuICAgIH07XG5cbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy5rbm9iQ29vcmRpbmF0ZXMueCk7XG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMua25vYkNvb3JkaW5hdGVzLnkpO1xuICB9XG5cblxuICBjbGljaygpIHtcbiAgICB0aGlzLnBvc2l0aW9uLnguYW5jaG9yID0gdGhpcy5tb3VzZTtcbiAgICB0aGlzLnBvc2l0aW9uLnkuYW5jaG9yID0gdGhpcy5tb3VzZTtcbiAgICB0aGlzLm1vdmUoKTtcbiAgfVxuXG4gIG1vdmUoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tlZCkge1xuICAgICAgdGhpcy5wb3NpdGlvbi54LnVwZGF0ZSh0aGlzLm1vdXNlKTtcbiAgICAgIHRoaXMucG9zaXRpb24ueS51cGRhdGUodGhpcy5tb3VzZSk7XG4gICAgICB0aGlzLl94LnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi54LnZhbHVlICk7XG4gICAgICB0aGlzLl95LnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi55LnZhbHVlICk7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICB4OiB0aGlzLl94LnZhbHVlLFxuICAgICAgICB5OiB0aGlzLl95LnZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gICogVGhlIGludGVyZmFjZSdzIHggdmFsdWUuIFdoZW4gc2V0LCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYWRqdXN0IHRvIGZpdCBtaW4vbWF4L3N0ZXAgc2V0dGluZ3Mgb2YgdGhlIGludGVyZmFjZS5cbiAgKiBAdHlwZSB7b2JqZWN0fVxuICAqIEBleGFtcGxlIHBvc2l0aW9uLnggPSAwLjU7XG4gICovXG5cbiAgZ2V0IHgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3gudmFsdWU7XG4gIH1cblxuICBzZXQgeCh2YWx1ZSkge1xuICAgIHRoaXMuX3gudXBkYXRlKHZhbHVlKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgeDogdGhpcy5feC52YWx1ZSxcbiAgICAgIHk6IHRoaXMuX3kudmFsdWVcbiAgICB9KTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gICogVGhlIGludGVyZmFjZSdzIHkgdmFsdWVzLiBXaGVuIHNldCwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGFkanVzdCB0byBmaXQgbWluL21heC9zdGVwIHNldHRpbmdzIG9mIHRoZSBpbnRlcmZhY2UuXG4gICogQHR5cGUge29iamVjdH1cbiAgKiBAZXhhbXBsZSBwb3NpdGlvbi54ID0gMC41O1xuICAqL1xuXG4gIGdldCB5KCkge1xuICAgIHJldHVybiB0aGlzLl95LnZhbHVlO1xuICB9XG5cbiAgc2V0IHkodmFsdWUpIHtcbiAgICB0aGlzLl95LnVwZGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgIHg6IHRoaXMuX3gudmFsdWUsXG4gICAgICB5OiB0aGlzLl95LnZhbHVlXG4gICAgfSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cblxuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5feC5ub3JtYWxpemVkLFxuICAgICAgeTogdGhpcy5feS5ub3JtYWxpemVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAqIFRoZSBsb3dlciBsaW1pdCBvZiB2YWx1ZSBvbiB0aGUgeCBheGlzXG4gICogQHR5cGUge29iamVjdH1cbiAgKi9cbiAgZ2V0IG1pblgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3gubWluO1xuICB9XG5cbiAgc2V0IG1pblgodikge1xuICAgIHRoaXMuX3gubWluID0gdjtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gICogVGhlIGxvd2VyIGxpbWl0IG9mIHZhbHVlIG9uIHRoZSB5IGF4aXNcbiAgKiBAdHlwZSB7b2JqZWN0fVxuICAqL1xuICBnZXQgbWluWSgpIHtcbiAgICByZXR1cm4gdGhpcy5feS5taW47XG4gIH1cblxuICBzZXQgbWluWSh2KSB7XG4gICAgdGhpcy5feS5taW4gPSB2O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuXG4gIC8qKlxuICAqIFRoZSB1cHBlciBsaW1pdCBvZiB2YWx1ZSBvbiB0aGUgeCBheGlzXG4gICogQHR5cGUge29iamVjdH1cbiAgKi9cbiAgZ2V0IG1heFgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3gubWF4O1xuICB9XG5cbiAgc2V0IG1heFgodikge1xuICAgIHRoaXMuX3gubWF4ID0gdjtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuICAvKipcbiAgKiBUaGUgdXBwZXIgbGltaXQgb2YgdmFsdWUgb24gdGhlIHkgYXhpc1xuICAqIEB0eXBlIHtvYmplY3R9XG4gICovXG4gIGdldCBtYXhZKCkge1xuICAgIHJldHVybiB0aGlzLl95Lm1heDtcbiAgfVxuXG4gIHNldCBtYXhZKHYpIHtcbiAgICB0aGlzLl95Lm1heCA9IHY7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICogVGhlIGluY3JlbWVudGFsIHN0ZXAgb2YgdmFsdWVzIG9uIHRoZSB4IGF4aXNcbiAgKiBAdHlwZSB7b2JqZWN0fVxuICAqL1xuICBnZXQgc3RlcFgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3guc3RlcDtcbiAgfVxuXG4gIHNldCBzdGVwWCh2KSB7XG4gICAgdGhpcy5feC5zdGVwID0gdjtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuICAvKipcbiAgKiBUaGUgaW5jcmVtZW50YWwgc3RlcCBvZiB2YWx1ZXMgb24gdGhlIHkgYXhpc1xuICAqIEB0eXBlIHtvYmplY3R9XG4gICovXG4gIGdldCBzdGVwWSgpIHtcbiAgICByZXR1cm4gdGhpcy5feS5zdGVwO1xuICB9XG5cbiAgc2V0IHN0ZXBZKHYpIHtcbiAgICB0aGlzLl95LnN0ZXAgPSB2O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuXG4gIC8qKlxuICBBYnNvbHV0ZSBtb2RlIChwb3NpdGlvbidzIHZhbHVlIGp1bXBzIHRvIG1vdXNlIGNsaWNrIHBvc2l0aW9uKSBvciByZWxhdGl2ZSBtb2RlIChtb3VzZSBkcmFnIGNoYW5nZXMgdmFsdWUgcmVsYXRpdmUgdG8gaXRzIGN1cnJlbnQgcG9zaXRpb24pLiBEZWZhdWx0OiBcImFic29sdXRlXCIuXG4gIEB0eXBlIHtzdHJpbmd9XG4gIEBleGFtcGxlIHBvc2l0aW9uLm1vZGUgPSBcInJlbGF0aXZlXCI7XG4gICovXG4gIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uLngubW9kZTtcbiAgfVxuICBzZXQgbW9kZSh2KSB7XG4gICAgdGhpcy5wb3NpdGlvbi54Lm1vZGUgPSB2O1xuICAgIHRoaXMucG9zaXRpb24ueS5tb2RlID0gdjtcbiAgfVxuXG5cblxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9wb3NpdGlvbi5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuXG4gIGNyZWF0ZTogKHR5cGUpID0+IHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHR5cGUpO1xuICB9LFxuXG4gIGFyYzogKHgsIHksIHJhZGl1cywgc3RhcnRBbmdsZSwgZW5kQW5nbGUpID0+IHtcblxuICAgIHZhciBzdGFydCA9IG1hdGgudG9DYXJ0ZXNpYW4ocmFkaXVzLCBlbmRBbmdsZSk7XG4gICAgdmFyIGVuZCA9IG1hdGgudG9DYXJ0ZXNpYW4ocmFkaXVzLCBzdGFydEFuZ2xlKTtcblxuICAgIHZhciBsYXJnZUFyY0ZsYWcgPSBlbmRBbmdsZSAtIHN0YXJ0QW5nbGUgPD0gMTgwID8gJzAnIDogJzEnO1xuXG4gICAgdmFyIGQgPSBbXG4gICAgICAgICdNJywgc3RhcnQueCt4LCBzdGFydC55K3ksXG4gICAgICAgICdBJywgcmFkaXVzLCByYWRpdXMsIDAsIGxhcmdlQXJjRmxhZywgMCwgZW5kLngreCwgZW5kLnkreVxuICAgIF0uam9pbignICcpO1xuXG4gICAgcmV0dXJuIGQ7XG4gIH0sXG5cbiAgcmFkaWFsR3JhZGllbnQ6IChkZWZzLG51bWJlck9mU3RvcHMpID0+IHtcblxuICAgIGxldCBpZCA9ICdncmFkaWVudCcgKyBtYXRoLnJpKDEwMDAwMDAwMDAwMCk7XG4gICAgbGV0IHN0b3BzID0gW107XG5cbiAgICBsZXQgZ3JhZGllbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3JhZGlhbEdyYWRpZW50Jyk7XG4gICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICBncmFkaWVudC5zZXRBdHRyaWJ1dGUoJ2N4JywgJzUwJScpO1xuICAgIGdyYWRpZW50LnNldEF0dHJpYnV0ZSgnY3knLCAnNTAlJyk7XG4gICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCdyJywgJzUwJScpO1xuXG4gICAgZGVmcy5hcHBlbmRDaGlsZChncmFkaWVudCk7XG5cbiAgICBmb3IgKGxldCBpPTA7aTxudW1iZXJPZlN0b3BzO2krKykge1xuICAgICAgbGV0IHN0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N0b3AnKTtcbiAgICAgIHN0b3Auc2V0QXR0cmlidXRlKCdpZCcsICdzdG9wJytpKTtcbiAgICAgIC8vc3RvcC5zZXRBdHRyaWJ1dGUoJ29mZnNldCcsICc3MCUnKTtcbiAgICAgIC8vc3RvcC5zZXRBdHRyaWJ1dGUoJ3N0b3AtY29sb3InLCAnV2hpdGUnKTtcbiAgICAgIGdyYWRpZW50LmFwcGVuZENoaWxkKHN0b3ApO1xuICAgICAgc3RvcHMucHVzaChzdG9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGlkLFxuICAgICAgc3RvcHM6IHN0b3BzLFxuICAgICAgZWxlbWVudDogZ3JhZGllbnRcbiAgICB9O1xuXG4gIH1cblxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi91dGlsL3N2Zy5qcyIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBMaW1pdCBhIG51bWJlciB0byB3aXRoaW4gYSBtaW5pbXVtIGFuZCBtYXhpbXVtXG4gKiBAcGFyYW0gIHtudW1iZXJ9IHZhbHVlIElucHV0IHZhbHVlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1pbiAgIExvd2VyIGxpbWl0XG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1heCAgIFVwcGVyIGxpbWl0XG4gKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgIFRoZSBpbnB1dCB2YWx1ZSBjb25zdHJhaW5lZCB3aXRoaW4gdGhlIGxvd2VyIGFuZCB1cHBlciBsaW1pdHNcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5jbGlwKDExLDAsMTApICAgLy8gcmV0dXJucyAxMFxuICogTmV4dXMuY2xpcCgtMSwwLDEwKSAgIC8vIHJldHVybnMgMFxuICogTmV4dXMuY2xpcCg1LDAsMTApICAgIC8vIHJldHVybnMgNVxuICovXG5cbmV4cG9ydHMuY2xpcCA9ICh2YWx1ZSxtaW4sbWF4KSA9PiB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSxtaW4pLG1heCk7XG59O1xuXG5leHBvcnRzLm5vcm1hbGl6ZSA9ICh2YWx1ZSxtaW4sbWF4KSA9PiB7XG4gIHJldHVybiAoICh2YWx1ZS1taW4pIC8gKG1heC1taW4pICk7XG59O1xuXG4vKipcbiAqIFNjYWxlIGEgdmFsdWUgZnJvbSBvbmUgcmFuZ2UgdG8gYW5vdGhlciByYW5nZS5cbiAqIEBwYXJhbSAge251bWJlcn0gaW5OdW0gIElucHV0IHZhbHVlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGluTWluICBJbnB1dCByYW5nZSBtaW5pbXVtXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGluTWF4ICBJbnB1dCByYW5nZSBtYXhpbXVtXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG91dE1pbiBPdXRwdXQgcmFuZ2UgbWluaW11bVxuICogQHBhcmFtICB7bnVtYmVyfSBvdXRNYXggT3V0cHV0IHJhbmdlIG1heGltdW1cbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAgIFRoZSBpbnB1dCB2YWx1ZSBzY2FsZWQgdG8gaXRzIG5ldyByYW5nZVxuICogQGV4YW1wbGVcbiAqIE5leHVzLnNjYWxlKDAuNSwwLDEsMCwxMCkgICAvLyByZXR1cm5zIDVcbiAqIE5leHVzLnNjYWxlKDAuOSwwLDEsMSwwKSAgICAvLyByZXR1cm5zIDAuMVxuICovXG5leHBvcnRzLnNjYWxlID0gKGluTnVtLCBpbk1pbiwgaW5NYXgsIG91dE1pbiwgb3V0TWF4KSA9PiB7XG4gIGlmIChpbk1pbiA9PT0gaW5NYXgpIHtcbiAgICByZXR1cm4gb3V0TWluO1xuICB9XG4gIHJldHVybiAoKChpbk51bSAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKSkgKyBvdXRNaW47XG59O1xuXG5leHBvcnRzLnRvUG9sYXIgPSAoeCx5KSA9PiB7XG4gIHZhciByID0gTWF0aC5zcXJ0KHgqeCArIHkqeSk7XG5cbiAgdmFyIHRoZXRhID0gTWF0aC5hdGFuMih5LHgpO1xuICBpZiAodGhldGEgPCAwKSB7XG4gICAgdGhldGEgPSB0aGV0YSArICgyICogTWF0aC5QSSk7XG4gIH1cbiAgcmV0dXJuIHtyYWRpdXM6IHIsIGFuZ2xlOiB0aGV0YX07XG59O1xuXG5leHBvcnRzLnRvQ2FydGVzaWFuID0gZnVuY3Rpb24ocmFkaXVzLCBhbmdsZSl7XG4gIHZhciBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XG4gIHZhciBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XG4gIHJldHVybiB7eDogcmFkaXVzKmNvcywgeTogcmFkaXVzKnNpbiotMX07XG59O1xuLypcbmV4cG9ydHMucG9sYXJUb0NhcnRlc2lhbihjZW50ZXJYLCBjZW50ZXJZLCByYWRpdXMsIGFuZ2xlSW5EZWdyZWVzKSB7XG4gIHZhciBhbmdsZUluUmFkaWFucyA9IChhbmdsZUluRGVncmVlcy05MCkgKiBNYXRoLlBJIC8gMTgwLjA7XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBjZW50ZXJYICsgKHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlSW5SYWRpYW5zKSksXG4gICAgeTogY2VudGVyWSArIChyYWRpdXMgKiBNYXRoLnNpbihhbmdsZUluUmFkaWFucykpXG4gIH07XG59ICAqL1xuXG5cblxuZXhwb3J0cy5wcnVuZSA9IGZ1bmN0aW9uKGRhdGEsIHNjYWxlKSB7XG4gIHJldHVybiBwYXJzZUZsb2F0KGRhdGEudG9GaXhlZChzY2FsZSkpO1xufTtcblxuZXhwb3J0cy5pbnZlcnQgPSBmdW5jdGlvbiAoaW5OdW0pIHtcbiAgcmV0dXJuIGV4cG9ydHMuc2NhbGUoaW5OdW0sIDEsIDAsIDAsIDEpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgTUlEaSBub3RlIG51bWJlciB0byBhIGZyZXF1ZW5jeSB2YWx1ZSBpbiBlcXVhbCB0ZW1wZXJhbWVudC5cbiAqIEBwYXJhbSAge251bWJlcn0gbWlkaSBNSURJIG5vdGUgdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn0gICAgICBGcmVxdWVuY2UgdmFsdWVcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5tdG9mKDYwKSAgLy8gcmV0dXJucyB0aGUgZnJlcXVlbmN5IG51bWJlciBvZiBNaWRkbGUgQ1xuICovXG5leHBvcnRzLm10b2YgPSBmdW5jdGlvbihtaWRpKSB7XG4gIHJldHVybiBNYXRoLnBvdygyLCAoKG1pZGktNjkpLzEyKSkgKiA0NDA7XG59O1xuXG4vKipcbiAqIEludGVycG9sYXRlIGJldHdlZW4gdHdvIG51bWJlcnNcbiAqIEBwYXJhbSAge251bWJlcn0gbG9jIEludGVycG9sYXRpb24gaW5kZXggKDAtMSlcbiAqIEBwYXJhbSAge251bWJlcn0gbWluIExvd2VyIHZhbHVlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1heCBVcHBlciB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgSW50ZXJwb2xhdGVkIHZhbHVlXG4gKiBAZXhhbXBsZVxuICogTmV4dXMuaW50ZXJwKDAuNSwyLDQpICAgLy8gcmV0dXJucyAzXG4gKiBOZXh1cy5pbnRlcnAoMC4xLDAsMTApICAgICAvLyByZXR1cm5zIDFcbiAqL1xuZXhwb3J0cy5pbnRlcnAgPSBmdW5jdGlvbihsb2MsbWluLG1heCkge1xuICByZXR1cm4gbG9jICogKG1heCAtIG1pbikgKyBtaW47XG59O1xuXG4vKipcbiAqIFJldHVybiBhIHJhbmRvbSBjaG9pY2UgZnJvbSBhIGxpc3Qgb2YgYXJndW1lbnRzXG4gKiBAcmV0dXJuIHt2YXJpb3VzfSBPbmUgcmFuZG9tIGFyZ3VtZW50XG4gKiBAZXhhbXBsZVxuICogTmV4dXMucGljaygxLDIsMyw0KSAgIC8vIHJldHVybnMgMSwgMiwgMywgb3IgNFxuICogTmV4dXMucGljayhmdW5jdGlvbjEsZnVuY3Rpb24yKSAgIC8vIHJldHVybnMgZWl0aGVyIGZ1bmN0aW9uMSBvciBmdW5jdGlvbjJcbiAqL1xuZXhwb3J0cy5waWNrID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBhcmd1bWVudHNbfn4oTWF0aC5yYW5kb20oKSphcmd1bWVudHMubGVuZ3RoKV07XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2N0YXZlIG11bHRpcGxpZXIgZm9yIGZyZXF1ZW5jeSB2YWx1ZXNcbiAqIEBwYXJhbSAge251bWJlcn0gbnVtIFJlbGF0aXZlIG9jdGF2ZSBudW1iZXIgKGUuZy4gLTEgZm9yIG9uZSBvY3RhdmUgZG93biwgMSBmb3Igb25lIG9jdGF2ZSB1cClcbiAqIEByZXR1cm4ge251bWJlcn0gICAgIE9jdGF2ZSBtdWx0aXBsaWVyXG4gKiBAZXhhbXBsZVxuICogTmV4dXMub2N0YXZlKC0xKSAgLy8gcmV0dXJucyAwLjVcbiAqIE5leHVzLm9jdGF2ZSgwKSAgIC8vIHJldHVybnMgMVxuICogTmV4dXMub2N0YXZlKDEpICAgLy8gcmV0dXJucyAyXG4gKiBOZXh1cy5vY3RhdmUoMikgICAvLyByZXR1cm5zIDRcbiAqL1xuZXhwb3J0cy5vY3RhdmUgPSBmdW5jdGlvbihudW0pIHtcbiAgcmV0dXJuIE1hdGgucG93KDIsbnVtKTtcbn07XG5cbi8qKlxuICogUmFuZG9tIGludGVnZXIgZ2VuZXJhdG9yLiBJZiBubyBzZWNvbmQgYXJndW1lbnQgaXMgZ2l2ZW4sIHdpbGwgcmV0dXJuIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byBib3VuZDEuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGJvdW5kMSBNaW5pbXVtIHJhbmRvbSB2YWx1ZVxuICogQHBhcmFtICB7bnVtYmVyfSBib3VuZDIgTWF4aW11bSByYW5kb20gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAgIFJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbG93ZXIgYW5kIHVwcGVyIGJvdW5kYXJ5XG4gKiBAZXhhbXBsZVxuICogTmV4dXMucmkoMTApICAgIC8vIHJldHVybnMgcmFuZG9tIGludCBmcm9tIDAgdG8gMTBcbiAqIE5leHVzLnJpKDIwLDIwMDApIC8vIHJldHVybnMgcmFuZG9tIGludCBmcm9tIDIwIHRvIDIwMDBcbiAqL1xuZXhwb3J0cy5yaSA9IGZ1bmN0aW9uKGJvdW5kMSxib3VuZDIpIHtcbiAgaWYgKCFib3VuZDIpIHtcbiAgICBib3VuZDIgPSBib3VuZDE7XG4gICAgYm91bmQxID0gMDtcbiAgfVxuICB2YXIgbG93ID0gTWF0aC5taW4oYm91bmQxLGJvdW5kMik7XG4gIHZhciBoaWdoID0gTWF0aC5tYXgoYm91bmQxLGJvdW5kMik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGhpZ2gtbG93KStsb3cpO1xufTtcblxuLyoqXG4gKiBSYW5kb20gZmxvYXQgbnVtYmVyIGdlbmVyYXRvci4gSWYgbm8gc2Vjb25kIGFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHJldHVybiByYW5kb20gZmxvYXQgZnJvbSAwIHRvIGJvdW5kMS5cbiAqIEBwYXJhbSAge251bWJlcn0gYm91bmQxIE1pbmltdW0gcmFuZG9tIHZhbHVlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGJvdW5kMiBNYXhpbXVtIHJhbmRvbSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgUmFuZG9tIGZsb2F0IGJldHdlZW4gbG93ZXIgYW5kIHVwcGVyIGJvdW5kYXJ5XG4gKiBAZXhhbXBsZVxuICogTmV4dXMucmYoMSkgICAgLy8gcmV0dXJucyByYW5kb20gZmxvYXQgZnJvbSAwIHRvIDFcbiAqIE5leHVzLnJmKDEsMikgLy8gcmV0dXJucyByYW5kb20gZmxvYXQgZnJvbSAxIHRvIDJcbiAqL1xuZXhwb3J0cy5yZiA9IGZ1bmN0aW9uKGJvdW5kMSxib3VuZDIpIHtcbiAgaWYgKCFib3VuZDIpIHtcbiAgICBib3VuZDIgPSBib3VuZDE7XG4gICAgYm91bmQxID0gMDtcbiAgfVxuICB2YXIgbG93ID0gTWF0aC5taW4oYm91bmQxLGJvdW5kMik7XG4gIHZhciBoaWdoID0gTWF0aC5tYXgoYm91bmQxLGJvdW5kMik7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpKihoaWdoLWxvdykrbG93O1xufTtcblxuXG5leHBvcnRzLmN5Y2xlID0gZnVuY3Rpb24oaW5wdXQsbWluLG1heCkge1xuICBpbnB1dCsrO1xuICBpZiAoaW5wdXQgPj0gbWF4KSB7XG4gICAgaW5wdXQgPSBtaW47XG4gIH1cbiAgcmV0dXJuIGlucHV0O1xufTtcblxuLyoqXG4gKiBBdmVyYWdlIGFuIGFycmF5IG9mIG51bWJlcnNcbiAqIEBwYXJhbSAge0FycmF5fSBkYXRhIEFycmF5IG9mIG51bWJlcnMgdG8gYXZlcmFnZVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgIEF2ZXJhZ2Ugb2YgdGhlIGlucHV0IGRhdGFcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5hdmVyYWdlKFswLDIsNCw2LDgsMTBdKSAgIC8vIHJldHVybnMgNVxuICovXG5leHBvcnRzLmF2ZXJhZ2UgPSBmdW5jdGlvbihkYXRhKSB7XG4gIGxldCB0b3RhbCA9IDA7XG4gIGZvciAodmFyIGk9MDtpPGRhdGEubGVuZ3RoO2krKykge1xuICAgIHRvdGFsICs9IGRhdGFbaV07XG4gIH1cbiAgcmV0dXJuIHRvdGFsIC8gZGF0YS5sZW5ndGg7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgZGlzdGFuY2UgZnJvbSBvbmUgKHgseSkgcG9pbnQgdG8gYW5vdGhlciAoeCx5KSBwb2ludFxuICogQHBhcmFtICB7bnVtYmVyfSB4MSB4IG9mIGZpcnN0IHBvaW50XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHkxIHkgb2YgZmlyc3QgcG9pbnRcbiAqIEBwYXJhbSAge251bWJlcn0geDIgeCBvZiBzZWNvbmQgcG9pbnRcbiAqIEBwYXJhbSAge251bWJlcn0geTIgeSBvZiBzZWNvbmQgcG9pbnlcbiAqIEByZXR1cm4ge251bWJlcn0gICAgRGlzdGFuY2VcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5kaXN0YW5jZSgwLDAsMyw0KSAgIC8vIHJldHVybnMgNVxuICovXG5leHBvcnRzLmRpc3RhbmNlID0gZnVuY3Rpb24oeDEseTEseDIseTIpIHtcbiAgbGV0IGEgPSB4MSAtIHgyO1xuICBsZXQgYiA9IHkxIC0geTI7XG4gIHJldHVybiBNYXRoLnNxcnQoIGEqYSArIGIqYiApO1xufTtcblxuZXhwb3J0cy5nYWluVG9EQiA9IGZ1bmN0aW9uKGdhaW4pIHtcbiAgcmV0dXJuIDIwICogTWF0aC5sb2cxMChnYWluKTtcbn07XG5cbi8qKlxuICogRmxpcCBhIGNvaW4sIHJldHVybmluZyBlaXRoZXIgMCBvciAxIGFjY29yZGluZyB0byBhIHByb2JhYmlsaXR5XG4gKiBAcGFyYW0gIHtudW1iZXJ9IFtvZGRzPTAuNV0gTGlrZWxpaG9vZCBvZiByZXR1cm5pbmcgMVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgICAgIDEgb3IgMFxuICogQGV4YW1wbGVcbiAqIE5leHVzLmNvaW4oMC4xKSAgIC8vIHJldHVybnMgMSAoMTAlIG9mIHRoZSB0aW1lKSBvciAwICg5MCUgb2YgdGhlIHRpbWUpXG4gKi9cbmV4cG9ydHMuY29pbiA9IGZ1bmN0aW9uKG9kZHM9MC41KSB7XG4gIGlmIChleHBvcnRzLnJmKDAsMSkgPCBvZGRzKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvdXRpbC9tYXRoLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xubGV0IHV0aWwgPSByZXF1aXJlKCcuLi91dGlsL3V0aWwnKTtcbmxldCB0b3VjaCA9IHJlcXVpcmUoJy4uL3V0aWwvdG91Y2gnKTtcbmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpO1xuXG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICcuLi9tYWluJztcblxuLyoqXG5JbnRlcmZhY2VcbiovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlcmZhY2UgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXG4gIGNvbnN0cnVjdG9yKGFyZ3Msb3B0aW9ucyxkZWZhdWx0cykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50eXBlID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLnBhcnNlU2V0dGluZ3MoYXJncyxvcHRpb25zLGRlZmF1bHRzKTtcbiAgICB0aGlzLm1vdXNlID0ge307XG4gICAgdGhpcy53YWl0ID0gZmFsc2U7XG4gICAgdGhpcy5jb2xvcnMgPSB7fTtcbiAgICBsZXQgZGVmYXVsdENvbG9ycyA9IGNvbG9ycygpOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbiAgICB0aGlzLmNvbG9ycy5hY2NlbnQgPSBkZWZhdWx0Q29sb3JzLmFjY2VudDtcbiAgICB0aGlzLmNvbG9ycy5maWxsID0gZGVmYXVsdENvbG9ycy5maWxsO1xuICAgIHRoaXMuY29sb3JzLmxpZ2h0ID0gZGVmYXVsdENvbG9ycy5saWdodDtcbiAgICB0aGlzLmNvbG9ycy5kYXJrID0gZGVmYXVsdENvbG9ycy5kYXJrO1xuICAgIHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0ID0gZGVmYXVsdENvbG9ycy5tZWRpdW1MaWdodDtcbiAgICB0aGlzLmNvbG9ycy5tZWRpdW1EYXJrID0gZGVmYXVsdENvbG9ycy5tZWRpdW1EYXJrO1xuICB9XG5cbiAgcGFyc2VTZXR0aW5ncyhhcmdzLG9wdGlvbnMsZGVmYXVsdHMpIHtcblxuICAgIG9wdGlvbnMudW5zaGlmdCgndGFyZ2V0Jyk7XG4gICAgZGVmYXVsdHMuZGVmYXVsdFNpemUgPSBkZWZhdWx0cy5zaXplLnNwbGljZSgwLDIpO1xuICAgIGRlZmF1bHRzLnNpemUgPSBmYWxzZTtcblxuICAgIGxldCBzZXR0aW5ncyA9IHtcbiAgICAgICd0YXJnZXQnOiBkb2N1bWVudC5ib2R5LFxuICAgICAgJ2NvbG9ycyc6IHt9LCAvLyBzaG91bGQgaW5oZXJpdCBmcm9tIGEgY29sb3JzIG1vZHVsZSxcbiAgICAgICdzbmFwV2l0aFBhcmVudCc6IHRydWUsXG4gICAgICAnZXZlbnQnOiBmdW5jdGlvbigpIHt9LFxuICAgICAgJ2NvbXBvbmVudCc6IGZhbHNlXG4gICAgfTtcblxuICAgIGZvciAobGV0IGtleSBpbiBkZWZhdWx0cykge1xuICAgICAgc2V0dGluZ3Nba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIGdyYWJzIHRoZSBuZXh0IGFyZ3VtZW50XG4gICAgICBsZXQgc2V0dGluZyA9IGFyZ3NbaV07XG4gICAgICAvLyBpZiBpdCdzIGFuIG9iamVjdCwgaXQgbXVzdCBiZSB0aGUgc2V0dGluZ3Mgb2JqZWN0XG4gICAgICBpZiAoIHV0aWwuaXNPYmplY3Qoc2V0dGluZykgKSB7XG4gICAgICAgIGZvciAoIGxldCBrZXkgaW4gc2V0dGluZyApIHtcbiAgICAgICAgICBzZXR0aW5nc1trZXldID0gc2V0dGluZ1trZXldO1xuICAgICAgICB9XG4gICAgICAvLyBpZiBpdCdzIGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgdGhlIGV2ZW50IHNldHRpbmdcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNldHRpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgc2V0dGluZ3MuZXZlbnQgPSBzZXR0aW5nO1xuICAgICAgLy8gb3RoZXJ3aXNlLCBjb25zaWRlciBpdCBvbmUgb2YgdGhlIHdpZGdldCdzIGN1c3RvbSBvcHRpb25zXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMubGVuZ3RoPj0xKSB7XG4gICAgICAgIC8vIGdyYWIgdGhlIGZpcnN0IG9wdGlvbiAtLSBpLmUuICd0YXJnZXQnXG4gICAgICAgIGxldCBrZXkgPSBvcHRpb25zLnNwbGljZSgwLDEpWzBdO1xuICAgICAgICBzZXR0aW5nc1trZXldID0gc2V0dGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiAgaGFuZGxlIGNvbW1vbiBzZXR0aW5ncyAgKi9cblxuICAgIC8vIHRhcmdldFxuICAgIHRoaXMucGFyZW50ID0gZG9tLnBhcnNlRWxlbWVudChzZXR0aW5ncy50YXJnZXQpO1xuXG4gICAgLy8gbmV4dXMtdWkgYXR0cmlidXRlXG4gICAgaWYgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgIXNldHRpbmdzLmNvbXBvbmVudCkge1xuICAgICAgaWYgKCF0aGlzLnBhcmVudC5oYXNBdHRyaWJ1dGUoJ25leHVzLXVpJykpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuc2V0QXR0cmlidXRlKCduZXh1cy11aScsJycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNpemVcblxuICAgIGlmIChzZXR0aW5ncy5zaXplICYmIEFycmF5LmlzQXJyYXkoc2V0dGluZ3Muc2l6ZSkgJiYgc2V0dGluZ3Muc25hcFdpdGhQYXJlbnQpIHtcbiAgICAgIHRoaXMud2lkdGggPSBzZXR0aW5ncy5zaXplWzBdO1xuICAgICAgdGhpcy5oZWlnaHQgPSBzZXR0aW5ncy5zaXplWzFdO1xuICAgICAgdGhpcy5wYXJlbnQuc3R5bGUud2lkdGggPSB0aGlzLndpZHRoICsgJ3B4JztcbiAgICAgIHRoaXMucGFyZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgJ3B4JztcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnNuYXBXaXRoUGFyZW50ICYmICFzZXR0aW5ncy5jb21wb25lbnQpIHtcblxuICAgICAgdGhpcy53aWR0aCA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5wYXJlbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ3dpZHRoJykucmVwbGFjZSgncHgnLCcnKSk7XG4gICAgICB0aGlzLmhlaWdodCA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5wYXJlbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2hlaWdodCcpLnJlcGxhY2UoJ3B4JywnJykpO1xuXG4gICAgICBpZiAodGhpcy53aWR0aD09NTAwMCkge1xuICAgICAgICB0aGlzLndpZHRoID0gc2V0dGluZ3MuZGVmYXVsdFNpemVbMF07XG4gICAgICAgIHRoaXMucGFyZW50LnN0eWxlLndpZHRoID0gdGhpcy5wYXJlbnQud2lkdGggPSB0aGlzLndpZHRoICsgJ3B4JztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhlaWdodD09NTAwMCkge1xuICAgICAgICB0aGlzLmhlaWdodCA9IHNldHRpbmdzLmRlZmF1bHRTaXplWzFdO1xuICAgICAgICB0aGlzLnBhcmVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLnBhcmVudC5oZWlnaHQgPSB0aGlzLmhlaWdodCArICdweCc7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0dGluZ3Muc2l6ZSA9IHNldHRpbmdzLmRlZmF1bHRTaXplO1xuICAgICAgdGhpcy53aWR0aCA9IHNldHRpbmdzLnNpemVbMF07XG4gICAgICB0aGlzLmhlaWdodCA9IHNldHRpbmdzLnNpemVbMV07XG4gICAgfVxuXG4gICAgLy8gZXZlbnRcbiAgICBpZiAoc2V0dGluZ3MuZXZlbnQpIHtcbiAgICAgIHRoaXMuZXZlbnQgPSB0aGlzLm9uKCdjaGFuZ2UnLCBzZXR0aW5ncy5ldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXZlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5idWlsZEZyYW1lKCk7XG4gICAgdGhpcy5idWlsZEludGVyZmFjZSgpO1xuICAgIHRoaXMuc2l6ZUludGVyZmFjZSgpO1xuICAgIHRoaXMuYXR0YWNoTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5jb2xvckludGVyZmFjZSgpO1xuICAgIHRoaXMuZmluYWxUb3VjaGVzKCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuZWxlbWVudCA9IHN2Zy5jcmVhdGUoJ3N2ZycpO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLndpZHRoKTtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuaGVpZ2h0KTtcbiAgICB0aGlzLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7fVxuICBzaXplSW50ZXJmYWNlKCkge31cbiAgY29sb3JJbnRlcmZhY2UoKSB7fVxuXG4gIGF0dGFjaExpc3RlbmVycygpIHtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQgPSB0aGlzLmludGVyYWN0aW9uVGFyZ2V0IHx8IHRoaXMuZWxlbWVudDtcblxuICAgIC8vIFNldHVwIGludGVyYWN0aW9uXG4gICAgaWYgKHRvdWNoLmV4aXN0cykge1xuICAgICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZXZ0ID0+IHRoaXMucHJlVG91Y2goZXZ0KSk7XG4gICAgICB0aGlzLmludGVyYWN0aW9uVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGV2dCA9PiB0aGlzLnByZVRvdWNoTW92ZShldnQpKTtcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBldnQgPT4gdGhpcy5wcmVUb3VjaFJlbGVhc2UoZXZ0KSk7XG4gICAgfVxuICAgIHRoaXMuYm91bmRQcmVNb3ZlID0gZXZ0ID0+IHRoaXMucHJlTW92ZShldnQpO1xuICAgIHRoaXMuYm91bmRQcmVSZWxlYXNlID0gZXZ0ID0+IHRoaXMucHJlUmVsZWFzZShldnQpO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZ0ID0+IHRoaXMucHJlQ2xpY2soZXZ0KSk7XG4gIH1cblxuICBmaW5hbFRvdWNoZXMoKSB7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgfVxuXG4gIHByZUNsaWNrKGUpIHtcbiAgICAvLyAxMDAwMCBnZXRDb21wdXRlZFN0eWxlIGNhbGxzIHRha2VzIDEwMCBtcy5cbiAgICAvLyAuOi4gb25lIHRha2VzIGFib3V0IC4wMW1zXG4gICAgaWYgKHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICB0aGlzLndpZHRoID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCd3aWR0aCcpLnJlcGxhY2UoJ3B4JywnJyk7XG4gICAgfVxuICAgIC8vIDEwMDAwIGdldENvbXB1dGVkU3R5bGUgY2FsbHMgdGFrZXMgNDAgbXMuXG4gICAgLy8gLjouIG9uZSB0YWtlcyBhYm91dCAuMDA0bXNcbiAgICB0aGlzLm9mZnNldCA9IGRvbS5maW5kUG9zaXRpb24odGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZU1vdXNlKGUsdGhpcy5vZmZzZXQpO1xuICAgIHRoaXMuY2xpY2tlZCA9IHRydWU7XG4gICAgdGhpcy5jbGljaygpO1xuICAgIHRoaXMubW92ZUV2ZW50ID0gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5ib3VuZFByZU1vdmUpO1xuICAgIHRoaXMucmVsZWFzZUV2ZW50ID0gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuYm91bmRQcmVSZWxlYXNlKTtcbiAgICB0aGlzLmVtaXQoJ2NsaWNrJyk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcmVNb3ZlKGUpIHtcbiAgICBpZiAoIXRoaXMud2FpdCkge1xuICAgICAgdGhpcy5tb3VzZSA9IGRvbS5sb2NhdGVNb3VzZShlLHRoaXMub2Zmc2V0KTtcbiAgICAgIHRoaXMubW92ZSgpO1xuICAgICAgdGhpcy53YWl0ID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLndhaXQgPSBmYWxzZTsgfSwyNSk7XG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJlUmVsZWFzZShlKSB7XG4gICAgdGhpcy5tb3VzZSA9IGRvbS5sb2NhdGVNb3VzZShlLHRoaXMub2Zmc2V0KTtcbiAgICB0aGlzLmNsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbGVhc2UoKTtcbiAgICB0aGlzLmVtaXQoJ3JlbGVhc2UnKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLHRoaXMuYm91bmRQcmVNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJyx0aGlzLmJvdW5kUHJlUmVsZWFzZSk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBjbGljaygpIHtcblxuICB9XG5cbiAgbW92ZSgpIHtcblxuICB9XG5cbiAgcmVsZWFzZSgpIHtcblxuICB9XG5cblxuICAvKiB0b3VjaCAqL1xuXG4gIHByZVRvdWNoKGUpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHRoaXMud2lkdGggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ3dpZHRoJykucmVwbGFjZSgncHgnLCcnKTtcbiAgICB9XG4gICAgdGhpcy5vZmZzZXQgPSBkb20uZmluZFBvc2l0aW9uKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5tb3VzZSA9IGRvbS5sb2NhdGVUb3VjaChlLHRoaXMub2Zmc2V0KTtcbiAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMudG91Y2goZSk7XG4gICAgdGhpcy5lbWl0KCdjbGljaycpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJlVG91Y2hNb3ZlKGUpIHtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZVRvdWNoKGUsdGhpcy5vZmZzZXQpO1xuICAgICAgdGhpcy50b3VjaE1vdmUoKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJlVG91Y2hSZWxlYXNlKGUpIHtcbiAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZVRvdWNoKGUsIHRoaXMub2Zmc2V0KTtcbiAgICB0aGlzLmNsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvdWNoUmVsZWFzZSgpO1xuICAgIHRoaXMuZW1pdCgncmVsZWFzZScpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgdG91Y2goKSB7XG4gICAgdGhpcy5jbGljaygpO1xuICB9XG5cbiAgdG91Y2hNb3ZlKCkge1xuICAgIHRoaXMubW92ZSgpO1xuICB9XG5cbiAgdG91Y2hSZWxlYXNlKCkge1xuICAgIHRoaXMucmVsZWFzZSgpO1xuICB9XG5cbiAgLyoqXG4gICogUmVzaXplIHRoZSBpbnRlcmZhY2VcbiAgKiBAcGFyYW0gd2lkdGgge251bWJlcn0gTmV3IHdpZHRoIGluIHBpeGVsc1xuICAqIEBwYXJhbSBoZWlnaHQge251bWJlcn0gTmV3IGhlaWdodCBpbiBwaXhlbHNcbiAgKlxuICAqIEBleGFtcGxlXG4gICogYnV0dG9uLnJlc2l6ZSgxMDAsMTAwKTtcbiAgKi9cbiAgcmVzaXplKHdpZHRoLGhlaWdodCkge1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB0aGlzLnBhcmVudC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGgrJ3B4JztcbiAgICB0aGlzLnBhcmVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmhlaWdodCsncHgnO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLndpZHRoKTtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuaGVpZ2h0KTtcbiAgICB0aGlzLnNpemVJbnRlcmZhY2UoKTtcbiAgfVxuXG4gIGVtcHR5KCkge1xuICAgIHdoaWxlICh0aGlzLmVsZW1lbnQubGFzdENoaWxkKSB7XG4gICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50Lmxhc3RDaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICogUmVtb3ZlIHRoZSBpbnRlcmZhY2UgZnJvbSB0aGUgcGFnZSBhbmQgY2FuY2VsIGl0cyBldmVudCBsaXN0ZW5lcihzKS5cbiAgKlxuICAqIEBleGFtcGxlXG4gICogYnV0dG9uLmRlc3Ryb3koKTtcbiAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmVtcHR5KCk7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIGlmICh0aGlzLmluc3RydW1lbnQpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmluc3RydW1lbnRbdGhpcy5pZF07XG4gICAgfVxuICAgIHRoaXMuY3VzdG9tRGVzdHJveSgpO1xuICB9XG5cbiAgY3VzdG9tRGVzdHJveSgpIHtcblxuICB9XG5cbiAgY29sb3JpemUodHlwZSxjb2xvcikge1xuICAgIHRoaXMuY29sb3JzW3R5cGVdID0gY29sb3I7XG4gICAgdGhpcy5jb2xvckludGVyZmFjZSgpO1xuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9jb3JlL2ludGVyZmFjZS5qcyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5maW5kUG9zaXRpb24gPSAoZWwpID0+IHtcbiAgbGV0IHZpZXdwb3J0T2Zmc2V0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGxldCB0b3AgPSB2aWV3cG9ydE9mZnNldC50b3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgbGV0IGxlZnQgPSB2aWV3cG9ydE9mZnNldC5sZWZ0ICsgd2luZG93LnNjcm9sbFg7XG4gIHJldHVybiB7dG9wLGxlZnR9O1xufTtcblxuZXhwb3J0cy5wYXJzZUVsZW1lbnQgPSAocGFyZW50KSA9PiB7XG4gIGlmICh0eXBlb2YgcGFyZW50ID09PSAnc3RyaW5nJykge1xuICAgIHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhcmVudC5yZXBsYWNlKCcjJywnJykpO1xuICB9XG5cbiAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHBhcmVudCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpe1xuICAgIHJldHVybiBwYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICdObyB2YWxpZCBwYXJlbnQgYXJndW1lbnQnO1xuICB9XG59O1xuXG5leHBvcnRzLmxvY2F0ZU1vdXNlID0gKGUsb2Zmc2V0KSA9PiB7XG4gIHJldHVybiB7XG4gICAgeDogZS5wYWdlWCAtIG9mZnNldC5sZWZ0LFxuICAgIHk6IGUucGFnZVkgLSBvZmZzZXQudG9wXG4gIH07XG59O1xuXG5leHBvcnRzLmxvY2F0ZVRvdWNoID0gKGUsb2Zmc2V0KSA9PiB7XG4gIHJldHVybiB7XG4gICAgeDogZS50YXJnZXRUb3VjaGVzLmxlbmd0aCA/IGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCAtIG9mZnNldC5sZWZ0IDogZmFsc2UsXG4gICAgeTogZS50YXJnZXRUb3VjaGVzLmxlbmd0aCA/IGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWSAtIG9mZnNldC50b3AgOiBmYWxzZVxuICB9O1xufTtcblxuZXhwb3J0cy5TbWFydENhbnZhcyA9IGZ1bmN0aW9uKHBhcmVudCkge1xuXG4gIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcbiAgcGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG5cbiAgdGhpcy5yZXNpemUgPSAodyxoKSA9PiB7XG4gICAgdGhpcy5lbGVtZW50LndpZHRoID0gdyoyO1xuICAgIHRoaXMuZWxlbWVudC5oZWlnaHQgPSBoKjI7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdysncHgnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoKydweCc7XG4gIH07XG5cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvdXRpbC9kb20uanMiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuaXNPYmplY3QgPSAob2JqKSA9PiB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShvYmopICYmIG9iaiAhPT0gbnVsbCAmJiBvYmogaW5zdGFuY2VvZiBTVkdFbGVtZW50ID09PSBmYWxzZSAmJiBvYmogaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA9PT0gZmFsc2UgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG4vLyBSZXN0cmljdHMgaW5wdXQgZm9yIHRoZSBnaXZlbiB0ZXh0Ym94IHRvIHRoZSBnaXZlbiBpbnB1dEZpbHRlciBmdW5jdGlvblxuLy8gY2YgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ2OTM2MlxuZXhwb3J0cy5zZXRJbnB1dEZpbHRlciA9ICh0ZXh0Ym94LCBpbnB1dEZpbHRlcikgPT4ge1xuICBbXCJpbnB1dFwiLCBcImtleWRvd25cIiwgXCJrZXl1cFwiLCBcIm1vdXNlZG93blwiLCBcIm1vdXNldXBcIiwgXCJzZWxlY3RcIiwgXCJjb250ZXh0bWVudVwiLCBcImRyb3BcIl0uZm9yRWFjaChmdW5jdGlvbihldmVudCkge1xuICAgIHRleHRib3guYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoaW5wdXRGaWx0ZXIodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIHRoaXMub2xkU2VsZWN0aW9uU3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLm9sZFNlbGVjdGlvbkVuZCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc093blByb3BlcnR5KFwib2xkVmFsdWVcIikpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMub2xkVmFsdWU7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5vbGRTZWxlY3Rpb25TdGFydCwgdGhpcy5vbGRTZWxlY3Rpb25FbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IFwiXCI7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL3V0aWwvdXRpbC5qcyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5leGlzdHMgPSAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi91dGlsL3RvdWNoLmpzIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzIHx8IHt9O1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG5FdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbihuKSB7XG4gIGlmICghaXNOdW1iZXIobikgfHwgbiA8IDAgfHwgaXNOYU4obikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIGlmICghdGhpcy5fZXZlbnRzLmVycm9yIHx8XG4gICAgICAgIChpc09iamVjdCh0aGlzLl9ldmVudHMuZXJyb3IpICYmICF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSkge1xuICAgICAgZXIgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkIFwiZXJyb3JcIiBldmVudC4gKCcgKyBlciArICcpJyk7XG4gICAgICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChpc1VuZGVmaW5lZChoYW5kbGVyKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHNsb3dlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgbGlzdGVuZXJzID0gaGFuZGxlci5zbGljZSgpO1xuICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG07XG5cbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgaWYgKHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lcilcbiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgaXNGdW5jdGlvbihsaXN0ZW5lci5saXN0ZW5lcikgP1xuICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgZWxzZSBpZiAoaXNPYmplY3QodGhpcy5fZXZlbnRzW3R5cGVdKSlcbiAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuICBlbHNlXG4gICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdO1xuXG4gIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9tYXhMaXN0ZW5lcnMpKSB7XG4gICAgICBtID0gdGhpcy5fbWF4TGlzdGVuZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfVxuXG4gICAgaWYgKG0gJiYgbSA+IDAgJiYgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCA+IG0pIHtcbiAgICAgIHRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArXG4gICAgICAgICAgICAgICAgICAgICdsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAnVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUudHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBpbiBJRSAxMFxuICAgICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIHZhciBmaXJlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGcoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBnKTtcblxuICAgIGlmICghZmlyZWQpIHtcbiAgICAgIGZpcmVkID0gdHJ1ZTtcbiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgZy5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICB0aGlzLm9uKHR5cGUsIGcpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWRcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXR1cm4gdGhpcztcblxuICBsaXN0ID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuICBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgcG9zaXRpb24gPSAtMTtcblxuICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHxcbiAgICAgIChpc0Z1bmN0aW9uKGxpc3QubGlzdGVuZXIpICYmIGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG5cbiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkge1xuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tID4gMDspIHtcbiAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fFxuICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbGlzdC5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdC5zcGxpY2UocG9zaXRpb24sIDEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGtleSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBmb3IgKGtleSBpbiB0aGlzLl9ldmVudHMpIHtcbiAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgfSBlbHNlIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAvLyBMSUZPIG9yZGVyXG4gICAgd2hpbGUgKGxpc3RlbmVycy5sZW5ndGgpXG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tsaXN0ZW5lcnMubGVuZ3RoIC0gMV0pO1xuICB9XG4gIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIHJldDtcbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXQgPSBbXTtcbiAgZWxzZSBpZiAoaXNGdW5jdGlvbih0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIHJldCA9IFt0aGlzLl9ldmVudHNbdHlwZV1dO1xuICBlbHNlXG4gICAgcmV0ID0gdGhpcy5fZXZlbnRzW3R5cGVdLnNsaWNlKCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIGlmICh0aGlzLl9ldmVudHMpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKVxuICAgICAgcmV0dXJuIDE7XG4gICAgZWxzZSBpZiAoZXZsaXN0ZW5lcilcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xufTtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2V2ZW50cy9ldmVudHMuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcblxuLyoqXG4gIENyZWF0ZXMgYSBzdGVwcGFibGUgdmFsdWUgd2l0aCBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgc3RlcCBzaXplLiBUaGlzIGlzIHVzZWQgaW4gbWFueSBpbnRlcmZhY2VzIHRvIGNvbnN0cmljdCB0aGVpciB2YWx1ZXMgdG8gY2VydGFpbiByYW5nZXMuXG4gIEBwYXJhbSB7bnVtYmVyfSBbbWluPTBdIG1pbmltdW1cbiAgQHBhcmFtIHtudW1iZXJ9IFttYXg9MV0gbWF4aW11bVxuICBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MF1cbiAgQHBhcmFtIHtudW1iZXJ9IFt2YWx1ZT0wXSBpbml0aWFsIHZhbHVlXG4gIEByZXR1cm5zIHtPYmplY3R9IFN0ZXBcbiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0ZXAge1xuXG4gIGNvbnN0cnVjdG9yKG1pbiA9IDAsbWF4ID0gMSxzdGVwID0gMCx2YWx1ZSA9IDApIHtcbiAgICAvL09iamVjdC5hc3NpZ24odGhpcyx7bWluLG1heCxzdGVwfSk7XG4gICAgLy9DYW5ub3QgdXNlIE9iamVjdC5hc3NpZ24gYmVjYXVzZSBub3Qgc3VwcG9ydGVkIGluIFNhZmFyaS5cbiAgICAvL0kgd291bGQgZXhwZWN0IGZvciBCYWJlbCB0byB0YWtlIGNhcmUgb2YgdGhpcyBidXQgaXQgaXMgbm90LlxuICAgIHRoaXMubWluID0gbWluO1xuICAgIHRoaXMubWF4ID0gbWF4O1xuICAgIHRoaXMuc3RlcCA9IHN0ZXA7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlZCA9IGZhbHNlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnVwZGF0ZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgIFVwZGF0ZSB3aXRoIGEgbmV3IHZhbHVlLiBUaGUgdmFsdWUgd2lsbCBiZSBhdXRvLWFkanVzdGVkIHRvIGZpdCB0aGUgbWluL21heC9zdGVwLlxuICAgIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICAqL1xuXG4gIHVwZGF0ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnN0ZXApIHtcbiAgICAgIC8vIHRoaXMudmFsdWUgPSBtYXRoLmNsaXAoTWF0aC5yb3VuZCh2YWx1ZSAvICh0aGlzLnN0ZXApKSAqIHRoaXMuc3RlcCwgdGhpcy5taW4sdGhpcy5tYXgpO1xuICAgICAgdGhpcy52YWx1ZSA9IG1hdGguY2xpcChNYXRoLnJvdW5kKCh2YWx1ZS10aGlzLm1pbikgLyAodGhpcy5zdGVwKSkgKiB0aGlzLnN0ZXAgKyB0aGlzLm1pbiwgdGhpcy5taW4sdGhpcy5tYXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbWF0aC5jbGlwKHZhbHVlLHRoaXMubWluLHRoaXMubWF4KTtcbiAgICB9XG4gICAgaWYgKHRoaXMub2xkVmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAgVXBkYXRlIHdpdGggYSBub3JtYWxpemVkIHZhbHVlIDAtMS5cbiAgICBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAgKi9cbiAgdXBkYXRlTm9ybWFsKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IG1hdGguc2NhbGUodmFsdWUsMCwxLHRoaXMubWluLHRoaXMubWF4KTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICBHZXQgYSBub3JtYWxpemVkIHZlcnNpb24gb2YgdGhpcy52YWx1ZSAuIE5vdCBzZXR0YWJsZS5cbiAgKi9cbiAgZ2V0IG5vcm1hbGl6ZWQoKSB7XG4gICAgcmV0dXJuIG1hdGgubm9ybWFsaXplKHRoaXMudmFsdWUsdGhpcy5taW4sdGhpcy5tYXgpO1xuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9tb2RlbHMvc3RlcC5qcyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IG1hdGggZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCBUb2dnbGVNb2RlbCBmcm9tICcuLi9tb2RlbHMvdG9nZ2xlJztcblxuXG4vKlxuaG93IHRvIHVzZSA6XG5cbmRpYWwuaW50ZXJhY3Rpb24gPSBuZXcgSGFuZGxlKCdyYWRpYWwnLCdyZWxhdGl2ZScsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7XG4vLyBkaWFsLmludGVyYWN0aW9uLm1vZGUgPSAncmVsYXRpdmUnXG4vLyBkaWFsLmludGVyYWN0aW9uLmRpcmVjdGlvbiA9ICdyYWRpYWwnXG5cbm9uIGNsaWNrOlxuZGlhbC5pbnRlcmFjdGlvbi5hbmNob3IgPSB0aGlzLm1vdXNlO1xuXG5vbiBtb3ZlOlxuZGlhbC5pbnRlcmFjdGlvbi51cGRhdGUodGhpcy5tb3VzZSk7XG5cbmNvbnNvbGUubG9nKCBkaWFsLmludGVyYWN0aW9uLnZhbHVlICk7IHNob3VsZCBiZSBhIG5vcm1hbGl6ZWQgdmFsdWUuXG5cbiovXG5cbi8qXG4gIGFic29sdXRlL3JlbGF0aXZlIGFyZSBwcm9wZXJ0eTogbW9kZVxuICByYWRpYWwvdmVydGljYWwvaG9yaXpvbnRhbC8yZCBhcmUgcHJvcGVydHk6IGRpcmVjdGlvblxuXG4gIHBsYW4gOlxuXG4gIGlmIHJlbGF0aXZlIC0tXG4gIE5PIG9uIGNsaWNrLCBnZXQgdmFsdWUgb2Zmc2V0IGJldHdlZW4gY3VycmVudCB2YWx1ZSBhbmQgY2xpY2sgdmFsdWUuXG4gIE5PIG9uIG1vdmUsIHVzZSBjbGljayB2YWx1ZSAtIG9mZnNldFxuICBJTlNURUFEXG4gIHVzZSBkZWx0YSAtLSBiYyB2ZXJ0aWNhbCBtb3Rpb24gb24gZGlhbCBpcyBpbXBvc3NpYmxlIG90aGVyd2lzZVxuICBhbHNvIGFsbG93IHRvIHNldCBzZW5zaXRpdml0eVxuXG4qL1xuXG5leHBvcnQgY2xhc3MgSGFuZGxlIHtcblxuICBjb25zdHJ1Y3Rvcihtb2RlPSdhYnNvbHV0ZScsZGlyZWN0aW9uPSd2ZXJ0aWNhbCcseGJvdW5kPVswLDEwMF0seWJvdW5kPVswLDEwMF0pIHtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHRoaXMucHJldmlvdXMgPSAwO1xuICAgIHRoaXMudmFsdWUgPSAwO1xuICAgIHRoaXMuc2Vuc2l0aXZpdHkgPSAxO1xuICAgIHRoaXMucmVzaXplKHhib3VuZCx5Ym91bmQpO1xuICB9XG5cbiAgcmVzaXplKHhib3VuZCx5Ym91bmQpIHtcbiAgICB0aGlzLmJvdW5kYXJ5ID0ge1xuICAgICAgbWluOiB7XG4gICAgICAgIHg6IHhib3VuZFswXSxcbiAgICAgICAgeTogeWJvdW5kWzBdXG4gICAgICB9LFxuICAgICAgbWF4OiB7XG4gICAgICAgIHg6IHhib3VuZFsxXSxcbiAgICAgICAgeTogeWJvdW5kWzFdXG4gICAgICB9LFxuICAgICAgY2VudGVyOiB7XG4gICAgICAgIHg6ICh4Ym91bmRbMV0gLSB4Ym91bmRbMF0pLzIgKyB4Ym91bmRbMF0sXG4gICAgICAgIHk6ICh5Ym91bmRbMV0gLSB5Ym91bmRbMF0pLzIgKyB5Ym91bmRbMF1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgc2V0IGFuY2hvcihtb3VzZSkge1xuICAgIHRoaXMuX2FuY2hvciA9IHRoaXMuY29udmVydFBvc2l0aW9uVG9WYWx1ZShtb3VzZSk7XG4gIH1cblxuICBnZXQgYW5jaG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9hbmNob3I7XG4gIH1cblxuXG4gIHVwZGF0ZShtb3VzZSkge1xuICAgIGlmICh0aGlzLm1vZGU9PT0ncmVsYXRpdmUnKSB7XG4gICAgICBsZXQgaW5jcmVtZW50ID0gdGhpcy5jb252ZXJ0UG9zaXRpb25Ub1ZhbHVlKG1vdXNlKSAtIHRoaXMuYW5jaG9yO1xuICAgICAgaWYgKE1hdGguYWJzKGluY3JlbWVudCkgPiAwLjUpIHsgaW5jcmVtZW50ID0gMDsgfVxuICAgICAgdGhpcy5hbmNob3IgPSBtb3VzZTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlICsgaW5jcmVtZW50ICogdGhpcy5zZW5zaXRpdml0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udmVydFBvc2l0aW9uVG9WYWx1ZShtb3VzZSk7XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSBtYXRoLmNsaXAodGhpcy52YWx1ZSwwLDEpO1xuICB9XG5cbiAgY29udmVydFBvc2l0aW9uVG9WYWx1ZShjdXJyZW50KSB7XG4gICAgc3dpdGNoKHRoaXMuZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdyYWRpYWwnOlxuICAgICAgICBsZXQgcG9zaXRpb24gPSBtYXRoLnRvUG9sYXIoY3VycmVudC54IC0gdGhpcy5ib3VuZGFyeS5jZW50ZXIueCwgY3VycmVudC55IC0gdGhpcy5ib3VuZGFyeS5jZW50ZXIueSk7XG4gICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24uYW5nbGUgLyAoTWF0aC5QSSoyKTtcbiAgICAgICAgcG9zaXRpb24gPSAoKHBvc2l0aW9uIC0gMC4yNSkgKyAxKSAlIDE7XG4gICAgICAgIHJldHVybiBwb3NpdGlvbjtcbiAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgcmV0dXJuIG1hdGguc2NhbGUoY3VycmVudC55LHRoaXMuYm91bmRhcnkubWluLnksdGhpcy5ib3VuZGFyeS5tYXgueSwwLDEpO1xuICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgIHJldHVybiBtYXRoLnNjYWxlKGN1cnJlbnQueCx0aGlzLmJvdW5kYXJ5Lm1pbi54LHRoaXMuYm91bmRhcnkubWF4LngsMCwxKTtcbiAgICB9XG4gIH1cblxufVxuXG5cbmV4cG9ydCBjbGFzcyBCdXR0b24ge1xuXG4gIGNvbnN0cnVjdG9yKG1vZGU9J2J1dHRvbicpIHtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgVG9nZ2xlTW9kZWwoKTtcbiAgICB0aGlzLnBhaW50YnJ1c2ggPSBmYWxzZTtcbiAgfVxuXG4gIGNsaWNrKCkge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdpbXB1bHNlJzpcbiAgICAgICAgdGhpcy5zdGF0ZS5vbigpO1xuICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnN0YXRlLm9mZi5iaW5kKHRoaXMpLDMwKTtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIHRoaXMudHVybk9uKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZnRlcnRvdWNoJzpcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgICB4OiBtYXRoLmNsaXAodGhpcy5tb3VzZS54IC8gdGhpcy53aWR0aCwwLDEpLFxuICAgICAgICAgIHk6IG1hdGguY2xpcCgxIC0gdGhpcy5tb3VzZS55IC8gdGhpcy5oZWlnaHQsMCwxKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnR1cm5PbigpO1xuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvZ2dsZSc6XG4gICAgICAgIHRoaXMuZmxpcCgpO1xuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICB9XG5cbiAgbW92ZSgpIHtcbiAgICBpZiAodGhpcy5tb2RlPT09J2FmdGVydG91Y2gnKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uID0ge1xuICAgICAgICB4OiBtYXRoLmNsaXAodGhpcy5tb3VzZS54IC8gdGhpcy53aWR0aCwwLDEpLFxuICAgICAgICB5OiBtYXRoLmNsaXAoMSAtIHRoaXMubW91c2UueSAvIHRoaXMuaGVpZ2h0LDAsMSlcbiAgICAgIH07XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54LFxuICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgdGhpcy50dXJuT2ZmKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZnRlcnRvdWNoJzpcbiAgICAgICAgdGhpcy50dXJuT2ZmKCk7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICAgICAgeDogdGhpcy5tb3VzZS54IC8gdGhpcy53aWR0aCxcbiAgICAgICAgICB5OiAxIC0gdGhpcy5tb3VzZS55IC8gdGhpcy5oZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvdXRpbC9pbnRlcmFjdGlvbi5qcyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9nZ2xlIHtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZSkge1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZSB8fCBmYWxzZTtcbiAgfVxuXG4gIGZsaXAoc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUgfHwgc3RhdGUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAhdGhpcy5zdGF0ZTtcbiAgICB9XG4gIH1cblxuICBvbigpIHtcbiAgICB0aGlzLnN0YXRlID0gdHJ1ZTtcbiAgfVxuXG4gIG9mZigpIHtcbiAgICB0aGlzLnN0YXRlID0gZmFsc2U7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy90b2dnbGUuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5sZXQgU3RlcCA9IHJlcXVpcmUoJy4uL21vZGVscy9zdGVwJyk7XG5pbXBvcnQgKiBhcyBJbnRlcmFjdGlvbiBmcm9tICcuLi91dGlsL2ludGVyYWN0aW9uJztcblxuLyoqXG4qIFNsaWRlclxuKlxuKiBAZGVzY3JpcHRpb24gSG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBzbGlkZXIgd2l0aCBzZXR0YWJsZSBpbnRlcmFjdGlvbiBtb2Rlcy5cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJzbGlkZXJcIiBzdGVwPTAuMj48L3NwYW4+XG4qXG4qIEBleGFtcGxlXG4qIHZhciBzbGlkZXIgPSBuZXcgTmV4dXMuU2xpZGVyKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHNsaWRlciA9IG5ldyBOZXh1cy5TbGlkZXIoJyN0YXJnZXQnLHtcbiogICAgICdzaXplJzogWzEyMCwyMF0sXG4qICAgICAnbW9kZSc6ICdyZWxhdGl2ZScsICAvLyAncmVsYXRpdmUnIG9yICdhYnNvbHV0ZSdcbiogICAgICdtaW4nOiAwLFxuKiAgICAgJ21heCc6IDEsXG4qICAgICAnc3RlcCc6IDAsXG4qICAgICAndmFsdWUnOiAwXG4qIH0pXG4qXG4qIEBvdXRwdXRcbiogY2hhbmdlXG4qIEZpcmVzIHdoZW4gdGhlIGludGVyZmFjZSdzIHZhbHVlIGNoYW5nZXMuIDxicj5cbiogRXZlbnQgZGF0YTogPGk+bnVtYmVyPC9pPiBUaGUgbnVtYmVyIHZhbHVlIG9mIHRoZSBpbnRlcmZhY2UuXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIHNsaWRlci5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbGlkZXIgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ21pbicsJ21heCcsJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsxMjAsMjBdLFxuICAgICAgJ21vZGUnOiAncmVsYXRpdmUnLCAgLy8gJ3JlbGF0aXZlJyBvciAnYWJzb2x1dGUnXG4gICAgICAnbWluJzogMCxcbiAgICAgICdtYXgnOiAxLFxuICAgICAgJ3N0ZXAnOiAwLFxuICAgICAgJ3ZhbHVlJzogMFxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLm9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJzsgLy8gVGhpcyB3aWxsIGNoYW5nZSBhdXRvbWF0aWNhbGx5IHRvICdob3Jpem9udGFsJ2lmIHRoZSBpbnRlcmZhY2UgaXMgd2lkZXIgdGhhbiBpdCBpcyB0YWxsLlxuXG4gICAgdGhpcy5fdmFsdWUgPSBuZXcgU3RlcCh0aGlzLnNldHRpbmdzLm1pbiwgdGhpcy5zZXR0aW5ncy5tYXgsIHRoaXMuc2V0dGluZ3Muc3RlcCwgdGhpcy5zZXR0aW5ncy52YWx1ZSk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gbmV3IEludGVyYWN0aW9uLkhhbmRsZSh0aGlzLnNldHRpbmdzLm1vZGUsdGhpcy5vcmllbnRhdGlvbixbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnBvc2l0aW9uLmRpcmVjdGlvbiA9IHRoaXMub3JpZW50YXRpb247XG5cbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy52YWx1ZSk7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5iYXIgPSBzdmcuY3JlYXRlKCdyZWN0Jyk7XG4gICAgdGhpcy5maWxsYmFyID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuICAgIHRoaXMua25vYiA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYmFyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5maWxsYmFyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5rbm9iKTtcblxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgIGlmICh0aGlzLndpZHRoIDwgdGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSAndmVydGljYWwnO1xuICAgICAgdGhpcy5wb3NpdGlvbi5kaXJlY3Rpb24gPSAndmVydGljYWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuICAgICAgdGhpcy5wb3NpdGlvbi5kaXJlY3Rpb24gPSAnaG9yaXpvbnRhbCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb24pIHtcbiAgICAgIHRoaXMucG9zaXRpb24ucmVzaXplKFswLHRoaXMud2lkdGhdLFt0aGlzLmhlaWdodCwwXSk7XG4gICAgfVxuXG4gICAgbGV0IHgsIHksIHcsIGgsIGJhck9mZnNldCwgY29ybmVyUmFkaXVzO1xuICAgIHRoaXMua25vYkRhdGEgPSB7XG4gICAgICBsZXZlbDogMCxcbiAgICAgIHI6IDBcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpcy53aWR0aCAvIDI7XG4gICAgXHR4ID0gdGhpcy53aWR0aC8yO1xuICAgIFx0eSA9IDA7XG4gICAgXHR3ID0gdGhpcy50aGlja25lc3M7XG4gICAgXHRoID0gdGhpcy5oZWlnaHQ7XG4gICAgICB0aGlzLmtub2JEYXRhLnIgPSB0aGlzLnRoaWNrbmVzcyAqIDAuODtcbiAgICBcdHRoaXMua25vYkRhdGEubGV2ZWwgPSBoLXRoaXMua25vYkRhdGEuci10aGlzLm5vcm1hbGl6ZWQqKGgtdGhpcy5rbm9iRGF0YS5yKjIpO1xuICAgICAgYmFyT2Zmc2V0ID0gJ3RyYW5zbGF0ZSgnK3RoaXMudGhpY2tuZXNzKigtMSkvMisnLDApJztcbiAgICAgIGNvcm5lclJhZGl1cyA9IHcvMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aGlja25lc3MgPSB0aGlzLmhlaWdodCAvIDI7XG4gICAgXHR4ID0gMDtcbiAgICBcdHkgPSB0aGlzLmhlaWdodC8yO1xuICAgIFx0dyA9IHRoaXMud2lkdGg7XG4gICAgXHRoID0gdGhpcy50aGlja25lc3M7XG4gICAgICB0aGlzLmtub2JEYXRhLnIgPSB0aGlzLnRoaWNrbmVzcyAqIDAuODtcbiAgICBcdHRoaXMua25vYkRhdGEubGV2ZWwgPSB0aGlzLm5vcm1hbGl6ZWQqKHctdGhpcy5rbm9iRGF0YS5yKjIpK3RoaXMua25vYkRhdGEucjtcbiAgICAgIGJhck9mZnNldCA9ICd0cmFuc2xhdGUoMCwnK3RoaXMudGhpY2tuZXNzKigtMSkvMisnKSc7XG4gICAgICBjb3JuZXJSYWRpdXMgPSBoLzI7XG4gICAgfVxuXG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCd4Jyx4KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3knLHkpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyxiYXJPZmZzZXQpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgncngnLGNvcm5lclJhZGl1cyk7IC8vIGNvcm5lciByYWRpdXNcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3J5Jyxjb3JuZXJSYWRpdXMpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHcpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxoKTtcblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd4Jyx4KTtcbiAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHcpO1xuICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxoLXRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd4JywwKTtcbiAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3knLHkpO1xuICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxoKTtcbiAgICB9XG4gICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyxiYXJPZmZzZXQpO1xuICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3J4Jyxjb3JuZXJSYWRpdXMpO1xuICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3J5Jyxjb3JuZXJSYWRpdXMpO1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx4KTtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmtub2JEYXRhLmxldmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3knLHkpO1xuICAgIH1cbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmtub2JEYXRhLnIpO1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5maWxsKTtcbiAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgfVxuXG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLmtub2JEYXRhLnIgPSB0aGlzLnRoaWNrbmVzcyowLjc1O1xuICAgIH1cbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmtub2JEYXRhLnIpO1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgXHQgICB0aGlzLmtub2JEYXRhLmxldmVsID0gdGhpcy5rbm9iRGF0YS5yK3RoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQqKHRoaXMuaGVpZ2h0LXRoaXMua25vYkRhdGEucioyKTtcbiAgICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5oZWlnaHQgLSB0aGlzLmtub2JEYXRhLmxldmVsKTtcbiAgICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd5Jyx0aGlzLmhlaWdodCAtIHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgfSBlbHNlIHtcbiAgXHQgICB0aGlzLmtub2JEYXRhLmxldmVsID0gdGhpcy5fdmFsdWUubm9ybWFsaXplZCoodGhpcy53aWR0aC10aGlzLmtub2JEYXRhLnIqMikrdGhpcy5rbm9iRGF0YS5yO1xuICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLmtub2JEYXRhLmxldmVsKTtcbiAgICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd4JywwKTtcbiAgICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgfVxuICB9XG5cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmtub2JEYXRhLnIgPSB0aGlzLnRoaWNrbmVzcyowLjk7XG4gICAgdGhpcy5wb3NpdGlvbi5hbmNob3IgPSB0aGlzLm1vdXNlO1xuICAgIHRoaXMubW92ZSgpO1xuICB9XG5cbiAgbW92ZSgpIHtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLnVwZGF0ZSh0aGlzLm1vdXNlKTtcbiAgICAgIHRoaXMuX3ZhbHVlLnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi52YWx1ZSApO1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuX3ZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgICB9XG4gIH1cblxuICByZWxlYXNlKCkge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubm9ybWFsaXplZDtcbiAgfVxuXG4gIC8qKlxuICBUaGUgc2xpZGVyJ3MgY3VycmVudCB2YWx1ZS4gSWYgc2V0IG1hbnVhbGx5LCB3aWxsIHVwZGF0ZSB0aGUgaW50ZXJmYWNlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIHNsaWRlci52YWx1ZSA9IDEwO1xuICAqL1xuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2KSB7XG4gICAgdGhpcy5fdmFsdWUudXBkYXRlKHYpO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLl92YWx1ZS52YWx1ZSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBMb3dlciBsaW1pdCBvZiB0aGUgc2xpZGVycydzIG91dHB1dCByYW5nZVxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBzbGlkZXIubWluID0gMTAwMDtcbiAgKi9cbiAgZ2V0IG1pbigpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubWluO1xuICB9XG4gIHNldCBtaW4odikge1xuICAgIHRoaXMuX3ZhbHVlLm1pbiA9IHY7XG4gIH1cblxuICAvKipcbiAgVXBwZXIgbGltaXQgb2YgdGhlIHNsaWRlcidzIG91dHB1dCByYW5nZVxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBzbGlkZXIubWF4ID0gMTAwMDtcbiAgKi9cbiAgZ2V0IG1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubWF4O1xuICB9XG4gIHNldCBtYXgodikge1xuICAgIHRoaXMuX3ZhbHVlLm1heCA9IHY7XG4gIH1cblxuICAvKipcbiAgVGhlIGluY3JlbWVudCB0aGF0IHRoZSBzbGlkZXIncyB2YWx1ZSBjaGFuZ2VzIGJ5LlxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBzbGlkZXIuc3RlcCA9IDU7XG4gICovXG4gIGdldCBzdGVwKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS5zdGVwO1xuICB9XG4gIHNldCBzdGVwKHYpIHtcbiAgICB0aGlzLl92YWx1ZS5zdGVwID0gdjtcbiAgfVxuXG4gIC8qKlxuICBBYnNvbHV0ZSBtb2RlIChzbGlkZXIncyB2YWx1ZSBqdW1wcyB0byBtb3VzZSBjbGljayBwb3NpdGlvbikgb3IgcmVsYXRpdmUgbW9kZSAobW91c2UgZHJhZyBjaGFuZ2VzIHZhbHVlIHJlbGF0aXZlIHRvIGl0cyBjdXJyZW50IHBvc2l0aW9uKS4gRGVmYXVsdDogXCJyZWxhdGl2ZVwiLlxuICBAdHlwZSB7c3RyaW5nfVxuICBAZXhhbXBsZSBzbGlkZXIubW9kZSA9IFwicmVsYXRpdmVcIjtcbiAgKi9cbiAgZ2V0IG1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb24ubW9kZTtcbiAgfVxuICBzZXQgbW9kZSh2KSB7XG4gICAgdGhpcy5wb3NpdGlvbi5tb2RlID0gdjtcbiAgfVxuXG5cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvc2xpZGVyLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBUb2dnbGVNb2RlbCA9IHJlcXVpcmUoJy4uL21vZGVscy90b2dnbGUnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xuXG4vKipcbiogVG9nZ2xlXG4qXG4qIEBkZXNjcmlwdGlvbiBCaW5hcnkgc3dpdGNoXG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwidG9nZ2xlXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgdG9nZ2xlID0gbmV3IE5leHVzLlRvZ2dsZSgnI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciB0b2dnbGUgPSBuZXcgTmV4dXMuVG9nZ2xlKCcjdGFyZ2V0Jyx7XG4qICAgICAnc2l6ZSc6IFs0MCwyMF0sXG4qICAgICAnc3RhdGUnOiBmYWxzZVxuKiB9KVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBQYXJhbWV0ZXI6IFRoZSBib29sZWFuIHN0YXRlIG9mIHRoZSBpbnRlcmZhY2UuXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIHRvZ2dsZS5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9nZ2xlIGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIGxldCBvcHRpb25zID0gWyd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgJ3NpemUnOiBbNDAsMjBdLFxuICAgICAgJ3RhcmdldCc6IGZhbHNlLFxuICAgICAgJ3N0YXRlJzogZmFsc2VcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLG9wdGlvbnMsZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5fc3RhdGUgPSBuZXcgVG9nZ2xlTW9kZWwodGhpcy5zZXR0aW5ncy5zdGF0ZSk7XG5cbiAgICB0aGlzLmluaXQoKTtcblxuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmJhciA9IHN2Zy5jcmVhdGUoJ3JlY3QnKTtcbiAgICB0aGlzLmtub2IgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXIpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmtub2IpO1xuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgaWYgKHRoaXMuaGVpZ2h0IDwgdGhpcy53aWR0aC8yKSB7XG4gICAgICB0aGlzLmtub2JTaXplID0gdGhpcy5oZWlnaHQvMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rbm9iU2l6ZSA9IHRoaXMud2lkdGgvNDtcbiAgICB9XG5cbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3gnLHRoaXMud2lkdGgvMiAtIHRoaXMua25vYlNpemUqMS41KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMuaGVpZ2h0LzIgLSB0aGlzLmtub2JTaXplLzIpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgncngnLHRoaXMua25vYlNpemUvMik7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdyeScsdGhpcy5rbm9iU2l6ZS8yKTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLmtub2JTaXplKjMpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmtub2JTaXplKTtcblxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIgLSB0aGlzLmtub2JTaXplKTtcbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5oZWlnaHQvMik7XG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgncicsdGhpcy5rbm9iU2l6ZSk7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aC8yIC0gdGhpcy5rbm9iU2l6ZSk7XG4gICAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5maWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMud2lkdGgvMiArIHRoaXMua25vYlNpemUpO1xuICAgICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmZsaXAoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSB0b2dnbGUgaXMgY3VycmVudGx5IG9uIG9yIG9mZi4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgdXBkYXRlIHRoZSB0b2dnbGUgaW50ZXJmYWNlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtib29sZWFufVxuICBAZXhhbXBsZSB0b2dnbGUuc3RhdGUgPSBmYWxzZTtcbiAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5zdGF0ZTtcbiAgfVxuICBzZXQgc3RhdGUodmFsdWUpIHtcbiAgICB0aGlzLl9zdGF0ZS5mbGlwKHZhbHVlKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICogU3dpdGNoIHRoZSB0b2dnbGUgc3RhdGUgdG8gaXRzIG9wcG9zaXRlIHN0YXRlXG4gICogQGV4YW1wbGVcbiAgKiB0b2dnbGUuZmxpcCgpO1xuICAqL1xuICBmbGlwKCkge1xuICAgIHRoaXMuX3N0YXRlLmZsaXAoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3RvZ2dsZS5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgQnV0dG9uVGVtcGxhdGUgPSByZXF1aXJlKCcuLi9jb21wb25lbnRzL2J1dHRvbnRlbXBsYXRlJyk7XG5cbi8qKlxuKiBCdXR0b25cbipcbiogQGRlc2NyaXB0aW9uIENpcmN1bGFyIGJ1dHRvbiB3aXRoIG9wdGlvbmFsIGFmdGVydG91Y2guXG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwiYnV0dG9uXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgYnV0dG9uID0gbmV3IE5leHVzLkJ1dHRvbignI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciBidXR0b24gPSBuZXcgTmV4dXMuQnV0dG9uKCcjdGFyZ2V0Jyx7XG4qICAgJ3NpemUnOiBbODAsODBdLFxuKiAgICdtb2RlJzogJ2FmdGVydG91Y2gnLFxuKiAgICdzdGF0ZSc6IGZhbHNlXG4qIH0pXG4qXG4qIEBvdXRwdXRcbiogY2hhbmdlXG4qIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyB2YWx1ZSBjaGFuZ2VzLiA8YnI+XG4qIEluIDxiPmJ1dHRvbiBtb2RlPC9iPiwgPGI+dG9nZ2xlIG1vZGU8L2I+LCBhbmQgPGI+aW1wdWxzZSBtb2RlPC9iPiwgdGhlIG91dHB1dCBkYXRhIGlzIGEgYm9vbGVhbiBkZXNjcmliaW5nIHRoZSBzdGF0ZSBvZiB0aGUgYnV0dG9uLjxicj5cbiogSW4gPGI+YWZ0ZXJ0b3VjaCBtb2RlPC9iPiwgdGhlIG91dHB1dCBkYXRhIGlzIGFuIG9iamVjdCBjb250YWluaW5nIHggKDAtMSkgYW5kIHkgKDAtMSkgcG9zaXRpb25zIG9mIGFmdGVydG91Y2guXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIGJ1dHRvbi5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgLy8gdiBpcyB0aGUgdmFsdWUgb2YgdGhlIGJ1dHRvblxuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnV0dG9uIGV4dGVuZHMgQnV0dG9uVGVtcGxhdGUge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ21vZGUnXTtcblxuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgJ3NpemUnOiBbODAsODBdLFxuICAgICAgJ21vZGUnOiAnYWZ0ZXJ0b3VjaCcsIC8vIGJ1dHRvbiwgYWZ0ZXJ0b3VjaCwgaW1wdWxzZSwgdG9nZ2xlXG4gICAgICAnc3RhdGUnOiBmYWxzZVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cblxuICAgIC8qKlxuICAgICogSW50ZXJhY3Rpb24gbW9kZTogc3VwcG9ydHMgXCJidXR0b25cIiwgXCJhZnRlcnRvdWNoXCIsIFwiaW1wdWxzZVwiLCBvciBcInRvZ2dsZVwiXG4gICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICogQGV4YW1wbGUgYnV0dG9uLm1vZGUgPSAndG9nZ2xlJztcbiAgICAqL1xuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIHRoaXMucGFkID0gc3ZnLmNyZWF0ZSgnY2lyY2xlJyk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucGFkKTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQgPSB0aGlzLnBhZDtcblxuICAgIC8vIG9ubHkgdXNlZCBpZiBpbiAnYWZ0ZXJ0b3VjaCcgbW9kZVxuICAgIHRoaXMuZGVmcyA9IHN2Zy5jcmVhdGUoJ2RlZnMnKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5kZWZzKTtcblxuICAgIHRoaXMuZ3JhZGllbnQgPSBzdmcucmFkaWFsR3JhZGllbnQodGhpcy5kZWZzLDIpO1xuXG4gICAgdGhpcy5ncmFkaWVudC5zdG9wc1swXS5zZXRBdHRyaWJ1dGUoJ29mZnNldCcsICczMCUnKTtcblxuICAgIHRoaXMuZ3JhZGllbnQuc3RvcHNbMV0uc2V0QXR0cmlidXRlKCdvZmZzZXQnLCAnMTAwJScpO1xuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aC8yKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodC8yKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3InLCBNYXRoLm1pbih0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSAvIDIgLSB0aGlzLndpZHRoLzQwKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsIHRoaXMud2lkdGgvMjApO1xuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmdyYWRpZW50LnN0b3BzWzBdLnNldEF0dHJpYnV0ZSgnc3RvcC1jb2xvcicsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgdGhpcy5ncmFkaWVudC5zdG9wc1sxXS5zZXRBdHRyaWJ1dGUoJ3N0b3AtY29sb3InLCB0aGlzLmNvbG9ycy5maWxsKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLypcbiAgKiBVcGRhdGUgdGhlIHZpc3VhbCBpbnRlcmZhY2UgdXNpbmcgaXRzIGN1cnJlbnQgc3RhdGVcbiAgKlxuICAqIEBleGFtcGxlXG4gICogYnV0dG9uLnJlbmRlcigpO1xuICAqL1xuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5maWxsKTtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5tb2RlPT09J2FmdGVydG91Y2gnKSB7XG4gICAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3VybCgjJyt0aGlzLmdyYWRpZW50LmlkKycpJyk7XG4gICAgICAgIHRoaXMuZ3JhZGllbnQuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N4JywgKHRoaXMucG9zaXRpb24ueCoxMDApKyclJyk7XG4gICAgICAgIHRoaXMuZ3JhZGllbnQuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N5JywgKCgxLXRoaXMucG9zaXRpb24ueSkqMTAwKSsnJScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB9XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvYnV0dG9uLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBtYXRoID0gcmVxdWlyZSgnLi4vdXRpbC9tYXRoJyk7XG5sZXQgVG9nZ2xlTW9kZWwgPSByZXF1aXJlKCcuLi9tb2RlbHMvdG9nZ2xlJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcblxuLyoqXG5CdXR0b24gVGVtcGxhdGVcbiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1dHRvblRlbXBsYXRlIGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihhcmdzLG9wdGlvbnMsZGVmYXVsdHMpIHtcblxuICAgIHN1cGVyKGFyZ3Msb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLm1vZGUgPSB0aGlzLnNldHRpbmdzLm1vZGUgfHwgJ2J1dHRvbic7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuXG4gICAgdGhpcy5fc3RhdGUgPSBuZXcgVG9nZ2xlTW9kZWwodGhpcy5zZXR0aW5ncy5zdGF0ZSk7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIHRoaXMucGFkID0gc3ZnLmNyZWF0ZSgnY2lyY2xlJyk7XG4gICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgJyNkMTgnKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICcjZDE4Jyk7XG4gICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCA0KTtcblxuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnBhZCk7XG5cbiAgICB0aGlzLmludGVyYWN0aW9uVGFyZ2V0ID0gdGhpcy5wYWQ7XG5cbiAgICB0aGlzLnNpemVJbnRlcmZhY2UoKTtcbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aC8yKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodC8yKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3InLCBNYXRoLm1pbih0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSAvIDIgLSAyKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmZpbGwpO1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCB0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgfVxuICB9XG5cbiAgZG93bihwYWludGJydXNoKSB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2ltcHVsc2UnOlxuICAgICAgICB0aGlzLnR1cm5PbigpO1xuICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnR1cm5PZmYuYmluZCh0aGlzKSwzMCk7XG4gICAgLy8gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIHRoaXMudHVybk9uKCk7XG4gICAgLy8gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FmdGVydG91Y2gnOlxuICAgICAgICB0aGlzLnBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IG1hdGguY2xpcCh0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoLDAsMSksXG4gICAgICAgICAgeTogbWF0aC5jbGlwKDEtdGhpcy5tb3VzZS55IC8gdGhpcy5oZWlnaHQsMCwxKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnR1cm5PbigpO1xuICAgIC8vICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgLy8gICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAvLyAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAvLyAgICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAvLyAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b2dnbGUnOlxuICAgICAgICB0aGlzLmZsaXAocGFpbnRicnVzaCk7XG4gICAgLy8gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIGJlbmQobW91c2UpIHtcbiAgICBpZiAodGhpcy5tb2RlPT09J2FmdGVydG91Y2gnKSB7XG4gICAgICB0aGlzLm1vdXNlID0gbW91c2UgfHwgdGhpcy5tb3VzZTtcbiAgICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICAgIHg6IG1hdGguY2xpcCh0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoLDAsMSksXG4gICAgICAgIHk6IG1hdGguY2xpcCgxIC0gdGhpcy5tb3VzZS55IC8gdGhpcy5oZWlnaHQsMCwxKVxuICAgICAgfTtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB1cCgpIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgdGhpcy50dXJuT2ZmKCk7XG4gICAgICAvLyAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FmdGVydG91Y2gnOlxuICAgICAgICB0aGlzLnR1cm5PZmYoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgICB4OiBtYXRoLmNsaXAodGhpcy5tb3VzZS54IC8gdGhpcy53aWR0aCwwLDEpLFxuICAgICAgICAgIHk6IG1hdGguY2xpcCgxIC0gdGhpcy5tb3VzZS55IC8gdGhpcy5oZWlnaHQsMCwxKVxuICAgICAgICB9O1xuICAgICAgLy8gIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAvLyAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgIC8vICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgIC8vICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAgIC8vICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyogb3ZlcndyaXRhYmxlIGludGVyYWN0aW9uIGhhbmRsZXJzICovXG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5kb3duKCk7XG4gIH1cbiAgbW92ZSgpIHtcbiAgICB0aGlzLmJlbmQoKTtcbiAgfVxuICByZWxlYXNlKCkge1xuICAgIHRoaXMudXAoKTtcbiAgfVxuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSBidXR0b24gaXMgb24gKHByZXNzZWQpIG9yIG9mZiAobm90IHByZXNzZWQpXG4gIEB0eXBlIHtib29sZWFufVxuICBAZXhhbXBsZSBidXR0b24uc3RhdGUgPSB0cnVlO1xuICAqL1xuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLnN0YXRlO1xuICB9XG4gIHNldCBzdGF0ZSh2YWx1ZSkge1xuICAgIHRoaXMuX3N0YXRlLmZsaXAodmFsdWUpO1xuICAgIGlmICh0aGlzLm1vZGU9PT0nYWZ0ZXJ0b3VjaCcpIHtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgQ2hhbmdlIHRoZSBidXR0b24gdG8gaXRzIGFsdGVybmF0ZSBzdGF0ZSAob2ZmPT5vbiwgb249Pm9mZiksIG9yIGZsaXAgaXQgdG8gYSBzcGVjaWZpZWQgc3RhdGUuXG4gIEBwYXJhbSB2YWx1ZSB7Ym9vbGVhbn0gKE9wdGlvbmFsKSBTdGF0ZSB0byBmbGlwIHRvLlxuICBAZXhhbXBsZSBidXR0b24uZmxpcCgpO1xuICAqL1xuICBmbGlwKHZhbHVlKSB7XG4gICAgdGhpcy5fc3RhdGUuZmxpcCh2YWx1ZSk7XG4gICAgaWYgKHRoaXMubW9kZT09PSdhZnRlcnRvdWNoJykge1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBUdXJuIHRoZSBidXR0b24ncyBzdGF0ZSB0byB0cnVlLlxuICBAZXhhbXBsZSBidXR0b24udHVybk9uKCk7XG4gICovXG4gIHR1cm5PbihlbWl0dGluZykge1xuICAgIHRoaXMuX3N0YXRlLm9uKCk7XG4gICAgaWYgKGVtaXR0aW5nIT09ZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLm1vZGU9PT0nYWZ0ZXJ0b3VjaCcpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBUdXJuIHRoZSBidXR0b24ncyBzdGF0ZSB0byBmYWxzZS5cbiAgQGV4YW1wbGUgYnV0dG9uLnR1cm5PZmYoKTtcbiAgKi9cbiAgdHVybk9mZihlbWl0dGluZykge1xuICAgIHRoaXMuX3N0YXRlLm9mZigpO1xuICAgIGlmIChlbWl0dGluZyE9PWZhbHNlKSB7XG4gICAgICBpZiAodGhpcy5tb2RlPT09J2FmdGVydG91Y2gnKSB7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54LFxuICAgICAgICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2NvbXBvbmVudHMvYnV0dG9udGVtcGxhdGUuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBCdXR0b25UZW1wbGF0ZSA9IHJlcXVpcmUoJy4uL2NvbXBvbmVudHMvYnV0dG9udGVtcGxhdGUnKTtcblxuLyoqXG4qIFRleHRCdXR0b25cbipcbiogQGRlc2NyaXB0aW9uIFRleHQgYnV0dG9uXG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwidGV4dEJ1dHRvblwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHRleHRidXR0b24gPSBuZXcgTmV4dXMuVGV4dEJ1dHRvbignI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciB0ZXh0YnV0dG9uID0gbmV3IE5leHVzLlRleHRCdXR0b24oJyN0YXJnZXQnLHtcbiogICAgICdzaXplJzogWzE1MCw1MF0sXG4qICAgICAnc3RhdGUnOiBmYWxzZSxcbiogICAgICd0ZXh0JzogJ1BsYXknLFxuKiAgICAgJ2FsdGVybmF0ZVRleHQnOiAnU3RvcCdcbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIGludGVyZmFjZSdzIHZhbHVlIGNoYW5nZXMuIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgYSA8aT5zdHJpbmc8L2k+IG9mIHRoZSB0ZXh0IG9uIHRoZSBidXR0b24gYXQgdGhlIG1vbWVudCBpdCB3YXMgY2xpY2tlZC5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogdGV4dGJ1dHRvbi5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXh0QnV0dG9uIGV4dGVuZHMgQnV0dG9uVGVtcGxhdGUge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsxNTAsNTBdLFxuICAgICAgJ3N0YXRlJzogZmFsc2UsXG4gICAgICAndGV4dCc6ICdQbGF5J1xuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLl90ZXh0ID0gdGhpcy5zZXR0aW5ncy50ZXh0O1xuXG4gICAgaWYodGhpcy5zZXR0aW5ncy5hbHRlcm5hdGUpeyAvL1RPRE86IFJlbW92ZSB0aGlzIGNvbmRpdGlvbmFsIGluIGEgYnJlYWtpbmctY2hhbmdlcyByZWxlYXNlXG4gICAgICB0aGlzLnNldHRpbmdzLmFsdGVybmF0ZVRleHQgPSB0aGlzLnNldHRpbmdzLmFsdGVybmF0ZTtcbiAgICAgIGNvbnNvbGUud2FybihcIidhbHRlcm5hdGUnIGluaXRpYXRvciBpcyBkZXByZWNhdGVkLiBVc2UgJ2FsdGVybmF0ZVRleHQnIGluc3RlYWQuXCIpO1xuICAgIH1cbiAgICB0aGlzLl9hbHRlcm5hdGVUZXh0ID0gdGhpcy5zZXR0aW5ncy5hbHRlcm5hdGVUZXh0O1xuICAgIHRoaXMubW9kZSA9ICh0aGlzLnNldHRpbmdzLmFsdGVybmF0ZVRleHQpID8gJ3RvZ2dsZScgOiAnYnV0dG9uJztcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuc2V0dGluZ3Muc3RhdGU7XG5cbiAgfVxuXG4gIGJ1aWxkRnJhbWUoKSB7XG5cbiAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy50ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMudGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fdGV4dDtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50ZXh0RWxlbWVudCk7XG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmNvbG9yID0gdGhpcy5jb2xvcnMuZGFyaztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcbiAgICAgIGxldCB0ZXh0c2l6ZSA9IHRoaXMuaGVpZ2h0LzM7XG4gICAgICBsZXQgdGV4dHNpemUyID0gKHRoaXMud2lkdGggLyAodGhpcy5fdGV4dC5sZW5ndGggKyAyKSApO1xuICAgICAgdGV4dHNpemUgPSBNYXRoLm1pbih0ZXh0c2l6ZSx0ZXh0c2l6ZTIpO1xuICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRlVGV4dCkge1xuICAgICAgICBsZXQgdGV4dHNpemUzID0gKHRoaXMud2lkdGggLyAodGhpcy5hbHRlcm5hdGVUZXh0Lmxlbmd0aCArIDIpICk7XG4gICAgICAgIHRleHRzaXplID0gTWF0aC5taW4odGV4dHNpemUsdGV4dHNpemUzKTtcbiAgICAgIH1cbiAgICAgIGxldCBzdHlsZXMgPSAnd2lkdGg6ICcgKyB0aGlzLndpZHRoICsgJ3B4Oyc7XG4gICAgICBzdHlsZXMgKz0gJ2hlaWdodDogJyArIHRoaXMuaGVpZ2h0ICsgJ3B4Oyc7XG4gICAgICBzdHlsZXMgKz0gJ3BhZGRpbmc6ICcrKHRoaXMuaGVpZ2h0LXRleHRzaXplKS8yKydweCAwcHg7JztcbiAgICAgIHN0eWxlcyArPSAnYm94LXNpemluZzogYm9yZGVyLWJveDsnO1xuICAgICAgc3R5bGVzICs9ICd0ZXh0LWFsaWduOiBjZW50ZXI7JztcbiAgICAgIHN0eWxlcyArPSAnZm9udC1mYW1pbHk6IGluaGVyaXQ7JztcbiAgICAgIHN0eWxlcyArPSAnZm9udC13ZWlnaHQ6IDcwMDsnO1xuICAgICAgc3R5bGVzICs9ICdvcGFjaXR5OiAxOyc7XG4gICAgICBzdHlsZXMgKz0gJ2ZvbnQtc2l6ZTonICsgdGV4dHNpemUgKyAncHg7JztcbiAgICAgIHRoaXMudGV4dEVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IHN0eWxlcztcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMudGV4dEVsZW1lbnQuc3R5bGUuY29sb3IgPSB0aGlzLmNvbG9ycy5kYXJrO1xuICAgICAgdGhpcy50ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl90ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuYWNjZW50O1xuICAgICAgdGhpcy50ZXh0RWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG4gICAgICBpZiAodGhpcy5hbHRlcm5hdGVUZXh0KSB7XG4gICAgICAgIHRoaXMudGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fYWx0ZXJuYXRlVGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgVGhlIHRleHQgdG8gZGlzcGxheSB3aGVuIHRoZSBidXR0b24gaXMgaW4gaXRzIFwib25cIiBzdGF0ZS4gSWYgc2V0LCB0aGlzIHB1dHMgdGhlIGJ1dHRvbiBpbiBcInRvZ2dsZVwiIG1vZGUuXG4gIEB0eXBlIHtTdHJpbmd9XG4gICovXG4gIGdldCBhbHRlcm5hdGVUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGVUZXh0O1xuICB9XG5cbiAgc2V0IGFsdGVybmF0ZVRleHQodGV4dCkge1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0aGlzLm1vZGUgPSAndG9nZ2xlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb2RlID0gJ2J1dHRvbic7XG4gICAgfVxuICAgIHRoaXMuX2FsdGVybmF0ZVRleHQgPSB0ZXh0O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuXG4gIC8qKlxuICBUaGUgdGV4dCB0byBkaXNwbGF5LiAoSWYgLmFsdGVybmF0ZVRleHQgZXhpc3RzLCB0aGVuIHRoaXMgLnRleHQgd2lsbCBvbmx5IGJlIGRpc3BsYXllZCB3aGVuIHRoZSBidXR0b24gaXMgaW4gaXRzIFwib2ZmXCIgc3RhdGUuKVxuICBAdHlwZSB7U3RyaW5nfVxuICAqL1xuICBnZXQgdGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dDtcbiAgfVxuXG4gIHNldCB0ZXh0KHRleHQpIHtcbiAgICB0aGlzLl90ZXh0ID0gdGV4dDtcbiAgICB0aGlzLnNpemVJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvdGV4dGJ1dHRvbi5qcyIsIid1c2Ugc3RyaWN0JztcblxuLy9sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IEJ1dHRvbiA9IHJlcXVpcmUoJy4uL2ludGVyZmFjZXMvYnV0dG9uJyk7XG5cbi8qKlxuICogUmFkaW9CdXR0b25cbiAqXG4gKiBAZGVzY3JpcHRpb24gQW4gYXJyYXkgb2YgYnV0dG9ucy4gQnkgZGVmYXVsdCwgc2VsZWN0aW5nIG9uZSBidXR0b24gd2lsbCBkZXNlbGVjdCBhbGwgb3RoZXIgYnV0dG9ucywgYnV0IHRoaXMgY2FuIGJlIGN1c3RvbWl6ZWQgdXNpbmcgdGhlIEFQSSBiZWxvdy5cbiAqXG4gKiBAZGVtbyA8ZGl2IG5leHVzLXVpPVwiUmFkaW9CdXR0b25cIj48L2Rpdj5cbiAqXG4gKiBAZXhhbXBsZVxuICogdmFyIHJhZGlvYnV0dG9uID0gbmV3IE5leHVzLlJhZGlvQnV0dG9uKCcjdGFyZ2V0JylcbiAqXG4gKiBAZXhhbXBsZVxuICogdmFyIHJhZGlvYnV0dG9uID0gbmV3IE5leHVzLlJhZGlvQnV0dG9uKCcjdGFyZ2V0Jyx7XG4gKiAgICdzaXplJzogWzEyMCwyNV0sXG4gKiAgICdudW1iZXJPZkJ1dHRvbnMnOiA0LFxuICogICAnYWN0aXZlJzogLTFcbiAqIH0pXG4gKlxuICogQG91dHB1dFxuICogY2hhbmdlXG4gKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuICogVGhlIGV2ZW50IGRhdGEgYW4gPGk+aW50ZWdlcjwvaT4sIHRoZSBpbmRleCBvZiB0aGUgYnV0dG9uIHRoYXQgaXMgY3VycmVudGx5IG9uLiBJZiBubyBidXR0b24gaXMgc2VsZWN0ZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIC0xLlxuICpcbiAqIEBvdXRwdXRleGFtcGxlXG4gKiByYWRpb2J1dHRvbi5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4gKiAgIGNvbnNvbGUubG9nKHYpO1xuICogfSlcbiAqXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaW9CdXR0b24gZXh0ZW5kcyBJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgIHNpemU6IFsxMjAsIDI1XSxcbiAgICAgIG51bWJlck9mQnV0dG9uczogNCxcbiAgICAgIGFjdGl2ZTogLTFcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLCBvcHRpb25zLCBkZWZhdWx0cyk7XG5cbiAgICB0aGlzLmJ1dHRvbnMgPSBbXTtcbiAgICB0aGlzLl9udW1iZXJPZkJ1dHRvbnMgPSB0aGlzLnNldHRpbmdzLm51bWJlck9mQnV0dG9ucztcbiAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuc2V0dGluZ3MuYWN0aXZlO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGJ1aWxkRnJhbWUoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbnVtYmVyT2ZCdXR0b25zOyBpKyspIHtcbiAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICAgIGxldCBidXR0b24gPSBuZXcgQnV0dG9uKFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlOiAndG9nZ2xlJyxcbiAgICAgICAgICBjb21wb25lbnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy51cGRhdGUuYmluZCh0aGlzLCBpKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5idXR0b25zLnB1c2goYnV0dG9uKTtcbiAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgbGV0IG9yaWVudGF0aW9uO1xuICAgIGlmICh0aGlzLndpZHRoID4gdGhpcy5oZWlnaHQpIHtcbiAgICAgIG9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgbGV0IGJ1dHRvbldpZHRoID1cbiAgICAgIHRoaXMud2lkdGggLyAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyAxIDogdGhpcy5fbnVtYmVyT2ZCdXR0b25zKTtcbiAgICBsZXQgYnV0dG9uSGVpZ2h0ID1cbiAgICAgIHRoaXMuaGVpZ2h0IC8gKG9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gdGhpcy5fbnVtYmVyT2ZCdXR0b25zIDogMSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX251bWJlck9mQnV0dG9uczsgaSsrKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNbaV0ucmVzaXplKGJ1dHRvbldpZHRoLCBidXR0b25IZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbnVtYmVyT2ZCdXR0b25zOyBpKyspIHtcbiAgICAgIHRoaXMuYnV0dG9uc1tpXS5jb2xvcnMgPSB0aGlzLmNvbG9ycztcbiAgICAgIHRoaXMuYnV0dG9uc1tpXS5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGUoaW5kZXgpIHtcbiAgICBpZiAodGhpcy5idXR0b25zW2luZGV4XS5zdGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3QoaW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc2VsZWN0KCk7XG4gICAgfVxuICAgIC8vICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5idXR0b25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5hY3RpdmUpIHtcbiAgICAgICAgdGhpcy5idXR0b25zW2ldLnR1cm5PbihmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1dHRvbnNbaV0udHVybk9mZihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gIFNlbGVjdCBvbmUgYnV0dG9uIGFuZCBkZXNlbGVjdCBhbGwgb3RoZXIgYnV0dG9ucy5cbiAgQHBhcmFtIGluZGV4IHtudW1iZXJ9IFRoZSBpbmRleCBvZiB0aGUgYnV0dG9uIHRvIHNlbGVjdFxuICAqL1xuICBzZWxlY3QoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuYnV0dG9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gaW5kZXg7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsIHRoaXMuYWN0aXZlKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gIERlc2VsZWN0IGFsbCBidXR0b25zLlxuICAqL1xuICBkZXNlbGVjdCgpIHtcbiAgICB0aGlzLmFjdGl2ZSA9IC0xO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJywgdGhpcy5hY3RpdmUpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgbnVtYmVyT2ZCdXR0b25zKCkge1xuICAgIHJldHVybiB0aGlzLl9udW1iZXJPZkJ1dHRvbnM7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGhvdyBtYW55IGJ1dHRvbnMgYXJlIGluIHRoZSBpbnRlcmZhY2VcbiAgICogQHBhcmFtICB7bnVtYmVyfSBidXR0b25zIEhvdyBtYW55IGJ1dHRvbnMgYXJlIGluIHRoZSBpbnRlcmZhY2VcbiAgICovXG4gIHNldCBudW1iZXJPZkJ1dHRvbnMoYnV0dG9ucykge1xuICAgIHRoaXMuX251bWJlck9mQnV0dG9ucyA9IGJ1dHRvbnM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYnV0dG9uc1tpXS5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xuICAgIC8vICBmb3IgKGxldCBpPTA7aTx0aGlzLmJ1dHRvbnMubGVuZ3RoO2krKykge1xuICAgIC8vICAgIHRoaXMuYnV0dG9uc1tpXS5kZXN0cm95KCk7XG4gICAgLy8gIH1cbiAgICB0aGlzLmVtcHR5KCk7XG4gICAgdGhpcy5idWlsZEludGVyZmFjZSgpO1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9yYWRpb2J1dHRvbi5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5sZXQgU3RlcCA9IHJlcXVpcmUoJy4uL21vZGVscy9zdGVwJyk7XG5sZXQgbWF0aCA9IHJlcXVpcmUoJy4uL3V0aWwvbWF0aCcpO1xubGV0IHV0aWwgPSByZXF1aXJlKCcuLi91dGlsL3V0aWwnKTtcblxuLyoqXG4qIE51bWJlclxuKlxuKiBAZGVzY3JpcHRpb24gTnVtYmVyIGludGVyZmFjZSB3aGljaCBpcyBjb250cm9sbGFibGUgYnkgZHJhZ2dpbmcgb3IgdHlwaW5nLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cIm51bWJlclwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIG51bWJlciA9IG5ldyBOZXh1cy5OdW1iZXIoJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgbnVtYmVyID0gbmV3IE5leHVzLk51bWJlcignI3RhcmdldCcse1xuKiAgICdzaXplJzogWzYwLDMwXSxcbiogICAndmFsdWUnOiAwLFxuKiAgICdtaW4nOiAwLFxuKiAgICdtYXgnOiAyMDAwMCxcbiogICAnc3RlcCc6IDFcbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIGludGVyZmFjZSdzIHZhbHVlIGNoYW5nZXMuIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgdGhlIG51bWJlciB2YWx1ZSBvZiB0aGUgaW50ZXJmYWNlLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBudW1iZXIub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKlxuKi9cblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXIgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFs2MCwzMF0sXG4gICAgICAndmFsdWUnOiAwLFxuICAgICAgJ21pbic6IDAsXG4gICAgICAnbWF4JzogMjAwMDAsXG4gICAgICAnc3RlcCc6IDFcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLG9wdGlvbnMsZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5fdmFsdWUgPSBuZXcgU3RlcCh0aGlzLnNldHRpbmdzLm1pbix0aGlzLnNldHRpbmdzLm1heCx0aGlzLnNldHRpbmdzLnN0ZXAsdGhpcy5zZXR0aW5ncy52YWx1ZSk7XG5cbiAgICAvKlxuICAgIERlZmF1bHQ6IDIuIEhvdyBtYW55IGRlY2ltYWwgcGxhY2VzIHRvIGNsaXAgdGhlIG51bWJlcidzIHZpc3VhbCByZW5kZXJpbmcgdG8uIFRoaXMgZG9lcyBub3QgYWZmZWN0IG51bWJlcidzIGFjdHVhbCB2YWx1ZSBvdXRwdXQgLS0gZm9yIHRoYXQsIHNldCB0aGUgc3RlcCBwcm9wZXJ0eSB0byAuMDEsIC4xLCBvciAxLlxuICAgIEB0eXBlIHtudW1iZXJ9XG4gICAgQGV4YW1wbGUgbnVtYmVyLmRlY2ltYWxQbGFjZXMgPSAyO1xuICAgICovXG4gICAgdGhpcy5kZWNpbWFsUGxhY2VzID0gMjtcbiAgICB0aGlzLmFjdHVhbCA9IDA7XG5cbiAgICB0aGlzLm1heCA9IHRoaXMuX3ZhbHVlLm1heDtcblxuICAgIHRoaXMubWluID0gdGhpcy5fdmFsdWUubWluO1xuXG4gICAgdGhpcy5zdGVwID0gdGhpcy5fdmFsdWUuc3RlcDtcblxuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGJ1aWxkRnJhbWUoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICB0aGlzLmVsZW1lbnQudHlwZSA9ICd0ZXh0JztcblxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuY29sb3IgPSB0aGlzLmNvbG9ycy5kYXJrO1xuICAgICAgaWYgKHRoaXMuZWxlbWVudC52YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gcGFyc2VGbG9hdCh0aGlzLmVsZW1lbnQudmFsdWUpO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfVxuICAgIH0uYmluZCh0aGlzKSk7XG5cbiAgICB1dGlsLnNldElucHV0RmlsdGVyKHRoaXMuZWxlbWVudCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiAvXlxcZCpcXC4/XFxkKiQvLnRlc3QodmFsdWUpOyB9KTtcblxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLndoaWNoPT09MTMpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LmJsdXIoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZWxlbWVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfVxuICAgIH0uYmluZCh0aGlzKSwgdHJ1ZSk7XG5cbiAgICB0aGlzLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5fbWluRGltZW5zaW9uID0gTWF0aC5taW4odGhpcy53aWR0aCx0aGlzLmhlaWdodCk7XG5cbiAgICBsZXQgc3R5bGVzID0gJ3dpZHRoOiAnICsgdGhpcy53aWR0aCArICdweDsnO1xuICAgIHN0eWxlcyArPSAnaGVpZ2h0OiAnICsgdGhpcy5oZWlnaHQgKyAncHg7JztcbiAgICBzdHlsZXMgKz0gJ2JhY2tncm91bmQtY29sb3I6ICNlN2U3ZTc7JztcbiAgICBzdHlsZXMgKz0gJ2NvbG9yOiAjMzMzOyc7XG4gICAgc3R5bGVzICs9ICdmb250LWZhbWlseTogYXJpYWw7JztcbiAgICBzdHlsZXMgKz0gJ2ZvbnQtd2VpZ2h0OiA1MDA7JztcbiAgICBzdHlsZXMgKz0gJ2ZvbnQtc2l6ZTonICsgdGhpcy5fbWluRGltZW5zaW9uLzIgKyAncHg7JztcbiAgLy8gIHN0eWxlcyArPSAnaGlnaGxpZ2h0OiAjZDE4Oyc7XG4gICAgc3R5bGVzICs9ICdib3JkZXI6IG5vbmU7JztcbiAgICBzdHlsZXMgKz0gJ291dGxpbmU6IG5vbmU7JztcbiAgICBzdHlsZXMgKz0gJ3BhZGRpbmc6ICcrdGhpcy5fbWluRGltZW5zaW9uLzQrJ3B4ICcrdGhpcy5fbWluRGltZW5zaW9uLzQrJ3B4Oyc7XG4gICAgc3R5bGVzICs9ICdib3gtc2l6aW5nOiBib3JkZXItYm94Oyc7XG4gICAgc3R5bGVzICs9ICd1c2VyU2VsZWN0OiB0ZXh0Oyc7XG4gICAgc3R5bGVzICs9ICdtb3pVc2VyU2VsZWN0OiB0ZXh0Oyc7XG4gICAgc3R5bGVzICs9ICd3ZWJraXRVc2VyU2VsZWN0OiB0ZXh0Oyc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmNzc1RleHQgKz0gc3R5bGVzO1xuXG4gICAgLy8gdG8gYWRkIGV2ZW50dWFsbHlcbiAgICAvLyB2YXIgY3NzID0gJyMnK3RoaXMuZWxlbWVudElEKyc6OnNlbGVjdGlvbnsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgfSc7XG5cbiAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmNvbG9yID0gdGhpcy5jb2xvcnMuZGFyaztcbiAgfVxuXG4gIHJlbmRlcigpIHtcblxuICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IG1hdGgucHJ1bmUodGhpcy52YWx1ZSx0aGlzLmRlY2ltYWxQbGFjZXMpO1xuXG4gIH1cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmhhc01vdmVkID0gZmFsc2U7XG4gICAgdGhpcy5lbGVtZW50LnJlYWRPbmx5ID0gdHJ1ZTtcblx0ICB0aGlzLmFjdHVhbCA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5pbml0aWFsID0geyB5OiB0aGlzLm1vdXNlLnkgfTtcbiAgICB0aGlzLmNoYW5nZUZhY3RvciA9IG1hdGguaW52ZXJ0KCB0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoICk7XG4gIH1cblxuICBtb3ZlKCkge1xuICAgIHRoaXMuaGFzTW92ZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcblxuICAgICAgbGV0IG5ld3ZhbHVlID0gdGhpcy5hY3R1YWwgLSAodGhpcy5tb3VzZS55IC0gdGhpcy5pbml0aWFsLnkpICogKCBtYXRoLmNsaXAoIHRoaXMubWF4LXRoaXMubWluLCAwLCAxMDAwICkgLyAyMDAgKSAqIE1hdGgucG93KHRoaXMuY2hhbmdlRmFjdG9yLDIpO1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld3ZhbHVlO1xuXG4gIFx0XHR0aGlzLnJlbmRlcigpO1xuICAgICAgaWYgKHRoaXMuX3ZhbHVlLmNoYW5nZWQpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuICAgICAgfVxuXG4gIFx0fVxuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgICBpZiAoIXRoaXMuaGFzTW92ZWQpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5yZWFkT25seSA9IGZhbHNlO1xuICBcdFx0dGhpcy5lbGVtZW50LmZvY3VzKCk7XG4gIFx0XHR0aGlzLmVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgdGhpcy5lbGVtZW50LnZhbHVlLmxlbmd0aCk7XG4gIFx0XHR0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuYWNjZW50O1xuICBcdFx0dGhpcy5lbGVtZW50LnN0eWxlLmNvbG9yID0gdGhpcy5jb2xvcnMubGlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgQ29ubmVjdCB0aGlzIG51bWJlciBpbnRlcmZhY2UgdG8gYSBkaWFsIG9yIHNsaWRlclxuICBAcGFyYW0ge0ludGVyZmFjZX0gZWxlbWVudCBFbGVtZW50IHRvIGNvbm5lY3QgdG8uXG4gIEBleGFtcGxlIG51bWJlci5saW5rKHNsaWRlcilcbiAgKi9cbiAgbGluayhkZXN0aW5hdGlvbikge1xuICAgIHRoaXMubWluID0gZGVzdGluYXRpb24ubWluO1xuICAgIHRoaXMubWF4ID0gZGVzdGluYXRpb24ubWF4O1xuICAgIHRoaXMuc3RlcCA9IGRlc3RpbmF0aW9uLnN0ZXA7XG4gICAgZGVzdGluYXRpb24ub24oJ2NoYW5nZScsKHYpID0+IHtcbiAgICAgIHRoaXMucGFzc2l2ZVVwZGF0ZSh2KTtcbiAgICB9KTtcbiAgICB0aGlzLm9uKCdjaGFuZ2UnLCh2KSA9PiB7XG4gICAgICBkZXN0aW5hdGlvbi52YWx1ZSA9IHY7XG4gICAgfSk7XG4gICAgdGhpcy52YWx1ZSA9IGRlc3RpbmF0aW9uLnZhbHVlO1xuICAvKiAgcmV0dXJuIHtcbiAgICAgIGxpc3RlbmVyMTogbGlzdGVuZXIxLFxuICAgICAgbGlzdGVuZXIyOiBsaXN0ZW5lcjIsXG4gICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgIGxpc3RlbmVyMS5yZW1vdmUoKSAob3Igc2ltaWxhcilcbiAgICAgICAgbGlzdGVuZXIyLnJlbW92ZSgpIChvciBzaW1pbGFyKVxuICAgICAgfVxuICAgIH0gKi9cbiAgfVxuXG4gIHBhc3NpdmVVcGRhdGUodikge1xuICAgIHRoaXMuX3ZhbHVlLnVwZGF0ZSh2KTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFRoZSBpbnRlcmZhY2UncyBjdXJyZW50IHZhbHVlLiBJZiBzZXQgbWFudWFsbHksIHdpbGwgdXBkYXRlIHRoZSBpbnRlcmZhY2UgYW5kIHRyaWdnZXIgdGhlIG91dHB1dCBldmVudC5cbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgbnVtYmVyLnZhbHVlID0gMTA7XG4gICovXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUudmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICB0aGlzLl92YWx1ZS51cGRhdGUodik7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgTG93ZXIgbGltaXQgb2YgdGhlIG51bWJlcidzIG91dHB1dCByYW5nZVxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBudW1iZXIubWluID0gMTAwMDtcbiAgKi9cbiAgZ2V0IG1pbigpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubWluO1xuICB9XG4gIHNldCBtaW4odikge1xuICAgIHRoaXMuX3ZhbHVlLm1pbiA9IHY7XG4gIH1cblxuICAvKipcbiAgVXBwZXIgbGltaXQgb2YgdGhlIG51bWJlcidzIG91dHB1dCByYW5nZVxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBudW1iZXIubWF4ID0gMTAwMDtcbiAgKi9cbiAgZ2V0IG1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubWF4O1xuICB9XG4gIHNldCBtYXgodikge1xuICAgIHRoaXMuX3ZhbHVlLm1heCA9IHY7XG4gIH1cblxuICAvKipcbiAgVGhlIGluY3JlbWVudCB0aGF0IHRoZSBudW1iZXIncyB2YWx1ZSBjaGFuZ2VzIGJ5LlxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBudW1iZXIuc3RlcCA9IDU7XG4gICovXG4gIGdldCBzdGVwKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS5zdGVwO1xuICB9XG4gIHNldCBzdGVwKHYpIHtcbiAgICB0aGlzLl92YWx1ZS5zdGVwID0gdjtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9udW1iZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xuXG4vKipcbiogU2VsZWN0XG4qXG4qIEBkZXNjcmlwdGlvbiBEcm9wZG93biBtZW51XG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwic2VsZWN0XCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgc2VsZWN0ID0gbmV3IE5leHVzLlNlbGVjdCgnI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciBzZWxlY3QgPSBuZXcgTmV4dXMuU2VsZWN0KCcjdGFyZ2V0Jyx7XG4qICAgJ3NpemUnOiBbMTAwLDMwXSxcbiogICAnb3B0aW9ucyc6IFsnZGVmYXVsdCcsJ29wdGlvbnMnXVxuKiB9KVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgdGV4dCB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgb3B0aW9uLCBhcyB3ZWxsIGFzIHRoZSBudW1lcmljIGluZGV4IG9mIHRoZSBzZWxlY3Rpb24uXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIHNlbGVjdC5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlbGVjdCBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICAnc2l6ZSc6IFsxMDAsMzBdLFxuICAgICAgICdvcHRpb25zJzogWydkZWZhdWx0Jywnb3B0aW9ucyddXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSAtMTtcbiAgICB0aGlzLl92YWx1ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuc2V0dGluZ3Mub3B0aW9ucztcblxuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGJ1aWxkRnJhbWUoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmZvbnRTaXplID0gdGhpcy5oZWlnaHQvMisncHgnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5vdXRsaW5lID0gJ25vbmUnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oaWdobGlnaHQgPSAnbm9uZSc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy53aWR0aCsncHgnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmhlaWdodCsncHgnO1xuXG4gICAgdGhpcy5ib3VuZFJlbmRlciA9IHRoaXMucmVuZGVyLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5ib3VuZFJlbmRlcik7XG5cbiAgICB0aGlzLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuXG4gIH1cblxuICBhdHRhY2hMaXN0ZW5lcnMoKSB7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5kZWZpbmVPcHRpb25zKCk7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3JzLmRhcms7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJvcmRlciA9ICdzb2xpZCAwcHggJyt0aGlzLmNvbG9ycy5tZWRpdW1MaWdodDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcblxuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5lbGVtZW50Lm9wdGlvbnNbdGhpcy5lbGVtZW50LnNlbGVjdGVkSW5kZXhdLnRleHQ7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHRoaXMuZWxlbWVudC5zZWxlY3RlZEluZGV4O1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICB2YWx1ZTogdGhpcy5fdmFsdWUsXG4gICAgICBpbmRleDogdGhpcy5fc2VsZWN0ZWRJbmRleFxuICAgIH0pO1xuXG4gIH1cblxuICBjbGljaygpIHtcblxuICB9XG5cbiAgbW92ZSgpIHtcblxuICB9XG5cbiAgcmVsZWFzZSgpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGlzdCBvZiBvcHRpb25zLiBUaGlzIHJlbW92ZXMgYWxsIGV4aXN0aW5nIG9wdGlvbnMgYW5kIGNyZWF0ZXMgYSBuZXcgbGlzdCBvZiBvcHRpb25zLlxuICAgKiBAcGFyYW0gIHthcnJheX0gb3B0aW9ucyBOZXcgYXJyYXkgb2Ygb3B0aW9uc1xuICAgKi9cblxuICBkZWZpbmVPcHRpb25zKG9wdGlvbnMpIHtcblxuICAvKiAgZnVuY3Rpb24gcmVtb3ZlT3B0aW9ucyhzZWxlY3Rib3gpXG4gICAge1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgZm9yKGkgPSBzZWxlY3Rib3gub3B0aW9ucy5sZW5ndGggLSAxIDsgaSA+PSAwIDsgaS0tKVxuICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rib3gucmVtb3ZlKGkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vdXNpbmcgdGhlIGZ1bmN0aW9uOlxuICAgIHJlbW92ZU9wdGlvbnMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJteVNlbGVjdE9iamVjdFwiKSk7ICovXG5cblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBmb3IobGV0IGk9dGhpcy5lbGVtZW50Lm9wdGlvbnMubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlKGkpO1xuICAgIH1cblxuICAgIGZvcihsZXQgaT0wO2k8dGhpcy5fb3B0aW9ucy5sZW5ndGg7aSsrKSB7XG4gICAgICB0aGlzLmVsZW1lbnQub3B0aW9ucy5hZGQobmV3IE9wdGlvbih0aGlzLl9vcHRpb25zW2ldLCBpKSk7XG4gICAgfVxuXG4gIH1cblxuXG4gIC8qKlxuICBUaGUgdGV4dCBvZiB0aGUgb3B0aW9uIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBJZiBzZXQsIHdpbGwgdXBkYXRlIHRoZSBpbnRlcmZhY2UgYW5kIHRyaWdnZXIgdGhlIG91dHB1dCBldmVudC5cbiAgQHR5cGUge1N0cmluZ31cbiAgQGV4YW1wbGUgc2VsZWN0LnZhbHVlID0gXCJzYXd0b290aFwiO1xuICAqL1xuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIGZvcihsZXQgaT0wO2k8dGhpcy5lbGVtZW50Lm9wdGlvbnMubGVuZ3RoO2krKykge1xuICAgICAgaWYgKHYgPT09IHRoaXMuZWxlbWVudC5vcHRpb25zW2ldLnRleHQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgVGhlIG51bWVyaWMgaW5kZXggb2YgdGhlIG9wdGlvbiB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gSWYgc2V0LCB3aWxsIHVwZGF0ZSB0aGUgaW50ZXJmYWNlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIHNlbGVjdC5zZWxlY3RlZEluZGV4ID0gMjtcbiAgKi9cbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cbiAgc2V0IHNlbGVjdGVkSW5kZXgodikge1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSB2O1xuICAgIHRoaXMuZWxlbWVudC5zZWxlY3RlZEluZGV4ID0gdjtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgY3VzdG9tRGVzdHJveSgpIHtcbiAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5ib3VuZFJlbmRlcik7XG4gIH1cblxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9zZWxlY3QuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IFN0ZXAgPSByZXF1aXJlKCcuLi9tb2RlbHMvc3RlcCcpO1xuaW1wb3J0ICogYXMgSW50ZXJhY3Rpb24gZnJvbSAnLi4vdXRpbC9pbnRlcmFjdGlvbic7XG5cbi8qKlxuKiBEaWFsXG4qXG4qXG4qIEBkZXNjcmlwdGlvbiBEaWFsIHdpdGggcmFkaWFsIG9yIGxpbmVhciBpbnRlcmFjdGlvbi5cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJkaWFsXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgZGlhbCA9IG5ldyBOZXh1cy5EaWFsKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIGRpYWwgPSBuZXcgTmV4dXMuRGlhbCgnI3RhcmdldCcse1xuKiAgICdzaXplJzogWzc1LDc1XSxcbiogICAnaW50ZXJhY3Rpb24nOiAncmFkaWFsJywgLy8gXCJyYWRpYWxcIiwgXCJ2ZXJ0aWNhbFwiLCBvciBcImhvcml6b250YWxcIlxuKiAgICdtb2RlJzogJ3JlbGF0aXZlJywgLy8gXCJhYnNvbHV0ZVwiIG9yIFwicmVsYXRpdmVcIlxuKiAgICdtaW4nOiAwLFxuKiAgICdtYXgnOiAxLFxuKiAgICdzdGVwJzogMCxcbiogICAndmFsdWUnOiAwXG4qIH0pXG4qXG4qIEBvdXRwdXRcbiogY2hhbmdlXG4qIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyB2YWx1ZSBjaGFuZ2VzLiA8YnI+XG4qIFRoZSBldmVudCBkYXRhIGlzIHRoZSBudW1iZXIgdmFsdWUgb2YgdGhlIGludGVyZmFjZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogZGlhbC5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qIEB0dXRvcmlhbFxuKiBEaWFsXG4qIHlnR014cVxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlhbCBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsnbWluJywnbWF4JywndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzc1LDc1XSxcbiAgICAgICdpbnRlcmFjdGlvbic6ICdyYWRpYWwnLCAvLyByYWRpYWwsIHZlcnRpY2FsLCBob3Jpem9udGFsXG4gICAgICAnbW9kZSc6ICdyZWxhdGl2ZScsIC8vIGFic29sdXRlLCByZWxhdGl2ZVxuICAgICAgJ21pbic6IDAsXG4gICAgICAnbWF4JzogMSxcbiAgICAgICdzdGVwJzogMCxcbiAgICAgICd2YWx1ZSc6IDBcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLG9wdGlvbnMsZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5pbnRlcmFjdGlvbiA9IHRoaXMuc2V0dGluZ3MuaW50ZXJhY3Rpb247XG5cbiAgICB0aGlzLl92YWx1ZSA9IG5ldyBTdGVwKHRoaXMuc2V0dGluZ3MubWluLCB0aGlzLnNldHRpbmdzLm1heCwgdGhpcy5zZXR0aW5ncy5zdGVwLCB0aGlzLnNldHRpbmdzLnZhbHVlKTtcblxuICAgIHRoaXMucG9zaXRpb24gPSBuZXcgSW50ZXJhY3Rpb24uSGFuZGxlKHRoaXMuc2V0dGluZ3MubW9kZSx0aGlzLmludGVyYWN0aW9uLFswLHRoaXMud2lkdGhdLFt0aGlzLmhlaWdodCwwXSk7XG5cbiAgICB0aGlzLmluaXQoKTtcblxuICAgIHRoaXMudmFsdWUgPSB0aGlzLl92YWx1ZS52YWx1ZTtcblxuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuXG4gICAgdGhpcy5wcmV2aW91c0FuZ2xlID0gZmFsc2U7XG5cbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy52YWx1ZSk7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5iYWNrZ3JvdW5kID0gc3ZnLmNyZWF0ZSgnY2lyY2xlJyk7XG4gICAgdGhpcy5zY3JldyA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuICAgIHRoaXMuaGFuZGxlID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuICAgIHRoaXMuaGFuZGxlMiA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmhhbmRsZUZpbGwgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG4gICAgdGhpcy5oYW5kbGUyRmlsbCA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmhhbmRsZUxpbmUgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYWNrZ3JvdW5kKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oYW5kbGUpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhhbmRsZTIpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhhbmRsZUZpbGwpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhhbmRsZTJGaWxsKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oYW5kbGVMaW5lKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zY3Jldyk7XG5cbiAgfVxuXG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgIHRoaXMucG9zaXRpb24ucmVzaXplKFswLHRoaXMud2lkdGhdLFt0aGlzLmhlaWdodCwwXSk7XG5cbiAgICBsZXQgY2VudGVyID0ge1xuICAgICAgeDogdGhpcy53aWR0aC8yLFxuICAgICAgeTogdGhpcy5oZWlnaHQvMlxuICAgIH07XG5cbiAgICBsZXQgZGlhbWV0ZXIgPSBNYXRoLm1pbih0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtcblxuICAgIHRoaXMuYmFja2dyb3VuZC5zZXRBdHRyaWJ1dGUoJ2N4JywgY2VudGVyLngpO1xuICAgIHRoaXMuYmFja2dyb3VuZC5zZXRBdHRyaWJ1dGUoJ2N5JywgY2VudGVyLnkpO1xuICAgIHRoaXMuYmFja2dyb3VuZC5zZXRBdHRyaWJ1dGUoJ3InLCBkaWFtZXRlci8yLWRpYW1ldGVyLzQwKTtcblxuICAgIHRoaXMuc2NyZXcuc2V0QXR0cmlidXRlKCdjeCcsIGNlbnRlci54KTtcbiAgICB0aGlzLnNjcmV3LnNldEF0dHJpYnV0ZSgnY3knLCBjZW50ZXIueSk7XG4gICAgdGhpcy5zY3Jldy5zZXRBdHRyaWJ1dGUoJ3InLCBkaWFtZXRlci8xMik7XG5cbiAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgbGV0IGhhbmRsZVBvaW50cyA9IHtcbiAgICAgIHN0YXJ0OiBNYXRoLlBJKjEuNSxcbiAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHZhbHVlLDAsMC41LE1hdGguUEkqMS41LE1hdGguUEkqMC41KSAsIE1hdGguUEkqMC41LCBNYXRoLlBJKjEuNSApXG4gICAgfTtcbiAgICBsZXQgaGFuZGxlMlBvaW50cyA9IHtcbiAgICAgIHN0YXJ0OiBNYXRoLlBJKjIuNSxcbiAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHZhbHVlLDAuNSwxLE1hdGguUEkqMi41LE1hdGguUEkqMS41KSAsIE1hdGguUEkqMS41LCBNYXRoLlBJKjIuNSApXG4gICAgfTtcblxuICAgIGxldCBoYW5kbGVQYXRoID0gc3ZnLmFyYyhjZW50ZXIueCwgY2VudGVyLnksIGRpYW1ldGVyLzItZGlhbWV0ZXIvNDAsIGhhbmRsZVBvaW50cy5zdGFydCwgaGFuZGxlUG9pbnRzLmVuZCk7XG4gICAgbGV0IGhhbmRsZTJQYXRoID0gc3ZnLmFyYyhjZW50ZXIueCwgY2VudGVyLnksIGRpYW1ldGVyLzItZGlhbWV0ZXIvNDAsIGhhbmRsZTJQb2ludHMuc3RhcnQsIGhhbmRsZTJQb2ludHMuZW5kKTtcblxuICAgIHRoaXMuaGFuZGxlLnNldEF0dHJpYnV0ZSgnZCcsaGFuZGxlUGF0aCk7XG4gICAgdGhpcy5oYW5kbGUuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBkaWFtZXRlci8yMCk7XG4gICAgdGhpcy5oYW5kbGUuc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcblxuICAgIHRoaXMuaGFuZGxlMi5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZTJQYXRoKTtcbiAgICB0aGlzLmhhbmRsZTIuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBkaWFtZXRlci8yMCk7XG4gICAgdGhpcy5oYW5kbGUyLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cbiAgICBoYW5kbGVQYXRoICs9ICcgTCAnK2NlbnRlci54KycgJytjZW50ZXIueTtcblxuICAgIHRoaXMuaGFuZGxlRmlsbC5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZVBhdGgpO1xuICAgIHRoaXMuaGFuZGxlRmlsbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwtb3BhY2l0eScsICcwLjMnKTtcblxuICAgIGhhbmRsZTJQYXRoICs9ICcgTCAnK2NlbnRlci54KycgJytjZW50ZXIueTtcblxuICAgIHRoaXMuaGFuZGxlMkZpbGwuc2V0QXR0cmlidXRlKCdkJyxoYW5kbGUyUGF0aCk7XG4gICAgdGhpcy5oYW5kbGUyRmlsbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwtb3BhY2l0eScsICcwLjMnKTtcblxuICAgIGxldCBhcmNFbmRpbmdBO1xuICAgIGlmICh2YWx1ZSA8IDAuNSkge1xuICAgICAgYXJjRW5kaW5nQSA9IGhhbmRsZVBvaW50cy5lbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyY0VuZGluZ0EgPSBoYW5kbGUyUG9pbnRzLmVuZDtcbiAgICB9XG5cbiAgICBsZXQgYXJjRW5kaW5nWCA9IGNlbnRlci54ICsgTWF0aC5jb3MoYXJjRW5kaW5nQSkgKiAoZGlhbWV0ZXIvMik7XG4gICAgbGV0IGFyY0VuZGluZ1kgPSBjZW50ZXIueSArIE1hdGguc2luKGFyY0VuZGluZ0EpICogKGRpYW1ldGVyLzIpICogLTE7XG5cbiAgICB0aGlzLmhhbmRsZUxpbmUuc2V0QXR0cmlidXRlKCdkJywnTSAnK2NlbnRlci54KycgJytjZW50ZXIueSsnIEwgJythcmNFbmRpbmdYKycgJythcmNFbmRpbmdZKTtcbiAgICB0aGlzLmhhbmRsZUxpbmUuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBkaWFtZXRlci8yMCk7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuYmFja2dyb3VuZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5maWxsKTtcbiAgICB0aGlzLnNjcmV3LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgdGhpcy5oYW5kbGUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMuaGFuZGxlMi5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgdGhpcy5oYW5kbGVGaWxsLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgdGhpcy5oYW5kbGUyRmlsbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMuaGFuZGxlTGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG5cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuXG4gICAgbGV0IGNlbnRlciA9IHtcbiAgICAgIHg6IHRoaXMud2lkdGgvMixcbiAgICAgIHk6IHRoaXMuaGVpZ2h0LzJcbiAgICB9O1xuXG4gICAgbGV0IGRpYW1ldGVyID0gTWF0aC5taW4odGhpcy53aWR0aCx0aGlzLmhlaWdodCk7XG5cbiAgICBsZXQgaGFuZGxlUG9pbnRzID0ge1xuICAgICAgc3RhcnQ6IE1hdGguUEkqMS41LFxuICAgICAgZW5kOiBtYXRoLmNsaXAoIG1hdGguc2NhbGUodmFsdWUsMCwwLjUsTWF0aC5QSSoxLjUsTWF0aC5QSSowLjUpICwgTWF0aC5QSSowLjUsIE1hdGguUEkqMS41IClcbiAgICB9O1xuICAgIGxldCBoYW5kbGUyUG9pbnRzID0ge1xuICAgICAgc3RhcnQ6IE1hdGguUEkgKjIuNSxcbiAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHZhbHVlLDAuNSwxLE1hdGguUEkqMi41LE1hdGguUEkqMS41KSAsIE1hdGguUEkqMS41LCBNYXRoLlBJKjIuNSApXG4gICAgfTtcblxuICAgIGxldCBoYW5kbGVQYXRoID0gc3ZnLmFyYyhjZW50ZXIueCwgY2VudGVyLnksIGRpYW1ldGVyLzItZGlhbWV0ZXIvNDAsIGhhbmRsZVBvaW50cy5zdGFydCwgaGFuZGxlUG9pbnRzLmVuZCk7XG4gICAgbGV0IGhhbmRsZTJQYXRoID0gc3ZnLmFyYyhjZW50ZXIueCwgY2VudGVyLnksIGRpYW1ldGVyLzItZGlhbWV0ZXIvNDAsIGhhbmRsZTJQb2ludHMuc3RhcnQsIGhhbmRsZTJQb2ludHMuZW5kKTtcblxuICAgIHRoaXMuaGFuZGxlLnNldEF0dHJpYnV0ZSgnZCcsaGFuZGxlUGF0aCk7XG4gICAgdGhpcy5oYW5kbGUyLnNldEF0dHJpYnV0ZSgnZCcsaGFuZGxlMlBhdGgpO1xuXG5cbiAgICBoYW5kbGVQYXRoICs9ICcgTCAnK2NlbnRlci54KycgJytjZW50ZXIueTtcblxuICAgIHRoaXMuaGFuZGxlRmlsbC5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZVBhdGgpO1xuXG4gICAgaGFuZGxlMlBhdGggKz0gJyBMICcrY2VudGVyLngrJyAnK2NlbnRlci55O1xuXG4gICAgdGhpcy5oYW5kbGUyRmlsbC5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZTJQYXRoKTtcblxuICAgIGxldCBhcmNFbmRpbmdBO1xuICAgIGlmICh2YWx1ZSA8PSAwLjUpIHtcbiAgICAgIGFyY0VuZGluZ0EgPSBoYW5kbGVQb2ludHMuZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmNFbmRpbmdBID0gaGFuZGxlMlBvaW50cy5lbmQ7XG4gICAgfVxuXG4gICAgbGV0IGFyY0VuZGluZ1ggPSBjZW50ZXIueCArIE1hdGguY29zKGFyY0VuZGluZ0EpICogKGRpYW1ldGVyLzIpO1xuICAgIGxldCBhcmNFbmRpbmdZID0gY2VudGVyLnkgKyBNYXRoLnNpbihhcmNFbmRpbmdBKSAqIChkaWFtZXRlci8yKSAqIC0xO1xuXG4gICAgdGhpcy5oYW5kbGVMaW5lLnNldEF0dHJpYnV0ZSgnZCcsJ00gJytjZW50ZXIueCsnICcrY2VudGVyLnkrJyBMICcrYXJjRW5kaW5nWCsnICcrYXJjRW5kaW5nWSk7XG5cbiAgfVxuXG5cbiAgY2xpY2soKSB7XG4gICAgaWYgKHRoaXMubW9kZT09PSdyZWxhdGl2ZScpIHtcbiAgICAgIHRoaXMucHJldmlvdXNBbmdsZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnBvc2l0aW9uLmFuY2hvciA9IHRoaXMubW91c2U7XG4gICAgdGhpcy5wb3NpdGlvbi52YWx1ZSA9IHRoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5tb3ZlKCk7XG4gICB9XG5cbiAgbW92ZSgpIHtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG5cbiAgICAgIHRoaXMucG9zaXRpb24udXBkYXRlKHRoaXMubW91c2UpO1xuXG4gICAgICBsZXQgYW5nbGUgPSB0aGlzLnBvc2l0aW9uLnZhbHVlKk1hdGguUEkqMjtcblxuICAgICAgaWYgKGFuZ2xlIDwgMCApIHsgYW5nbGUgKz0gKE1hdGguUEkqMik7IH1cblxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JlbGF0aXZlJykge1xuICAgICAgICBpZiAodGhpcy5wcmV2aW91c0FuZ2xlICE9PSBmYWxzZSAmJiBNYXRoLmFicyh0aGlzLnByZXZpb3VzQW5nbGUgLSBhbmdsZSkgPiAyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNBbmdsZSA+IDMpIHtcbiAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5QSSoyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmdsZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8qIGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5wcmV2aW91c0FuZ2xlICE9PSBmYWxzZSAmJiBNYXRoLmFicyh0aGlzLnByZXZpb3VzQW5nbGUgLSBhbmdsZSkgPiAyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNBbmdsZSA+IDMpIHtcbiAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5QSSoyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmdsZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9ICovXG4gICAgICB0aGlzLnByZXZpb3VzQW5nbGUgPSBhbmdsZTtcblxuICAgICAgbGV0IHJlYWxWYWx1ZSA9IGFuZ2xlIC8gKE1hdGguUEkqMik7XG5cbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl92YWx1ZS51cGRhdGVOb3JtYWwoIHJlYWxWYWx1ZSApO1xuXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAncmVsYXRpdmUnKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSByZWFsVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLl92YWx1ZS52YWx1ZSk7XG5cbiAgICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgICB9XG4gIH1cblxuICByZWxlYXNlKCkge1xuICB9XG5cbiAgLypcbiAgRGlhbCdzIHZhbHVlLiBXaGVuIHNldCwgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGFkanVzdCB0byBmaXQgbWluL21heC9zdGVwIHNldHRpbmdzIG9mIHRoZSBpbnRlcmZhY2UuXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIGRpYWwudmFsdWUgPSAxMDtcblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5fdmFsdWUudXBkYXRlKHZhbHVlKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy52YWx1ZSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuKi9cblxuICAgIC8qKlxuICAgIERpYWwncyB2YWx1ZS4gV2hlbiBzZXQsIGl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBhZGp1c3QgdG8gZml0IG1pbi9tYXgvc3RlcCBzZXR0aW5ncyBvZiB0aGUgaW50ZXJmYWNlLlxuICAgIEB0eXBlIHtudW1iZXJ9XG4gICAgQGV4YW1wbGUgZGlhbC52YWx1ZSA9IDEwO1xuICAgICovXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgdmFsdWUodikge1xuICAgICAgdGhpcy5fdmFsdWUudXBkYXRlKHYpO1xuICAgICAgdGhpcy5wb3NpdGlvbi52YWx1ZSA9IHRoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQ7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5fdmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICBMb3dlciBsaW1pdCBvZiB0aGUgZGlhbCdzIG91dHB1dCByYW5nZVxuICAgIEB0eXBlIHtudW1iZXJ9XG4gICAgQGV4YW1wbGUgZGlhbC5taW4gPSAxMDAwO1xuICAgICovXG4gICAgZ2V0IG1pbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5taW47XG4gICAgfVxuICAgIHNldCBtaW4odikge1xuICAgICAgdGhpcy5fdmFsdWUubWluID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICBVcHBlciBsaW1pdCBvZiB0aGUgZGlhbCdzIG91dHB1dCByYW5nZVxuICAgIEB0eXBlIHtudW1iZXJ9XG4gICAgQGV4YW1wbGUgZGlhbC5tYXggPSAxMDAwO1xuICAgICovXG4gICAgZ2V0IG1heCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5tYXg7XG4gICAgfVxuICAgIHNldCBtYXgodikge1xuICAgICAgdGhpcy5fdmFsdWUubWF4ID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICBUaGUgaW5jcmVtZW50IHRoYXQgdGhlIGRpYWwncyB2YWx1ZSBjaGFuZ2VzIGJ5LlxuICAgIEB0eXBlIHtudW1iZXJ9XG4gICAgQGV4YW1wbGUgZGlhbC5zdGVwID0gNTtcbiAgICAqL1xuICAgIGdldCBzdGVwKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnN0ZXA7XG4gICAgfVxuICAgIHNldCBzdGVwKHYpIHtcbiAgICAgIHRoaXMuX3ZhbHVlLnN0ZXAgPSB2O1xuICAgIH1cblxuICAgIC8qKlxuICAgIEFic29sdXRlIG1vZGUgKGRpYWwncyB2YWx1ZSBqdW1wcyB0byBtb3VzZSBjbGljayBwb3NpdGlvbikgb3IgcmVsYXRpdmUgbW9kZSAobW91c2UgZHJhZyBjaGFuZ2VzIHZhbHVlIHJlbGF0aXZlIHRvIGl0cyBjdXJyZW50IHBvc2l0aW9uKS4gRGVmYXVsdDogXCJyZWxhdGl2ZVwiLlxuICAgIEB0eXBlIHtzdHJpbmd9XG4gICAgQGV4YW1wbGUgZGlhbC5tb2RlID0gXCJyZWxhdGl2ZVwiO1xuICAgICovXG4gICAgZ2V0IG1vZGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbi5tb2RlO1xuICAgIH1cbiAgICBzZXQgbW9kZSh2KSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLm1vZGUgPSB2O1xuICAgIH1cblxuXG4gIC8qKlxuICBOb3JtYWxpemVkIHZhbHVlIG9mIHRoZSBkaWFsLlxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBkaWFsLm5vcm1hbGl6ZWQgPSAwLjU7XG4gICovXG4gIGdldCBub3JtYWxpemVkKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICB9XG5cbiAgc2V0IG5vcm1hbGl6ZWQodikge1xuICAgIHRoaXMuX3ZhbHVlLnVwZGF0ZU5vcm1hbCh2KTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy52YWx1ZSk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvZGlhbC5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcbmxldCBCdXR0b25UZW1wbGF0ZSA9IHJlcXVpcmUoJy4uL2NvbXBvbmVudHMvYnV0dG9udGVtcGxhdGUnKTtcbmxldCB0b3VjaCA9IHJlcXVpcmUoJy4uL3V0aWwvdG91Y2gnKTtcblxuY2xhc3MgUGlhbm9LZXkgZXh0ZW5kcyBCdXR0b25UZW1wbGF0ZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnLCdub3RlJywnY29sb3InXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzgwLDgwXSxcbiAgICAgICd0YXJnZXQnOiBmYWxzZSxcbiAgICAgICdtb2RlJzogJ2J1dHRvbicsXG4gICAgICAndmFsdWUnOiAwXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMubm90ZSA9IHRoaXMuc2V0dGluZ3Mubm90ZTtcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5zZXR0aW5ncy5jb2xvcjtcblxuICAgIHRoaXMuY29sb3JzID0ge1xuICAgICAgJ3cnOiAnI2ZmZicsXG4gICAgICAnYic6ICcjNjY2JyxcbiAgICB9O1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBzdmcuY3JlYXRlKCdzdmcnKTtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy53aWR0aCk7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmhlaWdodCk7XG4gICAgdGhpcy5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5wYWQgPSBzdmcuY3JlYXRlKCdyZWN0Jyk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wYWQpO1xuXG4gICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldCA9IHRoaXMucGFkO1xuXG4gICAgLyogZXZlbnRzICovXG5cbiAgICBpZiAoIXRvdWNoLmV4aXN0cykge1xuXG4gICAgICB0aGlzLmNsaWNrID0gKCkgPT4ge1xuICAgICAgLy8gIGNvbnNvbGUubG9nKCdjbGljaycpO1xuICAgICAgICB0aGlzLnBpYW5vLmludGVyYWN0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5waWFuby5wYWludGJydXNoID0gIXRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuZG93bih0aGlzLnBpYW5vLnBhaW50YnJ1c2gpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5wYWQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5waWFuby5pbnRlcmFjdGluZykge1xuICAgICAgLy8gICAgY29uc29sZS5sb2coJ21vdXNlb3ZlcicpO1xuICAgICAgICAgIHRoaXMuZG93bih0aGlzLnBpYW5vLnBhaW50YnJ1c2gpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuXG4gICAgICB0aGlzLm1vdmUgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBpYW5vLmludGVyYWN0aW5nKSB7XG4gICAgICAgIC8vICBjb25zb2xlLmxvZygnbW92ZScpO1xuICAgICAgICAgIHRoaXMuYmVuZCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG5cbiAgICAgIHRoaXMucmVsZWFzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5waWFuby5pbnRlcmFjdGluZyA9IGZhbHNlO1xuICAgICAgLy8gIGNvbnNvbGUubG9nKCdyZWxlYXNlJyk7XG4gICAgICAvLyAgdGhpcy51cCgpO1xuICAgICAgfTtcbiAgICAgIHRoaXMucGFkLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBpYW5vLmludGVyYWN0aW5nKSB7XG4gICAgICAgIC8vICBjb25zb2xlLmxvZygnbW91c2V1cCcpO1xuICAgICAgICAgIHRoaXMudXAoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnBhZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGlhbm8uaW50ZXJhY3RpbmcpIHtcbiAgICAgICAgLy8gIGNvbnNvbGUubG9nKCdtb3VzZW91dCcpO1xuICAgICAgICAgIHRoaXMudXAoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9XG5cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICAgICAgLy9sZXQgcmFkaXVzID0gTWF0aC5taW4odGhpcy53aWR0aCx0aGlzLmhlaWdodCkgLyA1O1xuICAgICAgICBsZXQgcmFkaXVzID0gMDtcblxuICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3gnLDAuNSk7XG4gICAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgneScsMC41KTtcbiAgICAgICAgaWYgKHRoaXMud2lkdGggPiAyKSB7XG4gICAgICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMud2lkdGggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgdGhpcy53aWR0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ID4gMikge1xuICAgICAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5oZWlnaHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5oZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgncngnLCByYWRpdXMpO1xuICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3J5JywgcmFkaXVzKTtcblxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnNbdGhpcy5jb2xvcl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIH1cbiAgfVxuXG59XG5cbi8qKlxuKiBQaWFub1xuKlxuKiBAZGVzY3JpcHRpb24gUGlhbm8ga2V5Ym9hcmQgaW50ZXJmYWNlXG4qXG4qIEBkZW1vIDxkaXYgbmV4dXMtdWk9XCJwaWFub1wiPjwvZGl2PlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgcGlhbm8gPSBuZXcgTmV4dXMuUGlhbm8oJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgcGlhbm8gPSBuZXcgTmV4dXMuUGlhbm8oJyN0YXJnZXQnLHtcbiogICAgICdzaXplJzogWzUwMCwxMjVdLFxuKiAgICAgJ21vZGUnOiAnYnV0dG9uJywgIC8vICdidXR0b24nLCAndG9nZ2xlJywgb3IgJ2ltcHVsc2UnXG4qICAgICAnbG93Tm90ZSc6IDI0LFxuKiAgICAgJ2hpZ2hOb3RlJzogNjBcbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgYSBuZXcga2V5IGlzIHByZXNzZWQgb3IgcmVsZWFzZWQgPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyBhbiBvYmplY3QgY29udGFpbmluZyA8aT5ub3RlPC9pPiBhbmQgPGk+c3RhdGU8L2k+IHByb3BlcnRpZXMuXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIHBpYW5vLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiogICBjb25zb2xlLmxvZyh2KTtcbiogfSlcbipcbiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBpYW5vIGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIGxldCBvcHRpb25zID0gWyd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgJ3NpemUnOiBbNTAwLDEyNV0sXG4gICAgICAnbG93Tm90ZSc6IDI0LFxuICAgICAgJ2hpZ2hOb3RlJzogNjAsXG4gICAgICAnbW9kZSc6ICdidXR0b24nXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMua2V5UGF0dGVybiA9IFsndycsJ2InLCd3JywnYicsJ3cnLCd3JywnYicsJ3cnLCdiJywndycsJ2InLCd3J107XG5cbiAgICB0aGlzLnBhaW50YnJ1c2ggPSBmYWxzZTtcblxuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIHRoaXMucmFuZ2UgPSB7XG4gICAgICBsb3c6IHRoaXMuc2V0dGluZ3MubG93Tm90ZSxcbiAgICAgIGhpZ2g6IHRoaXMuc2V0dGluZ3MuaGlnaE5vdGVcbiAgICB9O1xuXG4gICAgdGhpcy5yYW5nZS5zaXplID0gdGhpcy5yYW5nZS5oaWdoIC0gdGhpcy5yYW5nZS5sb3cgKyAxO1xuXG4gICAgdGhpcy5rZXlzID0gW107XG5cbiAgICB0aGlzLnRvZ2dsZVRvID0gZmFsc2U7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJvcmRlclJhZGl1cyA9ICcwcHgnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICB0aGlzLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmtleXMgPSBbXTtcblxuICAgIGZvciAobGV0IGk9MDtpPHRoaXMucmFuZ2Uuc2l6ZTtpKyspIHtcblxuICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGxldCBzY2FsZUluZGV4ID0gKGkrdGhpcy5yYW5nZS5sb3cpICUgdGhpcy5rZXlQYXR0ZXJuLmxlbmd0aDtcblxuICAgICAgbGV0IGtleSA9IG5ldyBQaWFub0tleShjb250YWluZXIsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IHRydWUsXG4gICAgICAgICAgbm90ZTogaSt0aGlzLnJhbmdlLmxvdyxcbiAgICAgICAgICBjb2xvcjogdGhpcy5rZXlQYXR0ZXJuW3NjYWxlSW5kZXhdLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZVxuICAgICAgICB9LCB0aGlzLmtleUNoYW5nZS5iaW5kKHRoaXMsaSt0aGlzLnJhbmdlLmxvdykpO1xuXG4gICAgICBrZXkucGlhbm8gPSB0aGlzO1xuXG4gICAgICBpZiAodG91Y2guZXhpc3RzKSB7XG4gICAgICAgIGtleS5wYWQuaW5kZXggPSBpO1xuICAgICAgICBrZXkucHJlQ2xpY2sgPSBrZXkucHJlTW92ZSA9IGtleS5wcmVSZWxlYXNlID0gKCkgPT4ge307XG4gICAgICAgIGtleS5jbGljayA9IGtleS5tb3ZlID0ga2V5LnJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICAgICAga2V5LnByZVRvdWNoID0ga2V5LnByZVRvdWNoTW92ZSA9IGtleS5wcmVUb3VjaFJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICAgICAga2V5LnRvdWNoID0ga2V5LnRvdWNoTW92ZSA9IGtleS50b3VjaFJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5rZXlzLnB1c2goa2V5KTtcbiAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgfVxuICAgIGlmICh0b3VjaC5leGlzdHMpIHtcbiAgICAgIHRoaXMuYWRkVG91Y2hMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICBsZXQga2V5WCA9IDA7XG5cbiAgICBsZXQga2V5UG9zaXRpb25zID0gW107XG5cbiAgICBmb3IgKGxldCBpPTA7aTx0aGlzLnJhbmdlLnNpemU7aSsrKSB7XG5cbiAgICAgIGtleVBvc2l0aW9ucy5wdXNoKGtleVgpO1xuXG4gICAgICBsZXQgc2NhbGVJbmRleCA9IChpK3RoaXMucmFuZ2UubG93KSAlIHRoaXMua2V5UGF0dGVybi5sZW5ndGg7XG4gICAgICBsZXQgbmV4dFNjYWxlSW5kZXggPSAoaSsxK3RoaXMucmFuZ2UubG93KSAlIHRoaXMua2V5UGF0dGVybi5sZW5ndGg7XG4gICAgICBpZiAoaSsxK3RoaXMucmFuZ2UubG93ID49IHRoaXMucmFuZ2UuaGlnaCkge1xuICAgICAgICBrZXlYICs9IDE7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMua2V5UGF0dGVybltzY2FsZUluZGV4XSA9PT0gJ3cnICYmIHRoaXMua2V5UGF0dGVybltuZXh0U2NhbGVJbmRleF0gPT09ICd3Jykge1xuICAgICAgICBrZXlYICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlYICs9IDAuNTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGtleXNXaWRlID0ga2V5WDtcblxuXG4gIC8vICBsZXQgcGFkZGluZyA9IHRoaXMud2lkdGggLyAxMjA7XG4gICAgbGV0IHBhZGRpbmcgPSAxO1xuICAgIGxldCBidXR0b25XaWR0aCA9ICh0aGlzLndpZHRoLXBhZGRpbmcqMikgLyBrZXlzV2lkZTtcbiAgICBsZXQgYnV0dG9uSGVpZ2h0ID0gKHRoaXMuaGVpZ2h0LXBhZGRpbmcqMikgLyAyO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5rZXlzLmxlbmd0aDtpKyspIHtcblxuICAgICAgbGV0IGNvbnRhaW5lciA9IHRoaXMua2V5c1tpXS5wYXJlbnQ7XG4gICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAoa2V5UG9zaXRpb25zW2ldKmJ1dHRvbldpZHRoK3BhZGRpbmcpICsgJ3B4JztcbiAgICAgIGlmICh0aGlzLmtleXNbaV0uY29sb3IgPT09ICd3Jykge1xuICAgICAgICBjb250YWluZXIuc3R5bGUudG9wID0gKHBhZGRpbmcpICsgJ3B4JztcbiAgICAgICAgdGhpcy5rZXlzW2ldLnJlc2l6ZShidXR0b25XaWR0aCwgYnV0dG9uSGVpZ2h0KjIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IDE7XG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSBwYWRkaW5nKydweCc7XG4gICAgICAgIHRoaXMua2V5c1tpXS5yZXNpemUoYnV0dG9uV2lkdGgsIGJ1dHRvbkhlaWdodCoxLjEpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcblxuICAgIC8vIFBpYW5vIGtleXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIHN0cm9rZSBib3JkZXJcbiAgICAvLyBUaGV5IGhhdmUgc3BhY2UgYmV0d2VlbiB0aGVtLCB3aGljaCBzaG93cyB0aGUgUGlhbm8gYmcgY29sb3JcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQ7XG5cbiAgICBmb3IgKGxldCBpPTA7aTx0aGlzLmtleXMubGVuZ3RoO2krKykge1xuICAgICAgdGhpcy5rZXlzW2ldLmNvbG9ycyA9IHtcbiAgICAgICAgJ3cnOiB0aGlzLmNvbG9ycy5saWdodCxcbiAgICAgICAgJ2InOiB0aGlzLmNvbG9ycy5kYXJrLFxuICAgICAgICAnYWNjZW50JzogdGhpcy5jb2xvcnMuYWNjZW50LFxuICAgICAgICAnYm9yZGVyJzogdGhpcy5jb2xvcnMubWVkaXVtTGlnaHRcbiAgICAgIH07XG4gICAgICB0aGlzLmtleXNbaV0uY29sb3JJbnRlcmZhY2UoKTtcbiAgICAgIHRoaXMua2V5c1tpXS5yZW5kZXIoKTtcbiAgICB9XG5cblxuICB9XG5cbiAga2V5Q2hhbmdlKG5vdGUsb24pIHtcbiAgICAvLyBlbWl0IGRhdGEgZm9yIGFueSBrZXkgdHVybmluZyBvbi9vZmZcbiAgICAvLyBcIm5vdGVcIiBpcyB0aGUgbm90ZSB2YWx1ZVxuICAgIC8vIFwib25cIiBpcyBhIGJvb2xlYW4gd2hldGhlciBpdCBpcyBvbiBvciBvZmZcbiAgICAvLyBpbiBhZnRlcnRvdWNoIG1vZGUsIFwib246IGlzIGFuIG9iamVjdCB3aXRoIHN0YXRlL3gveSBwcm9wZXJ0aWVzXG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICBub3RlOiBub3RlXG4gICAgfTtcbiAgICBpZiAodHlwZW9mIG9uID09PSAnb2JqZWN0Jykge1xuICAgICAgZGF0YS5zdGF0ZSA9IG9uLnN0YXRlO1xuICAgIC8vICBkYXRhLnggPSBvbi54XG4gICAgLy8gIGRhdGEueSA9IG9uLnlcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YS5zdGF0ZSA9IG9uO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsZGF0YSk7XG4gIH1cblxuICAvKiBkcmFnKG5vdGUsb24pIHtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgbm90ZTogbm90ZSxcbiAgICAgIHN0YXRlOiBvblxuICAgIH0pO1xuICB9ICovXG5cbiAgcmVuZGVyKCkge1xuICAgIC8vIGxvb3AgdGhyb3VnaCBhbmQgcmVuZGVyIHRoZSBrZXlzP1xuICB9XG5cblxuICBhZGRUb3VjaExpc3RlbmVycygpIHtcblxuICAgIHRoaXMucHJlQ2xpY2sgPSB0aGlzLnByZU1vdmUgPSB0aGlzLnByZVJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLmNsaWNrID0gdGhpcy5tb3ZlID0gdGhpcy5yZWxlYXNlID0gKCkgPT4ge307XG4gICAgdGhpcy5wcmVUb3VjaCA9IHRoaXMucHJlVG91Y2hNb3ZlID0gdGhpcy5wcmVUb3VjaFJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLnRvdWNoID0gdGhpcy50b3VjaE1vdmUgPSB0aGlzLnRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuXG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IGZhbHNlO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCAoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ3RvdWNoc3RhcnQnKTtcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChlLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WCxlLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBsZXQga2V5ID0gdGhpcy5rZXlzW2VsZW1lbnQuaW5kZXhdO1xuICAgICAgdGhpcy5wYWludGJydXNoID0gIWtleS5zdGF0ZTtcbiAgICAgIGtleS5kb3duKHRoaXMucGFpbnRicnVzaCk7XG4gICAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gZWxlbWVudC5pbmRleDtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgKGUpID0+IHtcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChlLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WCxlLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICBsZXQga2V5ID0gdGhpcy5rZXlzW2VsZW1lbnQuaW5kZXhdO1xuICAgICAgaWYgKGVsZW1lbnQuaW5kZXghPT10aGlzLmN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgbGV0IHBhc3RLZXkgPSB0aGlzLmtleXNbdGhpcy5jdXJyZW50RWxlbWVudF07XG4gICAgICAgICAgcGFzdEtleS51cCgpO1xuICAgICAgICB9XG4gICAgICAgIGtleS5kb3duKHRoaXMucGFpbnRicnVzaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXkuYmVuZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQuaW5kZXg7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgKGUpID0+IHtcbiAgICAgIC8vIG5vIHRvdWNoZXMgdG8gY2FsY3VsYXRlIGJlY2F1c2Ugbm9uZSByZW1haW5pbmdcbiAgICAgIGxldCBrZXkgPSB0aGlzLmtleXNbdGhpcy5jdXJyZW50RWxlbWVudF07XG4gICAgICBrZXkudXAoKTtcbiAgICAgIHRoaXMuaW50ZXJhY3RpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICBEZWZpbmUgdGhlIHBpdGNoIHJhbmdlIChsb3dlc3QgYW5kIGhpZ2hlc3Qgbm90ZSkgb2YgdGhlIHBpYW5vIGtleWJvYXJkLlxuICBAcGFyYW0gbG93IHtudW1iZXJ9IE1JREkgbm90ZSB2YWx1ZSBvZiB0aGUgbG93ZXN0IG5vdGUgb24gdGhlIGtleWJvYXJkXG4gIEBwYXJhbSBoaWdoIHtudW1iZXJ9IE1JREkgbm90ZSB2YWx1ZSBvZiB0aGUgaGlnaGVzdCBub3RlIG9uIHRoZSBrZXlib2FyZFxuICAqL1xuICBzZXRSYW5nZShsb3csaGlnaCkge1xuICAgIHRoaXMucmFuZ2UubG93ID0gbG93O1xuICAgIHRoaXMucmFuZ2UuaGlnaCA9IGhpZ2g7XG4gICAgdGhpcy5lbXB0eSgpO1xuICAgIHRoaXMuYnVpbGRJbnRlcmZhY2UoKTtcbiAgfVxuXG4gIC8qKlxuICBUdXJuIGEga2V5IG9uIG9yIG9mZiB1c2luZyBpdHMgTUlESSBub3RlIHZhbHVlO1xuICBAcGFyYW0gbm90ZSB7bnVtYmVyfSBNSURJIG5vdGUgdmFsdWUgb2YgdGhlIGtleSB0byBjaGFuZ2VcbiAgQHBhcmFtIG9uIHtib29sZWFufSBXaGV0aGVyIHRoZSBub3RlIHNob3VsZCB0dXJuIG9uIG9yIG9mZlxuICAqL1xuICB0b2dnbGVLZXkobm90ZSwgb24pIHtcbiAgICB0aGlzLmtleXNbbm90ZS10aGlzLnJhbmdlLmxvd10uZmxpcChvbik7XG4gIH1cblxuICAvKipcbiAgVHVybiBhIGtleSBvbiBvciBvZmYgdXNpbmcgaXRzIGtleSBpbmRleCBvbiB0aGUgcGlhbm8gaW50ZXJmYWNlLlxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gSW5kZXggb2YgdGhlIGtleSB0byBjaGFuZ2VcbiAgQHBhcmFtIG9uIHtib29sZWFufSBXaGV0aGVyIHRoZSBub3RlIHNob3VsZCB0dXJuIG9uIG9yIG9mZlxuICAqL1xuICB0b2dnbGVJbmRleChpbmRleCwgb24pIHtcbiAgICB0aGlzLmtleXNbaW5kZXhdLmZsaXAob24pO1xuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3BpYW5vLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5sZXQgQnV0dG9uVGVtcGxhdGUgPSByZXF1aXJlKCcuLi9jb21wb25lbnRzL2J1dHRvbnRlbXBsYXRlJyk7XG5sZXQgTWF0cml4TW9kZWwgPSByZXF1aXJlKCcuLi9tb2RlbHMvbWF0cml4Jyk7XG5sZXQgQ291bnRlck1vZGVsID0gcmVxdWlyZSgnLi4vbW9kZWxzL2NvdW50ZXInKTtcbmxldCB0b3VjaCA9IHJlcXVpcmUoJy4uL3V0aWwvdG91Y2gnKTtcblxuY2xhc3MgTWF0cml4Q2VsbCBleHRlbmRzIEJ1dHRvblRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICBzaXplOiBbODAsIDgwXSxcbiAgICAgIHRhcmdldDogZmFsc2UsXG4gICAgICBtb2RlOiAndG9nZ2xlJyxcbiAgICAgIHZhbHVlOiAwLFxuICAgICAgcGFkZGluZ1JvdzogMixcbiAgICAgIHBhZGRpbmdDb2x1bW46IDJcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLCBvcHRpb25zLCBkZWZhdWx0cyk7XG5cbiAgICB0aGlzLmluZGV4ID0gdGhpcy5zZXR0aW5ncy5pbmRleDtcbiAgICB0aGlzLnJvdyA9IHRoaXMuc2V0dGluZ3Mucm93O1xuICAgIHRoaXMuY29sdW1uID0gdGhpcy5zZXR0aW5ncy5jb2x1bW47XG5cbiAgICB0aGlzLm1hdHJpeCA9IHRoaXMuc2V0dGluZ3MubWF0cml4O1xuXG4gICAgdGhpcy5wYWRkaW5nUm93ID0gdGhpcy5zZXR0aW5ncy5wYWRkaW5nUm93IHx8IGRlZmF1bHRzLnBhZGRpbmdSb3c7XG4gICAgdGhpcy5wYWRkaW5nQ29sdW1uID0gdGhpcy5zZXR0aW5ncy5wYWRkaW5nQ29sdW1uIHx8IGRlZmF1bHRzLnBhZGRpbmdDb2x1bW47XG5cbiAgICB0aGlzLmludGVyYWN0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5wYWludGJydXNoID0gZmFsc2U7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBzdmcuY3JlYXRlKCdzdmcnKTtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMud2lkdGgpO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0KTtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gJzBweCc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSAnMHB4JztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHRoaXMucGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcbiAgICB0aGlzLnBhZCA9IHN2Zy5jcmVhdGUoJ3JlY3QnKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wYWQpO1xuXG4gICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldCA9IHRoaXMucGFkO1xuXG4gICAgLyogZXZlbnRzICovXG5cbiAgICBpZiAoIXRvdWNoLmV4aXN0cykge1xuICAgICAgdGhpcy5jbGljayA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5tYXRyaXguaW50ZXJhY3RpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLm1hdHJpeC5wYWludGJydXNoID0gIXRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuZG93bih0aGlzLm1hdHJpeC5wYWludGJydXNoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnBhZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1hdHJpeC5pbnRlcmFjdGluZykge1xuICAgICAgICAgIHRoaXMuZG93bih0aGlzLm1hdHJpeC5wYWludGJydXNoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubW92ZSA9ICgpID0+IHt9O1xuICAgICAgdGhpcy5wYWQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1hdHJpeC5pbnRlcmFjdGluZykge1xuICAgICAgICAgIGlmICghdGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gZG9tLmZpbmRQb3NpdGlvbih0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZU1vdXNlKGUsIHRoaXMub2Zmc2V0KTtcbiAgICAgICAgICB0aGlzLmJlbmQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5tYXRyaXguaW50ZXJhY3RpbmcgPSBmYWxzZTtcbiAgICAgIH07XG4gICAgICB0aGlzLnBhZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tYXRyaXguaW50ZXJhY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLnVwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5wYWQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1hdHJpeC5pbnRlcmFjdGluZykge1xuICAgICAgICAgIHRoaXMudXAoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3gnLCB0aGlzLnBhZGRpbmdDb2x1bW4gLyAyKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3knLCB0aGlzLnBhZGRpbmdSb3cgLyAyKTtcbiAgICBpZiAodGhpcy53aWR0aCA+IDIpIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB0aGlzLndpZHRoIC0gdGhpcy5wYWRkaW5nQ29sdW1uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMud2lkdGgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWlnaHQgPiAyKSB7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0IC0gdGhpcy5wYWRkaW5nUm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCB0aGlzLmhlaWdodCk7XG4gICAgfVxuICAgIC8vdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCB0aGlzLmhlaWdodCAtIDIpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMubWF0cml4LmNvbG9ycy5maWxsKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMubWF0cml4LmNvbG9ycy5maWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5tYXRyaXguY29sb3JzLmFjY2VudCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU2VxdWVuY2VyXG4gKlxuICogQGRlc2NyaXB0aW9uIEdyaWQgb2YgYnV0dG9ucyB3aXRoIGJ1aWx0LWluIHN0ZXAgc2VxdWVuY2VyLlxuICpcbiAqIEBkZW1vIDxkaXYgbmV4dXMtdWk9XCJzZXF1ZW5jZXJcIiBzdHlsZT1cIndpZHRoOjQwMHB4O2hlaWdodDoyMDBweDtcIj48L2Rpdj5cbiAqXG4gKiBAZXhhbXBsZVxuICogdmFyIHNlcXVlbmNlciA9IG5ldyBOZXh1cy5TZXF1ZW5jZXIoJyN0YXJnZXQnKVxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgc2VxdWVuY2VyID0gbmV3IE5leHVzLlNlcXVlbmNlcignI3RhcmdldCcse1xuICogICdzaXplJzogWzQwMCwyMDBdLFxuICogICdtb2RlJzogJ3RvZ2dsZScsXG4gKiAgJ3Jvd3MnOiA1LFxuICogICdjb2x1bW5zJzogMTBcbiAqfSlcbiAqXG4gKiBAb3V0cHV0XG4gKiBjaGFuZ2VcbiAqIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyBtYXRyaXggY2hhbmdlcy4gPGJyPlxuICogVGhlIGV2ZW50IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgPGk+cm93PC9pPiAobnVtYmVyKSwgPGk+Y29sdW1uPC9pPiAobnVtYmVyKSwgYW5kIDxpPnN0YXRlPC9pPiAoYm9vbGVhbikgcHJvcGVydGllcy5cbiAqXG4gKiBAb3V0cHV0ZXhhbXBsZVxuICogc2VxdWVuY2VyLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiAqICAgY29uc29sZS5sb2codik7XG4gKiB9KVxuICpcbiAqIEBvdXRwdXRcbiAqIHN0ZXBcbiAqIEZpcmVzIGFueSB0aW1lIHRoZSBzZXF1ZW5jZXIgc3RlcHMgdG8gdGhlIG5leHQgY29sdW1uLCBpbiBzZXF1ZWNlIG1vZGUuIDxicj5cbiAqIFRoZSBldmVudCBkYXRhIGlzIGFuIDxpPmFycmF5PC9pPiBjb250YWluaW5nIGFsbCB2YWx1ZXMgaW4gdGhlIGNvbHVtbiwgPGk+Ym90dG9tIHJvdyBmaXJzdDwvaT4uXG4gKlxuICogQG91dHB1dGV4YW1wbGVcbiAqIHNlcXVlbmNlci5vbignc3RlcCcsZnVuY3Rpb24odikge1xuICogICBjb25zb2xlLmxvZyh2KTtcbiAqIH0pXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VxdWVuY2VyIGV4dGVuZHMgSW50ZXJmYWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICBzaXplOiBbNDAwLCAyMDBdLFxuICAgICAgbW9kZTogJ3RvZ2dsZScsXG4gICAgICByb3dzOiA1LFxuICAgICAgY29sdW1uczogMTBcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLCBvcHRpb25zLCBkZWZhdWx0cyk7XG5cbiAgICB0aGlzLmFjdGl2ZSA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQnV0dG9uIGludGVyYWN0aW9uIG1vZGU6IHNlZSBCdXR0b25cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqIEBleGFtcGxlIGJ1dHRvbi5tb2RlID0gJ3RvZ2dsZSc7XG4gICAgICovXG4gICAgdGhpcy5tb2RlID0gdGhpcy5zZXR0aW5ncy5tb2RlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGludGVydmFsIG9iamVjdCB3aGljaCBjb250cm9scyB0aW1pbmcgYW5kIHNlcXVlbmNlIHNjaGVkdWxpbmcuXG4gICAgICogQHR5cGUge2ludGVydmFsfVxuICAgICAqL1xuICAgIHRoaXMuaW50ZXJ2YWwgPSBuZXcgTmV4dXMuSW50ZXJ2YWwoMjAwLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG4gICAgLyoqXG4gICAgICogQSBNYXRyaXggbW9kZWwgY29udGFpbmluZyBtZXRob2RzIGZvciBtYW5pcHVsYXRpbmcgdGhlIHNlcXVlbmNlcidzIGFycmF5IG9mIHZhbHVlcy4gVG8gbGVhcm4gaG93IHRvIG1hbmlwdWxhdGUgdGhlIG1hdHJpeCwgcmVhZCBhYm91dCB0aGUgbWF0cml4IG1vZGVsLlxuICAgICAqIEB0eXBlIHttYXRyaXh9XG4gICAgICovXG4gICAgdGhpcy5tYXRyaXggPSBuZXcgTWF0cml4TW9kZWwodGhpcy5zZXR0aW5ncy5yb3dzLCB0aGlzLnNldHRpbmdzLmNvbHVtbnMpO1xuICAgIHRoaXMubWF0cml4LnVpID0gdGhpcztcblxuICAgIC8qKlxuICAgICAqIEEgQ291bnRlciBtb2RlbCB3aGljaCB0aGUgc2VxdWVuY2VyIHN0ZXBzIHRocm91Z2guIEZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIHRoaXMgbW9kZWwgdG8gc3RlcCB0aHJvdWdoIHRoZSBzZXF1ZW5jZXIgaW4gcmV2ZXJzZSwgcmFuZG9tbHksIG9yIGluIGEgZHJ1bmsgd2Fsay5cbiAgICAgKiBAdHlwZSB7Y291bnRlcn1cbiAgICAgKi9cbiAgICB0aGlzLnN0ZXBwZXIgPSBuZXcgQ291bnRlck1vZGVsKDAsIHRoaXMuY29sdW1ucyk7XG5cbiAgICB0aGlzLnBhZGRpbmdSb3cgPSB0aGlzLnNldHRpbmdzLnBhZGRpbmdSb3c7XG4gICAgdGhpcy5wYWRkaW5nQ29sdW1uID0gdGhpcy5zZXR0aW5ncy5wYWRkaW5nQ29sdW1uO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIHRoaXMucGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgaWYgKHRvdWNoLmV4aXN0cykge1xuICAgICAgdGhpcy5hZGRUb3VjaExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2VsbHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbG9jYXRpb24gPSB0aGlzLm1hdHJpeC5sb2NhdGUoaSk7XG4gICAgICAvLyByZXR1cm5zIHtyb3csY29sfVxuXG4gICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcblxuICAgICAgbGV0IGNlbGwgPSBuZXcgTWF0cml4Q2VsbChcbiAgICAgICAgY29udGFpbmVyLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50OiB0cnVlLFxuICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIHJvdzogbG9jYXRpb24ucm93LFxuICAgICAgICAgIGNvbHVtbjogbG9jYXRpb24uY29sdW1uLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBtYXRyaXg6IHRoaXMsXG4gICAgICAgICAgcGFkZGluZ1JvdzogdGhpcy5wYWRkaW5nUm93LFxuICAgICAgICAgIHBhZGRpbmdDb2x1bW46IHRoaXMucGFkZGluZ0NvbHVtblxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmtleUNoYW5nZS5iaW5kKHRoaXMsIGkpXG4gICAgICApO1xuXG4gICAgICAvLyAgY2VsbC5tYXRyaXggPSB0aGlzO1xuICAgICAgaWYgKHRvdWNoLmV4aXN0cykge1xuICAgICAgICBjZWxsLnBhZC5pbmRleCA9IGk7XG4gICAgICAgIGNlbGwucHJlQ2xpY2sgPSBjZWxsLnByZU1vdmUgPSBjZWxsLnByZVJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICAgICAgY2VsbC5jbGljayA9IGNlbGwubW92ZSA9IGNlbGwucmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgICBjZWxsLnByZVRvdWNoID0gY2VsbC5wcmVUb3VjaE1vdmUgPSBjZWxsLnByZVRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgICBjZWxsLnRvdWNoID0gY2VsbC50b3VjaE1vdmUgPSBjZWxsLnRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNlbGxzLnB1c2goY2VsbCk7XG4gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5zaXplSW50ZXJmYWNlKCk7XG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuICAgIGxldCBjZWxsV2lkdGggPSB0aGlzLndpZHRoIC8gdGhpcy5jb2x1bW5zO1xuICAgIGxldCBjZWxsSGVpZ2h0ID0gdGhpcy5oZWlnaHQgLyB0aGlzLnJvd3M7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmNlbGxzW2ldLnBhcmVudDtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gdGhpcy5jZWxsc1tpXS5jb2x1bW4gKiBjZWxsV2lkdGggKyAncHgnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9IHRoaXMuY2VsbHNbaV0ucm93ICogY2VsbEhlaWdodCArICdweCc7XG4gICAgICB0aGlzLmNlbGxzW2ldLnJlc2l6ZShjZWxsV2lkdGgsIGNlbGxIZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5jZWxsc1tpXS5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgLy8gIGNvbnNvbGUubG9nKFwidXBkYXRpbmcuLi5cIilcbiAgICAvL29uID0gb24gfHwgZmFsc2U7XG4gICAgdGhpcy5tYXRyaXguaXRlcmF0ZSgociwgYywgaSkgPT4ge1xuICAgICAgLy8gIGNvbnNvbGUubG9nKHRoaXMubWF0cml4LnBhdHRlcm5bcl1bY10sIHRoaXMuY2VsbHNbaV0uc3RhdGUpO1xuICAgICAgaWYgKHRoaXMubWF0cml4LnBhdHRlcm5bcl1bY10gIT09IHRoaXMuY2VsbHNbaV0uc3RhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMubWF0cml4LnBhdHRlcm5bcl1bY10gPiAwKSB7XG4gICAgICAgICAgdGhpcy5jZWxsc1tpXS50dXJuT24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNlbGxzW2ldLnR1cm5PZmYoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gdXBkYXRlID0+IGNlbGwudHVybk9uID0+IGNlbGwuZW1pdCA9PiBrZXlDaGFuZ2UgKHNlcS5lbWl0KSA9PiBtYXRyaXguc2V0LmNlbGwgPT4gdXBkYXRlXG4gIC8vXG4gIC8vIGludGVyYWN0aW9uID0+IGtleUNoYW5nZSA9PiBtYXRyaXguc2V0LmNlbGwgPT4gdXBkYXRlID0+IGNlbGwudHVybk9uXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gZW1pdFxuICAvL1xuICAvLyBzZXQuY2VsbCA9PiB1cGRhdGUgPT4gbmVlZHMgdG8gZW1pdC5cblxuICBrZXlDaGFuZ2Uobm90ZSwgb24pIHtcbiAgICAvLyBlbWl0IGRhdGEgZm9yIGFueSBrZXkgdHVybmluZyBvbi9vZmZcbiAgICAvLyBpIGlzIHRoZSBub3RlIGluZGV4XG4gICAgLy8gdiBpcyB3aGV0aGVyIGl0IGlzIG9uIG9yIG9mZlxuICAgIGxldCBjZWxsID0gdGhpcy5tYXRyaXgubG9jYXRlKG5vdGUpO1xuICAgIC8vICB0aGlzLm1hdHJpeC5zZXQuY2VsbChjZWxsLmNvbHVtbixjZWxsLnJvdyxvbik7XG4gICAgdGhpcy5tYXRyaXgucGF0dGVybltjZWxsLnJvd11bY2VsbC5jb2x1bW5dID0gb247XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICByb3c6IGNlbGwucm93LFxuICAgICAgY29sdW1uOiBjZWxsLmNvbHVtbixcbiAgICAgIHN0YXRlOiBvblxuICAgIH07XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCBkYXRhKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5zdGVwcGVyLnZhbHVlID49IDApIHtcbiAgICAgIHRoaXMubWF0cml4Lml0ZXJhdGUoKHIsIGMsIGkpID0+IHtcbiAgICAgICAgaWYgKGMgPT09IHRoaXMuc3RlcHBlci52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuY2VsbHNbaV0ucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgICAgICAgIHRoaXMuY2VsbHNbaV0ucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzEnKTtcbiAgICAgICAgICB0aGlzLmNlbGxzW2ldLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1vcGFjaXR5JywgJzEnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNlbGxzW2ldLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICdub25lJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBzZXF1ZW5jaW5nXG4gICAqIEBwYXJhbSAge251bWJlcn0gbXMgQmVhdCB0ZW1wbyBpbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIHN0YXJ0KG1zKSB7XG4gICAgdGhpcy5pbnRlcnZhbC5ldmVudCA9IHRoaXMubmV4dC5iaW5kKHRoaXMpO1xuICAgIGlmIChtcykge1xuICAgICAgdGhpcy5pbnRlcnZhbC5tcyhtcyk7XG4gICAgfVxuICAgIHRoaXMuaW50ZXJ2YWwuc3RhcnQoKTtcbiAgfVxuXG4gIC8qKlxuICBTdG9wIHNlcXVlbmNpbmdcbiAgKi9cbiAgc3RvcCgpIHtcbiAgICB0aGlzLmludGVydmFsLnN0b3AoKTtcbiAgfVxuXG4gIC8qKlxuICBNYW51YWxseSBqdW1wIHRvIHRoZSBuZXh0IGNvbHVtbiBhbmQgdHJpZ2dlciB0aGUgJ2NoYW5nZScgZXZlbnQuIFRoZSBcIm5leHRcIiBjb2x1bW4gaXMgZGV0ZXJtaW5lZCBieSB5b3VyIG1vZGUgb2Ygc2VxdWVuY2luZy5cbiAgKi9cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgIHRoaXMuZW1pdCgnc3RlcCcsIHRoaXMubWF0cml4LmNvbHVtbih0aGlzLnN0ZXBwZXIudmFsdWUpLnJldmVyc2UoKSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGFkZFRvdWNoTGlzdGVuZXJzKCkge1xuICAgIHRoaXMucHJlQ2xpY2sgPSB0aGlzLnByZU1vdmUgPSB0aGlzLnByZVJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLmNsaWNrID0gdGhpcy5tb3ZlID0gdGhpcy5yZWxlYXNlID0gKCkgPT4ge307XG4gICAgdGhpcy5wcmVUb3VjaCA9IHRoaXMucHJlVG91Y2hNb3ZlID0gdGhpcy5wcmVUb3VjaFJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLnRvdWNoID0gdGhpcy50b3VjaE1vdmUgPSB0aGlzLnRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuXG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IGZhbHNlO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBlID0+IHtcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChcbiAgICAgICAgZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFgsXG4gICAgICAgIGUudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZXG4gICAgICApO1xuICAgICAgbGV0IGNlbGwgPSB0aGlzLmNlbGxzW2VsZW1lbnQuaW5kZXhdO1xuICAgICAgdGhpcy5wYWludGJydXNoID0gIWNlbGwuc3RhdGU7XG4gICAgICBjZWxsLmRvd24odGhpcy5wYWludGJydXNoKTtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSBlbGVtZW50LmluZGV4O1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBlID0+IHtcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChcbiAgICAgICAgZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFgsXG4gICAgICAgIGUudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZXG4gICAgICApO1xuICAgICAgbGV0IGNlbGwgPSB0aGlzLmNlbGxzW2VsZW1lbnQuaW5kZXhdO1xuICAgICAgaWYgKGVsZW1lbnQuaW5kZXggIT09IHRoaXMuY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQgPj0gMCkge1xuICAgICAgICAgIGxldCBwYXN0Q2VsbCA9IHRoaXMuY2VsbHNbdGhpcy5jdXJyZW50RWxlbWVudF07XG4gICAgICAgICAgcGFzdENlbGwudXAoKTtcbiAgICAgICAgfVxuICAgICAgICBjZWxsLmRvd24odGhpcy5wYWludGJydXNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNlbGwuYmVuZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQuaW5kZXg7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZSA9PiB7XG4gICAgICAvLyBubyB0b3VjaGVzIHRvIGNhbGN1bGF0ZSBiZWNhdXNlIG5vbmUgcmVtYWluaW5nXG4gICAgICBsZXQgY2VsbCA9IHRoaXMuY2VsbHNbdGhpcy5jdXJyZW50RWxlbWVudF07XG4gICAgICBjZWxsLnVwKCk7XG4gICAgICB0aGlzLmludGVyYWN0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gIE51bWJlciBvZiByb3dzIGluIHRoZSBzZXF1ZW5jZXJcbiAgQHR5cGUge251bWJlcn1cbiAgKi9cbiAgZ2V0IHJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LnJvd3M7XG4gIH1cblxuICBzZXQgcm93cyh2KSB7XG4gICAgdGhpcy5tYXRyaXgucm93cyA9IHY7XG4gICAgdGhpcy5lbXB0eSgpO1xuICAgIHRoaXMuYnVpbGRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBzZXF1ZW5jZXJcbiAgQHR5cGUge251bWJlcn1cbiAgKi9cbiAgZ2V0IGNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LmNvbHVtbnM7XG4gIH1cblxuICBzZXQgY29sdW1ucyh2KSB7XG4gICAgdGhpcy5tYXRyaXguY29sdW1ucyA9IHY7XG4gICAgdGhpcy5zdGVwcGVyLm1heCA9IHY7XG4gICAgdGhpcy5lbXB0eSgpO1xuICAgIHRoaXMuYnVpbGRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9zZXF1ZW5jZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBtYXRoIGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgU2VxdWVuY2UgZnJvbSAnLi4vbW9kZWxzL3NlcXVlbmNlJztcblxuLy8gRm9yIHRoZSB0dXRvcmlhbCwgbG9va2luZyBhdFxuXG4vL1BhdHRlcm4gc2VjdGlvbjpcbi8vIC5jcmVhdGUoKSwgLnJvd3MsIC5jb2x1bW5zLFxuLy8gLnBhdHRlcm4sIC5sZW5ndGgsIC5mb3JtYXRBc1RleHQoKSwgLmxvZygpLFxuLy8gLmxvY2F0ZShpKSwgLmluZGV4T2YoYyxyKVxuLy8gcm93KCksIGNvbHVtbigpIChyZXR1cm5zIGNvbnRlbnRzIG9mIHJvdyBvciBjb2x1bSlcblxuLy9Db250cm9sIHNlY3Rpb246XG4vLyB0b2dnbGUgeDNcbi8vIHNldCB4NFxuLy8gcm90YXRlIHgzXG4vLyBwb3B1bGF0ZSB4M1xuLy8gZXJhc2UgeDNcblxuXG4vLyBzaG91bGQgc29tZSB2ZXJzaW9uIG9mIHRoaXMgaGF2ZSBhIGZsb2F0IHZhbHVlIGZvciBlYWNoIGNlbGw/XG4vLyBjb3VsZCBiZSBsaWtlIGEgbWlycm9yIC5wYXR0ZXJuIHRoYXQgaGFzIHZhbHVlcy4gYnkgZGVmYXVsdCwgZXZlcnl0aGluZyBpcyAxLCBidXQgY291bGQgYmUgc2V0Li4uXG4vLyBub3QgYSBnb29kIHdheSB0byBkbyB0aGF0IG9uIGludGVyZmFjZSwgYnV0IGFzIGEgbW9kZWwgaXQgd291bGQgYmUgbmljZS4uLlxuLy8gZm9yIC5mb3JtYXRBc1RleHQoKSwgY291bGQgbXVsdGlwbHkgYnkgMTAwIGFuZCBmbG9vciwgc28gZWFjaCBjZWxsIGlzIGFuIGludCBmcm9tIDAgdG8gOVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXgge1xuXG4gIGNvbnN0cnVjdG9yKHJvd3MsY29sdW1ucykge1xuICAgIC8vIHNob3VsZCBhbHNvIGhhdmUgYWJpbGl0eSB0byBjcmVhdGUgdXNpbmcgYW4gZXhpc3RpbmcgbWF0cml4ICgyZCBhcnJheSlcbiAgICB0aGlzLnBhdHRlcm4gPSBbXTtcbiAgICB0aGlzLmNyZWF0ZShyb3dzLGNvbHVtbnMpO1xuXG4gICAgdGhpcy50b2dnbGUgPSB7XG4gICAgICBjZWxsOiAoY29sdW1uLCByb3cpID0+IHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3Jvd11bY29sdW1uXSA9ICF0aGlzLnBhdHRlcm5bcm93XVtjb2x1bW5dOyAvLyBtYXRoLmludmVydCh0aGlzLnBhdHRlcm5bcm93XVtjb2x1bW5dKTtcbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXR0ZXJuW3Jvd11bY29sdW1uXTtcbiAgICAgIH0sXG4gICAgICBhbGw6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pdGVyYXRlKChyLGMpID0+IHsgdGhpcy50b2dnbGUuY2VsbChjLHIpOyB9KTtcbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgfSxcbiAgICAgIHJvdzogKHJvdykgPT4ge1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZS5jZWxsKGkscm93KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9LFxuICAgICAgY29sdW1uOiAoY29sdW1uKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICAgIHRoaXMudG9nZ2xlLmNlbGwoY29sdW1uLGkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5zZXQgPSB7XG4gICAgICBjZWxsOiAoY29sdW1uLCByb3csIHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMucGF0dGVybltyb3ddW2NvbHVtbl0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgfSxcbiAgICAgIGFsbDogKHZhbHVlcykgPT4ge1xuICAgICAgICAvLyBzZXQgdGhlIHdob2xlIG1hdHJpeCB1c2luZyBhIDJkIGFycmF5IGFzIGlucHV0XG4gICAgICAgIC8vIHRoaXMgc2hvdWxkIGFsc28gcmVzaXplIHRoZSBhcnJheT9cbiAgICAgICAgdGhpcy5wYXR0ZXJuID0gdmFsdWVzO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9LFxuICAgICAgcm93OiAocm93LHZhbHVlcykgPT4ge1xuICAgICAgICAvLyBzZXQgYSByb3cgdXNpbmcgYW4gYXJyYXkgYXMgaW5wdXRcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3Jvd10gPSB2YWx1ZXM7XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH0sXG4gICAgICBjb2x1bW46IChjb2x1bW4sdmFsdWVzKSA9PiB7XG4gICAgICAgIC8vIHNldCBhIGNvbHVtbiB1c2luZyBhbiBhcnJheSBhcyBpbnB1dFxuICAgICAgICB0aGlzLnBhdHRlcm4uZm9yRWFjaCgocm93LGkpID0+IHtcbiAgICAgICAgICB0aGlzLnBhdHRlcm5baV1bY29sdW1uXSA9IHZhbHVlc1tpXTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5yb3RhdGUgPSB7XG4gICAgICAvL3Nob3VsZCBldmVudHVhbGx5IGRvIChhbW91bnRYLCBhbW91bnRZKSBoZXJlXG4gICAgICAvLyBjb3VsZCBqdXN0IHVzZSBhIGxvb3AgYW5kIHRoaXMucm90YXRlLnJvdyhpLGFtb3VudFgpO1xuICAgICAgYWxsOiAoYW1vdW50KSA9PiB7XG4gICAgICAgIGlmICghYW1vdW50ICYmIGFtb3VudCE9PTApIHtcbiAgICAgICAgICBhbW91bnQgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGFtb3VudCAlPSB0aGlzLnBhdHRlcm5bMF0ubGVuZ3RoO1xuICAgICAgICBpZiAoYW1vdW50IDwgMCkge1xuICAgICAgICAgIGFtb3VudCA9IHRoaXMucGF0dGVyblswXS5sZW5ndGggKyBhbW91bnQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgICAgbGV0IGN1dCA9IHRoaXMucGF0dGVybltpXS5zcGxpY2UoIHRoaXMucGF0dGVybltpXS5sZW5ndGggLSBhbW91bnQsIGFtb3VudCApO1xuICAgICAgICAgIHRoaXMucGF0dGVybltpXSA9IGN1dC5jb25jYXQoIHRoaXMucGF0dGVybltpXSApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH0sXG4gICAgICByb3c6IChyb3csYW1vdW50KSA9PiB7XG4gICAgICAgIGlmICghYW1vdW50ICYmIGFtb3VudCE9PTApIHtcbiAgICAgICAgICBhbW91bnQgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGFtb3VudCAlPSB0aGlzLnBhdHRlcm5bMF0ubGVuZ3RoO1xuICAgICAgICBpZiAoYW1vdW50IDwgMCkge1xuICAgICAgICAgIGFtb3VudCA9IHRoaXMucGF0dGVyblswXS5sZW5ndGggKyBhbW91bnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGN1dCA9IHRoaXMucGF0dGVybltyb3ddLnNwbGljZSggdGhpcy5wYXR0ZXJuW3Jvd10ubGVuZ3RoIC0gYW1vdW50LCBhbW91bnQgKTtcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3Jvd10gPSBjdXQuY29uY2F0KCB0aGlzLnBhdHRlcm5bcm93XSApO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9LFxuICAgICAgY29sdW1uOiAoY29sdW1uLCBhbW91bnQpID0+IHtcbiAgICAgICAgaWYgKCFhbW91bnQgJiYgYW1vdW50IT09MCkge1xuICAgICAgICAgIGFtb3VudCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgYW1vdW50ICU9IHRoaXMucGF0dGVybi5sZW5ndGg7XG4gICAgICAgIGlmIChhbW91bnQgPCAwKSB7XG4gICAgICAgICAgYW1vdW50ID0gdGhpcy5wYXR0ZXJuLmxlbmd0aCArIGFtb3VudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJveHkgPSBbXTtcbiAgICAgICAgdGhpcy5wYXR0ZXJuLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHByb3h5LnB1c2goIHJvd1tjb2x1bW5dICk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY3V0ID0gcHJveHkuc3BsaWNlKCBwcm94eS5sZW5ndGggLSBhbW91bnQsIGFtb3VudCApO1xuICAgICAgICBwcm94eSA9IGN1dC5jb25jYXQoIHByb3h5ICk7XG4gICAgICAgIHRoaXMucGF0dGVybi5mb3JFYWNoKChyb3csaSkgPT4ge1xuICAgICAgICAgIHJvd1tjb2x1bW5dID0gcHJveHlbaV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIHRoZSBpZGVhIGJlaGluZCBwb3B1bGF0ZSBpcyB0byBiZSBhYmxlIHRvIHNldCBhIHdob2xlIHJvdyBvciBjb2x1bW4gdG8gMCBvciAxXG4gICAgLy8gSUYgdGhlIHZhbHVlIGlzIGEgZmxvYXQsIHN1Y2ggYXMgMC43LCB0aGVuIGl0IHdvdWxkIGJlY29tZSBhIHByb2JhYmlsaXR5XG4gICAgLy8gc28gcG9wdWxhdGUoMC43KSB3b3VsZCBnaXZlIGVhY2ggY2VsbCBhIDcwJSBjaGFuY2Ugb2YgYmVpbmcgMVxuICAgIHRoaXMucG9wdWxhdGUgPSB7XG4gICAgICBhbGw6IChvZGRzKSA9PiB7XG4gICAgICAgIGxldCBvZGRzU2VxdWVuY2UgPSBuZXcgU2VxdWVuY2Uob2Rkcyk7XG4gICAgICAgIHRoaXMuaXRlcmF0ZSgocixjKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXR0ZXJuW3JdW2NdID0gbWF0aC5jb2luKG9kZHNTZXF1ZW5jZS5uZXh0KCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSB1c2VkIHNvIHRoYXQgZWFjaCByb3cgaGFzIHNhbWUgb2RkcyBwYXR0ZXJuLCBldmVuIGlmIHJvdyBsZW5ndGggaXMgbm90IGRpdmlzaWJseSBieSBzZXF1ZW5jZSBsZW5ndGguXG4gICAgICAgIC8vLCgpID0+IHtcbiAgICAgICAgLy8gIG9kZHMucG9zID0gLTE7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgfSxcbiAgICAgIHJvdzogKHJvdz0wLG9kZHM9MSkgPT4ge1xuICAgICAgICBsZXQgb2Rkc1NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKG9kZHMpO1xuICAgICAgICB0aGlzLnBhdHRlcm5bcm93XS5mb3JFYWNoKChjZWxsLGkpID0+IHtcbiAgICAgICAgICB0aGlzLnBhdHRlcm5bcm93XVtpXSA9IG1hdGguY29pbihvZGRzU2VxdWVuY2UubmV4dCgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH0sXG4gICAgICBjb2x1bW46IChjb2x1bW49MCxvZGRzPTEpID0+IHtcbiAgICAgICAgbGV0IG9kZHNTZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZShvZGRzKTtcbiAgICAgICAgdGhpcy5wYXR0ZXJuLmZvckVhY2goKHJvdyxpKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXR0ZXJuW2ldW2NvbHVtbl0gPSBtYXRoLmNvaW4ob2Rkc1NlcXVlbmNlLm5leHQoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIGVzc2VudGlhbGwgcG9wdWxhdGUoMCkgc28gaSdtIG5vdCBzdXJlIGlmIHRoaXMgaXMgbmVjZXNzYXJ5IGJ1dCBpcyBuaWNlXG4gICAgdGhpcy5lcmFzZSA9IHtcbiAgICAgIGFsbDogKCkgPT4ge1xuICAgICAgICB0aGlzLnNldC5hbGwoMCk7XG4gICAgICB9LFxuICAgICAgcm93OiAocm93KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0LnJvdyhyb3csMCk7XG4gICAgICB9LFxuICAgICAgY29sdW1uOiAoY29sdW1uKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0LmNvbHVtbihjb2x1bW4sMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAvLyBlbmQgY29uc3RydWN0b3JcbiAgfVxuXG5cbiAgY3JlYXRlKHJvd3MsY29sdW1ucykge1xuICAgIHRoaXMucGF0dGVybiA9IFtdO1xuICAgIGZvciAoIGxldCByb3c9MDsgcm93IDwgcm93czsgcm93KysgKSB7XG4gICAgICBsZXQgYXJyID0gbmV3IEFycmF5KGNvbHVtbnMpO1xuICAgICAgdGhpcy5wYXR0ZXJuLnB1c2goYXJyKTtcbiAgICB9XG4gICAgdGhpcy5pdGVyYXRlKChyLGMpID0+IHsgdGhpcy5wYXR0ZXJuW3JdW2NdID0gZmFsc2U7IH0pO1xuICB9XG5cbiAgaXRlcmF0ZShmLCBmMikge1xuICAgIGxldCBpID0gMDtcbiAgICBmb3IgKCBsZXQgcm93PTA7IHJvdyA8IHRoaXMucm93czsgcm93KysgKSB7XG4gICAgICBpZiAoZjIpIHsgZjIocm93KTsgfVxuICAgICAgZm9yICggbGV0IGNvbHVtbj0wOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrICkge1xuICAgICAgICBmKHJvdyxjb2x1bW4saSk7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3JtYXRBc1RleHQoKSB7XG4gICAgbGV0IHBhdHRlcm5TdHJpbmcgPSAnJztcbiAgICB0aGlzLml0ZXJhdGUoXG4gICAgICAocixjKSA9PiB7IHBhdHRlcm5TdHJpbmcgKz0gKHRoaXMucGF0dGVybltyXVtjXSA/IDEgOiAwKSArICcgJzsgfSxcbiAgICAgICgpID0+IHsgcGF0dGVyblN0cmluZyArPSAnXFxuJzsgfVxuICAgICk7XG4gICAgcmV0dXJuIHBhdHRlcm5TdHJpbmc7XG4gIH1cblxuICBsb2coKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtYXRBc1RleHQoKSk7XG4gIH1cblxuICB1cGRhdGUocGF0dGVybikge1xuICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm4gfHwgdGhpcy5wYXR0ZXJuO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzKnRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGxvY2F0ZShpbmRleCkge1xuICAgIC8vIHJldHVybnMgcm93IGFuZCBjb2x1bW4gb2YgY2VsbCBieSBpbmRleFxuICAgIHJldHVybiB7XG4gICAgICByb3c6IH5+KCBpbmRleCAvIHRoaXMuY29sdW1ucyApLFxuICAgICAgY29sdW1uOiBpbmRleCAlIHRoaXMuY29sdW1uc1xuICAgIH07XG4gIH1cblxuICBpbmRleE9mKHJvdyxjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uICsgcm93ICogdGhpcy5jb2x1bW5zO1xuICAgIC8vIHJldHVybnMgaW5kZXggb2YgY2VsbCBieSByb3cgYW5kIGNvbHVtblxuICB9XG5cbiAgcm93KHJvdykge1xuICAgIGxldCBkYXRhID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBkYXRhLnB1c2godGhpcy5wYXR0ZXJuW3Jvd10gPyAxIDogMCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29sdW1uKGNvbHVtbikge1xuICAgIGxldCBkYXRhID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMucm93czsgaSsrKSB7XG4gICAgICBkYXRhLnB1c2godGhpcy5wYXR0ZXJuW2ldW2NvbHVtbl0gPyAxIDogMCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0IHJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0dGVybi5sZW5ndGg7XG4gIH1cbiAgc2V0IHJvd3Modikge1xuICAgIGxldCBwcmV2aW91cyA9IHRoaXMucGF0dGVybi5zbGljZSgwKTtcbiAgICB0aGlzLmNyZWF0ZSh2LHRoaXMuY29sdW1ucyk7XG4gICAgdGhpcy5pdGVyYXRlKChyLGMpID0+IHtcbiAgICAgIGlmIChwcmV2aW91c1tyXSAmJiBwcmV2aW91c1tyXVtjXSkge1xuICAgICAgICB0aGlzLnBhdHRlcm5bcl1bY10gPSBwcmV2aW91c1tyXVtjXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLnBhdHRlcm5bMF0ubGVuZ3RoO1xuICB9XG4gIHNldCBjb2x1bW5zKHYpIHtcbiAgICBsZXQgcHJldmlvdXMgPSB0aGlzLnBhdHRlcm4uc2xpY2UoMCk7XG4gICAgdGhpcy5jcmVhdGUodGhpcy5yb3dzLHYpO1xuICAgIHRoaXMuaXRlcmF0ZSgocixjKSA9PiB7XG4gICAgICBpZiAocHJldmlvdXNbcl0gJiYgcHJldmlvdXNbcl1bY10pIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3JdW2NdID0gcHJldmlvdXNbcl1bY107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy9tYXRyaXguanMiLCIndXNlIHN0cmljdCc7XHJcblxyXG5pbXBvcnQgbWF0aCBmcm9tICcuLi91dGlsL21hdGgnO1xyXG5pbXBvcnQgRHJ1bmsgZnJvbSAnLi9kcnVuayc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXF1ZW5jZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3Ioc2VxdWVuY2UgPSBbMCwxMCwyMCwzMF0sIG1vZGU9J3VwJywgcG9zaXRpb249ZmFsc2UpIHtcclxuICAgICAgICB0aGlzLnZhbHVlcyA9IHNlcXVlbmNlO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlcykpIHtcclxuICAgICAgICAgIHRoaXMudmFsdWVzID0gW3RoaXMudmFsdWVzXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbW9kZSA9IG1vZGU7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG5cclxuICAgICAgICB0aGlzLmRydW5rV2FsayA9IG5ldyBEcnVuaygwLCB0aGlzLnZhbHVlcy5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlcyA9IHtcclxuICAgICAgICAgICd1cCc6IDAsXHJcbiAgICAgICAgICAnZG93bic6IHRoaXMudmFsdWVzLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICAnZHJ1bmsnOiB+fih0aGlzLnZhbHVlcy5sZW5ndGgvMiksXHJcbiAgICAgICAgICAncmFuZG9tJzogbWF0aC5yaSh0aGlzLnZhbHVlcy5sZW5ndGgpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24hPT1mYWxzZSkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpc1t0aGlzLl9tb2RlXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpcy5maXJzdDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZSgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG1vZGUobW9kZSkge1xyXG4gICAgICAgIGlmICghKG1vZGUgPT09ICd1cCcgfHwgbW9kZSA9PT0gJ2Rvd24nIHx8IG1vZGUgPT09ICdyYW5kb20nIHx8IG1vZGUgPT09ICdkcnVuaycpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBvbmx5IG1vZGVzIGN1cnJlbnRseSBhbGxvd2VkIGFyZTogdXAsIGRvd24sIHJhbmRvbSwgZHJ1bmsnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tb2RlID0gbW9kZTtcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpc1t0aGlzLl9tb2RlXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZXNbdGhpcy5wb3NpdGlvbl07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhbHVlKHYpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMudmFsdWVzLmluZGV4T2Yodik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyc3QoKSB7XHJcbiAgICAgIGlmICh0aGlzLnBvc2l0aW9uIT09ZmFsc2UpIHtcclxuICAgICAgICB0aGlzLm5leHQgPSB0aGlzW3RoaXMuX21vZGVdO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5leHQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5zdGFydFZhbHVlc1t0aGlzLl9tb2RlXTtcclxuICAgICAgdGhpcy5uZXh0ID0gdGhpc1t0aGlzLl9tb2RlXTtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXAoKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24rKztcclxuICAgICAgdGhpcy5wb3NpdGlvbiAlPSB0aGlzLnZhbHVlcy5sZW5ndGg7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd24oKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24tLTtcclxuICAgICAgaWYgKHRoaXMucG9zaXRpb24gPCAwKSB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICh0aGlzLnBvc2l0aW9uICsgdGhpcy52YWx1ZXMubGVuZ3RoKSAlIHRoaXMudmFsdWVzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByYW5kb20oKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBtYXRoLnJpKDAsIHRoaXMudmFsdWVzLmxlbmd0aCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGRydW5rKCkge1xyXG4gICAgICB0aGlzLmRydW5rV2Fsay5tYXggPSB0aGlzLnZhbHVlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZHJ1bmtXYWxrLnZhbHVlID0gdGhpcy5wb3NpdGlvbjtcclxuICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMuZHJ1bmtXYWxrLm5leHQoKTtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyogZnV0dXJlIG1ldGhvZHNcclxuICAgIC5ncm91cChzdGFydCxzdG9wKSAtLSBvdXRwdXRzIGEgZ3JvdXAgb2YgbiBpdGVtcyBmcm9tIHRoZSBsaXN0LCB3aXRoIHdyYXBwaW5nXHJcbiAgICAubG9vcChzdGFydCxzdG9wKSAtLSBjb25maW5lcyBzZXF1ZW5jaW5nIHRvIGEgc3Vic2V0IG9mIHRoZSB2YWx1ZXNcclxuICAgICAgICAoY291bGQgZXZlbiBoYXZlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiAub3JpZ2luYWxWYWx1ZXMgYW5kIHRoZSBhcnJheSBvZiB2YWx1ZXMgYmVpbmcgdXNlZClcclxuICAgICovXHJcbn1cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy9zZXF1ZW5jZS5qcyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IG1hdGggZnJvbSAnLi4vdXRpbC9tYXRoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJ1bmsge1xuXG4gICAgY29uc3RydWN0b3IobWluPTAsIG1heD05LCB2YWx1ZT0wLCBpbmNyZW1lbnQ9MSwgbG9vcD1mYWxzZSkge1xuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnQgPSBpbmNyZW1lbnQ7XG4gICAgICAgIHRoaXMubG9vcCA9IGxvb3A7XG4gICAgfVxuXG4gICAgbmV4dCgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSArPSBtYXRoLnBpY2soLTEgKiB0aGlzLmluY3JlbWVudCwgdGhpcy5pbmNyZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb29wKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXggLSB0aGlzLmluY3JlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbiArIHRoaXMuaW5jcmVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9tb2RlbHMvZHJ1bmsuanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBtYXRoIGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgRHJ1bmsgZnJvbSAnLi9kcnVuayc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvdW50ZXIge1xuXG4gICAgY29uc3RydWN0b3IobWluPTAsIG1heD0xMCwgbW9kZT0ndXAnLCB2YWx1ZT1mYWxzZSkge1xuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgICAgdGhpcy5kcnVua1dhbGsgPSBuZXcgRHJ1bmsodGhpcy5taW4sIHRoaXMubWF4KTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUhPT1mYWxzZSkge1xuICAgICAgICAgIHRoaXMubmV4dCA9IHRoaXNbdGhpcy5fbW9kZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpcy5maXJzdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldCBtb2RlKG1vZGUpIHtcbiAgICAgICAgaWYgKCEobW9kZSA9PT0gJ3VwJyB8fCBtb2RlID09PSAnZG93bicgfHwgbW9kZSA9PT0gJ3JhbmRvbScgfHwgbW9kZSA9PT0gJ2RydW5rJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBvbmx5IG1vZGVzIGN1cnJlbnRseSBhbGxvd2VkIGFyZTogdXAsIGRvd24sIHJhbmRvbSwgZHJ1bmsnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLm5leHQgPSB0aGlzW3RoaXMuX21vZGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICAgIH1cblxuICAgIGZpcnN0KCkge1xuICAgICAgaWYgKHRoaXMudmFsdWUhPT1mYWxzZSkge1xuICAgICAgICB0aGlzLm5leHQgPSB0aGlzW3RoaXMuX21vZGVdO1xuICAgICAgICByZXR1cm4gdGhpcy5uZXh0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXJ0VmFsdWVzID0ge1xuICAgICAgICAndXAnOiB0aGlzLm1pbixcbiAgICAgICAgJ2Rvd24nOiB0aGlzLm1heCxcbiAgICAgICAgJ2RydW5rJzogfn5tYXRoLmF2ZXJhZ2UodGhpcy5taW4sdGhpcy5tYXgpLFxuICAgICAgICAncmFuZG9tJzogbWF0aC5yaSh0aGlzLm1pbix0aGlzLm1heClcbiAgICAgIH07XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5zdGFydFZhbHVlc1t0aGlzLl9tb2RlXTtcbiAgICAgIHRoaXMubmV4dCA9IHRoaXNbdGhpcy5fbW9kZV07XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICB1cCgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSsrO1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGRvd24oKSB7XG4gICAgICAgIHRoaXMudmFsdWUtLTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG1hdGgucmkodGhpcy5taW4sIHRoaXMubWF4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgZHJ1bmsoKSB7XG4gICAgICAgIHRoaXMuZHJ1bmtXYWxrLm1pbiA9IHRoaXMubWluO1xuICAgICAgICB0aGlzLmRydW5rV2Fsay5tYXggPSB0aGlzLm1heDtcbiAgICAgICAgdGhpcy5kcnVua1dhbGsudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5kcnVua1dhbGsubmV4dCgpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvbW9kZWxzL2NvdW50ZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IFN0ZXAgPSByZXF1aXJlKCcuLi9tb2RlbHMvc3RlcCcpO1xuaW1wb3J0ICogYXMgSW50ZXJhY3Rpb24gZnJvbSAnLi4vdXRpbC9pbnRlcmFjdGlvbic7XG5cbi8qKlxuKiBQYW4yRFxuKlxuKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBtb3ZpbmcgYSBzb3VuZCBhcm91bmQgYW4gYXJyYXkgb2Ygc3BlYWtlcnMuIFNwZWFrZXIgbG9jYXRpb25zIGNhbiBiZSBjdXN0b21pemVkLiBUaGUgaW50ZXJmYWNlIGNhbGN1bGF0ZXMgdGhlIGNsb3NlbmVzcyBvZiB0aGUgc291bmQgc291cmNlIHRvIGVhY2ggc3BlYWtlciBhbmQgcmV0dXJucyB0aGF0IGRpc3RhbmNlIGFzIGEgbnVtZXJpYyB2YWx1ZS5cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJwYW4yRFwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHBhbjJkID0gbmV3IE5leHVzLlBhbjJkKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHBhbjJkID0gbmV3IE5leHVzLlBhbjJEKCcjdGFyZ2V0Jyx7XG4qICAgJ3NpemUnOiBbMjAwLDIwMF0sXG4qICAgJ3JhbmdlJzogMC41LCAgLy8gZGV0ZWN0aW9uIHJhZGl1cyBvZiBlYWNoIHNwZWFrZXJcbiogICAnbW9kZSc6ICdhYnNvbHV0ZScsICAgLy8gJ2Fic29sdXRlJyBvciAncmVsYXRpdmUnIHNvdW5kIG1vdmVtZW50XG4qICAgJ3NwZWFrZXJzJzogWyAgLy8gdGhlIHNwZWFrZXIgW3gseV0gcG9zaXRpb25zXG4qICAgICAgIFswLjUsMC4yXSxcbiogICAgICAgWzAuNzUsMC4yNV0sXG4qICAgICAgIFswLjgsMC41XSxcbiogICAgICAgWzAuNzUsMC43NV0sXG4qICAgICAgIFswLjUsMC44XSxcbiogICAgICAgWzAuMjUsMC43NV1cbiogICAgICAgWzAuMiwwLjVdLFxuKiAgICAgICBbMC4yNSwwLjI1XVxuKiAgIF1cbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIFwic291cmNlXCIgbm9kZSdzIHBvc2l0aW9uIGNoYW5nZXMuIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgYW4gYXJyYXkgb2YgdGhlIGFtcGxpdHVkZXMgKDAtMSksIHJlcHJlc2VudGluZyB0aGUgbGV2ZWwgb2YgZWFjaCBzcGVha2VyIChhcyBjYWxjdWxhdGVkIGJ5IGl0cyBkaXN0YW5jZSB0byB0aGUgYXVkaW8gc291cmNlKS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogcGFuMmQub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFuMkQgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3JhbmdlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsyMDAsMjAwXSxcbiAgICAgICdyYW5nZSc6IDAuNSxcbiAgICAgICdtb2RlJzogJ2Fic29sdXRlJyxcbiAgICAgICdzcGVha2Vycyc6IFtcbiAgICAgICAgWzAuNSwwLjJdLFxuICAgICAgICBbMC43NSwwLjI1XSxcbiAgICAgICAgWzAuOCwwLjVdLFxuICAgICAgICBbMC43NSwwLjc1XSxcbiAgICAgICAgWzAuNSwwLjhdLFxuICAgICAgICBbMC4yNSwwLjc1XSxcbiAgICAgICAgWzAuMiwwLjVdLFxuICAgICAgICBbMC4yNSwwLjI1XVxuICAgICAgXVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgeDogbmV3IFN0ZXAoMCwxLDAsMC41KSxcbiAgICAgIHk6IG5ldyBTdGVwKDAsMSwwLDAuNSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgQWJzb2x1dGUgb3IgcmVsYXRpdmUgbW91c2UgaW50ZXJhY3Rpb24uIEluIFwiYWJzb2x1dGVcIiBtb2RlLCB0aGUgc291cmNlIG5vZGUgd2lsbCBqdW1wIHRvIHlvdXIgbW91c2UgcG9zaXRpb24gb24gbW91c2UgY2xpY2suIEluIFwicmVsYXRpdmVcIiBtb2RlLCBpdCBkb2VzIG5vdC5cbiAgICAqL1xuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICB4OiBuZXcgSW50ZXJhY3Rpb24uSGFuZGxlKHRoaXMubW9kZSwnaG9yaXpvbnRhbCcsWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKSxcbiAgICAgIHk6IG5ldyBJbnRlcmFjdGlvbi5IYW5kbGUodGhpcy5tb2RlLCd2ZXJ0aWNhbCcsWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKVxuICAgIH07XG4gICAgdGhpcy5wb3NpdGlvbi54LnZhbHVlID0gdGhpcy52YWx1ZS54Lm5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5wb3NpdGlvbi55LnZhbHVlID0gdGhpcy52YWx1ZS55Lm5vcm1hbGl6ZWQ7XG5cbiAgICAvKipcbiAgICBBbiBhcnJheSBvZiBzcGVha2VyIGxvY2F0aW9ucy4gVXBkYXRlIHRoaXMgd2l0aCAubW92ZVNwZWFrZXIoKSBvciAubW92ZUFsbFNwZWFrZXJzKClcbiAgICAqL1xuICAgIHRoaXMuc3BlYWtlcnMgPSB0aGlzLnNldHRpbmdzLnNwZWFrZXJzO1xuXG4gICAgLyoqXG4gICAgUmV3cml0ZTogVGhlIG1heGltdW0gZGlzdGFuY2UgZnJvbSBhIHNwZWFrZXIgdGhhdCB0aGUgc291cmNlIG5vZGUgY2FuIGJlIGZvciBpdCB0byBiZSBoZWFyZCBmcm9tIHRoYXQgc3BlYWtlci4gQSBsb3cgcmFuZ2UgKDAuMSkgd2lsbCByZXN1bHQgaW4gc3BlYWtlcnMgb25seSBwbGF5aW5nIHdoZW4gdGhlIHNvdW5kIGlzIHZlcnkgY2xvc2UgaXQuIERlZmF1bHQgaXMgMC41IChoYWxmIG9mIHRoZSBpbnRlcmZhY2UpLlxuICAgICovXG4gICAgdGhpcy5yYW5nZSA9IHRoaXMuc2V0dGluZ3MucmFuZ2U7XG5cbiAgICAvKipcbiAgICBUaGUgY3VycmVudCBsZXZlbHMgZm9yIGVhY2ggc3BlYWtlci4gVGhpcyBpcyBjYWxjdWxhdGVkIHdoZW4gYSBzb3VyY2Ugbm9kZSBvciBzcGVha2VyIG5vZGUgaXMgbW92ZWQgdGhyb3VnaCBpbnRlcmFjdGlvbiBvciBwcm9ncmFtYXRpY2FsbHkuXG4gICAgKi9cbiAgICB0aGlzLmxldmVscyA9IFtdO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLmNhbGN1bGF0ZUxldmVscygpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5rbm9iID0gc3ZnLmNyZWF0ZSgnY2lyY2xlJyk7XG5cblxuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmtub2IpO1xuXG5cbiAgICAvLyBhZGQgc3BlYWtlcnNcbiAgICB0aGlzLnNwZWFrZXJFbGVtZW50cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5zcGVha2Vycy5sZW5ndGg7aSsrKSB7XG4gICAgICBsZXQgc3BlYWtlckVsZW1lbnQgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcblxuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNwZWFrZXJFbGVtZW50KTtcblxuICAgICAgdGhpcy5zcGVha2VyRWxlbWVudHMucHVzaChzcGVha2VyRWxlbWVudCk7XG4gICAgfVxuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgICAgIHRoaXMuX21pbkRpbWVuc2lvbiA9IE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO1xuXG4gICAgICAgIHRoaXMua25vYlJhZGl1cyA9IHtcbiAgICAgICAgICBvZmY6IH5+KHRoaXMuX21pbkRpbWVuc2lvbi8xMDApICogMyArIDUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMua25vYlJhZGl1cy5vbiA9IHRoaXMua25vYlJhZGl1cy5vZmYgKiAyO1xuXG4gICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIpO1xuICAgICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5oZWlnaHQvMik7XG4gICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYlJhZGl1cy5vZmYpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDtpPHRoaXMuc3BlYWtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgIGxldCBzcGVha2VyRWxlbWVudCA9IHRoaXMuc3BlYWtlckVsZW1lbnRzW2ldO1xuICAgICAgICAgIGxldCBzcGVha2VyID0gdGhpcy5zcGVha2Vyc1tpXTtcbiAgICAgICAgICBzcGVha2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N4JyxzcGVha2VyWzBdKnRoaXMud2lkdGgpO1xuICAgICAgICAgIHNwZWFrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnY3knLHNwZWFrZXJbMV0qdGhpcy5oZWlnaHQpO1xuICAgICAgICAgIHNwZWFrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgncicsdGhpcy5fbWluRGltZW5zaW9uLzIwICsgNSk7XG4gICAgICAgICAgc3BlYWtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWxsLW9wYWNpdHknLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgIHRoaXMucG9zaXRpb24ueC5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcbiAgICAgIHRoaXMucG9zaXRpb24ueS5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcblxuICAgICAgICAvLyBuZXh0LCBuZWVkIHRvXG4gICAgICAgIC8vIHJlc2l6ZSBwb3NpdGlvbnNcbiAgICAgICAgLy8gY2FsY3VsYXRlIHNwZWFrZXIgZGlzdGFuY2VzXG4gICAgICB0aGlzLmNhbGN1bGF0ZUxldmVscygpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5zcGVha2Vycy5sZW5ndGg7aSsrKSB7XG4gICAgICBsZXQgc3BlYWtlckVsZW1lbnQgPSB0aGlzLnNwZWFrZXJFbGVtZW50c1tpXTtcbiAgICAgIHNwZWFrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgICBzcGVha2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgfVxuXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgdGhpcy5rbm9iQ29vcmRpbmF0ZXMgPSB7XG4gICAgICB4OiB0aGlzLnZhbHVlLngubm9ybWFsaXplZCAqIHRoaXMud2lkdGgsXG4gICAgICB5OiB0aGlzLmhlaWdodCAtIHRoaXMudmFsdWUueS5ub3JtYWxpemVkICogdGhpcy5oZWlnaHRcbiAgICB9O1xuXG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMua25vYkNvb3JkaW5hdGVzLngpO1xuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmtub2JDb29yZGluYXRlcy55KTtcbiAgfVxuXG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5wb3NpdGlvbi54LmFuY2hvciA9IHRoaXMubW91c2U7XG4gICAgdGhpcy5wb3NpdGlvbi55LmFuY2hvciA9IHRoaXMubW91c2U7XG4gICAgdGhpcy5tb3ZlKCk7XG4gIH1cblxuICBtb3ZlKCkge1xuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMucG9zaXRpb24ueC51cGRhdGUodGhpcy5tb3VzZSk7XG4gICAgICB0aGlzLnBvc2l0aW9uLnkudXBkYXRlKHRoaXMubW91c2UpO1xuICAgICAgLy8gcG9zaXRpb24ueCBhbmQgcG9zaXRpb24ueSBhcmUgbm9ybWFsaXplZFxuICAgICAgLy8gc28gYXJlIHRoZSBsZXZlbHNcbiAgICAgIC8vIGxpa2VseSBkb24ndCBuZWVkIHRoaXMudmFsdWUgYXQgYWxsIC0tIG9ubHkgdXNlZCBmb3IgZHJhd2luZ1xuICAgICAgLy8gbm90IGdvaW5nIHRvIGJlIGEgJ3N0ZXAnIG9yICdtaW4nIGFuZCAnbWF4JyBpbiB0aGlzIG9uZS5cbiAgICAgIHRoaXMuY2FsY3VsYXRlTGV2ZWxzKCk7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5sZXZlbHMpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICByZWxlYXNlKCkge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy52YWx1ZS54Lm5vcm1hbGl6ZWQsXG4gICAgICB5OiB0aGlzLnZhbHVlLnkubm9ybWFsaXplZFxuICAgIH07XG4gIH1cblxuICBjYWxjdWxhdGVMZXZlbHMoKSB7XG4gICAgdGhpcy52YWx1ZS54LnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi54LnZhbHVlICk7XG4gICAgdGhpcy52YWx1ZS55LnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi55LnZhbHVlICk7XG4gICAgdGhpcy5sZXZlbHMgPSBbXTtcbiAgICB0aGlzLnNwZWFrZXJzLmZvckVhY2goKHMsaSkgPT4ge1xuICAgICAgbGV0IGRpc3RhbmNlID0gbWF0aC5kaXN0YW5jZShzWzBdKnRoaXMud2lkdGgsc1sxXSp0aGlzLmhlaWdodCx0aGlzLnBvc2l0aW9uLngudmFsdWUqdGhpcy53aWR0aCwoMS10aGlzLnBvc2l0aW9uLnkudmFsdWUpKnRoaXMuaGVpZ2h0KTtcbiAgICAgIGxldCBsZXZlbCA9IG1hdGguY2xpcCgxLWRpc3RhbmNlLyh0aGlzLnJhbmdlKnRoaXMud2lkdGgpLDAsMSk7XG4gICAgICB0aGlzLmxldmVscy5wdXNoKGxldmVsKTtcbiAgICAgIHRoaXMuc3BlYWtlckVsZW1lbnRzW2ldLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywgbGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gIE1vdmUgdGhlIGF1ZGlvIHNvdXJjZSBub2RlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEBwYXJhbSB4IHtudW1iZXJ9IE5ldyB4IGxvY2F0aW9uLCBub3JtYWxpemVkIDAtMVxuICBAcGFyYW0geSB7bnVtYmVyfSBOZXcgeSBsb2NhdGlvbiwgbm9ybWFsaXplZCAwLTFcbiAgKi9cbiAgbW92ZVNvdXJjZSh4LHkpIHtcbiAgICBsZXQgbG9jYXRpb24gPSB7XG4gICAgICB4OiB4KnRoaXMud2lkdGgsXG4gICAgICB5OiB5KnRoaXMuaGVpZ2h0XG4gICAgfTtcbiAgICB0aGlzLnBvc2l0aW9uLngudXBkYXRlKGxvY2F0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uLnkudXBkYXRlKGxvY2F0aW9uKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxldmVscygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLmxldmVscyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBNb3ZlIGEgc3BlYWtlciBub2RlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEBwYXJhbSBpbmRleCB7bnVtYmVyfSBJbmRleCBvZiB0aGUgc3BlYWtlciB0byBtb3ZlXG4gIEBwYXJhbSB4IHtudW1iZXJ9IE5ldyB4IGxvY2F0aW9uLCBub3JtYWxpemVkIDAtMVxuICBAcGFyYW0geSB7bnVtYmVyfSBOZXcgeSBsb2NhdGlvbiwgbm9ybWFsaXplZCAwLTFcbiAgKi9cbiAgbW92ZVNwZWFrZXIoaW5kZXgseCx5KSB7XG5cbiAgICB0aGlzLnNwZWFrZXJzW2luZGV4XSA9IFt4LHldO1xuICAgIHRoaXMuc3BlYWtlckVsZW1lbnRzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ2N4JywgeCp0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNwZWFrZXJFbGVtZW50c1tpbmRleF0uc2V0QXR0cmlidXRlKCdjeScsIHkqdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMuY2FsY3VsYXRlTGV2ZWxzKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMubGV2ZWxzKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuICAvKipcbiAgU2V0IGFsbCBzcGVha2VyIGxvY2F0aW9uc1xuICBAcGFyYW0gbG9jYXRpb25zIHtBcnJheX0gQXJyYXkgb2Ygc3BlYWtlciBsb2NhdGlvbnMuIEVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgc2hvdWxkIGJlIGFuIGFycmF5IG9mIG5vcm1hbGl6ZWQgeCBhbmQgeSBjb29yZGluYXRlcy5cblxuICBzZXRTcGVha2Vycyhsb2NhdGlvbnMpIHtcblxuICB9XG4gICovXG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3BhbjJkLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgbWF0aCA9IHJlcXVpcmUoJy4uL3V0aWwvbWF0aCcpO1xubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcblxuLyoqXG4qIFRpbHRcbipcbiogQGRlc2NyaXB0aW9uIERldmljZSB0aWx0IHNlbnNvciB3aXRoIDIgb3IgMyBheGVzIChkZXBlbmRpbmcgb24geW91ciBkZXZpY2UgYW5kIGJyb3dzZXIpLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT0ndGlsdCc+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgdGlsdCA9IG5ldyBOZXh1cy5UaWx0KCcjdGFyZ2V0JylcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYXQgYSByZWd1bGFyIGludGVydmFsLCBhcyBsb25nIGFzIHRoaXMgaW50ZXJmYWNlIGlzIGFjdGl2ZSAoc2VlIHRoZSBpbnRlcmZhY2UncyA8aT4uYWN0aXZlPC9pPiBwcm9wZXJ0eSk8YnI+XG4qIFRoZSBldmVudCBkYXRhIGlzIGFuIDxpPm9iamVjdDwvaT4gY29udGFpbmluZyB4IChudW1iZXIpIGFuZCB5IChudW1iZXIpIHByb3BlcnRpZXMgd2hpY2ggcmVwcmVzZW50IHRoZSBjdXJyZW50IHRpbHQgc3RhdGUgb2YgdGhlIGRldmljZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogdGlsdC5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaWx0IGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIGxldCBvcHRpb25zID0gWyd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgJ3NpemUnOiBbODAsODBdXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLmluaXQoKTtcblxuICAgIC8vIGFkZCBldmVudCBsaXN0ZW5lciBmb3IgZGV2aWNlIG9yaWVudGF0aW9uXG5cbiAgXHR0aGlzLmJvdW5kVXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcbiAgLy9cdHRoaXMuYm91bmRNb3pUaWx0ID0gdGhpcy5tb3pUaWx0LmJpbmQodGhpcylcblxuICBcdGlmICh3aW5kb3cuRGV2aWNlT3JpZW50YXRpb25FdmVudCkge1xuICBcdFx0dGhpcy5vcmllbnRhdGlvbkxpc3RlbmVyID0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2RldmljZW9yaWVudGF0aW9uJywgdGhpcy5ib3VuZFVwZGF0ZSwgZmFsc2UpO1xuICBcdH0gZWxzZSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29sb3JJbnRlcmZhY2UoKTtcbiAgICB9XG5cblxuXG4gICAgICAvKmVsc2UgaWYgKHdpbmRvdy5PcmllbnRhdGlvbkV2ZW50KSB7XG4gIC8vXHQgIFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ01vek9yaWVudGF0aW9uJywgdGhpcy5ib3VuZE1velRpbHQsIGZhbHNlKTtcbiAgXHR9IGVsc2Uge1xuICBcdCAgXHRjb25zb2xlLmxvZygnTm90IHN1cHBvcnRlZCBvbiB5b3VyIGRldmljZSBvciBicm93c2VyLicpO1xuICBcdH0gKi9cblxuXG4gIH1cblxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy50aXRsZSA9IHN2Zy5jcmVhdGUoJ3RleHQnKTtcbiAgICB0aGlzLmNpcmNsZVggPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmNpcmNsZVkgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmNpcmNsZVogPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcblxuICAgIHRoaXMuYmFyWCA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmJhclkgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG4gICAgdGhpcy5iYXJaID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuXG4gICAgdGhpcy5iYXJYMiA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmJhclkyID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuICAgIHRoaXMuYmFyWjIgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG5cbiAgICB0aGlzLmJhclguc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC44Jyk7XG4gICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsJzAuOCcpO1xuICAgIHRoaXMuYmFyWi5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCcwLjgnKTtcbiAgICB0aGlzLmJhclgyLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsJzAuOCcpO1xuICAgIHRoaXMuYmFyWTIuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC44Jyk7XG4gICAgdGhpcy5iYXJaMi5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCcwLjgnKTtcblxuICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoKjMvMTIpO1xuICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodCozLzQpO1xuICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMuaGVpZ2h0LzEwKTtcbiAgICB0aGlzLmNpcmNsZVguc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC40Jyk7XG5cbiAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aCo2LzEyKTtcbiAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5oZWlnaHQqMy80KTtcbiAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmhlaWdodC8xMCk7XG4gICAgdGhpcy5jaXJjbGVZLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsJzAuNCcpO1xuXG4gICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMud2lkdGgqOS8xMik7XG4gICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMuaGVpZ2h0KjMvNCk7XG4gICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgncicsdGhpcy5oZWlnaHQvMTApO1xuICAgIHRoaXMuY2lyY2xlWi5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCcwLjQnKTtcblxuXG4gICAgdGhpcy5iYXJYLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG4gICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG4gICAgdGhpcy5iYXJaLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG5cbiAgICB0aGlzLmJhclguc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICB0aGlzLmJhclkuc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICB0aGlzLmJhclouc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcblxuICAgIHRoaXMuYmFyWDIuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLE1hdGgucm91bmQodGhpcy5oZWlnaHQvMzApKTtcbiAgICB0aGlzLmJhclkyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG4gICAgdGhpcy5iYXJaMi5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsTWF0aC5yb3VuZCh0aGlzLmhlaWdodC8zMCkpO1xuXG4gICAgdGhpcy5iYXJYMi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpO1xuICAgIHRoaXMuYmFyWTIuc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICB0aGlzLmJhcloyLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cblxuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCd4Jyx0aGlzLndpZHRoLzIpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCd5Jyx0aGlzLmhlaWdodC8zKzcpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdmb250LXNpemUnLCcxNXB4Jyk7XG4gICAgdGhpcy50aXRsZS5zZXRBdHRyaWJ1dGUoJ2ZvbnQtd2VpZ2h0JywnYm9sZCcpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdsZXR0ZXItc3BhY2luZycsJzJweCcpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC43Jyk7XG4gICAgdGhpcy50aXRsZS5zZXRBdHRyaWJ1dGUoJ3RleHQtYW5jaG9yJywnbWlkZGxlJyk7XG4gICAgdGhpcy50aXRsZS50ZXh0Q29udGVudCA9ICdUSUxUJztcblxuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2lyY2xlWCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2lyY2xlWSk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2lyY2xlWik7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJYKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJZKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJaKTtcblxuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJhclgyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJZMik7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYmFyWjIpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGl0bGUpO1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcblxuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5hY2NlbnQ7XG4gICAgICB0aGlzLmNpcmNsZVguc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVouc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVguc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLmxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubGlnaHQpO1xuICAgICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhclguc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLmxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubGlnaHQpO1xuICAgICAgdGhpcy5iYXJaLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhclgyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhclkyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhcloyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLnRpdGxlLnNldEF0dHJpYnV0ZSgnZmlsbCcsdGhpcy5jb2xvcnMubGlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgICAgdGhpcy5jaXJjbGVZLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVouc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgICB0aGlzLmJhclouc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWDIuc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWTIuc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWjIuc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgfVxuXG4gIH1cblxuICB1cGRhdGUodikge1xuICAgIGlmICh0aGlzLl9hY3RpdmUpe1xuXG4gICAgICBsZXQgeSA9IHYuYmV0YTtcbiAgICAgIGxldCB4ID0gdi5nYW1tYTtcbiAgICAgIGxldCB6ID0gdi5hbHBoYTtcblxuICAgICAgLy8gdGFrZSB0aGUgb3JpZ2luYWwgLTkwIHRvIDkwIHNjYWxlIGFuZCBub3JtYWxpemUgaXQgMC0xXG4gICAgICB4ID0gbWF0aC5zY2FsZSh4LC05MCw5MCwwLDEpO1xuICAgICAgeSA9IG1hdGguc2NhbGUoeSwtOTAsOTAsMCwxKTtcbiAgICAgIHogPSBtYXRoLnNjYWxlKHosMCwzNjAsMCwxKTtcblxuXG4gICAgICBsZXQgaGFuZGxlUG9pbnRzID0ge1xuICAgICAgICBzdGFydDogTWF0aC5QSSoxLjUsXG4gICAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHgsMCwwLjUsTWF0aC5QSSoxLjUsTWF0aC5QSSowLjUpICwgTWF0aC5QSSowLjUsIE1hdGguUEkqMS41IClcbiAgICAgIH07XG4gICAgICBsZXQgaGFuZGxlMlBvaW50cyA9IHtcbiAgICAgICAgc3RhcnQ6IE1hdGguUEkqMi41LFxuICAgICAgICBlbmQ6IG1hdGguY2xpcCggbWF0aC5zY2FsZSh4LDAuNSwxLE1hdGguUEkqMi41LE1hdGguUEkqMS41KSAsIE1hdGguUEkqMS41LCBNYXRoLlBJKjIuNSApXG4gICAgICB9O1xuXG4gICAgICBsZXQgaGFuZGxlUGF0aCA9IHN2Zy5hcmModGhpcy5jaXJjbGVYLmN4LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWC5jeS5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVguci5iYXNlVmFsLnZhbHVlLCBoYW5kbGVQb2ludHMuc3RhcnQsIGhhbmRsZVBvaW50cy5lbmQpO1xuICAgICAgbGV0IGhhbmRsZTJQYXRoID0gc3ZnLmFyYyh0aGlzLmNpcmNsZVguY3guYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVYLmN5LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWC5yLmJhc2VWYWwudmFsdWUsIGhhbmRsZTJQb2ludHMuc3RhcnQsIGhhbmRsZTJQb2ludHMuZW5kKTtcblxuICAgICAgdGhpcy5iYXJYLnNldEF0dHJpYnV0ZSgnZCcsIGhhbmRsZVBhdGgpO1xuICAgICAgdGhpcy5iYXJYMi5zZXRBdHRyaWJ1dGUoJ2QnLCBoYW5kbGUyUGF0aCk7XG5cblxuXG5cblxuICAgICAgaGFuZGxlUG9pbnRzID0ge1xuICAgICAgICBzdGFydDogTWF0aC5QSSoxLjUsXG4gICAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHksMCwwLjUsTWF0aC5QSSoxLjUsTWF0aC5QSSowLjUpICwgTWF0aC5QSSowLjUsIE1hdGguUEkqMS41IClcbiAgICAgIH07XG4gICAgICBoYW5kbGUyUG9pbnRzID0ge1xuICAgICAgICBzdGFydDogTWF0aC5QSSoyLjUsXG4gICAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHksMC41LDEsTWF0aC5QSSoyLjUsTWF0aC5QSSoxLjUpICwgTWF0aC5QSSoxLjUsIE1hdGguUEkqMi41IClcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZVBhdGggPSBzdmcuYXJjKHRoaXMuY2lyY2xlWS5jeC5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVkuY3kuYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVZLnIuYmFzZVZhbC52YWx1ZSwgaGFuZGxlUG9pbnRzLnN0YXJ0LCBoYW5kbGVQb2ludHMuZW5kKTtcbiAgICAgIGhhbmRsZTJQYXRoID0gc3ZnLmFyYyh0aGlzLmNpcmNsZVkuY3guYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVZLmN5LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWS5yLmJhc2VWYWwudmFsdWUsIGhhbmRsZTJQb2ludHMuc3RhcnQsIGhhbmRsZTJQb2ludHMuZW5kKTtcblxuICAgICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnZCcsIGhhbmRsZVBhdGgpO1xuICAgICAgdGhpcy5iYXJZMi5zZXRBdHRyaWJ1dGUoJ2QnLCBoYW5kbGUyUGF0aCk7XG5cblxuXG5cblxuXG4gICAgICBoYW5kbGVQb2ludHMgPSB7XG4gICAgICAgIHN0YXJ0OiBNYXRoLlBJKjEuNSxcbiAgICAgICAgZW5kOiBtYXRoLmNsaXAoIG1hdGguc2NhbGUoeiwwLDAuNSxNYXRoLlBJKjEuNSxNYXRoLlBJKjAuNSkgLCBNYXRoLlBJKjAuNSwgTWF0aC5QSSoxLjUgKVxuICAgICAgfTtcbiAgICAgIGhhbmRsZTJQb2ludHMgPSB7XG4gICAgICAgIHN0YXJ0OiBNYXRoLlBJKjIuNSxcbiAgICAgICAgZW5kOiBtYXRoLmNsaXAoIG1hdGguc2NhbGUoeiwwLjUsMSxNYXRoLlBJKjIuNSxNYXRoLlBJKjEuNSkgLCBNYXRoLlBJKjEuNSwgTWF0aC5QSSoyLjUgKVxuICAgICAgfTtcblxuICAgICAgaGFuZGxlUGF0aCA9IHN2Zy5hcmModGhpcy5jaXJjbGVaLmN4LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWi5jeS5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVouci5iYXNlVmFsLnZhbHVlLCBoYW5kbGVQb2ludHMuc3RhcnQsIGhhbmRsZVBvaW50cy5lbmQpO1xuICAgICAgaGFuZGxlMlBhdGggPSBzdmcuYXJjKHRoaXMuY2lyY2xlWi5jeC5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVouY3kuYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVaLnIuYmFzZVZhbC52YWx1ZSwgaGFuZGxlMlBvaW50cy5zdGFydCwgaGFuZGxlMlBvaW50cy5lbmQpO1xuXG4gICAgICB0aGlzLmJhclouc2V0QXR0cmlidXRlKCdkJywgaGFuZGxlUGF0aCk7XG4gICAgICB0aGlzLmJhcloyLnNldEF0dHJpYnV0ZSgnZCcsIGhhbmRsZTJQYXRoKTtcblxuXG4gICAgICAvKlxuXG4gICAgICBsZXQgcG9pbnRzWCA9IHtcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogbWF0aC5zY2FsZSggeCwgMCwgMSwgMCwgTWF0aC5QSSoyIClcbiAgICAgIH07XG5cbiAgICAvLyAgY29uc29sZS5sb2codGhpcy5jaXJjbGVYLmN4LmJhc2VWYWwudmFsdWUpO1xuXG4gICAgICBsZXQgcGF0aFggPSBzdmcuYXJjKHRoaXMuY2lyY2xlWC5jeC5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVguY3kuYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVYLnIuYmFzZVZhbC52YWx1ZSoyLCBwb2ludHNYLnN0YXJ0LCBwb2ludHNYLmVuZCk7XG5cbiAgICAgIHRoaXMuYmFyWC5zZXRBdHRyaWJ1dGUoJ2QnLHBhdGhYKTsgKi9cblxuICAgICAgLy90aGlzLnRleHRILnRleHRDb250ZW50ID0gbWF0aC5wcnVuZSh4LDIpO1xuICAgICAgLy90aGlzLnRleHRWLnRleHRDb250ZW50ID0gbWF0aC5wcnVuZSh5LDIpO1xuICAgICAgLy9cbiAgICAvLyAgdGhpcy5jaXJjbGVYLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScseCk7XG4gICAgLy8gIHRoaXMuY2lyY2xlWS5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLHkpO1xuICAgIC8vICB0aGlzLmNpcmNsZVouc2V0QXR0cmlidXRlKCdvcGFjaXR5Jyx6KTtcblxuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHo6IHpcbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gIH1cblxuICBjbGljaygpIHtcbiAgICBpZiAod2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSBpbnRlcmZhY2UgaXMgb24gKGVtaXR0aW5nIHZhbHVlcykgb3Igb2ZmIChwYXVzZWQgJiBub3QgZW1pdHRpbmcgdmFsdWVzKS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgdXBkYXRlIGl0LlxuICBAdHlwZSB7Ym9vbGVhbn1cbiAgKi9cblxuICBnZXQgYWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICBzZXQgYWN0aXZlKG9uKSB7XG4gICAgdGhpcy5fYWN0aXZlID0gb247XG4gICAgdGhpcy5jb2xvckludGVyZmFjZSgpO1xuICB9XG5cbiAgY3VzdG9tRGVzdHJveSgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZGV2aWNlb3JpZW50YXRpb24nLCB0aGlzLmJvdW5kVXBkYXRlLCBmYWxzZSk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvdGlsdC5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5cblxuLyoqXG4qIE11bHRpc2xpZGVyXG4qXG4qIEBkZXNjcmlwdGlvbiBNdWx0aXNsaWRlclxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cIm11bHRpc2xpZGVyXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgbXVsdGlzbGlkZXIgPSBuZXcgTmV4dXMuTXVsdGlzbGlkZXIoJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgbXVsdGlzbGlkZXIgPSBuZXcgTmV4dXMuTXVsdGlzbGlkZXIoJyN0YXJnZXQnLHtcbiogICdzaXplJzogWzIwMCwxMDBdLFxuKiAgJ251bWJlck9mU2xpZGVycyc6IDUsXG4qICAnbWluJzogMCxcbiogICdtYXgnOiAxLFxuKiAgJ3N0ZXAnOiAwLFxuKiAgJ2NhbmR5Y2FuZSc6IDMsXG4qICAndmFsdWVzJzogWzAuOSwwLjgsMC43LDAuNiwwLjUsMC40LDAuMywwLjIsMC4xXSxcbiogICdzbW9vdGhpbmcnOiAwLFxuKiAgJ21vZGUnOiAnYmFyJyAgLy8gJ2Jhcicgb3IgJ2xpbmUnXG4qfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIGludGVyZmFjZSdzIHZhbHVlIGNoYW5nZXMuIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgPGk+aW5kZXg8L2k+IGFuZCA8aT52YWx1ZTwvaT4gcHJvcGVydGllc1xuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBtdWx0aXNsaWRlci5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aXNsaWRlciBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzIwMCwxMDBdLFxuICAgICAgJ251bWJlck9mU2xpZGVycyc6IDUsXG4gICAgICAnbWluJzogMCxcbiAgICAgICdtYXgnOiAxLFxuICAgICAgJ3N0ZXAnOiAwLFxuICAgICAgJ2NhbmR5Y2FuZSc6IDMsXG4gICAgICAndmFsdWVzJzogWzAuOSwwLjgsMC43LDAuNiwwLjUsMC40LDAuMywwLjIsMC4xXSxcbiAgICAgICdzbW9vdGhpbmcnOiAwLFxuICAgICAgJ21vZGUnOiAnYmFyJyAgLy8gJ2JhcicsICdsaW5lJ1xuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLl9udW1iZXJPZlNsaWRlcnMgPSB0aGlzLnNldHRpbmdzLm51bWJlck9mU2xpZGVycztcbiAgICB0aGlzLl9taW4gPSB0aGlzLnNldHRpbmdzLm1pbjtcbiAgICB0aGlzLl9tYXggPSB0aGlzLnNldHRpbmdzLm1heDtcbiAgICB0aGlzLl9zdGVwID0gdGhpcy5zZXR0aW5ncy5zdGVwO1xuXG4gICAgdGhpcy5fbW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIC8qKlxuICAgIFRoZSBjdXJyZW50IHZhbHVlcyBvZiB0aGUgc2xpZGVyLiBOT1RFOiBVc2UgdGhpcyBvbmx5IHRvIGdldCB0aGUgY3VycmVudCB2YWx1ZXMuIFNldHRpbmcgdGhpcyBhcnJheSB3aWxsIG5vdCB1cGRhdGUgdGhlIG11bHRpc2xpZGVyLiBUbyBzZXQgdGhlIG11bHRpc2xpZGVyJ3MgdmFsdWVzLCB1c2Ugc2V0U2xpZGVyKCkgb3Igc2V0QWxsU2xpZGVycygpXG4gICAgQHR5cGUge0FycmF5fVxuICAgICovXG4gICAgdGhpcy52YWx1ZXMgPSB0aGlzLnNldHRpbmdzLnZhbHVlcztcblxuICAgIHRoaXMuY2FuZHljYW5lID0gdGhpcy5zZXR0aW5ncy5jYW5keWNhbmU7XG5cbiAgICB0aGlzLnNsaWRlcldpZHRoID0gdGhpcy53aWR0aCAvIHRoaXMudmFsdWVzLmxlbmd0aDtcblxuICAgIC8qKlxuICAgIEFwcGxpZXMgYSBzaW1wbGUgbG93LXBhc3MgZmlsdGVyIHRvIHRoZSBtdWx0aXNsaWRlciBhcyBpdCBpcyBpbnRlcmFjdGVkIHdpdGguIEEgc21vb3RoaW5nIG9mIDAgd2lsbCBiZSBubyBzbW9vdGhpbmcuIEEgc21vb3RoaW5nIG9mIDEgd2lsbCBzbW9vdGggMSBzbGlkZXIgb24gZWFjaCBzaWRlIG9mIHRoZSBpbnRlcmFjdGlvbi4gQSBzbW9vdGhpbmcgb2YgMiB3aWxsIHNtb290aCAyIHNsaWRlcnMgb24gZWFjaCBzaWRlLCBhbmQgc28gb24uXG4gICAgQHR5cGUge051bWJlcn1cbiAgICAqL1xuICAgIHRoaXMuc21vb3RoaW5nID0gdGhpcy5zZXR0aW5ncy5zbW9vdGhpbmc7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIGlmICh0aGlzLl9tb2RlID09ICdsaW5lJykge1xuXG4gICAgICB0aGlzLmxpbmUgPSBzdmcuY3JlYXRlKCdwb2x5bGluZScpO1xuICAgICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgMik7XG4gICAgICB0aGlzLmxpbmUuc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcblxuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMubGluZSk7XG5cbiAgICAgIHRoaXMuZmlsbCA9IHN2Zy5jcmVhdGUoJ3BvbHlsaW5lJyk7XG4gICAgICB0aGlzLmZpbGwuc2V0QXR0cmlidXRlKCdmaWxsLW9wYWNpdHknLCAnMC4yJyk7XG5cbiAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZpbGwpO1xuXG4gICAgICB0aGlzLm5vZGVzID0gW107XG5cbiAgICAgIHRoaXMudmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7XG5cbiAgICAgICAgbGV0IG5vZGUgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcblxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnY3gnLCB0aGlzLmdldFgoaW5kZXgpKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2N5JywgdGhpcy5nZXRZKHZhbHVlKSk7XG5cbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCBub2RlICk7XG4gICAgICAgIHRoaXMubm9kZXMucHVzaCggbm9kZSApO1xuXG4gICAgICB9LmJpbmQodGhpcykpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5iYXJzID0gW107XG4gICAgICB0aGlzLmNhcHMgPSBbXTtcblxuICAgICAgdGhpcy52YWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcblxuICAgICAgICBsZXQgYmFyID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuXG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRCYXJYKGluZGV4KTtcbiAgICAgICAgbGV0IHkgPSB0aGlzLmdldFkodmFsdWUpO1xuXG4gICAgICAgIGJhci5zZXRBdHRyaWJ1dGUoJ3gnLCB4IC0gMC4xKTtcbiAgICAgICAgYmFyLnNldEF0dHJpYnV0ZSgneScsIHkpO1xuICAgICAgICBiYXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMuc2xpZGVyV2lkdGggKyAwLjIpO1xuICAgICAgICBiYXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCB0aGlzLmhlaWdodCk7XG4gICAgICAgIGJhci5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCAxLShpbmRleCAlIHRoaXMuY2FuZHljYW5lKzEpLyh0aGlzLmNhbmR5Y2FuZSsxKSk7XG5cbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCBiYXIgKTtcbiAgICAgICAgdGhpcy5iYXJzLnB1c2goIGJhciApO1xuXG5cbiAgICAgICAgbGV0IGNhcCA9IHN2Zy5jcmVhdGUoJ3JlY3QnKTtcblxuICAgICAgICBjYXAuc2V0QXR0cmlidXRlKCd4JywgeCAtIDAuMSk7XG4gICAgICAgIGNhcC5zZXRBdHRyaWJ1dGUoJ3knLCB5KTtcbiAgICAgICAgY2FwLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB0aGlzLnNsaWRlcldpZHRoICsgMC4yKTtcbiAgICAgICAgY2FwLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgNSk7XG5cbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCBjYXAgKTtcbiAgICAgICAgdGhpcy5jYXBzLnB1c2goIGNhcCApO1xuXG5cblxuXG4gICAgICB9LmJpbmQodGhpcykpO1xuXG5cbiAgICB9XG5cbiAgfVxuXG4gIGdldEJhclgoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRYKGluZGV4KSAtIHRoaXMuc2xpZGVyV2lkdGgvMjtcbiAgfVxuXG4gIGdldFgoaW5kZXgpIHtcbiAgICAvL3JldHVybiBNYXRoLmZsb29yKCBpbmRleCAqIHRoaXMuc2xpZGVyV2lkdGggKyB0aGlzLnNsaWRlcldpZHRoLzIgKTtcbiAgICByZXR1cm4gaW5kZXggKiB0aGlzLnNsaWRlcldpZHRoICsgdGhpcy5zbGlkZXJXaWR0aC8yO1xuICB9XG5cbiAgZ2V0WSh2YWx1ZSkge1xuICAgIHJldHVybiBtYXRoLnNjYWxlKHZhbHVlLHRoaXMuX21pbix0aGlzLl9tYXgsdGhpcy5oZWlnaHQsMCk7ICAgLy8oMSAtIHZhbHVlKSAqIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgZ2V0VmFsdWVGcm9tWSh5KSB7XG4gICAgbGV0IHNjYWxlQWRqdXN0ZWQgPSBtYXRoLnNjYWxlKHksIHRoaXMuaGVpZ2h0LCAwLCB0aGlzLl9taW4sIHRoaXMuX21heCk7XG4gICAgcmV0dXJuIHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAoc2NhbGVBZGp1c3RlZCk7XG4gIH1cblxuICBnZXRJbmRleEZyb21YKHgpIHtcbiAgICByZXR1cm4gbWF0aC5jbGlwKCBNYXRoLmZsb29yKCh4IC8gdGhpcy53aWR0aCkgKiAodGhpcy52YWx1ZXMubGVuZ3RoKSksIDAsIHRoaXMudmFsdWVzLmxlbmd0aC0xKTtcbiAgfVxuXG4gIGFkanVzdFZhbHVlVG9TdGVwKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLl9zdGVwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSB2YWx1ZSV0aGlzLl9zdGVwO1xuICAgIHZhbHVlID0gdmFsdWUgLSAodmFsdWUldGhpcy5fc3RlcCk7XG4gICAgaWYgKG9mZnNldCA+IHRoaXMuX3N0ZXAvMikge1xuICAgICAgdmFsdWUgKz0gdGhpcy5fc3RlcDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRqdXN0QWxsVmFsdWVzKCkge1xuICAgIHRoaXMudmFsdWVzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5hZGp1c3RWYWx1ZVRvU3RlcCh2YWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlc1tpbmRleF0gPSBtYXRoLmNsaXAodmFsdWUsdGhpcy5fbWluLHRoaXMuX21heCk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGdldE5vcm1hbGl6ZWRWYWx1ZXMoKSB7XG4gICAgdGhpcy5ub3JtYWxpemVkVmFsdWVzID0gW107XG4gICAgdGhpcy52YWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgdGhpcy5ub3JtYWxpemVkVmFsdWVzLnB1c2goIG1hdGguc2NhbGUodmFsdWUsdGhpcy5fbWluLHRoaXMuX21heCwwLDEpICk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG5cbiAgICBpZiAodGhpcy5fbW9kZSA9PSAnbGluZScpIHtcbiAgICAgIHRoaXMubGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgICB0aGlzLmZpbGwuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmFycy5mb3JFYWNoKChiYXIpID0+IHtcbiAgICAgICBiYXIuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNhcHMuZm9yRWFjaCgoY2FwKSA9PiB7XG4gICAgICAgY2FwLnNldEF0dHJpYnV0ZSgnZmlsbCcsdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuc2xpZGVyV2lkdGggPSB0aGlzLndpZHRoIC8gdGhpcy52YWx1ZXMubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuX21vZGUgPT0gJ2xpbmUnKSB7XG4gICAgICB0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBsZXQgciA9IH5+KE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLzUwKSsyO1xuICAgICAgICByID0gTWF0aC5taW4odGhpcy5zbGlkZXJXaWR0aCxyKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3InLHIpO1xuICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuXG4gIHJlbmRlcigpIHtcblxuICAgIGlmICh0aGlzLl9tb2RlID09ICdsaW5lJykge1xuXG4gICAgICBsZXQgZGF0YSA9ICcwICcrIHRoaXMuZ2V0WSh0aGlzLnZhbHVlc1swXSkgKycsICc7XG5cbiAgICAgIHRoaXMudmFsdWVzLmZvckVhY2goKHZhbHVlLGluZGV4KSA9PiB7XG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRYKGluZGV4KTtcbiAgICAgICAgbGV0IHkgPSB0aGlzLmdldFkodmFsdWUpO1xuICAgICAgICBkYXRhICs9IHggKyAnICcgKyB5ICsgJywgJztcbiAgICAgICAgdGhpcy5ub2Rlc1tpbmRleF0uc2V0QXR0cmlidXRlKCdjeCcsIHRoaXMuZ2V0WChpbmRleCkpO1xuICAgICAgICB0aGlzLm5vZGVzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ2N5JywgdGhpcy5nZXRZKHZhbHVlKSk7XG4gICAgICB9KTtcblxuICAgICAgZGF0YSArPSB0aGlzLndpZHRoICsgJyAnICsgdGhpcy5nZXRZKHRoaXMudmFsdWVzW3RoaXMudmFsdWVzLmxlbmd0aC0xXSk7XG5cbiAgICAgIHRoaXMubGluZS5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGRhdGEpO1xuXG4gICAgICAvLyBmaWxsIGRhdGFcbiAgICAgIC8vIGFkZCBib3R0b20gY29ybmVyc1xuXG4gICAgICBkYXRhICs9ICcsICcrdGhpcy53aWR0aCArJyAnK3RoaXMuaGVpZ2h0KycsICc7XG4gICAgICBkYXRhICs9ICcwICcrdGhpcy5oZWlnaHQ7XG5cbiAgICAgIHRoaXMuZmlsbC5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGRhdGEpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy52YWx1ZXMuZm9yRWFjaCgodmFsdWUsaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5iYXJzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ3knLCB0aGlzLmdldFkodmFsdWUpKTtcbiAgICAgICAgdGhpcy5jYXBzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ3knLCB0aGlzLmdldFkodmFsdWUpKTtcbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gIH1cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmhhc01vdmVkID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2aW91c1NsaWRlciA9IGZhbHNlO1xuICAgIHRoaXMubW92ZSgpO1xuICB9XG5cbiAgbW92ZSgpIHtcbiAgXHRpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLm1vdXNlLnggPSBtYXRoLmNsaXAodGhpcy5tb3VzZS54LDAsdGhpcy53aWR0aCk7XG4gICAgICB0aGlzLm1vdXNlLnkgPSBtYXRoLmNsaXAodGhpcy5tb3VzZS55LDAsdGhpcy5oZWlnaHQpO1xuICAgICAgdGhpcy5oYXNNb3ZlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRTbGlkZXIgPSB0aGlzLmdldEluZGV4RnJvbVgodGhpcy5tb3VzZS54KTtcblxuICAgICAgdGhpcy52YWx1ZXNbdGhpcy5zZWxlY3RlZFNsaWRlcl0gPSB0aGlzLmdldFZhbHVlRnJvbVkodGhpcy5tb3VzZS55KTtcblxuICAgICAgLyogaGFuZGxlIGludGVycG9sYXRpb24gZm9yIGluLWJldHdlZW4gc2xpZGVycyAqL1xuXG4gICAgICBpZiAodGhpcy5wcmV2aW91c1NsaWRlciAhPT0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGRpc3RhbmNlID0gTWF0aC5hYnModGhpcy5wcmV2aW91c1NsaWRlci10aGlzLnNlbGVjdGVkU2xpZGVyKTtcbiAgICAgICAgaWYgKCBkaXN0YW5jZSA+IDEgKSB7XG4gICAgICAgICAgbGV0IGxvdyA9IE1hdGgubWluKHRoaXMucHJldmlvdXNTbGlkZXIsdGhpcy5zZWxlY3RlZFNsaWRlcik7XG4gICAgICAgICAgbGV0IGhpZ2ggPSBNYXRoLm1heCh0aGlzLnByZXZpb3VzU2xpZGVyLHRoaXMuc2VsZWN0ZWRTbGlkZXIpO1xuICAgICAgICAgIGxldCBsb3dWYWx1ZSA9IHRoaXMudmFsdWVzW2xvd107XG4gICAgICAgICAgbGV0IGhpZ2hWYWx1ZSA9IHRoaXMudmFsdWVzW2hpZ2hdO1xuICAgICAgICAgIGZvciAobGV0IGk9bG93O2k8aGlnaDtpKyspIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzW2ldID0gbWF0aC5pbnRlcnAoIChpLWxvdykvZGlzdGFuY2UsIGxvd1ZhbHVlLCBoaWdoVmFsdWUgKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzW2ldID0gdGhpcy5hZGp1c3RWYWx1ZVRvU3RlcCh0aGlzLnZhbHVlc1tpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNtb290aGluZyA+IDApIHtcblxuICAgICAgICBmb3IgKHZhciBpPTE7aTw9dGhpcy5zbW9vdGhpbmc7aSsrKSB7XG4gICAgICAgICAgbGV0IGRvd25DZW50ZXIgPSB0aGlzLnNlbGVjdGVkU2xpZGVyIC0gaTtcbiAgICAgICAgICBsZXQgdXBDZW50ZXIgPSB0aGlzLnNlbGVjdGVkU2xpZGVyICsgaTtcblxuICAgICAgICAgIGlmIChkb3duQ2VudGVyID49IDEpIHtcbiAgICAgICAgICAgIGxldCBkb3duTG93ZXJOZWlnaGJvciA9IGRvd25DZW50ZXIgLSAxID49IDAgPyBkb3duQ2VudGVyLTEgOiAwO1xuICAgICAgICAgICAgbGV0IGRvd25VcHBlck5laWdoYm9yID0gZG93bkNlbnRlciArIDE7XG4gICAgICAgICAgICB0aGlzLnZhbHVlc1tkb3duQ2VudGVyXSA9ICh0aGlzLnZhbHVlc1tkb3duTG93ZXJOZWlnaGJvcl0gKyB0aGlzLnZhbHVlc1tkb3duVXBwZXJOZWlnaGJvcl0pIC8gMjtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzW2Rvd25DZW50ZXJdID0gdGhpcy5hZGp1c3RWYWx1ZVRvU3RlcCh0aGlzLnZhbHVlc1tkb3duQ2VudGVyXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVwQ2VudGVyIDwgdGhpcy52YWx1ZXMubGVuZ3RoLTEpIHtcbiAgICAgICAgICAgIGxldCB1cExvd2VyTmVpZ2hib3IgPSB1cENlbnRlciAtIDE7XG4gICAgICAgICAgICBsZXQgdXBVcHBlck5laWdoYm9yID0gdXBDZW50ZXIgKyAxIDwgdGhpcy52YWx1ZXMubGVuZ3RoID8gdXBDZW50ZXIrMSA6IHRoaXMudmFsdWVzLmxlbmd0aC0xO1xuICAgICAgICAgICAgdGhpcy52YWx1ZXNbdXBDZW50ZXJdID0gKHRoaXMudmFsdWVzW3VwTG93ZXJOZWlnaGJvcl0gKyB0aGlzLnZhbHVlc1t1cFVwcGVyTmVpZ2hib3JdKSAvIDI7XG4gICAgICAgICAgICB0aGlzLnZhbHVlc1t1cENlbnRlcl0gPSB0aGlzLmFkanVzdFZhbHVlVG9TdGVwKHRoaXMudmFsdWVzW3VwQ2VudGVyXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgICB0aGlzLnByZXZpb3VzU2xpZGVyID0gdGhpcy5zZWxlY3RlZFNsaWRlcjtcblxuICBcdFx0dGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWVzKTtcbiAgXHRcdHRoaXMucmVuZGVyKCk7XG4gIFx0fVxuICB9XG5cbiAgLy8gd291bGQgYmUgYSBjb29sIEFQSSBjYWxsIHRvIGhhdmUgZm9yIGxhdGVyLi4uXG4gIHNjYW4oKSB7XG5cbiAgfVxuXG4gIHVwZGF0ZShpbmRleCx2YWx1ZSkge1xuICAgIHRoaXMudmFsdWVzW2luZGV4XSA9IHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAodmFsdWUpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAnaW5kZXgnOiBpbmRleCxcbiAgICAgICd2YWx1ZSc6IHZhbHVlXG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICBHZXQgdGhlIG51bWJlciBvZiBzbGlkZXJzXG4gIEB0eXBlIHtOdW1iZXJ9XG4gICovXG4gIGdldCBudW1iZXJPZlNsaWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aDtcbiAgfVxuXG5cbiAgLyoqXG4gIExvd2VyIGxpbWl0IG9mIHRoZSBtdWx0aXNsaWRlcidzIG91dHB1dCByYW5nZVxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBtdWx0aXNsaWRlci5taW4gPSAxMDAwO1xuICAqL1xuICBnZXQgbWluKCkge1xuICAgIHJldHVybiB0aGlzLl9taW47XG4gIH1cbiAgc2V0IG1pbih2KSB7XG4gICAgdGhpcy5fbWluID0gdjtcbiAgICB0aGlzLmFkanVzdEFsbFZhbHVlcygpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgVXBwZXIgbGltaXQgb2YgdGhlIG11bHRpc2xpZGVyJ3Mgb3V0cHV0IHJhbmdlXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIG11bHRpc2xpZGVyLm1heCA9IDEwMDA7XG4gICovXG4gIGdldCBtYXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuICBzZXQgbWF4KHYpIHtcbiAgICB0aGlzLl9tYXggPSB2O1xuICAgIHRoaXMuYWRqdXN0QWxsVmFsdWVzKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBUaGUgaW5jcmVtZW50IHRoYXQgdGhlIG11bHRpc2xpZGVyJ3MgdmFsdWUgY2hhbmdlcyBieS5cbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgbXVsdGlzbGlkZXIuc3RlcCA9IDU7XG4gICovXG4gIGdldCBzdGVwKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGVwO1xuICB9XG4gIHNldCBzdGVwKHYpIHtcbiAgICB0aGlzLl9zdGVwID0gdjtcbiAgICB0aGlzLmFkanVzdEFsbFZhbHVlcygpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgU2V0IHRoZSB2YWx1ZSBvZiBhbiBpbmRpdmlkdWFsIHNsaWRlclxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gU2xpZGVyIGluZGV4XG4gIEBwYXJhbSB2YWx1ZSB7bnVtYmVyfSBOZXcgc2xpZGVyIHZhbHVlXG4gIEBleGFtcGxlXG4gIC8vIFNldCB0aGUgZmlyc3Qgc2xpZGVyIHRvIHZhbHVlIDAuNVxuICBtdWx0aXNsaWRlci5zZXRTbGlkZXIoMCwwLjUpXG4gICovXG4gIHNldFNsaWRlcihpbmRleCx2YWx1ZSkge1xuICAgIHRoaXMudmFsdWVzW2luZGV4XSA9IHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAodmFsdWUpO1xuICAgIHRoaXMudmFsdWVzW2luZGV4XSA9IG1hdGguY2xpcCh0aGlzLnZhbHVlc1tpbmRleF0sdGhpcy5fbWluLHRoaXMuX21heCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICdpbmRleCc6IGluZGV4LFxuICAgICAgJ3ZhbHVlJzogdmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICBTZXQgdGhlIHZhbHVlIG9mIGFsbCBzbGlkZXJzIGF0IG9uY2UuIElmIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBhcnJheSBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBudW1iZXIgb2Ygc2xpZGVycywgdGhlIHZhbHVlIGFycmF5IHdpbGwgcmVwZWF0IHVudGlsIGFsbCBzbGlkZXJzIGhhdmUgYmVlbiBzZXQuIEkuZS4gYW4gaW5wdXQgYXJyYXkgb2YgbGVuZ3RoIDEgd2lsbCBzZXQgYWxsIHNsaWRlcnMgdG8gdGhhdCB2YWx1ZS5cbiAgQHBhcmFtIHZhbHVlcyB7QXJyYXl9IEFsbCBzbGlkZXIgdmFsdWVzXG4gIEBleGFtcGxlXG4gIG11bHRpc2xpZGVyLnNldEFsbFNsaWRlcnMoWzAuMiwwLjMsMC40LDAuNSwwLjZdKVxuICAqL1xuICBzZXRBbGxTbGlkZXJzKHZhbHVlcykge1xuICAgIGxldCBwcmV2aW91c0xlbmd0aCA9IHRoaXMudmFsdWVzLmxlbmd0aDtcbiAgICBsZXQgbmV3TGVuZ3RoID0gdmFsdWVzLmxlbmd0aDtcbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICB0aGlzLmFkanVzdEFsbFZhbHVlcygpO1xuICAgIGlmIChwcmV2aW91c0xlbmd0aCAhPSBuZXdMZW5ndGgpIHtcbiAgICAgIHRoaXMuZW1wdHkoKTtcbiAgICAgIHRoaXMuYnVpbGRJbnRlcmZhY2UoKTtcbiAgICAgIHRoaXMuY29sb3JJbnRlcmZhY2UoKTtcbiAgICB9XG4gICAgdGhpcy5zaXplSW50ZXJmYWNlKCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvbXVsdGlzbGlkZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IFN0ZXAgPSByZXF1aXJlKCcuLi9tb2RlbHMvc3RlcCcpO1xuaW1wb3J0ICogYXMgSW50ZXJhY3Rpb24gZnJvbSAnLi4vdXRpbC9pbnRlcmFjdGlvbic7XG5cbi8qKlxuKiBQYW5cbipcbiogQGRlc2NyaXB0aW9uIFN0ZXJlbyBjcm9zc2ZhZGVyLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cInBhblwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHBhbiA9IG5ldyBOZXh1cy5QYW4oJyN0YXJnZXQnKVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgaW50ZXJmYWNlJ3MgPGk+dmFsdWU8L2k+ICgtMSB0byAxKSwgYXMgd2VsbCBhcyA8aT5MPC9pPiBhbmQgPGk+UjwvaT4gYW1wbGl0dWRlIHZhbHVlcyAoMC0xKSBmb3IgbGVmdCBhbmQgcmlnaHQgc3BlYWtlcnMsIGNhbGN1bGF0ZWQgYnkgYSBzcXVhcmUtcm9vdCBjcm9zc2ZhZGUgYWxnb3JpdGhtLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBwYW4ub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFuIGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIGxldCBvcHRpb25zID0gWydzY2FsZScsJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsxMjAsMjBdLFxuICAgICAgJ29yaWVudGF0aW9uJzogJ2hvcml6b250YWwnLFxuICAgICAgJ21vZGUnOiAncmVsYXRpdmUnLFxuICAgICAgJ3NjYWxlJzogWy0xLDFdLFxuICAgICAgJ3N0ZXAnOiAwLFxuICAgICAgJ3ZhbHVlJzogMCxcbiAgICAgICdoYXNLbm9iJzogdHJ1ZVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLm9yaWVudGF0aW9uID0gdGhpcy5zZXR0aW5ncy5vcmllbnRhdGlvbjtcblxuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIHRoaXMuaGFzS25vYiA9IHRoaXMuc2V0dGluZ3MuaGFzS25vYjtcblxuICAgIC8vIHRoaXMuc3RlcCBzaG91bGQgZXZlbnR1YWxseSBiZSBnZXQvc2V0XG4gICAgLy8gdXBkYXRpbmcgaXQgd2lsbCB1cGRhdGUgdGhlIF92YWx1ZSBzdGVwIG1vZGVsXG4gICAgdGhpcy5zdGVwID0gdGhpcy5zZXR0aW5ncy5zdGVwOyAvLyBmbG9hdFxuXG4gICAgdGhpcy5fdmFsdWUgPSBuZXcgU3RlcCh0aGlzLnNldHRpbmdzLnNjYWxlWzBdLCB0aGlzLnNldHRpbmdzLnNjYWxlWzFdLCB0aGlzLnNldHRpbmdzLnN0ZXAsIHRoaXMuc2V0dGluZ3MudmFsdWUpO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gbmV3IEludGVyYWN0aW9uLkhhbmRsZSh0aGlzLm1vZGUsdGhpcy5vcmllbnRhdGlvbixbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlLnZhbHVlO1xuXG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuYmFyID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuICAgIHRoaXMua25vYiA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYmFyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5rbm9iKTtcblxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgIGlmICh0aGlzLnBvc2l0aW9uKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLnJlc2l6ZShbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpZHRoIDwgdGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSAndmVydGljYWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuICAgIH1cblxuICAgIGxldCB4LCB5LCB3LCBoLCBiYXJPZmZzZXQsIGNvcm5lclJhZGl1cztcbiAgICB0aGlzLmtub2JEYXRhID0ge1xuICAgICAgbGV2ZWw6IDAsXG4gICAgICByOiAwXG4gICAgfTtcblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICB0aGlzLnRoaWNrbmVzcyA9IHRoaXMud2lkdGggLyAyO1xuICAgIFx0eCA9IHRoaXMud2lkdGgvMjtcbiAgICBcdHkgPSAwO1xuICAgIFx0dyA9IHRoaXMudGhpY2tuZXNzO1xuICAgIFx0aCA9IHRoaXMuaGVpZ2h0O1xuICAgICAgdGhpcy5rbm9iRGF0YS5yID0gdGhpcy50aGlja25lc3MgKiAwLjg7XG4gICAgXHR0aGlzLmtub2JEYXRhLmxldmVsID0gaC10aGlzLmtub2JEYXRhLnItdGhpcy5ub3JtYWxpemVkKihoLXRoaXMua25vYkRhdGEucioyKTtcbiAgICAgIGJhck9mZnNldCA9ICd0cmFuc2xhdGUoJyt0aGlzLnRoaWNrbmVzcyooLTEpLzIrJywwKSc7XG4gICAgICBjb3JuZXJSYWRpdXMgPSB3LzI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpcy5oZWlnaHQgLyAyO1xuICAgIFx0eCA9IDA7XG4gICAgXHR5ID0gdGhpcy5oZWlnaHQvMjtcbiAgICBcdHcgPSB0aGlzLndpZHRoO1xuICAgIFx0aCA9IHRoaXMudGhpY2tuZXNzO1xuICAgICAgdGhpcy5rbm9iRGF0YS5yID0gdGhpcy50aGlja25lc3MgKiAwLjg7XG4gICAgXHR0aGlzLmtub2JEYXRhLmxldmVsID0gdGhpcy5ub3JtYWxpemVkKih3LXRoaXMua25vYkRhdGEucioyKSt0aGlzLmtub2JEYXRhLnI7XG4gICAgICBiYXJPZmZzZXQgPSAndHJhbnNsYXRlKDAsJyt0aGlzLnRoaWNrbmVzcyooLTEpLzIrJyknO1xuICAgICAgY29ybmVyUmFkaXVzID0gaC8yO1xuICAgIH1cblxuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgneCcseCk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCd5Jyx5KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsYmFyT2Zmc2V0KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3J4Jyxjb3JuZXJSYWRpdXMpOyAvLyBjb3JuZXIgcmFkaXVzXG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdyeScsY29ybmVyUmFkaXVzKTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsaCk7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHgpO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScseSk7XG4gICAgfVxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYkRhdGEucik7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuZmlsbCk7XG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG5cbiAgICBpZiAoIXRoaXMuaGFzS25vYikge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnZmlsbCcsJ3RyYW5zcGFyZW50Jyk7XG4gICAgfVxuXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMua25vYkRhdGEuciA9IHRoaXMudGhpY2tuZXNzKjAuNzU7XG4gICAgfVxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYkRhdGEucik7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICBcdCAgIHRoaXMua25vYkRhdGEubGV2ZWwgPSB0aGlzLmtub2JEYXRhLnIrdGhpcy5fdmFsdWUubm9ybWFsaXplZCoodGhpcy5oZWlnaHQtdGhpcy5rbm9iRGF0YS5yKjIpO1xuICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodCAtIHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgIH0gZWxzZSB7XG4gIFx0ICAgdGhpcy5rbm9iRGF0YS5sZXZlbCA9IHRoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQqKHRoaXMud2lkdGgtdGhpcy5rbm9iRGF0YS5yKjIpK3RoaXMua25vYkRhdGEucjtcbiAgICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgfVxuICB9XG5cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmtub2JEYXRhLnIgPSB0aGlzLnRoaWNrbmVzcyowLjk7XG4gICAgdGhpcy5wb3NpdGlvbi5hbmNob3IgPSB0aGlzLm1vdXNlO1xuICAgIHRoaXMubW92ZSgpO1xuICB9XG5cbiAgbW92ZSgpIHtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLnVwZGF0ZSh0aGlzLm1vdXNlKTtcblxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlLnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi52YWx1ZSApO1xuXG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgTDogTWF0aC5wb3coIG1hdGguc2NhbGUodGhpcy52YWx1ZSwtMSwxLDEsMCksIDIpLFxuICAgICAgICBSOiBNYXRoLnBvdyggbWF0aC5zY2FsZSh0aGlzLnZhbHVlLC0xLDEsMCwxKSwgMilcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFRoZSBwb3NpdGlvbiBvZiBjcm9zc2ZhZGVyLCBmcm9tIC0xIChsZWZ0KSB0byAxIChyaWdodCkuIFNldHRpbmcgdGhpcyB2YWx1ZSB1cGRhdGVzIHRoZSBpbnRlcmZhY2UgYW5kIHRyaWdnZXJzIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtudW1iZXJ9XG4gICovXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUudmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl92YWx1ZS51cGRhdGUodmFsdWUpO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIEw6IE1hdGgucG93KCBtYXRoLnNjYWxlKHRoaXMudmFsdWUsLTEsMSwxLDApLCAyKSxcbiAgICAgIFI6IE1hdGgucG93KCBtYXRoLnNjYWxlKHRoaXMudmFsdWUsLTEsMSwwLDEpLCAyKVxuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubm9ybWFsaXplZDtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9wYW4uanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBtYXRoID0gcmVxdWlyZSgnLi4vdXRpbC9tYXRoJyk7XG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xuXG5cbmxldCBQb2ludCA9IGZ1bmN0aW9uKHBvaW50LGVudmVsb3BlKSB7XG5cbiAgdGhpcy54ID0gcG9pbnQueDtcbiAgdGhpcy55ID0gcG9pbnQueTtcblxuICB0aGlzLnhNaW4gPSBwb2ludC54TWluIHx8IDA7XG4gIHRoaXMueE1heCA9IHBvaW50LnhNYXggfHwgMTtcbiAgdGhpcy55TWluID0gcG9pbnQueU1pbiB8fCAwO1xuICB0aGlzLnlNYXggPSBwb2ludC55TWF4IHx8IDE7XG5cbiAgdGhpcy5lbnZlbG9wZSA9IGVudmVsb3BlO1xuXG4gIHRoaXMuZWxlbWVudCA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmVudmVsb3BlLmNvbG9ycy5hY2NlbnQpO1xuXG4gIHRoaXMuZW52ZWxvcGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuXG4gIHRoaXMucmVzaXplID0gZnVuY3Rpb24oKSB7XG4gICAgbGV0IHIgPSB+fihNYXRoLm1pbih0aGlzLmVudmVsb3BlLndpZHRoLHRoaXMuZW52ZWxvcGUuaGVpZ2h0KS81MCkrMjtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdyJyxyKTtcbiAgfTtcblxuICB0aGlzLm1vdmUgPSBmdW5jdGlvbih4LHkpIHtcblxuICAgIHRoaXMueCA9ICh4IHx8IHg9PT0wKSA/IHggOiB0aGlzLng7XG4gICAgdGhpcy55ID0gKHkgfHwgeT09PTApID8geSA6IHRoaXMueTtcblxuICAgIGlmICh0aGlzLmVudmVsb3BlLm5vZGVzLmluZGV4T2YodGhpcyk+PTApIHtcblxuICAgICAgbGV0IHByZXZJbmRleCA9IHRoaXMuZW52ZWxvcGUubm9kZXMuaW5kZXhPZih0aGlzKS0xO1xuICAgICAgbGV0IG5leHRJbmRleCA9IHRoaXMuZW52ZWxvcGUubm9kZXMuaW5kZXhPZih0aGlzKSsxO1xuXG4gICAgICBsZXQgcHJldk5vZGUgPSB0aGlzLmVudmVsb3BlLm5vZGVzW3ByZXZJbmRleF07XG4gICAgICBsZXQgbmV4dE5vZGUgPSB0aGlzLmVudmVsb3BlLm5vZGVzW25leHRJbmRleF07XG5cbiAgICAgIGxldCBsb3dYID0gcHJldkluZGV4ID49IDAgPyBwcmV2Tm9kZS54IDogMDtcblx0ICAgIGxvd1ggPSBsb3dYPHRoaXMueE1pbj90aGlzLnhNaW46bG93WDtcblxuICAgICAgbGV0IGhpZ2hYID0gbmV4dEluZGV4IDwgdGhpcy5lbnZlbG9wZS5ub2Rlcy5sZW5ndGggPyBuZXh0Tm9kZS54IDogMTtcblx0ICAgIGhpZ2hYID0gaGlnaFg+dGhpcy54TWF4P3RoaXMueE1heDpoaWdoWDtcblxuICBcdCAgaWYgKHRoaXMueCA8IGxvd1gpIHsgdGhpcy54ID0gbG93WDsgfVxuICAgICAgaWYgKHRoaXMueCA+IGhpZ2hYKSB7IHRoaXMueCA9IGhpZ2hYOyB9XG5cbiAgICAgIGlmICh0aGlzLnkgPCB0aGlzLnlNaW4pIHsgdGhpcy55ID0gdGhpcy55TWluOyB9XG4gICAgICBpZiAodGhpcy55ID4gdGhpcy55TWF4KSB7IHRoaXMueSA9IHRoaXMueU1heDsgfVxuXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvbiA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdjeCcsIHRoaXMubG9jYXRpb24ueCk7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnY3knLCB0aGlzLmxvY2F0aW9uLnkpO1xuICB9O1xuXG4gIHRoaXMuZ2V0Q29vcmRpbmF0ZXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy54ICogdGhpcy5lbnZlbG9wZS53aWR0aCxcbiAgICAgIHk6ICgxLXRoaXMueSkgKiB0aGlzLmVudmVsb3BlLmhlaWdodFxuICAgIH07XG4gIH07XG5cbiAgdGhpcy5tb3ZlKHRoaXMueCx0aGlzLnksdHJ1ZSk7XG4gIHRoaXMucmVzaXplKCk7XG5cbiAgdGhpcy5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5lbnZlbG9wZS5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5lbnZlbG9wZS5ub2Rlcy5zcGxpY2UodGhpcy5lbnZlbG9wZS5ub2Rlcy5pbmRleE9mKHRoaXMpLDEpO1xuICB9O1xuXG5cbn07XG5cblxuLyoqXG4qIEVudmVsb3BlXG4qXG4qIEBkZXNjcmlwdGlvbiBJbnRlcmFjdGl2ZSBsaW5lYXIgcmFtcCB2aXN1YWxpemF0aW9uLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cImVudmVsb3BlXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgZW52ZWxvcGUgPSBuZXcgTmV4dXMuRW52ZWxvcGUoJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgZW52ZWxvcGUgPSBuZXcgTmV4dXMuRW52ZWxvcGUoJyN0YXJnZXQnLHtcbiogICAnc2l6ZSc6IFszMDAsMTUwXSxcbiogICAnbm9OZXdQb2ludHMnOiBmYWxzZSxcbiogICAncG9pbnRzJzogW1xuKiAgICAge1xuKiAgICAgICB4OiAwLjEsXG4qICAgICAgIHk6IDAuNFxuKiAgICAgfSxcbiogICAgIHtcbiogICAgICAgeDogMC4zNSxcbiogICAgICAgeTogMC42XG4qICAgICB9LFxuKiAgICAge1xuKiAgICAgICB4OiAwLjY1LFxuKiAgICAgICB5OiAwLjJcbiogICAgIH0sXG4qICAgICB7XG4qICAgICAgIHg6IDAuOSxcbiogICAgICAgeTogMC40XG4qICAgICB9LFxuKiAgIF1cbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgYSBub2RlIGlzIG1vdmVkLiA8YnI+XG4qIFRoZSBldmVudCBkYXRhIGlzIGFuIGFycmF5IG9mIHBvaW50IGxvY2F0aW9ucy4gRWFjaCBpdGVtIGluIHRoZSBhcnJheSBpcyBhbiBvYmplY3QgY29udGFpbmluZyA8aT54PC9pPiBhbmQgPGk+eTwvaT4gcHJvcGVydGllcyBkZXNjcmliaW5nIHRoZSBsb2NhdGlvbiBvZiBhIHBvaW50IG9uIHRoZSBlbnZlbG9wZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogZW52ZWxvcGUub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52ZWxvcGUgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFszMDAsMTUwXSxcbiAgICAgICdub05ld1BvaW50cyc6ZmFsc2UsXG4gICAgICAncG9pbnRzJzogW1xuICBcdFx0XHR7XG4gIFx0XHRcdFx0eDogMC4xLFxuICBcdFx0XHRcdHk6IDAuNFxuICBcdFx0XHR9LFxuICBcdFx0XHR7XG4gIFx0XHRcdFx0eDogMC4zNSxcbiAgXHRcdFx0XHR5OiAwLjZcbiAgXHRcdFx0fSxcbiAgXHRcdFx0e1xuICBcdFx0XHRcdHg6IDAuNjUsXG4gIFx0XHRcdFx0eTogMC4yXG4gIFx0XHRcdH0sXG4gIFx0XHRcdHtcbiAgXHRcdFx0XHR4OiAwLjksXG4gIFx0XHRcdFx0eTogMC40XG4gIFx0XHRcdH1cbiAgXHRcdF1cbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLG9wdGlvbnMsZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5wb2ludHMgPSB0aGlzLnNldHRpbmdzLnBvaW50cztcblxuICAgIHRoaXMubm9kZXMgPSBbXTtcblxuICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuaW5pdCgpO1xuXG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG5cbiAgICB0aGlzLnBvaW50cy5mb3JFYWNoKChwb2ludCkgPT4ge1xuICAgICAgbGV0IG5vZGUgPSBuZXcgUG9pbnQocG9pbnQsdGhpcyk7XG4gICAgICB0aGlzLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvcnRQb2ludHMoKTtcblxuICAgIHRoaXMubGluZSA9IHN2Zy5jcmVhdGUoJ3BvbHlsaW5lJyk7XG4gICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgMik7XG4gICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5saW5lKTtcblxuICAgIHRoaXMuZmlsbCA9IHN2Zy5jcmVhdGUoJ3BvbHlsaW5lJyk7XG4gICAgdGhpcy5maWxsLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywgJzAuMicpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZmlsbCk7XG5cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5ub2Rlc1tpXS5yZXNpemUoKTtcbiAgICAgIHRoaXMubm9kZXNbaV0ubW92ZSgpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG4gICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLmZpbGwuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIG5vZGUuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgLy8gIHRoaXMubm9kZXNbdGhpcy5zZWxlY3RlZF0ubW92ZSggdGhpcy5wb2ludHMgKVxuICAgIHRoaXMuY2FsY3VsYXRlUGF0aCgpO1xuICB9XG5cbiAgY2FsY3VsYXRlUG9pbnRzKCkge1xuICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgdGhpcy5ub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICB0aGlzLnBvaW50cy5wdXNoKHsgeDogbm9kZS54LCB5OiBub2RlLnkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjYWxjdWxhdGVQYXRoKCkge1xuXG4gICAgLy9zdHJva2UgZGF0YVxuICAgIGxldCBkYXRhID0gJzAgJysgdGhpcy5ub2Rlc1swXS5sb2NhdGlvbi55KycsICc7XG5cbiAgICAvLyBkYXRhIHNob3VsZCBiZSByZS1vcmRlcmVkIGJhc2VkIG9uIHggbG9jYXRpb24uXG4gICAgLy8gd2hhdGV2ZXIgZnVuY3Rpb24gYWRkcyBhIG5vZGUgc2hvdWxkIGFkZCBpdCBhdCB0aGUgcmlnaHQgaW5kZXhcblxuICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgIC8vICBsZXQgbG9jYXRpb24gPSBub2RlLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICBkYXRhICs9IG5vZGUubG9jYXRpb24ueCArICcgJyArIG5vZGUubG9jYXRpb24ueSArICcsICc7XG4gICAgfSk7XG5cblxuICAvLyAgZGF0YSArPSBwb2ludC54KnRoaXMud2lkdGgrJyAnKyBwb2ludC55KnRoaXMuaGVpZ2h0KycsICc7XG4gICAgZGF0YSArPSB0aGlzLndpZHRoICsgJyAnKyB0aGlzLm5vZGVzW3RoaXMubm9kZXMubGVuZ3RoLTFdLmxvY2F0aW9uLnk7XG5cbiAgICB0aGlzLmxpbmUuc2V0QXR0cmlidXRlKCdwb2ludHMnLCBkYXRhKTtcblxuICAgIC8vIGZpbGwgZGF0YVxuICAgIC8vIGFkZCBib3R0b20gY29ybmVyc1xuXG4gICAgZGF0YSArPSAnLCAnK3RoaXMud2lkdGggKycgJyt0aGlzLmhlaWdodCsnLCAnO1xuICAgIGRhdGEgKz0gJzAgJyt0aGlzLmhlaWdodDtcblxuICAgIHRoaXMuZmlsbC5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGRhdGEpO1xuXG4gIH1cblxuXG5cbiAgY2xpY2soKSB7XG4gIFx0Ly8gZmluZCBuZWFyZXN0IG5vZGUgYW5kIHNldCB0aGlzLnNlbGVjdGVkIChpbmRleClcbiAgICB0aGlzLmhhc01vdmVkID0gZmFsc2U7XG4gIFx0dGhpcy5zZWxlY3RlZCA9IHRoaXMuZmluZE5lYXJlc3ROb2RlKCk7XG5cbiAgICB0aGlzLm5vZGVzW3RoaXMuc2VsZWN0ZWRdLm1vdmUodGhpcy5tb3VzZS54L3RoaXMud2lkdGgsMS10aGlzLm1vdXNlLnkvdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMuc2NhbGVOb2RlKHRoaXMuc2VsZWN0ZWQpO1xuXG4gICAgLy8gbXVzdCBkbyB0aGlzIGIvYyBuZXcgbm9kZSBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICB0aGlzLmNhbGN1bGF0ZVBvaW50cygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gIFx0dGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIG1vdmUoKSB7XG4gIFx0aWYgKHRoaXMuY2xpY2tlZCkge1xuICAgICAgdGhpcy5tb3VzZS54ID0gbWF0aC5jbGlwKHRoaXMubW91c2UueCwwLHRoaXMud2lkdGgpO1xuICAgICAgdGhpcy5oYXNNb3ZlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMubm9kZXNbdGhpcy5zZWxlY3RlZF0ubW92ZSh0aGlzLm1vdXNlLngvdGhpcy53aWR0aCwxLXRoaXMubW91c2UueS90aGlzLmhlaWdodCk7XG4gICAgXHR0aGlzLnNjYWxlTm9kZSh0aGlzLnNlbGVjdGVkKTtcblxuICAgICAgdGhpcy5jYWxjdWxhdGVQb2ludHMoKTtcbiAgXHRcdHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gIFx0XHR0aGlzLnJlbmRlcigpO1xuICBcdH1cbiAgfVxuXG4gIHJlbGVhc2UoKSB7XG5cbiAgXHRpZiAoIXRoaXMuaGFzTW92ZWQpIHtcbiAgICAgIHRoaXMubm9kZXNbdGhpcy5zZWxlY3RlZF0uZGVzdHJveSgpO1xuICBcdH1cblxuICAgIHRoaXMuY2FsY3VsYXRlUG9pbnRzKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMucG9pbnRzKTtcbiAgXHR0aGlzLnJlbmRlcigpO1xuXG4gIFx0Ly8gcmVzZXQgdGhpcy5zZWxlY3RlZFxuICBcdHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xuICB9XG5cblxuICBmaW5kTmVhcmVzdE5vZGUoKSB7XG4gIFx0dmFyIG5lYXJlc3RJbmRleCA9IG51bGw7XG4gICAgLy8gc2V0IHRoaXMgdW5yZWFzb25hYmx5IGhpZ2ggc28gdGhhdCBldmVyeSBkaXN0YW5jZSB3aWxsIGJlIGxvd2VyIHRoYW4gaXQuXG4gIFx0dmFyIG5lYXJlc3REaXN0ID0gMTAwMDA7XG4gIFx0dmFyIGJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCB4ID0gdGhpcy5tb3VzZS54L3RoaXMud2lkdGg7XG4gICAgbGV0IHkgPSAxLXRoaXMubW91c2UueS90aGlzLmhlaWdodDtcbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vZGVzO1xuICBcdGZvciAobGV0IGkgPSAwOyBpPG5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgZnJvbSBtb3VzZSB0byB0aGlzIG5vZGUgdXNpbmcgcHl0aGFnb3JlYW4gdGhlb3JlbVxuICBcdFx0dmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KCAgTWF0aC5wb3coIChub2Rlc1tpXS54IC0geCksIDIpICsgTWF0aC5wb3coKG5vZGVzW2ldLnkgLSB5KSwgMikgKTtcblxuICAgICAgLy8gaWYgdGhpcyBkaXN0YW5jZSBpcyBsZXNzIHRoYW4gdGhlIHByZXZpb3VzIHNob3J0ZXN0IGRpc3RhbmNlLCB1c2UgdGhpcyBpbmRleFxuICBcdFx0aWYgKGRpc3RhbmNlIDwgbmVhcmVzdERpc3QpIHtcbiAgXHRcdFx0bmVhcmVzdERpc3QgPSBkaXN0YW5jZTtcbiAgXHRcdFx0bmVhcmVzdEluZGV4ID0gaTtcbiAgXHRcdFx0YmVmb3JlID0geCA+IG5vZGVzW2ldLng7XG4gIFx0XHR9XG5cbiAgXHR9XG5cbiAgICAvLyBpZiBub3QgdmVyeSBjbG9zZSB0byBhbnkgbm9kZSwgY3JlYXRlIGEgbm9kZVxuICBcdGlmICghdGhpcy5zZXR0aW5ncy5ub05ld1BvaW50cyAmJiBuZWFyZXN0RGlzdD4wLjA3KSB7XG5cbiAgICAgIG5lYXJlc3RJbmRleCA9IHRoaXMuZ2V0SW5kZXhGcm9tWCh0aGlzLm1vdXNlLngvdGhpcy53aWR0aCk7XG5cbiAgXHRcdHRoaXMubm9kZXMuc3BsaWNlKG5lYXJlc3RJbmRleCwwLCBuZXcgUG9pbnQoe1xuICBcdFx0XHR4OiB0aGlzLm1vdXNlLngvdGhpcy53aWR0aCxcbiAgXHRcdFx0eTogMS10aGlzLm1vdXNlLnkvdGhpcy5oZWlnaHRcbiAgXHRcdH0sIHRoaXMpKTtcbiAgICAgIHRoaXMuaGFzTW92ZWQgPSB0cnVlO1xuXG4gIFx0fVxuXG4gIFx0cmV0dXJuIG5lYXJlc3RJbmRleDtcbiAgfVxuXG4gIGdldEluZGV4RnJvbVgoeCkge1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgdGhpcy5ub2Rlcy5mb3JFYWNoKChub2RlLGkpID0+IHtcbiAgICAgIGlmICh0aGlzLm5vZGVzW2ldLnggPD0geCkge1xuICAgICAgICBpbmRleCA9IGkrMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBzY2FsZU5vZGUoaSkge1xuXG4gIFx0bGV0IGNsaXBwZWRYID0gbWF0aC5jbGlwKHRoaXMubm9kZXNbaV0ueCwgMCwgMSk7XG4gIFx0bGV0IGNsaXBwZWRZID0gbWF0aC5jbGlwKHRoaXMubm9kZXNbaV0ueSwgMCwgMSk7XG5cbiAgICB0aGlzLm5vZGVzW2ldLm1vdmUoIGNsaXBwZWRYLCBjbGlwcGVkWSApO1xuXG4gIH1cblxuICAvKipcbiAgU29ydCB0aGUgdGhpcy5wb2ludHMgYXJyYXkgZnJvbSBsZWZ0LW1vc3QgcG9pbnQgdG8gcmlnaHQtbW9zdCBwb2ludC4gWW91IHNob3VsZCBub3QgcmVndWxhcmx5IG5lZWQgdG8gdXNlIHRoaXMsIGhvd2V2ZXIgaXQgbWF5IGJlIHVzZWZ1bCBpZiB0aGUgcG9pbnRzIGdldCB1bm9yZGVyZWQuXG4gICovXG4gIHNvcnRQb2ludHMoKSB7XG4gICAgdGhpcy5ub2Rlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgcmV0dXJuIGEueCA+IGIueDtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gIEFkZCBhIGJyZWFrcG9pbnQgb24gdGhlIGVudmVsb3BlLlxuICBAcGFyYW0geCB7bnVtYmVyfSB4IGxvY2F0aW9uIG9mIHRoZSBwb2ludCwgbm9ybWFsaXplZCAoMC0xKVxuICBAcGFyYW0geSB7bnVtYmVyfSB5IGxvY2F0aW9uIG9mIHRoZSBwb2ludCwgbm9ybWFsaXplZCAoMC0xKVxuICAqL1xuICBhZGRQb2ludCh4LHkpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmxlbmd0aDtcblxuICAgIHRoaXMuc29ydFBvaW50cygpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGk8dGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHggPCB0aGlzLm5vZGVzW2ldLngpIHtcbiAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgXHR9XG5cbiAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCwgMCwgbmV3IFBvaW50KHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSwgdGhpcykpO1xuXG4gICAgdGhpcy5zY2FsZU5vZGUoaW5kZXgpO1xuXG4gICAgdGhpcy5jYWxjdWxhdGVQb2ludHMoKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5wb2ludHMpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIEZpbmQgdGhlIGxldmVsIGF0IGEgY2VydGFpbiB4IGxvY2F0aW9uIG9uIHRoZSBlbnZlbG9wZS5cbiAgQHBhcmFtIHgge251bWJlcn0gVGhlIHggbG9jYXRpb24gdG8gZmluZCB0aGUgbGV2ZWwgb2YsIG5vcm1hbGl6ZWQgMC0xXG4gICovXG4gIHNjYW4oeCkge1xuICAgIC8vIGZpbmQgc3Vycm91bmRpbmcgcG9pbnRzXG4gICAgbGV0IG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXhGcm9tWCh4KTtcbiAgICBsZXQgcHJpb3JJbmRleCA9IG5leHRJbmRleC0xO1xuICAgIGlmIChwcmlvckluZGV4IDwgMCkge1xuICAgICAgcHJpb3JJbmRleCA9IDA7XG4gICAgfVxuICAgIGlmIChuZXh0SW5kZXggPj0gdGhpcy5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIG5leHRJbmRleCA9IHRoaXMubm9kZXMubGVuZ3RoLTE7XG4gICAgfVxuICAgIGxldCBwcmlvclBvaW50ID0gdGhpcy5ub2Rlc1twcmlvckluZGV4XTtcbiAgICBsZXQgbmV4dFBvaW50ID0gdGhpcy5ub2Rlc1tuZXh0SW5kZXhdO1xuICAgIGxldCBsb2MgPSBtYXRoLnNjYWxlKHgscHJpb3JQb2ludC54LCBuZXh0UG9pbnQueCwgMCwgMSk7XG4gICAgbGV0IHZhbHVlID0gbWF0aC5pbnRlcnAobG9jLHByaW9yUG9pbnQueSxuZXh0UG9pbnQueSk7XG4gICAgdGhpcy5lbWl0KCdzY2FuJyx2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cblxuICAvKipcbiAgTW92ZSBhIGJyZWFrcG9pbnQgb24gdGhlIGVudmVsb3BlLlxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBicmVha3BvaW50IHRvIG1vdmVcbiAgQHBhcmFtIHgge251bWJlcn0gTmV3IHggbG9jYXRpb24sIG5vcm1hbGl6ZWQgMC0xXG4gIEBwYXJhbSB5IHtudW1iZXJ9IE5ldyB5IGxvY2F0aW9uLCBub3JtYWxpemVkIDAtMVxuICAqL1xuICBtb3ZlUG9pbnQoaW5kZXgseCx5KSB7XG4gICAgdGhpcy5ub2Rlc1tpbmRleF0ubW92ZSh4LHkpO1xuICAgIHRoaXMuc2NhbGVOb2RlKGluZGV4KTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBvaW50cygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIE1vdmUgYSBicmVha3BvaW50IG9uIHRoZSBlbnZlbG9wZSBieSBhIGNlcnRhaW4gYW1vdW50LlxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBicmVha3BvaW50IHRvIG1vdmVcbiAgQHBhcmFtIHhPZmZzZXQge251bWJlcn0gWCBkaXNwbGFjZW1lbnQsIG5vcm1hbGl6ZWQgMC0xXG4gIEBwYXJhbSB5T2Zmc2V0IHtudW1iZXJ9IFkgZGlzcGxhY2VtZW50LCBub3JtYWxpemVkIDAtMVxuICAqL1xuICBhZGp1c3RQb2ludChpbmRleCx4T2Zmc2V0LHlPZmZzZXQpIHtcbiAgICB0aGlzLm5vZGVzW2luZGV4XS5tb3ZlKHRoaXMubm9kZXNbaW5kZXhdLngreE9mZnNldCx0aGlzLm5vZGVzW2luZGV4XS55K3lPZmZzZXQpO1xuICAgIHRoaXMuc2NhbGVOb2RlKGluZGV4KTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBvaW50cygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIFJlbW92ZSBhIGJyZWFrcG9pbnQgZnJvbSB0aGUgZW52ZWxvcGUuXG4gIEBwYXJhbSBpbmRleCB7bnVtYmVyfSBJbmRleCBvZiB0aGUgYnJlYWtwb2ludCB0byByZW1vdmVcbiAgKi9cbiAgZGVzdHJveVBvaW50KGluZGV4KSB7XG4gICAgdGhpcy5ub2Rlc1tpbmRleF0uZGVzdHJveSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlUG9pbnRzKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMucG9pbnRzKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuICAvKipcbiAgUmVtb3ZlIGFsbCBleGlzdGluZyBicmVha3BvaW50cyBhbmQgYWRkIGFuIGVudGlyZWx5IG5ldyBzZXQgb2YgYnJlYWtwb2ludHMuXG4gIEBwYXJhbSBhbGxQb2ludHMge2FycmF5fSBBbiBhcnJheSBvZiBvYmplY3RzIHdpdGggeC95IHByb3BlcnRpZXMgKG5vcm1hbGl6ZWQgMC0xKS4gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5IHNwZWNpZmljZXMgdGhlIHgveSBsb2NhdGlvbiBvZiBhIG5ldyBicmVha3BvaW50IHRvIGJlIGFkZGVkLlxuICAqL1xuICBzZXRQb2ludHMoYWxsUG9pbnRzKSB7XG4gICAgd2hpbGUgKHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5vZGVzWzBdLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgYWxsUG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICB0aGlzLmFkZFBvaW50KHBvaW50LngscG9pbnQueSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWxjdWxhdGVQb2ludHMoKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5wb2ludHMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvZW52ZWxvcGUuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xuLy9sZXQgbWF0aCA9IHJlcXVpcmUoJy4uL3V0aWwvbWF0aCcpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5pbXBvcnQgeyBjb250ZXh0IH0gZnJvbSAnLi4vbWFpbic7XG5cbi8qKlxuICogU3BlY3Ryb2dyYW1cbiAqXG4gKiBAZGVzY3JpcHRpb24gQXVkaW8gc3BlY3RydW0gdmlzdWFsaXphdGlvblxuICpcbiAqIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwic3BlY3Ryb2dyYW1cIj48L3NwYW4+XG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBzcGVjdHJvZ3JhbSA9IG5ldyBOZXh1cy5TcGVjdHJvZ3JhbSgnI3RhcmdldCcpXG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBzcGVjdHJvZ3JhbSA9IG5ldyBOZXh1cy5TcGVjdHJvZ3JhbSgnI3RhcmdldCcse1xuICogICAnc2l6ZSc6IFszMDAsMTUwXVxuICogfSlcbiAqXG4gKiBAb3V0cHV0XG4gKiAmbmJzcDtcbiAqIE5vIGV2ZW50c1xuICpcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTcGVjdHJvZ3JhbSBleHRlbmRzIEludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBvcHRpb25zID0gWydzY2FsZScsICd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgc2l6ZTogWzMwMCwgMTUwXVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsIG9wdGlvbnMsIGRlZmF1bHRzKTtcblxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQoKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbiAgICB0aGlzLmFuYWx5c2VyID0gdGhpcy5jb250ZXh0LmNyZWF0ZUFuYWx5c2VyKCk7XG4gICAgdGhpcy5hbmFseXNlci5mZnRTaXplID0gMjA0ODtcbiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IHRoaXMuYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQ7XG4gICAgdGhpcy5kYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlckxlbmd0aCk7XG5cbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLnNvdXJjZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuY2FudmFzID0gbmV3IGRvbS5TbWFydENhbnZhcyh0aGlzLnBhcmVudCk7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5jYW52YXMuZWxlbWVudDtcbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5jYW52YXMucmVzaXplKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKHRoaXMuZGF0YUFycmF5KTtcblxuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmZpbGxSZWN0KFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoLFxuICAgICAgdGhpcy5jYW52YXMuZWxlbWVudC5oZWlnaHRcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuc291cmNlICYmIHRoaXMuZGF0YUFycmF5KSB7XG4gICAgICAvL2NvbnNvbGUubG9nKHRoaXMuZGF0YUFycmF5KTtcblxuICAgICAgbGV0IGJhcldpZHRoID0gdGhpcy5jYW52YXMuZWxlbWVudC53aWR0aCAvIHRoaXMuYnVmZmVyTGVuZ3RoO1xuICAgICAgbGV0IGJhckhlaWdodDtcbiAgICAgIGxldCB4ID0gMDtcblxuICAgICAgbGV0IGRlZmluaXRpb24gPSB0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoIC8gNTA7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5idWZmZXJMZW5ndGg7IGkgPSBpICsgZGVmaW5pdGlvbikge1xuICAgICAgICBiYXJIZWlnaHQgPSBNYXRoLm1heC5hcHBseShcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHRoaXMuZGF0YUFycmF5LnN1YmFycmF5KGksIGkgKyBkZWZpbml0aW9uKVxuICAgICAgICApO1xuICAgICAgICBiYXJIZWlnaHQgLz0gMjU1O1xuICAgICAgICBiYXJIZWlnaHQgKj0gdGhpcy5jYW52YXMuZWxlbWVudC5oZWlnaHQ7XG5cbiAgICAgICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLmNvbG9ycy5hY2NlbnQ7XG4gICAgICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFJlY3QoXG4gICAgICAgICAgeCxcbiAgICAgICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodCAtIGJhckhlaWdodCxcbiAgICAgICAgICBiYXJXaWR0aCAqIGRlZmluaXRpb24sXG4gICAgICAgICAgYmFySGVpZ2h0XG4gICAgICAgICk7XG5cbiAgICAgICAgeCArPSBiYXJXaWR0aCAqIGRlZmluaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gIEVxdWl2YWxlbnQgdG8gXCJwYXRjaGluZyBpblwiIGFuIGF1ZGlvIG5vZGUgdG8gdmlzdWFsaXplLiBOT1RFOiBZb3UgY2Fubm90IGNvbm5lY3QgYXVkaW8gbm9kZXMgYWNyb3NzIHR3byBkaWZmZXJlbnQgYXVkaW8gY29udGV4dHMuIE5leHVzVUkgcnVucyBpdHMgYXVkaW8gYW5hbHlzaXMgb24gaXRzIG93biBhdWRpbyBjb250ZXh0LCBOZXh1cy5jb250ZXh0LiBJZiB0aGUgYXVkaW8gbm9kZSB5b3UgYXJlIHZpc3VhbGl6aW5nIGlzIGNyZWF0ZWQgb24gYSBkaWZmZXJlbnQgYXVkaW8gY29udGV4dCwgeW91IHdpbGwgbmVlZCB0byB0ZWxsIE5leHVzVUkgdG8gdXNlIHRoYXQgY29udGV4dCBpbnN0ZWFkOiBpLmUuIE5leHVzLmNvbnRleHQgPSBZb3VyQXVkaW9Db250ZXh0TmFtZS4gRm9yIGV4YW1wbGUsIGluIFRvbmVKUyBwcm9qZWN0cywgdGhlIGxpbmUgd291bGQgYmU6IE5leHVzLmNvbnRleHQgPSBUb25lLmNvbnRleHQgLiBXZSByZWNvbW1lbmQgdGhhdCB5b3Ugd3JpdGUgdGhhdCBsaW5lIG9mIGNvZGUgb25seSBvbmNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgeW91ciBwcm9qZWN0LlxuICBAcGFyYW0gbm9kZSB7QXVkaW9Ob2RlfSBUaGUgYXVkaW8gbm9kZSB0byB2aXN1YWxpemVcbiAgQGV4YW1wbGUgTmV4dXMuY29udGV4dCA9IFRvbmUuY29udGV4dCAvLyBvciBhbm90aGVyIGF1ZGlvIGNvbnRleHQgeW91IGhhdmUgY3JlYXRlZFxuICBzcGVjdHJvZ3JhbS5jb25uZWN0KCBUb25lLk1hc3RlciApO1xuICAqL1xuICBjb25uZWN0KG5vZGUpIHtcbiAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgICB0aGlzLnNvdXJjZSA9IG5vZGU7XG4gICAgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmFuYWx5c2VyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFN0b3AgdmlzdWFsaXppbmcgdGhlIHNvdXJjZSBub2RlIGFuZCBkaXNjb25uZWN0IGl0LlxuICAqL1xuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5hbmFseXNlcik7XG4gICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGN1c3RvbURlc3Ryb3koKSB7XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvc3BlY3Ryb2dyYW0uanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJy4uL21haW4nO1xuXG4vKipcbiAqIE1ldGVyXG4gKlxuICogQGRlc2NyaXB0aW9uIFN0ZXJlbyBkZWNpYmVsIG1ldGVyXG4gKlxuICogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJtZXRlclwiPjwvc3Bhbj5cbiAqXG4gKiBAZXhhbXBsZVxuICogdmFyIG1ldGVyID0gbmV3IE5leHVzLk1ldGVyKCcjdGFyZ2V0JylcbiAqXG4gKiBAZXhhbXBsZVxuICogdmFyIG1ldGVyID0gbmV3IE5leHVzLk1ldGVyKCcjdGFyZ2V0Jyx7XG4gKiAgIHNpemU6IFs3NSw3NV1cbiAqIH0pXG4gKlxuICogQG91dHB1dFxuICogJm5ic3A7XG4gKiBObyBldmVudHNcbiAqXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0ZXIgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgb3B0aW9ucyA9IFsnc2NhbGUnLCAndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgIHNpemU6IFszMCwgMTAwXVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsIG9wdGlvbnMsIGRlZmF1bHRzKTtcblxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQoKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbiAgICB0aGlzLmNoYW5uZWxzID0gMjtcblxuICAgIHRoaXMuc3BsaXR0ZXIgPSB0aGlzLmNvbnRleHQuY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHRoaXMuY2hhbm5lbHMpO1xuXG4gICAgdGhpcy5hbmFseXNlcnMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGFubmVsczsgaSsrKSB7XG4gICAgICBsZXQgYW5hbHlzZXIgPSB0aGlzLmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTtcbiAgICAgIHRoaXMuc3BsaXR0ZXIuY29ubmVjdChhbmFseXNlciwgaSk7XG4gICAgICBhbmFseXNlci5mZnRTaXplID0gMTAyNDtcbiAgICAgIGFuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCA9IDE7XG4gICAgICB0aGlzLmFuYWx5c2Vycy5wdXNoKGFuYWx5c2VyKTtcbiAgICB9XG4gICAgdGhpcy5idWZmZXJMZW5ndGggPSB0aGlzLmFuYWx5c2Vyc1swXS5mcmVxdWVuY3lCaW5Db3VudDtcbiAgICB0aGlzLmRhdGFBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5idWZmZXJMZW5ndGgpO1xuXG4gICAgLypcbiAgICAvLyBhZGQgbGluZWFyIGdyYWRpZW50XG4gICAgdmFyIGdyZCA9IGNhbnZhc0N0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAvLyBsaWdodCBibHVlXG4gICAgZ3JkLmFkZENvbG9yU3RvcCgwLCAnIzAwMCcpO1xuICAgIGdyZC5hZGRDb2xvclN0b3AoMC4yLCAnI2JiYicpO1xuICAgIGdyZC5hZGRDb2xvclN0b3AoMC40LCAnI2QxOCcpO1xuICAgIC8vIGRhcmsgYmx1ZVxuICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgJyNkMTgnKTtcbiAgICBjYW52YXNDdHguZmlsbFN0eWxlID0gZ3JkOyAqL1xuXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5kYiA9IC1JbmZpbml0eTtcblxuICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgdGhpcy5tZXRlcldpZHRoID0gdGhpcy5jYW52YXMuZWxlbWVudC53aWR0aCAvIHRoaXMuY2hhbm5lbHM7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmNhbnZhcyA9IG5ldyBkb20uU21hcnRDYW52YXModGhpcy5wYXJlbnQpO1xuICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuY2FudmFzLmVsZW1lbnQ7XG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2FudmFzLnJlc2l6ZSh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7XG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICB0aGlzLmNhbnZhcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFJlY3QoXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGgsXG4gICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodFxuICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYW5hbHlzZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgICAgdGhpcy5hbmFseXNlcnNbaV0uZ2V0RmxvYXRUaW1lRG9tYWluRGF0YSh0aGlzLmRhdGFBcnJheSk7XG5cbiAgICAgICAgbGV0IHJtcyA9IDA7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGFBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHJtcyArPSB0aGlzLmRhdGFBcnJheVtpXSAqIHRoaXMuZGF0YUFycmF5W2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgcm1zID0gTWF0aC5zcXJ0KHJtcyAvIHRoaXMuZGF0YUFycmF5Lmxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5kYiA9IDIwICogTWF0aC5sb2cxMChybXMpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRiID4gLTIwMCAmJiB0aGlzLmRiICE9PSAtSW5maW5pdHkpIHtcbiAgICAgICAgdGhpcy5kYiAtPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYiA9IC1JbmZpbml0eTtcbiAgICAgIH1cblxuICAgICAgLy9jb25zb2xlLmxvZyhkYilcblxuICAgICAgaWYgKHRoaXMuZGIgPiAtNzApIHtcbiAgICAgICAgbGV0IGxpbmVhciA9IG1hdGgubm9ybWFsaXplKHRoaXMuZGIsIC03MCwgNSk7XG4gICAgICAgIGxldCBleHAgPSBsaW5lYXIgKiBsaW5lYXI7XG4gICAgICAgIGxldCB5ID0gbWF0aC5zY2FsZShleHAsIDAsIDEsIHRoaXMuZWxlbWVudC5oZWlnaHQsIDApO1xuXG4gICAgICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5jb2xvcnMuYWNjZW50O1xuICAgICAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmZpbGxSZWN0KFxuICAgICAgICAgIHRoaXMubWV0ZXJXaWR0aCAqIGksXG4gICAgICAgICAgeSxcbiAgICAgICAgICB0aGlzLm1ldGVyV2lkdGgsXG4gICAgICAgICAgdGhpcy5jYW52YXMuZWxlbWVudC5oZWlnaHQgLSB5XG4gICAgICAgICk7XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInJlbmRlcmluZy4uLlwiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICBFcXVpdmFsZW50IHRvIFwicGF0Y2hpbmcgaW5cIiBhbiBhdWRpbyBub2RlIHRvIHZpc3VhbGl6ZS4gTk9URTogWW91IGNhbm5vdCBjb25uZWN0IGF1ZGlvIG5vZGVzIGFjcm9zcyB0d28gZGlmZmVyZW50IGF1ZGlvIGNvbnRleHRzLiBOZXh1c1VJIHJ1bnMgaXRzIGF1ZGlvIGFuYWx5c2lzIG9uIGl0cyBvd24gYXVkaW8gY29udGV4dCwgTmV4dXMuY29udGV4dC4gSWYgdGhlIGF1ZGlvIG5vZGUgeW91IGFyZSB2aXN1YWxpemluZyBpcyBjcmVhdGVkIG9uIGEgZGlmZmVyZW50IGF1ZGlvIGNvbnRleHQsIHlvdSB3aWxsIG5lZWQgdG8gdGVsbCBOZXh1c1VJIHRvIHVzZSB0aGF0IGNvbnRleHQgaW5zdGVhZDogaS5lLiBOZXh1cy5jb250ZXh0ID0gWW91ckF1ZGlvQ29udGV4dE5hbWUuIEZvciBleGFtcGxlLCBpbiBUb25lSlMgcHJvamVjdHMsIHRoZSBsaW5lIHdvdWxkIGJlOiBOZXh1cy5jb250ZXh0ID0gVG9uZS5jb250ZXh0IC4gV2UgcmVjb21tZW5kIHRoYXQgeW91IHdyaXRlIHRoYXQgbGluZSBvZiBjb2RlIG9ubHkgb25jZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgcHJvamVjdC5cbiAgQHBhcmFtIG5vZGUge0F1ZGlvTm9kZX0gVGhlIGF1ZGlvIG5vZGUgdG8gdmlzdWFsaXplXG4gIEBwYXJhbSBjaGFubmVscyB7bnVtYmVyfSAob3B0aW9uYWwpIFRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaW4gdGhlIHNvdXJjZSBub2RlIHRvIHdhdGNoLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgaW50ZXJmYWNlIHdpbGwgbG9vayBmb3IgYSAuY2hhbm5lbENvdW50IHByb3BlcnR5IG9uIHRoZSBpbnB1dCBub2RlLiBJZiBpdCBkb2VzIG5vdCBleGlzdCwgdGhlIGludGVyZmFjZSB3aWxsIGRlZmF1bHQgdG8gMSBjaGFubmVsLlxuICBAZXhhbXBsZSBOZXh1cy5jb250ZXh0ID0gVG9uZS5jb250ZXh0IC8vIG9yIGFub3RoZXIgYXVkaW8gY29udGV4dCB5b3UgaGF2ZSBjcmVhdGVkXG4gIG1ldGVyLmNvbm5lY3QoIFRvbmUuTWFzdGVyLCAyICk7XG4gICovXG5cbiAgY29ubmVjdChub2RlLCBjaGFubmVscykge1xuICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuICAgIC8vdGhpcy5kdW1teS5kaXNjb25uZWN0KHRoaXMuc3BsaXR0ZXIpO1xuXG4gICAgaWYgKGNoYW5uZWxzKSB7XG4gICAgICB0aGlzLmNoYW5uZWxzID0gY2hhbm5lbHM7XG4gICAgfSBlbHNlIGlmIChub2RlLmNoYW5uZWxDb3VudCkge1xuICAgICAgdGhpcy5jaGFubmVscyA9IG5vZGUuY2hhbm5lbENvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoYW5uZWxzID0gMjtcbiAgICB9XG4gICAgdGhpcy5tZXRlcldpZHRoID0gdGhpcy5jYW52YXMuZWxlbWVudC53aWR0aCAvIHRoaXMuY2hhbm5lbHM7XG5cbiAgICB0aGlzLnNvdXJjZSA9IG5vZGU7XG4gICAgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLnNwbGl0dGVyKTtcblxuICAgIC8vICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFN0b3AgdmlzdWFsaXppbmcgdGhlIHNvdXJjZSBub2RlIGFuZCBkaXNjb25uZWN0IGl0LlxuICAqL1xuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5zcGxpdHRlcik7XG4gICAgdGhpcy5zb3VyY2UgPSBmYWxzZTtcbiAgICAvLyAgdGhpcy5kdW1teS5jb25uZWN0KHRoaXMuc3BsaXR0ZXIpO1xuICAgIHRoaXMubWV0ZXJXaWR0aCA9IHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGggLyB0aGlzLmNoYW5uZWxzO1xuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGN1c3RvbURlc3Ryb3koKSB7XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvbWV0ZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5pbXBvcnQgeyBjb250ZXh0IH0gZnJvbSAnLi4vbWFpbic7XG5cbi8qKlxuICogT3NjaWxsb3Njb3BlXG4gKlxuICogQGRlc2NyaXB0aW9uIFZpc3VhbGl6ZXMgYSB3YXZlZm9ybSdzIHN0cmVhbSBvZiB2YWx1ZXMuXG4gKlxuICogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJvc2NpbGxvc2NvcGVcIj48L3NwYW4+XG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBvc2NpbGxvc2NvcGUgPSBuZXcgTmV4dXMuT3NjaWxsb3Njb3BlKCcjdGFyZ2V0JylcbiAqXG4gKiBAZXhhbXBsZVxuICogdmFyIG9zY2lsbG9zY29wZSA9IG5ldyBOZXh1cy5Pc2NpbGxvc2NvcGUoJyN0YXJnZXQnLHtcbiAqICAgJ3NpemUnOiBbMzAwLDE1MF1cbiAqIH0pXG4gKlxuICogQG91dHB1dFxuICogJm5ic3A7XG4gKiBObyBldmVudHNcbiAqXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3NjaWxsb3Njb3BlIGV4dGVuZHMgSW50ZXJmYWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbJ3NjYWxlJywgJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICBzaXplOiBbMzAwLCAxNTBdXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cywgb3B0aW9ucywgZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCgpOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuICAgIHRoaXMuYW5hbHlzZXIgPSB0aGlzLmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTtcbiAgICB0aGlzLmFuYWx5c2VyLmZmdFNpemUgPSAyMDQ4O1xuICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gdGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudDtcbiAgICB0aGlzLmRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyTGVuZ3RoKTtcbiAgICB0aGlzLmFuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YSh0aGlzLmRhdGFBcnJheSk7XG5cbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLnNvdXJjZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmNhbnZhcyA9IG5ldyBkb20uU21hcnRDYW52YXModGhpcy5wYXJlbnQpO1xuICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuY2FudmFzLmVsZW1lbnQ7XG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2FudmFzLnJlc2l6ZSh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7XG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICB0aGlzLmNhbnZhcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEodGhpcy5kYXRhQXJyYXkpO1xuXG4gICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFJlY3QoXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGgsXG4gICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodFxuICAgICk7XG5cbiAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmxpbmVXaWR0aCA9IH5+KHRoaXMuaGVpZ2h0IC8gMTAwICsgMik7XG4gICAgdGhpcy5jYW52YXMuY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMuY29sb3JzLmFjY2VudDtcblxuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG5cbiAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgIHZhciBzbGljZVdpZHRoID0gKHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGggKiAxLjApIC8gdGhpcy5idWZmZXJMZW5ndGg7XG4gICAgICB2YXIgeCA9IDA7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5idWZmZXJMZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdiA9IHRoaXMuZGF0YUFycmF5W2ldIC8gMTI4LjA7XG4gICAgICAgIHZhciB5ID0gKHYgKiB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodCkgLyAyO1xuXG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5jYW52YXMuY29udGV4dC5tb3ZlVG8oeCwgeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jYW52YXMuY29udGV4dC5saW5lVG8oeCwgeSk7XG4gICAgICAgIH1cblxuICAgICAgICB4ICs9IHNsaWNlV2lkdGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FudmFzLmNvbnRleHQubW92ZVRvKDAsIHRoaXMuY2FudmFzLmVsZW1lbnQuaGVpZ2h0IC8gMik7XG4gICAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmxpbmVUbyhcbiAgICAgICAgdGhpcy5jYW52YXMuZWxlbWVudC53aWR0aCxcbiAgICAgICAgdGhpcy5jYW52YXMuZWxlbWVudC5oZWlnaHQgLyAyXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIH1cblxuICAvKipcbiAgRXF1aXZhbGVudCB0byBcInBhdGNoaW5nIGluXCIgYW4gYXVkaW8gbm9kZSB0byB2aXN1YWxpemUuIE5PVEU6IFlvdSBjYW5ub3QgY29ubmVjdCBhdWRpbyBub2RlcyBhY3Jvc3MgdHdvIGRpZmZlcmVudCBhdWRpbyBjb250ZXh0cy4gTmV4dXNVSSBydW5zIGl0cyBhdWRpbyBhbmFseXNpcyBvbiBpdHMgb3duIGF1ZGlvIGNvbnRleHQsIE5leHVzLmNvbnRleHQuIElmIHRoZSBhdWRpbyBub2RlIHlvdSBhcmUgdmlzdWFsaXppbmcgaXMgY3JlYXRlZCBvbiBhIGRpZmZlcmVudCBhdWRpbyBjb250ZXh0LCB5b3Ugd2lsbCBuZWVkIHRvIHRlbGwgTmV4dXNVSSB0byB1c2UgdGhhdCBjb250ZXh0IGluc3RlYWQ6IGkuZS4gTmV4dXMuY29udGV4dCA9IFlvdXJBdWRpb0NvbnRleHROYW1lLiBGb3IgZXhhbXBsZSwgaW4gVG9uZUpTIHByb2plY3RzLCB0aGUgbGluZSB3b3VsZCBiZTogTmV4dXMuY29udGV4dCA9IFRvbmUuY29udGV4dCAuIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB3cml0ZSB0aGF0IGxpbmUgb2YgY29kZSBvbmx5IG9uY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB5b3VyIHByb2plY3QuXG4gIEBwYXJhbSBub2RlIHtBdWRpb05vZGV9IFRoZSBhdWRpbyBub2RlIHRvIHZpc3VhbGl6ZVxuICBAZXhhbXBsZSBOZXh1cy5jb250ZXh0ID0gVG9uZS5jb250ZXh0IC8vIG9yIGFub3RoZXIgYXVkaW8gY29udGV4dCB5b3UgaGF2ZSBjcmVhdGVkXG4gIG9zY2lsbG9zY29wZS5jb25uZWN0KCBUb25lLk1hc3RlciApO1xuICAqL1xuXG4gIGNvbm5lY3Qobm9kZSkge1xuICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5zb3VyY2UgPSBub2RlO1xuICAgIHRoaXMuc291cmNlLmNvbm5lY3QodGhpcy5hbmFseXNlcik7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFN0b3AgdmlzdWFsaXppbmcgdGhlIHNvdXJjZSBub2RlIGFuZCBkaXNjb25uZWN0IGl0LlxuICAqL1xuICBkaXNjb25uZWN0KCkge1xuICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmFuYWx5c2VyKTtcbiAgICAgIHRoaXMuc291cmNlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmFjdGl2ZSA9ICF0aGlzLmFjdGl2ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgY3VzdG9tRGVzdHJveSgpIHtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9vc2NpbGxvc2NvcGUuanMiLCIvKlxuTWFpbiBjb25jZXB0Olxuc3ludGggPSBuZXcgTmV4dXMuUmFjaygnZWxlbWVudElEJyk7XG5cblRyYW5zZm9ybSBhbGwgZWxlbWVudHMgaW5zaWRlIHRoZSBkaXZcbnN5bnRoLmVsZW1lbnRJRCB3aWxsIGhvbGQgdGhlIGZpcnN0IHNsaWRlciBpbnRlcmZhY2VcblxuMikgSW4gZnV0dXJlLCBwb3RlbnRpYWxseSB3cml0aW5nIGEgcmFjayB0aGF0IGlzIHJlLXVzYWJsZT9cbkNvdWxkIGFsc28gdGFrZSBKU09OXG5cbm5ldyBOZXh1cy5SYWNrKCcjdGFyZ2V0Jyx7XG4gIHByZTogKCkgPT4ge1xuICAgIGNyZWF0ZSBzb21lIGRpdnMgaGVyZSwgb3Igc29tZSBhdWRpbyBjb2RlXG4gIH0sXG4gIGludGVyZmFjZToge1xuICAgIHNsaWRlcjE6IE5leHVzLmFkZC5zbGlkZXIoe1xuICAgICAgdG9wOjEwLFxuICAgICAgbGVmdDoxMCxcbiAgICAgIHdpZHRoOjUwLFxuICAgICAgaGVpZ2h0OjEwMCxcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgc3RlcDogMVxuICAgIH0pLFxuICAgIHdhdmUxOiBOZXh1cy5hZGQud2F2ZWZvcm0oe1xuICAgICAgZmlsZTogJy4vcGF0aC90by9maWxlLm1wMycsXG4gICAgICB3aWR0aDo1MDAsXG4gICAgICBoZWlnaHQ6MTAwLFxuICAgICAgbW9kZTogJ3JhbmdlJ1xuICAgIH0pXG4gIH0sXG4gIGluaXQ6ICgpID0+IHtcbiAgICAvLyBzb21lIGF1ZGlvIGluaXQgY29kZSBnb2VzIGhlcmUuLi5cbiAgfVxufSk7XG5cbiovXG5cbmltcG9ydCAqIGFzIHRyYW5zZm9ybSBmcm9tICcuLi91dGlsL3RyYW5zZm9ybSc7XG5pbXBvcnQgZG9tIGZyb20gJy4uL3V0aWwvZG9tJztcblxuaW1wb3J0IHsgY29sb3JzIH0gZnJvbSAnLi4vbWFpbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhY2sge1xuXG4gIGNvbnN0cnVjdG9yKHRhcmdldCwgc2V0dGluZ3MpIHtcblxuICAgIHRoaXMubWV0YSA9IHt9O1xuICAgIHRoaXMubWV0YS50YXJnZXQgPSB0YXJnZXQ7XG4gICAgdGhpcy5tZXRhLnBhcmVudCA9IGRvbS5wYXJzZUVsZW1lbnQodGFyZ2V0KTsgLy8gc2hvdWxkIGJlIGEgZ2VuZXJpYyBmdW5jdGlvbiBmb3IgcGFyc2luZyBhICd0YXJnZXQnIGFyZ3VtZW50IHRoYXQgY2hlY2tzIGZvciBzdHJpbmcvRE9NL2pRVUVSWVxuICAgIHRoaXMubWV0YS5jb2xvcnMgPSB7fTtcblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgdGhpcy5tZXRhLmF0dHJpYnV0ZSA9IHNldHRpbmdzLmF0dHJpYnV0ZSB8fCAnbmV4dXMtdWknO1xuICAgICAgdGhpcy5tZXRhLnRpdGxlID0gc2V0dGluZ3MubmFtZSB8fCBmYWxzZTtcbiAgICAgIHRoaXMubWV0YS5vcGVuID0gc2V0dGluZ3Mub3BlbiB8fCBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRhLmF0dHJpYnV0ZSA9ICduZXh1cy11aSc7XG4gICAgICB0aGlzLm1ldGEudGl0bGUgPSBmYWxzZTtcbiAgICAgIHRoaXMubWV0YS5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IGRlZmF1bHRDb2xvcnMgPSBjb2xvcnMoKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG4gICAgdGhpcy5tZXRhLmNvbG9ycy5hY2NlbnQgPSBkZWZhdWx0Q29sb3JzLmFjY2VudDtcbiAgICB0aGlzLm1ldGEuY29sb3JzLmZpbGwgPSBkZWZhdWx0Q29sb3JzLmZpbGw7XG4gICAgdGhpcy5tZXRhLmNvbG9ycy5saWdodCA9IGRlZmF1bHRDb2xvcnMubGlnaHQ7XG4gICAgdGhpcy5tZXRhLmNvbG9ycy5kYXJrID0gZGVmYXVsdENvbG9ycy5kYXJrO1xuICAgIHRoaXMubWV0YS5jb2xvcnMubWVkaXVtTGlnaHQgPSBkZWZhdWx0Q29sb3JzLm1lZGl1bUxpZ2h0O1xuICAgIHRoaXMubWV0YS5jb2xvcnMubWVkaXVtRGFyayA9IGRlZmF1bHRDb2xvcnMubWVkaXVtRGFyaztcbiAgICB0aGlzLmJ1aWxkSW50ZXJmYWNlKCk7XG4gICAgdGhpcy5jb2xvckludGVyZmFjZSgpO1xuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5tZXRhLnBhcmVudC5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgdGhpcy5tZXRhLnBhcmVudC5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnO1xuICAgIHRoaXMubWV0YS5wYXJlbnQuc3R5bGUubW96VXNlclNlbGVjdCA9ICdub25lJztcbiAgICB0aGlzLm1ldGEucGFyZW50LnN0eWxlLndlYmtpdFVzZXJTZWxlY3QgPSAnbm9uZSc7XG5cbiAgICB0aGlzLm1ldGEuY29udGVudHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIHdoaWxlICh0aGlzLm1ldGEucGFyZW50LmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm1ldGEuY29udGVudHMuYXBwZW5kQ2hpbGQodGhpcy5tZXRhLnBhcmVudC5jaGlsZE5vZGVzWzBdKTtcbiAgICB9XG5cbiAgICB0aGlzLm1ldGEuY29udGVudHMuc3R5bGUucGFkZGluZyA9ICcwcHgnO1xuICAgIHRoaXMubWV0YS5jb250ZW50cy5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG5cbiAgICBpZiAodGhpcy5tZXRhLnRpdGxlKSB7XG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHRoaXMubWV0YS50aXRsZUJhci5pbm5lckhUTUwgPSB0aGlzLm1ldGEudGl0bGU7XG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIuc3R5bGUuZm9udEZhbWlseSA9ICdhcmlhbCc7XG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgdGhpcy5tZXRhLnRpdGxlQmFyLnN0eWxlLmNvbG9yID0gJyM4ODgnO1xuICAgICAgdGhpcy5tZXRhLnRpdGxlQmFyLnN0eWxlLnBhZGRpbmcgPSAnN3B4JztcbiAgICAgIHRoaXMubWV0YS50aXRsZUJhci5zdHlsZS5mb250U2l6ZSA9ICcxMnB4JztcblxuICAgICAgdGhpcy5tZXRhLmJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLnRvcCA9ICc1cHgnIDtcbiAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUucmlnaHQgPSAnNXB4JyA7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLmlubmVySFRNTCA9ICctJztcbiAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUucGFkZGluZyA9ICcwcHggNXB4IDJweCc7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLmxpbmVIZWlnaHQgPSAnMTJweCc7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLmZvbnRTaXplID0gJzE1cHgnO1xuXG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblxuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5tZXRhLmNvbG9ycy5tZWRpdW1EYXJrO1xuICAgICAgfSk7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5tZXRhLmNvbG9ycy5tZWRpdW1MaWdodDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWV0YS5vcGVuKSB7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cbiAgICAgIHRoaXMubWV0YS50aXRsZUJhci5hcHBlbmRDaGlsZCh0aGlzLm1ldGEuYnV0dG9uKTtcblxuICAgICAgdGhpcy5tZXRhLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLm1ldGEudGl0bGVCYXIpO1xuICAgIH1cbiAgICB0aGlzLm1ldGEucGFyZW50LmFwcGVuZENoaWxkKHRoaXMubWV0YS5jb250ZW50cyk7XG5cbiAgLy8gIHZhciB3aWR0aCA9IHRoaXMubWV0YS5wYXJlbnQuc3R5bGUud2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMubWV0YS5wYXJlbnQpLmdldFByb3BlcnR5VmFsdWUoJ3dpZHRoJyk7XG4vLyAgICB0aGlzLm1ldGEucGFyZW50LnN0eWxlLndpZHRoID0gd2lkdGg7XG5cbiAgICBsZXQgdWkgPSB0cmFuc2Zvcm0uc2VjdGlvbih0aGlzLm1ldGEudGFyZ2V0LCB0aGlzLm1ldGEuYXR0cmlidXRlKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gdWkpIHtcbiAgICAgIHRoaXNba2V5XSA9IHVpW2tleV07XG4gICAgfVxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgaWYgKHRoaXMubWV0YS50aXRsZSkge1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm1ldGEuY29sb3JzLm1lZGl1bUxpZ2h0O1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS5ib3JkZXIgPSAnc29saWQgMHB4ICcrdGhpcy5tZXRhLmNvbG9ycy5maWxsO1xuICAgICAgdGhpcy5tZXRhLnBhcmVudC5zdHlsZS5ib3JkZXIgPSAnc29saWQgMXB4ICcrdGhpcy5tZXRhLmNvbG9ycy5tZWRpdW1MaWdodDtcbiAgICAgIHRoaXMubWV0YS5wYXJlbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5tZXRhLmNvbG9ycy5saWdodDtcbiAgICAgIHRoaXMubWV0YS50aXRsZUJhci5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm1ldGEuY29sb3JzLmZpbGw7XG4gICAgfVxuICB9XG5cbiAgc2hvdygpIHtcbiAgICB0aGlzLm1ldGEuY29udGVudHMuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgdGhpcy5tZXRhLm9wZW4gPSB0cnVlO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLm1ldGEuY29udGVudHMuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLm1ldGEub3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgY29sb3JpemUodHlwZSxjb2xvcikge1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzKSB7XG4gICAgICBpZiAodGhpc1trZXldLmNvbG9yaXplKSB7XG4gICAgICAgIHRoaXNba2V5XS5jb2xvcml6ZSh0eXBlLGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tZXRhLmNvbG9yc1t0eXBlXSA9IGNvbG9yO1xuICAgIHRoaXMuY29sb3JJbnRlcmZhY2UoKTtcbiAgfVxuXG4gIGVtcHR5KCkge1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzKSB7XG4gICAgICBpZiAodGhpc1trZXldLmRlc3Ryb3kpIHtcbiAgICAgICAgdGhpc1trZXldLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2NvcmUvcmFjay5qcyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGRvbSBmcm9tICcuLi91dGlsL2RvbSc7XG5pbXBvcnQgSW50ZXJmYWNlcyBmcm9tICcuLi9pbnRlcmZhY2VzLyc7XG5cbmxldCBjcmVhdGVJbnRlcmZhY2VJRCA9ICh3aWRnZXQsaW50ZXJmYWNlSURzKSA9PiB7XG4gIGxldCB0eXBlID0gd2lkZ2V0LnR5cGU7XG4gIGlmIChpbnRlcmZhY2VJRHNbdHlwZV0pIHtcbiAgICBpbnRlcmZhY2VJRHNbdHlwZV0rKztcbiAgfSBlbHNlIHtcbiAgICBpbnRlcmZhY2VJRHNbdHlwZV0gPSAxO1xuICB9XG4gIHJldHVybiAoIHR5cGUgKyBpbnRlcmZhY2VJRHNbdHlwZV0gKTtcbn07XG5cbmxldCBlbGVtZW50ID0gKGVsZW1lbnQsdHlwZSxvcHRpb25zKSA9PiB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7IGkrKyl7XG4gICAgbGV0IGF0dCA9IGVsZW1lbnQuYXR0cmlidXRlc1tpXTtcbiAgLy8gIHRyeSB7XG4gIC8vICAgIG9wdGlvbnNbYXR0Lm5vZGVOYW1lXSA9IGV2YWwoYXR0Lm5vZGVWYWx1ZSk7XG4gIC8vICB9IGNhdGNoKGUpIHtcbiAgICAgIG9wdGlvbnNbYXR0Lm5vZGVOYW1lXSA9IGF0dC5ub2RlVmFsdWU7XG4gIC8vICB9XG4gIH1cbiAgdHlwZSA9IHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSk7XG4gIGxldCB3aWRnZXQgPSBuZXcgSW50ZXJmYWNlc1t0eXBlXShlbGVtZW50LG9wdGlvbnMpO1xuICB3aWRnZXQuaWQgPSBlbGVtZW50LmlkO1xuICByZXR1cm4gd2lkZ2V0O1xufTtcblxuXG5sZXQgc2VjdGlvbiA9IChwYXJlbnQsa2V5d29yZCkgPT4ge1xuXG4gIGtleXdvcmQgPSBrZXl3b3JkIHx8ICduZXh1cy11aSc7XG5cbiAgbGV0IGludGVyZmFjZUlEcyA9IHt9O1xuXG4gIGxldCBjb250YWluZXIgPSBkb20ucGFyc2VFbGVtZW50KHBhcmVudCk7XG5cbiAgbGV0IHVpID0ge307XG5cbiAgbGV0IGh0bWxFbGVtZW50cyA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpO1xuICBsZXQgZWxlbWVudHMgPSBbXTtcbiAgZm9yIChsZXQgaT0wOyBpPGh0bWxFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGVsZW1lbnRzLnB1c2goaHRtbEVsZW1lbnRzW2ldKTtcbiAgfVxuICBmb3IgKGxldCBpPTA7aTxlbGVtZW50cy5sZW5ndGg7aSsrKSB7XG4gICAgbGV0IHR5cGUgPSBlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoa2V5d29yZCk7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGxldCBmb3JtYXR0ZWRUeXBlID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gSW50ZXJmYWNlcykge1xuICAgICAgICBpZiAodHlwZS50b0xvd2VyQ2FzZSgpPT09a2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBmb3JtYXR0ZWRUeXBlID0ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWRUeXBlKTtcbiAgICAgIGxldCB3aWRnZXQgPSBlbGVtZW50KGVsZW1lbnRzW2ldLGZvcm1hdHRlZFR5cGUpO1xuICAgICAgaWYgKHdpZGdldC5pZCkge1xuICAgICAgICB1aVt3aWRnZXQuaWRdID0gd2lkZ2V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlkID0gY3JlYXRlSW50ZXJmYWNlSUQod2lkZ2V0LGludGVyZmFjZUlEcyk7XG4gICAgICAgIHVpW2lkXSA9IHdpZGdldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdWk7XG5cbn07XG5cbmxldCBhZGQgPSAodHlwZSxwYXJlbnQsb3B0aW9ucykgPT4ge1xuICBsZXQgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAocGFyZW50KSB7XG4gICAgcGFyZW50ID0gZG9tLnBhcnNlRWxlbWVudChwYXJlbnQpO1xuICB9IGVsc2Uge1xuICAgIHBhcmVudCA9IGRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcGFyZW50LmFwcGVuZENoaWxkKHRhcmdldCk7XG4gIG9wdGlvbnMudGFyZ2V0ID0gdGFyZ2V0O1xuICBpZiAob3B0aW9ucy5zaXplKSB7XG4gICAgdGFyZ2V0LnN0eWxlLndpZHRoID0gb3B0aW9ucy5zaXplWzBdICsgJ3B4JztcbiAgICB0YXJnZXQuc3R5bGUuaGVpZ2h0ID0gb3B0aW9ucy5zaXplWzFdICsgJ3B4JztcbiAgfVxuICByZXR1cm4gZWxlbWVudCh0YXJnZXQsdHlwZSxvcHRpb25zKTtcbn07XG5cbmV4cG9ydCB7IGVsZW1lbnQgfTtcbmV4cG9ydCB7IHNlY3Rpb24gfTtcbmV4cG9ydCB7IGFkZCB9O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL3V0aWwvdHJhbnNmb3JtLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgbWF0aCBmcm9tICcuLi91dGlsL21hdGgnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUdW5lIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICBcdC8vIHRoZSBzY2FsZSBhcyByYXRpb3NcbiAgXHR0aGlzLnNjYWxlID0gW107XG5cbiAgXHQvLyBpL28gbW9kZXNcbiAgXHR0aGlzLm1vZGUgPSB7XG4gIFx0XHRvdXRwdXQ6ICdmcmVxdWVuY3knLFxuICBcdFx0aW5wdXQ6ICdzdGVwJ1xuICBcdH07XG5cbiAgXHQvLyBFVCBtYWpvclxuICBcdHRoaXMuZXRtYWpvciA9IFsgMjYxLjYyNTU4LFxuICBcdFx0MjkzLjY2NDc2NCxcbiAgXHRcdDMyOS42Mjc1NjMsXG4gIFx0XHQzNDkuMjI4MjQxLFxuICBcdFx0MzkxLjk5NTQyMixcbiAgXHRcdDQ0MCxcbiAgXHRcdDQ5My44ODMzMDEsXG4gIFx0XHQ1MjMuMjUxMTZcbiAgXHRdO1xuXG4gIFx0Ly8gUm9vdCBmcmVxdWVuY3kuXG4gIFx0dGhpcy5yb290ID0gbWF0aC5tdG9mKDYwKTsgICAgIC8vICogTWF0aC5wb3coMiwoNjAtNjkpLzEyKTtcblxuICAgIC8vIGRlZmF1bHQgaXMgYSBtYWpvciBzY2FsZVxuICAgIHRoaXMuY3JlYXRlU2NhbGUoMCwyLDQsNSw3LDksMTEpO1xuXG4gIH1cblxuICAvKiBSZXR1cm4gZGF0YSBpbiB0aGUgbW9kZSB5b3UgYXJlIGluIChmcmVxLCByYXRpbywgb3IgbWlkaSkgKi9cbiAgbm90ZShpbnB1dCxvY3RhdmUpIHtcblxuICBcdGxldCBuZXd2YWx1ZTtcblxuICBcdGlmICh0aGlzLm1vZGUub3V0cHV0ID09PSAnZnJlcXVlbmN5Jykge1xuICBcdFx0bmV3dmFsdWUgPSB0aGlzLmZyZXF1ZW5jeShpbnB1dCxvY3RhdmUpO1xuICBcdH0gZWxzZSBpZiAodGhpcy5tb2RlLm91dHB1dCA9PT0gJ3JhdGlvJykge1xuICBcdFx0bmV3dmFsdWUgPSB0aGlzLnJhdGlvKGlucHV0LG9jdGF2ZSk7XG4gIFx0fSBlbHNlIGlmICh0aGlzLm1vZGUub3V0cHV0ID09PSAnTUlESScpIHtcbiAgXHRcdG5ld3ZhbHVlID0gdGhpcy5NSURJKGlucHV0LG9jdGF2ZSk7XG4gIFx0fSBlbHNlIHtcbiAgXHRcdG5ld3ZhbHVlID0gdGhpcy5mcmVxdWVuY3koaW5wdXQsb2N0YXZlKTtcbiAgXHR9XG5cbiAgXHRyZXR1cm4gbmV3dmFsdWU7XG5cbiAgfVxuXG5cbiAgLyogUmV0dXJuIGZyZXEgZGF0YSAqL1xuICBmcmVxdWVuY3koc3RlcEluLCBvY3RhdmVJbikge1xuXG4gIFx0aWYgKHRoaXMubW9kZS5pbnB1dCA9PT0gJ21pZGknIHx8IHRoaXMubW9kZS5pbnB1dCA9PT0gJ01JREknICkge1xuICBcdFx0dGhpcy5zdGVwSW4gKz0gNjA7XG4gIFx0fVxuXG4gIFx0Ly8gd2hhdCBvY3RhdmUgaXMgb3VyIGlucHV0XG4gIFx0bGV0IG9jdGF2ZSA9IE1hdGguZmxvb3Ioc3RlcEluL3RoaXMuc2NhbGUubGVuZ3RoKTtcblxuICBcdGlmIChvY3RhdmVJbikge1xuICBcdFx0b2N0YXZlICs9IG9jdGF2ZUluO1xuICBcdH1cblxuICBcdC8vIHdoaWNoIHNjYWxlIGRlZ3JlZSAoMCAtIHNjYWxlIGxlbmd0aCkgaXMgb3VyIGlucHV0XG4gIFx0bGV0IHNjYWxlRGVncmVlID0gc3RlcEluICUgdGhpcy5zY2FsZS5sZW5ndGg7XG5cbiAgXHR3aGlsZSAoc2NhbGVEZWdyZWUgPCAwKSB7XG4gIFx0XHRzY2FsZURlZ3JlZSArPSB0aGlzLnNjYWxlLmxlbmd0aDtcbiAgXHR9XG5cbiAgICBsZXQgcmF0aW8gPSB0aGlzLnNjYWxlW3NjYWxlRGVncmVlXTtcblxuICBcdGxldCBmcmVxID0gdGhpcy5yb290ICogcmF0aW87XG5cbiAgXHRmcmVxID0gZnJlcSooTWF0aC5wb3coMixvY3RhdmUpKTtcblxuICBcdC8vIHRydW5jYXRlIGlycmF0aW9uYWwgbnVtYmVyc1xuICBcdGZyZXEgPSBNYXRoLmZsb29yKGZyZXEqMTAwMDAwMDAwMDAwKS8xMDAwMDAwMDAwMDA7XG5cbiAgXHRyZXR1cm4gZnJlcTtcblxuICB9XG5cbiAgLyogRm9yY2UgcmV0dXJuIHJhdGlvIGRhdGEgKi9cblxuICByYXRpbyhzdGVwSW4sIG9jdGF2ZUluKSB7XG5cbiAgXHRpZiAodGhpcy5tb2RlLmlucHV0ID09PSAnbWlkaScgfHwgdGhpcy5tb2RlLmlucHV0ID09PSAnTUlESScgKSB7XG4gIFx0XHR0aGlzLnN0ZXBJbiArPSA2MDtcbiAgXHR9XG5cbiAgXHQvLyB3aGF0IG9jdGF2ZSBpcyBvdXIgaW5wdXRcbiAgXHRsZXQgb2N0YXZlID0gTWF0aC5mbG9vcihzdGVwSW4vdGhpcy5zY2FsZS5sZW5ndGgpO1xuXG4gIFx0aWYgKG9jdGF2ZUluKSB7XG4gIFx0XHRvY3RhdmUgKz0gb2N0YXZlSW47XG4gIFx0fVxuXG4gIFx0Ly8gd2hpY2ggc2NhbGUgZGVncmVlICgwIC0gc2NhbGUgbGVuZ3RoKSBpcyBvdXIgaW5wdXRcbiAgXHRsZXQgc2NhbGVEZWdyZWUgPSBzdGVwSW4gJSB0aGlzLnNjYWxlLmxlbmd0aDtcblxuICBcdC8vIHdoYXQgcmF0aW8gaXMgb3VyIGlucHV0IHRvIG91ciBrZXlcbiAgXHRsZXQgcmF0aW8gPSBNYXRoLnBvdygyLG9jdGF2ZSkqdGhpcy5zY2FsZVtzY2FsZURlZ3JlZV07XG5cbiAgXHRyYXRpbyA9IE1hdGguZmxvb3IocmF0aW8qMTAwMDAwMDAwMDAwKS8xMDAwMDAwMDAwMDA7XG5cbiAgXHRyZXR1cm4gcmF0aW87XG5cbiAgfVxuXG4gIC8qIEZvcmNlIHJldHVybiBhZGp1c3RlZCBNSURJIGRhdGEgKi9cblxuICBNSURJKHN0ZXBJbixvY3RhdmVJbikge1xuXG4gIFx0bGV0IG5ld3ZhbHVlID0gdGhpcy5mcmVxdWVuY3koc3RlcEluLG9jdGF2ZUluKTtcblxuICBcdGxldCBuID0gNjkgKyAxMipNYXRoLmxvZyhuZXd2YWx1ZS80NDApL01hdGgubG9nKDIpO1xuXG4gIFx0biA9IE1hdGguZmxvb3IobioxMDAwMDAwMDAwKS8xMDAwMDAwMDAwO1xuXG4gIFx0cmV0dXJuIG47XG5cbiAgfVxuXG4gIGNyZWF0ZVNjYWxlKCkge1xuICAgIGxldCBuZXdTY2FsZSA9IFtdO1xuICAgIGZvciAobGV0IGk9MDtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKSB7XG4gICAgICBuZXdTY2FsZS5wdXNoKCBtYXRoLm10b2YoIDYwICsgYXJndW1lbnRzW2ldICkgKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkU2NhbGVGcm9tRnJlcXVlbmNpZXMobmV3U2NhbGUpO1xuICB9XG5cbiAgY3JlYXRlSklTY2FsZSgpIHtcbiAgICB0aGlzLnNjYWxlID0gW107XG4gICAgZm9yIChsZXQgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspIHtcbiAgICAgIHRoaXMuc2NhbGUucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRTY2FsZUZyb21GcmVxdWVuY2llcyhmcmVxcykge1xuICAgIHRoaXMuc2NhbGUgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7aTxmcmVxcy5sZW5ndGgtMTtpKyspIHtcbiAgICAgIHRoaXMuc2NhbGUucHVzaChmcmVxc1tpXS9mcmVxc1swXSk7XG4gICAgfVxuICB9XG5cbiAgLyogTG9hZCBhIG5ldyBzY2FsZSAqL1xuXG4gIGxvYWRTY2FsZShuYW1lKXtcblxuICBcdC8qIGxvYWQgdGhlIHNjYWxlICovXG4gIFx0bGV0IGZyZXFzID0gdGhpcy5zY2FsZXNbbmFtZV0uZnJlcXVlbmNpZXM7XG4gICAgdGhpcy5sb2FkU2NhbGVGcm9tRnJlcXVlbmNpZXMoZnJlcXMpO1xuXG4gIH1cblxuICAvKiBTZWFyY2ggdGhlIG5hbWVzIG9mIHR1bmluZ3NcbiAgXHQgUmV0dXJucyBhbiBhcnJheSBvZiBuYW1lcyBvZiB0dW5pbmdzICovXG5cbiAgc2VhcmNoKGxldHRlcnMpIHtcbiAgXHRsZXQgcG9zc2libGUgPSBbXTtcbiAgXHRmb3IgKGxldCBrZXkgaW4gdGhpcy5zY2FsZXMpIHtcbiAgXHRcdGlmIChrZXkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGxldHRlcnMudG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XG4gIFx0XHRcdHBvc3NpYmxlLnB1c2goa2V5KTtcbiAgXHRcdH1cbiAgXHR9XG4gIFx0cmV0dXJuIHBvc3NpYmxlO1xuICB9XG5cbiAgLyogUmV0dXJuIGEgY29sbGVjdGlvbiBvZiBub3RlcyBhcyBhbiBhcnJheSAqL1xuXG4gIGNob3JkKG1pZGlzKSB7XG4gIFx0bGV0IG91dHB1dCA9IFtdO1xuICBcdGZvciAobGV0IGk9MDtpPG1pZGlzLmxlbmd0aDtpKyspIHtcbiAgXHRcdG91dHB1dC5wdXNoKHRoaXMubm90ZShtaWRpc1tpXSkpO1xuICBcdH1cbiAgXHRyZXR1cm4gb3V0cHV0O1xuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi90dW5pbmcvdHVuaW5nLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL0Rpc2FibGUganNoaW50IHdhcm5pbmcgY29uY2VybmluZyB0cmFpbGluZyByZWd1bGFyIHBhcmFtc1xuLypqc2hpbnQgLVcxMzggKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaW8ge1xuICAgIC8vaWYgbm9uLWV4aXN0ZW50IGJ1dHRvbnMgYXJlIHN3aXRjaGVkLCB0aGV5IGFyZSBpZ25vcmVkXG5cbiAgICBjb25zdHJ1Y3RvcihsZW5ndGggPSAzLCAuLi5vblZhbHMpIHtcbiAgICAgICAgLy9lYWNoIG9wdGlvbmFsICdvblZhbHMnIGFyZ3VtZW50IHN3aXRjaGVzIG9uIHRoYXQgdmFsdWUgaW4gdGhlIFJhZGlvIGlmIGl0IGV4aXN0c1xuICAgICAgICAvL0luIHRoZSBleGFtcGxlIGJlbG93LCBhIDMtYnV0dG9uIHJhZGlvIGlzIGNyZWF0ZWQsIGluZGV4IDAgaXMgc3dpdGNoZWQgb24sIGluZGV4IDEgaXMgc3dpdGNoZWQgb24gdGhlbiB0aGVuIGF0dGVtcHRlZCBhZ2FpbiBwcm9kdWNpbmcgYW4gd2FybmluZywgYW5kIHRoZSBmaW5hbCBhcmd1bWVudCBwcm9kdWNlcyBhIHdhcm5pbmcgYmVjYXVzZSB0aGUgaW5kZXggdmFsdWUgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgIC8vRXhhbXBsZTpcbiAgICAgICAgLy9gICByYWRpbyA9IG5ldyBSYWRpbygzLCAwLCAxLCAxLCAzKTtcbiAgICAgICAgLy/igKYgIFsxLDEsMF1cblxuICAgICAgICBpZiAobGVuZ3RoIDwgMCkgeyBsZW5ndGggPSAxOyB9XG5cbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMub25WYWxzID0gb25WYWxzO1xuICAgICAgICB0aGlzLmFycmF5ID0gbmV3IEFycmF5KGxlbmd0aCkuZmlsbCgwKTtcblxuICAgICAgICBpZiAob25WYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub24oLi4ub25WYWxzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdCh2YWx1ZSkge1xuICAgICAgICB0aGlzLmFycmF5LmZpbGwoMCk7XG4gICAgICAgIHRoaXMuYXJyYXlbdmFsdWVdID0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyYXk7XG4gICAgfVxuXG4gICAgZmxpcCguLi52YWx1ZXMpIHtcbiAgICAgICAgLy9mbGlwcyB0aGUgc3BlY2lmaWVkIHZhbHVlcy4gaWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCBmbGlwcyBhbGwgYnV0dG9uc1xuICAgICAgICBsZXQgYSA9IHRoaXMuYXJyYXk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgICAgICAgICAgICAgIGlmICh2ID4gYS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignV2FybmluZzogQW5vblJhZGlvWycgKyB2ICsgJ10gZG9lcyBub3QgZXhpc3QnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhW3ZdID0gKGFbdl0gPyAwIDogMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhLmZvckVhY2goZnVuY3Rpb24odiwgaSwgYXJyKSB7XG4gICAgICAgICAgICAgICAgYXJyW2ldID0gKHYgPyAwIDogMSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBvbiguLi52YWx1ZXMpIHtcbiAgICAgICAgLy9zd2l0Y2ggb24gdGhlIHNwZWNpZmllZCB2YWx1ZXMuIGlmIG5vIHZhbHVlIHNwZWNpZmllZCwgZmxpcHMgb24gYWxsIGJ1dHRvbnNcbiAgICAgICAgbGV0IGEgPSB0aGlzLmFycmF5O1xuICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICAgICAgICBpZiAodiA+IGEubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IEFub25SYWRpb1snICsgdiArICddIGV4Y2VlZHMgc2l6ZSBvZiBvYmplY3QnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYVt2XSA9PT0gMSkgeyBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IEFub25SYWRpb1snICsgdiArICddIHdhcyBhbHJlYWR5IG9uLicpOyB9XG4gICAgICAgICAgICAgICAgICAgIGFbdl0gPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYS5maWxsKDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIG9mZiguLi52YWx1ZXMpIHtcbiAgICAgICAgLy9zd2l0Y2ggb2ZmIHRoZSBzcGVjaWZpZWQgdmFsdWVzLiBpZiBubyB2YWx1ZSBzcGVjaWZpZWQsIGZsaXBzIG9mZiBhbGwgYnV0dG9uc1xuICAgICAgICBsZXQgYSA9IHRoaXMuYXJyYXk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgICAgICAgICAgICAgIGFbdl0gPSAwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhLmZpbGwoMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy9yYWRpby5qcyIsInZhciBXQUFDbG9jayA9IHJlcXVpcmUoJy4vbGliL1dBQUNsb2NrJylcblxubW9kdWxlLmV4cG9ydHMgPSBXQUFDbG9ja1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuV0FBQ2xvY2sgPSBXQUFDbG9ja1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3dhYWNsb2NrL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaXNCcm93c2VyID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKVxuXG52YXIgQ0xPQ0tfREVGQVVMVFMgPSB7XG4gIHRvbGVyYW5jZUxhdGU6IDAuMTAsXG4gIHRvbGVyYW5jZUVhcmx5OiAwLjAwMVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PSBFdmVudCA9PT09PT09PT09PT09PT09PT09PSAvL1xudmFyIEV2ZW50ID0gZnVuY3Rpb24oY2xvY2ssIGRlYWRsaW5lLCBmdW5jKSB7XG4gIHRoaXMuY2xvY2sgPSBjbG9ja1xuICB0aGlzLmZ1bmMgPSBmdW5jXG4gIHRoaXMuX2NsZWFyZWQgPSBmYWxzZSAvLyBGbGFnIHVzZWQgdG8gY2xlYXIgYW4gZXZlbnQgaW5zaWRlIGNhbGxiYWNrXG5cbiAgdGhpcy50b2xlcmFuY2VMYXRlID0gY2xvY2sudG9sZXJhbmNlTGF0ZVxuICB0aGlzLnRvbGVyYW5jZUVhcmx5ID0gY2xvY2sudG9sZXJhbmNlRWFybHlcbiAgdGhpcy5fbGF0ZXN0VGltZSA9IG51bGxcbiAgdGhpcy5fZWFybGllc3RUaW1lID0gbnVsbFxuICB0aGlzLmRlYWRsaW5lID0gbnVsbFxuICB0aGlzLnJlcGVhdFRpbWUgPSBudWxsXG5cbiAgdGhpcy5zY2hlZHVsZShkZWFkbGluZSlcbn1cblxuLy8gVW5zY2hlZHVsZXMgdGhlIGV2ZW50XG5FdmVudC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5jbG9jay5fcmVtb3ZlRXZlbnQodGhpcylcbiAgdGhpcy5fY2xlYXJlZCA9IHRydWVcbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gU2V0cyB0aGUgZXZlbnQgdG8gcmVwZWF0IGV2ZXJ5IGB0aW1lYCBzZWNvbmRzLlxuRXZlbnQucHJvdG90eXBlLnJlcGVhdCA9IGZ1bmN0aW9uKHRpbWUpIHtcbiAgaWYgKHRpbWUgPT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWxheSBjYW5ub3QgYmUgMCcpXG4gIHRoaXMucmVwZWF0VGltZSA9IHRpbWVcbiAgaWYgKCF0aGlzLmNsb2NrLl9oYXNFdmVudCh0aGlzKSlcbiAgICB0aGlzLnNjaGVkdWxlKHRoaXMuZGVhZGxpbmUgKyB0aGlzLnJlcGVhdFRpbWUpXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIFNldHMgdGhlIHRpbWUgdG9sZXJhbmNlIG9mIHRoZSBldmVudC5cbi8vIFRoZSBldmVudCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBpbnRlcnZhbCBgW2RlYWRsaW5lIC0gZWFybHksIGRlYWRsaW5lICsgbGF0ZV1gXG4vLyBJZiB0aGUgY2xvY2sgZmFpbHMgdG8gZXhlY3V0ZSB0aGUgZXZlbnQgaW4gdGltZSwgdGhlIGV2ZW50IHdpbGwgYmUgZHJvcHBlZC5cbkV2ZW50LnByb3RvdHlwZS50b2xlcmFuY2UgPSBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZXMubGF0ZSA9PT0gJ251bWJlcicpXG4gICAgdGhpcy50b2xlcmFuY2VMYXRlID0gdmFsdWVzLmxhdGVcbiAgaWYgKHR5cGVvZiB2YWx1ZXMuZWFybHkgPT09ICdudW1iZXInKVxuICAgIHRoaXMudG9sZXJhbmNlRWFybHkgPSB2YWx1ZXMuZWFybHlcbiAgdGhpcy5fcmVmcmVzaEVhcmx5TGF0ZURhdGVzKClcbiAgaWYgKHRoaXMuY2xvY2suX2hhc0V2ZW50KHRoaXMpKSB7XG4gICAgdGhpcy5jbG9jay5fcmVtb3ZlRXZlbnQodGhpcylcbiAgICB0aGlzLmNsb2NrLl9pbnNlcnRFdmVudCh0aGlzKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgaXMgcmVwZWF0ZWQsIGZhbHNlIG90aGVyd2lzZVxuRXZlbnQucHJvdG90eXBlLmlzUmVwZWF0ZWQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMucmVwZWF0VGltZSAhPT0gbnVsbCB9XG5cbi8vIFNjaGVkdWxlcyB0aGUgZXZlbnQgdG8gYmUgcmFuIGJlZm9yZSBgZGVhZGxpbmVgLlxuLy8gSWYgdGhlIHRpbWUgaXMgd2l0aGluIHRoZSBldmVudCB0b2xlcmFuY2UsIHdlIGhhbmRsZSB0aGUgZXZlbnQgaW1tZWRpYXRlbHkuXG4vLyBJZiB0aGUgZXZlbnQgd2FzIGFscmVhZHkgc2NoZWR1bGVkIGF0IGEgZGlmZmVyZW50IHRpbWUsIGl0IGlzIHJlc2NoZWR1bGVkLlxuRXZlbnQucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24oZGVhZGxpbmUpIHtcbiAgdGhpcy5fY2xlYXJlZCA9IGZhbHNlXG4gIHRoaXMuZGVhZGxpbmUgPSBkZWFkbGluZVxuICB0aGlzLl9yZWZyZXNoRWFybHlMYXRlRGF0ZXMoKVxuXG4gIGlmICh0aGlzLmNsb2NrLmNvbnRleHQuY3VycmVudFRpbWUgPj0gdGhpcy5fZWFybGllc3RUaW1lKSB7XG4gICAgdGhpcy5fZXhlY3V0ZSgpXG4gIFxuICB9IGVsc2UgaWYgKHRoaXMuY2xvY2suX2hhc0V2ZW50KHRoaXMpKSB7XG4gICAgdGhpcy5jbG9jay5fcmVtb3ZlRXZlbnQodGhpcylcbiAgICB0aGlzLmNsb2NrLl9pbnNlcnRFdmVudCh0aGlzKVxuICBcbiAgfSBlbHNlIHRoaXMuY2xvY2suX2luc2VydEV2ZW50KHRoaXMpXG59XG5cbkV2ZW50LnByb3RvdHlwZS50aW1lU3RyZXRjaCA9IGZ1bmN0aW9uKHRSZWYsIHJhdGlvKSB7XG4gIGlmICh0aGlzLmlzUmVwZWF0ZWQoKSlcbiAgICB0aGlzLnJlcGVhdFRpbWUgPSB0aGlzLnJlcGVhdFRpbWUgKiByYXRpb1xuXG4gIHZhciBkZWFkbGluZSA9IHRSZWYgKyByYXRpbyAqICh0aGlzLmRlYWRsaW5lIC0gdFJlZilcbiAgLy8gSWYgdGhlIGRlYWRsaW5lIGlzIHRvbyBjbG9zZSBvciBwYXN0LCBhbmQgdGhlIGV2ZW50IGhhcyBhIHJlcGVhdCxcbiAgLy8gd2UgY2FsY3VsYXRlIHRoZSBuZXh0IHJlcGVhdCBwb3NzaWJsZSBpbiB0aGUgc3RyZXRjaGVkIHNwYWNlLlxuICBpZiAodGhpcy5pc1JlcGVhdGVkKCkpIHtcbiAgICB3aGlsZSAodGhpcy5jbG9jay5jb250ZXh0LmN1cnJlbnRUaW1lID49IGRlYWRsaW5lIC0gdGhpcy50b2xlcmFuY2VFYXJseSlcbiAgICAgIGRlYWRsaW5lICs9IHRoaXMucmVwZWF0VGltZVxuICB9XG4gIHRoaXMuc2NoZWR1bGUoZGVhZGxpbmUpXG59XG5cbi8vIEV4ZWN1dGVzIHRoZSBldmVudFxuRXZlbnQucHJvdG90eXBlLl9leGVjdXRlID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLmNsb2NrLl9zdGFydGVkID09PSBmYWxzZSkgcmV0dXJuXG4gIHRoaXMuY2xvY2suX3JlbW92ZUV2ZW50KHRoaXMpXG5cbiAgaWYgKHRoaXMuY2xvY2suY29udGV4dC5jdXJyZW50VGltZSA8IHRoaXMuX2xhdGVzdFRpbWUpXG4gICAgdGhpcy5mdW5jKHRoaXMpXG4gIGVsc2Uge1xuICAgIGlmICh0aGlzLm9uZXhwaXJlZCkgdGhpcy5vbmV4cGlyZWQodGhpcylcbiAgICBjb25zb2xlLndhcm4oJ2V2ZW50IGV4cGlyZWQnKVxuICB9XG4gIC8vIEluIHRoZSBjYXNlIGBzY2hlZHVsZWAgaXMgY2FsbGVkIGluc2lkZSBgZnVuY2AsIHdlIG5lZWQgdG8gYXZvaWRcbiAgLy8gb3ZlcnJ3cml0aW5nIHdpdGggeWV0IGFub3RoZXIgYHNjaGVkdWxlYC5cbiAgaWYgKCF0aGlzLmNsb2NrLl9oYXNFdmVudCh0aGlzKSAmJiB0aGlzLmlzUmVwZWF0ZWQoKSAmJiAhdGhpcy5fY2xlYXJlZClcbiAgICB0aGlzLnNjaGVkdWxlKHRoaXMuZGVhZGxpbmUgKyB0aGlzLnJlcGVhdFRpbWUpIFxufVxuXG4vLyBVcGRhdGVzIGNhY2hlZCB0aW1lc1xuRXZlbnQucHJvdG90eXBlLl9yZWZyZXNoRWFybHlMYXRlRGF0ZXMgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fbGF0ZXN0VGltZSA9IHRoaXMuZGVhZGxpbmUgKyB0aGlzLnRvbGVyYW5jZUxhdGVcbiAgdGhpcy5fZWFybGllc3RUaW1lID0gdGhpcy5kZWFkbGluZSAtIHRoaXMudG9sZXJhbmNlRWFybHlcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT0gV0FBQ2xvY2sgPT09PT09PT09PT09PT09PT09PT0gLy9cbnZhciBXQUFDbG9jayA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oY29udGV4dCwgb3B0cykge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgb3B0cyA9IG9wdHMgfHwge31cbiAgdGhpcy50aWNrTWV0aG9kID0gb3B0cy50aWNrTWV0aG9kIHx8ICdTY3JpcHRQcm9jZXNzb3JOb2RlJ1xuICB0aGlzLnRvbGVyYW5jZUVhcmx5ID0gb3B0cy50b2xlcmFuY2VFYXJseSB8fCBDTE9DS19ERUZBVUxUUy50b2xlcmFuY2VFYXJseVxuICB0aGlzLnRvbGVyYW5jZUxhdGUgPSBvcHRzLnRvbGVyYW5jZUxhdGUgfHwgQ0xPQ0tfREVGQVVMVFMudG9sZXJhbmNlTGF0ZVxuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gIHRoaXMuX2V2ZW50cyA9IFtdXG4gIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZVxufVxuXG4vLyAtLS0tLS0tLS0tIFB1YmxpYyBBUEkgLS0tLS0tLS0tLSAvL1xuLy8gU2NoZWR1bGVzIGBmdW5jYCB0byBydW4gYWZ0ZXIgYGRlbGF5YCBzZWNvbmRzLlxuV0FBQ2xvY2sucHJvdG90eXBlLnNldFRpbWVvdXQgPSBmdW5jdGlvbihmdW5jLCBkZWxheSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRXZlbnQoZnVuYywgdGhpcy5fYWJzVGltZShkZWxheSkpXG59XG5cbi8vIFNjaGVkdWxlcyBgZnVuY2AgdG8gcnVuIGJlZm9yZSBgZGVhZGxpbmVgLlxuV0FBQ2xvY2sucHJvdG90eXBlLmNhbGxiYWNrQXRUaW1lID0gZnVuY3Rpb24oZnVuYywgZGVhZGxpbmUpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUV2ZW50KGZ1bmMsIGRlYWRsaW5lKVxufVxuXG4vLyBTdHJldGNoZXMgYGRlYWRsaW5lYCBhbmQgYHJlcGVhdGAgb2YgYWxsIHNjaGVkdWxlZCBgZXZlbnRzYCBieSBgcmF0aW9gLCBrZWVwaW5nXG4vLyB0aGVpciByZWxhdGl2ZSBkaXN0YW5jZSB0byBgdFJlZmAuIEluIGZhY3QgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGNoYW5naW5nIHRoZSB0ZW1wby5cbldBQUNsb2NrLnByb3RvdHlwZS50aW1lU3RyZXRjaCA9IGZ1bmN0aW9uKHRSZWYsIGV2ZW50cywgcmF0aW8pIHtcbiAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24oZXZlbnQpIHsgZXZlbnQudGltZVN0cmV0Y2godFJlZiwgcmF0aW8pIH0pXG4gIHJldHVybiBldmVudHNcbn1cblxuLy8gUmVtb3ZlcyBhbGwgc2NoZWR1bGVkIGV2ZW50cyBhbmQgc3RhcnRzIHRoZSBjbG9jayBcbldBQUNsb2NrLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5fc3RhcnRlZCA9PT0gZmFsc2UpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICB0aGlzLl9zdGFydGVkID0gdHJ1ZVxuICAgIHRoaXMuX2V2ZW50cyA9IFtdXG5cbiAgICBpZiAodGhpcy50aWNrTWV0aG9kID09PSAnU2NyaXB0UHJvY2Vzc29yTm9kZScpIHtcbiAgICAgIHZhciBidWZmZXJTaXplID0gMjU2XG4gICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG5vZGUgdG8gYXZvaWQgZ2FyYmFnZSBjb2xsZWN0aW9uXG4gICAgICB0aGlzLl9jbG9ja05vZGUgPSB0aGlzLmNvbnRleHQuY3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUsIDEsIDEpXG4gICAgICB0aGlzLl9jbG9ja05vZGUuY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pXG4gICAgICB0aGlzLl9jbG9ja05vZGUub25hdWRpb3Byb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7IHNlbGYuX3RpY2soKSB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50aWNrTWV0aG9kID09PSAnbWFudWFsJykgbnVsbCAvLyBfdGljayBpcyBjYWxsZWQgbWFudWFsbHlcblxuICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHRpY2tNZXRob2QgJyArIHRoaXMudGlja01ldGhvZClcbiAgfVxufVxuXG4vLyBTdG9wcyB0aGUgY2xvY2tcbldBQUNsb2NrLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLl9zdGFydGVkID09PSB0cnVlKSB7XG4gICAgdGhpcy5fc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpcy5fY2xvY2tOb2RlLmRpc2Nvbm5lY3QoKVxuICB9ICBcbn1cblxuLy8gLS0tLS0tLS0tLSBQcml2YXRlIC0tLS0tLS0tLS0gLy9cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByYW4gcGVyaW9kaWNhbGx5LCBhbmQgYXQgZWFjaCB0aWNrIGl0IGV4ZWN1dGVzXG4vLyBldmVudHMgZm9yIHdoaWNoIGBjdXJyZW50VGltZWAgaXMgaW5jbHVkZWQgaW4gdGhlaXIgdG9sZXJhbmNlIGludGVydmFsLlxuV0FBQ2xvY2sucHJvdG90eXBlLl90aWNrID0gZnVuY3Rpb24oKSB7XG4gIHZhciBldmVudCA9IHRoaXMuX2V2ZW50cy5zaGlmdCgpXG5cbiAgd2hpbGUoZXZlbnQgJiYgZXZlbnQuX2VhcmxpZXN0VGltZSA8PSB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUpIHtcbiAgICBldmVudC5fZXhlY3V0ZSgpXG4gICAgZXZlbnQgPSB0aGlzLl9ldmVudHMuc2hpZnQoKVxuICB9XG5cbiAgLy8gUHV0IGJhY2sgdGhlIGxhc3QgZXZlbnRcbiAgaWYoZXZlbnQpIHRoaXMuX2V2ZW50cy51bnNoaWZ0KGV2ZW50KVxufVxuXG4vLyBDcmVhdGVzIGFuIGV2ZW50IGFuZCBpbnNlcnQgaXQgdG8gdGhlIGxpc3RcbldBQUNsb2NrLnByb3RvdHlwZS5fY3JlYXRlRXZlbnQgPSBmdW5jdGlvbihmdW5jLCBkZWFkbGluZSkge1xuICByZXR1cm4gbmV3IEV2ZW50KHRoaXMsIGRlYWRsaW5lLCBmdW5jKVxufVxuXG4vLyBJbnNlcnRzIGFuIGV2ZW50IHRvIHRoZSBsaXN0XG5XQUFDbG9jay5wcm90b3R5cGUuX2luc2VydEV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgdGhpcy5fZXZlbnRzLnNwbGljZSh0aGlzLl9pbmRleEJ5VGltZShldmVudC5fZWFybGllc3RUaW1lKSwgMCwgZXZlbnQpXG59XG5cbi8vIFJlbW92ZXMgYW4gZXZlbnQgZnJvbSB0aGUgbGlzdFxuV0FBQ2xvY2sucHJvdG90eXBlLl9yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIHZhciBpbmQgPSB0aGlzLl9ldmVudHMuaW5kZXhPZihldmVudClcbiAgaWYgKGluZCAhPT0gLTEpIHRoaXMuX2V2ZW50cy5zcGxpY2UoaW5kLCAxKVxufVxuXG4vLyBSZXR1cm5zIHRydWUgaWYgYGV2ZW50YCBpcyBpbiBxdWV1ZSwgZmFsc2Ugb3RoZXJ3aXNlXG5XQUFDbG9jay5wcm90b3R5cGUuX2hhc0V2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHtcbiByZXR1cm4gdGhpcy5fZXZlbnRzLmluZGV4T2YoZXZlbnQpICE9PSAtMVxufVxuXG4vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZXZlbnQgd2hvc2UgZGVhZGxpbmUgaXMgPj0gdG8gYGRlYWRsaW5lYFxuV0FBQ2xvY2sucHJvdG90eXBlLl9pbmRleEJ5VGltZSA9IGZ1bmN0aW9uKGRlYWRsaW5lKSB7XG4gIC8vIHBlcmZvcm1zIGEgYmluYXJ5IHNlYXJjaFxuICB2YXIgbG93ID0gMFxuICAgICwgaGlnaCA9IHRoaXMuX2V2ZW50cy5sZW5ndGhcbiAgICAsIG1pZFxuICB3aGlsZSAobG93IDwgaGlnaCkge1xuICAgIG1pZCA9IE1hdGguZmxvb3IoKGxvdyArIGhpZ2gpIC8gMilcbiAgICBpZiAodGhpcy5fZXZlbnRzW21pZF0uX2VhcmxpZXN0VGltZSA8IGRlYWRsaW5lKVxuICAgICAgbG93ID0gbWlkICsgMVxuICAgIGVsc2UgaGlnaCA9IG1pZFxuICB9XG4gIHJldHVybiBsb3dcbn1cblxuLy8gQ29udmVydHMgZnJvbSByZWxhdGl2ZSB0aW1lIHRvIGFic29sdXRlIHRpbWVcbldBQUNsb2NrLnByb3RvdHlwZS5fYWJzVGltZSA9IGZ1bmN0aW9uKHJlbFRpbWUpIHtcbiAgcmV0dXJuIHJlbFRpbWUgKyB0aGlzLmNvbnRleHQuY3VycmVudFRpbWVcbn1cblxuLy8gQ29udmVydHMgZnJvbSBhYnNvbHV0ZSB0aW1lIHRvIHJlbGF0aXZlIHRpbWUgXG5XQUFDbG9jay5wcm90b3R5cGUuX3JlbFRpbWUgPSBmdW5jdGlvbihhYnNUaW1lKSB7XG4gIHJldHVybiBhYnNUaW1lIC0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lXG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3dhYWNsb2NrL2xpYi9XQUFDbG9jay5qc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9wcm9jZXNzL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY2xvY2sgfSBmcm9tICcuLi9tYWluJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWwge1xuXG4gIGNvbnN0cnVjdG9yKHJhdGUsZnVuYyxvbikge1xuXG4gICAgdGhpcy5yYXRlID0gcmF0ZTtcbiAgICB0aGlzLm9uID0gb247XG4gICAgdGhpcy5jbG9jayA9IGNsb2NrKCk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG4gICAgdGhpcy5wYXR0ZXJuID0gWzFdO1xuICAgIHRoaXMuaW5kZXggPSAwO1xuXG4gICAgdGhpcy5ldmVudCA9IGZ1bmMgPyBmdW5jIDogZnVuY3Rpb24oKSB7IH07XG5cbiAgICBpZiAodGhpcy5vbikge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICB9XG5cbiAgX2V2ZW50KGUpIHtcbiAgLy8gIGlmICh0aGlzLnBhdHRlcm5bdGhpcy5pbmRleCV0aGlzLnBhdHRlcm4ubGVuZ3RoXSkge1xuICAgICAgdGhpcy5ldmVudChlKTtcbiAgLy8gIH1cbiAgICB0aGlzLmluZGV4Kys7XG4gIH1cblxuICBzdG9wKCkge1xuICAgIHRoaXMub24gPSBmYWxzZTtcbiAgICB0aGlzLmludGVydmFsLmNsZWFyKCk7XG4gIH1cblxuICBzdGFydCgpIHtcbiAgICB0aGlzLm9uID0gdHJ1ZTtcbiAgICB0aGlzLmludGVydmFsID0gdGhpcy5jbG9jay5jYWxsYmFja0F0VGltZSh0aGlzLl9ldmVudC5iaW5kKHRoaXMpLCB0aGlzLmNsb2NrLmNvbnRleHQuY3VycmVudFRpbWUpLnJlcGVhdCh0aGlzLnJhdGUvMTAwMCkudG9sZXJhbmNlKHtlYXJseTogMC4xLCBsYXRlOjF9KTtcbiAgfVxuXG4gIG1zKG5ld3JhdGUpIHtcbiAgICBpZiAodGhpcy5vbikge1xuICAgICAgdmFyIHJhdGlvID0gbmV3cmF0ZS90aGlzLnJhdGU7XG4gICAgICB0aGlzLnJhdGUgPSBuZXdyYXRlO1xuICAgICAgdGhpcy5jbG9jay50aW1lU3RyZXRjaCh0aGlzLmNsb2NrLmNvbnRleHQuY3VycmVudFRpbWUsIFt0aGlzLmludGVydmFsXSwgcmF0aW8pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJhdGUgPSBuZXdyYXRlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvdGltZS9pbnRlcnZhbC5qcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=NexusUI.map \ No newline at end of file diff --git a/dist/NexusUI.map b/dist/NexusUI.map index 9e86feb4..6a4fd150 100644 --- a/dist/NexusUI.map +++ b/dist/NexusUI.map @@ -1,5 +1 @@ -<<<<<<< HEAD -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 009be143cf24a7fd6ea0","webpack:///./index.js","webpack:///./lib/main.js","webpack:///./lib/interfaces/index.js","webpack:///./lib/interfaces/position.js","webpack:///./lib/util/svg.js","webpack:///./lib/util/math.js","webpack:///./lib/core/interface.js","webpack:///./lib/util/dom.js","webpack:///./lib/util/util.js","webpack:///./lib/util/touch.js","webpack:///./~/events/events.js","webpack:///./lib/models/step.js","webpack:///./lib/util/interaction.js","webpack:///./lib/models/toggle.js","webpack:///./lib/interfaces/slider.js","webpack:///./lib/interfaces/toggle.js","webpack:///./lib/interfaces/button.js","webpack:///./lib/components/buttontemplate.js","webpack:///./lib/interfaces/textbutton.js","webpack:///./lib/interfaces/radiobutton.js","webpack:///./lib/interfaces/number.js","webpack:///./lib/interfaces/select.js","webpack:///./lib/interfaces/dial.js","webpack:///./lib/interfaces/piano.js","webpack:///./lib/interfaces/sequencer.js","webpack:///./lib/models/matrix.js","webpack:///./lib/models/sequence.js","webpack:///./lib/models/drunk.js","webpack:///./lib/models/counter.js","webpack:///./lib/time/interval.js","webpack:///./lib/interfaces/pan2d.js","webpack:///./lib/interfaces/tilt.js","webpack:///./lib/interfaces/multislider.js","webpack:///./lib/interfaces/pan.js","webpack:///./lib/interfaces/envelope.js","webpack:///./lib/interfaces/spectrogram.js","webpack:///./lib/interfaces/meter.js","webpack:///./lib/interfaces/oscilloscope.js","webpack:///./lib/core/rack.js","webpack:///./lib/util/transform.js","webpack:///./lib/tuning/tuning.js","webpack:///./lib/models/radio.js","webpack:///./~/waaclock/index.js","webpack:///./~/waaclock/lib/WAAClock.js","webpack:///./~/process/browser.js"],"names":[],"mappings":"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A;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;AC7SA,aAAY,CAAC;;;;;;AAEb,KAAI,IAAI,GAAG,mBAAO,CAAC,CAAc,CAAC,CAAC;;;;;;;;;;;KAWd,IAAI;AAEZ,YAFQ,IAAI,GAEyB;SAApC,GAAG,gCAAG,CAAC;SAAC,GAAG,gCAAG,CAAC;SAAC,IAAI,gCAAG,CAAC;SAAC,KAAK,gCAAG,CAAC;;2BAF3B,IAAI;;;;;AAMrB,SAAI,CAAC,GAAG,GAAG,GAAG,CAAC;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;;;ACL1B;;AAEA;AACA;;;;;;;ACHA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAG;AACH;AACA;;AAEA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,iCAAiC;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;AACpD;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,I;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,E;;;;;;;ACzOA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAqC;;AAErC;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU","file":"./dist/NexusUI.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Nexus\"] = factory();\n\telse\n\t\troot[\"Nexus\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 009be143cf24a7fd6ea0","'use strict';\n\nimport NexusUI from './lib/main';\n\nexport default NexusUI;\n\n\n\n// WEBPACK FOOTER //\n// ./~/jshint-loader!./index.js","'use strict';\n\nimport Interfaces from './interfaces/';\nimport math from './util/math';\nimport Rack from './core/rack';\nimport Tune from './tuning/tuning';\nimport * as Transform from './util/transform';\n\nlet Counter = require('./models/counter');\nlet Radio = require('./models/radio');\nlet Drunk = require('./models/drunk');\nlet Sequence = require('./models/sequence');\nlet Matrix = require('./models/matrix');\n\nimport WAAClock from 'waaclock';\nimport Interval from './time/interval';\n\n\n/**\nNexusUI => created as Nexus\n*/\n\nclass NexusUI {\n\n constructor(context) {\n\n for (let key in Interfaces) {\n this[key] = Interfaces[key];\n }\n\n for (let key in math) {\n this[key] = math[key];\n }\n\n let Core = {\n 'Rack': Rack\n };\n\n let Models = {\n 'Counter': Counter,\n 'Radio': Radio,\n 'Drunk': Drunk,\n 'Sequence': Sequence,\n 'Matrix': Matrix\n };\n\n for (let key in Models) {\n this[key] = Models[key];\n }\n\n for (let key in Core) {\n this[key] = Core[key];\n }\n\n let DefaultContext = window.AudioContext || window.webkitAudioContext;\n this._context = context || new DefaultContext();\n\n this.tune = new Tune();\n this.note = this.tune.note.bind(this.tune);\n\n this.clock = new WAAClock(this._context);\n this.clock.start();\n this.Interval = Interval;\n\n this.colors = {\n accent: '#2bb',\n fill: '#eee',\n light: '#fff',\n dark: '#333',\n mediumLight: '#ccc',\n mediumDark: '#666'\n };\n\n this.transform = Transform;\n this.add = Transform.add;\n\n\n this.Add = {};\n for (let key in Interfaces) {\n this.Add[key] = Transform.add.bind(this,key);\n }\n\n\n\n\n /* create default component size */\n /* jshint ignore:start */\n var existingStylesheets = document.getElementsByTagName(\"style\");\n var defaultSizeDeclaration = '[nexus-ui]{height:5000px;width:5000px}';\n var defaultStyleNode = document.createElement('style');\n defaultStyleNode.type = 'text/css';\n defaultStyleNode.innerHTML = defaultSizeDeclaration;\n if (existingStylesheets.length > 0) {\n var parent = existingStylesheets[0].parentNode\n parent.insertBefore( defaultStyleNode, existingStylesheets[0])\n } else {\n document.write('")}return _createClass(NexusUI,{context:{get:function(){return this._context},set:function(ctx){this.clock.stop(),this._context=ctx,this.clock=new WAAClock(this.context),this.clock.start()}}}),NexusUI}(),Nexus=new NexusUI;exports.default=Nexus},function(module,exports,__webpack_require__){"use strict";module.exports={Position:__webpack_require__(3),Slider:__webpack_require__(14),Toggle:__webpack_require__(15),Button:__webpack_require__(16),TextButton:__webpack_require__(18),RadioButton:__webpack_require__(19),Number:__webpack_require__(20),Select:__webpack_require__(21),Dial:__webpack_require__(22),Piano:__webpack_require__(23),Sequencer:__webpack_require__(24),Pan2D:__webpack_require__(30),Tilt:__webpack_require__(31),Multislider:__webpack_require__(32),Pan:__webpack_require__(33),Envelope:__webpack_require__(34),Spectrogram:__webpack_require__(35),Meter:__webpack_require__(36),Oscilloscope:__webpack_require__(37)}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Position=function(_Interface){function Position(){_classCallCheck(this,Position);var options=["value"],defaults={size:[200,200],mode:"absolute",minX:0,maxX:1,stepX:0,x:.5,minY:0,maxY:1,stepY:0,y:.5};_get(Object.getPrototypeOf(Position.prototype),"constructor",this).call(this,arguments,options,defaults),this._x=new Step(this.settings.minX,this.settings.maxX,this.settings.stepX,this.settings.x),this._y=new Step(this.settings.minY,this.settings.maxY,this.settings.stepY,this.settings.y),this.position={x:new Interaction.Handle(this.settings.mode,"horizontal",[0,this.width],[this.height,0]),y:new Interaction.Handle(this.settings.mode,"vertical",[0,this.width],[this.height,0])},this.position.x.value=this._x.normalized,this.position.y.value=this._y.normalized,this.init(),this.render()}return _inherits(Position,_Interface),_createClass(Position,{buildInterface:{value:function(){this.knob=svg.create("circle"),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.position.x.resize([0,this.width],[this.height,0]),this.position.y.resize([0,this.width],[this.height,0]),this._minDimension=Math.min(this.width,this.height),this.knobRadius={off:5*~~(this._minDimension/100)+5},this.knobRadius.on=2*this.knobRadius.off,this.knob.setAttribute("cx",this.width/2),this.knob.setAttribute("cy",this.height/2),this.knob.setAttribute("r",this.knobRadius.off)}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.fill,this.knob.setAttribute("fill",this.colors.accent)}},render:{value:function(){this.clicked?this.knob.setAttribute("r",this.knobRadius.on):this.knob.setAttribute("r",this.knobRadius.off),this.knobCoordinates={x:this._x.normalized*this.width,y:this.height-this._y.normalized*this.height},this.knob.setAttribute("cx",this.knobCoordinates.x),this.knob.setAttribute("cy",this.knobCoordinates.y)}},click:{value:function(){this.position.x.anchor=this.mouse,this.position.y.anchor=this.mouse,this.move()}},move:{value:function(){this.clicked&&(this.position.x.update(this.mouse),this.position.y.update(this.mouse),this._x.updateNormal(this.position.x.value),this._y.updateNormal(this.position.y.value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render())}},release:{value:function(){this.render()}},x:{get:function(){return this._x.value},set:function(value){this._x.update(value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render()}},y:{get:function(){return this._y.value},set:function(value){this._y.update(value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render()}},normalized:{get:function(){return{x:this._x.normalized,y:this._y.normalized}}},minX:{get:function(){return this._x.min},set:function(v){this._x.min=v,this.render()}},minY:{get:function(){return this._y.min},set:function(v){this._y.min=v,this.render()}},maxX:{get:function(){return this._x.max},set:function(v){this._x.max=v,this.render()}},maxY:{get:function(){return this._y.max},set:function(v){this._y.max=v,this.render()}},stepX:{get:function(){return this._x.step},set:function(v){this._x.step=v,this.render()}},stepY:{get:function(){return this._y.step},set:function(v){this._y.step=v,this.render()}},mode:{get:function(){return this.position.x.mode},set:function(v){this.position.x.mode=v,this.position.y.mode=v}}}),Position}(Interface);module.exports=Position},function(module,exports,__webpack_require__){"use strict";var math=__webpack_require__(5);module.exports={create:function(type){return document.createElementNS("http://www.w3.org/2000/svg",type)},arc:function(x,y,radius,startAngle,endAngle){var start=math.toCartesian(radius,endAngle),end=math.toCartesian(radius,startAngle),largeArcFlag=endAngle-startAngle<=180?"0":"1";return["M",start.x+x,start.y+y,"A",radius,radius,0,largeArcFlag,0,end.x+x,end.y+y].join(" ")},radialGradient:function(defs,numberOfStops){var id="gradient"+math.ri(1e11),stops=[],gradient=document.createElementNS("http://www.w3.org/2000/svg","radialGradient");gradient.setAttribute("id",id),gradient.setAttribute("cx","50%"),gradient.setAttribute("cy","50%"),gradient.setAttribute("r","50%"),defs.appendChild(gradient);for(var i=0;i=max&&(input=min),input},exports.average=function(data){for(var total=0,i=0;i=1){var key=options.splice(0,1)[0];settings[key]=setting}}return this.parent=dom.parseElement(settings.target),this.parent&&this.parent instanceof HTMLElement&&!settings.component&&(this.parent.hasAttribute("nexus-ui")||this.parent.setAttribute("nexus-ui","")),settings.size&&Array.isArray(settings.size)&&settings.snapWithParent?(this.width=settings.size[0],this.height=settings.size[1],this.parent.style.width=this.width+"px",this.parent.style.height=this.height+"px"):settings.snapWithParent&&!settings.component?(this.width=parseFloat(window.getComputedStyle(this.parent,null).getPropertyValue("width").replace("px","")),this.height=parseFloat(window.getComputedStyle(this.parent,null).getPropertyValue("height").replace("px","")),5e3==this.width&&(this.width=settings.defaultSize[0],this.parent.style.width=this.parent.width=this.width+"px"),5e3==this.height&&(this.height=settings.defaultSize[1],this.parent.style.height=this.parent.height=this.height+"px")):(settings.size=settings.defaultSize,this.width=settings.size[0],this.height=settings.size[1]),settings.event?this.event=this.on("change",settings.event):this.event=!1,settings}},init:{value:function(){this.buildFrame(),this.buildInterface(),this.sizeInterface(),this.attachListeners(),this.colorInterface(),this.finalTouches()}},buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){}},sizeInterface:{value:function(){}},colorInterface:{value:function(){}},attachListeners:{value:function(){var _this=this;this.interactionTarget=this.interactionTarget||this.element,touch.exists&&(this.interactionTarget.addEventListener("touchstart",function(evt){return _this.preTouch(evt)}),this.interactionTarget.addEventListener("touchmove",function(evt){return _this.preTouchMove(evt)}),this.interactionTarget.addEventListener("touchend",function(evt){return _this.preTouchRelease(evt)})),this.boundPreMove=function(evt){return _this.preMove(evt)},this.boundPreRelease=function(evt){return _this.preRelease(evt)},this.interactionTarget.addEventListener("mousedown",function(evt){return _this.preClick(evt)})}},finalTouches:{value:function(){this.element.style.cursor="pointer"}},preClick:{value:function(e){this.element instanceof HTMLElement&&(this.width=window.getComputedStyle(this.element,null).getPropertyValue("width").replace("px","")),this.offset=dom.findPosition(this.element),this.mouse=dom.locateMouse(e,this.offset),this.clicked=!0,this.click(),this.moveEvent=document.addEventListener("mousemove",this.boundPreMove),this.releaseEvent=document.addEventListener("mouseup",this.boundPreRelease),this.emit("click"),e.preventDefault(),e.stopPropagation()}},preMove:{value:function(e){var _this=this;this.wait||(this.mouse=dom.locateMouse(e,this.offset),this.move(),this.wait=!0,setTimeout(function(){_this.wait=!1},25)),e.preventDefault(),e.stopPropagation()}},preRelease:{value:function(e){this.mouse=dom.locateMouse(e,this.offset),this.clicked=!1,this.release(),this.emit("release"),document.removeEventListener("mousemove",this.boundPreMove),document.removeEventListener("mouseup",this.boundPreRelease),e.preventDefault(),e.stopPropagation()}},click:{value:function(){}},move:{value:function(){}},release:{value:function(){}},preTouch:{value:function(e){this.element instanceof HTMLElement&&(this.width=window.getComputedStyle(this.element,null).getPropertyValue("width").replace("px","")),this.offset=dom.findPosition(this.element),this.mouse=dom.locateTouch(e,this.offset),this.clicked=!0,this.touch(e),this.emit("click"),e.preventDefault(),e.stopPropagation()}},preTouchMove:{value:function(e){this.clicked&&(this.mouse=dom.locateTouch(e,this.offset),this.touchMove(),e.preventDefault(),e.stopPropagation())}},preTouchRelease:{value:function(e){this.mouse=dom.locateTouch(e,this.offset),this.clicked=!1,this.touchRelease(),this.emit("release"),e.preventDefault(),e.stopPropagation()}},touch:{value:function(){this.click()}},touchMove:{value:function(){this.move()}},touchRelease:{value:function(){this.release()}},resize:{value:function(width,height){this.width=width,this.height=height,this.parent.style.width=this.width+"px",this.parent.style.height=this.height+"px",this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.sizeInterface()}},empty:{value:function(){for(;this.element.lastChild;)this.element.removeChild(this.element.lastChild)}},destroy:{value:function(){this.empty(),this.parent.removeChild(this.element),this.removeAllListeners(),this.instrument&&delete this.instrument[this.id],this.customDestroy()}},customDestroy:{value:function(){}},colorize:{value:function(type,color){this.colors[type]=color,this.colorInterface()}}}),Interface}(EventEmitter);module.exports=Interface},function(module,exports){"use strict";exports.findPosition=function(el){var viewportOffset=el.getBoundingClientRect();return{top:viewportOffset.top+window.scrollY,left:viewportOffset.left+window.scrollX}},exports.parseElement=function(parent){return"string"==typeof parent&&(parent=document.getElementById(parent.replace("#",""))),parent instanceof HTMLElement||parent instanceof SVGElement?parent:"No valid parent argument"},exports.locateMouse=function(e,offset){return{x:e.pageX-offset.left,y:e.pageY-offset.top}},exports.locateTouch=function(e,offset){return{x:!!e.targetTouches.length&&e.targetTouches[0].pageX-offset.left,y:!!e.targetTouches.length&&e.targetTouches[0].pageY-offset.top}},exports.SmartCanvas=function(parent){var _this=this;this.element=document.createElement("canvas"),this.context=this.element.getContext("2d"),parent.appendChild(this.element),this.resize=function(w,h){_this.element.width=2*w,_this.element.height=2*h,_this.element.style.width=w+"px",_this.element.style.height=h+"px"}}},function(module,exports){"use strict";exports.isObject=function(obj){return"object"==typeof obj&&!Array.isArray(obj)&&null!==obj&&obj instanceof SVGElement==!1&&obj instanceof HTMLElement==!1},exports.setInputFilter=function(textbox,inputFilter){["input","keydown","keyup","mousedown","mouseup","select","contextmenu","drop"].forEach(function(event){textbox.addEventListener(event,function(){inputFilter(this.value)?(this.oldValue=this.value,this.oldSelectionStart=this.selectionStart,this.oldSelectionEnd=this.selectionEnd):this.hasOwnProperty("oldValue")?(this.value=this.oldValue,this.setSelectionRange(this.oldSelectionStart,this.oldSelectionEnd)):this.value=""})})}},function(module,exports){"use strict";exports.exists="ontouchstart"in document.documentElement},function(module,exports){function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(arg){return"function"==typeof arg}function isNumber(arg){return"number"==typeof arg}function isObject(arg){return"object"==typeof arg&&null!==arg}function isUndefined(arg){return void 0===arg}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");return this._maxListeners=n,this},EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(this._events||(this._events={}),"error"===type&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if((er=arguments[1])instanceof Error)throw er;var err=new Error('Uncaught, unspecified "error" event. ('+er+")");throw err.context=er,err}if(handler=this._events[type],isUndefined(handler))return!1;if(isFunction(handler))switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1),handler.apply(this,args)}else if(isObject(handler))for(args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),len=listeners.length,i=0;i0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[type].length),"function"==typeof console.trace&&console.trace()),this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){function g(){this.removeListener(type,g),fired||(fired=!0,listener.apply(this,arguments))}if(!isFunction(listener))throw TypeError("listener must be a function");var fired=!1;return g.listener=listener,this.on(type,g),this},EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;if(list=this._events[type],length=list.length,position=-1,list===listener||isFunction(list.listener)&&list.listener===listener)delete this._events[type],this._events.removeListener&&this.emit("removeListener",type,listener);else if(isObject(list)){for(i=length;i-- >0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(position<0)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit("removeListener",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)"removeListener"!==key&&this.removeAllListeners(key);return this.removeAllListeners("removeListener"),this._events={},this}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else if(listeners)for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){return this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;if(evlistener)return evlistener.length}return 0},EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=__webpack_require__(5),Step=function(){function Step(){var min=void 0===arguments[0]?0:arguments[0],max=void 0===arguments[1]?1:arguments[1],step=void 0===arguments[2]?0:arguments[2],value=void 0===arguments[3]?0:arguments[3];_classCallCheck(this,Step),this.min=min,this.max=max,this.step=step,this.value=value,this.changed=!1,this.oldValue=!1,this.update(this.value)}return _createClass(Step,{update:{value:function(value){return this.step?this.value=math.clip(Math.round((value-this.min)/this.step)*this.step+this.min,this.min,this.max):this.value=math.clip(value,this.min,this.max),this.oldValue!==this.value?(this.oldValue=this.value,this.changed=!0):this.changed=!1,this.value}},updateNormal:{value:function(value){return this.value=math.scale(value,0,1,this.min,this.max),this.update(this.value)}},normalized:{get:function(){return math.normalize(this.value,this.min,this.max)}}}),Step}();module.exports=Step},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")};Object.defineProperty(exports,"__esModule",{value:!0});var math=_interopRequire(__webpack_require__(5)),ToggleModel=_interopRequire(__webpack_require__(13));exports.Handle=function(){function Handle(){var mode=void 0===arguments[0]?"absolute":arguments[0],direction=void 0===arguments[1]?"vertical":arguments[1],xbound=void 0===arguments[2]?[0,100]:arguments[2],ybound=void 0===arguments[3]?[0,100]:arguments[3];_classCallCheck(this,Handle),this.mode=mode,this.direction=direction,this.previous=0,this.value=0,this.sensitivity=1,this.resize(xbound,ybound)}return _createClass(Handle,{resize:{value:function(xbound,ybound){this.boundary={min:{x:xbound[0],y:ybound[0]},max:{x:xbound[1],y:ybound[1]},center:{x:(xbound[1]-xbound[0])/2+xbound[0],y:(ybound[1]-ybound[0])/2+ybound[0]}}}},anchor:{set:function(mouse){this._anchor=this.convertPositionToValue(mouse)},get:function(){return this._anchor}},update:{value:function(mouse){if("relative"===this.mode){var increment=this.convertPositionToValue(mouse)-this.anchor;Math.abs(increment)>.5&&(increment=0),this.anchor=mouse,this.value=this.value+increment*this.sensitivity}else this.value=this.convertPositionToValue(mouse);this.value=math.clip(this.value,0,1)}},convertPositionToValue:{value:function(current){switch(this.direction){case"radial":var position=math.toPolar(current.x-this.boundary.center.x,current.y-this.boundary.center.y);return position=position.angle/(2*Math.PI),position=(position-.25+1)%1;case"vertical":return math.scale(current.y,this.boundary.min.y,this.boundary.max.y,0,1);case"horizontal":return math.scale(current.x,this.boundary.min.x,this.boundary.max.x,0,1)}}}}),Handle}(),exports.Button=function(){function Button(){var mode=void 0===arguments[0]?"button":arguments[0];_classCallCheck(this,Button),this.mode=mode,this.state=new ToggleModel,this.paintbrush=!1}return _createClass(Button,{click:{value:function(){switch(this.mode){case"impulse":this.state.on(),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.state.off.bind(this),30),this.emit("change",this.state);break;case"button":this.turnOn(),this.emit("change",this.state);break;case"aftertouch":this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.turnOn(),this.emit("change",{state:this.state,x:this.position.x,y:this.position.y});break;case"toggle":this.flip(),this.emit("change",this.state)}}},move:{value:function(){"aftertouch"===this.mode&&(this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}),this.render())}},release:{value:function(){switch(this.mode){case"button":this.turnOff(),this.emit("change",this.state);break;case"aftertouch":this.turnOff(),this.position={x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y})}}}}),Button}()},function(module,exports){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Toggle=function(){function Toggle(state){_classCallCheck(this,Toggle),this.state=state||!1}return _createClass(Toggle,{flip:{value:function(state){this.state=state||!1===state?state:!this.state}},on:{value:function(){this.state=!0}},off:{value:function(){this.state=!1} -}}),Toggle}();module.exports=Toggle},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Slider=function(_Interface){function Slider(){_classCallCheck(this,Slider);var options=["min","max","value"],defaults={size:[120,20],mode:"relative",min:0,max:1,step:0,value:0};_get(Object.getPrototypeOf(Slider.prototype),"constructor",this).call(this,arguments,options,defaults),this.orientation="vertical",this._value=new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value),this.position=new Interaction.Handle(this.settings.mode,this.orientation,[0,this.width],[this.height,0]),this.position.value=this._value.normalized,this.init(),this.position.direction=this.orientation,this.emit("change",this.value)}return _inherits(Slider,_Interface),_createClass(Slider,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.fillbar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.fillbar),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.widththis.height?"horizontal":"vertical";for(var buttonWidth=this.width/("vertical"===orientation?1:this._numberOfButtons),buttonHeight=this.height/("vertical"===orientation?this._numberOfButtons:1),i=0;i=0&&index=0;i--)this.element.remove(i);for(var i=0;i2&&(angle=this.previousAngle>3?2*Math.PI:0),this.previousAngle=angle;var realValue=angle/(2*Math.PI);this.value=this._value.updateNormal(realValue),"relative"===this.mode&&(this.position.value=realValue),this.emit("change",this._value.value),this.render()}}},release:{value:function(){}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.position.value=this._value.normalized,this.emit("change",this._value.value),this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}},mode:{get:function(){return this.position.mode},set:function(v){this.position.mode=v}},normalized:{get:function(){return this._value.normalized},set:function(v){this._value.updateNormal(v),this.emit("change",this.value)}}}),Dial}(Interface);module.exports=Dial},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),ButtonTemplate=__webpack_require__(17),touch=__webpack_require__(9),PianoKey=function(_ButtonTemplate){function PianoKey(){_classCallCheck(this,PianoKey);var options=["value","note","color"],defaults={size:[80,80],target:!1,mode:"button",value:0};_get(Object.getPrototypeOf(PianoKey.prototype),"constructor",this).call(this,arguments,options,defaults),this.note=this.settings.note,this.color=this.settings.color,this.colors={w:"#fff",b:"#666"},this.init(),this.render()}return _inherits(PianoKey,_ButtonTemplate),_createClass(PianoKey,{buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){var _this=this;this.pad=svg.create("rect"),this.element.appendChild(this.pad),this.interactionTarget=this.pad,touch.exists||(this.click=function(){_this.piano.interacting=!0,_this.piano.paintbrush=!_this.state,_this.down(_this.piano.paintbrush)},this.pad.addEventListener("mouseover",function(){_this.piano.interacting&&_this.down(_this.piano.paintbrush)}),this.move=function(){_this.piano.interacting&&_this.bend()},this.release=function(){_this.piano.interacting=!1},this.pad.addEventListener("mouseup",function(){_this.piano.interacting&&_this.up()}),this.pad.addEventListener("mouseout",function(){_this.piano.interacting&&_this.up()}))}},sizeInterface:{value:function(){this.pad.setAttribute("x",.5),this.pad.setAttribute("y",.5),this.width>2?this.pad.setAttribute("width",this.width-1):this.pad.setAttribute("width",this.width),this.height,this.pad.setAttribute("height",this.height),this.pad.setAttribute("rx",0),this.pad.setAttribute("ry",0)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.colors.accent):this.pad.setAttribute("fill",this.colors[this.color])}}}),PianoKey}(ButtonTemplate),Piano=function(_Interface){function Piano(){_classCallCheck(this,Piano);var options=["value"],defaults={size:[500,125],lowNote:24,highNote:60,mode:"button"};_get(Object.getPrototypeOf(Piano.prototype),"constructor",this).call(this,arguments,options,defaults),this.keyPattern=["w","b","w","b","w","w","b","w","b","w","b","w"],this.paintbrush=!1,this.mode=this.settings.mode,this.range={low:this.settings.lowNote,high:this.settings.highNote},this.range.size=this.range.high-this.range.low+1,this.keys=[],this.toggleTo=!1,this.init(),this.render()}return _inherits(Piano,_Interface),_createClass(Piano,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.borderRadius="0px",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element)}},buildInterface:{value:function(){this.keys=[];for(var i=0;i=this.range.high?keyX+=1:"w"===this.keyPattern[scaleIndex]&&"w"===this.keyPattern[nextScaleIndex]?keyX+=1:keyX+=.5}for(var keysWide=keyX,buttonWidth=(this.width-2)/keysWide,buttonHeight=(this.height-2)/2,i=0;i2?this.pad.setAttribute("width",this.width-2):this.pad.setAttribute("width",this.width),this.height>2?this.pad.setAttribute("height",this.height-2):this.pad.setAttribute("height",this.height),this.pad.setAttribute("fill",this.matrix.colors.fill)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.matrix.colors.accent):this.pad.setAttribute("fill",this.matrix.colors.fill)}}}),MatrixCell}(ButtonTemplate),Sequencer=function(_Interface){function Sequencer(){_classCallCheck(this,Sequencer);var options=["value"],defaults={size:[400,200],mode:"toggle",rows:5,columns:10};_get(Object.getPrototypeOf(Sequencer.prototype),"constructor",this).call(this,arguments,options,defaults),this.active=-1,this.mode=this.settings.mode,this.interval=new Interval(200,function(){},!1),this.matrix=new MatrixModel(this.settings.rows,this.settings.columns),this.matrix.ui=this,this.stepper=new CounterModel(0,this.columns),this.init()}return _inherits(Sequencer,_Interface),_createClass(Sequencer,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element),touch.exists&&this.addTouchListeners()}},buildInterface:{value:function(){this.cells=[];for(var i=0;i0?_this.cells[i].turnOn():_this.cells[i].turnOff())})}},keyChange:{value:function(note,on){var cell=this.matrix.locate(note);this.matrix.pattern[cell.row][cell.column]=on;var data={row:cell.row,column:cell.column,state:on};this.emit("change",data)}},render:{value:function(){var _this=this;this.stepper.value>=0&&this.matrix.iterate(function(r,c,i){c===_this.stepper.value?(_this.cells[i].pad.setAttribute("stroke",_this.colors.mediumLight),_this.cells[i].pad.setAttribute("stroke-width","1"),_this.cells[i].pad.setAttribute("stroke-opacity","1")):_this.cells[i].pad.setAttribute("stroke","none")})}},start:{value:function(ms){this.interval.event=this.next.bind(this),ms&&this.interval.ms(ms),this.interval.start()}},stop:{value:function(){this.interval.stop()}},next:{value:function(){this.stepper.next(),this.emit("step",this.matrix.column(this.stepper.value).reverse()),this.render()}},addTouchListeners:{value:function(){var _this=this;this.preClick=this.preMove=this.preRelease=function(){},this.click=this.move=this.release=function(){},this.preTouch=this.preTouchMove=this.preTouchRelease=function(){},this.touch=this.touchMove=this.touchRelease=function(){},this.currentElement=!1,this.element.addEventListener("touchstart",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];_this.paintbrush=!cell.state,cell.down(_this.paintbrush),_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchmove",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];if(element.index!==_this.currentElement){if(_this.currentElement>=0){_this.cells[_this.currentElement].up()}cell.down(_this.paintbrush)}else cell.bend();_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchend",function(e){_this.cells[_this.currentElement].up(),_this.interacting=!1,_this.currentElement=!1,e.preventDefault(),e.stopPropagation()})}},rows:{get:function(){return this.matrix.rows},set:function(v){this.matrix.rows=v,this.empty(),this.buildInterface(),this.update()}},columns:{get:function(){return this.matrix.columns},set:function(v){this.matrix.columns=v,this.stepper.max=v,this.empty(),this.buildInterface(),this.update()}}}),Sequencer}(Interface);module.exports=Sequencer},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=_interopRequire(__webpack_require__(5)),Sequence=_interopRequire(__webpack_require__(26)),Matrix=function(){function Matrix(rows,columns){var _this=this;_classCallCheck(this,Matrix),this.pattern=[],this.create(rows,columns),this.toggle={cell:function(column,row){return _this.pattern[row][column]=!_this.pattern[row][column],_this.ui&&_this.ui.update(),_this.pattern[row][column]},all:function(){_this.iterate(function(r,c){_this.toggle.cell(c,r)}),_this.ui&&_this.ui.update()},row:function(row){for(var i=0;i<_this.columns;i++)_this.toggle.cell(i,row);_this.ui&&_this.ui.update()},column:function(column){for(var i=0;i<_this.rows;i++)_this.toggle.cell(column,i);_this.ui&&_this.ui.update()}},this.set={cell:function(column,row,value){_this.pattern[row][column]=value,_this.ui&&_this.ui.update()},all:function(values){_this.pattern=values,_this.ui&&_this.ui.update()},row:function(row,values){_this.pattern[row]=values,_this.ui&&_this.ui.update()},column:function(column,values){_this.pattern.forEach(function(row,i){_this.pattern[i][column]=values[i]}),_this.ui&&_this.ui.update()}},this.rotate={all:function(amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);for(var i=0;i<_this.rows;i++){var cut=_this.pattern[i].splice(_this.pattern[i].length-amount,amount);_this.pattern[i]=cut.concat(_this.pattern[i])}_this.ui&&_this.ui.update()},row:function(row,amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);var cut=_this.pattern[row].splice(_this.pattern[row].length-amount,amount);_this.pattern[row]=cut.concat(_this.pattern[row]),_this.ui&&_this.ui.update()},column:function(column,amount){amount||0===amount||(amount=1),(amount%=_this.pattern.length)<0&&(amount=_this.pattern.length+amount);var proxy=[];_this.pattern.forEach(function(row){proxy.push(row[column])});var cut=proxy.splice(proxy.length-amount,amount);proxy=cut.concat(proxy),_this.pattern.forEach(function(row,i){row[column]=proxy[i]}),_this.ui&&_this.ui.update()}},this.populate={all:function(odds){var oddsSequence=new Sequence(odds);_this.iterate(function(r,c){_this.pattern[r][c]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},row:function(){var row=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern[row].forEach(function(cell,i){_this.pattern[row][i]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},column:function(){var column=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern.forEach(function(row,i){_this.pattern[i][column]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()}},this.erase={all:function(){_this.set.all(0)},row:function(row){_this.set.row(row,0)},column:function(column){_this.set.column(column,0)}}}return _createClass(Matrix,{create:{value:function(rows,columns){var _this=this;this.pattern=[];for(var row=0;rowthis.max&&(this.loop?this.value=this.min:this.value=this.max-this.increment),this.value=this.max&&(this.value=this.min),this.value}},down:{value:function(){return this.value--,this.valuethis._step/2&&(value+=this._step),value}},adjustAllValues:{value:function(){this.values.forEach(function(value,index){value=this.adjustValueToStep(value),this.values[index]=math.clip(value,this._min,this._max)}.bind(this))}},getNormalizedValues:{value:function(){this.normalizedValues=[],this.values.forEach(function(value){this.normalizedValues.push(math.scale(value,this._min,this._max,0,1))}.bind(this))}},colorInterface:{value:function(){var _this=this;this.element.style.backgroundColor=this.colors.fill,"line"==this._mode?(this.line.setAttribute("stroke",this.colors.accent),this.fill.setAttribute("fill",this.colors.accent),this.nodes.forEach(function(node){node.setAttribute("fill",_this.colors.accent)})):(this.bars.forEach(function(bar){bar.setAttribute("fill",_this.colors.accent)}),this.caps.forEach(function(cap){cap.setAttribute("fill",_this.colors.accent)}))}},sizeInterface:{value:function(){this.sliderWidth=this.width/this.values.length,"line"==this._mode&&this.nodes.forEach(function(node){var r=2+~~(Math.min(this.width,this.height)/50);r=Math.min(this.sliderWidth,r),node.setAttribute("r",r)}.bind(this)),this.render()}},render:{value:function(){var _this=this;"line"==this._mode?function(){var data="0 "+_this.getY(_this.values[0])+", ";_this.values.forEach(function(value,index){var x=_this.getX(index),y=_this.getY(value);data+=x+" "+y+", ",_this.nodes[index].setAttribute("cx",_this.getX(index)),_this.nodes[index].setAttribute("cy",_this.getY(value))}),data+=_this.width+" "+_this.getY(_this.values[_this.values.length-1]),_this.line.setAttribute("points",data),data+=", "+_this.width+" "+_this.height+", ",data+="0 "+_this.height,_this.fill.setAttribute("points",data)}():this.values.forEach(function(value,index){_this.bars[index].setAttribute("y",_this.getY(value)),_this.caps[index].setAttribute("y",_this.getY(value))})}},click:{value:function(){this.hasMoved=!1,this.previousSlider=!1,this.move()}},move:{value:function(){if(this.clicked){if(this.mouse.x=math.clip(this.mouse.x,0,this.width),this.mouse.y=math.clip(this.mouse.y,0,this.height),this.hasMoved=!0,this.selectedSlider=this.getIndexFromX(this.mouse.x),this.values[this.selectedSlider]=this.getValueFromY(this.mouse.y),!1!==this.previousSlider){var distance=Math.abs(this.previousSlider-this.selectedSlider);if(distance>1)for(var low=Math.min(this.previousSlider,this.selectedSlider),high=Math.max(this.previousSlider,this.selectedSlider),lowValue=this.values[low],highValue=this.values[high],_i=low;_i0)for(var i=1;i<=this.smoothing;i++){var downCenter=this.selectedSlider-i,upCenter=this.selectedSlider+i;if(downCenter>=1){var downLowerNeighbor=downCenter-1>=0?downCenter-1:0,downUpperNeighbor=downCenter+1;this.values[downCenter]=(this.values[downLowerNeighbor]+this.values[downUpperNeighbor])/2,this.values[downCenter]=this.adjustValueToStep(this.values[downCenter])}if(upCenter=0){var prevIndex=this.envelope.nodes.indexOf(this)-1,nextIndex=this.envelope.nodes.indexOf(this)+1,prevNode=this.envelope.nodes[prevIndex],nextNode=this.envelope.nodes[nextIndex],lowX=prevIndex>=0?prevNode.x:0;lowX=lowXthis.xMax?this.xMax:highX,this.xhighX&&(this.x=highX),this.ythis.yMax&&(this.y=this.yMax)}this.location=this.getCoordinates(),this.element.setAttribute("cx",this.location.x),this.element.setAttribute("cy",this.location.y)},this.getCoordinates=function(){return{x:this.x*this.envelope.width,y:(1-this.y)*this.envelope.height}},this.move(this.x,this.y,!0),this.resize(),this.destroy=function(){this.envelope.element.removeChild(this.element),this.envelope.nodes.splice(this.envelope.nodes.indexOf(this),1)}},Envelope=function(_Interface){function Envelope(){_classCallCheck(this,Envelope);var options=["value"],defaults={size:[300,150],noNewPoints:!1,points:[{x:.1,y:.4},{x:.35,y:.6},{x:.65,y:.2},{x:.9,y:.4}]};_get(Object.getPrototypeOf(Envelope.prototype),"constructor",this).call(this,arguments,options,defaults),this.points=this.settings.points,this.nodes=[],this.selected=!1,this.init()}return _inherits(Envelope,_Interface),_createClass(Envelope,{buildInterface:{value:function(){var _this=this;this.points.forEach(function(point){var node=new Point(point,_this);_this.nodes.push(node)}),this.sortPoints(),this.line=svg.create("polyline"),this.line.setAttribute("stroke-width",2),this.line.setAttribute("fill","none"),this.element.appendChild(this.line),this.fill=svg.create("polyline"),this.fill.setAttribute("fill-opacity","0.2"),this.element.appendChild(this.fill)}},sizeInterface:{value:function(){for(var i=0;inodes[i].x)}return!this.settings.noNewPoints&&nearestDist>.07&&(nearestIndex=this.getIndexFromX(this.mouse.x/this.width),this.nodes.splice(nearestIndex,0,new Point({x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this)),this.hasMoved=!0),nearestIndex}},getIndexFromX:{value:function(x){var _this=this,index=0;return this.nodes.forEach(function(node,i){_this.nodes[i].x<=x&&(index=i+1)}),index}},scaleNode:{value:function(i){var clippedX=math.clip(this.nodes[i].x,0,1),clippedY=math.clip(this.nodes[i].y,0,1);this.nodes[i].move(clippedX,clippedY)}},sortPoints:{value:function(){this.nodes.sort(function(a,b){return a.x>b.x})}},addPoint:{value:function(x,y){var index=this.nodes.length;this.sortPoints();for(var i=0;i=this.nodes.length&&(nextIndex=this.nodes.length-1);var priorPoint=this.nodes[priorIndex],nextPoint=this.nodes[nextIndex],loc=math.scale(x,priorPoint.x,nextPoint.x,0,1),value=math.interp(loc,priorPoint.y,nextPoint.y);return this.emit("scan",value),value}},movePoint:{value:function(index,x,y){this.nodes[index].move(x,y),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},adjustPoint:{value:function(index,xOffset,yOffset){this.nodes[index].move(this.nodes[index].x+xOffset,this.nodes[index].y+yOffset),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},destroyPoint:{value:function(index){this.nodes[index].destroy(),this.calculatePoints(),this.emit("change",this.points),this.render()}},setPoints:{value:function(allPoints){for(var _this=this;this.nodes.length;)this.nodes[0].destroy();allPoints.forEach(function(point){_this.addPoint(point.x,point.y)}),this.calculatePoints(),this.emit("change",this.points),this.render()}}}),Envelope}(Interface);module.exports=Envelope},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Spectrogram=function(_Interface){function Spectrogram(){_classCallCheck(this,Spectrogram);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Spectrogram.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.active=!0,this.source=!1,this.init()}return _inherits(Spectrogram,_Interface),_createClass(Spectrogram,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteFrequencyData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.source&&this.dataArray)for(var barWidth=this.canvas.element.width/this.bufferLength,barHeight=void 0,x=0,definition=this.canvas.element.width/50,i=0;i-200&&this.db!==-1/0?this.db-=1:this.db=-1/0;if(this.db>-70){var linear=math.normalize(this.db,-70,5),exp=linear*linear,y=math.scale(exp,0,1,this.element.height,0);this.canvas.context.fillStyle=this.colors.accent,this.canvas.context.fillRect(this.meterWidth*i,y,this.meterWidth,this.canvas.element.height-y)}}}},connect:{value:function(node,channels){this.source&&this.disconnect(),channels?this.channels=channels:node.channelCount?this.channels=node.channelCount:this.channels=2,this.meterWidth=this.canvas.element.width/this.channels,this.source=node,this.source.connect(this.splitter)}},disconnect:{value:function(){this.source.disconnect(this.splitter),this.source=!1,this.meterWidth=this.canvas.element.width/this.channels}},click:{value:function(){this.active=!this.active,this.render()}},customDestroy:{value:function(){this.active=!1}}}),Meter}(Interface);module.exports=Meter},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Oscilloscope=function(_Interface){function Oscilloscope(){_classCallCheck(this,Oscilloscope);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Oscilloscope.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.active=!0,this.source=!1,this.init(),this.render()}return _inherits(Oscilloscope,_Interface),_createClass(Oscilloscope,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteTimeDomainData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.canvas.context.lineWidth=~~(this.height/100+2),this.canvas.context.strokeStyle=this.colors.accent,this.canvas.context.beginPath(),this.source)for(var sliceWidth=1*this.canvas.element.width/this.bufferLength,x=0,i=0;i0;)this.meta.contents.appendChild(this.meta.parent.childNodes[0]);this.meta.contents.style.padding="0px",this.meta.contents.style.boxSizing="border-box",this.meta.title&&(this.meta.titleBar=document.createElement("div"),this.meta.titleBar.innerHTML=this.meta.title,this.meta.titleBar.style.fontFamily="arial",this.meta.titleBar.style.position="relative",this.meta.titleBar.style.color="#888",this.meta.titleBar.style.padding="7px",this.meta.titleBar.style.fontSize="12px",this.meta.button=document.createElement("div"),this.meta.button.style.position="absolute",this.meta.button.style.top="5px",this.meta.button.style.right="5px",this.meta.button.innerHTML="-",this.meta.button.style.padding="0px 5px 2px",this.meta.button.style.lineHeight="12px",this.meta.button.style.fontSize="15px",this.meta.button.style.cursor="pointer",this.meta.button.addEventListener("mouseover",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumDark}),this.meta.button.addEventListener("mouseleave",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumLight}),this.meta.button.addEventListener("click",function(){_this.meta.open?_this.hide():_this.show()}),this.meta.titleBar.appendChild(this.meta.button),this.meta.parent.appendChild(this.meta.titleBar)),this.meta.parent.appendChild(this.meta.contents);var ui=transform.section(this.meta.target,this.meta.attribute);for(var key in ui)this[key]=ui[key]}},colorInterface:{value:function(){this.meta.title&&(this.meta.button.style.backgroundColor=this.meta.colors.mediumLight,this.meta.button.style.border="solid 0px "+this.meta.colors.fill,this.meta.parent.style.border="solid 1px "+this.meta.colors.mediumLight,this.meta.parent.style.backgroundColor=this.meta.colors.light,this.meta.titleBar.style.backgroundColor=this.meta.colors.fill)}},show:{value:function(){this.meta.contents.style.display="block",this.meta.open=!0}},hide:{value:function(){this.meta.contents.style.display="none",this.meta.open=!1}},colorize:{value:function(type,color){for(var key in this)this[key].colorize&&this[key].colorize(type,color);this.meta.colors[type]=color,this.colorInterface()}},empty:{value:function(){for(var key in this)this[key].destroy&&this[key].destroy()}}}),Rack}();module.exports=Rack},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj};Object.defineProperty(exports,"__esModule",{value:!0});var dom=_interopRequire(__webpack_require__(7)),Interfaces=_interopRequire(__webpack_require__(2)),createInterfaceID=function(widget,interfaceIDs){var type=widget.type;return interfaceIDs[type]?interfaceIDs[type]++:interfaceIDs[type]=1,type+interfaceIDs[type]},element=function(element,type,options){options=options||{};for(var i=0;i1?_len-1:0),_key=1;_key<_len;_key++)onVals[_key-1]=arguments[_key];var length=void 0===arguments[0]?3:arguments[0];_classCallCheck(this,Radio),length<0&&(length=1),this.length=length,this.onVals=onVals,this.array=new Array(length).fill(0),onVals.length>0&&this.on.apply(this,onVals)}return _createClass(Radio,{select:{value:function(value){return this.array.fill(0),this.array[value]=1,this.array}},flip:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] does not exist"):a[v]=a[v]?0:1}):a.forEach(function(v,i,arr){arr[i]=v?0:1}),a}},on:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] exceeds size of object"):(1===a[v]&&console.warn("Warning: AnonRadio["+v+"] was already on."),a[v]=1)}):a.fill(1),a}},off:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){a[v]=0}):a.fill(0),a}}}),Radio}();module.exports=Radio},function(module,exports,__webpack_require__){var WAAClock=__webpack_require__(43);module.exports=WAAClock,"undefined"!=typeof window&&(window.WAAClock=WAAClock)},function(module,exports,__webpack_require__){(function(process){var CLOCK_DEFAULTS={toleranceLate:.1,toleranceEarly:.001},Event=function(clock,deadline,func){this.clock=clock,this.func=func,this._cleared=!1,this.toleranceLate=clock.toleranceLate,this.toleranceEarly=clock.toleranceEarly,this._latestTime=null,this._earliestTime=null,this.deadline=null,this.repeatTime=null,this.schedule(deadline)};Event.prototype.clear=function(){return this.clock._removeEvent(this),this._cleared=!0,this},Event.prototype.repeat=function(time){if(0===time)throw new Error("delay cannot be 0");return this.repeatTime=time,this.clock._hasEvent(this)||this.schedule(this.deadline+this.repeatTime),this},Event.prototype.tolerance=function(values){return"number"==typeof values.late&&(this.toleranceLate=values.late),"number"==typeof values.early&&(this.toleranceEarly=values.early),this._refreshEarlyLateDates(),this.clock._hasEvent(this)&&(this.clock._removeEvent(this),this.clock._insertEvent(this)),this},Event.prototype.isRepeated=function(){return null!==this.repeatTime},Event.prototype.schedule=function(deadline){this._cleared=!1,this.deadline=deadline,this._refreshEarlyLateDates(),this.clock.context.currentTime>=this._earliestTime?this._execute():this.clock._hasEvent(this)?(this.clock._removeEvent(this),this.clock._insertEvent(this)):this.clock._insertEvent(this)},Event.prototype.timeStretch=function(tRef,ratio){this.isRepeated()&&(this.repeatTime=this.repeatTime*ratio);var deadline=tRef+ratio*(this.deadline-tRef);if(this.isRepeated())for(;this.clock.context.currentTime>=deadline-this.toleranceEarly;)deadline+=this.repeatTime;this.schedule(deadline)},Event.prototype._execute=function(){!1!==this.clock._started&&(this.clock._removeEvent(this),this.clock.context.currentTime1)for(var i=1;i0){existingStylesheets[0].parentNode.insertBefore(defaultStyleNode,existingStylesheets[0])}else document.write("")}return _createClass(NexusUI,{context:{get:function(){return this._context},set:function(ctx){this.clock.stop(),this._context=ctx,this.clock=new WAAClock(this.context),this.clock.start()}}}),NexusUI}(),Nexus=new NexusUI;exports.default=Nexus},function(module,exports,__webpack_require__){"use strict";module.exports={Position:__webpack_require__(3),Slider:__webpack_require__(14),Toggle:__webpack_require__(15),Button:__webpack_require__(16),TextButton:__webpack_require__(18),RadioButton:__webpack_require__(19),Number:__webpack_require__(20),Select:__webpack_require__(21),Dial:__webpack_require__(22),Piano:__webpack_require__(23),Sequencer:__webpack_require__(24),Pan2D:__webpack_require__(29),Tilt:__webpack_require__(30),Multislider:__webpack_require__(31),Pan:__webpack_require__(32),Envelope:__webpack_require__(33),Spectrogram:__webpack_require__(34),Meter:__webpack_require__(35),Oscilloscope:__webpack_require__(36)}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Position=function(_Interface){function Position(){_classCallCheck(this,Position);var options=["value"],defaults={size:[200,200],mode:"absolute",minX:0,maxX:1,stepX:0,x:.5,minY:0,maxY:1,stepY:0,y:.5};_get(Object.getPrototypeOf(Position.prototype),"constructor",this).call(this,arguments,options,defaults),this._x=new Step(this.settings.minX,this.settings.maxX,this.settings.stepX,this.settings.x),this._y=new Step(this.settings.minY,this.settings.maxY,this.settings.stepY,this.settings.y),this.position={x:new Interaction.Handle(this.settings.mode,"horizontal",[0,this.width],[this.height,0]),y:new Interaction.Handle(this.settings.mode,"vertical",[0,this.width],[this.height,0])},this.position.x.value=this._x.normalized,this.position.y.value=this._y.normalized,this.init(),this.render()}return _inherits(Position,_Interface),_createClass(Position,{buildInterface:{value:function(){this.knob=svg.create("circle"),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.position.x.resize([0,this.width],[this.height,0]),this.position.y.resize([0,this.width],[this.height,0]),this._minDimension=Math.min(this.width,this.height),this.knobRadius={off:5*~~(this._minDimension/100)+5},this.knobRadius.on=2*this.knobRadius.off,this.knob.setAttribute("cx",this.width/2),this.knob.setAttribute("cy",this.height/2),this.knob.setAttribute("r",this.knobRadius.off)}},colorInterface:{value:function(){this.element.style.backgroundColor=this.colors.fill,this.knob.setAttribute("fill",this.colors.accent)}},render:{value:function(){this.clicked?this.knob.setAttribute("r",this.knobRadius.on):this.knob.setAttribute("r",this.knobRadius.off),this.knobCoordinates={x:this._x.normalized*this.width,y:this.height-this._y.normalized*this.height},this.knob.setAttribute("cx",this.knobCoordinates.x),this.knob.setAttribute("cy",this.knobCoordinates.y)}},click:{value:function(){this.position.x.anchor=this.mouse,this.position.y.anchor=this.mouse,this.move()}},move:{value:function(){this.clicked&&(this.position.x.update(this.mouse),this.position.y.update(this.mouse),this._x.updateNormal(this.position.x.value),this._y.updateNormal(this.position.y.value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render())}},release:{value:function(){this.render()}},x:{get:function(){return this._x.value},set:function(value){this._x.update(value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render()}},y:{get:function(){return this._y.value},set:function(value){this._y.update(value),this.emit("change",{x:this._x.value,y:this._y.value}),this.render()}},normalized:{get:function(){return{x:this._x.normalized,y:this._y.normalized}}},minX:{get:function(){return this._x.min},set:function(v){this._x.min=v,this.render()}},minY:{get:function(){return this._y.min},set:function(v){this._y.min=v,this.render()}},maxX:{get:function(){return this._x.max},set:function(v){this._x.max=v,this.render()}},maxY:{get:function(){return this._y.max},set:function(v){this._y.max=v,this.render()}},stepX:{get:function(){return this._x.step},set:function(v){this._x.step=v,this.render()}},stepY:{get:function(){return this._y.step},set:function(v){this._y.step=v,this.render()}},mode:{get:function(){return this.position.x.mode},set:function(v){this.position.x.mode=v,this.position.y.mode=v}}}),Position}(Interface);module.exports=Position},function(module,exports,__webpack_require__){"use strict";var math=__webpack_require__(5);module.exports={create:function(type){return document.createElementNS("http://www.w3.org/2000/svg",type)},arc:function(x,y,radius,startAngle,endAngle){var start=math.toCartesian(radius,endAngle),end=math.toCartesian(radius,startAngle),largeArcFlag=endAngle-startAngle<=180?"0":"1";return["M",start.x+x,start.y+y,"A",radius,radius,0,largeArcFlag,0,end.x+x,end.y+y].join(" ")},radialGradient:function(defs,numberOfStops){var id="gradient"+math.ri(1e11),stops=[],gradient=document.createElementNS("http://www.w3.org/2000/svg","radialGradient");gradient.setAttribute("id",id),gradient.setAttribute("cx","50%"),gradient.setAttribute("cy","50%"),gradient.setAttribute("r","50%"),defs.appendChild(gradient);for(var i=0;i=max&&(input=min),input},exports.average=function(data){for(var total=0,i=0;i=1){var key=options.splice(0,1)[0];settings[key]=setting}}return this.parent=dom.parseElement(settings.target),this.parent&&this.parent instanceof HTMLElement&&!settings.component&&(this.parent.hasAttribute("nexus-ui")||this.parent.setAttribute("nexus-ui","")),settings.size&&Array.isArray(settings.size)&&settings.snapWithParent?(this.width=settings.size[0],this.height=settings.size[1],this.parent.style.width=this.width+"px",this.parent.style.height=this.height+"px"):settings.snapWithParent&&!settings.component?(this.width=parseFloat(window.getComputedStyle(this.parent,null).getPropertyValue("width").replace("px","")),this.height=parseFloat(window.getComputedStyle(this.parent,null).getPropertyValue("height").replace("px","")),5e3==this.width&&(this.width=settings.defaultSize[0],this.parent.style.width=this.parent.width=this.width+"px"),5e3==this.height&&(this.height=settings.defaultSize[1],this.parent.style.height=this.parent.height=this.height+"px")):(settings.size=settings.defaultSize,this.width=settings.size[0],this.height=settings.size[1]),settings.event?this.event=this.on("change",settings.event):this.event=!1,settings}},init:{value:function(){this.buildFrame(),this.buildInterface(),this.sizeInterface(),this.attachListeners(),this.colorInterface(),this.finalTouches()}},buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){}},sizeInterface:{value:function(){}},colorInterface:{value:function(){}},attachListeners:{value:function(){var _this=this;this.interactionTarget=this.interactionTarget||this.element,touch.exists&&(this.interactionTarget.addEventListener("touchstart",function(evt){return _this.preTouch(evt)}),this.interactionTarget.addEventListener("touchmove",function(evt){return _this.preTouchMove(evt)}),this.interactionTarget.addEventListener("touchend",function(evt){return _this.preTouchRelease(evt)})),this.boundPreMove=function(evt){return _this.preMove(evt)},this.boundPreRelease=function(evt){return _this.preRelease(evt)},this.interactionTarget.addEventListener("mousedown",function(evt){return _this.preClick(evt)})}},finalTouches:{value:function(){this.element.style.cursor="pointer"}},preClick:{value:function(e){this.element instanceof HTMLElement&&(this.width=window.getComputedStyle(this.element,null).getPropertyValue("width").replace("px","")),this.offset=dom.findPosition(this.element),this.mouse=dom.locateMouse(e,this.offset),this.clicked=!0,this.click(),this.moveEvent=document.addEventListener("mousemove",this.boundPreMove),this.releaseEvent=document.addEventListener("mouseup",this.boundPreRelease),this.emit("click"),e.preventDefault(),e.stopPropagation()}},preMove:{value:function(e){var _this=this;this.wait||(this.mouse=dom.locateMouse(e,this.offset),this.move(),this.wait=!0,setTimeout(function(){_this.wait=!1},25)),e.preventDefault(),e.stopPropagation()}},preRelease:{value:function(e){this.mouse=dom.locateMouse(e,this.offset),this.clicked=!1,this.release(),this.emit("release"),document.removeEventListener("mousemove",this.boundPreMove),document.removeEventListener("mouseup",this.boundPreRelease),e.preventDefault(),e.stopPropagation()}},click:{value:function(){}},move:{value:function(){}},release:{value:function(){}},preTouch:{value:function(e){this.element instanceof HTMLElement&&(this.width=window.getComputedStyle(this.element,null).getPropertyValue("width").replace("px","")),this.offset=dom.findPosition(this.element),this.mouse=dom.locateTouch(e,this.offset),this.clicked=!0,this.touch(e),this.emit("click"),e.preventDefault(),e.stopPropagation()}},preTouchMove:{value:function(e){this.clicked&&(this.mouse=dom.locateTouch(e,this.offset),this.touchMove(),e.preventDefault(),e.stopPropagation())}},preTouchRelease:{value:function(e){this.mouse=dom.locateTouch(e,this.offset),this.clicked=!1,this.touchRelease(),this.emit("release"),e.preventDefault(),e.stopPropagation()}},touch:{value:function(){this.click()}},touchMove:{value:function(){this.move()}},touchRelease:{value:function(){this.release()}},resize:{value:function(width,height){this.width=width,this.height=height,this.parent.style.width=this.width+"px",this.parent.style.height=this.height+"px",this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.sizeInterface()}},empty:{value:function(){for(;this.element.lastChild;)this.element.removeChild(this.element.lastChild)}},destroy:{value:function(){this.empty(),this.parent.removeChild(this.element),this.removeAllListeners(),this.instrument&&delete this.instrument[this.id],this.customDestroy()}},customDestroy:{value:function(){}},colorize:{value:function(type,color){this.colors[type]=color,this.colorInterface()}}}),Interface}(EventEmitter);module.exports=Interface},function(module,exports){"use strict";exports.findPosition=function(el){var viewportOffset=el.getBoundingClientRect();return{top:viewportOffset.top+window.scrollY,left:viewportOffset.left+window.scrollX}},exports.parseElement=function(parent){return"string"==typeof parent&&(parent=document.getElementById(parent.replace("#",""))),parent instanceof HTMLElement||parent instanceof SVGElement?parent:"No valid parent argument"},exports.locateMouse=function(e,offset){return{x:e.pageX-offset.left,y:e.pageY-offset.top}},exports.locateTouch=function(e,offset){return{x:!!e.targetTouches.length&&e.targetTouches[0].pageX-offset.left,y:!!e.targetTouches.length&&e.targetTouches[0].pageY-offset.top}},exports.SmartCanvas=function(parent){var _this=this;this.element=document.createElement("canvas"),this.context=this.element.getContext("2d"),parent.appendChild(this.element),this.resize=function(w,h){_this.element.width=2*w,_this.element.height=2*h,_this.element.style.width=w+"px",_this.element.style.height=h+"px"}}},function(module,exports){"use strict";exports.isObject=function(obj){return"object"==typeof obj&&!Array.isArray(obj)&&null!==obj&&obj instanceof SVGElement==!1&&obj instanceof HTMLElement==!1},exports.setInputFilter=function(textbox,inputFilter){["input","keydown","keyup","mousedown","mouseup","select","contextmenu","drop"].forEach(function(event){textbox.addEventListener(event,function(){inputFilter(this.value)?(this.oldValue=this.value,this.oldSelectionStart=this.selectionStart,this.oldSelectionEnd=this.selectionEnd):this.hasOwnProperty("oldValue")?(this.value=this.oldValue,this.setSelectionRange(this.oldSelectionStart,this.oldSelectionEnd)):this.value=""})})}},function(module,exports){"use strict";exports.exists="ontouchstart"in document.documentElement},function(module,exports){function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(arg){return"function"==typeof arg}function isNumber(arg){return"number"==typeof arg}function isObject(arg){return"object"==typeof arg&&null!==arg}function isUndefined(arg){return void 0===arg}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");return this._maxListeners=n,this},EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(this._events||(this._events={}),"error"===type&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if((er=arguments[1])instanceof Error)throw er;var err=new Error('Uncaught, unspecified "error" event. ('+er+")");throw err.context=er,err}if(handler=this._events[type],isUndefined(handler))return!1;if(isFunction(handler))switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1),handler.apply(this,args)}else if(isObject(handler))for(args=Array.prototype.slice.call(arguments,1),listeners=handler.slice(),len=listeners.length,i=0;i0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[type].length),"function"==typeof console.trace&&console.trace()),this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){function g(){this.removeListener(type,g),fired||(fired=!0,listener.apply(this,arguments))}if(!isFunction(listener))throw TypeError("listener must be a function");var fired=!1;return g.listener=listener,this.on(type,g),this},EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;if(list=this._events[type],length=list.length,position=-1,list===listener||isFunction(list.listener)&&list.listener===listener)delete this._events[type],this._events.removeListener&&this.emit("removeListener",type,listener);else if(isObject(list)){for(i=length;i-- >0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(position<0)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit("removeListener",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)"removeListener"!==key&&this.removeAllListeners(key);return this.removeAllListeners("removeListener"),this._events={},this}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else if(listeners)for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){return this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;if(evlistener)return evlistener.length}return 0},EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)}},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=__webpack_require__(5),Step=function(){function Step(){var min=void 0===arguments[0]?0:arguments[0],max=void 0===arguments[1]?1:arguments[1],step=void 0===arguments[2]?0:arguments[2],value=void 0===arguments[3]?0:arguments[3];_classCallCheck(this,Step),this.min=min,this.max=max,this.step=step,this.value=value,this.changed=!1,this.oldValue=!1,this.update(this.value)}return _createClass(Step,{update:{value:function(value){return this.step?this.value=math.clip(Math.round((value-this.min)/this.step)*this.step+this.min,this.min,this.max):this.value=math.clip(value,this.min,this.max),this.oldValue!==this.value?(this.oldValue=this.value,this.changed=!0):this.changed=!1,this.value}},updateNormal:{value:function(value){return this.value=math.scale(value,0,1,this.min,this.max),this.update(this.value)}},normalized:{get:function(){return math.normalize(this.value,this.min,this.max)}}}),Step}();module.exports=Step},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")};Object.defineProperty(exports,"__esModule",{value:!0});var math=_interopRequire(__webpack_require__(5)),ToggleModel=_interopRequire(__webpack_require__(13));exports.Handle=function(){function Handle(){var mode=void 0===arguments[0]?"absolute":arguments[0],direction=void 0===arguments[1]?"vertical":arguments[1],xbound=void 0===arguments[2]?[0,100]:arguments[2],ybound=void 0===arguments[3]?[0,100]:arguments[3];_classCallCheck(this,Handle),this.mode=mode,this.direction=direction,this.previous=0,this.value=0,this.sensitivity=1,this.resize(xbound,ybound)}return _createClass(Handle,{resize:{value:function(xbound,ybound){this.boundary={min:{x:xbound[0],y:ybound[0]},max:{x:xbound[1],y:ybound[1]},center:{x:(xbound[1]-xbound[0])/2+xbound[0],y:(ybound[1]-ybound[0])/2+ybound[0]}}}},anchor:{set:function(mouse){this._anchor=this.convertPositionToValue(mouse)},get:function(){return this._anchor}},update:{value:function(mouse){if("relative"===this.mode){var increment=this.convertPositionToValue(mouse)-this.anchor;Math.abs(increment)>.5&&(increment=0),this.anchor=mouse,this.value=this.value+increment*this.sensitivity}else this.value=this.convertPositionToValue(mouse);this.value=math.clip(this.value,0,1)}},convertPositionToValue:{value:function(current){switch(this.direction){case"radial":var position=math.toPolar(current.x-this.boundary.center.x,current.y-this.boundary.center.y);return position=position.angle/(2*Math.PI),position=(position-.25+1)%1;case"vertical":return math.scale(current.y,this.boundary.min.y,this.boundary.max.y,0,1);case"horizontal":return math.scale(current.x,this.boundary.min.x,this.boundary.max.x,0,1)}}}}),Handle}(),exports.Button=function(){function Button(){var mode=void 0===arguments[0]?"button":arguments[0];_classCallCheck(this,Button),this.mode=mode,this.state=new ToggleModel,this.paintbrush=!1}return _createClass(Button,{click:{value:function(){switch(this.mode){case"impulse":this.state.on(),this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.state.off.bind(this),30),this.emit("change",this.state);break;case"button":this.turnOn(),this.emit("change",this.state);break;case"aftertouch":this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.turnOn(),this.emit("change",{state:this.state,x:this.position.x,y:this.position.y});break;case"toggle":this.flip(),this.emit("change",this.state)}}},move:{value:function(){"aftertouch"===this.mode&&(this.position={x:math.clip(this.mouse.x/this.width,0,1),y:math.clip(1-this.mouse.y/this.height,0,1)},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y}),this.render())}},release:{value:function(){switch(this.mode){case"button":this.turnOff(),this.emit("change",this.state);break;case"aftertouch":this.turnOff(),this.position={x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this.emit("change",{state:this.state,x:this.position.x,y:this.position.y})}}}}),Button}()},function(module,exports){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},Toggle=function(){function Toggle(state){_classCallCheck(this,Toggle),this.state=state||!1}return _createClass(Toggle,{flip:{value:function(state){this.state=state||!1===state?state:!this.state}},on:{value:function(){this.state=!0}},off:{value:function(){this.state=!1} -}}),Toggle}();module.exports=Toggle},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Slider=function(_Interface){function Slider(){_classCallCheck(this,Slider);var options=["min","max","value"],defaults={size:[120,20],mode:"relative",min:0,max:1,step:0,value:0};_get(Object.getPrototypeOf(Slider.prototype),"constructor",this).call(this,arguments,options,defaults),this.orientation="vertical",this._value=new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value),this.position=new Interaction.Handle(this.settings.mode,this.orientation,[0,this.width],[this.height,0]),this.position.value=this._value.normalized,this.init(),this.position.direction=this.orientation,this.emit("change",this.value)}return _inherits(Slider,_Interface),_createClass(Slider,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.fillbar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.fillbar),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.width=0&&index=0;i--)this.element.remove(i);for(var i=0;i2&&(angle=this.previousAngle>3?2*Math.PI:0),this.previousAngle=angle;var realValue=angle/(2*Math.PI);this.value=this._value.updateNormal(realValue),"relative"===this.mode&&(this.position.value=realValue),this.emit("change",this._value.value),this.render()}}},release:{value:function(){}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.position.value=this._value.normalized,this.emit("change",this._value.value),this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}},mode:{get:function(){return this.position.mode},set:function(v){this.position.mode=v}},normalized:{get:function(){return this._value.normalized},set:function(v){this._value.updateNormal(v),this.emit("change",this.value)}}}),Dial}(Interface);module.exports=Dial},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),ButtonTemplate=__webpack_require__(17),touch=__webpack_require__(9),PianoKey=function(_ButtonTemplate){function PianoKey(){_classCallCheck(this,PianoKey);var options=["value","note","color"],defaults={size:[80,80],target:!1,mode:"button",value:0};_get(Object.getPrototypeOf(PianoKey.prototype),"constructor",this).call(this,arguments,options,defaults),this.note=this.settings.note,this.color=this.settings.color,this.colors={w:"#fff",b:"#666"},this.init(),this.render()}return _inherits(PianoKey,_ButtonTemplate),_createClass(PianoKey,{buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){var _this=this;this.pad=svg.create("rect"),this.element.appendChild(this.pad),this.interactionTarget=this.pad,touch.exists||(this.click=function(){_this.piano.interacting=!0,_this.piano.paintbrush=!_this.state,_this.down(_this.piano.paintbrush)},this.pad.addEventListener("mouseover",function(){_this.piano.interacting&&_this.down(_this.piano.paintbrush)}),this.move=function(){_this.piano.interacting&&_this.bend()},this.release=function(){_this.piano.interacting=!1},this.pad.addEventListener("mouseup",function(){_this.piano.interacting&&_this.up()}),this.pad.addEventListener("mouseout",function(){_this.piano.interacting&&_this.up()}))}},sizeInterface:{value:function(){this.pad.setAttribute("x",.5),this.pad.setAttribute("y",.5),this.width>2?this.pad.setAttribute("width",this.width-1):this.pad.setAttribute("width",this.width),this.height,this.pad.setAttribute("height",this.height),this.pad.setAttribute("rx",0),this.pad.setAttribute("ry",0)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.colors.accent):this.pad.setAttribute("fill",this.colors[this.color])}}}),PianoKey}(ButtonTemplate),Piano=function(_Interface){function Piano(){_classCallCheck(this,Piano);var options=["value"],defaults={size:[500,125],lowNote:24,highNote:60,mode:"button"};_get(Object.getPrototypeOf(Piano.prototype),"constructor",this).call(this,arguments,options,defaults),this.keyPattern=["w","b","w","b","w","w","b","w","b","w","b","w"],this.paintbrush=!1,this.mode=this.settings.mode,this.range={low:this.settings.lowNote,high:this.settings.highNote},this.range.size=this.range.high-this.range.low+1,this.keys=[],this.toggleTo=!1,this.init(),this.render()}return _inherits(Piano,_Interface),_createClass(Piano,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.borderRadius="0px",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element)}},buildInterface:{value:function(){this.keys=[];for(var i=0;i=this.range.high?keyX+=1:"w"===this.keyPattern[scaleIndex]&&"w"===this.keyPattern[nextScaleIndex]?keyX+=1:keyX+=.5}for(var keysWide=keyX,buttonWidth=(this.width-2)/keysWide,buttonHeight=(this.height-2)/2,i=0;i2?this.pad.setAttribute("width",this.width-this.paddingColumn):this.pad.setAttribute("width",this.width),this.height>2?this.pad.setAttribute("height",this.height-this.paddingRow):this.pad.setAttribute("height",this.height),this.pad.setAttribute("fill",this.matrix.colors.fill)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.matrix.colors.accent):this.pad.setAttribute("fill",this.matrix.colors.fill)}}}),MatrixCell}(ButtonTemplate),Sequencer=function(_Interface){function Sequencer(){_classCallCheck(this,Sequencer);var options=["value"],defaults={size:[400,200],mode:"toggle",rows:5,columns:10};_get(Object.getPrototypeOf(Sequencer.prototype),"constructor",this).call(this,arguments,options,defaults),this.active=-1,this.mode=this.settings.mode,this.interval=new Nexus.Interval(200,function(){},!1),this.matrix=new MatrixModel(this.settings.rows,this.settings.columns),this.matrix.ui=this,this.stepper=new CounterModel(0,this.columns),this.paddingRow=this.settings.paddingRow,this.paddingColumn=this.settings.paddingColumn,this.init()}return _inherits(Sequencer,_Interface),_createClass(Sequencer,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element),touch.exists&&this.addTouchListeners()}},buildInterface:{value:function(){this.cells=[];for(var i=0;i0?_this.cells[i].turnOn():_this.cells[i].turnOff())})}},keyChange:{value:function(note,on){var cell=this.matrix.locate(note);this.matrix.pattern[cell.row][cell.column]=on;var data={row:cell.row,column:cell.column,state:on};this.emit("change",data)}},render:{value:function(){var _this=this;this.stepper.value>=0&&this.matrix.iterate(function(r,c,i){c===_this.stepper.value?(_this.cells[i].pad.setAttribute("stroke",_this.colors.mediumLight),_this.cells[i].pad.setAttribute("stroke-width","1"),_this.cells[i].pad.setAttribute("stroke-opacity","1")):_this.cells[i].pad.setAttribute("stroke","none")})}},start:{value:function(ms){this.interval.event=this.next.bind(this),ms&&this.interval.ms(ms),this.interval.start()}},stop:{value:function(){this.interval.stop()}},next:{value:function(){this.stepper.next(),this.emit("step",this.matrix.column(this.stepper.value).reverse()),this.render()}},addTouchListeners:{value:function(){var _this=this;this.preClick=this.preMove=this.preRelease=function(){},this.click=this.move=this.release=function(){},this.preTouch=this.preTouchMove=this.preTouchRelease=function(){},this.touch=this.touchMove=this.touchRelease=function(){},this.currentElement=!1,this.element.addEventListener("touchstart",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];_this.paintbrush=!cell.state,cell.down(_this.paintbrush),_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchmove",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];if(element.index!==_this.currentElement){if(_this.currentElement>=0){_this.cells[_this.currentElement].up()}cell.down(_this.paintbrush)}else cell.bend();_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchend",function(e){_this.cells[_this.currentElement].up(),_this.interacting=!1,_this.currentElement=!1,e.preventDefault(),e.stopPropagation()})}},rows:{get:function(){return this.matrix.rows},set:function(v){this.matrix.rows=v,this.empty(),this.buildInterface(),this.update()}},columns:{get:function(){return this.matrix.columns},set:function(v){this.matrix.columns=v,this.stepper.max=v,this.empty(),this.buildInterface(),this.update()}}}),Sequencer}(Interface);module.exports=Sequencer},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=_interopRequire(__webpack_require__(5)),Sequence=_interopRequire(__webpack_require__(26)),Matrix=function(){function Matrix(rows,columns){var _this=this;_classCallCheck(this,Matrix),this.pattern=[],this.create(rows,columns),this.toggle={cell:function(column,row){return _this.pattern[row][column]=!_this.pattern[row][column],_this.ui&&_this.ui.update(),_this.pattern[row][column]},all:function(){_this.iterate(function(r,c){_this.toggle.cell(c,r)}),_this.ui&&_this.ui.update()},row:function(row){for(var i=0;i<_this.columns;i++)_this.toggle.cell(i,row);_this.ui&&_this.ui.update()},column:function(column){for(var i=0;i<_this.rows;i++)_this.toggle.cell(column,i);_this.ui&&_this.ui.update()}},this.set={cell:function(column,row,value){_this.pattern[row][column]=value,_this.ui&&_this.ui.update()},all:function(values){_this.pattern=values,_this.ui&&_this.ui.update()},row:function(row,values){_this.pattern[row]=values,_this.ui&&_this.ui.update()},column:function(column,values){_this.pattern.forEach(function(row,i){_this.pattern[i][column]=values[i]}),_this.ui&&_this.ui.update()}},this.rotate={all:function(amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);for(var i=0;i<_this.rows;i++){var cut=_this.pattern[i].splice(_this.pattern[i].length-amount,amount);_this.pattern[i]=cut.concat(_this.pattern[i])}_this.ui&&_this.ui.update()},row:function(row,amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);var cut=_this.pattern[row].splice(_this.pattern[row].length-amount,amount);_this.pattern[row]=cut.concat(_this.pattern[row]),_this.ui&&_this.ui.update()},column:function(column,amount){amount||0===amount||(amount=1),(amount%=_this.pattern.length)<0&&(amount=_this.pattern.length+amount);var proxy=[];_this.pattern.forEach(function(row){proxy.push(row[column])});var cut=proxy.splice(proxy.length-amount,amount);proxy=cut.concat(proxy),_this.pattern.forEach(function(row,i){row[column]=proxy[i]}),_this.ui&&_this.ui.update()}},this.populate={all:function(odds){var oddsSequence=new Sequence(odds);_this.iterate(function(r,c){_this.pattern[r][c]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},row:function(){var row=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern[row].forEach(function(cell,i){_this.pattern[row][i]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},column:function(){var column=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern.forEach(function(row,i){_this.pattern[i][column]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()}},this.erase={all:function(){_this.set.all(0)},row:function(row){_this.set.row(row,0)},column:function(column){_this.set.column(column,0)}}}return _createClass(Matrix,{create:{value:function(rows,columns){var _this=this;this.pattern=[];for(var row=0;rowthis.max&&(this.loop?this.value=this.min:this.value=this.max-this.increment),this.value=this.max&&(this.value=this.min),this.value}},down:{value:function(){return this.value--,this.valuethis._step/2&&(value+=this._step),value}},adjustAllValues:{value:function(){this.values.forEach(function(value,index){value=this.adjustValueToStep(value),this.values[index]=math.clip(value,this._min,this._max)}.bind(this))}},getNormalizedValues:{value:function(){this.normalizedValues=[],this.values.forEach(function(value){this.normalizedValues.push(math.scale(value,this._min,this._max,0,1))}.bind(this))}},colorInterface:{value:function(){var _this=this;this.element.style.backgroundColor=this.colors.fill,"line"==this._mode?(this.line.setAttribute("stroke",this.colors.accent),this.fill.setAttribute("fill",this.colors.accent),this.nodes.forEach(function(node){node.setAttribute("fill",_this.colors.accent)})):(this.bars.forEach(function(bar){bar.setAttribute("fill",_this.colors.accent)}),this.caps.forEach(function(cap){cap.setAttribute("fill",_this.colors.accent)}))}},sizeInterface:{value:function(){this.sliderWidth=this.width/this.values.length,"line"==this._mode&&this.nodes.forEach(function(node){var r=2+~~(Math.min(this.width,this.height)/50);r=Math.min(this.sliderWidth,r),node.setAttribute("r",r)}.bind(this)),this.render()}},render:{value:function(){var _this=this;"line"==this._mode?function(){var data="0 "+_this.getY(_this.values[0])+", ";_this.values.forEach(function(value,index){var x=_this.getX(index),y=_this.getY(value);data+=x+" "+y+", ",_this.nodes[index].setAttribute("cx",_this.getX(index)),_this.nodes[index].setAttribute("cy",_this.getY(value))}),data+=_this.width+" "+_this.getY(_this.values[_this.values.length-1]),_this.line.setAttribute("points",data),data+=", "+_this.width+" "+_this.height+", ",data+="0 "+_this.height,_this.fill.setAttribute("points",data)}():this.values.forEach(function(value,index){_this.bars[index].setAttribute("y",_this.getY(value)),_this.caps[index].setAttribute("y",_this.getY(value))})}},click:{value:function(){this.hasMoved=!1,this.previousSlider=!1,this.move()}},move:{value:function(){if(this.clicked){if(this.mouse.x=math.clip(this.mouse.x,0,this.width),this.mouse.y=math.clip(this.mouse.y,0,this.height),this.hasMoved=!0,this.selectedSlider=this.getIndexFromX(this.mouse.x),this.values[this.selectedSlider]=this.getValueFromY(this.mouse.y),!1!==this.previousSlider){var distance=Math.abs(this.previousSlider-this.selectedSlider);if(distance>1)for(var low=Math.min(this.previousSlider,this.selectedSlider),high=Math.max(this.previousSlider,this.selectedSlider),lowValue=this.values[low],highValue=this.values[high],_i=low;_i0)for(var i=1;i<=this.smoothing;i++){var downCenter=this.selectedSlider-i,upCenter=this.selectedSlider+i;if(downCenter>=1){var downLowerNeighbor=downCenter-1>=0?downCenter-1:0,downUpperNeighbor=downCenter+1;this.values[downCenter]=(this.values[downLowerNeighbor]+this.values[downUpperNeighbor])/2,this.values[downCenter]=this.adjustValueToStep(this.values[downCenter])}if(upCenter=0){var prevIndex=this.envelope.nodes.indexOf(this)-1,nextIndex=this.envelope.nodes.indexOf(this)+1,prevNode=this.envelope.nodes[prevIndex],nextNode=this.envelope.nodes[nextIndex],lowX=prevIndex>=0?prevNode.x:0;lowX=lowXthis.xMax?this.xMax:highX,this.xhighX&&(this.x=highX),this.ythis.yMax&&(this.y=this.yMax)}this.location=this.getCoordinates(),this.element.setAttribute("cx",this.location.x),this.element.setAttribute("cy",this.location.y)},this.getCoordinates=function(){return{x:this.x*this.envelope.width,y:(1-this.y)*this.envelope.height}},this.move(this.x,this.y,!0),this.resize(),this.destroy=function(){this.envelope.element.removeChild(this.element),this.envelope.nodes.splice(this.envelope.nodes.indexOf(this),1)}},Envelope=function(_Interface){function Envelope(){_classCallCheck(this,Envelope);var options=["value"],defaults={size:[300,150],noNewPoints:!1,points:[{x:.1,y:.4},{x:.35,y:.6},{x:.65,y:.2},{x:.9,y:.4}]};_get(Object.getPrototypeOf(Envelope.prototype),"constructor",this).call(this,arguments,options,defaults),this.points=this.settings.points,this.nodes=[],this.selected=!1,this.init()}return _inherits(Envelope,_Interface),_createClass(Envelope,{buildInterface:{value:function(){var _this=this;this.points.forEach(function(point){var node=new Point(point,_this);_this.nodes.push(node)}),this.sortPoints(),this.line=svg.create("polyline"),this.line.setAttribute("stroke-width",2),this.line.setAttribute("fill","none"),this.element.appendChild(this.line),this.fill=svg.create("polyline"),this.fill.setAttribute("fill-opacity","0.2"),this.element.appendChild(this.fill)}},sizeInterface:{value:function(){for(var i=0;inodes[i].x)}return!this.settings.noNewPoints&&nearestDist>.07&&(nearestIndex=this.getIndexFromX(this.mouse.x/this.width),this.nodes.splice(nearestIndex,0,new Point({x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this)),this.hasMoved=!0),nearestIndex}},getIndexFromX:{value:function(x){var _this=this,index=0;return this.nodes.forEach(function(node,i){_this.nodes[i].x<=x&&(index=i+1)}),index}},scaleNode:{value:function(i){var clippedX=math.clip(this.nodes[i].x,0,1),clippedY=math.clip(this.nodes[i].y,0,1);this.nodes[i].move(clippedX,clippedY)}},sortPoints:{value:function(){this.nodes.sort(function(a,b){return a.x>b.x})}},addPoint:{value:function(x,y){var index=this.nodes.length;this.sortPoints();for(var i=0;i=this.nodes.length&&(nextIndex=this.nodes.length-1);var priorPoint=this.nodes[priorIndex],nextPoint=this.nodes[nextIndex],loc=math.scale(x,priorPoint.x,nextPoint.x,0,1),value=math.interp(loc,priorPoint.y,nextPoint.y);return this.emit("scan",value),value}},movePoint:{value:function(index,x,y){this.nodes[index].move(x,y),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},adjustPoint:{value:function(index,xOffset,yOffset){this.nodes[index].move(this.nodes[index].x+xOffset,this.nodes[index].y+yOffset),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},destroyPoint:{value:function(index){this.nodes[index].destroy(),this.calculatePoints(),this.emit("change",this.points),this.render()}},setPoints:{value:function(allPoints){for(var _this=this;this.nodes.length;)this.nodes[0].destroy();allPoints.forEach(function(point){_this.addPoint(point.x,point.y)}),this.calculatePoints(),this.emit("change",this.points),this.render()}}}),Envelope}(Interface);module.exports=Envelope},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Spectrogram=function(_Interface){function Spectrogram(){_classCallCheck(this,Spectrogram);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Spectrogram.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.active=!0,this.source=!1,this.init()}return _inherits(Spectrogram,_Interface),_createClass(Spectrogram,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteFrequencyData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.source&&this.dataArray)for(var barWidth=this.canvas.element.width/this.bufferLength,barHeight=void 0,x=0,definition=this.canvas.element.width/50,i=0;i-200&&this.db!==-1/0?this.db-=1:this.db=-1/0;if(this.db>-70){var linear=math.normalize(this.db,-70,5),exp=linear*linear,y=math.scale(exp,0,1,this.element.height,0);this.canvas.context.fillStyle=this.colors.accent,this.canvas.context.fillRect(this.meterWidth*i,y,this.meterWidth,this.canvas.element.height-y)}}}},connect:{value:function(node,channels){this.source&&this.disconnect(),channels?this.channels=channels:node.channelCount?this.channels=node.channelCount:this.channels=2,this.meterWidth=this.canvas.element.width/this.channels,this.source=node,this.source.connect(this.splitter)}},disconnect:{value:function(){this.source.disconnect(this.splitter),this.source=!1,this.meterWidth=this.canvas.element.width/this.channels}},click:{value:function(){this.active=!this.active,this.render()}},customDestroy:{value:function(){this.active=!1}}}),Meter}(Interface);module.exports=Meter},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Oscilloscope=function(_Interface){function Oscilloscope(){_classCallCheck(this,Oscilloscope);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Oscilloscope.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.active=!0,this.source=!1,this.init(),this.render()}return _inherits(Oscilloscope,_Interface),_createClass(Oscilloscope,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteTimeDomainData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.canvas.context.lineWidth=~~(this.height/100+2),this.canvas.context.strokeStyle=this.colors.accent,this.canvas.context.beginPath(),this.source)for(var sliceWidth=1*this.canvas.element.width/this.bufferLength,x=0,i=0;i0;)this.meta.contents.appendChild(this.meta.parent.childNodes[0]);this.meta.contents.style.padding="0px",this.meta.contents.style.boxSizing="border-box",this.meta.title&&(this.meta.titleBar=document.createElement("div"),this.meta.titleBar.innerHTML=this.meta.title,this.meta.titleBar.style.fontFamily="arial",this.meta.titleBar.style.position="relative",this.meta.titleBar.style.color="#888",this.meta.titleBar.style.padding="7px",this.meta.titleBar.style.fontSize="12px",this.meta.button=document.createElement("div"),this.meta.button.style.position="absolute",this.meta.button.style.top="5px",this.meta.button.style.right="5px",this.meta.button.innerHTML="-",this.meta.button.style.padding="0px 5px 2px",this.meta.button.style.lineHeight="12px",this.meta.button.style.fontSize="15px",this.meta.button.style.cursor="pointer",this.meta.button.addEventListener("mouseover",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumDark}),this.meta.button.addEventListener("mouseleave",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumLight}),this.meta.button.addEventListener("click",function(){_this.meta.open?_this.hide():_this.show()}),this.meta.titleBar.appendChild(this.meta.button),this.meta.parent.appendChild(this.meta.titleBar)),this.meta.parent.appendChild(this.meta.contents);var ui=transform.section(this.meta.target,this.meta.attribute);for(var key in ui)this[key]=ui[key]}},colorInterface:{value:function(){this.meta.title&&(this.meta.button.style.backgroundColor=this.meta.colors.mediumLight,this.meta.button.style.border="solid 0px "+this.meta.colors.fill,this.meta.parent.style.border="solid 1px "+this.meta.colors.mediumLight,this.meta.parent.style.backgroundColor=this.meta.colors.light,this.meta.titleBar.style.backgroundColor=this.meta.colors.fill)}},show:{value:function(){this.meta.contents.style.display="block",this.meta.open=!0}},hide:{value:function(){this.meta.contents.style.display="none",this.meta.open=!1}},colorize:{value:function(type,color){for(var key in this)this[key].colorize&&this[key].colorize(type,color);this.meta.colors[type]=color,this.colorInterface()}},empty:{value:function(){for(var key in this)this[key].destroy&&this[key].destroy()}}}),Rack}();module.exports=Rack},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj};Object.defineProperty(exports,"__esModule",{value:!0});var dom=_interopRequire(__webpack_require__(7)),Interfaces=_interopRequire(__webpack_require__(2)),createInterfaceID=function(widget,interfaceIDs){var type=widget.type;return interfaceIDs[type]?interfaceIDs[type]++:interfaceIDs[type]=1,type+interfaceIDs[type]},element=function(element,type,options){options=options||{};for(var i=0;i1?_len-1:0),_key=1;_key<_len;_key++)onVals[_key-1]=arguments[_key];var length=void 0===arguments[0]?3:arguments[0];_classCallCheck(this,Radio),length<0&&(length=1),this.length=length,this.onVals=onVals,this.array=new Array(length).fill(0),onVals.length>0&&this.on.apply(this,onVals)}return _createClass(Radio,{select:{value:function(value){return this.array.fill(0),this.array[value]=1,this.array}},flip:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] does not exist"):a[v]=a[v]?0:1}):a.forEach(function(v,i,arr){arr[i]=v?0:1}),a}},on:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] exceeds size of object"):(1===a[v]&&console.warn("Warning: AnonRadio["+v+"] was already on."),a[v]=1)}):a.fill(1),a}},off:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){a[v]=0}):a.fill(0),a}}}),Radio}();module.exports=Radio},function(module,exports,__webpack_require__){var WAAClock=__webpack_require__(42);module.exports=WAAClock,"undefined"!=typeof window&&(window.WAAClock=WAAClock)},function(module,exports,__webpack_require__){(function(process){var CLOCK_DEFAULTS={toleranceLate:.1,toleranceEarly:.001},Event=function(clock,deadline,func){this.clock=clock,this.func=func,this._cleared=!1,this.toleranceLate=clock.toleranceLate,this.toleranceEarly=clock.toleranceEarly,this._latestTime=null,this._earliestTime=null,this.deadline=null,this.repeatTime=null,this.schedule(deadline)};Event.prototype.clear=function(){return this.clock._removeEvent(this),this._cleared=!0,this},Event.prototype.repeat=function(time){if(0===time)throw new Error("delay cannot be 0");return this.repeatTime=time,this.clock._hasEvent(this)||this.schedule(this.deadline+this.repeatTime),this},Event.prototype.tolerance=function(values){return"number"==typeof values.late&&(this.toleranceLate=values.late),"number"==typeof values.early&&(this.toleranceEarly=values.early),this._refreshEarlyLateDates(),this.clock._hasEvent(this)&&(this.clock._removeEvent(this),this.clock._insertEvent(this)),this},Event.prototype.isRepeated=function(){return null!==this.repeatTime},Event.prototype.schedule=function(deadline){this._cleared=!1,this.deadline=deadline,this._refreshEarlyLateDates(),this.clock.context.currentTime>=this._earliestTime?this._execute():this.clock._hasEvent(this)?(this.clock._removeEvent(this),this.clock._insertEvent(this)):this.clock._insertEvent(this)},Event.prototype.timeStretch=function(tRef,ratio){this.isRepeated()&&(this.repeatTime=this.repeatTime*ratio);var deadline=tRef+ratio*(this.deadline-tRef);if(this.isRepeated())for(;this.clock.context.currentTime>=deadline-this.toleranceEarly;)deadline+=this.repeatTime;this.schedule(deadline)},Event.prototype._execute=function(){!1!==this.clock._started&&(this.clock._removeEvent(this),this.clock.context.currentTime1)for(var i=1;i>>>>>> 3113a139311daffde9b3fe7da75856cff170631f +}}),Toggle}();module.exports=Toggle},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),Step=__webpack_require__(11),Interaction=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(12)),Slider=function(_Interface){function Slider(){_classCallCheck(this,Slider);var options=["min","max","value"],defaults={size:[120,20],mode:"relative",min:0,max:1,step:0,value:0};_get(Object.getPrototypeOf(Slider.prototype),"constructor",this).call(this,arguments,options,defaults),this.orientation="vertical",this._value=new Step(this.settings.min,this.settings.max,this.settings.step,this.settings.value),this.position=new Interaction.Handle(this.settings.mode,this.orientation,[0,this.width],[this.height,0]),this.position.value=this._value.normalized,this.init(),this.position.direction=this.orientation,this.emit("change",this.value)}return _inherits(Slider,_Interface),_createClass(Slider,{buildInterface:{value:function(){this.bar=svg.create("rect"),this.fillbar=svg.create("rect"),this.knob=svg.create("circle"),this.element.appendChild(this.bar),this.element.appendChild(this.fillbar),this.element.appendChild(this.knob)}},sizeInterface:{value:function(){this.widththis.height?"horizontal":"vertical";for(var buttonWidth=this.width/("vertical"===orientation?1:this._numberOfButtons),buttonHeight=this.height/("vertical"===orientation?this._numberOfButtons:1),i=0;i=0&&index=0;i--)this.element.remove(i);for(var i=0;i2&&(angle=this.previousAngle>3?2*Math.PI:0),this.previousAngle=angle;var realValue=angle/(2*Math.PI);this.value=this._value.updateNormal(realValue),"relative"===this.mode&&(this.position.value=realValue),this.emit("change",this._value.value),this.render()}}},release:{value:function(){}},value:{get:function(){return this._value.value},set:function(v){this._value.update(v),this.position.value=this._value.normalized,this.emit("change",this._value.value),this.render()}},min:{get:function(){return this._value.min},set:function(v){this._value.min=v}},max:{get:function(){return this._value.max},set:function(v){this._value.max=v}},step:{get:function(){return this._value.step},set:function(v){this._value.step=v}},mode:{get:function(){return this.position.mode},set:function(v){this.position.mode=v}},normalized:{get:function(){return this._value.normalized},set:function(v){this._value.updateNormal(v),this.emit("change",this.value)}}}),Dial}(Interface);module.exports=Dial},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},svg=__webpack_require__(4),Interface=__webpack_require__(6),ButtonTemplate=__webpack_require__(17),touch=__webpack_require__(9),PianoKey=function(_ButtonTemplate){function PianoKey(){_classCallCheck(this,PianoKey);var options=["value","note","color"],defaults={size:[80,80],target:!1,mode:"button",value:0};_get(Object.getPrototypeOf(PianoKey.prototype),"constructor",this).call(this,arguments,options,defaults),this.note=this.settings.note,this.color=this.settings.color,this.colors={w:"#fff",b:"#666"},this.init(),this.render()}return _inherits(PianoKey,_ButtonTemplate),_createClass(PianoKey,{buildFrame:{value:function(){this.element=svg.create("svg"),this.element.setAttribute("width",this.width),this.element.setAttribute("height",this.height),this.parent.appendChild(this.element)}},buildInterface:{value:function(){var _this=this;this.pad=svg.create("rect"),this.element.appendChild(this.pad),this.interactionTarget=this.pad,touch.exists||(this.click=function(){_this.piano.interacting=!0,_this.piano.paintbrush=!_this.state,_this.down(_this.piano.paintbrush)},this.pad.addEventListener("mouseover",function(){_this.piano.interacting&&_this.down(_this.piano.paintbrush)}),this.move=function(){_this.piano.interacting&&_this.bend()},this.release=function(){_this.piano.interacting=!1},this.pad.addEventListener("mouseup",function(){_this.piano.interacting&&_this.up()}),this.pad.addEventListener("mouseout",function(){_this.piano.interacting&&_this.up()}))}},sizeInterface:{value:function(){this.pad.setAttribute("x",.5),this.pad.setAttribute("y",.5),this.width>2?this.pad.setAttribute("width",this.width-1):this.pad.setAttribute("width",this.width),this.height,this.pad.setAttribute("height",this.height),this.pad.setAttribute("rx",0),this.pad.setAttribute("ry",0)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.colors.accent):this.pad.setAttribute("fill",this.colors[this.color])}}}),PianoKey}(ButtonTemplate),Piano=function(_Interface){function Piano(){_classCallCheck(this,Piano);var options=["value"],defaults={size:[500,125],lowNote:24,highNote:60,mode:"button"};_get(Object.getPrototypeOf(Piano.prototype),"constructor",this).call(this,arguments,options,defaults),this.keyPattern=["w","b","w","b","w","w","b","w","b","w","b","w"],this.paintbrush=!1,this.mode=this.settings.mode,this.range={low:this.settings.lowNote,high:this.settings.highNote},this.range.size=this.range.high-this.range.low+1,this.keys=[],this.toggleTo=!1,this.init(),this.render()}return _inherits(Piano,_Interface),_createClass(Piano,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.borderRadius="0px",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element)}},buildInterface:{value:function(){this.keys=[];for(var i=0;i=this.range.high?keyX+=1:"w"===this.keyPattern[scaleIndex]&&"w"===this.keyPattern[nextScaleIndex]?keyX+=1:keyX+=.5}for(var keysWide=keyX,buttonWidth=(this.width-2)/keysWide,buttonHeight=(this.height-2)/2,i=0;i2?this.pad.setAttribute("width",this.width-this.paddingColumn):this.pad.setAttribute("width",this.width),this.height>2?this.pad.setAttribute("height",this.height-this.paddingRow):this.pad.setAttribute("height",this.height),this.pad.setAttribute("fill",this.matrix.colors.fill)}},render:{value:function(){this.state?this.pad.setAttribute("fill",this.matrix.colors.accent):this.pad.setAttribute("fill",this.matrix.colors.fill)}}}),MatrixCell}(ButtonTemplate),Sequencer=function(_Interface){function Sequencer(){_classCallCheck(this,Sequencer);var options=["value"],defaults={size:[400,200],mode:"toggle",rows:5,columns:10};_get(Object.getPrototypeOf(Sequencer.prototype),"constructor",this).call(this,arguments,options,defaults),this.active=-1,this.mode=this.settings.mode,this.interval=new Nexus.Interval(200,function(){},!1),this.matrix=new MatrixModel(this.settings.rows,this.settings.columns),this.matrix.ui=this,this.stepper=new CounterModel(0,this.columns),this.paddingRow=this.settings.paddingRow,this.paddingColumn=this.settings.paddingColumn,this.init()}return _inherits(Sequencer,_Interface),_createClass(Sequencer,{buildFrame:{value:function(){this.element=document.createElement("div"),this.element.style.position="relative",this.element.style.display="block",this.element.style.width="100%",this.element.style.height="100%",this.parent.appendChild(this.element),touch.exists&&this.addTouchListeners()}},buildInterface:{value:function(){this.cells=[];for(var i=0;i0?_this.cells[i].turnOn():_this.cells[i].turnOff())})}},keyChange:{value:function(note,on){var cell=this.matrix.locate(note);this.matrix.pattern[cell.row][cell.column]=on;var data={row:cell.row,column:cell.column,state:on};this.emit("change",data)}},render:{value:function(){var _this=this;this.stepper.value>=0&&this.matrix.iterate(function(r,c,i){c===_this.stepper.value?(_this.cells[i].pad.setAttribute("stroke",_this.colors.mediumLight),_this.cells[i].pad.setAttribute("stroke-width","1"),_this.cells[i].pad.setAttribute("stroke-opacity","1")):_this.cells[i].pad.setAttribute("stroke","none")})}},start:{value:function(ms){this.interval.event=this.next.bind(this),ms&&this.interval.ms(ms),this.interval.start()}},stop:{value:function(){this.interval.stop()}},next:{value:function(){this.stepper.next(),this.emit("step",this.matrix.column(this.stepper.value).reverse()),this.render()}},addTouchListeners:{value:function(){var _this=this;this.preClick=this.preMove=this.preRelease=function(){},this.click=this.move=this.release=function(){},this.preTouch=this.preTouchMove=this.preTouchRelease=function(){},this.touch=this.touchMove=this.touchRelease=function(){},this.currentElement=!1,this.element.addEventListener("touchstart",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];_this.paintbrush=!cell.state,cell.down(_this.paintbrush),_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchmove",function(e){var element=document.elementFromPoint(e.targetTouches[0].clientX,e.targetTouches[0].clientY),cell=_this.cells[element.index];if(element.index!==_this.currentElement){if(_this.currentElement>=0){_this.cells[_this.currentElement].up()}cell.down(_this.paintbrush)}else cell.bend();_this.currentElement=element.index,e.preventDefault(),e.stopPropagation()}),this.element.addEventListener("touchend",function(e){_this.cells[_this.currentElement].up(),_this.interacting=!1,_this.currentElement=!1,e.preventDefault(),e.stopPropagation()})}},rows:{get:function(){return this.matrix.rows},set:function(v){this.matrix.rows=v,this.empty(),this.buildInterface(),this.update()}},columns:{get:function(){return this.matrix.columns},set:function(v){this.matrix.columns=v,this.stepper.max=v,this.empty(),this.buildInterface(),this.update()}}}),Sequencer}(Interface);module.exports=Sequencer},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj},_createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},math=_interopRequire(__webpack_require__(5)),Sequence=_interopRequire(__webpack_require__(26)),Matrix=function(){function Matrix(rows,columns){var _this=this;_classCallCheck(this,Matrix),this.pattern=[],this.create(rows,columns),this.toggle={cell:function(column,row){return _this.pattern[row][column]=!_this.pattern[row][column],_this.ui&&_this.ui.update(),_this.pattern[row][column]},all:function(){_this.iterate(function(r,c){_this.toggle.cell(c,r)}),_this.ui&&_this.ui.update()},row:function(row){for(var i=0;i<_this.columns;i++)_this.toggle.cell(i,row);_this.ui&&_this.ui.update()},column:function(column){for(var i=0;i<_this.rows;i++)_this.toggle.cell(column,i);_this.ui&&_this.ui.update()}},this.set={cell:function(column,row,value){_this.pattern[row][column]=value,_this.ui&&_this.ui.update()},all:function(values){_this.pattern=values,_this.ui&&_this.ui.update()},row:function(row,values){_this.pattern[row]=values,_this.ui&&_this.ui.update()},column:function(column,values){_this.pattern.forEach(function(row,i){_this.pattern[i][column]=values[i]}),_this.ui&&_this.ui.update()}},this.rotate={all:function(amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);for(var i=0;i<_this.rows;i++){var cut=_this.pattern[i].splice(_this.pattern[i].length-amount,amount);_this.pattern[i]=cut.concat(_this.pattern[i])}_this.ui&&_this.ui.update()},row:function(row,amount){amount||0===amount||(amount=1),(amount%=_this.pattern[0].length)<0&&(amount=_this.pattern[0].length+amount);var cut=_this.pattern[row].splice(_this.pattern[row].length-amount,amount);_this.pattern[row]=cut.concat(_this.pattern[row]),_this.ui&&_this.ui.update()},column:function(column,amount){amount||0===amount||(amount=1),(amount%=_this.pattern.length)<0&&(amount=_this.pattern.length+amount);var proxy=[];_this.pattern.forEach(function(row){proxy.push(row[column])});var cut=proxy.splice(proxy.length-amount,amount);proxy=cut.concat(proxy),_this.pattern.forEach(function(row,i){row[column]=proxy[i]}),_this.ui&&_this.ui.update()}},this.populate={all:function(odds){var oddsSequence=new Sequence(odds);_this.iterate(function(r,c){_this.pattern[r][c]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},row:function(){var row=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern[row].forEach(function(cell,i){_this.pattern[row][i]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()},column:function(){var column=void 0===arguments[0]?0:arguments[0],odds=void 0===arguments[1]?1:arguments[1],oddsSequence=new Sequence(odds);_this.pattern.forEach(function(row,i){_this.pattern[i][column]=math.coin(oddsSequence.next())}),_this.ui&&_this.ui.update()}},this.erase={all:function(){_this.set.all(0)},row:function(row){_this.set.row(row,0)},column:function(column){_this.set.column(column,0)}}}return _createClass(Matrix,{create:{value:function(rows,columns){var _this=this;this.pattern=[];for(var row=0;rowthis.max&&(this.loop?this.value=this.min:this.value=this.max-this.increment),this.value=this.max&&(this.value=this.min),this.value}},down:{value:function(){return this.value--,this.valuethis._step/2&&(value+=this._step),value}},adjustAllValues:{value:function(){this.values.forEach(function(value,index){value=this.adjustValueToStep(value),this.values[index]=math.clip(value,this._min,this._max)}.bind(this))}},getNormalizedValues:{value:function(){this.normalizedValues=[],this.values.forEach(function(value){this.normalizedValues.push(math.scale(value,this._min,this._max,0,1))}.bind(this))}},colorInterface:{value:function(){var _this=this;this.element.style.backgroundColor=this.colors.fill,"line"==this._mode?(this.line.setAttribute("stroke",this.colors.accent),this.fill.setAttribute("fill",this.colors.accent),this.nodes.forEach(function(node){node.setAttribute("fill",_this.colors.accent)})):(this.bars.forEach(function(bar){bar.setAttribute("fill",_this.colors.accent)}),this.caps.forEach(function(cap){cap.setAttribute("fill",_this.colors.accent)}))}},sizeInterface:{value:function(){this.sliderWidth=this.width/this.values.length,"line"==this._mode&&this.nodes.forEach(function(node){var r=2+~~(Math.min(this.width,this.height)/50);r=Math.min(this.sliderWidth,r),node.setAttribute("r",r)}.bind(this)),this.render()}},render:{value:function(){var _this=this;"line"==this._mode?function(){var data="0 "+_this.getY(_this.values[0])+", ";_this.values.forEach(function(value,index){var x=_this.getX(index),y=_this.getY(value);data+=x+" "+y+", ",_this.nodes[index].setAttribute("cx",_this.getX(index)),_this.nodes[index].setAttribute("cy",_this.getY(value))}),data+=_this.width+" "+_this.getY(_this.values[_this.values.length-1]),_this.line.setAttribute("points",data),data+=", "+_this.width+" "+_this.height+", ",data+="0 "+_this.height,_this.fill.setAttribute("points",data)}():this.values.forEach(function(value,index){_this.bars[index].setAttribute("y",_this.getY(value)),_this.caps[index].setAttribute("y",_this.getY(value))})}},click:{value:function(){this.hasMoved=!1,this.previousSlider=!1,this.move()}},move:{value:function(){if(this.clicked){if(this.mouse.x=math.clip(this.mouse.x,0,this.width),this.mouse.y=math.clip(this.mouse.y,0,this.height),this.hasMoved=!0,this.selectedSlider=this.getIndexFromX(this.mouse.x),this.values[this.selectedSlider]=this.getValueFromY(this.mouse.y),!1!==this.previousSlider){var distance=Math.abs(this.previousSlider-this.selectedSlider);if(distance>1)for(var low=Math.min(this.previousSlider,this.selectedSlider),high=Math.max(this.previousSlider,this.selectedSlider),lowValue=this.values[low],highValue=this.values[high],_i=low;_i0)for(var i=1;i<=this.smoothing;i++){var downCenter=this.selectedSlider-i,upCenter=this.selectedSlider+i;if(downCenter>=1){var downLowerNeighbor=downCenter-1>=0?downCenter-1:0,downUpperNeighbor=downCenter+1;this.values[downCenter]=(this.values[downLowerNeighbor]+this.values[downUpperNeighbor])/2,this.values[downCenter]=this.adjustValueToStep(this.values[downCenter])}if(upCenter=0){var prevIndex=this.envelope.nodes.indexOf(this)-1,nextIndex=this.envelope.nodes.indexOf(this)+1,prevNode=this.envelope.nodes[prevIndex],nextNode=this.envelope.nodes[nextIndex],lowX=prevIndex>=0?prevNode.x:0;lowX=lowXthis.xMax?this.xMax:highX,this.xhighX&&(this.x=highX),this.ythis.yMax&&(this.y=this.yMax)}this.location=this.getCoordinates(),this.element.setAttribute("cx",this.location.x),this.element.setAttribute("cy",this.location.y)},this.getCoordinates=function(){return{x:this.x*this.envelope.width,y:(1-this.y)*this.envelope.height}},this.move(this.x,this.y,!0),this.resize(),this.destroy=function(){this.envelope.element.removeChild(this.element),this.envelope.nodes.splice(this.envelope.nodes.indexOf(this),1)}},Envelope=function(_Interface){function Envelope(){_classCallCheck(this,Envelope);var options=["value"],defaults={size:[300,150],noNewPoints:!1,points:[{x:.1,y:.4},{x:.35,y:.6},{x:.65,y:.2},{x:.9,y:.4}]};_get(Object.getPrototypeOf(Envelope.prototype),"constructor",this).call(this,arguments,options,defaults),this.points=this.settings.points,this.nodes=[],this.selected=!1,this.init()}return _inherits(Envelope,_Interface),_createClass(Envelope,{buildInterface:{value:function(){var _this=this;this.points.forEach(function(point){var node=new Point(point,_this);_this.nodes.push(node)}),this.sortPoints(),this.line=svg.create("polyline"),this.line.setAttribute("stroke-width",2),this.line.setAttribute("fill","none"),this.element.appendChild(this.line),this.fill=svg.create("polyline"),this.fill.setAttribute("fill-opacity","0.2"),this.element.appendChild(this.fill)}},sizeInterface:{value:function(){for(var i=0;inodes[i].x)}return!this.settings.noNewPoints&&nearestDist>.07&&(nearestIndex=this.getIndexFromX(this.mouse.x/this.width),this.nodes.splice(nearestIndex,0,new Point({x:this.mouse.x/this.width,y:1-this.mouse.y/this.height},this)),this.hasMoved=!0),nearestIndex}},getIndexFromX:{value:function(x){var _this=this,index=0;return this.nodes.forEach(function(node,i){_this.nodes[i].x<=x&&(index=i+1)}),index}},scaleNode:{value:function(i){var clippedX=math.clip(this.nodes[i].x,0,1),clippedY=math.clip(this.nodes[i].y,0,1);this.nodes[i].move(clippedX,clippedY)}},sortPoints:{value:function(){this.nodes.sort(function(a,b){return a.x>b.x})}},addPoint:{value:function(x,y){var index=this.nodes.length;this.sortPoints();for(var i=0;i=this.nodes.length&&(nextIndex=this.nodes.length-1);var priorPoint=this.nodes[priorIndex],nextPoint=this.nodes[nextIndex],loc=math.scale(x,priorPoint.x,nextPoint.x,0,1),value=math.interp(loc,priorPoint.y,nextPoint.y);return this.emit("scan",value),value}},movePoint:{value:function(index,x,y){this.nodes[index].move(x,y),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},adjustPoint:{value:function(index,xOffset,yOffset){this.nodes[index].move(this.nodes[index].x+xOffset,this.nodes[index].y+yOffset),this.scaleNode(index),this.calculatePoints(),this.emit("change",this.points),this.render()}},destroyPoint:{value:function(index){this.nodes[index].destroy(),this.calculatePoints(),this.emit("change",this.points),this.render()}},setPoints:{value:function(allPoints){for(var _this=this;this.nodes.length;)this.nodes[0].destroy();allPoints.forEach(function(point){_this.addPoint(point.x,point.y)}),this.calculatePoints(),this.emit("change",this.points),this.render()}}}),Envelope}(Interface);module.exports=Envelope},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Spectrogram=function(_Interface){function Spectrogram(){_classCallCheck(this,Spectrogram);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Spectrogram.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.active=!0,this.source=!1,this.init()}return _inherits(Spectrogram,_Interface),_createClass(Spectrogram,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteFrequencyData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.source&&this.dataArray)for(var barWidth=this.canvas.element.width/this.bufferLength,barHeight=void 0,x=0,definition=this.canvas.element.width/50,i=0;i-200&&this.db!==-1/0?this.db-=1:this.db=-1/0;if(this.db>-70){var linear=math.normalize(this.db,-70,5),exp=linear*linear,y=math.scale(exp,0,1,this.element.height,0);this.canvas.context.fillStyle=this.colors.accent,this.canvas.context.fillRect(this.meterWidth*i,y,this.meterWidth,this.canvas.element.height-y)}}}},connect:{value:function(node,channels){this.source&&this.disconnect(),channels?this.channels=channels:node.channelCount?this.channels=node.channelCount:this.channels=2,this.meterWidth=this.canvas.element.width/this.channels,this.source=node,this.source.connect(this.splitter)}},disconnect:{value:function(){this.source.disconnect(this.splitter),this.source=!1,this.meterWidth=this.canvas.element.width/this.channels}},click:{value:function(){this.active=!this.active,this.render()}},customDestroy:{value:function(){this.active=!1}}}),Meter}(Interface);module.exports=Meter},function(module,exports,__webpack_require__){"use strict";var _createClass=function(){function defineProperties(target,props){for(var key in props){var prop=props[key];prop.configurable=!0,prop.value&&(prop.writable=!0)}Object.defineProperties(target,props)}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(void 0===desc){var parent=Object.getPrototypeOf(object);return null===parent?void 0:get(parent,property,receiver)}if("value"in desc&&desc.writable)return desc.value;var getter=desc.get;if(void 0!==getter)return getter.call(receiver)},_inherits=function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(subClass.__proto__=superClass)},_classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},dom=__webpack_require__(7),Interface=__webpack_require__(6),context=__webpack_require__(1).context,Oscilloscope=function(_Interface){function Oscilloscope(){_classCallCheck(this,Oscilloscope);var options=["scale","value"],defaults={size:[300,150]};_get(Object.getPrototypeOf(Oscilloscope.prototype),"constructor",this).call(this,arguments,options,defaults),this.context=context(),this.analyser=this.context.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.active=!0,this.source=!1,this.init(),this.render()}return _inherits(Oscilloscope,_Interface),_createClass(Oscilloscope,{buildFrame:{value:function(){this.canvas=new dom.SmartCanvas(this.parent),this.element=this.canvas.element}},sizeInterface:{value:function(){this.canvas.resize(this.width,this.height)}},colorInterface:{value:function(){this.canvas.element.style.backgroundColor=this.colors.fill}},render:{value:function(){if(this.active&&requestAnimationFrame(this.render.bind(this)),this.analyser.getByteTimeDomainData(this.dataArray),this.canvas.context.fillStyle=this.colors.fill,this.canvas.context.fillRect(0,0,this.canvas.element.width,this.canvas.element.height),this.canvas.context.lineWidth=~~(this.height/100+2),this.canvas.context.strokeStyle=this.colors.accent,this.canvas.context.beginPath(),this.source)for(var sliceWidth=1*this.canvas.element.width/this.bufferLength,x=0,i=0;i0;)this.meta.contents.appendChild(this.meta.parent.childNodes[0]);this.meta.contents.style.padding="0px",this.meta.contents.style.boxSizing="border-box",this.meta.title&&(this.meta.titleBar=document.createElement("div"),this.meta.titleBar.innerHTML=this.meta.title,this.meta.titleBar.style.fontFamily="arial",this.meta.titleBar.style.position="relative",this.meta.titleBar.style.color="#888",this.meta.titleBar.style.padding="7px",this.meta.titleBar.style.fontSize="12px",this.meta.button=document.createElement("div"),this.meta.button.style.position="absolute",this.meta.button.style.top="5px",this.meta.button.style.right="5px",this.meta.button.innerHTML="-",this.meta.button.style.padding="0px 5px 2px",this.meta.button.style.lineHeight="12px",this.meta.button.style.fontSize="15px",this.meta.button.style.cursor="pointer",this.meta.button.addEventListener("mouseover",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumDark}),this.meta.button.addEventListener("mouseleave",function(){_this.meta.button.style.backgroundColor=_this.meta.colors.mediumLight}),this.meta.button.addEventListener("click",function(){_this.meta.open?_this.hide():_this.show()}),this.meta.titleBar.appendChild(this.meta.button),this.meta.parent.appendChild(this.meta.titleBar)),this.meta.parent.appendChild(this.meta.contents);var ui=transform.section(this.meta.target,this.meta.attribute);for(var key in ui)this[key]=ui[key]}},colorInterface:{value:function(){this.meta.title&&(this.meta.button.style.backgroundColor=this.meta.colors.mediumLight,this.meta.button.style.border="solid 0px "+this.meta.colors.fill,this.meta.parent.style.border="solid 1px "+this.meta.colors.mediumLight,this.meta.parent.style.backgroundColor=this.meta.colors.light,this.meta.titleBar.style.backgroundColor=this.meta.colors.fill)}},show:{value:function(){this.meta.contents.style.display="block",this.meta.open=!0}},hide:{value:function(){this.meta.contents.style.display="none",this.meta.open=!1}},colorize:{value:function(type,color){for(var key in this)this[key].colorize&&this[key].colorize(type,color);this.meta.colors[type]=color,this.colorInterface()}},empty:{value:function(){for(var key in this)this[key].destroy&&this[key].destroy()}}}),Rack}();module.exports=Rack},function(module,exports,__webpack_require__){"use strict";var _interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj};Object.defineProperty(exports,"__esModule",{value:!0});var dom=_interopRequire(__webpack_require__(7)),Interfaces=_interopRequire(__webpack_require__(2)),createInterfaceID=function(widget,interfaceIDs){var type=widget.type;return interfaceIDs[type]?interfaceIDs[type]++:interfaceIDs[type]=1,type+interfaceIDs[type]},element=function(element,type,options){options=options||{};for(var i=0;i1?_len-1:0),_key=1;_key<_len;_key++)onVals[_key-1]=arguments[_key];var length=void 0===arguments[0]?3:arguments[0];_classCallCheck(this,Radio),length<0&&(length=1),this.length=length,this.onVals=onVals,this.array=new Array(length).fill(0),onVals.length>0&&this.on.apply(this,onVals)}return _createClass(Radio,{select:{value:function(value){return this.array.fill(0),this.array[value]=1,this.array}},flip:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] does not exist"):a[v]=a[v]?0:1}):a.forEach(function(v,i,arr){arr[i]=v?0:1}),a}},on:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){v>a.length-1?console.warn("Warning: AnonRadio["+v+"] exceeds size of object"):(1===a[v]&&console.warn("Warning: AnonRadio["+v+"] was already on."),a[v]=1)}):a.fill(1),a}},off:{value:function(){for(var _len=arguments.length,values=Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];var a=this.array;return values.length>0?values.forEach(function(v){a[v]=0}):a.fill(0),a}}}),Radio}();module.exports=Radio},function(module,exports,__webpack_require__){var WAAClock=__webpack_require__(42);module.exports=WAAClock,"undefined"!=typeof window&&(window.WAAClock=WAAClock)},function(module,exports,__webpack_require__){(function(process){var CLOCK_DEFAULTS={toleranceLate:.1,toleranceEarly:.001},Event=function(clock,deadline,func){this.clock=clock,this.func=func,this._cleared=!1,this.toleranceLate=clock.toleranceLate,this.toleranceEarly=clock.toleranceEarly,this._latestTime=null,this._earliestTime=null,this.deadline=null,this.repeatTime=null,this.schedule(deadline)};Event.prototype.clear=function(){return this.clock._removeEvent(this),this._cleared=!0,this},Event.prototype.repeat=function(time){if(0===time)throw new Error("delay cannot be 0");return this.repeatTime=time,this.clock._hasEvent(this)||this.schedule(this.deadline+this.repeatTime),this},Event.prototype.tolerance=function(values){return"number"==typeof values.late&&(this.toleranceLate=values.late),"number"==typeof values.early&&(this.toleranceEarly=values.early),this._refreshEarlyLateDates(),this.clock._hasEvent(this)&&(this.clock._removeEvent(this),this.clock._insertEvent(this)),this},Event.prototype.isRepeated=function(){return null!==this.repeatTime},Event.prototype.schedule=function(deadline){this._cleared=!1,this.deadline=deadline,this._refreshEarlyLateDates(),this.clock.context.currentTime>=this._earliestTime?this._execute():this.clock._hasEvent(this)?(this.clock._removeEvent(this),this.clock._insertEvent(this)):this.clock._insertEvent(this)},Event.prototype.timeStretch=function(tRef,ratio){this.isRepeated()&&(this.repeatTime=this.repeatTime*ratio);var deadline=tRef+ratio*(this.deadline-tRef);if(this.isRepeated())for(;this.clock.context.currentTime>=deadline-this.toleranceEarly;)deadline+=this.repeatTime;this.schedule(deadline)},Event.prototype._execute=function(){!1!==this.clock._started&&(this.clock._removeEvent(this),this.clock.context.currentTime1)for(var i=1;i>>>>>> 3113a139311daffde9b3fe7da75856cff170631f +{"version":3,"sources":["dist/NexusUI.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","NexusUI","obj","__esModule","colors","Nexus","context","clock","_interopRequire","_createClass","defineProperties","target","props","key","prop","configurable","value","writable","Object","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","defineProperty","Interfaces","math","Rack","Tune","Transform","default","Counter","Radio","Drunk","Sequence","Matrix","WAAClock","Interval","Core","Models","DefaultContext","window","AudioContext","webkitAudioContext","_context","tune","note","bind","start","accent","fill","light","dark","mediumLight","mediumDark","transform","add","Add","existingStylesheets","document","getElementsByTagName","defaultStyleNode","createElement","type","innerHTML","length","parentNode","insertBefore","write","get","set","ctx","stop","Position","Slider","Toggle","Button","TextButton","RadioButton","Number","Select","Dial","Piano","Sequencer","Pan2D","Tilt","Multislider","Pan","Envelope","Spectrogram","Meter","Oscilloscope","_get","object","property","receiver","desc","getOwnPropertyDescriptor","undefined","parent","getPrototypeOf","getter","_inherits","subClass","superClass","create","constructor","enumerable","__proto__","svg","Interface","Step","Interaction","_Interface","options","defaults","size","mode","minX","maxX","stepX","x","minY","maxY","stepY","y","arguments","_x","settings","_y","position","Handle","width","height","normalized","init","render","buildInterface","knob","element","appendChild","sizeInterface","resize","_minDimension","Math","min","knobRadius","off","on","setAttribute","colorInterface","style","backgroundColor","clicked","knobCoordinates","click","anchor","mouse","move","update","updateNormal","emit","release","v","max","step","createElementNS","arc","radius","startAngle","endAngle","toCartesian","end","largeArcFlag","join","radialGradient","defs","numberOfStops","ri","stops","gradient","i","_stop","push","clip","normalize","scale","inNum","inMin","inMax","outMin","outMax","toPolar","r","sqrt","theta","atan2","PI","angle","cos","sin","prune","data","parseFloat","toFixed","invert","mtof","midi","pow","interp","loc","pick","random","octave","num","bound1","bound2","low","high","floor","rf","cycle","input","average","total","distance","x1","y1","x2","y2","a","b","gainToDB","gain","log10","coin","odds","dom","util","touch","EventEmitter","_EventEmitter","args","name","parseSettings","wait","defaultColors","unshift","defaultSize","splice","body","snapWithParent","event","component","setting","isObject","parseElement","HTMLElement","hasAttribute","Array","isArray","getComputedStyle","getPropertyValue","replace","buildFrame","attachListeners","finalTouches","_this","interactionTarget","exists","addEventListener","evt","preTouch","preTouchMove","preTouchRelease","boundPreMove","preMove","boundPreRelease","preRelease","preClick","cursor","e","offset","findPosition","locateMouse","moveEvent","releaseEvent","preventDefault","stopPropagation","setTimeout","removeEventListener","locateTouch","touchMove","touchRelease","empty","lastChild","removeChild","destroy","removeAllListeners","instrument","customDestroy","colorize","color","el","viewportOffset","getBoundingClientRect","top","scrollY","left","scrollX","getElementById","SVGElement","pageX","pageY","targetTouches","SmartCanvas","getContext","w","h","setInputFilter","textbox","inputFilter","forEach","oldValue","oldSelectionStart","selectionStart","oldSelectionEnd","selectionEnd","hasOwnProperty","setSelectionRange","documentElement","_events","_maxListeners","isFunction","arg","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","n","isNaN","er","handler","len","listeners","error","Error","err","slice","apply","addListener","listener","newListener","warned","console","trace","once","g","removeListener","fired","list","listenerCount","evlistener","emitter","changed","round","ToggleModel","direction","xbound","ybound","previous","sensitivity","boundary","center","_anchor","convertPositionToValue","increment","abs","current","state","paintbrush","timeout","clearTimeout","turnOn","flip","turnOff","orientation","_value","bar","fillbar","barOffset","cornerRadius","knobData","level","thickness","_state","knobSize","ButtonTemplate","_ButtonTemplate","pad","down","bend","up","emitting","text","_text","alternate","alternateText","warn","_alternateText","textElement","textsize","textsize2","textsize3","styles","cssText","numberOfButtons","active","buttons","_numberOfButtons","container","button","buttonWidth","buttonHeight","index","select","deselect","decimalPlaces","actual","test","which","blur","hasMoved","readOnly","initial","changeFactor","newvalue","focus","link","destination","passiveUpdate","_selectedIndex","_options","fontSize","outline","highlight","boundRender","defineOptions","border","selectedIndex","remove","Option","interaction","previousAngle","background","screw","handle","handle2","handleFill","handle2Fill","handleLine","diameter","handlePoints","handle2Points","handlePath","handle2Path","arcEndingA","arcEndingX","arcEndingY","realValue","PianoKey","piano","interacting","lowNote","highNote","keyPattern","range","keys","toggleTo","borderRadius","display","scaleIndex","keyChange","addTouchListeners","keyX","keyPositions","nextScaleIndex","keysWide","padding","zIndex","currentElement","log","elementFromPoint","clientX","clientY","setRange","toggleKey","toggleIndex","MatrixModel","CounterModel","MatrixCell","paddingRow","paddingColumn","row","column","matrix","rows","columns","interval","ui","stepper","cells","_location","locate","cell","cellWidth","cellHeight","iterate","pattern","ms","next","reverse","toggle","all","values","rotate","amount","cut","concat","proxy","populate","oddsSequence","erase","arr","f","f2","formatAsText","patternString","indexOf","_row","_rowWrapper","toString","_column","_columnWrapper","_x2","sequence","_mode","drunkWalk","startValues","drunk","first","loop","speakers","levels","calculateLevels","speakerElements","speakerElement","speaker","s","moveSource","location","moveSpeaker","_active","boundUpdate","DeviceOrientationEvent","orientationListener","title","circleX","circleY","circleZ","barX","barY","barZ","barX2","barY2","barZ2","textContent","beta","gamma","z","alpha","cx","baseVal","cy","numberOfSliders","candycane","smoothing","_numberOfSliders","_min","_max","_step","sliderWidth","line","nodes","node","getX","getY","bars","caps","getBarX","cap","getValueFromY","scaleAdjusted","adjustValueToStep","getIndexFromX","adjustAllValues","getNormalizedValues","normalizedValues","previousSlider","selectedSlider","lowValue","highValue","_i","downCenter","upCenter","downLowerNeighbor","downUpperNeighbor","upLowerNeighbor","upUpperNeighbor","scan","setSlider","setAllSliders","previousLength","newLength","hasKnob","L","R","Point","point","envelope","xMin","xMax","yMin","yMax","prevIndex","nextIndex","prevNode","nextNode","lowX","highX","getCoordinates","noNewPoints","points","selected","sortPoints","calculatePath","calculatePoints","findNearestNode","scaleNode","nearestIndex","nearestDist","clippedX","clippedY","sort","addPoint","priorIndex","priorPoint","nextPoint","movePoint","adjustPoint","xOffset","yOffset","destroyPoint","setPoints","allPoints","analyser","createAnalyser","fftSize","bufferLength","frequencyBinCount","dataArray","Uint8Array","source","canvas","requestAnimationFrame","getByteFrequencyData","fillStyle","fillRect","barWidth","barHeight","definition","subarray","connect","disconnect","channels","splitter","createChannelSplitter","analysers","smoothingTimeConstant","Float32Array","db","Infinity","meterWidth","getFloatTimeDomainData","rms","linear","exp","channelCount","getByteTimeDomainData","lineWidth","strokeStyle","beginPath","sliceWidth","moveTo","lineTo","stroke","meta","attribute","open","boxSizing","userSelect","mozUserSelect","webkitUserSelect","contents","childNodes","titleBar","fontFamily","right","lineHeight","hide","show","section","createInterfaceID","widget","interfaceIDs","attributes","att","nodeName","nodeValue","toUpperCase","keyword","htmlElements","elements","getAttribute","formattedType","toLowerCase","output","etmajor","createScale","frequency","ratio","MIDI","stepIn","octaveIn","scaleDegree","freq","newScale","loadScaleFromFrequencies","createJIScale","freqs","loadScale","scales","frequencies","search","letters","possible","chord","midis","_len","onVals","_key","array","process","CLOCK_DEFAULTS","toleranceLate","toleranceEarly","Event","deadline","func","_cleared","_latestTime","_earliestTime","repeatTime","schedule","clear","_removeEvent","repeat","time","_hasEvent","tolerance","late","early","_refreshEarlyLateDates","_insertEvent","isRepeated","currentTime","_execute","timeStretch","tRef","_started","onexpired","opts","tickMethod","delay","_createEvent","_absTime","callbackAtTime","events","self","_clockNode","createScriptProcessor","onaudioprocess","nextTick","_tick","shift","_indexByTime","ind","mid","relTime","_relTime","absTime","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","run","Item","noop","browser","env","argv","version","versions","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","rate","_event","newrate"],"mappings":"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","file":"dist/NexusUI.min.js"} \ No newline at end of file diff --git a/example/misc-testing.html b/example/misc-testing.html index 05216b0e..b6e2d1dc 100644 --- a/example/misc-testing.html +++ b/example/misc-testing.html @@ -38,8 +38,13 @@ }